今日の作業内容 なかなかうまくいかないね

カーネルのビルド
$ cd kernel
$ make i386_defconfig
$ make menuconfig

Android用の設定
General setup --->
 Enable the Anonymous Shared Memory Subsystem
Device Drivers --->
  [*] Misc devices --->
      [ ] Android pmem allocator ※チェックをはずさないとコンパイルエラーとなる
    <*> Binder IPC Driver
    <*> Low Memory Killer
      [*] High-speed in-kernel logging driver
    <*> Real Time Clock --->
       [ ] Android alarm driver ※チェックをはずさないとコンパイルエラーとなる

※以下はVMware用の設定
Device Drivers --->
    [*] Fusion MPT device support --->
       <*> Fusion MPT ScsiHost drivers for SPI
    [*] Network device support --->

    Graphics support --->
     <*> Support for frame buffer devices --->
        [*] VESA VGA graphics support

※以下の指定は不明なため割愛

  • Network - Device - EISA, VLB, PCI
  • Console display driver
    • Framebuffer console

$ make bzImage && make modules

→ビルド完了後以下を実施
$ sudo make modules_install
$ mkinitramfs -o ~/initrd.img 2.6.27-android ※バージョン名を指定

※mkinitramfs→起動イメージ作成
 作成ファイル名 作成ファイルバージョンを指定する。

VMWareの仮想ディスクを作成 
$ sudo apt-get install qemu
$ qemu-img create -f vmdk android.img 4G

→作成したandroid.imgファイルをWindowsへ移動し、Ubuntu.vmxに以下を追記

scsi1.present = "TRUE"
scsi1.virtualDev = "lsilogic"
scsi1:0.present = "TRUE"
scsi1:0.fileName = "android.img"
scsi1:0.redo = ""

※scsi0:0の記述の跡に追記する。

VM再起動
$ sudo fdisk /dev/sdb

※以下の手順で仮想ディスクをフォーマットする。

バイスは正常な DOS 領域テーブルも、Sun, SGI や OSF ディスクラベルも
含んでいません
Building a new DOS disklabel with disk identifier 0xa5fa413e.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.
警告: 領域テーブル 4 の不正なフラグ 0x0000 は w(書き込み)によって
正常になります
コマンド (m でヘルプ): n改行
コマンドアクション
e 拡張
p 基本領域 (1-4)
p改行
領域番号 (1-4): 1改行
最初 シリンダ (1-522, default 1): 改行
Using default value 1
終点 シリンダ または +サイズ または +サイズM または +サイズK (1-522, default 522): 改行
Using default value 522
コマンド (m でヘルプ): a改行
領域番号 (1-4): 1改行
コマンド (m でヘルプ): p改行
Page 5
Disk /dev/sdb: 4294 MB, 4294967296 bytes
255 heads, 63 sectors/track, 522 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes
Disk identifier: 0xa5fa413e
バイス Boot Start End Blocks Id System
/dev/sdb1 * 1 522 4192933+ 83 Linux
コマンド (m でヘルプ): w改行
領域テーブルは交換されました!
ioctl() を呼び出して領域テーブルを再読込みします。
ディスクを同期させます。

$ sudo mkfs.ext3 /dev/sdb1
$ sudo mount /dev/sdb1 /mnt

grubをインストールする
$ sudo grub-install --root-directory=/mnt /dev/sdb

→UUIDの確認
$ sudo vol_id /dev/sdb1 | grep "UUID="
ID_FS_UUID=<ディスクのUUID>→b02b1cf3-3eb5-4fe8-8435-4588072da6fc

GRUBの設定ファイルmenu.lstにブートの設定

$ sudo vi /mnt/boot/grub/menu.lst
※以下を設定
default 0
timeout 3
title Android
root (hd0,0)
kernel /boot/bzImage root=UUID=b02b1cf3-3eb5-4fe8-8435-4588072da6fc rw vga=788 init=/init androidboot.hardware=eee_701
initrd /boot/initrd.img

root→ルートファイルシステムのデバイス
   UUIDを使用しない場合はroot=/dev/sda1とすればよい
vga=788→ディスプレイドライバとして、vesafbフレームバッファドライバを使用し、SVGA(800x600)の解像度を使用する設定
    VGAなら785、XGAなら791を指定する。
init=/init→カーネル起動後の初期化コマンドとして、Androidの初期化コマンド/initを使用するように設定
androidboot.hardware=eee_701→設定したハードウェア名の初期化スクリプトが実行される。この場合、/init.eee_701.rcが実行される。

→ビルドしたカーネルとRAMディスクイメージをコピー
$ sudo cp ~/android/cupcake/kernel/arch/x86/boot/bzImage ~/initrd.img /mnt/boot

Androidのシステムをコピーする。
$ cd cupcake/out/target/product/eee_701/
$ sudo su
# cp -a root/* /mnt
# cp -a system/* /mnt/system
# cp -a data/* /mnt/data
# cd /mnt/system/usr
# chmod -R 777 keychars
# chmod -R 777 keylayout

※dataディレクトリの中にファイルが何もできていなかった。
→判断がつかないが無視して継続

→/mnt/init.rcを、環境にあわせて書き換える。

# mount rootfs rootfs / ro remount
# mount ext3 /dev/block/sda6 /system
# mount ext3 /dev/block/sda6 /system ro remount
# mount ext3 /dev/block/sda8 /data
# mount ext3 /dev/block/sda5 /cache

※VMplayerで起動したが、androidは起動せず

VMwareで簡単にアンドロイドを起動させる方法
※以下より「android-x86-1.6-r2.iso」を取得
http://www.android-x86.org/download
→VMplayerを起動し、isoファイルを指定
→liveCDよりandroidを起動可