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.1のファームウェアをダウンロードして,PC上のどこかに置いておく.
  2. iPod touchをPCに接続してiTunesを起動。
  3. iPod touchのパワーボタン(上側面)とホームボタン(正面下)を長押し.
  4. iPod touchの電源が切れてiTunesの表示からも消えたら,パワーボタン(上側面)だけを離す.
  5. そのまま数秒我慢すると,iTunesでデバイスが再認識されて「リカバリモードのiPodを見つけました」と表示されるので,ホームボタンも離す.
  6. iTunesでiPodの概要画面を開き,キーボードのShiftキーを押しながら復元ボタン(更新ボタンではない)をクリックする.ファイルを選択するダイアログが開くので,1でダウンロードしたFW1.1.1のファイルを指定する.完了するまで数分かかるので,ひたすら我慢.
  7. 完了するとiTunesが復元するかと聞いてくる.復元せずに,新しいiPodとして認識させる.iPod touchの設定->一般->情報を開いて,バージョンが1.1.1になっていれば成功.

FW1.1.1 をjailbreak

  1. iPod touchのワイアレスLAN設定を行って,ウェブにアクセスできるようにする.
  2. Safari で http://jailbreakme.com/ を開き,一番下の Install AppSnap をクリックする.勝手にSafariが終了してダウンロードが進む.ホームボタンを押してiPod touchのメイン画面 (SpringBoard) に Installer アイコンが現れたら成功.

FW1.1.1 jailbroken からFW1.1.2 jailbroken へアップグレード

  1. iPod touchのInstallerを起動し,カテゴリ Tweaks (1.1.1) 内の OktoPrep をインストールする.
  2. 1.1.2のファームウェアをダウンロードし,PC上のどこかに置いておく.
  3. iPod touchをPCにつなぎ,iTunesを起動する.
  4. iTunes に 1.1.3をインストールするかと聞かれたら No と答える.
  5. iTunesでiPodの概要画面を開き,キーボードのShiftキーを押しながら更新ボタン(復元ではない)をクリックする.ファイルを選択するダイアログが開くので,上でダウンロードしたFW1.1.2のファイルを指定する.完了するまで数分かかるので,ひたすら我慢.
  6. 完了するとiTunesがソフトウェアのバージョンアップをするかと聞いてくるが,バージョンアップしない.iPod touchの設定->一般->情報を開いて,バージョンが1.1.2になっていれば成功.
  7. jailbreak 1.1.2から1.1.2-jailbreak.zipをダウンロードして,PCのどこかで解凍する.
  8. 解凍したディレクトリ内の windows.bat を実行する(javaのruntimeが必要.もしインストールされていなければJDKを参照してインストールする).しばらく時間がかかるのでじっと我慢.

FW1.1.2 jailbroken からFW1.1.3 jailbroken へアップグレード

  1. この後の処理で時間がかかるのだが,途中でロックしてしまうのを防ぐため,iPod touchの設定->一般->自動ロック を一時的に「しない」にしておく(後で元に戻してよい).
  2. iPod touchのInstallerを起動し,カテゴリ System 内の Official 1.1.3 Upgrader を Install する.
  3. 完了したら,ホームボタンを押してメイン画面に戻る.すると新しく Update アイコンができているので,それをクリック.Restore device?と聞かれるのでYesを選ぶと,Downloading->Extracting->Decrypting->Decompressing->Copying->Jailbreakingと進んでいく.かなり時間がかかるので,ひたすら待つ.
  4. 完了すると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) ので,それもインストールしておく.

アプリケーションの活用

Lotus Notesのカレンダー

Lotus Notesのアドレス帳

リンク集