iPhoneOS 2.2にアップデートできない(できなかった)件

絵文字が使えるよ,ってソフトバンクからSMSが来てたので(ってだけでもないんですが),iPhoneOS 2.2にアップデートしようとしたわけです。

ところが何度やっても失敗する。

OSのアップデートに失敗すると,復元モードに入るのですが,この復元も失敗する。

どうするの!って感じなのですが,なんとか復旧できたので,顛末というか手順を書いておきます。

  • まず元に戻す
  • iTunesは2.2にどうしてもアップデートしようとしてしまうのでNGです。Xcodeを起動し(インストールしてなかったらインストールして),ウィンドウメニューからオーガナイザを選び,表示されたデバイスのSummary表示のところの「Software Version」にちゃんと動作していたときのバージョン(例えば「2.1 (5F136)」)を選んで,「Restore iPhone」ボタンを押します。

    これでOSが復元された状態になるので,今度はiTunesでバックアップからアプリや各種の設定を復元すれば,アップデート失敗直前に近い状態になります(まったく同じにならないところが悲しいところです)。

    iTunesを起動するときに,最新版(=2.2)にアップデートしますか?とか聞かれますが,一度失敗した人はアップデートしてはいけません。

  • アップデートしなおす
  • どうも,iTunesはiPhoneOS 2.2のダウンロードがちゃんとできてようができてまいが,関係なくアップデートしにいくようです。

    Macユーザであれば,ホームのライブラリフォルダのなかにiTunesというフォルダがあるので,そこのiPhone Software Updateから,iPhone1,2_2.2_5G77_Restore.ipswというの見つけて,いったん捨ててみましょう。Windowsの人は検索とかで探してみてください。

    また腕のある人は,捨てる前にターミナルから $ sum iPhone1,2_2.2_5G77_Restore.ipsw を実行して,値を確認してみましょう(Macの場合)。

    いったん捨てたところでiTunesを再起動すると,新しいバージョンがダウンロードできます,って言われます。腕のある人は「ダウンロードだけする」を選んでsumでチェックサムを確認してみましょう。そうでもない人はインストールを選んでしまいましょう。

    このsumの値,ワタシのところでは,アップデートが失敗したときのファイルでは「1426 252288」と表示され,成功したときのファイルでは「22489 252288」と表示されました。この値は1個目がCRCチェックサム,2つ目がバイト数なので,2つ目が同じで,1つ目が異なるということは,この2つのファイル,サイズが同じで中身は違ってたということになります。

要は,OSインストール用のファイルが壊れてた,ってことなのですが,iTunesは中身が合っているかどうか,インストール時にはチェックしていないのだろうと思われます。
実行時には署名などをチェックしているのかも知れませんが,インストール時にもチェックして欲しいところです。実行時にチェックしてないとすると,トロイの木馬とか作れそうですしね。

追記:
最初の「まず元に戻す」についてですが,よくよく考えると,Xcodeがインストールできない人(PowerPCの人やWindowsの人)もいるわけです。
その場合は,いきなりiPhone1,2_2.2_5G77_Restore.ipswを捨てる,というところから始めれば良い気がします。おそらくそれでiTunesが2.1をリストアしに行くのではないでしょうか。