フレイドフォートonBlog

普通とか自由って何ぞや

タグ:SailfishOS

SailfishOS Emulator を USBメモリーから起動にした。
更に、同ベースの 別UI の Nemo Mobile も加えた。
(前記事(その1その2))

ここでふと思い出したところで、
随分 Android-x86 試してないなぁ〜と。
最近、周りで試してるのを度々見かけてたので
久々に入れてみる事にした。

Android-x86 のサイトを見ると、
AOSP版以外に CM版も出ていた。
更に iso ファイルだけでなく、rpmファイルがあった。
後者は、RedHat系 Linuxのパッケージのそれだ。
これで導入する事も出来るらしい。
SailfishOS は、rpm系なので、それで入れる事も出来るだろう。
GRUB 2の書き換えとか見かけたけど・・・。
そもそも今回の環境で GRUB 2は使ってない。

現状、USBメモリー内のパーティションは次の通り。
partition 1 SailfishOS ext4 起動パーティション 4GB
partition 2 Nemo Glacier UI ext4 1.7GB
partition 3 Mer環境コピー ext4 1.8GB

partition 1の容量には、3GB程の余裕がある。
ここへ、Android-x86 を置く。
かつてやった方法で、設定する。
Blog記事遡ったら、既に5年以上前だった・・・。
今になって再度やるとは思ってなかったけど。

余談は置いておいて、本題へ。
AOSP版と CM版の2種があったので、両方入れる事にした。
手順は、かつて書いた isoを展開した手動インストール。(Wikiの Androidページ

で進めてたのだけど、つまらない記述ミスで動かない事に
気付かずに別の方法へ転換。尚、あとから再度試し済み。

partition 3の Mer環境が中途半端な状態だったので、
ここを消して、Android-x86 を入れる事にした。

一旦、VirtualBoxで Android-x86 を起動し、そこに USBメモリーを繋ぎ、
partition 3を ext4で初期化、Android-x86を導入。
この際、ブートローダーも GRUBへ切り替え。
一旦、SailfishOSの起動は出来なくなる。
それは、Android-x86 の GRUBを書き換えてマルチブート化。

更に、このパーティションには余裕があるので、もう1つも追加。
インストール時に CM版を使ったので、AOSP版を手動設置。
パーティション直下に、CMのディレクトリが見えたので
同列に Android 6.0のディレクトリを作り、手動インストール同様にファイルを置いた。
CMのパーミッションを見ると、旧版と変わってたみたいで
これの意図的な変更は不要そう。

この段階で、USBメモリー内のパーティションは次の通り。
partition 1 SailfishOS ext4 4GB EXTLINUX
partition 2 Nemo Glacier UI ext4 1.7GB
partition 3 Android-x86 ext4 1.8GB 電源投入時GRUB

GRUB設定書き換えは、デバッグモードから入ってやってもよかったが、
別Linux上で USBメモリーをマウントして書き換えた。
Android-x86の AOSP 6.0、CM 13と SailfishOS、Nemo Mobile Glacierの4項目。
SailfishOS側のブートローダーを使える設定も追加。
元々 Android-x86のデバッグメニューがあるが、ここでは省く。

title Mer bootloader
rootnoverify (hd0,0)
chainloader +1

title Android-x86 6.0-r3
kernel /android-x86-6.0-r3/kernel root=/dev/ram0 SRC=/android-x86-6.0-r3
initrd /android-x86-6.0-r3/initrd.img

title CM-x86 13.0-r1
kernel /cm-x86-13.0-r1/kernel quiet root=/dev/ram0 SRC=/cm-x86-13.0-r1
initrd /cm-x86-13.0-r1/initrd.img

title SailfishOS
root (hd0,0)
kernel /boot/vmlinuz-3.6.11-10.1.24.jolla quiet root=/dev/sdb1 rootwait

title Nemo Mobile Glacier
root (hd0,0)
kernel /boot/vmlinuz-3.6.11-10.1.24.jolla quiet root=/dev/sdb2 rootwait

これで、Android-x86 の GRUBを使ったマルチブートは完了。

今度は、SailfishOS側での操作。
rpmパッケージの提供があったのでこれを使ってみる事にした。
それぞれ /android-6.0-r3/、 /cm-x86-13.0-r1/ がパーティション直下に出来た。
GRUB2 への自動設定は、行われないので結果展開のみと同様の状態。
EXTLINUXの設定追記。/boot/extlinux/extlinux.conf

label androidx86
menu label Android x86 6.0r3
kernel /android-6.0-r3/kernel quiet root=/dev/ram0 SRC=/android-6.0-r3
append initrd=/android-6.0-r3/initrd.img rootwait

label cm
menu label CM 13.0
kernel /cm-x86-13.0-r1/kernel quiet root=/dev/ram0 SRC=/cm-x86-13.0-r1
append initrd=/cm-x86-13.0-r1/initrd.img rootwait

ここまでの USBメモリー内のパーティションは次の通り。
partition 1 SailfishOS、Android-x86 ext4 4GB EXTLINUX
partition 2 Nemo Glacier UI ext4 1.7GB
partition 3 Android-x86 ext4 1.8GB 電源投入時GRUB

2つのパーティションに 2種4つの Android-x86 環境が入っている状態。

これで、SailfishOS、Nemo、Andorid-x86(AOSP、CM)の4種のマルチブートが出来た。
更に、GRUBと EXTLINUXの2種の記述についても再確認。
やった事は、かつてやった事と差は無いな。
このエントリーをはてなブックマークに追加 mixiチェック Share on Tumblr Clip to Evernote

SailfishOS Emulator の USBメモリー化の続き。
前記事(その1))

ひとまず前記事までで、環境は出来ているが、
USBメモリーに空きがあるので、そこに追加で別環境を設ける。
Nemo Glacierのような別UI 毎に別環境が作れればというのが目的。

まず、USBメモリーにパーティションを追加作成。
8GBのメモリーのうち、残りの 3.5GB程を
fdisk コマンドを使って、1.7GBづつくらいに分割。
mkfs.ext4 で2つのパーティションをフォーマット。

続いて、2つ目、3つ目を mount し、1つ目の SailfishOS 環境をコピー。
ただ SailfishOS起動したままコピーは難有りなので、
別の Linux環境上で USBメモリーを mount。
3パーティションの mount をそれぞれ m1、m2、m3 にした場合。
cp -ar m1/* m2/
cp -ar m1/* m3/
でコピー。1つ目のパーティションの容量は、4GBと書いたが、
中身の使用容量は 1GB程なので、追加したパーティションの容量は足りる。
1つ目の /boot/extlinux/extlinux.conf に
パーティション違いの記述を作れば、マルチブート完了。
Kernel の更新時だけ、置き換わりに注意するくらい。
複数の Kernelを残すように設定するのも有りか。

ここからは UI毎についての話。
Lipstick上の UIの異なるものは、
SailfishOS
Nemo Glacier
AsteroidOS
の3つくらいか。

Nemo Glacierは、SailfishOS 2.1.0 対応のリポジトリがあるので、
そこから得れば良い。
パッケージ化されてたので、ここはあっさり入れ替えは出来た。
ただ、操作面を考えると、マウス操作出来るようにした方がよかったので
次の記述変更を行った。

/var/lib/environment/compositor/60-emul-wayland-ui.conf
以下をコメントアウト。
#QT_QPA_EGLFS_HIDECURSOR=1
#QT_QPA_EVDEV_MOUSE_PARAMETERS=/dev/nomouse

SailfishOSの場合でも同様の事が出来るが、
一部気になるところがあったので、そちらは保留。
Nemo Glacierの入れ替え直後は、
正位置だったが、再起動後、横倒しになった。
この点は、以前対策を見つけたような覚えがあるが、未調整。
あとは、Nemoアプリの追加。

AsteroidOSの場合、UI 部だけ SailfishOS Emulator上で
buildし直せればというところだが・・・。
一応試してみたけど、うまくいかず。
依存関係の解決とか、構成が把握出来てない。
登場初期の頃には、試せたりしたけど、
1.0-alpha辺りになると、変わってきたみたい。
UI部は、github上の AsteroidOS/asteroid-launcher がそれに当たる。
試すためには、要調査。

とりあえず、3パーティションで、
SailfishOS、Nemo Glacierの 2つUI 環境の独立環境は出来た。
AsteroidOS は、今後の課題かな。

追記、2017-05-23 22:41
思い出して確認して見つけたパッケージに
installer-shell というものがある。
名前の通りインストーラーだ。
これを使うと、OSのインストールが出来る。
ものすごく簡素なテキスト形式ウィザードで進み、
インストール先の指定くらいで、あとは自動処理。
半端に止めれないので逆に危ないくらい。
MeeGo 1.3 から Mer Core移行期にはあった物。
当時のままなら、rootのファイルシステムは、btrfsになるはず。
尚、これも過去に書いている話。
現状、x86系の Mer Coreベースなイメージが出てないので、
出くわす機会も無くなったかな。

追記、2017-05-24 17:35
Nemo の UIの向き調整。
/usr/share/lipstick-glacier-home-qt5/nemovars.conf
の以下を 1から 0へ変更。コメントアウトでも可。
GLACIER_NATIVEORIENTATION=0

その後、どこで見たか思い出して確認した、
SailPi のサイトだと、1から2になってた。
目的は同じ事なはずだが、値の意味は何だろう。
これを踏まえると、2の方が良いかも。
このエントリーをはてなブックマークに追加 mixiチェック Share on Tumblr Clip to Evernote

先に書いた記事の纏めとそれ以降の追記。
(2.0.1.11 on x86 Device(2017-04)、(2017-05))

前書きとして、MeeGo時代にマルチブート化した時の事を
踏まえての内容というのを書いておく。
その辺は、過去記事や Wikiにて。

現状、SailfishOS の x86向けのイメージは、おそらくない。
リポジトリ情報はあるのでそれを元に自前で作るなどの
何らかの手段は必要。
その中で今回、行った方法が、Emulatorの変換。
VirtualBoxの vdiファイルから raw形式にする。
Emulatorは、SDKに含まれているので
インストールした後にそれを使う。

すぐに変換してもいいが、
後からの操作だと不便な事があるので事前対処。
Emulatorを起動して、rootにパスワード設定。
設定の Developer tools から一般ユーザー nemoにパスワード設定。
更に、CUI 側で nemo でログイン後、
$ sudo su -
で root昇格。そこで root にパスワード設定。
VirtualBox上で CUI操作する場合、右Ctrl+F2 等で切り替えられる。
ちなみに GUIは、F1で表示されている。
nemo のパスワードは起動の度に変わるので固定出来ない。
root のパスワードは固定出来る。
※修正、Emulatorの場合は、
nemoパスワードも1度設定すれば固定される。

GUIが動いても、nemoパスワードの変更が出来ないと、
そこから先の操作が出来ずに多分詰む。
ターミナルのアプリも Emulatorの初期状態では入っていない。
標準アプリの幾らかはリポジトリ上に有るので、それを得る。
先の rootパスワード設定さえしておけば、
ローカルの CUI からは入れるので、他の調整は後でも可。

ここでは、VirtualBox付属のコマンドで変換。
$ VBoxManage clonehd SailfishOS.vdi SailfishOS.img --format raw
出来たファイルを dd コマンドや Win32DiskImager で書き込む。

ブートローダーは、EXTLINUX。
この点は、MeeGo時代から変わらず。
ネットブック等で起動した場合、
パーティション認識が変わる場合があるので起動時に記述変更。
PC内蔵が sda なら USBメモリーは sdb のようになる。
固定するなら、 /boot/extlinux/extlinux.conf を書き換える。
変更点を抜粋。 起動OS部分は一式。変更は append のオプション。
timeout 15

#menu hidden

label merdevice0
menu label MerDevice (3.6.11-10.1.24.jolla)
linux vmlinuz-3.6.11-10.1.24.jolla
append ro root=/dev/sdb1 video=vesafb:mtrr:3 vga=864 vt.global_cursor_default=0 splash quiet rootfstype=ext4 rootwait

append オプションは、USBメモリーが sdb である場合を想定。
このパーティション指定は環境に応じて変更。
更に後方に rootwait を追加。
時折、起動時にカーネルパニックが起きたが、
rootwait オプション追加後、治まったようだ。

ここまでで、最低限の事は済む。
アプリ群を追加すれば、それなりの見かけと操作は出来る。
ネットブックで試した限り、Tabletモードで認識されたぽい。
以前解像度における境について書いたが、この事に合わない。
疑問は残るが、それは別件でおいておく。

あと、先日以降忘れてた事として、
Webブラウザの動作だが、
そもそも Emulator上で入れても動かない事を思い出した。
その環境を実機で動かしても動くとは限らなかったわけだが。
グラフィックス周りなら、現状 LLVMpipe なので、
実ハードに合わせた Mesa入れ替えとかは考えた方が良いかも。
旧来の事例として、この辺りはあった。

ここからは、おまけ的な話。
長くなりそうなので、次記事にするが、
ざっくり書くと次のような事。

今回使ったのは、8GBの USBメモリーだが、
Emulatorを書き込んだ部分の容量は、4GB程しか使ってない。
残りの半分がもったいないので、空きの部分に別環境を作る。
土台は同じだが、Nemo Glacierのような UI の異なる環境を設ける。
このエントリーをはてなブックマークに追加 mixiチェック Share on Tumblr Clip to Evernote

先頃、時計向けの AsteroidOS の nightly が
出ているのを知ったので試してみる事にした。

UI部のベースとしては、
Nemo や SailfishOS と同様の構成なので
過去には、公開されているソースを Build して
SailfishOS Emulator に入れてみたりもした。

ただ AsteroidOS自体のベースは、
Mer Core ではなく OpenEmbedded が使われている。
AsteroidOS の情報初期からも
OpenEmbedded の記載があった。

Alpha 1.0 のリリース辺りだと、
UI は過去に試した頃のように Nemo 寄りではなく、
独自な感じとなったようだ。
スクリーンショットは公式で紹介されている。

本題の nightly のだが、
提供されるイメージは幾つかの種類がある。
手元に試せるような端末は無いのだが、
その中に QEMU向けがあった。
これなら使えるという事で試してみる事にした。
ちなみに、これを書いている段階で 2017-05-03付。

vmdk ファイルの提供だったので
QEMU以外でも手早く試せるだろうという事で、
まず、VirtualBox でやってみた。
起動はするが、表示にノイズ交じり。
グラフィックス周りでうまくいってないぽい。

続いて VMware Player でやってみた。
こちらは、表示が出た。
だが、操作に反応が無い?
カーソル表示もないのでどうにも分からない。
CUI 側では、自動で一般ユーザー ceres にログイン済み。
そこから root にすぐ移れたので、設定変更。
Nemo や SailfishOS 同様に
QtWayland使用 の lipstick compositor で動いているので
/var/lib/environment/compositor/ 以下にファイルがある。
qemu.conf の中で以下の2つをコメントアウト。
#QT_QPA_EGLFS_HIDECURSOR=1
#QT_QPA_EGLFS_DISABLE_INPUT=1

再起動後、画面内にカーソルが出た。
少々鈍い動きではあったが、操作は出来るようになった。

ひとまず今回は、ここまで。

追記、2017-05-05 04:31
Raspberry Pi 3上で Nemo を動かしたという話を
Twitterで見たが、OpenEmbedded 使用との事。
このエントリーをはてなブックマークに追加 mixiチェック Share on Tumblr Clip to Evernote

SailfishOS を x86 の実機で動かす続き。
前記事

実際のところは、続きというか仕切り直しぽいところ有り。

まず、前回とそれ以降の簡単な纏め。
使いまわしてた環境からのイメージ作成。
Intel Atom PineTrail ネットブック使用。
ブートローダー設定の少々書き換え。
Kernel の入れ替えは不要。
USBを介したネットワークデバイスによる接続可。
マウスの有効化。
ざっと書き出すとこんなところか。

現状、旧バージョンからの更新を繰り返した環境だと、
ロック画面がロード中表示のままになったりした。
SDK入れ直しで、新バージョンで真っ新な環境の
Emulatorでは起きてない状況なので、
更新に伴った影響と考えられる。

という事で、今回は Emulator の初期状態の物でイメージを再作成。
ただし、事前に幾つか設定を変えておかないと、
後からでは面倒な事がある。
と言っても root のパスワード設定くらいか。
初回は、設定の Developer Tools からする必要がある。
これを実機上でやろうとすると、
カーソル無しでは、操作に少々苦労する。
ここでは、nemo に対する変更だが、
# sudo su -
で root になれるので、そこでパスワード設定。
以降、ローカルからなら rootで直接入れる。

でも今回の場合、先にイメージ変換やったので、
実機上でやったのだけどね・・・。

以降実機上の CUI から
パッケージ調整、設定変更を行った。
ふと操作してて気付いたのだけど、
初期状態のマウス無効化時にタッチパッド部分の動きが、
本来画面をタッチ操作出来た場合の位置と重なっているのでは?と。
マウス有効化すると、タッチパッドに加えて、
USBマウスも使えるようになるが、
この際のタッチパッドの動きは、少々妙な感じ。
マウス有効化時にカーソルも表示出来るので
操作しやすいかと思いきや・・・
一部のスワイプ操作がうまくいかないぽいので無効化して、
タッチパッド操作でやる方が意外に有りかもと。

ここまでの事を纏めると次の通り。
ロックスクリーンは表示される。
マウス無効時のタッチパッドなら画面タッチと同等?
パッケージは、元々のリポジトリからの物のみ。

ロックスクリーンの件は、
やはり lipstick のどこかなのかなぁ。
何度か眺めてはいるが、本体か home なのか再度探る。

それから標準のWebブラウザ等の一部アプリが動かないのは、
グラフィックス関連だろうか?
これは、Nokia N9 の時も同様で
別のブラウザを使うという選択肢有り。

尚、最近主流となってきた UEFI では無いので、
旧来の BIOS での起動である事を今更ながら書いておく。
このエントリーをはてなブックマークに追加 mixiチェック Share on Tumblr Clip to Evernote

このページのトップヘ