HOME>スポンサー広告

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
HOME>iPhone/iPad

iPhone 3GでAndroidが動く

以前、初代iPhoneでAndroidを動かすという試みが公開されており、iPhone 3Gのポーティングも間もなくということでした。
その後iPhone 3Gでも成功したことが報告されていましたが、パッケージまでは公開されず。

しかしついに先日、パッケージが公開され、試すことが出来るようになりました。
http://japanese.engadget.com/2010/05/21/android-for-iphone-3g/
英文で詳細な手順も公開されています。
http://www.pcworld.com/article/196595/how_to_install_android_on_your_iphone.html

早速それを見ながら、iPhone 3Gに導入を行ってみました。

なお導入可能なiPhone 3Gにはいくつかの条件があります。

・iPhone OS 3.1.2であること(3.1.3やiPhone OS4 betaは不可。iPod Touchも)
・Blacksn0wやPwnage Tool、Redsn0wで Jailbreakしておくこと。

脱獄を必要としている時点で保証外となりますが、さらにブートローダも書き換えてしまいますので、完全にアウトになります。
またLinuxで操作を行わなければいけないので、Linuxに関する知識も多少必要です。

自分で必要な環境、必要なファイルを用意できない方、下記の作業が何をしているのかおおよそでも理解できない方、不具合解決のために取るべき方法を自分で探せない方は手を出さない方が無難です。


作業に必要なもの
・作業用Linux(仮想マシンでも可)
 今回の作業ではUbuntu 9.10を使用
・公式のiPhone OSイメージファイル
 iPhone1,2_3.1.2_7D11_Restore.ipsw
・Marvell WLANチップのファームウェア
 SD-8686-LINUX26-SYSKT-9.70.3.p24-26409.P45-GPL.zip
・iDroidバイナリ
 http://www.pcworld.com/downloads/file/fid,84612-order,4/description.html

1.SD-8686-LINUX26-SYSKT-9.70.3.p24-26409.P45-GPL.zipを解凍し、SD-8686-FEDORA26FC6-SYSKT-GPL-9.70.3.p24-26409.P45.tarを取り出します。

2.firmwareというフォルダを作成した後、SD-8686-FEDORA26FC6-SYSKT-GPL-9.70.3.p24-26409.P45.tarを解凍し、FwImage/helper_sd.binとFwImage/sd8686.binをfirmwareフォルダに格納する。
(firmwareフォルダはホームディレクトリに作成します)

3.helper_sd.binをsd8686_helper.binにリネームします。

4.idroidというフォルダを作成し、iDroidのバイナリからutils/dripwnを取り出して格納します。
(idroidフォルダはホームディレクトリに作成します)

5.iPhone OSの公式イメージファイルをidroidフォルダに格納します。
先ほど移動したdripwnと同じフォルダに格納されていることが必要です。

6.Linuxのターミナルを立ち上げ、idroidフォルダ内に移動します。(cd ~/idroid)

7.こちらのサイトから、iPhone 3GのVFDecrypt keyをコピーしておきます。

8.ターミナルで以下のコマンドを入力します。

./dripwn iPhone1,2_3.1.2_7D11_Restore.ipsw [先ほどコピーしたVFDecrypt key]

9.生成されたzephyr_main.bin, zephyr_aspeed.bin, zephyr2.bin をfirmwareフォルダに移動します。

10.iPhone 3GにOpen SSHをインストールしておきます。なお、この際にrootとmobileのパスワードを変更しておきましょう。
SSHでPCからiPhoneにアクセスして操作してもいいですし、iPhone側のターミナルから操作してもいいです。

11.先ほど解凍したiDroidprebuilt/android.img.gz, prebuilt/cache.img, prebuilt/ramdisk.img, prebuilt/system.img, prebuilt/userdata.img, zImageをiPhoneの/private/var/に転送します。
scpコマンドで移動することが可能です。

scp android.img.gz root@[iPhoneのIPアドレス]:/private/var/
scp cache.img root@[iPhoneのIPアドレス]:/private/var/
scp ramdisk.img root@[iPhoneのIPアドレス]:/private/var/
scp system.img root@[iPhoneのIPアドレス]:/private/var/
scp userdata.img root@[iPhoneのIPアドレス]:/private/var/
scp zImage root@[iPhoneのIPアドレス]:/private/var/

12.iPhoneの/private/var/にfirmwareディレクトリを作成し、その中にPCにあるfirmwareフォルダの中身をコピーします。

13.電源を落とし、ホームボタンを押したままで電源を投入し、リカバリモードに入ります。

14.バイナリのutils/oibcとutils/loadibecをidroidフォルダに入れておきます。

15.再びターミナルからの作業です。ここからの作業はlibusb-0.1-4が必要になるので、あらかじめLinuxに導入しておきましょう。
以下のコマンドを入力すると、iPhoneの画面がいきなり変わると思います。

cd ~/idroid
sudo ./loadibec openiboot.img3

電源ボタンを押すと選択、ホームボタンで決定です。
まだブートローダの導入が終わってませんので、林檎ロゴやドロイド君ロゴを選ばないように。
真ん中のConsoleを選んでしばらく待っていると、Welcome to openibootと表示して止まります。

16.PCのターミナルでsudo ./oibcと入力します。iPhone上の画面表示とターミナル上の画面表示が同じになるはずです。
ここから先はフラッシュメモリの中身をいじくるので、失敗すると起動すらしなくなるので注意。

17.nor_read 0x09000000 0x0 1048576と入力します。フラッシュメモリの内容をメインメモリに読み込みます。

18.~norbackup.bin@0x09000000:1048576と入力します。現在のフラッシュメモリの内容をバックアップします。

19.installと入力します。これでフラッシュメモリにOpeniBoot(先ほど表示されたブートローダ)をインストールします。

20.installation-completeと表示されたら、rebootと入力してiPhoneを再起動させます。ターミナル作業はこれで終わりなので、Ctrl + Cでoibcから抜けて、ターミナルを終了します。

なお、oibc上でhelpと入力するとコマンドの一覧、uninstallと入力するとOpeniBootをアンインストールできるようです。

これでOpeniBoot上からiPhoneとAndroidのデュアルブートになっているはずです。
うちのiPhoneはAndroidの起動までは問題ないのですが、ホーム画面で固まってしまいます。
また、iPhone OS上でフライトモードなどにして電話機能を切っていると、Android上でも電話機能が有効にならないようなので注意です。

しばらく遊んでみようかと思ったのですが、まだうまく動く状態になっていないので、もう少し頑張ってみます。


【追記】
導入当初はタッチパネルが有効にならないという問題があり、何も出来なくなってしまいました。
検証したところ、ホームボタンなどの操作には反応していることがわかったので、導入時の問題であるということが分かりました。
ファイルを差し替えたところ解決。
しかしWi-Fiが上手く動かなかったので、こちらもファイルを差し替えたところ解決しました。
どうもfirmwareフォルダのファイルが原因で不具合を起こすことが多そうです。

この記事のトラックバックURL

http://mobilephonemania.blog32.fc2.com/tb.php/1816-0663aa5f

コメント

コメントする

管理者にだけ表示を許可する

  Template Designed by めもらんだむ RSS

special thanks: Sky Ruins, web*citronDW99 : aqua_3cpl Customized Version】


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。