Inkscape 0.92.1 のパッケージ(gtk/quartz backend)をつくる
Inkscape 0.92.1 がリリースされています。
Release notes/0.92.1 - Inkscape Wiki
日付が2月13日なのは少し疑問ですが、まあいいでしょう*1。
相変わらずMac向けの公式バイナリはリリースされていませんが、次のリリースに向けてなんとかしようという動きはあるようです。
Tim Sheridan 氏によるビルド用のパッケージ作成スクリプトの修正版(ただしExperimental 扱い)が公開されています。
0.92.x_mac_packaging : Code : Inkscape
XQuartz 版が公開されています(まだテスト用扱い)。
例によって例のごとく、XQuartzなしで動くバージョンが欲しいので、自前でビルドします。
そのうちMacPortsからsudo port install inkscape +quartz
で最新版がインストールできるようになるはずです。
わざわざビルドする理由は、dmg形式にしておくとOSリカバリの時にビルドし直さなくていいよねってだけの話です。
自前でビルドしてみる
パッケージ作成スクリプトの修正版はまだメインのリポジトリに反映されていません。
素直に開発版のリポジトリから入手しようかと思いましたが、MacPortsをバージョンアップしたところ、bazaar(bzr
)の挙動がおかしいので断念。
手っ取り早く最新のリビジョンを探し、”download tarball"のリンクをクリックしてダウンロード。差分だけ取得して0.92.1のソースに適用するのも可。
~tghs/inkscape/0.92.x_mac_packaging : revision 15379
今回はリビジョン15379
。
$ tar zxf ~tghs_inkscape_0.92.x_mac_packaging-r15379.tgz $ cd ~tghs/inkscape/0.92.x_mac_packaging
移動した先のディレクトリの、README.txt
ファイルを参考にしてQuartz版を作成します(packaging/macosx/README.txt
)。
ビルド
ビルド環境は過去記事でセットアップしたMavericks環境です。
もし同一マシンでX11版とQuartz版を作り分けたい場合は、MacPortsのインストール先を区別できるようにするといいと思います。
$ export MP_PREFIX=/opt/local $ cd ~tghs/inkscape/0.92.x_mac_packaging/packaging/macosx/
独自のPortfileを使用して追加パッケージをインストールすることが前提になっています。
そのためにMacPortsの設定ファイルを編集する必要があります。
$ sudo sed -e '/^rsync:/i\'$'\n'"file://$(pwd)/ports" -i "" "$MP_PREFIX/etc/macports/sources.conf"
現在のディレクトリのパスと、$MP_PREFIX
の値を埋め込むので注意が必要です。
$ less "$MP_PREFIX/etc/macports/sources.conf"
最終行の一行上にPortfileの配置ディレクトリのための設定が追加されていればOK。
続いてパッケージのインデックスを更新。
$ (cd ports && portindex)
同じ要領でMacPorts全体のビルド設定(variants)を修正。以下はあくまでもQuartzバックエンドとしてビルドするためのものです。
$ sudo sed -e '$a\'$'\n''-x11 +quartz +no_x11 +rsvg +Pillow -tkinter +gnome_vfs' -i "" "$MP_PREFIX/etc/macports/variants.conf"
依存パッケージを一式インストール。それなりに時間がかかります。
$ sudo sed -e '$a\'$'\n''-x11 +quartz +no_x11 +rsvg +Pillow -tkinter +gnome_vfs' -i "" "$MP_PREFIX/etc/macports/variants.conf"
configure
のバグを回避するため、osx-build.sh
を修正。
$ vim osx-build.sh
267行目の下に以下の二行を追加(250行目と251行目をコピーした結果)。
# Workaround for https://bugs.launchpad.net/inkscape/+bug/1606018 CONFFLAGS="--disable-strict-build $CONFFLAGS"
もしMountain Lion やYosemite以降でビルドするなら対応する箇所に修正が必要だと思う。いまのところMavericksでしか試していません。
起動時にエラーが表示される例のバグを回避するパッチを適用。
$ patch ScriptExec/launcher-quartz-no-macintegration.sh fix_lp476678.patch
パッチは以下の通り。
--- ScriptExec/launcher-quartz-no-macintegration.sh.bak 2017-01-08 02:56:39.000000000 +0900 +++ ScriptExec/launcher-quartz-no-macintegration.sh 2017-01-08 02:58:25.000000000 +0900 @@ -143,7 +143,7 @@ export LANG="en_US.UTF-8" else tmpLANG="`grep \"\`echo $LANGSTR\`_\" /usr/share/locale/locale.alias | \ - tail -n1 | sed 's/\./ /' | awk '{print $2}'`" + tail -n1 | awk '{print $2}' | sed 's/\./ /' | awk '{print $1}'`" if [ "x$tmpLANG" == "x" ] then # override broken script
一気にdmgファイルまでビルド。
$ LIBPREFIX="$MP_PREFIX" ARCH="x86_64" ./osx-build.sh a c b -j 5 i p -s d
Inkscape.app
とdmgファイルが生成されているので動作確認する。
Sierra 対策
Mavericks でビルドしたバイナリをSierraで動かすと内部エラーで起動しない……。Mavericksでは普通に動くのに。
以前から知られている問題と同じようなので、その場しのぎの対応ですが、小細工で回避。
前述のパッチと同じ要領で、パッチを適応してdmgファイルだけ作り直す。
作業ディレクトリに戻ったうえで下記を実行。
$ patch Inkscape.app/Contents/MacOS/inkscape fix_SierraBuild.patch patching file Inkscape.app/Contents/MacOS/inkscape Hunk #1 succeeded at 154 (offset 3 lines).
dmgファイルの生成。
$ ./osx-dmg.sh -p Inkscape.app
外付けディスプレイは外して置いたほうがいいかもしれない。
Inkscape.dmg
が生成されるのでこれをインストール対象のマシンに持っていく。なお、修正パッチは下記の通り。
--- ScriptExec/launcher-quartz-no-macintegration.sh.bak 2017-01-08 02:56:39.000000000 +0900 +++ ScriptExec/launcher-quartz-no-macintegration.sh 2017-01-08 02:58:25.000000000 +0900 @@ -151,6 +151,10 @@ export LANG="$tmpLANG.UTF-8" fi fi + +if [ $OSXMINORNO -gt 11 ]; then + export LANG="$(echo $LANG | cut -d. -f 1)" +fi [ $_DEBUG ] && echo "Setting Language: $LANG" 1>&2 export LC_ALL="$LANG"
実行時にセキュリティがらみの警告が出る場合は、Application
フォルダに移動して右クリックメニューから実行すればよかったはず。
もしくは環境設定からセキュリティまわりの設定を変更。
Maverciks からデフォルトのstdlibまわりが変更になっているので、コンパイラの最適化との関係で何かまずいんだろうと思う。
完成品
あまり需要がなさそうですが一応、置いておきます。 XQuartzなしで動くQuartz
版です。
起動スクリプトのバグ修正を含みます。
変更点など
過去記事のビルドとの変更点は、以下のとおり。 独自のパッチ
- CMake ではなく従来どおりの
autotools
によるビルド方式 - Extension の動作に必要なファイルが追加(されたはず)
上述したとおり、独自の修正を含んでいます。
- 日本語ロケールで起動時に「内部エラーが発生しました」というダイアログが表示されて起動できない問題
- 特定の環境でビルドしたバイナリをSierraで実行すると起動できない
あとは冒頭のリンク先と同じです。
スクリーンショット
こんな感じ。
おしまい。
*1:確かにRC相当のプレリリース版はその辺の日付だった。
VirtualBox のゲストとしてMavericks (OS X 10.9) をセットアップしたメモ
外付けストレージとのデュアルブート構成にしていたのですが、やはり不便なので仮装環境上にMavericksをインストールすることにしました。
Sierraではない理由はできるだけ古いOS X環境にしたいからです。
本来は手元のMacBook Air にインストール可能な最も古いバージョンであるMountain Lionにしたいところですが、リカバリ用のユーティリティからはインストールできても、 インストーラーそのものは手に入らないようなので。
基本的に以下のページと同じです。
iESDというコマンドを使う。メンテされてないようですが、インストール対象のゲストOS自体が古いので問題ないと判断しました。
GitHub - ntkme/iesd: Customize OS X InstallESD.
参考(Sierraの場合): [VirtualBox]仮想環境で macOS Sierra を導入(isoイメージ作成)[Sierra] - Qiita
最初は安直にcreateinstallmedia
コマンドの引数に空のdmg
ファイルを指定したらできるかと思いましたが、VirtualBox側が受け付けてくれませんでした。
ツールの入手と実行
githubからclone。
$ git clone https://github.com/ntkme/InstallESD.dmg.tool $ cd InstallESD.dmg.tool $ ls LICENSE.md README.md bin iesd.gemspec lib
インストール用ディスクのイメージをマウントしていると途中でこけるのでアンマウントされていることを確認してから実行。
$ bin/iesd -t BaseSystem -i /Volumes/DSHGST/Data_Sub/resources/apple/Marvericks/Install\ OS\ X\ Mavericks.app/Contents/SharedSupport/InstallESD.dmg -o Output.dmg
十数分はかかったはず。
ここで生成されたOutput.dmg
をVirtualBoxの起動ディスク(CD-ROM扱い)に指定すればインストーラーを起動できる。
仮想マシンの作成
VirtualBox 側で仮想マシンを作成します。「新規」をクリックするとウィザードが起動するので、仮想マシンの名称の箇所でmacOS(OSX)っぽい名前を入れると中央のプルダウンメニューがそれらしき候補に変化します。
Linux系の場合より多くのメモリが必要なようです(結局、2GBに設定)。
その他、細かい設定は以下を参考にしました。
VirtualBox -仮想環境”OS X 10.9 Mavericks”を作成- | External storage
サイトによってはチップセットの変更に言及されていますが、ICH9でも動作するようです。私はビデオメモリ64MB、CPU数 2としています。
ゲストOS(Maverics) のインストール
仮想マシンを起動すると起動ディスクを指定するためのダイアログが表示されるので、前述のOutput.dmg
をセットして続行。
注意点は、OS Xのインストーラーはフォーマット済みのディスクしかインストール先として認識しないという点。
初回は仮装ハードディスクを認識するものの、フォーマットされていない状態なので、ディスクユーティリティに切り替えて「消去タブ」からパーティションをつくる必要がある。
なお、OSXのEULAには仮装環境でのインストールは2台までと記載されています。もちろんApple製のハードウェア上で仮想化ホストOSが実行されている前提。
Xcode
Mavericks 用なのでXcode 6.1.1をインストール。対応するバージョンのComandlineToolsもインストールする。
どちらも入手はApple Developer のサイトから(要ログイン)。
制限事項
VirtualBoxのマニュアルにmacOS(OS X)ゲストについての制限事項の記載があります。
参考:http://download.virtualbox.org/virtualbox/5.1.14/UserManual.pdf
セクション14.2あたりを確認。
- 仮想マシンに割り当てられた一つのCPUで動作する(ホストのCPUクロックより高いクロック周波数のCPU扱いになる)
- guest addon はmacOSゲストには提供されない(つまり、VirtualBox側のファイル共有手段が使えない)
- 初期状態では画面解像度が1024x768(VirtualBoxが提供するコマンドで変更可能)
遭遇した問題など
- USBデバイスの共有機能を使ってUSBメモリからファイルをコピーしようとするとなぜか途中でUSBメモリを見失って失敗する
- 「このMacについて」というメニューからハードウェアの詳細を確認しようとするとログイン画面にフォールバックする
参考URL
macOS に Uniconvertor (ver 1.x) をインストールする
何の因果かわかりませんが、微妙な時期に絶妙にマイナーなユーティリティのインストールについてのエントリを書いております。
どうやらInkscapeのエクステンションの中にこいつを要求するものがあるらしい。そして以前のmacOS向けパッケージにはバンドルされていたそうで。
そしてmacOS向けのバイナリは配布されていなし、MacPortsにもない…。
[2017/02/16 追記]
InkscapeのソースコードにMacPorts用のPortfileが含まれているのでそれを使う方が楽でした。
なんとも微妙な気分です。
ソースファイルを展開したディレクトリの、下記のファイルを適当なディレクトリにコピーし、あとはMacPorts側の設定を変更してやればいけるはず。
packaging/macosx/ports/python/py-uniconvertor/Portfile
[追記ここまで]
手順は基本的に以下のサイトを参考にする。
How to install Uniconvertor (command-line app) on Mac OS 10.7.2 (Lion)? - Super User
というかほとんどそのままです。
準備
まず必要なファイルを入手してくる。
- uniconvertor-1.1.5.tar.gz
- uniconvw-1.1.5.tar.gz
- sk1libs-0.9.1.tar.gz
依存パッケージをインストール。freetype2 など色々と必要なようだがInkscapeビルドするための依存パッケージをインストールすればほとんど揃っているはずなので省略。
Inkscapeが要求するのはlcms2
だけどUniconvertorが要求するのはlcms
。
$ sudo port install lcms
MacPorts と Python
面倒なことに、OS標準のPython 2.7と、MacPortsのPython 2.7の両方が存在している。他のライブラリとの兼ね合いからすると、MacPorts側でないと不都合がある。
そのため、明示的にMacPorts側のPythonを呼び出す。
MacでPython環境を作る時に気をつける事 - Qiita
上記のページを参考に、それぞれインクルードパスとインストール先を確認する。
OS標準のPython の場合
$ which python /usr/bin/python
インクルードパス:
$ /usr/bin/python -c "import site; print(site.getsitepackages())" ['/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/site-python', '/Library/Python/2.7/site-packages']
モジュールのインストール先:
$ /usr/bin/python -c "import distutils.sysconfig as s; print(s.get_python_lib())" /Library/Python/2.7/site-packages
MacPorts (Python 2.7)の場合
$ which python2.7 /opt/local/bin/python2.7
インクルードパス:
$ /opt/local/bin/python2.7 -c "import site; print(site.getsitepackages())" ['/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages', '/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/site-python']
モジュールのインストール先:
$ /opt/local/bin/python2.7 -c "import distutils.sysconfig as s; print(s.get_python_lib())" /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages
ビルドとインストール
Pythonのライブラリによくあるsetup.py
によるインストール。
アンインストール用のタスクのようなものは存在しないみたいなので、削除する場合は手作業。
sk1libs
いつも通りソースを展開。
$ tar zxf sk1libs-0.9.1.tar.gz $ cd sk1libs-0.9.1
python2.7
の部分は環境に応じて変更する必要があります。少なくともMacPortsを利用して必要なライブラリをインストールしている場合はOS標準の方ではなく、MacPortsでインストールしたPython 2系を指定。
$ LDFLAGS="-L/opt/local/lib" CFLAGS="-I/opt/local/include -I/opt/local/include/freetype2" python2.7 setup.py build
問題がなければインストール。
$ sudo python2.7 setup.py install
MacPortsのPython2.7のインクルードパスにインストールするのが目的であるので、最後に以下のように出力されていればOK。
Writing /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/sk1libs-0.9.1-py2.7.egg-info
Uniconvertor
同じ要領で。
$ tar zxf uniconvertor-1.1.5.tar.gz $ cd uniconvertor-1.1.5 $ LDFLAGS="-L/opt/local/lib" CFLAGS="-I/opt/local/include -I/opt/local/include/freetype2" python2.7 setup.py build
ビルドに成功したらインストール。
$ sudo python2.7 setup.py install
動作の検証
実行時にpython-imaging、python-reportlabを要求するので対応するパッケージか代替品をインストールする。
$ sudo port install py27-Pillow $ sudo port install py27-reportlab
インストール先のディレクトリがパスに追加されていないので絶対パスで指定して実行。
$ /opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin/uniconvertor 変換したいファイル 変換後のファイル名
フォーマットは拡張子で自動判別される。
対応しているフォーマットは本家のサイトへ。
UniConvertor vector graphics translator
なお、PythonのパスがハードコーディングされているのでmacOS標準の方のPythonが呼び出されたりはしない。/usr/local/bin
にシンボリックリンクを作成しておくといいと思う。
uniconvw
GUIのラッパースクリプトらしいです。InkscapeのExtentionからすると不要な気がしますが一応。動くかどうかは試していません。
上記と同じ要領でインストールすればいいはずだが、/usr/share/applications
にディレクトリを作成しようとしてこける。対処法としては
setup.py
の103行目以降の、ハードコーディングされている/usr/share
を/usr/local/share
、またはインストール先ディレクトリに合わせて変更する。
そのほか
注意点など
CorelDRAW(.cdr
)形式のファイルの変換をサポートしていると記載されていますが、新しいバージョンのファイル形式はサポートされていないようです。Googleでfiletype:cdr
としてヒットするファイルで試しても変換不能でした。スタックトレースとともに以下のメッセージで変換できませんでした。
raise SketchLoadError(_("Parsing error: ")+ str(value)) app.events.skexceptions.SketchLoadError: Parsing error: unrecognised file type
また、Inkscapeで作成したSVGファイルについても、モノによっては処理が終了しないケースがあるようです。具体的な条件は良く分かりません。 エラーを吐かずにコマンドプロンプトが帰ってこない状態になります*1。
LInux 向け情報
Ubuntu 16.04 のuniconvertor (python-uniconvertor)は動かないようです。
- Bug #1597322 “necessary sk1libs isn’t packaged” : Bugs : python-uniconvertor package : Ubuntu
- #820748 - uniconvertor: ImportError: No module named sk1libs.utils.fs - Debian Bug report logs
展開したソースに含まれるREADMEなどではプロジェクトのURLが"http://sk1project.org"という記載になっていますが、現在のURLは"http://sk1project.net"です。
なお、現在ダウンロードできるバージョン 1.1.5のLinux向けパッケージはUbuntu 10向けだったりとても古いです。
最新版について
どうやら2.0のリリース候補(RC)版が存在するようです。
sK1 2.0 (ex.PrintDesign) vector graphics editor
Only import/export filters are not implemented yet. This functionality will be subject of RC3 milestone.
と書いてあるので、変換フィルタとしては使えなさそう。RCというのはRelease Candidate(リリース候補版)だと思うんですが、重要な機能の入っていないRC版というのも不思議ですがまあ今後に期待、ということで*2。
開発中のバージョンのリポジトリはgithubにあります。READMEによるとプロジェクト名の"sK1 Project"は"K"が大文字だそうです。
- GitHub - sk1project/sk1-wx: sK1 2.0 multiplatform vector graphics editor
- GitHub - sk1project/uniconvertor: UniConvertor is a universal vector graphics translator
- sK1 Project: sK1 2.0 (ex.PrintDesign), sK1, UniConvertor, SWord
カラーパレット
このソフトを開発しているプロジェクトのサイトで各種グラフィック編集ソフト向けにカラーパレットのデータが配布されている。
sK1 Project - Free Palette Collection
カラーパレットの名称をクリックするとダウンロードページに移動する。
まとめ
とりあえず動いたようなので、次はInkscape本体のパッケージ化のリターンマッチです。
確実に言えるのはPythonインタプリタの場所をハードコーディングしている箇所は小細工が必要だろうということです。
何だか無駄に文字数が多い気がしますが、このエントリは以上です。
iPod touch 修理完了
無事に戻ってきました。
おかえり、僕のサンドロック*1 iPod touch!!
無料修理扱いになったので最終的に費用ゼロで修理完了、です。
結局、バッテリの膨張は製品保証期間を切れている場合でも無償交換になるようです。
太っ腹なのか、膨張したバッテリのせいで爆発その他、風評被害を回避したいのでしょうか。
経過など
水曜日の深夜に異変に気付いてAppleのWebサイト経由でサポートに電話(木曜日)。
Webの方で「後日電話します」を選ぶと電話番号が表示される。その際に問い合わせ番号が割り当てられるのでこの番号を電話サポートに通知するとかなりスムーズにいく。
そのまま有料修理扱いで申し込んで、金曜日に宅配便で引き取り。
土曜日に一旦有料の修理をキャンセルするという唐突なメールが来た後、今回は費用ゼロだよ、という感じの不思議メールが到着(以下参照)。
日曜日に修理完了のメール、夕方に発送されて月曜日に交換品受領。
シリアルナンバーからすると別の個体になってしまいました。
受領後
交換品はiOSのバージョンが古かったのでバージョンアップ後、iCloudからデータ復元してめでたしめでたし、です。
30分ぐらいで復元完了。結果オーライです。
コストゼロで交換できたのは非常に良かったというのが正直な心境。信仰心が報われたのか何なのか、余計な出費を回避できたのは大きいです。
Appleの公式ページにはバッテリ膨張による交換について何も書かれていないのが謎ですが、バッテリ膨張の可能性がある場合はやばくなる前に修理に出すといいと思います。
某半島の端末の例もありますし。
それではまた。
*1:別に自爆したわけじゃないし
openSUSE for Raspberry Pi 3 をためしてみた
いつの間にかリリースされていたようです。
openSUSEというのはドイツのLinuxディストリビューション、SUSE Enterprise Linux Server のコミュニティ版です。
RedhatにおけるFedoraに近いイメージでいいのでしょうか。Fedoraよりは安定志向と思いますが。
昨年11月ごろにARM向けのリリースが告知(というか、以前にも対応していたものの、最新版は未提供だった?)が出ていたもの。
何が嬉しいかというと、64ビットモードで動作するという点です。ラズパイ3のCPUはCortex-A53(ARMv8アーキテクチャ)で、ハードウェア的には64 bitモードをサポートしていますが 、公式のOSとしては32ビットのカーネルしか提供されていませんでした。
今回のopenSUSEは非公式のOSイメージを使うとか、もしくは自前でカーネル一式ビルドするという面倒なことをしなくても64bitモードで動くよってのが一番のポイントです。
準備
前提はRaspberry Pi 3 model B、64ビットモードで動作する方のOSイメージ、です。
OSイメージのバリエーションについて
安定版であるopenSUSE Leap 44.2と、ローリングリリスース版である openSUSE Tumbleweedの2つのバージョンがあり、さらにローリングリリスース版には無印のTumbleweed とTumbleweed (non-upstream) で合計3系統。
デスクトップ環境の違いによりトータル14パターンのディスクイメージが提供されているようです。
non-upstream
というのは意味がよくわかりません。普通、OSSでupstreamというのは特定コンポーネントのオリジナルの開発元のことを指すと思うのですが、SUSEにupstreamと言われてもさっぱりです。 CentOSでupstreamといえばRedHat のRHELだったりしますが。
カーネルがSUSE標準のものか、Raspberry 用のカスタム版かのことを言っているのでしょうか?
- JeOS : 仮装環境向けの最小構成版。Just Enough Operating System(JeOS) | SUSE
- E20 : Enlightenment のE20を採用したもの?
- XFce : 軽量デスクトップ環境
- LXQT : 期待の新星LXQt(Tumbleweed 版のみ)
- X11 : XOrgのみで統合デスクトップ環境なし?
※ Leapの方のLXQt版は提供されていないようです。ダイレクトリンクは404 Not Foundになっていますし、general download directoryとやらをチェックしても存在しないようです。
FTPからダウンロードする場合はファイル名がraspberrypi3.aarch64.raw.xz
のものと、efi.aarch64.raw.xz
のものがあるので要注意です。
42.2 Leap、Tumbleweed、Tumbleweed (non-upstream ) のそれぞれ3系統試しましたが、私の環境ではTumbleweed (non-upstream )以外は正常に動作しませんでした。
42.2 Leap に関してはログインプロンプトが表示されるにもかかわらず自動的にGUIに切り替わるタイミングでフリーズ。一方、無印のTumbleweedは起動自体は成功しますが、GUIの起動に失敗してフリーズして使い物にならないです*1。
手持ちのmicroSD 3種類で試してダメだったので、microSDとの相性ではなさそうです。HDMIモニタのせいなのか、ググっても情報がないので諦めモードです。
Tumbleweed (non-upstream )については初回起動時は途中でフリーズしますが、電源オフして再度電源を投入すると起動できました。最初はLXQt 環境で行きたかったのですが、スクリーンショットが取れなかったのでXFceに切り替え。
上記リンク先の、"Installing the 64-bit non-upstream openSUSE Tumbleweed image"という見出しの下にある"XFCE image"からダウンロード。
ファイルのチェック
Linux (Raspbian)で作業しています。macOSの場合はddコマンドのオプションに注意。余計なオプションなしでRaspbianと同様にすればいけるはずです。
まずはダウンロードしたファイルのSHAチェックサムが一致するか確認。チェックサムの記載されたファイルを入手。以下は42.2 Leap の例。
$ get http://download.opensuse.org/repositories/devel:/ARM:/Factory:/Contrib:/RaspberryPi3/images/openSUSE-Tumbleweed-ARM-XFCE-raspberrypi3.aarch64-2017.01.28-Build4.3.raw.xz.sha256 <skip> $ cat openSUSE-Tumbleweed-ARM-XFCE-raspberrypi3.aarch64-2017.01.28-Build4.3.raw.xz.sha256 <skip> $ sha256sum openSUSE-Tumbleweed-ARM-XFCE-raspberrypi3.aarch64-2017.01.28-Build4.3.raw.xz <skip>
目視で比較はスマートではないという場合は、*.sha256
ファイルとチェック対象が同一ディレクトリに存在するものとして*2下記を実行する。「完了」と表示されていれば問題なし(2行目)。警告が出ているのはチェックサムを記録しているファイルに署名がくっついているためだと思う。
$ sha256sum -c openSUSE-Tumbleweed-ARM-XFCE-raspberrypi3.aarch64-2017.01.28-Build4.3.raw.xz.sha256 openSUSE-Tumbleweed-ARM-XFCE-raspberrypi3.aarch64-2017.01.28-Build4.3.raw.xz: 完了 sha256sum: 警告: 書式が不適切な行が 14 行あります
なお、mac環境ではsha256sum
じゃなくてshasum
コマンドを使う。
$ shasum -a 256 openSUSE-Leap42.2-ARM-XFCE-raspberrypi3.aarch64-2017.01.20-Build1.1.raw.xz
*.sha256
ファイルに記載のチェックサムと一致していればOK。よりスマートにやるなら-c
オプションを使う。
$ shasum -a 256 -c openSUSE-Leap42.2-ARM-XFCE-raspberrypi3.aarch64-2017.01.20-Build1.1.raw.xz.sha256 openSUSE-Leap42.2-ARM-XFCE-raspberrypi3.aarch64-2017.01.20-Build1.1.raw.xz: OK shasum: WARNING: 14 lines are improperly formatted
配布元のサイトの、対応するファイルに記載されているチェックサムと一致すればダウンロード成功。
定期的にファイルが更新されるようなのでファイル名に含まれる日付部分はダウンロードしたファイルに合わせて変更する必要あり。
microSDへのデータ書き込み
USB接続のカードリーダーをラズパイにつないで作業。microSDをセットすると勝手にマウントされるのでまずはマウント解除。
まず確実に対象デバイスをマウント解除。XXX
はマウントポイント名。
$ sudo amount /media/pi/XXX
対象ファイルをdd
で書き込み。ラズパイ以外の環境で/dev/sda
はルートパーティションなので注意。
デバイス名はdmesg | grep sd
とmount
の出力を確認すれば特定できるはず。
$ xzcat openSUSE-Tumbleweed-ARM-XFCE-raspberrypi3.aarch64-2017.01.28-Build4.3.raw.xz | sudo dd bs=4M of=/dev/sda iflag=fullblock oflag=direct; sync 906+0 レコード入力 906+0 レコード出力 3800039424 バイト (3.8 GB) コピーされました、 506.372 秒、 7.5 MB/秒
macOSでは4M
を4m
に、デバイス名にiflag
、oflag
は外す。またデバイス名も/dev/rdiskN
のようにr
をつける。
私の環境では10分ぐらいでした。コーヒーでも紅茶でも飲んでのんびり待つだけ。
あとはmicroSDを取り出して、ラズパイ側に差し込んで電源ON。
インストール後の諸設定
初回起動時は普通にGUIの軌道にコケる。画面左上にアンダーバーが表示されてフリーズ。
電源をオフにして再度電源を入れるとしれっとログイン画面が表示される。
初期ユーザー名はroot
でパスワードはlinux
というのがopenSUSEのデフォルトらしい。
デスクトップ環境さえ起動してしまえばあとはGUIのツールからユーザーを追加できる。
atuyosi@localhost:~> uname -a Linux localhost.localdomain 4.4.44-8-default #1 SMP Mon Jan 30 06:03:56 UTC 2017 (345bd0b) aarch64 aarch64 aarch64 GNU/Linux
いいですね、このaarch64
という文字列が見たかった。
ところでこのプロンプトは一体。
まあ別にいいけど。
初回起動時の挙動
初回起動時のみそれなりに時間がかかる。そしてフリーズする。
- パーティション拡張(自動的にmicroSDの全容量を使用するように拡張)
- initrd の再生成(dracut)
- パーティションテーブルをMBRからGPTへの変換(アライメント調整も?)
- いつのまにかswapパーティションを作成
かなりやんちゃなことをやっている印象。三番目はかなり危険だと思うんですけど。
パーティションの拡張とかしてるせいで初回起動時にコケるのかなあと。
また、swapサイズはかなり小さかったはず。500MBぐらい。
色々
画面左下の"openSUSE"というメニューから"Settings"をポイントして展開されるメニューから"Yast"。
Yast から"Language"をクリックして"Primary Language" をJapanese にするだけ。プルダウンポックスの下のチェックボックスを有効にするとキーレイアウトも面倒を見てくれるはず。
初回は追加パッケージをインストールするようなので時間がかかる。再起動してログイン画面から言語とキーボード配列を日本語(ja_JP.UTF-8)にしてログインすればOK。
画面左下のメニューからYast を起動して、"Software Management"をクリックするとGUIでソフトウェアをインストールできる。
fcitx-mozc
をインストールして一旦ログアウトしてログインし直せば、日本語も入力可能。
fcitx 自体の設定は他の環境と同じ。日本語キーボードとmozcを追加して英語キーボードを削除する。
XFce の設定
画面左下の"openSUSE"というメニューから"Settings"をポイントして"Settings Manager"。
デスクトップの外観などの細かい設定はこっちから。
そのほか
- 画面解像度がおかしい(1824x984、変更不能?)
- HDMIモニタのスピーカーが使えない
- 無線LANはデバイスが見えていない?
- 初期状態ではsshは起動していない(というか、sshのホストキーが正常に読み出せていない)
- 初期状態では日本語入力用のソフトウェアはインストールされていない
まだベータ版なんでしょうか。そもそもユーザー数が少ないのかな。
まとめ
ベンチマークは面倒だし省略。体感速度は結局、microSDの性能次第だという印象です。
デバイスドライバ完備の Raspbian と比べると常用は厳しそう。Fedora 26に期待。
それではまた。