USBブート・メモリーの作成

 USBメモリーをブート可能にするために,パーティションの作成やフォーマットを行います。まず,fdiskを使用してパーティションを作成します。

$ sudo fdisk /dev/sdb Enterキー
コマンド (m でヘルプ): n Enterキー
コマンドアクション
e 拡張
p 基本領域 (1-4)
p Enterキー
領域番号 (1-4): 1 Enterキー
最初 シリンダ (1-1018, default 1): 1 Enterキー
Last シリンダ, +シリンダ数 or +size{K,M,G} (1-1018, default 1018): Enterキー

コマンド (m でヘルプ): w Enterキー

 続いてUSBメモリーをext3ファイル・システム(Linuxで一般的なファイル・システム)でフォーマットします。

$ sudo mkfs.ext3 /dev/sdb1 Enterキー
mke2fs 1.41.3 (12-Oct-2008)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
(以下略)

 以下のようにコマンドを実行して,USBメモリーにルート・ファイル・システムを構築します。ソフトウエア・キーボード機能を提供する「SoftKeyboard.apk」は2009年2月16日現在はまだ不安定なため,削除しています。

$ sudo mount -t ext3 /dev/sdb1 /mnt/usb Enterキー
$ sudo cp -fr out/target/product/eee_701/root/* /mnt/usb/ Enterキー
$ sudo cp -fr out/target/product/eee_701/system/* /mnt/usb/system/ Enterキー
$ sudo mkdir /mnt/usb/boot Enterキー
$ sudo cp kernel/arch/x86/boot/bzImage /mnt/usb/boot/vmlinuz Enterキー
$ sudo chmod 666 /mnt/usb/system/usr/keychars/* Enterキー
$ sudo chmod 666 /mnt/usb/system/usr/keylayout/* Enterキー
$ sudo rm /mnt/usb/system/app/SoftKeyboard.apk Enterキー

 起動スクリプトをUSBブート環境用に設定します。デフォルトではルート(/)とsystemおよびdataで異なるパーティションを使用するようになっていますが,本記事のUSBブート環境では,それらを一つのパーティションにまとめて使用しているので,それに合わせてスクリプトを変更します。以下のようにコマンドを実行してファイルを開き,

$ sudo vi /mnt/usb/init.rc Enterキー

リスト1のように,該当する行の先頭に「#」を付けてコメント・アウトします。

 ここまで来ればあと少しです。続いては,ネットワーク設定を行うために,設定用のシェル・スクリプトを作成します。以下の設定は,イーサネット・インタフェース「eth0」をDHCP経由でIPアドレスを取得し,利用するための設定です。

$ sudo vi /mnt/usb/system/etc/init.usb.sh Enterキー

##以下のようにスクリプトを記述して保存する##

#!/system/bin/sh

netcfg eth0 dhcp
setprop net.dns1 4.2.2.2

 作成したスクリプトに実行権限を付加しておきます。

$ sudo chmod a+x /mnt/usb/system/etc/init.usb.sh Enterキー

 ブート・ローダー「GRUB」の設定ファイルを作成します。注意点として,画面の解像度(vga)の指定は「788」(800x600)にする必要があります。

$ sudo mkdir /mnt/usb/boot/grub Enterキー
$ sudo vi /mnt/usb/boot/grub/menu.lst Enterキー

##以下のように設定を記述して保存する##

default 0
timeout 3
hiddenmenu

title Android
root (hd0,0)
kernel /boot/vmlinuz root=/dev/sdb1 init=/init rw vga=788 rootwait

 最後にGRUBのインストールを行います。間違えてビルド環境(つまりUbuntuパソコン)にインストールしないように注意してください。インストール先はUSBメモリーです。

$ sudo grub-install --root-directory=/mnt/usb --no-floppy /dev/sdb
$ sudo umount /mnt/usb

 以上で,Androidが起動するUSBメモリーが構築できました。では早速遊んでみましょう。作成したUSBメモリーを挿入し,パソコンをUSBメモリーからブートするようにBIOS設定を行い起動します。初回起動はしばらく時間がかかるので起動するまで気長に待ちましょう。もし起動しない場合は,以下の項目を確認してください。

・BIOSの起動優先順位設定

USBメモリーを最上位に設定してください。

・USBメモリーと内蔵ディスクの認識順序

内蔵HDDが認識されていないため,USBメモリーのデバイス名が/dev/sdaと認識されている可能性があります。その場合は,GRUBの設定ファイルで「root=/dev/sdb1」と設定している部分を「root=/dev/sda1」に変更してみてください。

 Androidが正常に起動すると,(写真1)のデスクトップ画面が表示されます。メニューをSettings --> Locale & text --> Select locale --> Japanese で日本語環境に変更することができます(写真2)。もちろんWebブラウザも普通に使用できます(写真3および写真4)。他にも工夫次第で色々できるので,実機で動くAndroidでぜひ遊んでみてください。

写真1●Androidの起動画面
写真1●Androidの起動画面
[画像のクリックで拡大表示]
写真2●日本語環境に変更したところ
写真2●日本語環境に変更したところ
[画像のクリックで拡大表示]
写真3●Webページの表示例1
写真3●Webページの表示例1
[画像のクリックで拡大表示]
写真4●Webページの表示例2
写真4●Webページの表示例2
[画像のクリックで拡大表示]

 なお,今回作成したAndroidのUSBブート・イメージを弊社のWebページからダウンロードできるように手配しました。作業用のUbuntuパソコンを用意できない人でもUSBメモリーさえ用意すればすぐに試すことができますので,ぜひダウンロードして動かしてみてください。

中河 宏文
ミラクル・リナックス
元自動車整備士という異色の経歴を持つ,組み込みLinuxエンジニア。現在は組み込み開発業務に従事するかたわら,休日には趣味の開発に明け暮れる毎日を送る。好きな言葉は「Stay hungry, stay foolish」で,常にそうありたいと日々思いながら生きている。現在,日々のちょっとした技術的ネタをつづったBlog「Foolishな日々」(http://d.hatena.ne.jp/naka-3/)を運営中。