数据未备份,分区类型:FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF


20

当我用砖砌计算机时,我试图在MacBook上安装Linux以进行上课,该计算机现在处于无法启动状态。

我将分区设置得太小,因此我将删除并创建一个更大的分区。但是,“磁盘工具”不允许我删除小分区。我遵循了/apple//a/238088/236252的指示

但是,不仅我仍然无法删除它,而且重新启动后,我意识到我的主分区(位于同一磁盘上)已更改为FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFFFF,并且我没有启动选项。(我确定我在正确的磁盘和分区上执行了该命令)

我看到了一些类似的线程,但是我的主要可引导驱动器是损坏的驱动器。

我不想丢失任何数据。我不是最精通终端的人,所以请您提供任何帮助,我们将提供任何其他信息!

(磁盘0,分区2是我的主分区,而我只关心其中一个)

下面是 $ diskutil列表$ gpt -r show disk0的结果

在此处输入图片说明

在此处输入图片说明


更新::我已按照@klanomath的说明进行操作。在最后一步,我收到以下错误:

Checking prerequisites
Checking the partition list
Checking for an EFI system partition
Checking the EFI system partition's size
Checking the EFI system partition's file system
Problems were found with the partition map which might prevent booting
Error: -69766: The partition map needs to be repaired because there's a problem with the EFI system partition's file system
Underlying error: 8: POSIX reports: Exec format error 

最后更新:成功!

我只想感谢@klanomath帮助我完成了整个过程。他与我一起度过了11个小时的TeamViewing,直到不仅可以访问我的文件,而且直到整个崩溃之前我都可以访问我的计算机为止(这是在5个小时的电子邮件通信之后)。

对于有此问题的任何将来的读者:请不要放弃,它可以解决!


是的,我想删除deleteme分区。我查看了该帖子,但担心“ gpt remove”会擦除磁盘内容吗?
HalfwayThere's

是! 我现在已经使用Time Machine备份了所有内容。再也不会
Halfway那里

;-) ............
klanomath

Answers:


25

为了添加一个完全适合您情况的答案,我在链接的“ 重复 ”中略微修改了我的答案,然后再次将其张贴在这里。


内部磁盘的第二个分区和第三个分区的分区类型错误,您的数据可能不会丢失。

可引导的OS X分区(Recovery HD除外)具有用于标准OS X分区的GUID 48465300-0000-11AA-AA11-00306543ECAC或用于CoreStorage分区的GUID 53746F72-6167-11AA-AA11-00306543ECAC。FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF是未知的分区类型(但不是像000000-0000-0000 那样没有分区。...)。

标准OS X分区的第一块不包含非零,CoreStorage分区的第一块包含一些非零。要获取分区的前3个块,您必须使用hexdump / xxd的替代品(在Recovery Mode / OS X Installer引导驱动器中均不可用)。我发现的最好的是dd if=/dev/diskXsY count=3 | vis -c

可以使用修改GUID分区表gptgpt仅写入磁盘(512)的前34个块和后33个块,或4k磁盘的前6个块和后5个块。如果您未根据请求初始化或修复卷/磁盘,修改分区表(即使是错误的)也不会更改磁盘上任何卷的内容。您可以验证一下。


  • 引导到Internet恢复模式或OS X安装程序引导驱动器
  • 在菜单栏中的实用程序>终端中打开终端
  • 获得概述 diskutil list
  • 使用上一个命令中的磁盘标识符来获取内部磁盘的概述。下面,我假设内部磁盘的磁盘标识符为disk0(将其替换为您在环境中找到的磁盘)

    gpt -r show disk0
    
  • 使用以下命令卸载disk0 diskutil umountDisk disk0
  • 相对于FFFF ...分区的前3个块:

    dd if=/dev/disk0s2 count=3 | vis -c
    
    1. 如果以前有标准分区,则前1024个字节仅包含不可打印的(零):\ 0 \ 0 ...在〜Byte 1030,您将看到以下顺序:\ 0HFSJ \ 0

    2. 如果您具有CoreStorage分区,则会在前512个字节...\0CS\^A...中显示一些非零值,并显示字符串CS():

      \^U\^D\^A\M-s\M^?\M^?\M^?\M^?\^A\0\^P\0\0\0\M-W\^A\a\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^Pu\M-\7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0CS\^A\0\0\0\^D\0\0\^P\0\0\0\0@\0X\M-7}\^C\0\0\0\0X\M-;}\^C\0\0\0\0X\M-?}\^C\0\0\0\0X\M-C}\^C\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^P\0\0\0\^B\0\0\0006j v\^R\M-+\^U\M^[\f\M^CdG\M-y\^]...
      
  • 现在删除第三个,第四个和第二个分区:

    diskutil umountDisk disk0
    gpt remove -i 3 disk0
    diskutil umountDisk disk0
    gpt remove -i 4 disk0
    gpt remove -i 2 disk0
    

    如果收到诸如“资源繁忙”之类的错误消息,请再次卸载磁盘或使用卸载顽固的卷diskutil umount disk0sX

    重新添加具有正确类型但具有相同索引号,起始块和大小的恢复分区:

    gpt add -i 3 -b 227212504 -s 1269536 -t 426F6F74-0000-11AA-AA11-00306543ECAC disk0
    

    重新添加具有正确类型但具有相同索引号,起始块和先前大小的主分区:

    普通OS X分区(如果在dd ... vis步骤中找到了普通分区的典型痕迹):

    gpt add -i 2 -b 409640 -s 226802864 -t 48465300-0000-11AA-AA11-00306543ECAC disk0
    

    或(如果找到了CoreStorage分区的典型痕迹):

    gpt add -i 2 -b 409640 -s 226802864 -t 53746F72-6167-11AA-AA11-00306543ECAC disk0
    
  • 如果找到了标准的OS X分区,则磁盘最终应该看起来像这样:

        start       size  index  contents
            0          1         PMBR
            1          1         Pri GPT header
            2         32         Pri GPT table
           34          6         
           40     409600      1  GPT part - C12A7328-F81F-11D2-BA4B-00A0C93EC93B
       409640  226802864      2  GPT part - 48465300-0000-11AA-AA11-00306543ECAC
    227212504    1269536      3  GPT part - 426F6F74-0000-11AA-AA11-00306543ECAC        
    228482040    8496103
    236978143         32         Sec GPT table
    236978175          1         Sec GPT header
    

    或者,如果您找到了CoreStorage卷:

        start       size  index  contents
            0          1         PMBR
            1          1         Pri GPT header
            2         32         Pri GPT table
           34          6         
           40     409600      1  GPT part - C12A7328-F81F-11D2-BA4B-00A0C93EC93B
       409640  226802864      2  GPT part - 53746F72-6167-11AA-AA11-00306543ECAC
    227212504    1269536      3  GPT part - 426F6F74-0000-11AA-AA11-00306543ECAC        
    228482040    8496103
    236978143         32         Sec GPT table
    236978175          1         Sec GPT header
    
  • 最后,使用diskutil verifyDisk disk0和/或验证/修复磁盘diskutil verifyVolume disk0s2。如果需要维修,请在上述命令中使用维修(而不是验证)作为前缀,但在维修之前请与我联系并向我发送错误消息


通过TeamViewer会话进行的进一步调查显示,EFI分区和Recovery HD分区已损坏。主卷已加密。然后,Recovery HD包含一个特殊的中间FileVault密钥。如果缺少密钥,则主系统将无法启动。使用可以解锁驱动器diskutil cs unlockVolume ...

在将完整的macOS安装到拇指驱动器并启动后,将EFI分区和另一个非FileVault驱动器(实际上是Sierra VM的驱动器)的Recovery HD添加到损坏的驱动器上。仍从拇指驱动器启动,通过右键单击Finder中的卷,选择“解密卷”并输入有效的用户密码,将FileVault卷恢复为标准卷。这必须是FileVault卷上合格用户帐户的密码。其他解密卷的方法(例如- diskutil cs revert lvUUIDdiskutil cs decryptVolume lvUUID-仅在虚拟机中进行了测试-)似乎无效。但是,这可能是对VM的限制。

要将主分区(disk0s2)扩展到完整大小,请使用“磁盘工具”或diskutil resizeVolume ...命令。

该卷最初没有出现在“系统偏好设置”>“启动盘”中,但是-启动altMac会显示该主卷。这可能适当地使该卷的boot.efi变好了。(现在是标准)卷再次出现在启动盘中。


感谢您抽出宝贵的时间来帮助您。我只是想清楚一点:在上面的帖子中,关于第7个项目符号,当您用“ gpt remove”说“现在删除第三个,第四个和第二个分区”时,不会删除我的数据第二个分区(这是我关心的分区)?
HalfwayThere's

对不起,我错过了!我现在有点发狂
HalfwayThere's

尝试验证disk0时,在最后一步收到错误消息。'错误:-69766:由于EFI系统分区的文件系统存在问题,因此需要修复分区图。潜在错误:8:POSIX报告:exe格式错误'
HalfwayThere

@HalfwayThere这是一个丑陋的错误,但您的MacBook仍可能恢复到可启动状态。只需尝试启动它。EFI错误可能是Linux安装的结果,必须使用其他工具/在第二步中解决...
klanomath

1
+1这是一个很好的答案!它不仅可以解决问题,而且可以一路培训用户。您真的竭尽所能来帮助OP,我希望您能为此获得更多的支持!:)
Monomeeth

1

APFS High Sierra会话期间也可能发生此问题!在使用“磁盘工具”应用程序和diskutil命令进行更改后,我昨天遇到了这个问题:

    sh-3.2# diskutil list
    /dev/disk0 (internal, physical):
       #:                       TYPE NAME                    SIZE       IDENTIFIER
       0:      GUID_partition_scheme                        *500.3 GB   disk0
       1:                        EFI EFI                     209.7 MB   disk0s1
       2: FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF               60.0 GB    disk0s2

    /dev/disk1 (synthesized):
       #:                       TYPE NAME                    SIZE       IDENTIFIER
       0:      APFS Container Scheme -                      +60.0 GB    disk1
                                     Physical Store disk0s2
       1:                APFS Volume APPLESSD                47.1 GB    disk1s1
       2:                APFS Volume Preboot                 19.4 MB    disk1s2
       3:                APFS Volume Recovery                517.8 MB   disk1s3
       4:                APFS Volume VM                      1.1 GB     disk1s4

    sh-3.2# gpt -r show /dev/disk0
          start       size  index  contents
              0          1         PMBR
              1          1         Pri GPT header
              2         32         Pri GPT table
             34          6         
             40     409600      1  GPT part - C12A7328-F81F-11D2-BA4B-00A0C93EC93B
         409640  117111080      2  GPT part - FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF
      117520720  859584307         
      977105027         32         Sec GPT table
      977105059          1         Sec GPT header

我不认为它将在该配置下重新启动(或使用GPT备份表重新启动?不知道)。感谢上面的解释,我可以在实时会话中解决该问题,但是我不得不使用稍微不同的解决方案该解决方案仅在禁用SIP的情况下才有效,如果启用,则必须重新引导,禁用和使用以前的解决方案。 ,此问题可能与禁用的SIP有关,因此不会在启用的SIP上发生(我不知道。)

即使disk0卸载,似乎gpt也不允许在实时会话中修改GPT:

sh-3.2# gpt remove -i 2 disk0
gpt remove: unable to open device 'disk0': Resource busy

因此,我改为使用第三方工具gdisk(通过自制程序获得)来修改的类型disk0s2

sh-3.2# gdisk /dev/disk0
GPT fdisk (gdisk) version 1.0.3

Warning: Devices opened with shared lock will not have their
partition table automatically reloaded!
Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.

Command (? for help): i
Partition number (1-2): 2
Partition GUID code: FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF (Unknown)
Partition unique GUID: B40FA371-D92C-4EBF-B846-B0A9FB6DCD71
First sector: 409640 (at 200.0 MiB)
Last sector: 117520719 (at 56.0 GiB)
Partition size: 117111080 sectors (55.8 GiB)
Attribute flags: 0000000000000000
Partition name: 'Apple_HFS_Untitled_2'

Command (? for help): t
Partition number (1-2): 2
Current type is 'Unknown'
Hex code or GUID (L to show codes, Enter = af00): 7C3457EF-0000-11AA-AA11-00306543ECAC    
Changed type of partition to 'Unknown'

Command (? for help): i
Partition number (1-2): 2
Partition GUID code: 7C3457EF-0000-11AA-AA11-00306543ECAC (Unknown)
Partition unique GUID: B40FA371-D92C-4EBF-B846-B0A9FB6DCD71
First sector: 409640 (at 200.0 MiB)
Last sector: 117520719 (at 56.0 GiB)
Partition size: 117111080 sectors (55.8 GiB)
Attribute flags: 0000000000000000
Partition name: 'Apple_HFS_Untitled_2'

Command (? for help): w

Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!

Do you want to proceed? (Y/N): Y
OK; writing new GUID partition table (GPT) to /dev/disk0.
Warning: Devices opened with shared lock will not have their
partition table automatically reloaded!
Warning: The kernel may continue to use old or deleted partitions.
You should reboot or remove the drive.
The operation has completed successfully.

检查出来:

sh-3.2# gpt -r show /dev/disk0
      start       size  index  contents
          0          1         PMBR
          1          1         Pri GPT header
          2         32         Pri GPT table
         34          6         
         40     409600      1  GPT part - C12A7328-F81F-11D2-BA4B-00A0C93EC93B
     409640  117111080      2  GPT part - 7C3457EF-0000-11AA-AA11-00306543ECAC
  117520720  859584307         
  977105027         32         Sec GPT table
  977105059          1         Sec GPT header
sh-3.2# diskutil list
/dev/disk0 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *500.3 GB   disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:                 Apple_APFS Container disk1         60.0 GB    disk0s2

/dev/disk1 (synthesized):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      APFS Container Scheme -                      +60.0 GB    disk1
                                 Physical Store disk0s2
   1:                APFS Volume APPLESSD                47.1 GB    disk1s1
   2:                APFS Volume Preboot                 19.4 MB    disk1s2
   3:                APFS Volume Recovery                517.8 MB   disk1s3
   4:                APFS Volume VM                      1.1 GB     disk1s4

然后,最后检查有diskutil verifyDisk disk0diskutil verifyVolume disk0s2没有警告或错误。重新启动成功。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.