2012年8月8日水曜日

ThinkPad X40にAndroid x86 4.0を入れてみたりなど その1



Android x86とは、韓国人開発者が開発しているPCで動く(予定の)Androidである
これまで私は何回か使用(試用)したことがあるが、画面の描画がのろかったりWifiに繋がらなかったりと、あくまで試用で本格使用できるものではなかった
しかし、いままでAsusのネットブックやら聞いたことのないメーカーのタブレットやらと私と馴染みの低いハードウェア向けにビルドされていたイメージを動作しないこと前提でThinkPad X40に突っ込んでいたが、4.0 - RC2では万を時してThinkPad向けイメージが公開された。他のビルドとどう内容が違うか知らないが非常にありがたい

ということで早速突っ込んでみた
(この記事の公開時期からすれば”早速”ではないが実際に突っ込んだ時期は公開のすぐ後だった、という読者にとってはどうでもいい情報を補足しておく)

intel 8xxというグラフィックプロセッサで悪名高いこのX40
ThinkPad向けにビルドされたAndroid x86はそのままでは動かない
普通に起動しても画面が真っ暗なまま時間が経過して行くだけ
そこで定番のWorkAround、起動時にコマンドラインオプションにnomodesetを追記で対応した
nomodesetはkernel mode settingとやらを無効化するオプションである。kernel mode settingがなんであるかはよく把握していないが。
具体的な方法は、BIOSがISOのブートローダー(syslinux)を読み込んでから、ブートするエントリの選択画面にて一番上のエントリーを選択した上でTabキーを押下し、エントリーの中身を表示させる。"linux"の行の末端に移動し、
nomodeset
を追記する。Ctrl-Xを押下しエントリー選択画面に戻り、先ほど編集したエントリーを選択しEnterを押下。するとAndroid x86が起動してくる。

さて、起動時にコマンドプロンプトが表示されて、それから数秒後にAndroidのブートアニメーションが始まるのだが、実はブートアニメーションが始まり、セットアップウィザードに行き着いた後でも、キーボードで何か入力すると、画面の後ろで動いているコマンドプロンプトにそのまま入力されてしまい、Enterを押すとそれが実行されてしまう。しかもその様子は画面にチラチラ表示されるがほとんど見えない。たとえば何かでrebootと入力しEnterしてしまうと、即再起動されてしまう。このようなバグは初期のAndroidでもあったという記事を読んだことがあるが、これと同じ理由だったりするんだろうか。
あと、この状態でカーソルキーを押下するとビープ音がけたたましく鳴り響き非常にうるさい。
これを回避するためには、エントリーを起動して直後、コマンドプロンプトが見えてるうちに
exit
と入力して、その後何が入力されても問題ないようにしておく必要がある。



さて、セットアップウィザードに行き着いたら、マウスを使って適当に設定し進めてやるとめでたくホーム画面に行き着く。さて試しにブラウザでネットでもしてみるか、とおもったら
……Wifiの設定がうまくいかん
Wifiをオンにするとちゃんと自宅のAPが見えるので、パスワードを入力して、と。よしこれで繋がるはず………あれ?
…1時間に及ぶ時間の消費(繰り返し試行、logcat、/data/misc/wifiを弄る)の後、どうやら入力したパスワードなどの設定を設定ファイル(/data/misc/wifi/wpa_supplicant.conf)に保存できていないのが原因らしい
それじゃあマニュアルで設定ファイルに追記してやろう。これぞLinuxの真髄(ぉ
設定ファイルにてけとーに自宅APの設定を追加後、Wifiを無効化して再度有効化すると、
お、うまくいった
追記した設定はこんな感じ
network={
ssid="hogehogeAP"
proto=fugafuga
key_mgmt=fugafuga
psk="hogefuga"
}
root済みのAndroid端末持ってる人はそっからこの部分だけコピペするのが簡単
これでブラウザが使えるようになった
うん、なかなかいい感じ


…続く?
参考にしたページ
How to boot the Android-x86 Live-CD when you have problems with your graphiccard

[8/10追記]
…やってしまった
何てバカなことを…
疲れてたんだな…
該当部分修正
…まあ気付いただけまし?遅い?