iPhoneが起動しなくなったのでリカバリを試みた

 iPhone 5sが起動しなくなってしまいました。
 iPhoneは4sと5sの使用経験があり、数回起動しなくなったことは経験しているのですが、これまでは強制再起動で回復していました。が、今回は強制再起動でも回復せず。
 再び使用できるようになるまでに試みた策を紹介します。
 

経緯と症状

 INGRESSアプリを使用し端末がかなり熱い状態で、バッテリ残量が数%(5%未満だったように記憶している)となっているとき、突然電源が落ちた。その後電源が入らず、バッテリが尽きたのだと思い、帰宅後に充電。翌朝電源を入れようとしても、画面は黒いまま。電源ボタン(正確な名称はスリープ/スリープ解除ボタン)とホームボタンを同時押して強制再起動*1を試みると、Appleのリンゴマークが表示されるようになったが、そこから先に進まずに電源が落ちる状態。
f:id:kachine:20160922184540j:plain
 

 以降は、下記のAppleのサポートページを参考にリカバリすることにします。 
iPhone、iPad、iPod touch の電源が入らない場合 - Apple サポート
 「デバイスの電源は入るが、起動の途中で動かなくなる場合」に該当するため、作業にはPC(Mac)とiTunesが必要になります。今回はWindows10搭載PC*2を使用しました。
 

リカバリ

1回目(更新)
  1. PCにiPhoneを繋ぎ、iPhoneの[スリープ/スリープ解除ボタン]と[ホームボタン]を同時押し
  2. iPhoneがリカバリモードになり以下の画面が表示される
    f:id:kachine:20160922193420j:plain
  3. iTunes自動起動し、以下のダイアログが表示されるので、[更新]を押下
    f:id:kachine:20160924003543p:plain
    ※[更新]はiPhone内のデータが維持され、[復元]は全データが消去される
  4. 以下のダイアログが表示されるので、[更新]を押下
    f:id:kachine:20160924003920p:plain
  5. 以下のダイアログが表示されるので、[次へ]を押下
    f:id:kachine:20160924004009p:plain
  6. 以下のダイアログが表示されるので、同意できれば[同意する]を押下
    f:id:kachine:20160924004102p:plain
  7. iTunesが以下の画面となる
    f:id:kachine:20160924004233p:plain
  8. 裏側にWindowsにより以下のダイアログが表示されている
    f:id:kachine:20160924004339p:plain
  9. Windowsのデバイスが取り外された時の音がして、iTunesが以下の画面に変わる
    f:id:kachine:20160924004455p:plain
  10. 以下のダイアログが表示される
    f:id:kachine:20160924004535p:plain

ネットワーク周りは何も触れておらず、理由は不明ながらも以下のエラーメッセージ。

iPhone"iPhone"用のソフトウェアをダウンロード中に問題が起きました。不明なエラーが発生しました(-39)。
ネットワークの設定および接続を確認して、もう一度実行してください。

念のためPCを再起動して、もう一度同じ手順で再試行する。
 

2回目(更新)

1回目の6辺りまでは同一手順のため、記載を割愛。

  1. 今度はダウンロードできたらしく、iTunesに「ソフトウェアを抽出中」表示が現れる
    f:id:kachine:20160924005144p:plain
  2. iTunesに[iPhoneを待機中]表示が現れる
    f:id:kachine:20160924005230p:plain
  3. iTunesに[更新されたiPhoneソフトウェアを確認中]表示が現れる
    f:id:kachine:20160924005316p:plain
  4. iPhoneプログレスバーが以下の状態から進まない
    f:id:kachine:20160922210230j:plain
  5. 以下のダイアログが表示される
    f:id:kachine:20160924005343p:plain

何が問題なのか全くわからない、役立たずのエラーメッセージが表示された。

iPhone"iPhone"を更新できませんでした。不明なエラーが発生しました(27)。

[もっと詳しく]を押下すると以下のURLに飛ばされる。
iPhone、iPad、または iPod をアップデートまたは復元するときにエラーが表示される場合 - Apple サポート
iTunesやOSを最新版に更新しろとか、セキュリティソフトをどうにかしろとか、一般的なトラブルシューティングの事しか書かれておらず、役立たず。

Google先生に上記エラーメッセージを入れて検索すると、以下のページが見つかる。
iOS のアップデート時や復元時のエラーの解決方法 - Apple サポート
こちらのページではエラー番号に応じた原因が示されており、エラー27は以下のように記されている。

以下のいずれかのエラーが表示される場合は、ハードウェアに問題があると考えられます。
1、3、10、11、12、13、14、16
20、21、23、26、27、28、29、34、35、36、37、40、56
1002、1004、1011、1012、1014、1667、1669

ということで、ハードウェア障害が濃厚と思われる。即ちそれはユーザがどうにかできるもではなさそうな気が。。。
落ち着いてよく見ると、表記が曖昧で「ハードウェア」が指しているのはiPhoneなのかリカバリに使ってるPCなのか不明確。
PC側の問題ならどうにかできる可能性が高いので、各種モニタリングツールを動作させながら何度か再試行してみた。
 

迷走

リソースモニタ等を立ち上げながら何度か再試行してみたが、エラー27は解消せず。
その過程で、以下のファイルをiTunesが掴んでいることに気付く。

C:\Users\%USERNAME%\AppData\Roaming\Apple Computer\iTunes\iPhone Software Updates\iPhone_4.0_64bit_10.0.1_14A403_Restore.ipsw

2GB超の巨大なファイルで、これがiPhoneのファームとiOSの実体ではないかと推測される。
ファイルヘッダを確認するとPKからはじまっており、ipswという拡張子(iPhone SoftWare?)だが内部構造は単なるZIPっぽい。そして目論み通り開けた。

Path = iPhone_4.0_64bit_10.0.1_14A403_Restore.ipsw
Type = zip
Physical Size = 2305510669

   Date      Time    Attr         Size   Compressed  Name
------------------- ----- ------------ ------------  ------------------------
2016-09-03 01:49:46 .....   2191286849   2181042189  058-41234-210.dmg
2016-09-03 01:49:46 .....          246          178  ._058-41234-210.dmg
2016-09-03 02:20:46 .....     41115675     33802223  058-50460-069.dmg
2016-09-03 02:20:44 .....     40271899     32980623  058-50463-070.dmg
2016-09-03 02:22:30 .....       192023        10385  BuildManifest.plist
2016-09-03 02:19:06 D....            0            0  Firmware
2016-08-31 18:38:04 D....            0            0  Firmware\all_flash
2016-08-31 18:38:04 D....            0            0  Firmware\all_flash\all_flash.n51ap.production
2016-08-31 18:37:04 .....         6526         5950  Firmware\all_flash\all_flash.n51ap.production\applelogo@2x~iphone.s5l8960x.im4p
2016-08-31 18:37:04 .....          396          245  Firmware\all_flash\all_flash.n51ap.production\applelogo@2x~iphone.s5l8960x.im4p.plist
2016-08-31 18:37:04 .....         9447         7604  Firmware\all_flash\all_flash.n51ap.production\batterycharging0@2x~iphone.s5l8960x.im4p
2016-08-31 18:37:04 .....          292          216  Firmware\all_flash\all_flash.n51ap.production\batterycharging0@2x~iphone.s5l8960x.im4p.plist
2016-08-31 18:37:04 .....        34729        30516  Firmware\all_flash\all_flash.n51ap.production\batterycharging1@2x~iphone.s5l8960x.im4p
2016-08-31 18:37:04 .....          292          217  Firmware\all_flash\all_flash.n51ap.production\batterycharging1@2x~iphone.s5l8960x.im4p.plist
2016-08-31 18:37:04 .....        83791        19728  Firmware\all_flash\all_flash.n51ap.production\batteryfull@2x~iphone.s5l8960x.im4p
2016-08-31 18:37:04 .....          292          215  Firmware\all_flash\all_flash.n51ap.production\batteryfull@2x~iphone.s5l8960x.im4p.plist
2016-08-31 18:37:04 .....        43342        13830  Firmware\all_flash\all_flash.n51ap.production\batterylow0@2x~iphone.s5l8960x.im4p
2016-08-31 18:37:04 .....          292          216  Firmware\all_flash\all_flash.n51ap.production\batterylow0@2x~iphone.s5l8960x.im4p.plist
2016-08-31 18:37:04 .....         1768         1551  Firmware\all_flash\all_flash.n51ap.production\batterylow1@2x~iphone.s5l8960x.im4p
2016-08-31 18:37:04 .....          292          214  Firmware\all_flash\all_flash.n51ap.production\batterylow1@2x~iphone.s5l8960x.im4p.plist
2016-08-31 18:37:04 .....       101953        18330  Firmware\all_flash\all_flash.n51ap.production\DeviceTree.n51ap.im4p
2016-08-31 18:37:04 .....          396          250  Firmware\all_flash\all_flash.n51ap.production\DeviceTree.n51ap.im4p.plist
2016-08-31 18:37:04 .....         3674         3200  Firmware\all_flash\all_flash.n51ap.production\glyphplugin@1136~iphone-lightning.s5l8960x.im4p
2016-08-31 18:37:04 .....          292          216  Firmware\all_flash\all_flash.n51ap.production\glyphplugin@1136~iphone-lightning.s5l8960x.im4p.plist
2016-08-31 18:37:04 .....       618653       618843  Firmware\all_flash\all_flash.n51ap.production\iBoot.n51.RELEASE.im4p
2016-08-31 18:37:04 .....          292          218  Firmware\all_flash\all_flash.n51ap.production\iBoot.n51.RELEASE.im4p.plist
2016-08-31 18:37:04 .....       159901       159951  Firmware\all_flash\all_flash.n51ap.production\LLB.n51.RELEASE.im4p
2016-08-31 18:37:04 .....          292          215  Firmware\all_flash\all_flash.n51ap.production\LLB.n51.RELEASE.im4p.plist
2016-08-31 18:38:04 .....          417          164  Firmware\all_flash\all_flash.n51ap.production\manifest
2016-08-31 18:37:04 .....       220475        62804  Firmware\all_flash\all_flash.n51ap.production\recoverymode@1136~iphone-lightning.s5l8960x.im4p
2016-08-31 18:37:04 .....          292          212  Firmware\all_flash\all_flash.n51ap.production\recoverymode@1136~iphone-lightning.s5l8960x.im4p.plist
2016-08-31 18:37:04 .....      4710543      4711983  Firmware\all_flash\all_flash.n51ap.production\sep-firmware.n51.RELEASE.im4p
2016-08-31 18:37:04 .....          396          247  Firmware\all_flash\all_flash.n51ap.production\sep-firmware.n51.RELEASE.im4p.plist
2016-08-31 18:38:04 D....            0            0  Firmware\all_flash\all_flash.n53ap.production
2016-08-31 18:37:06 .....         6526         5950  Firmware\all_flash\all_flash.n53ap.production\applelogo@2x~iphone.s5l8960x.im4p
2016-08-31 18:37:06 .....          396          245  Firmware\all_flash\all_flash.n53ap.production\applelogo@2x~iphone.s5l8960x.im4p.plist
2016-08-31 18:37:06 .....         9447         7604  Firmware\all_flash\all_flash.n53ap.production\batterycharging0@2x~iphone.s5l8960x.im4p
2016-08-31 18:37:06 .....          292          216  Firmware\all_flash\all_flash.n53ap.production\batterycharging0@2x~iphone.s5l8960x.im4p.plist
2016-08-31 18:37:06 .....        34729        30516  Firmware\all_flash\all_flash.n53ap.production\batterycharging1@2x~iphone.s5l8960x.im4p
2016-08-31 18:37:06 .....          292          217  Firmware\all_flash\all_flash.n53ap.production\batterycharging1@2x~iphone.s5l8960x.im4p.plist
2016-08-31 18:37:06 .....        83791        19728  Firmware\all_flash\all_flash.n53ap.production\batteryfull@2x~iphone.s5l8960x.im4p
2016-08-31 18:37:06 .....          292          215  Firmware\all_flash\all_flash.n53ap.production\batteryfull@2x~iphone.s5l8960x.im4p.plist
2016-08-31 18:37:06 .....        43342        13830  Firmware\all_flash\all_flash.n53ap.production\batterylow0@2x~iphone.s5l8960x.im4p
2016-08-31 18:37:06 .....          292          216  Firmware\all_flash\all_flash.n53ap.production\batterylow0@2x~iphone.s5l8960x.im4p.plist
2016-08-31 18:37:06 .....         1768         1551  Firmware\all_flash\all_flash.n53ap.production\batterylow1@2x~iphone.s5l8960x.im4p
2016-08-31 18:37:06 .....          292          214  Firmware\all_flash\all_flash.n53ap.production\batterylow1@2x~iphone.s5l8960x.im4p.plist
2016-08-31 18:37:06 .....       101953        18324  Firmware\all_flash\all_flash.n53ap.production\DeviceTree.n53ap.im4p
2016-08-31 18:37:06 .....          396          249  Firmware\all_flash\all_flash.n53ap.production\DeviceTree.n53ap.im4p.plist
2016-08-31 18:37:06 .....         3674         3200  Firmware\all_flash\all_flash.n53ap.production\glyphplugin@1136~iphone-lightning.s5l8960x.im4p
2016-08-31 18:37:06 .....          292          216  Firmware\all_flash\all_flash.n53ap.production\glyphplugin@1136~iphone-lightning.s5l8960x.im4p.plist
2016-08-31 18:37:06 .....       618653       618843  Firmware\all_flash\all_flash.n53ap.production\iBoot.n53.RELEASE.im4p
2016-08-31 18:37:06 .....          292          211  Firmware\all_flash\all_flash.n53ap.production\iBoot.n53.RELEASE.im4p.plist
2016-08-31 18:37:06 .....       159901       159951  Firmware\all_flash\all_flash.n53ap.production\LLB.n53.RELEASE.im4p
2016-08-31 18:37:06 .....          292          216  Firmware\all_flash\all_flash.n53ap.production\LLB.n53.RELEASE.im4p.plist
2016-08-31 18:38:04 .....          417          164  Firmware\all_flash\all_flash.n53ap.production\manifest
2016-08-31 18:37:06 .....       220475        62804  Firmware\all_flash\all_flash.n53ap.production\recoverymode@1136~iphone-lightning.s5l8960x.im4p
2016-08-31 18:37:06 .....          292          212  Firmware\all_flash\all_flash.n53ap.production\recoverymode@1136~iphone-lightning.s5l8960x.im4p.plist
2016-08-31 18:37:06 .....      4710543      4711983  Firmware\all_flash\all_flash.n53ap.production\sep-firmware.n53.RELEASE.im4p
2016-08-31 18:37:06 .....          396          250  Firmware\all_flash\all_flash.n53ap.production\sep-firmware.n53.RELEASE.im4p.plist
2016-08-31 18:38:00 D....            0            0  Firmware\dfu
2016-08-31 18:37:50 .....       618653       618843  Firmware\dfu\iBEC.n51.RELEASE.im4p
2016-08-31 18:37:50 .....       618653       618843  Firmware\dfu\iBEC.n53.RELEASE.im4p
2016-08-31 18:37:54 .....       159901       159951  Firmware\dfu\iBSS.n51.RELEASE.im4p
2016-08-31 18:37:54 .....       159901       159951  Firmware\dfu\iBSS.n53.RELEASE.im4p
2016-09-02 21:55:04 .....     22448594     22408660  Firmware\Mav7Mav8-7.01.00.Release.bbfw
2016-09-02 21:55:26 .....          744          531  Firmware\Mav7Mav8-7.01.00.Release.plist
2016-08-28 20:52:38 D....            0            0  Firmware\usr
2016-08-28 20:52:38 D....            0            0  Firmware\usr\local
2016-08-28 20:52:38 D....            0            0  Firmware\usr\local\standalone
2016-09-02 23:30:00 .....     11888131     11187737  kernelcache.release.n51
2016-09-02 23:30:02 .....     11888131     11187737  kernelcache.release.n53
2016-09-03 02:21:48 .....         3439          752  Restore.plist
------------------- ----- ------------ ------------  ------------------------
                            2332650909   2305492863  64 files, 8 folders

Firmware階層下はファームウェアなのだと思われる一方、巨大なdmgiOSなのだろうか。Windowsdmg形式のディスクイメージをマウントするのは面倒なので、7zipで適当に中身を覗いてみると、058-41234-210.dmgだけは開くことができた。

Path = 058-41234-210.dmg
Type = Dmg
Method = copy[723]-723M zero2[4]-251M zlib[2688]-2681M-1366M
Blocks = 3415

   Date      Time    Attr         Size   Compressed  Name
------------------- ----- ------------ ------------  ------------------------
                    .....          512           32  0.MBR
                    .....          512           78  1.Primary GPT Header
                    .....        16384          267  2.Primary GPT Table
                    .....         3072            0  3.free
                    .....    209715200       919477  4.C12A7328-F81F-11D2-BA4B-00A0C93EC93B
                    .....   3360374784   2190151846  5.hfsx
                    .....    263986688            0  6.free
                    .....        16384          267  7.Backup GPT Table
                    .....          512           79  8.Backup GPT Header
------------------- ----- ------------ ------------  ------------------------
                            3834114048   2191072046  9 files, 0 folders

マスタブートレコードやGPTやhfsxがある辺り、iPhoneもPCみたいな感じなんだなという片鱗が見え隠れする。
 

閑話休題

本来の目的を完全に見失っているので、リカバリに話を戻す。
上記のファームとiOSっぽいものが格納されていたディレクトリの隣に、

C:\Users\%USERNAME%\AppData\Roaming\Apple Computer\iTunes\iPhone Updater Logs

というディレクトリがあり、iPhoneUpdater.logというログファイルが存在していることを発見。
「不明なエラーが発生しました(27)。」の、27の出所のようなログが末尾に出力されている。

[12:42:42.0110] <Restore Device xxxxxxxxxxxxxxxx>: Restore failed (result = 27)
[12:42:42.0110] Restore completed, status:27
[12:42:42.0110] Failure Description:
[12:42:42.0110] Depth:0 Code:-1 Error:AMRestorePerformRestoreModeRestoreWithError failed with error: 27
[12:42:42.0110] Depth:1 Code:27 Error:Failed to handle message type StatusMsg
[12:42:42.0110] Depth:2 Code:27 Error:failed to mount filesystems

ファイルシステムのマウント失敗と。さらにログを遡ってみると、SystemボリュームはOKっぽいという出力が見つかった。

[12:42:42.0001] ** Checking extents overflow file.
[12:42:42.0001] ** Checking catalog file.
[12:42:42.0001] ** Checking multi-linked files.
[12:42:42.0001] ** Checking catalog hierarchy.
[12:42:42.0001] ** Checking extended attributes file.
[12:42:42.0001] ** Checking volume bitmap.
[12:42:42.0001] ** Checking volume information.
[12:42:42.0001] ** Trimming unused blocks.
[12:42:42.0001] ** The volume System appears to be OK.

一方で、Dataボリュームには問題がある模様。

[12:42:42.0001] ** The volume Data could not be verified completely.
[12:42:42.0001] 	volume check failed with error 2 
[12:42:42.0001] 	volume type is pure HFS+ 
[12:42:42.0001] 	primary MDB is at block 0 0x00 
[12:42:42.0001] 	alternate MDB is at block 0 0x00 
[12:42:42.0001] 	primary VHB is at block 2 0x02 
[12:42:42.0001] 	alternate VHB is at block 116611662 0x6f35a4e 
[12:42:42.0001] 	sector size = 512 0x200 
[12:42:42.0001] 	VolumeObject flags = 0x07 
[12:42:42.0001] 	total sectors for volume = 116611664 0x6f35a50 
[12:42:42.0001] 	total sectors for embedded volume = 0 0x00 
[12:42:42.0001] 	CheckHFS returned -1317, fsmodified = 0
[12:42:42.0001] fsck failed on /dev/disk0s1s2

その結果、fsckコマンドが失敗し、エラー27としてハンドリングされているような感じと考えられる。
すなわちPC側の問題ではなく、iPhoneのストレージに問題があると判断できる。

INGRESSで高負荷かつバッテリ残量が逼迫した状態で電源が落ちたため、ファイルシステムに障害が発生し起動不能になった。
そしてファイルシステムが損傷を受けているため、データを維持したままリカバリすることも不可能と判断できそう。
故にデータを維持可能な[更新]は諦めて、データを失う[復元]を試すことにします。
 

3回目(復元)

1回目の3辺りまでは同一だが、[更新]ではなく[復元]を押下。

  1. 以下のダイアログが表示されるので、[更新と更新]を押下
    f:id:kachine:20160924015906p:plain
  2. iTunesに「ソフトウェアを抽出中」表示が現れる
    f:id:kachine:20160924015957p:plain
  3. iTunesに「iPhoneを待機中」表示が現れる
    f:id:kachine:20160924020039p:plain
  4. iTunesに「iPhoneの復元を確認中」表示が現れる
    f:id:kachine:20160924020120p:plain
  5. iTunesに「iPhoneソフトウェアを復元中」表示が現れる
    f:id:kachine:20160924020202p:plain
  6. iTunesに「iPhoneファームウェアを復元中」表示が現れる
    f:id:kachine:20160924020239p:plain
  7. iTunesアクティベーションロック画面が現れるので、AppleIDとパスワードを入力して[続ける]を押下
    f:id:kachine:20160924020353p:plain
  8. 以下のダイアログが表示されるので、[ダウンロードして更新]を押下
    f:id:kachine:20160924020437p:plain
  9. 以下のダイアログが表示されるので、[OK]を押下
    f:id:kachine:20160924020506p:plain
  10. iTunesに新しいiPhoneへようこそ画面が現れるので、[続ける]を押下
    f:id:kachine:20160924020558p:plain
  11. iTunesiTunesと同期画面が現れるが、同期するつもりはないのでiTunesを終了する
    f:id:kachine:20160924020708p:plain

ここまでくればiPhoneは正常に起動し、通常の状態(iOSは更新されているものの、購入直後と同様の真っ新な状態)になっている。
データは失われたものの、正常利用可能な状態に戻った。
 

まとめと雑感

  • iTunesと同期しないでiPhoneスタンドアロンで利用していると、障害時に困ることが解った。
    • まず、リカバリのためにiTunesをインストールする必要がある(インストールすればいいだけなので、これ自体はどうでもいい)。
    • 64GB版のiPhoneを使用していたため、大量の画像や動画を格納しているとiCloudの容量を超過し(有料で容量を追加しなければ)バックアップできなくなる。
    • iTunesを利用していないので、PCにもバックアップが存在しない。
    • 障害発生時にリストアする元のバックアップが存在せず、データロスト。
    • 今後はGoogle Photosを使用しようと思う。再圧縮されてもロストするよりはマシ。
  • iTunesを使ったリカバリはエラー時のメッセージが極めて不親切。サポートに掲載されている情報も内容が薄く、ほぼ参考にならない。
    • 実はログファイルはC:\Users\%USERNAME%\AppData\Roaming\Apple Computer\iTunes\iPhone Updater Logsに出力されている。
  • iTunesを使ったリカバリ時は[更新]/[復元]いずれでも、iOSが最新版に更新されてしまう。
    • そもそも[更新]/[復元]って表現がいまいち解りにくい*3。[OS/Firmwareを更新]/[初期状態に復元]的な感じに何が更新・復元されるのか明確に判る表現の方がいいような、表記が長いのは嫌なような。

 



以上。

*1:iPhone 7/7Plusでは物理ホームボタンが無くなったため、スリープ/スリープ解除ボタンと音量を下げるボタンの同時押しが強制再起動になるようです。

*2:この作業のためだけにiTunesをインストールした。

*3:英語原文の[Update]/[Restore]を直訳しただけと思われる。