在 Mac 上安装引导加载程序

在 Mac 上安装引导加载程序

由于特定 Linux 安装和特定软件套件的要求有些奇怪,我发现最好使用它ddrescue来填充硬盘上的分区及其数据,这些数据取自不久前进行的类似设置。当然,这是在相应地设置分区表之后进行的。在仔细检查所有内容后,硬盘现在在正确的分区上有了正确的数据(包括操作系统)。

但是,我该如何设置引导程序呢?我尝试了从外部 USB 启动并运行的常用技巧grub-install /dev/sda,但现在的问题是,当我启动没有 USB 的机器时,grub 开始抱怨:"error: no such device: 47f89855-8710-4fca-a395-913f70f7d94c"

我推测 GRUB 缺少的设备是我安装时用来启动的 USB 设备。我尝试通过首先 chroot 到机器的文件系统来解决这个问题,但结果似乎是一样的。

系统信息:

  • MacBook Air 13 英寸
  • 一个 128GB 硬盘

    • 分区 1:512MB 的备用空间,以备不时之需(请参阅有关 EFI 启动的说明)
    • 分区 2:我要启动的操作系统 (Scientific Linux 6.6) 的 2.5GB 根文件系统。此分区还包含一个/boot目录。
    • 分区 3:2G 交换空间
    • 分区 4:磁盘的剩余部分,由操作系统挂载
  • 外部启动设备:运行 Arch Linux 的 USB 记忆棒(当然,一切正常后就需要移除)

值得注意的是,我根本不是 Mac 用户,所以我不得不依靠我的 PC 经验,希望能够克服任何与硬件相关的差异。根据各种谷歌搜索,我看到很多关于 EFI 启动的参考资料,而我对此也是新手。所以我的问题是:我需要设置 EFI 启动吗?(至少这是我能够从 USB 启动的唯一方法)。

任何有关如何以某种方式启动驱动器上的操作系统的帮助都将不胜感激。如果需要更多信息,请发表评论。

笔记: 从我的 USB 启动时,我想要启动的驱动器显示为/dev/sdc,而 USB 驱动器显示为/dev/sdb。由于我无法在没有 USB 驱动器的情况下启动,因此我只能假设感兴趣的驱动器将保留为/dev/sdc。当连接第二个 USB 存储设备时,它会显示为/dev/sdd

答案1

使用 usb 启动并检查 grub.conf。找到包含 root=uuid= 的行,并查看它是否设置为 root=UUID=47f89855-8710-4fca-a395-913f70f7d94c。

如果是这样,您需要将其更改为主启动分区 uuid。ls -l /dev/disk/by-uuid/ 找到正确的分区并复制 uuid。

如果它是 root=/dev/sda 或类似的东西。将其更改为 root=UUID=therightUUIDhere

还要检查你的 /etc/fstab 并将 /dev/sd{a,b,c,d} 替换为 UUID=blabla-blabla-bla-blabla / ext4(如果是 ext4) 0 1 或者如果它指的是你的 USB 的 UUID,请将其更改为你的启动分区 UUID

/dev/sda、sdb、sdc、sdd 可以根据连接到计算机的介质(或未连接的介质)改变顺序。但是如果您改用 UUID。您始终引用正确的分区/文件系统。

答案2

我建议你安装 rEFInd。它会显示每个启动屏幕并让你选择操作系统。所以基本上它会在每次启动时询问你是否要使用 Mac 或科学 Linux。如果你不需要这个,你可以在启动时按住选项,尽管我不认为这会让你从 Linux 启动。

如果你选择安装 rEFInd,步骤非常简单。你只需转到此处:http://www.rodsbooks.com/refind/并向下滚动。这是创建者的网页,在这里您可以找到相关文档和下载。

我不确定您计划如何安装 Scientific Linux,但如果您可以实时启动它,并且如果那里有安装功能,我建议您使用安装功能将其安装到第二个分区并使用 rEFInd 启动它。

希望这可以帮助!

答案3

按住 Alt 并打开电源。您应该会看到系统上所有可启动磁盘的列表。

然而,这确实假设磁盘包含一个 UEFI 可启动操作系统,但对于某些 Linux 安装来说,这并不简单,特别是如果您必须将分区 DD 到磁盘上。

如果你可以使用 Alt 选项启动,请安装 EFI 引导加载程序,例如 rEFIt (http://refit.sourceforge.net/) 将在每次启动时为您提供一个菜单。

rEFIt 应该能够启动常规 MBR 分区。我过去曾用它通过 USB 底座启动 Linux 恢复磁盘,但我不确定这是否能与内部 SATA 磁盘一起正常工作。

相关内容