これは、MacBookPro13inch with touchbarにLinuxがdd
焼きされたUSBメモリを指して、そのメモリを初期化しようと思っていた矢先の話である。
前提として、macOS X 10.13 High Sierra かつ、暗号化APFS環境の話です。
FusionDriveの人は更に特殊なので、とっととGenius Barに持っていくこと!
やらかし
$ diskutil eraseVolume "Free Space" dummy disk0s1
はい注目、disk0
です。理由理屈関係なくdisk0
を対象にdiskutil
でなにかしてはいけません!
ここで、diskutil list
をつかって普通の構成を覗いてみましょう↓
$ diskutil list internal
/dev/disk0 (internal):
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme 121.3 GB disk0
1: EFI EFI 314.6 MB disk0s1
2: Apple_APFS Container disk2 120.9 GB disk0s2
## https://beta.apple.com/sp/betaprogram/apfsfusion から引用
このようにdisk0s1
はEFI
ボリュームであることがわかりますが、先程消しました。
この状況では、Macはおろかコンピュータは起動できなくなってしまいます(※出来る場合もある)
対応策
まず、以下全ての用意が済むまで、再起動はしないこと。なぜならば、シャットダウンしなければ問題にならないので。
再起動やkernel panicなどでcrashするまえにやること
- Time Machineでバックアップをします
- 必要なデータは更に手動でバックアップしておきます
-
id_pub
など秘密鍵やキーチェーン、二段階認証系をなんとかバックアップします - お気に入りなどをなんとかします
つまり消し去る前提でなんとかしましょう。。
以下を諦めましょう
- いまのパーティションを消さずに済ます
- 時間をかけずに復旧
ただし、rEFItとかで何とかする方法とか、ぼくの環境ではうまく動かなかったが、単純なリカバリモードでの再インストールでもうまくいく場合があります。
チャレンジ 1
Command+R
によるリカバリモードでの macOS High Sierra 再インストールは、うまく行きませんでした。
順調に進むのですが、再起動2回目あたりの、このエラーが出て止まってしまう。
これ、ぐぐるとファイアウォール内だからダメとかあるので、テザリングしたりなど色々試しましたが、何やってもダメでした。
チャレンジ 2
Command+S
起動のシングルモードでのfsck -fy
ですが、これもやったんですがAPFS暗号化環境では、行われないようで、ぐぐってもあんまり知見がなくAPFS用のコマンドも用意されるっぽいんですが、何れにしてもEFIボリュームは復活しなかった。
チャレンジ 3
Option+Command+R
による最新バージョンをAppleサーバからとってくる方法の再インストールも、チャレンジ1と同じ画面が出てあぼーん。
チャレンジ 4
ついに諦め、フォーマットすることにした。とりあえずAPFSではmacOSが最新であれば最善なはずなので、Option+Command+R
起動し、ターミナルを起動
メモしたりしてないので、とりあえずやったことを羅列する。意味がわからない人はやらないほうが身のためです。。
↓まずは、APFSコンテナを削除します。論理ボリューム?なので、これをするとJHFS+が生まれます…
$ diskutil apfs deleteContainer disk0s1
その生まれたボリュームも消します↓
$ diskutil eraseVolume "Free Space" dummy disk0s1
これをすると、disk0
がスッキリ何もない状態になります。なるはず。
あとはAPFSボリュームをつくるだけ
そしたら、ボリュームを作るのはディスクユーティリティでもできるので、そっちに切り替えて、SSDに対して「消去」でAPFSを作って下さい。
もしTime Machineから復旧を考えていて、元々APFS暗号化を使っていた場合は、ここでAPFS暗号化でボリュームを作っておくのが良いです。
うまくボリュームが作れると、そのタイミングでEFIを作ってくれます。EFI REBORN!!
↓diskutil list
で確認しても戻ってきています(実際の画面)
Time Machine からの復元
さあリカバリモードの最初にもどって気合を入れて「Time Machineバックアップから復元」します。
が、復元基となるボリュームがAFP先のAirMacに繋がったUSB HDDであって、これが最初から出てこない。
この「その他のサーバ」は、URLで記入しろと言う。ここで、ターゲットのURLは afp://SkyTower.local/Time Capsule
だが、スペースを不正なURLだと判断する。
↓URLエンコードして、スペースを%20
にしてやるとうまくいく
そんで、username/passwd入れれば、きっと出てくるはず。
したら最新のバックアップをチョイスして、ディスクユーティリティでさっき作ったばっかりのAPFSボリュームに対して復元すれば…ッ!
EFI ボリュームは消しちゃダメ
未来の自分とのお約束だよ
# 参考リンク