2010/03/18

[Nokia N900] MerをmicroSDから起動/LXDEをセットアップ

松本素生ソロ活動かよ!

なんだか危ういMaemo5/Fremantle環境のバックアップとして、Mer(0.17testing11)をmicroSDにインストールしてみた記録です。
とりあえずLXDEおよび拙作clickhack900のセットアップまで。
お決まりの注意書きは一番下です。

必要なもの
  • N900
  • 空のmicroSD(2GB以上)
  • 転んでも泣かない根性
microSDのフォーマットなどはN900単体でも可能ですが、Linuxの入ったPCがあると便利かもです。

下準備
  • microSDにext3フォーマットされた2GB以上のパーティションを作る
ココらへんはサクッと書き飛ばしますが、参考までに、easy-debianでgpartedを使うなら、
$sudo apt-get install gparted dosfstools
$sudo gpartedbin
"Memeory card format unsupported"などと出ますが問題なくフォーマットできます。

松本素生ソロ活動かよ!
1GBはどこへ消えた?/スペンサー・ジョンンソ
今回はmer-armel-n900-rootfs-v0.17testing11.tar.gzを/home/user/MyDocs/にダウンロードしました。
  • qole氏のrepositoryからfanoush氏製bootmenuをインストールする
  1. AppMgrに登録してある人はAppMgrでbootmenuと検索、インストール
  2. してない人はここから直接.debをダウンロードの上、root権限で
    dpkg -i bootmenu_1.6_armel.deb
ランチャーから"Install Bootmenu"。
キーボード全開の状態で起動するとブートメニューが出ます。
  • gnuなtarをダウンロードする
先のアーカイブをN900で展開するよ。って人には必要です。
ここからダウンロードしたdebを
dpkg-deb -X tar_1.14-2.1osso_armel.deb /opt/tmptar
として展開しておきます。

インストール
  • merのrootfsを展開する
さきほど作ったパーティションをマウントします。
(少なくともext3な第二プライマリパーティションは自動でマウントしてくれない様です)
mkdir /media/mmc2
mount -t ext3 -o noatime /dev/mmcblk1p2 /media/mmc2
merのrootfsを展開します。
cd /media/mmc2
/opt/tmptar/usr/bin/tar --numeric-owner -pzxf /home/user/MyDocs/mer-armel-n900-rootfs-v0.17testing11.tar.gz
  • firmwareファイルをコピーする
完全にオープン。とは言えないN900の、無線LAN等各種ハードウェアをMer上で動かすためにfirmwareファイルをコピーします。
cp -Ra /lib/firmware/* lib/firmware/
どなたか俺はクローズドソースは好かん!という方がcatでゴリゴリとデバイスドライバなり書いていただけると皆ハッピーでラヴアンドピースになれるかと思います。
  • bootmenu用のコンフィグファイルを作成する
bootmenuにmerを登録します。
/etc/bootmenu.d/以下に以下のような内容で拡張子.item(例:merp2.item)のファイルを作成します。
今回は2番目のパーティションにインストールしたので、
1行目のITEM_NAMEには"partition2"、3行目のITEM_DEVICEには"p2"という文字列が含まれています。
ITEM_NAME="Mer (external SD, partition 2)"
ITEM_ID="mer"
ITEM_DEVICE="${EXT_CARD}p2"
ITEM_MODULES="mbcache jbd ext3"
ITEM_FSTYPE="ext3"
ITEM_FSOPTIONS="noatime,ro"
耐障害性は落ちてしまいますが、ITEM_FSOPTIONSにdata=writebackと付け加えるとちょっぴり高速かもしれません。
  • いったんMerを起動してユーザー登録などを済ませる
ひとまずN900を再起動し、Merを立ち上げます。
起動直後バイブレーションが作動しNokiaのロゴが出ますが、このタイミングでキーボードが開いていればBootmenuに入れます。
方向キーとReturnキーで先ほど登録したMerを選択して起動します。
ただし、バックライトオフの状態でMerを起動するとヒドい目に会うので、ツいていなくて点いていない場合はShutdownを選択。
キャリブレーションに始まるユーザー登録が済んだら、重いhildon-desktop*1を操作してxtermを起動し、
sudo reboot
と入力してCtrl+m。パスワードは先のウィザードで入力したモノです。
今度はキーボードを閉じた状態で起動するか、BootmenuでFlashを選ぶかしてMaemoを起動します。

*1
ハードウェアアクセラレーションを効かせたMerの動画なんかもあるのできっともうすぐサクサクしてくれるはず。
  • LXDEをインストール
まずは先程と同様にしてマウント。
mount -t ext3 -o noatime /dev/mmcblk1p2 /media/mmc2
現状デフォルトのhildon-desktopはごらんの有り様なので、代わりにネットブック用軽量WMとして名を馳せたLXDEを使います。
まずeasy-debianに同梱のシェルスクリプト/sbin/debianを用いてmer環境にchrootします。
(多分chrootコマンド単体でも必要十分です。)
debian(もしくはchroot) /media/mmc2
なにはともあれupdateし、続けてLXDEをインストールします。
apt-get update
apt-get install lxde lxlauncher
一方グラフィカルなログイン画面なんていらねえ族は、代わりに
apt-get --no-install-recommends install lxde libgtkstylus lxlauncher
su user
echo "exec startlxde" >> -/.xinitrc
chmod +x -/.xinitrc
終わったらexitもしくはCtrl+dでMaemoに戻ります。
  • LXDEでNetworkManager(nm-applet)のアイコンを出す
デフォルトでは、無線LAN接続をGUIで設定可能にしてくれる便利アプリ
NetworkManagerがLXDEのタスクバーに出ません。
そこで/media/mmc2/etc/xdg/autostart/nm-applet.desktop内OnlyShowInの値を
OnlyShowIn=GNOME;XFCE;LXDE
と書き換えるか
#OnlyShowIn=GNOME;XFCE;
とコメントアウトすれば、この問題を解決できます。
  • キーマップを入れ換える
Maemo環境のキーマップをMerに持っていきます。
cd /media/mmc2/usr/share/X11/
mv xkb xkb.old
cp -Ra /usr/share/X11/xkb .
しかしこの方法では”Shift+Fn+”という修飾が有効にならず、
またFn+方向キーのコンビネーションが無視されたり、GDMでログインできなかったり(!)するので、さらにXmodmapを利用します。
何処でもいいですが、例えば/media/mmc2/etc/gdm/Init/.Xmodmap.n900といったファイルを作成し、以下の内容を書き込みます。
keycode 36 = KP_Enter
keycode 74 = Tab
keycode 73 = Escape
ついでに/media/mmc2/etc/gdm/Init/Defaultの冒頭9行目あたり(つまりgdm_which()の直前ですね)に
xmodmap /etc/gdm/Init/.Xmodmap.n900
という一文を挿入します。
これで一応F7(-キー)でEscape、F8(+キー)でTabが打てるようになり、GDMからログインが可能になりました。
  • 右クリックを可能にする
拙作のclickhack900で右クリックを可能にする。
というかインストールされたlibgtkstylusによって長押しによる右クリックは実現されているので、正確には”別の方法で”可能にします。
ここからclickhack900.gzをダウンロード後、
mv clickhack900.gz /media/mmc2/usr/local/bin/
gunzip /media/mmc2/usr/local/bin/clickhack900.gz
加えて前出の/media/mmc2/etc/gdm/Init/Defaultの冒頭に
/usr/local/bin/clickhack900 &
と書いておくことで、Fn(青い矢印キー)を押している間 タップが右クリックになります。
もちろんドラッグ*2もできます。
(実際には単に/dev/input/event1の内容を拾って適宜xmodmapを実行するだけのhackと呼ぶのは憚られるシロモノだったりする)

*2
(こんなのセキュリティ的に)ダメ・ゼッタイという方はlibgtkstylusをお使い下さい。
  • 再起動してもう一度Merを立ち上げてみる
以上でインストールは終了です。
再起動してBootmenuからMerを選択し、
松本素生ソロ活動かよ!
こんな画面(GDM)
がでてくれば成功です。
Mer0.17testing11自体が正式リリース前でややバギーだったり、キーマップの問題から目をそらしていたり、バッテリー残量表示がなかったり*3しますが、ひとまず。

*3
これとバックライト調節に関してはdeblet時代の遺産が使えるのかもしれない。

ネタ元
http://mer-project.blogspot.com/2010/01/dual-booting-mer-on-nokia-n900.html

最後になりますが、お決まりの注意書きです。
この記事は、将来的にもっとボケが進行したり、トミー・リー・ジョーンズに記憶を消去されたり、自動車事故で15分ごとに記憶を失う障害を負い恋人の顔も思い出せない状況で進行する怒涛のクライム・サスペンス!な状況に陥ったときの備忘録であり、内容の正当性はまったく保証されません。過度な期待はしないでください。

0 件のコメント:

コメントを投稿