Nov 23, 2010

How to install Android on iPhone (for Japanese)

以下、参考ページの日本語要約...

■システム要件
1. iPhone3G (または、日本では発売されなかった、2G。以下、3Gのみ記載していきます)
firmware version 2.0 ~ 3.1.2。Redsn0w, Blacksn0w, または PwnageToolで脱獄済みであること。
記載バージョン以上の場合は、3.1.2 に戻すこと。

※ 私の場合、(1) BlackRa1nで脱獄 . . BlackRa1nのCydiaが "loading data"のまま落ちて、先の作業を進められなかった。そこで、(2) 再入獄は行わず、そのまま、JailBreakMe.comで二重脱獄 したら、先に進めた。

2. 32-bit Linux system または virtual machine (Ubuntuが良いらしい).
最初はVMWare Serverで試みたが、Virtual Boxを試してみて、軽さ、扱いやすさに驚いた。

3. ビルト済みのイメージとバイナリ。
3Gは こちらで 入手可能。

4. IOS 3.1.2 .ipswファイル (iDevie用)を入手。
iPhone1,2_3.1.2_7D11_Restore.ipsw

5. iPhoneの Marvell WLAN chip のための firmwareを
ここでダウンロード。

ページ右側のドロップダウンメニュー「Choose your platform」で  
Linux 2.6 - Fedra を選択し
Searchボタンを押す。
 
SD-8686-LINUX26-SYSKT-9.70.3.p24-26409.P45-GPLとラベルのついたファイルをダウンロード。
当該ファイルは、SD-8686-LINUX26-SYSKT-9.70.3.p24-26409.P45-GPL.zipという名前で取得される。

-------------------------------------------------------
■操作

1. Linux機で、ホームディレクトリに firmwareというフォルダを作成する。

2. テンポラリフォルダに SD-8686-LINUX26-SYSKT-9.70.3.p24-26409.P45-GPL.zip から
SD-8686-FEDORA26FC6-SYSKT-GPL-9.70.3.p24-26409.P45.tar
を(unzipコマンドで)解凍する。

3. 前述tarから FwImage/helper_sd.bin と FwImage/sd8686.bin を解凍し、ホームディレクトリの firmwareフォルダにコピーする。

4. mv helper_sd.bin sd8686_helper.bin
これがWLANのファームウェアとなるらしい。

5. Linux機で、ホームディレクトリに idoidフォルダを作成する。
先のtarファイルから、utils/dripwn ファイルを解凍し、当該フォルダに配置する。

6. 3.1.2*.ipswファイルを、idroidフォルダにコピーする。

7. Linux機で cd ~/idroid する。

8. iPhone3Gの場合、 ここ で VFDecryptの値を取得する。

9. Linux機の 手順7のフォルダで、以下コマンドを実行する。
./dripwn iPhone1,2_3.1.2_7D11_Restore.ipsw [コピーしたVFDecrypt key値]

10. しばらくすると、command が終了し、
zephyr_main.bin, zephyr_aspeed.bin, と zephyr2.bin が 'idroid' フォルダに出来上がる。
これらを 'firmware' フォルダに移動する。

これでAndroidに必要な全てのファイルがそろったらしい。

11. Cydiaで、OpenSSHをインストールする。

12. OpenSSHをインストールした場合は、rootと、mobileのデフォルトパスワードを変更しておく

このデフォルトパスワード変更は、情報漏えい防止のため重要なので、必ず行うこと。

13. Linux機で、先のtarファイルから 次のファイルを解凍する。
prebuilt/android.img.gz, prebuilt/cache.img, prebuilt/ramdisk.img, prebuilt/system.img, prebuilt/userdata.img, and zImage

14. 前述ファイルを iPhoneの /private/varフォルダにコピーする。
sftpのGUIクライアントでも良いし、scpコマンドを次のように入力しても良いだろう。
scp android.img.gz root@[ip address of iPhone]:/private/var/
scp cache.img root@[ip address of iPhone]:/private/var/
scp ramdisk.img root@[ip address of iPhone]:/private/var/
scp system.img root@[ip address of iPhone]:/private/var/
scp userdata.img root@[ip address of iPhone]:/private/var/
scp zImage root@[ip address of iPhone]:/private/var/

15. Liunx機からiPhoneに scp -r ~/firmware/ root@[ip address of iPhone]:/private/var/firmware する。
iPhoneにsshログインし、mkdir /private/var/firmware し、
その後、Linux機の ~/firmware/* を iPhoneの /private/var/firmwareに個々にコピーしても良い。

16. iPhoneをリブートする。
リブート後も、iPhoneの各ファイルとサイズが 次の通りであることを確認する。
system.img 71327744 bytes
android.img.gz 2161556 bytes
zImage 2364280 bytes (3G)

※ 私のandroid.img.gzは これより10KBほど小さいサイズだったが、後のワークは 成功した。

17. 先のtarから、次のファイルを解凍し、idroid フォルダに格納する。
utils/oibc, utils/loadibec, and prebuilt/openiboot.img3

18. iPhoneをシャットダウンし、リカバリーモードにする。
それにはiPhoneの電源を切り、コンピュータにUSB接続し、ホールド(電源)ボタンと、ホームボタンを同時に押して、(約10秒で)リンゴマークが点灯したら、ホールドボタンは 離す。そのまま(約10秒) 「iTUnesに接続」が表示されるまで、ホームボタンを押し続ける。

19. Linux機で cd ~/idoid する。
(適宜、sudo apt-get install libusb-0.1-4 してインストールを済ませておく)

さらに 次のコマンドを実行する。
sudo ./loadibec openiboot.img3

うまくいけば、iPhoneに openibootメニューが現れる。

20. ボリュームコントロールボタンか、ホールドボタンで セカンドメニューオプション「コンソール」を選び、ホームボタンで起動する。

すると、iPhoneでテキストコンソールが動き始め、「Welcome to opneiboot」メッセージが表示される。
(画面下の方に、体裁が崩れて表示される時があるが、それ自体は問題ない模様)

21. Linux機で、sudo ./oibc を入力する。

( 次のエラーメッセージが表示される場合もある。
 ./oibc: error while loading shared libraries: libreadline.so.5:
 cannot open shared object file: No such file or directory

 その場合、以下のコマンドで 足りないモジュールをインストールする。
 sudo apt-get install libreadline5 
)
( sudo ./oibc install と入力すると、何故か、以降うまくいった )

iPhoneと同じテキストスクリーン「WELCOME TO ...」が Linux側にも 表示される。

下記のようなメッセージが表示される場合は、libreadline5のインストールや、VirtualBoxのUSBデバイスコントローラで不要i/fを無効に設定する、とか、前述のinstallコマンドつけてoibc起動する、と良いようだ。

| Client connected: filename@address to send a file,
| filename@address:len to receive a file
| ---------------------------------------

22. 次の手順で、NOR(iPhoneのブートローダが格納されている)のバックアップを行う。

Linux機の、先ほどのoibcターミナルで 次のコマンド実行。
nor_read 0x09000000 0x0 1048576
これによってNOR全体がメインメモリに読み込まれる。
 
下記メッセージが直ぐに返ってきたらOK。
 Reading 0x0 - 0x100000 to 0x9000000...
 Done.

23. oibcターミナルで、さらに次のコマンド入力。
~norbackup.bin@0x09000000:1048576

file sent. と返ってくる。

idroidフォルダに、norbackup.bin が出来るので、どこか安全な場所に保管する。

(このコマンドは、NORをLinux機に保存するもの。
このバックアップさえあれば、自由にNORを編集できるようになる。
)

24. 次の手順で、OpeniBootをNORにインストールし、既存のApple iBoot bootloaderに取って代わらせる。

oibcターミナルで、install と入力。

直ぐに次のようなメッセージが ずらずらと返ってくる。
| Installing Images...
| Reading images...
| Reading: ibot (171328 bytes)
| Reading: dtre (43968 bytes)
| Reading: logo (10624 bytes)
:
:
| Images installed

数分かかるかもしれない。installation-completeメッセージが出るまで待つ。

25. oibcターミナルで、rebootと入力。
そして Ctrl+Cを押して、ターミナルからexitする。

iPhoneをリブートするたび、OpeniBoot メニューが表示されるようになる。
OpeniBootは oibcターミナルで uninstallと入力すれば、アンインストールできる。

またホームボタン押し下げで、iOSのリカバリーモードにも入れる。
(ただ ホームボタンをタップする代わりに)

残念ながらAndroidをシャットダウンする良い方法がまだ無い、との事で、ホールドボタンとホームボタンを同時に押し続けてください。
委細 iDroidWikiもチェックしよう。

ハッカー、plannetbeingとして知られる David Wangさんのブログに最新開発状況が見られるらしい。

---------------------------------
■参考
1. How to Install Android on Your iPhone
2. 何でもメモローグ後半のLinux機でのメッセージ例が豊富で 分かりやすくまとまっていた。

3. How to install Android on the iPhone 3G
4. iPhone 2GのAndroid化
5. How to resolve Cydia Crash problem while ‘Loading Data’ Screen
6. Virus Total - scanned result itouchBrowser1_9_2_36.zip