今日も微速転進

ここではないどこかへ

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 版が公開されています(まだテスト用扱い)。

inkscape.org

例によって例のごとく、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環境です。

まずはMacPortsのインストール先を環境変数にセット。

もし同一マシンで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.appdmgファイルが生成されているので動作確認する。

f:id:atuyosi:20170217153418p:plain

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 版です。

www.dropbox.com

起動スクリプトのバグ修正を含みます。

変更点など

過去記事のビルドとの変更点は、以下のとおり。 独自のパッチ

  • CMake ではなく従来どおりのautotoolsによるビルド方式
  • Extension の動作に必要なファイルが追加(されたはず)

上述したとおり、独自の修正を含んでいます。

  • 日本語ロケールで起動時に「内部エラーが発生しました」というダイアログが表示されて起動できない問題
  • 特定の環境でビルドしたバイナリをSierraで実行すると起動できない

あとは冒頭のリンク先と同じです。

スクリーンショット

f:id:atuyosi:20170217200448p:plain

こんな感じ。


おしまい。

*1:確かにRC相当のプレリリース版はその辺の日付だった。

VirtualBox のゲストとしてMavericks (OS X 10.9) をセットアップしたメモ

外付けストレージとのデュアルブート構成にしていたのですが、やはり不便なので仮装環境上にMavericksをインストールすることにしました。

Sierraではない理由はできるだけ古いOS X環境にしたいからです。

本来は手元のMacBook Air にインストール可能な最も古いバージョンであるMountain Lionにしたいところですが、リカバリ用のユーティリティからはインストールできても、 インストーラーそのものは手に入らないようなので。


基本的に以下のページと同じです。

qiita.com

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.dmgVirtualBoxの起動ディスク(CD-ROM扱い)に指定すればインストーラーを起動できる。

仮想マシンの作成

VirtualBox 側で仮想マシンを作成します。「新規」をクリックするとウィザードが起動するので、仮想マシンの名称の箇所でmacOSOSX)っぽい名前を入れると中央のプルダウンメニューがそれらしき候補に変化します。

f:id:atuyosi:20170216154310p:plain

Linux系の場合より多くのメモリが必要なようです(結局、2GBに設定)。

その他、細かい設定は以下を参考にしました。

VirtualBox -仮想環境”OS X 10.9 Mavericks”を作成- | External storage

サイトによってはチップセットの変更に言及されていますが、ICH9でも動作するようです。私はビデオメモリ64MB、CPU数 2としています。

ゲストOS(Maverics) のインストール

仮想マシンを起動すると起動ディスクを指定するためのダイアログが表示されるので、前述のOutput.dmgをセットして続行。

注意点は、OS Xインストーラーはフォーマット済みのディスクしかインストール先として認識しないという点。

初回は仮装ハードディスクを認識するものの、フォーマットされていない状態なので、ディスクユーティリティに切り替えて「消去タブ」からパーティションをつくる必要がある。

なお、OSXEULAには仮装環境でのインストールは2台までと記載されています。もちろんApple製のハードウェア上で仮想化ホストOSが実行されている前提。

f:id:atuyosi:20170216154033p:plain

Xcode

Mavericks 用なのでXcode 6.1.1をインストール。対応するバージョンのComandlineToolsもインストールする。

どちらも入手はApple Developer のサイトから(要ログイン)。

制限事項

VirtualBoxのマニュアルにmacOSOS 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 Download Page

  • 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

MacPortsPython

面倒なことに、OS標準のPython 2.7と、MacPortsPython 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

MacPortsPython 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)形式のファイルの変換をサポートしていると記載されていますが、新しいバージョンのファイル形式はサポートされていないようです。Googlefiletype: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)は動かないようです。

展開したソースに含まれるREADMEなどではプロジェクトのURLが"http://sk1project.org"という記載になっていますが、現在のURLは"http://sk1project.net"です。
なお、現在ダウンロードできるバージョン 1.1.5のLinux向けパッケージはUbuntu 10向けだったりとても古いです。

UniConvertor Download Page

最新版について

どうやら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"が大文字だそうです。

カラーパレット

このソフトを開発しているプロジェクトのサイトで各種グラフィック編集ソフト向けにカラーパレットのデータが配布されている。

sK1 Project - Free Palette Collection

カラーパレットの名称をクリックするとダウンロードページに移動する。

まとめ

とりあえず動いたようなので、次はInkscape本体のパッケージ化のリターンマッチです。

確実に言えるのはPythonインタプリタの場所をハードコーディングしている箇所は小細工が必要だろうということです。


何だか無駄に文字数が多い気がしますが、このエントリは以上です。

*1:用紙サイズとして設定された範囲外にオブジェクトがあるとうまくいかないのかもしれません

*2:どっちにしろInkscape側が対応してなさそうだからどうでもいい

iPod touch 修理完了

f:id:atuyosi:20170206225757j:plain

無事に戻ってきました。

おかえり、僕のサンドロック*1 iPod touch!!

a244.hateblo.jp

無料修理扱いになったので最終的に費用ゼロで修理完了、です。

結局、バッテリの膨張は製品保証期間を切れている場合でも無償交換になるようです。

太っ腹なのか、膨張したバッテリのせいで爆発その他、風評被害を回避したいのでしょうか。

経過など

水曜日の深夜に異変に気付いてAppleのWebサイト経由でサポートに電話(木曜日)。

Webの方で「後日電話します」を選ぶと電話番号が表示される。その際に問い合わせ番号が割り当てられるのでこの番号を電話サポートに通知するとかなりスムーズにいく。

そのまま有料修理扱いで申し込んで、金曜日に宅配便で引き取り。

土曜日に一旦有料の修理をキャンセルするという唐突なメールが来た後、今回は費用ゼロだよ、という感じの不思議メールが到着(以下参照)。

f:id:atuyosi:20170206215339p:plain

日曜日に修理完了のメール、夕方に発送されて月曜日に交換品受領。

シリアルナンバーからすると別の個体になってしまいました。

受領後

交換品はiOSのバージョンが古かったのでバージョンアップ後、iCloudからデータ復元してめでたしめでたし、です。

30分ぐらいで復元完了。結果オーライです。


コストゼロで交換できたのは非常に良かったというのが正直な心境。信仰心が報われたのか何なのか、余計な出費を回避できたのは大きいです。

Appleの公式ページにはバッテリ膨張による交換について何も書かれていないのが謎ですが、バッテリ膨張の可能性がある場合はやばくなる前に修理に出すといいと思います。

某半島の端末の例もありますし。


それではまた。

*1:別に自爆したわけじゃないし

openSUSE for Raspberry Pi 3 をためしてみた

いつの間にかリリースされていたようです。

openSUSEというのはドイツのLinuxディストリビューションSUSE Enterprise Linux Server のコミュニティ版です。

RedhatにおけるFedoraに近いイメージでいいのでしょうか。Fedoraよりは安定志向と思いますが。

昨年11月ごろにARM向けのリリースが告知(というか、以前にも対応していたものの、最新版は未提供だった?)が出ていたもの。

HCL:Raspberry Pi3 - openSUSE

何が嬉しいかというと、64ビットモードで動作するという点です。ラズパイ3のCPUはCortex-A53(ARMv8アーキテクチャ)で、ハードウェア的には64 bitモードをサポートしていますが 、公式のOSとしては32ビットのカーネルしか提供されていませんでした。

今回のopenSUSEは非公式のOSイメージを使うとか、もしくは自前でカーネル一式ビルドするという面倒なことをしなくても64bitモードで動くよってのが一番のポイントです。

f:id:atuyosi:20170203014729p:plain

準備

前提は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といえばRedHatRHELだったりしますが。

カーネルSUSE標準のものか、Raspberry 用のカスタム版かのことを言っているのでしょうか?

※ 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 sdmountの出力を確認すれば特定できるはず。

$ 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では4M4mに、デバイス名にiflagoflagは外す。またデバイス名も/dev/rdiskNのようにrをつける。

私の環境では10分ぐらいでした。コーヒーでも紅茶でも飲んでのんびり待つだけ。

あとはmicroSDを取り出して、ラズパイ側に差し込んで電源ON。

f:id:atuyosi:20170203014649p:plain

インストール後の諸設定

初回起動時は普通に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という文字列が見たかった。

ところでこのプロンプトは一体。

f:id:atuyosi:20170203030613p:plain

まあ別にいいけど。

初回起動時の挙動

初回起動時のみそれなりに時間がかかる。そしてフリーズする。

かなりやんちゃなことをやっている印象。三番目はかなり危険だと思うんですけど。

パーティションの拡張とかしてるせいで初回起動時にコケるのかなあと。

また、swapサイズはかなり小さかったはず。500MBぐらい。

色々

SUSEといえばGUIの管理ツールであるYast

画面左下の"openSUSE"というメニューから"Settings"をポイントして展開されるメニューから"Yast"。

f:id:atuyosi:20170203014706p:plain Yast から"Language"をクリックして"Primary Language" をJapanese にするだけ。プルダウンポックスの下のチェックボックスを有効にするとキーレイアウトも面倒を見てくれるはず。

f:id:atuyosi:20170203014626p:plain

f:id:atuyosi:20170203014809p:plain

初回は追加パッケージをインストールするようなので時間がかかる。再起動してログイン画面から言語とキーボード配列を日本語(ja_JP.UTF-8)にしてログインすればOK。

画面左下のメニューからYast を起動して、"Software Management"をクリックするとGUIでソフトウェアをインストールできる。

fcitx-mozcをインストールして一旦ログアウトしてログインし直せば、日本語も入力可能。

f:id:atuyosi:20170203020855p:plain

f:id:atuyosi:20170203021208p:plain

fcitx 自体の設定は他の環境と同じ。日本語キーボードとmozcを追加して英語キーボードを削除する。

XFce の設定

画面左下の"openSUSE"というメニューから"Settings"をポイントして"Settings Manager"。

デスクトップの外観などの細かい設定はこっちから。

そのほか

  • 画面解像度がおかしい(1824x984、変更不能?)
  • HDMIモニタのスピーカーが使えない
  • 無線LANはデバイスが見えていない?
  • 初期状態ではsshは起動していない(というか、sshのホストキーが正常に読み出せていない)
  • 初期状態では日本語入力用のソフトウェアはインストールされていない

まだベータ版なんでしょうか。そもそもユーザー数が少ないのかな。

まとめ

ベンチマークは面倒だし省略。体感速度は結局、microSDの性能次第だという印象です。

デバイスドライバ完備の Raspbian と比べると常用は厳しそう。Fedora 26に期待。


それではまた。

*1:日付が表示されるところでストップしてそこから進まない

*2:なおかつファイルのあるディレクトリに移動する

広告