如何修复损坏的EFI分区?


24

我有一台运行OSX Lion的iMac。我还安装了bootcamp和Windows7。在安装Windows 7的过程中,我并没有完全注意,而是删除并格式化了EFI分区。

随着计算机继续正常运行并同时启动到Windows和OSX中,我并没有真正意识到它的重要性。

我确实注意到EFI固件更新无法安装,但是请不要理会。

但是,现在我要安装Mountain Lion,这会带来很多麻烦。没有有效的EFI分区,Mountain Lion将无法安装。

这是我的分区表。

   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *1.0 TB     disk0
   1:                  Apple_HFS EFI                     209.7 MB   disk0s1
   2:                  Apple_HFS Macintosh HD            799.0 GB   disk0s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3
   4:       Microsoft Basic Data BOOTCAMP                200.3 GB   disk0s4

如您所见,我可以使用以下命令修复EFI分区:

newfs_hfs -v EFI / dev / disk0s1

这似乎并未创建正确的分区类型,而是创建了Apple_HFS而不是EFI。

我的问题是(不格式化磁盘)如何创建EFI分区?

谢谢Rich


另请参阅以下答案以更改分区类型:apple.stackexchange.com/a/342139/14586
mivk

Answers:


31

您可以使用命令行gpt工具重新创建EFI系统分区(ESP)。它应从扇区40开始,长度应为409600扇区(恰好为200MiB)。GPT条目的类型应为C12A7328-F81F-11D2-BA4B-00A0C93EC93B,如果您有混合MBR,则类型应为EE。该格式实际上是FAT的子集,而不是HFS +。您可以使用“ sudo gpt -r show disk0终端”窗口中的命令阅读GPT ,这将产生如下所示的输出:

      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  447801712      2  GPT part - 48465300-0000-11AA-AA11-00306543ECAC
  448211352    1269536      3  GPT part - 426F6F74-0000-11AA-AA11-00306543ECAC
  449480888   40753831         
  490234719         32         Sec GPT table
  490234751          1         Sec GPT header

您可以在索引1处看到正确的EFI分区。如果该行不完全匹配,最简单的方法是删除该分区并重新创建它。

从这里继续之前,请确保您知道自己在做什么-如果搞砸了,可能会丢失数据。

您无法gpt在安装驱动器上的分区时使用分区表来编辑分区表,因此您需要从另一个驱动器(例如,带有OSX安装程序的USB记忆棒)启动,或者在目标磁盘模式下运行mac并从中进行分区另一台Mac。您可能需要diskutil unmountDisk disk0在继续操作之前和之间使用来卸载任何自动安装的卷。

要删除“不良” EFI分区,请运行以下命令:

sudo gpt remove -i 1 disk0

确保disk0确实是您要更改的磁盘-重启后数字可以更改。此外,这仅在您已经有非ESP分区代替ESP时才起作用-如果没有,则删除分区1可能是灾难性的!在这种情况下,您将需要移动索引,因为我认为ESP必须具有索引1。从它的声音来看,在您的情况下这不是必需的。

删除后,重新添加具有正确布局的分区并键入:

sudo gpt add -b 40 -i 1 -s 409600 -t C12A7328-F81F-11D2-BA4B-00A0C93EC93B disk0

这应该可以对分区本身进行分类,但是当您在其位置创建了HFS分区时,还需要修复其格式。

Apple在此处记录EFI系统分区的格式。如您所见,他们建议您克隆现有的ESP,而不要使用来重新创建文件系统newfs_msdos。如果您的外部驱动器具有GPT分区表(OSX安装棒应具有该表),则可以对其进行克隆。

确保您的磁盘和分区号正确无误,否则可能会覆盖数据:

如果disk1是您的外部驱动器,并且它包含一个ESP作为第一个分区(disk1s1),而disk0是您要修复其ESP(disk0s1)的驱动器,请运行以下命令:

sudo dd if=/dev/disk1s1 of=/dev/disk0s1

这将复制disk1的ESP的每个单个块,并用它覆盖disk0的ESP中的相应块。

或者,与一起赌博newfs_msdos


感谢您的详细答复。我最终确实设法使用iParition解决了我的问题。但是,通读您的方法,似乎是iParition不存在时我正在寻找的确切方法。再次感谢,我将其标记为正确答案。
2012年

在GParted将ESP克隆到SSD上的2048块之后,此方法在10.6上对我非常有用。引导安装磁盘并遵循上述步骤,我曾dd在将其克隆,删除,重新创建和写回之前将克隆的ESP存储在文件中。谢谢!
Nick Westgate 2012年

使用ssd混合驱动器在我的mbp上表现出色。EFI被grub安装覆盖,此方法可以很好地将其恢复。
sean_m 2013年

感谢分享。要保存类型,您实际上可以将EFI指定为分区类型,而不是GUID:sudo gpt add -b 40 -i 1 -s 409600 -t EFI disk0

1
如何更改分区的索引,以便ESP可以位于索引1?
addison 2014年

3

尝试这个:

  1. 备份准时驱动器。
  2. 重新启动,在Lion安装磁盘上重新启动。
  3. 转到磁盘实用程序。
  4. 擦除分区。
  5. 清除高清。
  6. 再次重新擦除分区,这一次为其命名。
  7. 单击高清。
  8. 验证高清以确认EFI错误消息不再出现。
  9. 返回安装屏幕。
  10. 选择从备份还原。


0

尝试使用iPartition 3或更高版本。进入查看菜单并显示系统设备。由于缺少200mb EFI,因此希望将磁盘上的第一个分区缩小200mb。创建新分区,然后在磁盘检查器窗口中有一些选项卡。您可以选择许多不同类型的文件系统。只需选择“ EFI系统分区”。


0

这为我解决了这个问题。

1)使用Winclone备份Bootcamp分区

2)使用Carbon Copy复制将Mac OSX驱动器备份到外部驱动器

3)将Mountain Lion安装到闪存驱动器或外部驱动器

4)购买iPartition的副本,下载到闪存驱动器或外部驱动器

5)按住Option键重新启动以获取启动菜单

6)选择要从中启动的闪存或外部驱动器

7)提取iPartition并执行。从下拉菜单中选择查看和检查器。

8)在“分区”选项卡下选择“ Bootcamp分区”,然后选中列表中的两个框(在Windows中为“活动”和“可见”),然后关闭该框。

9)“ Go”按钮应亮起,如果没有点亮,则将Bootcamp分区稍长一些。我的是2 TB OSX,2.5 TB驱动器上有500 GB Windows。

10)一旦按下“执行”按钮,它将开始处理;尽管您可能必须杀死使它无法运行的任何进程(使用“活动监视器”完成)

11)完成后,关闭并卸下外部启动设备,然后重新打开Mac的电源。它应该是固定的,并且可以正常启动-至少是我的。

我正在运行具有16 GB RAM和2.5 TB硬盘的iMac 27、3.2 GHz Intel Core i3。我列出的大多数项目都是在Mountain Lion安装之前完成的,但当前备份的是Bootcamp驱动器。即使Bootcamp无法启动,并且还原过程在写入MBR时产生错误,Winclone仍能正常工作。我只是忽略了该错误,并继续进行其余的过程。显然,Mountain Lion将PMBR或EFI甚至rEF弄乱了。现在已修复。

*免责声明**

虽然此过程对我来说可能很好,但对您而言可能不起作用!与编辑分区表和引导数据的任何过程一样,您也有丢失数据的机会。如果要保留数据,请备份驱动器。

我强烈建议使用Carbon Copy复制克隆来备份OSX分区,因为它可以创建我从未遇到过的可引导克隆。

我确信其他人在解决此问题上都取得了成功,并感谢所有发表了他们所做的工作的人,因为这有助于我在iMac上解决此问题。

谢谢大家,希望对您有所帮助。(发布在Apple论坛中) https://discussions.apple.com/message/19220149#19220149

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.