コンピュータを楽しもう!!

今、自分が面白くていろいろやってみたことを書き綴りたいと思います。連絡先はtarosa.yでgmail.comです。

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の場合を読めば大丈夫です。

BusyBoxのインストール

root化ができるようになったらBusyBoxをインストールします。いろいろな作業を行うための必須アイテムです。Androidマーケットから普通にインストールできます。

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.JPAndroid 2.3 (Gingerbread) for SHARP IS01です。URLはこちら
ここの最新版をダウンロードしました。

SDメモリカードに必要なファイルを全て入れる

インストールを簡単にするために、必要なファイルをSDメモリカードに全て放り込むことにしました。
SDメモリカードにgbinstallというフォルダを作り、そこに全て入れました。
ファイルは、Android 2.3 (Gingerbread) for SHARP IS01解凍して出てきたappフォルダ以下全部、systemフォルダ以下全部とカーネルイメージ(GBkernel.img)とbusyboxbusyboxは要らないと思うのですが、一応。
それと、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

以上です。
最後に、システムのバックアップはお忘れなく。