本ページでは、Sharp 製の NetWalker に android 4.0.3 (ICS: Icecream Sandwich) を
移植する方法をまとめます。
android 2.x のインストール法は左のナビゲーションからたどって下さい。
ベースとしては androidzaurus さんの
Android on NetWalker (1.6 の移植)
および
sola さんのブログ (主に2011年11,12月のエントリ)
を参考にさせて頂いております。
有益な情報を公開してくださっている androidzaurus さんと sola さんに感謝致します。
なお、repo のインストールなど、android のビルド環境の構築についての解説は省略しますので、
他のサイトを御参考ください。
なお、ICS のビルドには JDK 1.6 と 64bit OS が必要ですので注意して下さい。
更新履歴
2012.1.6: 公開
Android をソースからビルドできる方は「1. Android ソースのダウンロード」から御覧下さい。
とにかく試してみたいと言う方は「7. NetWalker のセットアップ」から御覧下さい。
1. Android ソースのダウンロード
Android のビルドは NetWalker では行えませんので、Ubuntu などがインストールされた PC が別途必要になります。
まず、ビルド用PCでソースのダウンロード先を決めます。以下は環境に応じて読みかえてください。
$ export ANDROID_ROOT=/home/kanamaru/ics-netwalker
次に、ソースコードをダウンロードします。
$ mkdir -p $ANDROID_ROOT
$ cd $ANDROID_ROOT
$ repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.3_r1.1
$ repo sync -j8
2. kernel のダウンロードと展開
$ cd $ANDROID_ROOT
$ 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_ROOT ディレクトリにダウンロードします。
$ cd $ANDROID_ROOT
$ 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_ROOT
$ wget http://brain.cc.kogakuin.ac.jp/research/files/ics/device_tk-netwalker-ics4.0.3-20120102.tgz
$ tar zxf device_tk-netwalker-ics4.0.3-20120102.tgz
$ $ANDROID_ROOT/device/tk/netwalker/patch/tk_patch.sh
5. カーネルのビルド
$ cd $ANDROID_ROOT/jaunty-arm
$ export ARCH=arm
$ export CROSS_COMPILE=$ANDROID_ROOT/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-
$ export PATH=$ANDROID_ROOT/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin:$PATH
$ make netwalker_android_defconfig
$ make zImage modules
$ANDROID_ROOT/jaunty-arm/arch/arm/boot/zImage が必要なファイルになります。
ビルド済みのものをテスト用に
こちらに用意しました。
6. android のビルド
$ cd $ANDROID_ROOT/
$ export ARCH=arm
$ export CROSS_COMPILE=$ANDROID_ROOT/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-
$ export PATH=$PATH:$ANDROID_ROOT/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin
$ source build/envsetup.sh
$ lunch full_netwalker-eng
$ make -j8
ビルドが完了したら、
$ $ANDROID_ROOT/device/tk/netwalker/image/netwalker-image.sh
$ANDROID_ROOT/device/tk/netwalker/image/ics というディレクトリができます。
これが android のシステムのディレクトリとなります。
ビルド済みのものをテスト用に
こちらに用意しました。
7. NetWalker のセットアップ
ここから先は、上でビルドした kernel (zImage) とAndroid システムが必要になります。
ビルドせずに試してみたいと言う方は、
こちらの zImageと
こちらの ics4.0.3-20120102.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_ROOT/jaunty-arm/arch/arm/boot/zImage) を
SD カードの ext3 領域の boot ディレクトリにコピーします。
(Gingerbread で使った kernel では起動しません)
wget http://brain.cc.kogakuin.ac.jp/research/files/ics/zImage
sudo cp zImage /media/rootfs/boot/
- 上でビルドしたandroid システム領域を例えば
SD カードの ext3 領域の android/ics などとコピーします。
圧縮済みのものをダウンロードした方は、展開して配置してください。
android/ics/init というファイルが存在する配置になっていればOKです。
sudo mkdir /media/rootfs/android
wget http://brain.cc.kogakuin.ac.jp/research/files/ics/ics4.0.3-20120102.tgz
sudo tar zxf ics4.0.3-20120102.tgz -C /media/rootfs/android
- SD カードの ext3 領域にて etc/rc.local を編集し、
「exit 0 」の手前に
/usr/sbin/chroot /android/ics /init
と書きます。
例えば
sudo gedit /media/rootfs/etc/rc.local
- 以上の準備が整ったら、SDカードをアンマウントします。
sudo umount /media/*
- そしてUbuntuをシャットダウンしますが、Ubuntu シャットダウン時は、毎回このアンマウント処理を行った方が無難です。
sudo poweroff
- 起動時は、
マウスボタンを2つと電源ボタンを長押しします。
主な仕様を以下にまとめます。
- 無線LAN
利用可能ですが、やや電波の掴みが悪い気がします。利用上の注意を以下にまとめます。
まずWifiをONにします。ネットワークが見つからなかったら、「ネットワーク追加 (add network)」により手動で追加してしまった方がはやいです。
その後、WifiのON/OFFを繰り返すとつながるようになります。なお、一度WifiにつないだあとAndroidを再起動すると、確実に起動時からネットワークをつかんでいるようです。
- Bluetooth
Buffalo製 BSHSBD02 のみ動作を確認しました。
Android SDK に含まれる BluetoothChatで動作を確認。Wiiリモコンは有効にしていません。
なお、バスパワータイプのUSBハブを介すと、電力が足りないためか、認識しませんでした。
- USBカメラ
kernel は Video4Linux を有効にしておりますが、framework を対応させていないため、標準カメラアプリは動作しません。
代替として、ビルド済みバイナリにはkernel から直接カメラデータを取得する自作アプリ TKCamera2WebCamss.apk を同梱してあります。
これはUSBカメラを2個まで同時接続できるアプリです。画面左右スワイプによりカメラ表示位置が入れ換わり、画面タッチにより赤青メガネによる立体視モードに移行します。
Logicool Webcam C210 で動作確認しました。
- USB-シリアル変換デバイス
FTDI のデバイスと PL2302 のデバイスに加え、双葉電子工業製 RSC-U485 を有効にしました。
- サウンド
利用できません。
- その他特徴
- 電源ボタンでスリープに入りますが、画面が点灯したままなので一見ハングアップしたように見えますので注意して下さい。
- 常時点灯モードを可能にしています。
- コンソールはありません(不便)
- 電源は、電源ボタン長押しで切れます。
- その他問題点
- LiveWallpaper が動いていません。
- バッテリーは常に 100% を示します。
- CPU の周波数制御を on demand にすると、最低周波数に貼り付くように見えるので、現在は常に MAX
- コメント
- 初回の起動直後はバックグラウンド処理が行われているため重いです。
最後に、参考にさせて頂いたページをまとめます。皆様に感謝致します。