2007.11.15追記:
現在はもっと簡単なインストールの方法が発表されています。技術的興味のあるかた以外はiPod touchアプリケーションインストールガイド簡単版を読まれることをお勧めします。
ついにiPod touchの監獄破りも成功し、iPod touch dev wikiにガイド記事が出たようなので、わたしも試してみました。メモを残しておきます。環境はMac OS X 10.4.10です。Windowsのかたはこちらを使うとよいでしょう。Windows版に関しては、筆者は試しておりません。
まずはじめにNiacinさんとDreさんが発見したTIFFのぜい弱性を使って、iPod touchのルートディレクトリにリードライトアクセス権を確保します。方法は簡単で、iPod touchのSafariを使って、http://jailbreak.toc2rta.comにアクセスするだけです。うまくいくとSafariが消えて、アプリケーションがならんでいるはじめの画面(スプリングボード)にもどります。
偉大なるNiacinさんとDreさん、あなたたちの貢献がなければ以下の手順はまったく無意味でした! ちなみにNiacinさんは更なる開発のための費用を募っておられます。ご寄付はNiacinさんのブログからどうぞ。Paypalですから、クレジットカードも使えます。わたしも微力ながら協力させて頂きました。微力=10ドル。ちょっとケチくさかったですか ^^;;
この段階で、MacとiPod touchをUSBケーブルでつなぐといいでしょう。つなぐとiTunesが立ち上がって、次のようなダイアログが出ますが、このダイアログはキャンセルを押しておくといいでしょう。
iTunesでiPod touchをみると、なんとわずか300MBしか認識していません。この段階では、この状態が正常です。あとでなおります。
iPHUCとその仲間たちをダウンロードします。ちょっとわかりにくいですが、上記リンクへ行き、一番下にある表の「Free」を押し、次の画面で表示される数字とアルファベットを入力して「Download from xxx」というボタンを押せばオッケーです。デスクトップにでもダウンロードするといいでしょう。ダウンロードしたファイルはzipなので、おなじくデスクトップで解凍しておきます。すると「Desktop – Jailbreak」というフォルダができるはずです。フォルダの中にはiphucとfstabというファイルと、iphonefsというフォルダがあるはずです。なお、このiPHUCはIntel Mac用なのでMacがPowerPCのひとはPowerPC用iPHUCをダウンロードしてください。zipファイルを解凍するとPowerPC用のiPHUCが現れるので、先ほどの「Desktop – Jailbreak」の中の「iphuc」と置き換えておきます。
次に「アプリケーション→ユーティリティ」にある「ターミナル」を起動します。MacPortsをご利用になっていて、すでにreadlineライブラリがあるひと以外は、このファイルをダウンロードして、zipファイルを解凍します。そしてターミナルで次のように入力。
$ sudo cp ~/Desktop/opt/local/lib/libreadline.5.2.dylib /opt/local/lib/
ちなみに筆者のマシンにはreadlineが入っていたのでこのプロセスは試していません。できたら、ターミナルでiphucを起動します。インテルマシンのひとは小文字で「iphuc」、PPCのひとは「iPHUC」ですので要注意。
$ cd "~/Desktop/Desktop - Jailbreak" $ ./iPHUC CFRunLoop: Waiting for iPhone. notification: iPhone attached. AMDeviceStartService 'com.apple.afc': 0 (iPHUC) /:
iPod touchの中味を取り出します。iPHUCのぷろんぷとに続いて次のように入力。
(iPHUC) /: getfile /dev/rdisk0s1 iphonefs/rdisk0s1 314572800 File size: 314572800 Reading 33554432 bytes, 281018368 bytes remain Reading 33554432 bytes, 247463936 bytes remain Reading 33554432 bytes, 213909504 bytes remain Reading 33554432 bytes, 180355072 bytes remain Reading 33554432 bytes, 146800640 bytes remain Reading 33554432 bytes, 113246208 bytes remain Reading 33554432 bytes, 79691776 bytes remain Reading 33554432 bytes, 46137344 bytes remain Reading 33554432 bytes, 12582912 bytes remain Reading 12582912 bytes, 0 bytes remain
所要時間は約2分でした。これが終わるとiPHUCのあるフォルダの下のiphonefsフォルダの下に、rdisk0s1という300MBのファイルができます。このファイルに「.dmg」という拡張子をつけます。「本当に変更していいの?」とかきいてくるので、本当に変更します。
変更したら、rdisk0s1.dmgをダブルクリックしてマウントします。「Snowbird3A109a.UserBundle」という名前のドライブがマウントされます。
この「Snowbird3A109a.UserBundle」のなかの「etc」フォルダの下にある「fstab」ファイルをiPHUCといっしょにはいっていた「fstab」ファイルで置き換えます。ファインダーで操作してもいいし、ターミナルで次のように入力してもどちらでもOKです。
$ cp ~/Desktop/Desktop - Jailbreak/fstab /Volumes/Snowbird3A110a.N45Bundle/etc/
また、このファイルのdiffをとってみると次のような感じ。
$ diff -u /Volumes/Snowbird3A110a.N45Bundle/etc/fstab /Users/iwa/Desktop/Desktop - Jailbreak/fstab --- /Volumes/Snowbird3A110a.N45Bundle/etc/fstab 2007-09-19 15:42:13.000000000 +0900 +++ /Users/iwa/Desktop/Desktop - Jailbreak/fstab 2007-10-09 02:29:54.000000000 +0900 @@ -1,2 +1,2 @@ -/dev/disk0s1 / hfs ro 0 1 -/dev/disk0s2 /private/var hfs rw,noexec 0 2 +/dev/disk0s1 / hfs rw 0 1 +/dev/disk0s2 /private/var hfs rw 0 2
ですから、わかるひとは「/Volumes/Snowbird3A110a.N45Bundle/etc/fstab」をこのように修正してもよいです。コピーなり修正なりが終わったら、ドライブ「Snowbird3A110a.N45Bundle」は取り出してあんまうんとしておきます。アンマウントできたら、iPHUCでiPod touchにかきもどしましょう。
(iPHUC) /: putfile iphonefs/rdisk0s1.dmg /dev/rdisk0s1 Writing 33554432 bytes, 281018368 bytes remain Writing 33554432 bytes, 247463936 bytes remain Writing 33554432 bytes, 213909504 bytes remain Writing 33554432 bytes, 180355072 bytes remain Writing 33554432 bytes, 146800640 bytes remain Writing 33554432 bytes, 113246208 bytes remain Writing 33554432 bytes, 79691776 bytes remain Writing 33554432 bytes, 46137344 bytes remain Writing 33554432 bytes, 12582912 bytes remain Writing 12582912 bytes, 0 bytes remain
これも2分ぐらいかかります。この作業が終わったらiPHUCは使わないのでexitと打ち、終了させてよろしい。これができたらiPod touchを「ハードリセット」します。方法は「スリープボタン」と「ホームボタン」を同時に押し、しばらく押したままにします。すると電源を切るための赤いスライダーが出ますが、これは無視して、さらに押し続けると電源が完全に切れます。電源が切れたら、スリープボタンを長く押して電源をふたたびいれます。
次に、iPod touchにログインして操作するためにsshをインストールします。sshをインストールにはまず、iNdependenceというソフトをGoogle codeからダウンロードし、dmgファイルをダブルクリックしてマウントます。そして中に入っている「iNdependence.app」をダブルクリックして起動。起動したらウインドウがひらくので「Install SSH/SFTP/SCP」というボタンを押し、あとは画面の指示に従ってください。ここで、2、3度iPod touchのリセットが要求されますが、ハードリセットをしては「だめです」。画面の指示では単に「スリープとホームを押してリセットせよ」とでますが、ここではハードリセットではなく、電源を切るための赤いスライダーを操作して電源を切ってください。電源を切ったらスリープボタンを長くおして電源を再投入します。ハードリセットをするとSSHが正しく動作しないそうなので要注意です。
SSHがインストールできたら、ターミナルからsshでiPod touchにログインしてみよう。次のように入力します。iPod touchのIPアドレスは、「設定」→「Wi-Fi」に出ている接続しているアクセスポイントの一番右にある「右矢印」をタップすると見られます。接続にあたって、(yes/no)?ときかれたらyesとこたえます。またiPod touchのルートのパスワードをきかれますが、パスワードは「alpine」です。
$ ssh -l root ipod.touch.の.IP.アドレス The authenticity of host 'xxx.xxx.xxx.xx (xxx.xxx.xxx.xx)' can't be established. RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:...:xx. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'xxx.xxx.xxx.xx' (RSA) to the list of known hosts. root@xxx.xxx.xxx.xx's password: alpine(実際には見えません) -sh-3.2#
ぶじつながりました! sshはまたあとで使うのでそのままにしておけばいいでしょう。
sshのコネクションはそのままにしておいて、つぎは、iTunesにちゃんと接続できるようにiPod touchをなおします。簡単なのでsshでもできそうなんだけど、mvもlsもなくってできない! のでsftpでやります。sftpが使用可能なftpクライアントでiPod touchに接続します。CyberDuckというのがおすすめらしいですが、わたしは使ったことがありません。面倒なのでターミナルからsftpを使いました。以下のようにします。sftpのパスワードも「alpine」です。具体的には、/private/var/rootの下あるMediaというシンボリックリンクをMedia_symという名前に、またMediaoldというディレクトリをMediaという名前に変更します。
$ sftp root@ipod.touch.no.ip.address Connecting to xxx.xxx.xxx.xx... root@xxx.xxx.xxx.xx's password: sftp> pwd Remote working directory: /private/var/root sftp> ls -l drwxrwxrwx 16 root wheel 578 Oct 1 15:27 Library lrwxr-xr-x 1 root wheel 1 Oct 15 22:22 Media drwxr-xr-x 7 root wheel 272 Oct 13 10:45 Mediaold sftp> rename Media Media_sym sftp> rename Mediaold Media sftp> exit
これでiTunesを開いてみると、元通りの容量になって正常に動作するはずです。
それではいよいよ、Install.appをインストールして、おすきなアプリケーションのインストールの準備です。こちらからInstaller.appをダウンロードします。zipファイルを解凍してできた「Installer.app」をiPod touchの「/Applications」ディレクトリにsftpでコピーします。ftpソフトを使っているひとは普通にコピーして下さい。sftpコマンドを使っているひとはディレクトリを再帰的にputできないので次のようにします。
sftp> mkdir /Applications/Installer.app sftp> lcd ~/Desktop/Installer.app sftp> cd /Applications/Installer.app sftp> mput * . Uploading Default.png to /Applications/Installer.app/./Default.png Default.png 100% 14KB 13.7KB/s 00:00 Uploading Info.plist to /Applications/Installer.app/./Info.plist Info.plist 100% 728 0.7KB/s 00:00 Uploading Installer to /Applications/Installer.app/./Installer Installer 100% 103KB 102.8KB/s 00:01 skipping non-regular file InstallerPlugin.webplugin Uploading ditto to /Applications/Installer.app/./ditto ditto 100% 23KB 22.8KB/s 00:00 Uploading icon.png to /Applications/Installer.app/./icon.png icon.png 100% 4756 4.6KB/s 00:00 Uploading newpackage.png to /Applications/Installer.app/./newpackage.png newpackage.png 100% 2584 2.5KB/s 00:00 Uploading package.png to /Applications/Installer.app/./package.png package.png 100% 2310 2.3KB/s 00:00 Uploading source.png to /Applications/Installer.app/./source.png source.png 100% 2414 2.4KB/s 00:00 Uploading trusted.png to /Applications/Installer.app/./trusted.png trusted.png 100% 2593 2.5KB/s 00:00 Uploading updates.aiff to /Applications/Installer.app/./updates.aiff updates.aiff 100% 166KB 165.6KB/s 00:01 sftp> mkdir InstallerPlugin.webplugin sftp> cd InstallerPlugin.webplugin sftp> lcd InstallerPlugin.webplugin sftp> mput * . Uploading Info.plist to /Applications/Installer.app/InstallerPlugin.webplugin/./Info.plist Info.plist 100% 1223 1.2KB/s 00:00 Uploading InstallerPlugin to /Applications/Installer.app/InstallerPlugin.webplugin/./InstallerPlugin InstallerPlugin 100% 19KB 19.0KB/s 00:00
さらにsshでiPod touchの/Applicationsディレクトリ以下のパーミッションを修正します。
-sh-3.2# chmod -Rf +x /Applications/
iPod touchの画面ロックをスライドして解除した状態で、sshからInstaller.appを起動してみます。
-sh-3.2# /Applications/Installer.app/Installer >>> Copying /Applications/Installer.app/InstallerPlugin.webplugin copying file ./Info.plist ... 1223 bytes copying file ./InstallerPlugin ... 19444 bytes 2007-10-15 23:37:40.296 Installer[56:d03] Updated plugin successfully installed. 2007-10-15 23:37:40.321 Installer[56:d03] No sources found, adding default source. 2007-10-15 23:37:40.586 Installer[56:d03] No lastRefreshDate found, performing initial refresh... 2007-10-15 23:37:44.907 Installer[56:d03] Sources successfully refreshed.
iPod touch側で、Installer.appが起動したのを確認したら、sshで Control-c を押してInstaller.appを終了しておきます。
このままだと、アプリケーションをインストールしてもssh経由で起動しなくては行けないハメになるので、スプリングボードの改造をインストールします。iPod touchのサファリでhttp://conceitedsoftware.com/iphone/beta/を開きます。するとインストーラに追加してよいか?というようなことをきいてくるので「Yes」をタップ。sshで/Applications/Installer.app/Installerを起動して、iPod touch側の画面右下にある「refresh」をタップします。すると先ほど追加したインストール元が反映されます。「System」カテゴリのところに「Trip1PogoStick」というのがあるはずなのでこれをインストールします。すると、スプリングボードに「Install」が追加されます!
作業は以上です。あとはスプリングボードから起動した「Install」アプリケーションでいろんなソフトをインストールしてみよう! 「Sources」の「Community Sources」をインストールすると、多くのインストール元が追加されて、インストールできるアプリケーションの数がとてもたくさんになりますよー。
参考文献
- iPod touchの監獄破り成功, がんちゃんのぶろぐ, 2007
- 監獄破りガイド, iPod touch dev wiki, 2007
- Life with Toc2rta
追記
まんがいち失敗してiPod touchがおかしくなった場合、つぎの手順でリストアが可能なようです。
- iPod touchの電源を入れてUSBケーブルをつなぐ。
- 「スリープボタン」と「ホームボタン」を押し続け、電源を切る(ハードリセット)。
- 電源が切れたらすぐさまスリープボタンを離す。ホームボタンは押したまま。
- 画面に水平線がたくさん出れば成功。iTunesを起動するとリストアが可能。
なお上記リストア手順に関しては筆者は未検証です。