経緯
MacBookのBootcampに入れてるWindows 10の容量が足りない…
そうだ!
High Sierraの領域を削ってWindowsに追加しよう!
WindowsにAOMEI Partition Masterを入れて、macの領域から10GB持ってきて、再起動だ!
あれ…
macOSが起動しないでWindowsが起動しちゃうな…
option(⌥)+電源ボタンでOS選択画面を表示してもmacが表示されないぞ…
原因
APFSファイルシステムを破壊してしまった
macOS High Sierraから採用された、macOSの新ファイルシステムであるAPFS(Apple File System)は、通常Windows等のDOS/V互換機で使用されているMBR/GPT、Mac OS Xから採用されていたHFS+とは違い、「コンテナ」を使用しています。
従来のファイルシステム(MBR/GPT/HFS+ etc…)は、パーティーションを複数作る際は予め容量を決定し、その容量以上は使用することができない仕様でした。
このAPFSは、物理的なHDDの中にコンテナを作り、その中にパーティーションを作成する方式をとっています。
これにより、各パーティーションがコンテナの最大容量を越えないサイズのファイルを扱うことができるようになり、パーティーションを作成する際に容量を決める必要がなくなりますが、一般の使い方ではこのようなことは気にしない方が多いはずです。
APFS のおかげで、ベータ (プレリリース) 版の macOS を含む、複数のバージョンの macOS を今までよりずっと簡単に切り替えられるようになりました。
起動ディスクにボリュームを追加して、そこに macOS をインストールすれば、その macOS とほかのボリューム上の macOS を、それぞれが別個のディスク上にあるかのように切り替えて使うことができます。APFS の複数のボリュームでストレージスペースが共有されるため、新しいボリューム用に領域を予約する必要もありません。そのサイズは収容するコンテンツに合わせて自動的に調整されます。
個別の APFS ボリュームに macOS をインストールする – Apple サポート
今回のMacBookは、特にバックアップをとっておらず、また1年くらい使っていなかったため保存されているファイルを忘れており、勉強も兼ねてファイルのサルベージに挑戦。
状況の確認
以下、再現画像や記憶のみを頼りにしている箇所があります。
$ sudo diskutil list
ターミナル(Windowsでいうコマンドプロンプト)で、現在のボリュームの状態を確認。
上の画像は正常な状態ですが、実際はこんな感じでした。
/dev/disk0 (internal, physical):
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *121.3 GB disk0
1: EFI EFI 209.7 MB disk0s1
2: FFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF 84.0 GB disk0s2
3: Microsoft Basic Data BOOTCAMP 36.5 GB disk0s3
4: Windows Recovery 589.3 MB disk0s4
正常な状態だとdisk0s2
にApple_APFS
と書かれているはずが、ヤバいことになっていました。
macOS復元ユーティリティ
macOSの復元パーティションが正常な場合
1. Mac の電源を入れて、すぐに「command (⌘) + R」キーを長押しします。
2. Apple ロゴ、回転する地球儀、その他の起動画面が表示されたら、キーから指を放します。
3. Mac の管理者のログインパスワード、Apple ID のパスワード、またはファームウェアパスワードの入力を求められる場合があります。要求されたパスワードを入力して先に進んでください。
4. ユーティリティウインドウが表示されたら起動は終了です。
macOS 復元について – Apple サポート
この方法でmacOS復元ユーティリティが起動できず、地球儀マークが表示される場合は、以下の方法を試してください。
macOSの復元パーティションが壊れている場合
上記手順1のキーコンビネーションを「option + command (⌘) + R」もしくは「shift + option + command (⌘) + R」にし、Thunderbolt-Ethernetケーブルか無線LAN経由で復元システムをダウンロードする。
この方法でもmacOS復元ユーティリティを起動できない場合、ブートUSBを作成してください。
(他のMacが必要)
復旧方法
案1)SSDを外付けに変換して読み込む
開腹作業が必要で、かつ保証が無くなってしまうので今回はパス。
読み込めたら、案4と同じ結果になる
案2)ターゲットディスクモードを使用
FireWireポートまたはThunderboltポート付きのMacコンピュータが2台ある場合は、それらを接続して、一方のMacでもう一方のMacを外部ハードディスクとして表示できます。これを「ターゲットディスクモード」と呼びます。
ターゲットディスクモード – Apple サポート
Macの調達は可能だったが、Thunderboltケーブルが高価なため、予算不足により今回はパス。
案3)ネットワーク経由で読み込む
起動しなくなったMacからネットワーク経由でデータをサルベージする
このサイトが似たようなことを行っていたが、sshやコマンドの知識が無かったため、今回はパス。
案4)BootCampのWindowsで読み込む
ちょうど起動するBootCamp領域のWindows 10があったので、ネットの海から情報を探していたところ、Qiitaに似たような情報があったので、これを流用してサルベージを試しました。
Macの起動ディスクのパーティションラベルが見えない – Qiita
データのサルベージ
TestDiskのダウンロード
自分の環境で起動できるバージョンをダウンロードしてください。
β版だと少し不安だったので、安定版を使用しました。
特にWindowsだと、64bitで動かなくても32bitで動くかもしれないので、32bit版も試してみてください。
TestDiskとは
・パーティションテーブルを復元し、削除されたパーティションを復元する
TestDisk公式wiki
・バックアップからFAT32起動セクタを復元する
・FAT12/FAT16/FAT32起動セクタを再構築する
・FATテーブルを復元する
・NTFS起動セクタを再構築する
・バックアップからNTFS起動セクタを復元する
・MFTミラーを使ってMFTを修復する
・ext2/ext3/ext4のバックアップをスーパーブロックに配置する
・FAT、exFAT、NTFS、ext2のファイルシステムから削除されたファイルを復元する
・削除されたFAT、exFAT、NTFS、ext2/ext3/ext4のパーティションからファイルをコピーする
いろいろな機能がありますが、おおまかには
- パーティーションorボリュームの復元
- パーティーションorボリュームの吸い出し
以上の2点を行うソフトです。
GNU General Public License v2+のオープンソースで、CUIのようなTUIを採用しています。
(ネットでTUIを検索してもほとんど情報が出てこない…)
マウスではなく、キーボードの上下左右と一部のアルファベットキーを使用します。
TestDiskで操作可能なファイルシステム
- BeFS ( BeOS )
- BSD disklabel ( FreeBSD/OpenBSD/NetBSD )
- CramFS, 圧縮済みファイルシステム
- DOS/Windows FAT12、FAT16、FAT32
- XBox FATX
- Windows exFAT
- HFS、HFS+、HFSXの階層的ファイルシステム
- JFS、IBMの実行記録機能付きファイルシステム
- Linux btrfs
- Linux ext2、ext3、ext4
- Linux GFS2
- Linux LUKS 暗号化パーティション
- Linux RAID md 0.9/1.0/1.1/1.2
- RAID 1: ミラーリング
- RAID 4: パリティデバイスを含むストライプアレイ
- RAID 5: パリティ情報を分散保存したストライプアレイ
- RAID 6: パリティ情報を二重に冗長化して分散保存したストライプアレイ
- Linux Swap(バージョン1、2)
- LVM and LVM2, Linux論理ボリュームマネージャ
- Macパーティションマップ
- Novellストレージサービス NSS
- NTFS ( Windows NT/2000/XP/2003/Vista/2008/7 )
- ReiserFS 3.5、3.6、4
- Sun Solaris i386 ディスクラベル
- Unix File System のUFSとUFS2 (Sun/BSD/…)
- XFS、SGIの実行記録機能付きファイルシステム
- Wii WBFS
- Sun ZFS
大昔HomebrewができたWiiのWBFSがいじれるのはすごいと思ったが、今回課題のAPFSには非対応…
ということで、他のサイトでよく行われているAnalyzeではなく、「Image Creation」を行いました。
TestDiskのオーソドックスな使い方は、以下のページが分かりやすいです。
いざ、救出!
起動したら、ログを記録するかを聞かれるので、「Create」を選択。
macOSが格納されているボリューム、ここでは「APPLE SSD…」から始まるDiskを選択し「Proceed」を選択。
おそらく「EFI GPT」が選択されていると思うので、そのままEnterを押す。
「Advanced」を選択。
macOSがあるパーティーション、ここでは「Apple APFS」を選択。
ちなみに、「MS Data」はBootCamp領域のWindowsが格納されている。
吸い出し先を選択するが、ここは初心者にはとても厄介。
Linuxっぽく表示しているため、初見ではわかりにくかった。
「..」で、上のディレクトリへ移動する。
今回は、Cドライブ直下に作成したBackupフォルダに抽出するので、Cドライブに移動し、Backupフォルダを選択。
保存先のディレクトリに到着したら、キーボードの「C」を押す。
このような感じで抽出が進む。
こうなったら成功。
「Ok」を選択し、TestDiskを終了する。
macOSで読み込む
抽出したbackup.ddファイルの拡張子を.imgに変更し、macのFinderで読み込む(普通にダブルクリック)と、問題が起こる前のmacの中身が完全に読み込めます。
他のmacがない方は、一度macOSを再インストールしてから読み込むと良いと思います。
(ファイルを全て消しちゃうけど)
このサイトあたりが画像付きでわかりやすいと思います。
https://gori.me/mac/mac-tips/105061
まとめ
非常に焦りました。
macが文鎮化したら、たぶん半年くらい立ち直れなかったと思います。
とりあえず、RATOCのRAIDケースで全てのパソコンのOS領域をバックアップするようにしました。
何かご質問等ございましたら、下のコメント欄やお問い合わせからお願いします。
コメント