iPod touch Tips
出典: Fukudat
iPod touchに関する覚え書き.ほとんどはiPhoneでも同じだと思われる.iPhoneに関する覚え書きは iPhone Tips を参照すべし.
以下は2008年2月中旬時点のFW1.1.3を使う場合の情報である.2008年3月3日現在,FW1.1.4がリリースされているが,私はまだ試していない.
目次 |
FW1.1.3 の jailbreak
まず,ソフトウェアバージョン 1.1.3 のままだと,jailbreak できないので,1.1.1 にダウングレードして jailbreak し,その後で 1.1.2 -> 1.1.3 と戻していく.
VMwareを動かしていると,たまにUSBの接続を横取りされて失敗することがあるので,止めておこう.
FW1.1.1 へダウングレード
- 1.1.1のファームウェアをダウンロードして,PC上のどこかに置いておく.
- iPod touchをPCに接続してiTunesを起動。
- iPod touchのパワーボタン(上側面)とホームボタン(正面下)を長押し.
- iPod touchの電源が切れてiTunesの表示からも消えたら,パワーボタン(上側面)だけを離す.
- そのまま数秒我慢すると,iTunesでデバイスが再認識されて「リカバリモードのiPodを見つけました」と表示されるので,ホームボタンも離す.
- iTunesでiPodの概要画面を開き,キーボードのShiftキーを押しながら復元ボタン(更新ボタンではない)をクリックする.ファイルを選択するダイアログが開くので,1でダウンロードしたFW1.1.1のファイルを指定する.完了するまで数分かかるので,ひたすら我慢.
- 完了するとiTunesが復元するかと聞いてくる.復元せずに,新しいiPodとして認識させる.iPod touchの設定->一般->情報を開いて,バージョンが1.1.1になっていれば成功.
FW1.1.1 をjailbreak
- iPod touchのワイアレスLAN設定を行って,ウェブにアクセスできるようにする.
- Safari で http://jailbreakme.com/ を開き,一番下の Install AppSnap をクリックする.勝手にSafariが終了してダウンロードが進む.ホームボタンを押してiPod touchのメイン画面 (SpringBoard) に Installer アイコンが現れたら成功.
FW1.1.1 jailbroken からFW1.1.2 jailbroken へアップグレード
- iPod touchのInstallerを起動し,カテゴリ Tweaks (1.1.1) 内の OktoPrep をインストールする.
- 1.1.2のファームウェアをダウンロードし,PC上のどこかに置いておく.
- iPod touchをPCにつなぎ,iTunesを起動する.
- iTunes に 1.1.3をインストールするかと聞かれたら No と答える.
- iTunesでiPodの概要画面を開き,キーボードのShiftキーを押しながら更新ボタン(復元ではない)をクリックする.ファイルを選択するダイアログが開くので,上でダウンロードしたFW1.1.2のファイルを指定する.完了するまで数分かかるので,ひたすら我慢.
- 完了するとiTunesがソフトウェアのバージョンアップをするかと聞いてくるが,バージョンアップしない.iPod touchの設定->一般->情報を開いて,バージョンが1.1.2になっていれば成功.
- jailbreak 1.1.2から1.1.2-jailbreak.zipをダウンロードして,PCのどこかで解凍する.
- 解凍したディレクトリ内の windows.bat を実行する(javaのruntimeが必要.もしインストールされていなければJDKを参照してインストールする).しばらく時間がかかるのでじっと我慢.
FW1.1.2 jailbroken からFW1.1.3 jailbroken へアップグレード
- この後の処理で時間がかかるのだが,途中でロックしてしまうのを防ぐため,iPod touchの設定->一般->自動ロック を一時的に「しない」にしておく(後で元に戻してよい).
- iPod touchのInstallerを起動し,カテゴリ System 内の Official 1.1.3 Upgrader を Install する.
- 完了したら,ホームボタンを押してメイン画面に戻る.すると新しく Update アイコンができているので,それをクリック.Restore device?と聞かれるのでYesを選ぶと,Downloading->Extracting->Decrypting->Decompressing->Copying->Jailbreakingと進んでいく.かなり時間がかかるので,ひたすら待つ.
- 完了するとiPod touchリブートするので.iPod touchの設定->一般->情報を開いて,バージョンが1.1.3になっていれば成功.
rootの初期パスワードは"alpine".mobileというユーザも定義されていて,初期パスワードはやはり"alpine".
各種ツールのインストールと設定
iPod touch の Installerから以下のツールをインストール!
- Systemsカテゴリ/BSD Subsystem
- Unix系のコマンドが使える
- Systemsカテゴリ/OpenSSH
- PCからiPodにsshでリモートログイン,scpでファイル転送できるようになる.
- Term-vt100 (aka MobileTerminal)
- iPod touch上のshell (command line) 端末
- MobileFinder
- Explorer
- MobileEditor
- Text Editor ... なぜかセーブできない.
ssh & scpでパスワードの省略
- (もしキーがなければ)iPod touchにパスワードなしで接続するPCで,キーを生成
$ ssh-keygen -t dsa pass phraseを2回入力
- 秘密鍵 ~/.ssh/id_dsa と公開鍵 ~/.ssh/id_dsa.pub ができる.
- iPod touchに公開鍵 id_dsa.pub を転送.
$ scp ~/.ssh/id_dsa.pub root@iPod_touch_の_IP_address:/tmp
- iPod touchにsshでログインして,以下のコマンドを実行.
$ ssh -l root iPod_touch_のIP_address root@xxxxxx's password: ..... # mkdir /var/root/.ssh # mv /tmp/id_dsa.pub /var/root/.ssh/authorized_keys # chmod og-w /var/root # chmod og-rwx ~/.ssh ~/.ssh/authorized_keys # exit
- 重要なのは permission の設定./var/root (home) に他人が書き込めるとダメ,/var/root/.ssh以下を他人が読めるとダメなので,注意.
設定は以上.sshクライアント側でssh-agentを動かし,ssh-addでidentityを登録しておけば,パスワードなしでssh/scpできる.
初期パスワードの変更
FW1.1.3をjailbreakする際にのpasswdコマンドは壊れていて使用してはいけないという警告が出る(もしつかうとSpringBoardがクラッシュし続ける).しかしパスワードをそのままにしておくことはできないので,以下のようにして変更する.失敗して二度と入れなくなると困るので,ssh & scpでパスワードの省略を行って,パスワードなしでも外からはいれるようにしてから作業しよう.
- パスワードのDES符号化(暗号化).cryptコマンドがあれば使えばよいが,普段まったく使わないのでインストールされていない.そこで perlのcrypt関数を使うことにする.perlがインストールされているPCで以下を実行.
$ perl -e 'print crypt("YOUR_PASSWORD", "xy"), "\n";'
- ここで YOUR_PASSWORD は新しいパスワード,xy は暗号の種となる2文字で,[a-zA-Z0-9./]から選ぶ.出力された文字列を記録しておく.
- iPod touchから /etc/master.passwd ファイルをPCにコピーし,中身を確認しておく.
$ scp root@ipod:/etc/master.passwd . $ cat master.passwd ## コメント部分は省略 nobody:*:-2:-2::0:0:Unprivileged User:/var/empty:/usr/bin/false root:/smx7MYTQIi2M:0:0::0:0:System Administrator:/var/root:/bin/sh mobile:/smx7MYTQIi2M:501:501::0:0:Mobile User:/var/mobile:/bin/sh daemon:*:1:1::0:0:System Services:/var/root:/usr/bin/false unknown:*:99:99::0:0:Unknown User:/var/empty:/usr/bin/false _securityd:*:64:64::0:0:securityd:/var/empty:/usr/bin/false
- この(コロンで区切られた)第2カラムが暗号化されたパスワードなので,rootとmobileの行の第2カラムを適当なエディタを使って,上で作った文字列と置き換える(元のファイルもバックアップとして残しておいたほうがいいかも).
- できたファイル(master.passwd)を,次のコマンドで iPod touchに書き戻す.
$ scp master.passwd root@ipod:/etc/master.passwd
以上.新しいパスワードでログインできるかどうか (ssh-agent なしで) 確かめてみよう.
Term-vt100
FW1.1.3上のTerm-vt100 version snv198は,最初にパスワード入力を求められ,そこに何を入れてすぐに終了してしまう. 原因を調査.
- rootで実行するととりあえず動きだすので,SpringBoardから起動するとmobileユーザでの実行なるためこけているものと思われる.そこで chmod u+s して root で動くようにしてみた.
- こんどはdylibが見つからず起動できない.Term-vt100 の中身を覗くと /usr/local/arm-apple-darwin/lib/libgcc_s.1.dylib というパスが binary に埋まっている.このファイルは /usr/lib にある.setuid すると埋め込まれている場所と違うところにある dylib を読んでくれないのだ(セキュリティーホールとなるのを回避するため).そこで,binary editor で dylib のパスを /usr/lib に変更.
私は試していないが,Tweak 1.1.3カテゴリの SUID Lib Fix というパッケージがこの問題を直してくれるようだ.binary editor を使うのが怖い人は試してほしい.
- 動いたかにみえたが,なにか文字列を入力すると,Unhandled multi-char inserted! と叫んで死んでしまう.日本語環境では動かないのだ.
- そこで設定->基本->言語でキーボード設定をEnglish/United Statesに変更してみたところ.ちゃんと動いた.
ということで,binary editor (たとえばbvi)で libgcc_s_1.dylib のパスを直した上で,chmod u+s Term-vt100 すればよい.
バックスペース (backspace) を押すと本来なら一文字戻らなければならないのだが,スペースが入力されたかのように見える. 見えるというのは,見た目だけの話で実際一文字削除されている.この問題を修正するパッチがある (Tweak --> BSD Subsystem 2.0 Termfix) ので,それもインストールしておく.
