本ページでは、Sharp 製の NetWalker に android 2.3.4 (Gingerbread) を
移植する方法をまとめます。
android 2.2.2 (Froyo) のインストール法は左のナビゲーションからたどって下さい。
ベースとしては androidzaurus さんの
Android on NetWalker (1.6 の移植) や
sola さんによる
BeagleBoard に Froyo をのせる
を参考にさせて頂いております。
有益な情報を公開してくださっている androidzaurus さんと sola さんに感謝致します。
なお、repo のインストールなど、android のビルド環境の構築についての解説は省略しますので、
他のサイトを御参考ください。
なお、Gingerbread のビルドには JDK 1.6 と 64bit OS が必要ですので注意して下さい。
更新履歴
2011.7.29: 公開
Android をソースからビルドできる方は「1. Android ソースのダウンロード」から御覧下さい。
とにかく試してみたいと言う方は「7. NetWalker のセットアップ」から御覧下さい。
1. Android ソースのダウンロード
Android のビルドは NetWalker では行えませんので、Ubuntu などがインストールされた PC が別途必要になります。
まず、ビルド用PCでソースのダウンロード先を決めます。以下は環境に応じて読みかえてください。
$ export ANDROID=/home/kanamaru/gingerbread-netwalker
次に、ソースコードをダウンロードします。
$ mkdir -p $ANDROID
$ cd $ANDROID
$ repo init -u https://android.googlesource.com/platform/manifest -b android-2.3.4_r1
$ repo sync
2. kernel のダウンロードと展開
$ cd $ANDROID
$ wget http://netbook-remix.archive.canonical.com/updates/pool/public/l/linux-fsl-imx51/linux-fsl-imx51_2.6.28-15.50fsl1araneo19.tar.gz
$ tar zxf linux-fsl-imx51_2.6.28-15.50fsl1araneo19.tar.gz
3. androidzaurus さんのパッチのダウンロードと適用
androidzaurus / droidwalker を訪れ、パッチをダウンロードします。
「Downloads」→「Download.tar.gz」とたどり、androidzaurus-droidwalker-61b2290.tar.gz を $ANDROID ディレクトリにダウンロードします。
$ cd $ANDROID
$ tar zxf androidzaurus-droidwalker-61b2290.tar.gz
$ cd jaunty-arm
$ patch -p1 < ../androidzaurus-droidwalker-61b2290/diff-araneo-android-2.6.28.patch
$ patch -p1 < ../androidzaurus-droidwalker-61b2290/disable_double_buffering.patch
$ patch -p1 < ../androidzaurus-droidwalker-61b2290/fbmem_8m.patch
$ patch -p1 < ../androidzaurus-droidwalker-61b2290/build-wifi-defconfig.patch
4. 本ページのパッチのダウンロードと適用
$ cd $ANDROID
$ wget http://brain.cc.kogakuin.ac.jp/research/files/vendor_tk-netwalker-gingerbread2.3.4-20110726.tar.gz
$ tar zxf vendor_tk-netwalker-gingerbread2.3.4-20110726.tar.gz
$ $ANDROID/vendor/tk/patch/tk_patch.sh
5. カーネルのビルド
$ cd $ANDROID/jaunty-arm
$ make ARCH=arm CROSS_COMPILE=../prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi- netwalker_android_defconfig
$ make ARCH=arm CROSS_COMPILE=../prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi- zImage modules
$ANDROID/jaunty-arm/arch/arm/boot/zImage が必要なファイルになります。
ビルド済みのものをテスト用に
こちらに用意しました。
6. android のビルド
$ cd $ANDROID/
$ source build/envsetup.sh
$ lunch netwalker-eng
$ make -j8
ビルドが完了したら、
$ $ANDROID/vendor/tk/netwalker/image/netwalker-image.sh
(パスワードを一度要求されます)
$ANDROID/vendor/tk/netwalker/image/gingerbread というディレクトリができます。
これが android のシステムのディレクトリとなります。
ビルド済みのものをテスト用に
こちらに用意しました。
7. NetWalker のセットアップ
ここから先は、上でビルドした kernel (zImage) とAndroid システムが必要になります。
ビルドせずに試してみたいと言う方は、
こちらの zImageと
こちらの gingerbread2.3.4.tgz を利用して下さい。
NetWalker に gparted をインストールし、SD カードのパーティションを切ります。
gparted のインストールは sudo apt-get install gparted ですが、それが失敗したら、
gparted_0.4.3-0ubuntu1_armel.deb をネット上で探して
dpkg -i gparted_0.4.3-0ubuntu1_armel.deb して下さい。
sudo gparted /dev/mmcblk0
を実行します。パーティションは2つ必要で、
- ext3 領域 (kernel/android システム格納) : 1GB 程度, ラベルを rootfs とする。
- FAT32 (LBA) 領域 (SDカード領域) : 残り, ラベルを media とする
のように設定します。
終わったら、一度SD カードを抜き差ししてマウントします。
そして、下記の手順でインストールしていきます。作業はホームディレクトリなど、読み書き権限のある所で行います。
- http://mit.sharp.co.jp/os.tar.bz2 をダウンロードし、SDカードの ext3 領域に展開します。
wget http://mit.sharp.co.jp/os.tar.bz2
sudo tar xf os.tar.bz2 -C /media/rootfs
- SD カードの ext3 領域の /media/rootfs/etc/udev/rules.d/70-persistent-net.rules を編集し、中身を全てコメントアウトします。
(無線 LAN デバイスを eth0 に固定するためです)
例えばgeditを使います。
sudo gedit /media/rootfs/etc/udev/rules.d/70-persistent-net.rules
- SD カードの ext3 領域の etc/rc2.d/S01upfirm を etc/rc2.d/~S01upfirm とリネームします。
sudo mv /media/rootfs/etc/rc2.d/S01upfirm /media/rootfs/etc/rc2.d/~S01upfirm
- SD カードの ext3 領域の boot/boot.conf を編集し、コンソールのオプションを
console=tty1
に変更します。
例えばgeditを使います。
sudo gedit /media/rootfs/boot/boot.conf
- カーネルイメージ zImage (ビルドした場合は $ANDROID/jaunty-arm/arch/arm/boot/zImage) を
SD カードの ext3 領域の boot ディレクトリにコピーします。
wget http://brain.cc.kogakuin.ac.jp/research/files/zImage
sudo cp zImage /media/rootfs/boot/
- 上でビルドしたandroid システム領域を例えば
SD カードの ext3 領域の android/gingerbread などとコピーします。
圧縮済みのものをダウンロードした方は、展開して配置してください。
android/gingerbread/init というファイルが存在する配置になっていればOKです。
sudo mkdir /media/rootfs/android
wget http://brain.cc.kogakuin.ac.jp/research/files/gingerbread2.3.4.tgz
sudo tar zxf gingerbread2.3.4.tgz -C /media/rootfs/android
- SD カードの ext3 領域にて etc/rc.local を編集し、
「exit 0 」の手前に
/usr/sbin/chroot /android/gingerbread /init
と書きます。
例えば
sudo gedit /media/rootfs/etc/rc.local
- 以上の準備が整ったら、SDカードをアンマウントします。
sudo umount /media/*
- そしてUbuntuをシャットダウンしますが、Ubuntu シャットダウン時は、毎回このアンマウント処理を行った方が無難です。
sudo poweroff
- 起動時は、
マウスボタンを2つと電源ボタンを長押しします。
Sharp のロゴが出る際に、左側に小さな黒い四角が見えていればSDカードからの起動が始まっています。
主な仕様を以下にまとめます。
- 無線LAN
利用可能。
- 有線 LAN
corega CG-FEUSBTXCW (DM9601 ドライバ)、Buffalo LANLUA3-U2-ATX (AX8817X ドライバ) 利用可能。
Wifi がONの場合、eth1 として認識されますので、Android のコンソールで
netcfg eth1 up
netcfg eth1 dhcp
と入力する必要があります。
Ubuntu 上で /media/rootfs/etc/udev/rules.d/70-persistent-net.rules を編集し、
Wifi デバイスを eth0 に、有線LANデバイスを eth1 に固定するよう設定しておくと後が楽です。
- Bluetooth
Buffalo製 BSHSBD02 のみ動作を確認しました。
Android SDK に含まれる BluetoothChat、および Wii リモコンでのカーソル操作に対応。
Wii リモコンを有効にするには、Bluetooth を有効にして Wii リモコンの 1, 2 ボタン同時押しで待ちます。
- USBカメラ
Logicool Webcam C210 で動作確認。解像度は 352x288。
公式カメラアプリでは映像を見るだけで、静止画保存できません。ビデオモードも動作しません。
他社製のカメラでも動くことがありますが、自作カメラアプリを作る場合、Logicool製の物の方がトラブルが少ないです。
自作カメラアプリを作る場合、RGB565 形式でデータが返ってきますので注意して下さい。
- USB-シリアル変換デバイス
FTDI のデバイスと PL2302 のデバイスに加え、双葉電子工業製 RSC-U485 を有効にしました。
- サウンド
利用可能。
スリープ復帰後に stop media → start media しています。
- その他特徴
- 電源ボタンでスリープに入ります。スリープ復帰はやや癖があって、
電源ボタンを押して数秒後に Alt+F7 です。
- F1、F2、F3 キーを、それぞれ MENU、HOME、BACK に割り当てております。
- 機内モードをONにするとやっかいなことになるので、機内モード自体を無効にしています
- 常時点灯モードを可能にしています。
- デフォルトではロックスクリーン画面が小さいですが、ドロワー内にある Spare Parts アプリにて Compatibility Mode をオフにして再起動してください。
- Alt-F1 にて Android のコンソールに、Alt-F2 にて Linux のコンソールに入れます。
Linux モードは、ユーザー root、パスワード なしで入れます。Android に戻るには Alt+F7 です。
- 電源は、電源ボタン長押しで切れます。ただ、この方法では SD カードの umount に問題があるようで、再起動時に文句を言われます。Linux コンソールで poweroff コマンドで電源を切るのが安全のようです。
- その他問題点
- LiveWallpaper が動いていません。
- バッテリーは常に 100% を示します。
- CPU の周波数制御を on demand にすると、最低周波数に貼り付くように見えるので、現在は常に MAX
- コメント
- 初回の起動直後はバックグラウンド処理が行われているため重いです。
- 何らかの方法で ADW Launcher をインストールし、軽い設定をすれば快適になります。
(LAN 経由で adb install するのが正攻法ですが、ADW Launcher の場合は /data/app に apk をコピーするだけでもいけます)
- 何らかの方法で Adobe Flash Player をインストールすると (略)。実際にはパワー不足で動画はきついです。
最後に、参考にさせて頂いたページをまとめます。皆様に感謝致します。