IS01(BB10)のGingerBread(Android v2.3)化
IS01を手に入れたので、v1.6とv2.3のデュアルブート化というのをやってみました。自分の防備録としてブログに書いておこうと思います。
詳細な情報はここ、is01next @ wiki (*atmyownrisk) BB10向けページに詳しく書いてあります。
root化
手に入ったIS01は01.00.10でした。BB10と表現するようです。先ずはrootを取得しないといけないので、色々とググッてみました。先人達のすばらしい努力のおかげで、特に苦労することも無くroot化できました。
先ず、root化に必要なソフトは2つ
- MobileHackerzさんの au IS01 rooter の test版
- 旧バージョンのSuperuser 私はVer. 2.3.6.1をダウンロードしました。どこからダウンロードしたかは忘れてしまいました。
au IS01 rooterのテスト版は、MobileHackerzさんのサイトのau IS01 rooter の一番下にあるtestをクリックしてダウンロードできます。
is01next @ wiki (*atmyownrisk)のサイトにすごく詳しく書いています。ここのサイトの※01.00.10の場合を読めば大丈夫です。
GingerBread(v2.3)のインストール準備
adb shellでログインしてproc/mtdを見てください。
$ cat /proc/mtd cat /proc/mtd dev: size erasesize name mtd0: 00b00000 00020000 "boot" mtd1: 00500000 00020000 "cache" mtd2: 00b00000 00020000 "recovery" mtd3: 00180000 00020000 "splash" mtd4: 00b40000 00020000 "ipl" mtd5: 10000000 00020000 "system" mtd6: 00300000 00020000 "log" mtd7: 06420000 00020000 "userdata" $
BB10はシステムやリカバリー領域を書き換えることができるパーティションがマウントされていません。それらをマウントする必要があります。マウントできると、下記のように8,9,10が追加されます。
$ cat /proc/mtd cat /proc/mtd dev: size erasesize name mtd0: 00b00000 00020000 "boot" mtd1: 00500000 00020000 "cache" mtd2: 00b00000 00020000 "recovery" mtd3: 00180000 00020000 "splash" mtd4: 00b40000 00020000 "ipl" mtd5: 10000000 00020000 "system" mtd6: 00300000 00020000 "log" mtd7: 06420000 00020000 "userdata" mtd8: 00b00000 00020000 "boot_wr" mtd9: 00b00000 00020000 "recovery_wr" mtd10: 10000000 00020000 "system_rw" $
これらを追加するための便利なツールも先人の方々が用意してくれていました。先ずは下の2つ
- prepare
- modules_enabler_plus
BB10ではカーネルにモジュールを追加するコマンドのinsmodが使えなくしてあります。そこで、これらを使えるようにするツールが上の2つです。入手先は、is01next @ wiki (*atmyownrisk) BB10向けページに詳しく書いてあります。
これらを順番に実行すれば、insmodが使えるようになります。
後は読み書きできるパーティションをマウントする必要があるのですが、これも先人の方々が用意してくれていました。下記のモジュールです。
- msm_nand_ex.ko
入手方法は、is01next @ wiki (*atmyownrisk) BB10向けページに詳しく書いてあります。
GingerBread(v2.3)のイメージを入手する
GingerBreadをリカバリー領域からブートできるようにしてみたいと思うので、イメージファイルを入手します。入手先はSourceForge.JPのAndroid 2.3 (Gingerbread) for SHARP IS01です。URLはこちら
ここの最新版をダウンロードしました。
SDメモリカードに必要なファイルを全て入れる
インストールを簡単にするために、必要なファイルをSDメモリカードに全て放り込むことにしました。
SDメモリカードにgbinstallというフォルダを作り、そこに全て入れました。
ファイルは、Android 2.3 (Gingerbread) for SHARP IS01解凍して出てきたappフォルダ以下全部、systemフォルダ以下全部とカーネルイメージ(GBkernel.img)とbusybox、busyboxは要らないと思うのですが、一応。
それと、prepare、modules_enabler_plus、msm_nand_ex.koの3つのツールです。
$ ls -l /sdcard/gbinstall ls -l /sdcard/gbinstall d---rwxr-x system sdcard_rw 2011-12-29 08:46 app ----rwxr-x system sdcard_rw 6160384 2011-03-17 08:21 GBkernel.img ----rwxr-x system sdcard_rw 1062992 2011-01-13 11:26 busybox ----rwxr-x system sdcard_rw 69632 2010-12-29 23:37 prepare ----rwxr-x system sdcard_rw 75312 2010-12-29 23:28 modules_enabler_plus ----rwxr-x system sdcard_rw 163139 2010-12-01 14:19 msm_nand_ex.ko d---rwxr-x system sdcard_rw 2011-12-29 08:46 system $
いよいよGingerBreadのインストール
これで全ての準備ができました。それではSDメモリカードを入れてIS01の電源を入れます。BB10は電源を切るとroot化が無効になるので、再度、au IS01 rooter(test版)を使ってroot化可能にします。
PCに繋げてadb shellでIS01に接続します。suコマンドでrootになります。
$ su
su
#
下記のコマンドを順番に実行していくことになります。後にもう少し解説を入れます。
# mkdir /data/android # chown system /data/android # mkdir /data/android/gingerbread # chown system /data/android/gingerbread # mkdir /data/android/gingerbread/tmp # cp -Rp /sdcard/gbinstall/prepare /data/android/gingerbread/tmp/prepare # cp -Rp /sdcard/gbinstall/modules_enabler_plus /data/android/gingerbread/tmp/modules_enabler_plus # cp -Rp /sdcard/gbinstall/msm_nand_ex.ko /data/android/gingerbread/tmp/msm_nand_ex.ko # chmod 755 /data/android/gingerbread/tmp/* # /data/android/gingerbread/tmp/prepare # /data/android/gingerbread/tmp/modules_enabler_plus # mkdir /data/android/gingerbread/system # cp -Rp /system/lib /data/android/gingerbread/system/lib # cp -Rp /system/bin /data/android/gingerbread/system/bin # cp -Rp /system/etc /data/android/gingerbread/system/etc # cp -Rp /system/usr /data/android/gingerbread/system/usr # mkdir /data/android/gingerbread/data # cp -Rp /data/misc /data/android/gingerbread/data # cp -Rp /sdcard/gbinstall/system /data/android/gingerbread # cp -Rp /sdcard/gbinstall/app/gapps-gb-20110120-signed/system /data/android/gingerbread # cp -Rp /sdcard/gbinstall/app/app /data/android/gingerbread/system # cp -Rp /sdcard/gbinstall/busybox /data/android/gingerbread/system/bin/busybox # chmod 755 /data/android/gingerbread/system/bin/* # /data/android/gingerbread/system/bin/busybox chmod -R 755 /data/android/gingerbread/system # busybox insmod /data/android/gingerbread/tmp/msm_nand_ex.ko # toolbox setprop persist.sys.timezone Asia/Tokyo # cp -Rp /sdcard/gbinstall/GBkernel.img /data/recovery/GBkernel.img # flash_image recovery_wr /data/recovery/GBkernel.img # reboot recovery
簡単解説
/data/android/gingerbreadフォルダを作って、オーナをsystemにします。
# mkdir /data/android # chown system /data/android # mkdir /data/android/gingerbread # chown system /data/android/gingerbread
/data/android/gingerbread/tmpフォルダを作って、そこに、prepare、modules_enabler_plus、msm_nand_ex.koをコピーし、実行権限を付けます。
# mkdir /data/android/gingerbread/tmp # cp -Rp /sdcard/gbinstall/prepare /data/android/gingerbread/tmp/prepare # cp -Rp /sdcard/gbinstall/modules_enabler_plus /data/android/gingerbread/tmp/modules_enabler_plus # cp -Rp /sdcard/gbinstall/msm_nand_ex.ko /data/android/gingerbread/tmp/msm_nand_ex.ko # chmod 755 /data/android/gingerbread/tmp/*
insmodが使えるように2つのツールを実行します。
# /data/android/gingerbread/tmp/prepare # /data/android/gingerbread/tmp/modules_enabler_plus
/data/android/gingerbread/systemフォルダを作って、現状のlib,bin,etc,usrフォルダをコピーします。
# mkdir /data/android/gingerbread/system # cp -Rp /system/lib /data/android/gingerbread/system/lib # cp -Rp /system/bin /data/android/gingerbread/system/bin # cp -Rp /system/etc /data/android/gingerbread/system/etc # cp -Rp /system/usr /data/android/gingerbread/system/usr
/data/android/gingerbread/dataフォルダを作って、現状のdata/miscをコピーします。v1.6のmiscが引き継がれるので、v1.6の方でwifiなどを先に設定しておいた方がいいと思います。
# mkdir /data/android/gingerbread/data # cp -Rp /data/misc /data/android/gingerbread/data
/data/android/gingerbreadフォルダ下に作ったsystemやappフォルダにGingerBreadで必要な部分を追加コピーします。
# cp -Rp /sdcard/gbinstall/system /data/android/gingerbread # cp -Rp /sdcard/gbinstall/app/gapps-gb-20110120-signed/system /data/android/gingerbread # cp -Rp /sdcard/gbinstall/app/app /data/android/gingerbread/system
BusyBoxを/data/android/gingerbread/system/binにコピーして、/data/android/gingerbread/system/bin以下に実行権限を与えた後、/data/android/gingerbread/system以下の実行権限を755に一気に変更します。
# cp -Rp /sdcard/gbinstall/busybox /data/android/gingerbread/system/bin/busybox # chmod 755 /data/android/gingerbread/system/bin/* # /data/android/gingerbread/system/bin/busybox chmod -R 755 /data/android/gingerbread/system
insmodを用いて、msm_nand_ex.koモジュールを組み込みます。これで、recovery_wrに書き込むことが出来るようになります。
# busybox insmod /data/android/gingerbread/tmp/msm_nand_ex.ko
setpropする理由が良くわかっていないですが、setpropでtimezoneをAsia/Tokyoとして、recovery_wrにGBkernel.imgを書き込みます。
# toolbox setprop persist.sys.timezone Asia/Tokyo # cp -Rp /sdcard/gbinstall/GBkernel.img /data/recovery/GBkernel.img # flash_image recovery_wr /data/recovery/GBkernel.img
起動のために、reboot recoveryをします。
# reboot recovery