如何为 EFI 分区和引导加载程序设置单独的 SSD,以实现 Linux 和 MacOS 双启动

如何为 EFI 分区和引导加载程序设置单独的 SSD,以实现 Linux 和 MacOS 双启动

我目前正在努力适应新硬件,并在其上第一步安装 Ubuntu(16.04 每日版本),然后安装 MacOS。

硬件:

  • 超微 x10DAi
  • 双至强
  • 固件:UEFI

下面描述了我尝试安装 Ubuntu 的硬件设置:

sda1 个硬盘/home

sdb1 个 HDD /usr(用于安装几个需要的应用程序,/usr这些应用程序将占用大量的磁盘空间)

sdc1x SSD /(Linux)

sdd1x SSD 用于EFI引导加载程序(用于双启动 Linux 和 MacOS)

sde1x SSD 用于/(macosx)

从这个设置开始,我需要自己配置分区,这通常不是什么大问题,但不知何故,我总是在重新启动时得到 grub shell(我认为由于安装了 Linux 和 MacOS,我还需要另一个引导加载程序)。

我在分区期间做了什么:

在 XFS 中分区sda1并将 mountflag 设置为/home(完整磁盘)

在 XFS 中分区sdb1并将 mountflag 设置为/usr(完整磁盘)

sdc1在交换分区中设置交换标志为活动 (3GB)sdc2在 XFS 中分区并将挂载标志设置为( /sdc 的其余部分)

EFI 中的分区sdd1(1GB)

MacOS 分区sde未格式化,因为第二步将安装 MacOS 系统。

Ubuntu 让我选择在哪里安装引导加载程序,我选择了sdd

Ubuntu 16.04 选择引导加载程序设备

除了安装过程中出现格式错误消息sdd(顺便说一下,这是一块全新的 SSD)之外,安装过程非常顺利。重启后,我总是进入 grub shell。

在 grub shell 中,ls 会显示一些error: failure reading sector 0xXXX hd1

但是,我决定设置相同的硬件,但让引导加载程序的安装目标代替sda系统sdd启动。

我的问题是:

  1. 为什么 grub 无法自行安装到sdd,或者我的分区设置有故障?
  2. 我如何正确格式化sdd并安装 EFI 分区和引导加载程序(能够启动 Linux 和 MacOS),以便sdd该磁盘能够启动 Ubuntu Linux 和 MacOS(启动驱动器)?
  3. 如果可以做到这一点:从我读到的有关 UEFI 的内容来看,我不需要在重新安装 Linux 时设置另一个 EFI 分区(只需设置/,,/home/usr完成了),对吗?

如果我在这里错过了一些有用的信息,请告诉我,我会尽力提供给您。

==============================================================================

编辑1的摘要:

  • 编辑标题以更清楚我将双启动 Linux 和 MacOS
  • 为后续安装 MacOS 添加了磁盘信息
  • 添加了“用于引导加载程序安装的设备”的屏幕截图
  • 添加了验证 UEFI 启动的屏幕截图
  • /usr添加了为什么使用独立硬盘而不是 SSD 的信息

答案1

首先,您的分区很浪费。基本安装需要一个分区,用于根 ( /)。(可能需要另一个分区用于引导加载程序;稍后会详细介绍。)在此配置中,所有目录和子目录都位于此分区上。当您创建另一个分区时,它会被挂载到您在此目录树中指定的某个位置,从而减轻根 ( ) 的一些空间需求/并实现各种好处。

您的设置存在一个问题,即把整个磁盘用于某些分区是一种浪费:

  • /usr不太可能容纳超过 20 GB 的文件。这些文件是 Linux 系统的主体,因此将/usr硬盘和根 ( /) 放在 SSD 上实际上降级与将两者都放在 SSD 上相比,性能更高。我这样做的唯一原因是如果 SSD 很小——而这么小的 SSD 意味着旧的 SSD,可能不再可靠。
  • EFI 系统分区 (ESP)只能容纳几兆字节的文件,但出于与 EFI 怪癖相关的各种原因,我建议将其设置为 550 MiB 或更大——但肯定不足以将整个磁盘用于它,假设磁盘不是旧磁盘。此外,ESP 仅在启动时或更新引导加载程序时使用。因此,将整个 SSD 专用于 ESP 意味着放弃 SSD 的速度优势。

更好的计划是将 SSD 用于/没有单独文件系统的根 () 文件系统/usr,将其放在/home硬盘上,并在方便的地方创建单独的 ESP。如果您想使用所有四个磁盘,您应该认真考虑使用逻辑卷管理 (LVM),这使得可以组合多个分区(物理卷,用 LVM 的话说)合并为一个卷组,然后被雕刻成逻辑卷保存文件系统。(注意:逻辑卷是不是与逻辑相同分区,它们是不相关的 MBR 分区构造。)因此,您可以创建一个跨多个磁盘的单个大逻辑卷。控制 SSD 和硬盘之间的分割需要更高级的 LVM 技术,或者您可以创建两个卷组,一个用于硬盘,一个用于 SSD。

Ubuntu 让我选择在哪里安装引导加载程序,我选择了sdd

在 EFI/UEFI 模式下安装时,Ubuntu 安装程序不会提示安装引导加载程序的位置。相反,它会检测 ESP 并自动在那里安装引导加载程序。因此,我怀疑你可能意外地以 BIOS/CSM/传统模式启动。请参阅我在 CSM 上的页面有关该主题的更多信息,包括控制启动方式的提示。

此问题很可能就是您在安装 GRUB 时收到错误的原因。在 BIOS 模式下安装时,GRUB 最适合BIOS 启动分区,你可能没有创建它。如果不存在,Ubuntu 安装程序会发出警告。不过,我不能确定,因为你没有说错误消息是什么。(旁注:当寻求帮助时,总是呈现完全的错误消息。十有八九,摘要会忽略最重要的细节。

话虽如此,我不确定是什么原因导致了error: failure reading sector 0xXXX hd1您报告的来自 GRUB 的消息。它可能与安装错误有关,也可能是您的磁盘有缺陷。

有没有办法可以格式化sdd并安装 EFI 分区和引导加载程序(可以启动 linux 和 macosx)

等一下!你是说这是与 OS X 的双启动吗?如果是这样,那是一个关键的细节,而且详细的您的分区信息是必需的对您的问题给出连贯的答案。请发布该信息。(的输出sudo parted -l应该可以解决问题。请务必编辑您的原始问题;不要尝试将该信息塞进评论中 - 但请在此回复中添加评论,以便我了解您的新信息。)


编辑:

在 EFI 模式下,键入sudo grub-install会导致它安装到 ESP(我相信/boot/efi默认情况下会安装到 ESP,但我对此不是 100% 肯定)。因此,无需指定磁盘设备。当然,它不是安装到整个磁盘设备,而是安装到分区。因此,您在 Ubuntu 安装程序中看到的任何有关此问题的提示都是误导性的。系统可能会因为您有太多磁盘而感到困惑,如果您在 上创建 ESP,它会更好地工作/dev/sda

在一台标准 PC(您说它是一块 Supermicro 主板)上双启动 Linux 和 OS X 充其量也是一件棘手的事情。这种做法在许多国家甚至合法性都值得商榷。我不知道这个论坛讨论这个话题的政策是什么,但可以肯定的是,当您真正要配置这部分内容时,最好在 Hackintosh 专用论坛上提问。

使用单独的/usr分区曾经是一种常见的做法,但现在很少见。我不知道 Ubuntu 是否还支持这种配置。如果支持,设置它应该不需要特别的操作;但是,我建议你非常确定您预计要存放的大型程序文件的位置。即使是负载很重的 Ubuntu 系统也不太可能需要超过 20-30 GiB 的磁盘空间。许多大型程序将其文件存储在用户的主目录中或特定子目录中,这些子目录最好分开。这样做可能比放在/usr硬盘上更好,因为这样做会降低速度。如果您能说出您正在安装的哪些程序需要大量空间,也许有人可以就此提供更好的指导。

相关内容