恢复 Macbook APFS 分区

恢复 Macbook APFS 分区

我的问题非常类似此主题,但我的情况略有不同。

一段时间以来,我已成功使用 2 个分区双启动 OS X 和 Ubuntu。我使用 OS X 磁盘实用程序管理分区,以避免 Linux 在新的 APFS 结构下可能产生的分区表错误。

最近,我决定缩小 OS X 分区并创建第三个分区作为 Ubuntu 的专用交换分区。同样,我在 OS X 磁盘实用程序中管理分区以避免错误。我成功地在 Ubuntu 中添加了交换分区(我是当然指定了正确的分区)并且一切似乎都很好。但是,重新启动后,启动管理器(stock,不是 rEFInd)不再显示 OS X 作为启动选项。我决定使用 gdisk(感谢 Rod Smith 提供的出色的恢复工具!)来检查表结构,似乎仍然可以识别 OS X 分区,但已为其分配分区代码 FF。据我所知,所有扇区看起来都很好,让我相信我的所有数据都存在。不幸的是,我没有备份,因为我的备份驱动器最近坏了。我很幸运。

我可以简单地更改 OS X 分区的类型代码来挽救我的数据吗?据我所知,APFS 并不是这样工作的。

以下是 gdisk -l 的输出:

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.
Disk /dev/sda: 488397168 sectors, 232.9 GiB
Model: Crucial_CT250MX2
Sector size (logical/physical): 512/4096 bytes
Disk identifier (GUID): 37FE5D3B-875C-471A-B4FC-A4887DDA4659
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 488397134
Partitions will be aligned on 8-sector boundaries
Total free space is 13 sectors (6.5 KiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1              40          409639   200.0 MiB   EF00  EFI System Partition
   2          409640       416425263   198.4 GiB   FFFF  
   3       416425264       449628383   15.8 GiB    FFFF  
   4       449628384       488397127   18.5 GiB    8300 

分区 2 是我的 OS X 分区,分区 3 是我的交换分区(不确定为什么它也标记为 FFFF 而不是 8200?),分区 4 是 Ubuntu 分区。

下面是我从 swapon -s && free 得到的输出,以证明我不是白痴:

Filename                Type        Size    Used    Priority
/dev/sda3                               partition   16601556    435456  -2

              total        used        free      shared  buff/cache   available
Mem:       16335648     2089764      374952       51452    13870932    14611436
Swap:      16601556      435456    16166100

答案1

我通过以下方式解决了我的问题此线程的解决方案并且使用 GUID 7C3457EF-0000-11AA-AA11-00306543ECAC 作为我的原始 OS X 分区是一个 APFS 容器而不是 HFS 分区或逻辑卷。

总之:

1. Boot Mac in Recovery mode (Hold Cmd+R while booting)
2. Open Utilities->Terminal
3. "diskutil list" to identify the partition in question (for me, disk0s2 was marked with GUID FFFF...)
4. gpt -r show disk0" to provide the start sector and size of the disk0 partitions. The output here is very similar to the gdisk -l output of my original post above.
5. "diskutil unmountDisk disk0" to allow the next step...
6. "gpt remove -i 2 disk0" to strip the partition table data associated with the broken partition.
7. "gpt add -b 409640 -i 2 -s 416425263 -t 7C3457EF-0000-11AA-AA11-00306543ECAC"

第 7 部分是最关键的步骤。它将正确的数据添加到分区表并恢复丢失的分区。以下是该指令的细分:

'-b' is the beginning sector of the partition as observed in step 4.
'-i' is the index of the partition to be recovered; in my case, this was disk0s2, so index position 2.
'-s' is the size of the partition as observed in step 4.
'-t' is the GUID type of the partition. Specifically, the originally broken data preventing use of the partition (previously marked FFFF...).

相关内容