Tuesday, October 16, 2007

iPod touchアプリケーションインストールガイド

スポンサードリンク


2007.11.15追記:
現在はもっと簡単なインストールの方法が発表されています。技術的興味のあるかた以外はiPod touchアプリケーションインストールガイド簡単版を読まれることをお勧めします。


ついにiPod touchの監獄破りも成功しiPod touch dev wikiガイド記事が出たようなので、わたしも試してみました。メモを残しておきます。環境はMac OS X 10.4.10です。Windowsのかたはこちらを使うとよいでしょう。Windows版に関しては、筆者は試しておりません。

jailbroken

写真1. アプリケーションインストール後。NESエミュも入ってる!

まずはじめにNiacinさんとDreさんが発見したTIFFのぜい弱性を使って、iPod touchのルートディレクトリにリードライトアクセス権を確保します。方法は簡単で、iPod touchのSafariを使って、http://jailbreak.toc2rta.comにアクセスするだけです。うまくいくとSafariが消えて、アプリケーションがならんでいるはじめの画面(スプリングボード)にもどります。

偉大なるNiacinさんとDreさん、あなたたちの貢献がなければ以下の手順はまったく無意味でした! ちなみにNiacinさんは更なる開発のための費用を募っておられます。ご寄付はNiacinさんのブログからどうぞ。Paypalですから、クレジットカードも使えます。わたしも微力ながら協力させて頂きました。微力=10ドル。ちょっとケチくさかったですか ^^;;

この段階で、MacとiPod touchをUSBケーブルでつなぐといいでしょう。つなぐとiTunesが立ち上がって、次のようなダイアログが出ますが、このダイアログはキャンセルを押しておくといいでしょう。

ipodtouch-setup.jpg

図1. このダイアログが出たらキャンセルを押す

iTunesでiPod touchをみると、なんとわずか300MBしか認識していません。この段階では、この状態が正常です。あとでなおります。

ipodtouch-hacked.jpg

図2. 容量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」という拡張子をつけます。「本当に変更していいの?」とかきいてくるので、本当に変更します。

iphonefs.jpg iphonefs2.jpg

図3. rdisk0s1ファイルの変更前と変更後

変更したら、rdisk0s1.dmgをダブルクリックしてマウントします。「Snowbird3A109a.UserBundle」という名前のドライブがマウントされます。

bundle.jpg

図4. 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が正しく動作しないそうなので要注意です。

iNdependence.jpg

図5. iNdependence.app

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を開いてみると、元通りの容量になって正常に動作するはずです。

ipodtouch-normal.jpg

図6. 元通りの容量に!

それではいよいよ、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」をインストールすると、多くのインストール元が追加されて、インストールできるアプリケーションの数がとてもたくさんになりますよー。

参考文献

  1. iPod touchの監獄破り成功, がんちゃんのぶろぐ, 2007
  2. 監獄破りガイド, iPod touch dev wiki, 2007
  3. Life with Toc2rta

追記

まんがいち失敗してiPod touchがおかしくなった場合、つぎの手順でリストアが可能なようです。

  1. iPod touchの電源を入れてUSBケーブルをつなぐ。

  2. 「スリープボタン」と「ホームボタン」を押し続け、電源を切る(ハードリセット)。
  3. 電源が切れたらすぐさまスリープボタンを離す。ホームボタンは押したまま。
  4. 画面に水平線がたくさん出れば成功。iTunesを起動するとリストアが可能。
なお上記リストア手順に関しては筆者は未検証です。


5 comments:

Ryo said...

すごくわかりやすい説明で、勇気をもって私もやってみようかなって思ってます(^^)。
もし失敗したり、不具合が出たときにiTUNESで出荷時の状態に戻すことは可能ですか?

kenic said...

可能です。出荷時の状態にもどす手順を追加しておきます。

かおり said...

初めまして。BLOGGER初心者で使い方を調べこちらのサイトにたどり着きました。

07.8.5のバックリンクの説明が分かりやすく感激したので、さっそくバックリンクしたのですが・・・リストになってませんね(T^T)なぜっ!?
又、書かれている手順通りにしましたが自分のブログにも「バックリンク」表示されず。

ギブです。めげました。精進します。

historia powszechna said...

Great China blog!!!

Karpacz said...

Nice blog:D Karpacz