我是否需要为共享公共磁盘的每个操作系统设置单独的 EFI 分区?

我是否需要为共享公共磁盘的每个操作系统设置单独的 EFI 分区?

我在 MacBook Air 上安装 FreeBSD。在对磁盘进行分区时,安装程​​序告诉我

This partition scheme requires a boot partition for the disk to be bootable. Would you like to make one now? <Yes/No>

问题是,我的内置 SSD 上已经有一个 EFI 分区,大概是为 macOS 服务的。我需要为 FreeBSD 创建一个不同的分区吗?

我做过一些痛苦关于这个问题的实验:

  • 当我选择时No,FreeBSD 变得无法启动,即“FreeBSD”根本不显示在 rEFInd 的菜单中。
  • 当我选择Yes“FreeBSD 安装程序似乎创建了一个非常糟糕的混合型MBR在你的磁盘上,这会让 OS X 感到困惑”,因此我的磁盘损坏了。幸运的是,在我关注@Rod Smith 的指示(创建了一个新的保护性 MBR 来替换坏的混合 MBR),这个问题现在已经解决,但现在我的磁盘有 2 个 EFI 分区。

    现在我的内部 SSD 如下所示:

    sunqingyaos-MacBook-Air:~ sunqingyao$ diskutil list
    /dev/disk0 (internal, physical):
       #:                       TYPE NAME                    SIZE       IDENTIFIER
       0:      GUID_partition_scheme                        *121.3 GB   disk0
       1:                        EFI EFI                     209.7 MB   disk0s1
       2:                  Apple_HFS Macintosh HD            60.6 GB    disk0s2
       3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3
       4:                        EFI EFI                     209.7 MB   disk0s4
       5:                FreeBSD UFS                         53.5 GB    disk0s5
       6:               FreeBSD Swap                         6.2 GB     disk0s6
       7: 83BD6B9D-7F41-11DC-BE0B-001560B84F0F               101.4 KB   disk0s7
    

    还,

    sunqingyaos-MacBook-Air:~ sunqingyao$ sudo gpt -r show disk0
    Password:
          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  118284248      2  GPT part - 48465300-0000-11AA-AA11-00306543ECAC
      118693888    1269536      3  GPT part - 426F6F74-0000-11AA-AA11-00306543ECAC
      119963424     409600      4  GPT part - C12A7328-F81F-11D2-BA4B-00A0C93EC93B
      120373024  104447992      5  GPT part - 516E7CB6-6ECF-11D6-8FF8-00022D09712B
      224821016   12156928      6  GPT part - 516E7CB5-6ECF-11D6-8FF8-00022D09712B
      236977944        198      7  GPT part - 83BD6B9D-7F41-11DC-BE0B-001560B84F0F
      236978142          1
      236978143         32         Sec GPT table
      236978175          1         Sec GPT header
    

答案1

ESP 是通常跨操作系统共享,所以你不需要第二个;但它也不会造成问题。也就是说,一些工具或操作系统可能会因两个 ESP 的存在而感到困惑。Windows 安装程序是我所知道的唯一示例。(这会影响 Windows 7,但我不知道后续版本。)如果你遇到这样的问题,你可以随时更改 ESP 上的类型代码希望 Windows 安装程序使用 - 即使只是暂时的。(如果您想要安装两个 Windows 版本,每个版本都有自己的 ESP,则临时更改会很有用。)

ESP 相对于其他分区的位置使得删除其中一个分区变得很麻烦——要恢复空间,您需要移动至少一个分区的起始点,这既耗时又危险。这可能不值得只恢复大约 200 MB 的空间——但话又说回来,您的磁盘只有 120 GB。您必须判断您的空间有多宝贵,以及所涉及的时间和风险。

答案2

删除分区 4因为它具有与第一个分区相同的签名(C12A7328-F81F-11D2-BA4B-00A0C93EC93B)!

UEFI 启动顺序只需要一个 EFI 系统分区(ESP)。

UEFI 启动管理器检查设备并加载由 NVRAM 中存储的第一个启动候选者寻址的文件(操作系统加载器)(如果其设备存在),否则尝试下一个启动候选者,依此类推。

所有 UEFI 加载程序都存储在 ESP 上:

\EFI\公司.....

\EFI\boot... 是后备引导加载程序。

MBR 不应与 UEFI 启动过程一起发挥作用。只有较旧的 BIOS 启动才需要 MBR。也许加载的操作系统 (OSX) 正在检查 MBR,因为 GPT 样式的磁盘具有 GPT 分区表,并且不使用存储在 MBR 中的信息。

GPT 样式磁盘上还有混合启动过程:

MBR 代码从特殊的“BIOS 启动分区”加载启动代码,而该分区又“知道”下一步要加载什么。某些 Linux 发行版在您使用 BIOS 启动加载安装介质然后进行安装时创建了此方案 - 假定 BIOS 在 GPT 磁盘上启动。

使用 UEFI 固件和 GPT 磁盘始终使用 UEFI 启动来启动任何(安装)媒体!!!

相关内容