Install Sailfish SDK Emulator on CZC P10T Tablet PC (tegav2/Viewpad10)
暇村さんが、↓やるのに、ONKYOのタブレットが安く入手できないかみたいな話をしていた。
Install Sailfish SDK Emulator on ExoPC
https://wiki.merproject.org/wiki/Sailfish/Exopc
手順を見ると、Mesa使っているようだし、タッチだけ調整してやればPC選ばないんじゃないかと。
というわけで、手元のタブレットで入れてみる。
まぁ、こんな第四極以下は、誰も興味ないだろうけど。
まず、vdiイメージをもらってこないといけないのだけど、直接配布はしてないみたい。
なんか、runという拡張子の付いた妙なファイルを配っている。
自己展開のシェルアーカイブのようなものかな?
https://sailfishos.org/develop-installation-article.html
32bit版と64bit版がある。
今回は確か64bitは動作しないターゲットのような気がするので、32bit版をもらってくる。
kinneko@BuildSV:/work/sailfishos$ wget http://jolla.cachefly.net/SailfishOSSDK/alpha/installers/SailfishOSSDK-linux-32-offline.run
通常、実行権限を与えて実行すると、virtualboxが起動することになるようだ。
開発環境で、無闇と実行ファイルを動かしたりしたくない。
vdiがほしいだけなので、展開方法を検討する。
kinneko@BuildSV:/work/sailfishos$ file SailfishOSSDK-linux-32-offline.run
SailfishOSSDK-linux-32-offline.run: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, not stripped
うげ、ELFバイナリじゃないの。
実行するしかないか。
UIなくてもいいのかな?
kinneko@BuildSV:/work/sailfishos$ chmod +x SailfishOSSDK-linux-32-offline.run
kinneko@BuildSV:/work/sailfishos$ ./SailfishOSSDK-linux-32-offline.run
SailfishOSSDK-linux-32-offline.run: cannot connect to X server
UIないとダメなのね。
しょうがないので、コンソールログインしてX起動し実行する。
GTKっぽいセットアップウィザードが表示される。
インストールする場所を決める。
ライセンスの確認画面。
acceptにチェックして進む。
インストールの最終確認。
詳細ボタンがあるので押してみた。
installボタンでインストール開始。
完了画面。
IDEのチェック入れたままにしておいたら、Qtcreatorが起動してきた。
すぐに終了。
インストーラーとしてはよくできているかもね。
インストールされたものを確認してみる。
kinneko@BuildSV:/work/sailfishos$ ls -al ~/SailfishOS/
total 27848
drwxr-xr-x 12 kinneko kinneko 4096 Mar 12 22:08 .
drwxr-xr-x 91 kinneko kinneko 4096 Mar 12 22:59 ..
-rw-r--r-- 1 kinneko kinneko 63260 Mar 12 22:08 InstallationLog.txt
drwxr-xr-x 2 kinneko kinneko 4096 Mar 12 22:06 Licenses
-rwxr-xr-x 1 kinneko kinneko 22863028 Mar 12 22:08 SDKMaintenanceTool
-rw-r--r-- 1 kinneko kinneko 5517945 Mar 12 22:08 SDKMaintenanceTool.dat
-rw-r--r-- 1 kinneko kinneko 5049 Mar 12 22:08 SDKMaintenanceTool.ini
drwxr-xr-x 3 kinneko kinneko 4096 Mar 12 22:07 additionaltools
drwxr-xr-x 10 kinneko kinneko 4096 Mar 12 22:06 bin
-rw-r--r-- 1 kinneko kinneko 3592 Mar 12 22:08 components.xml
drwxrwxr-x 2 kinneko kinneko 4096 Mar 12 22:08 documentation
drwx------ 4 kinneko kinneko 4096 Mar 12 22:07 emulator
drwx------ 3 kinneko kinneko 4096 Mar 12 22:06 examples
drwxr-xr-x 4 kinneko kinneko 4096 Mar 12 22:06 ifw
drwxr-xr-x 3 kinneko kinneko 4096 Mar 12 22:06 lib
drwxrwxr-x 6 kinneko kinneko 4096 Mar 12 22:07 mersdk
-rw-r--r-- 1 kinneko kinneko 362 Mar 12 22:08 network.xml
drwxr-xr-x 3 kinneko kinneko 4096 Mar 12 22:06 share
なんだかよくわからん。
mersdk, qtcreator, emulator, share/qtcreator, lib/qtcreator, examplesという感じの構成。
vidはここにあった。
kinneko@BuildSV:/work/sailfishos$ ls -alh ~/SailfishOS/emulator/sailfishos.vdi
-rw-rw-r-- 1 kinneko kinneko 874M Mar 12 22:08 /home/kinneko/SailfishOS/emulator/sailfishos.vdi
ほしいのは、vdiだけなので、あとはお掃除。
kinneko@BuildSV:/work/sailfishos$ mv ~/SailfishOS/emulator/sailfishos.vdi ./
kinneko@BuildSV:/work/sailfishos$ rm -rf ~/SailfishOS/
raw形式への変換。
kinneko@BuildSV:/work/sailfishos$ VBoxManage internalcommands converttoraw sailfishos.vdi sailfish.raw
Converting image "sailfishos.vdi" with size 2098200576 bytes (2001MB) to raw...
kinneko@BuildSV:/work/sailfishos$ ls -alh sailfish.raw
-rw------- 1 kinneko kinneko 2.0G Mar 12 23:24 sailfish.raw
2GBとは無駄にデカいな。
というわけで、2GB以上のUSBメモリを用意しないといけなくなった。
4GBのものを見つけたので、それを使うことにした。
rawイメージデータの書き込み。
kinneko@BuildSV:/work/sailfishos$ sudo dd if=sailfish.raw of=/dev/sdc bs=4M
500+1 records in
500+1 records out
2098200576 bytes (2.1 GB) copied, 292.906 s, 7.2 MB/s
オリジナルにはsyncがあるけど、ddでsyncはいらないような。
一回抜いて、USBメモリ上のextlinuxの設定を変更する。
kinneko@BuildSV:/work/sailfishos$ sudo fdisk -l /dev/sdc
Disk /dev/sdc: 4110 MB, 4110417920 bytes
4 heads, 32 sectors/track, 62720 cylinders
Units = cylinders of 128 * 512 = 65536 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00028f7eDevice Boot Start End Blocks Id System
/dev/sdc1 * 1 32000 2047999+ 83 Linux
なんだこのベタっとした1パーティション。
なかみは普通なLinuxっぽい配置。
kinneko@BuildSV:/work/sailfishos$ sudo mount /dev/sdc1 /media
kinneko@BuildSV:/work/sailfishos$ ls -al /media/
total 100
drwxr-xr-x 22 root root 4096 Feb 23 01:16 .
drwxrwxrwx 27 root root 4096 Feb 8 14:13 ..
drwx------ 2 root root 4096 Feb 23 01:16 .ssh
drwxr-xr-x 2 root root 4096 Feb 23 01:16 bin
drwxr-xr-x 3 root root 4096 Feb 23 01:16 boot
drwxr-xr-x 3 root root 4096 Jul 30 2012 dev
drwxr-xr-x 64 root root 4096 Feb 23 01:16 etc
drwxr-xr-x 3 root root 4096 Feb 23 01:16 home
drwxr-xr-x 10 root root 4096 Feb 23 01:16 lib
drwx------ 2 root root 16384 Feb 23 01:13 lost+found
drwxr-xr-x 2 root root 4096 Jul 30 2012 media
drwxr-xr-x 2 root root 4096 Jul 30 2012 mnt
drwxr-xr-x 3 kinneko root 4096 Feb 23 01:16 opt
drwxr-xr-x 2 root root 4096 Feb 23 01:13 proc
drwxr-x--- 2 root root 4096 Feb 23 01:14 root
drwxr-xr-x 10 root root 4096 Feb 23 01:16 run
drwxr-xr-x 2 root root 4096 Feb 23 01:16 sbin
drwxr-xr-x 2 root root 4096 Jul 30 2012 srv
drwxr-xr-x 2 root root 4096 Feb 23 01:13 sys
d-wxr----t 2 root root 4096 Feb 23 01:16 tmp
drwxr-xr-x 12 root root 4096 Feb 23 01:14 usr
drwxr-xr-x 17 root root 4096 Feb 23 01:14 var
編集。
kinneko@BuildSV:/work/sailfishos$ sudo vi /media/boot/extlinux/extlinux.conf
デフォルトで24line。
prompt 0 timeout 1 default vesamenu.c32 menu autoboot Starting MerDevice... menu hidden menu title Welcome to MerDevice! menu color border 0 #ffffffff #00000000 menu color sel 7 #ffffffff #ff000000 menu color title 0 #ffffffff #00000000 menu color tabmsg 0 #ffffffff #00000000 menu color unsel 0 #ffffffff #00000000 menu color hotsel 0 #ff000000 #ffffffff menu color hotkey 7 #ffffffff #ff000000 menu color timeout_msg 0 #ffffffff #00000000 menu color timeout 0 #ffffffff #00000000 menu color cmdline 0 #ffffffff #00000000 label merdevice0 menu label MerDevice (3.6.11-8.1) linux vmlinuz-3.6.11-8.1 append ro root=/dev/sda1 quiet menu default
起動ドライブを変更。rootwait入れて、quietは抜く。
append ro root=/dev/sdb1 rootwait
アンマウントしておく。
kinneko@BuildSV:/work/sailfishos$ sudo umount /media/
起動してみる。
USBキーボードを接続する。
AMI BIOSなので、F11で起動ドライブを選ぶモードになる。
USBメモリを選んで起動する。
sshのキーがダメとか、splashが出せないとかエラーは出している。
target Graphical Interface.
のあと、USBメモリはチカチカしているものの、先に進まなくなった。
UI描画はできないので、あたりまえだけど。
Ctl+Alt+F2でコンソールに落ちた。
USBメモリはまだチカチカしたまま。
裏でフレームバッファをいじっているようで、時々コンソールがフラッシュする。
rootでログインできる。パスワードはnemo。
パッケージをいくつか導入する必要があるので、WiFiを有効にする。
$ cd /usr/lib/connman/test
$ ./test-connman enable wifi
wlan0: link is not ready
APのリストを見る。
$ ./test-connman list
リストに接続するAPが出ない場合は、scanやりなおしてみると書いてある。
$ ./test-connman scan
'scan' takes two arguments
と出るわ。
後ろにtypeを入れないといけないみたいね。
なんじゃこりゃ。
これ以上のヘルプはない。
とりあえず、WEPで接続してみる。
しかし、これがめんどくさい。
コンソールは英語キーボード配列なので注意。
$ ./simple-agent Name=0ACE87B21863D Passphrase=mogemo
vpnd is connect to system bus
vpn agent registered
Release VPM agent
vpnd is dissconnected from system bus
コンソール奪われたよ。
simple-agentはpythonで書かれているようだ。
別のターミナル開いて作業するのか。
Ctl+Alt+F3を押す。
接続には、リストに出てくる長い長いAP名称を入れないとダメみたい。ううう。
それに、こっちのコンソールでは、デバイスつかまれてて表示できないときた... orz
$ ./test-connman connect wifi_e0b9a5463545_30414345383742323138363344_managed_wep
キャプチャできないけど、ゾロとログが出た。
F2のほうは走らせたままにしておくようだ。
ifconfigしてみると、確かに接続できているのがわかる。
sshできるというが、どうだろう。
psしてみたが、sshdは起動していないようだ。
inted的なスーパーバイザが起動するのかな?
/etc/ssh/ssh_configを編集してみる。
Port 22
PermitRootLogin yes
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication yes
PermitEmptyPasswords no
追記してみる。
$ systemctl stop sshd.service
$ systemctl start sshd.service
同じだねぇ。
めんどくさいのでリブートした。
再起動したら、無線は再接続しているようだ。
sshできぬので、手動で行く覚悟した。
x86-generic adaptationから2つのパッケージをダウンロードする。
https://build.merproject.org/project/show?project=home%3Avgrade%3Abranches%3Anemo%3Adevel%3Ahw%3Ax86-common
zypperのお勉強。arはaddrepoでリポジトリの追加。
$ zypper ar http://repo.merproject.org//obs/home:/vgrade:/branches:/nemo:/devel:/hw:/x86-common/latest_i586/home:vgrade:branches:nemo:devel:hw:x86-common.repo
not found on medium 'http://repo.merproject.org/'
できないと思ったら、resolve.confが未定義だよ。
書く。
まだ出られない?
って、ことはgwも未定義なのか。
$ route add default gw 192.168.1.1
SIOCADDRT: File exist
違うか。
出るのは問題なくなったが、まだリポジトリが見つからないという。
スラッシュ一個多い感じの削る。
同じ。
しょうがないので、設定に直接書く。
$ vi /etc/zypp/repos.d/home_vgrade_branches_nemo_devel_hw_x86-common.repo
[home_vgrade_branches_nemo_devel_hw_x86-common] name=Branch project for package mesa-x86-generic (latest_i586) type=rpm-md baseurl=http://repo.merproject.org/repositories/home:/vgrade:/branches:/nemo:/devel:/hw:/x86-common/latest_i586/ gpgcheck=1 enabled=1
$ zypper search reposしたら署名ないけど加えるか聞いてきた。
yesして加える。
加えてもリストには出てこないのね。
そんなもんか。
$ zypper in mesa-x86-generic-9.0.2
$ zypper in xorg-x11-drv-intel-2.21.3
パッケージ入った。
おお、なんか最初の画面が黒いままだけど、ちょっとfb動いたような感じ。
LEDチカチカの頻度も下がった。
残りの微調整をやる。
$ rm /usr/lib/egl/egl_gallium.so
st.soはなかった。
/usr/lib/systemd/lipstick.serviceとドキュメントにはあるが、これはPath間違い。
$ vi /usr/lib/systemd/user/lipstick.service
末尾に追記したらいいようだ。
Environment=QT_DEFAULT_RUNTIME_SYSTEM=
$ vi /var/lib/environment/nemo/50-jolla-ui
これも末尾に追記。
$ rm /etc/sysctl.d/vm.conf
$ rm /etc/X11/xorg.conf.d/x86-vm.conf
$ vi /etc/X11/xorg.conf.d/xorg.conf
んで、何を書く?
何も書かないで再起動してみた。
なんかマウスポインタとスプラッシュのカジキマグロが出るぞ。
そこから先は何もおきない。
なんか、放置してたら、×カーソル出て、カジキが左に出ることあったな。
その後すぐにブラックアウト。
X裏で頑張っているのかも。
またしばらく放置したら、カジキと×がまた出てきた。
×はタッチに追随するので、デバイス認識はちゃんとしているようだ。
もう一息かな。
さらに放置したらまた出てきた。
カジキの絵は、カーソルが矢印で、縦ドラッグするとスクロールして時刻などが出る。
右の部分では、カーソルが×になるので、こっちはXの領域。
つまり描画領域がうまく認識できていない。
放置したら、またブラックアウトした。
サイズあわせてみる。
$ /usr/lib/qt4/imports/Sailfish/Silica/ApplicationWindow.qml
width: 1024
height: 600
全画面来た!
なんか、効果音も出ているな。
が、ブラックアウトしちゃった。
ん、LCD切っているだけかな?
電源ボタン一回軽く押すと必ず出てくるってことは、LCDスリープしてるってことか。
なんか、1分に一回くらい、自然に起きてまた寝る。
なんだ?
あとは、xorg.confか。
$ Xorg -configureしてみる。
サーバーはすでにアクティブだからできないか。
たぶん、こんなんでいいと思うけど、コピペできないんで入力がつらい。
Section "Monitor" Identifier "Default Monitor" HorizSync 30-100 VertRefresh 20-160 EndSection Section "Screen" Identifier "Default Screen" Monitor "Default Monitor" DefaultDepth 24 SubSection "Display" Depth 24 EndSubsection EndSection Section "Device" Identifier "Videocard0" Driver "intel" Option "AccelMethod" "sna" EndSection Section "Module" Load "glx" Load "dri" EndSection Section "DRI" Mode 0666 EndSection
ローテーションの例。試してない。
https://wiki.merproject.org/wiki/Sailfish/Exopc
$ gconftool-2 --set /desktop/jolla/components/screen_rotation_angle --type int 90
nemoでログインしているときだけか。