设置 rEFInd 直接启动 Ubuntu(不显示 Grub 菜单)

设置 rEFInd 直接启动 Ubuntu(不显示 Grub 菜单)

我想在 rEFInd 中设置一个菜单项,以便直接启动 Ubuntu,而无需使用 GRUB。不过,我希望保留 Grub,并为此设置一个菜单项。

我已将最新的内核和 refind_linux.conf 从 复制/boot//boot/efi/EFI/ubuntu,并创建了以下 refind.conf:

#
# refind.conf
# Configuration file for the rEFInd boot menu
#

timeout 0
screensaver 300
banner mybanner.png
banner_scale fillscreen
scanfor manual,external,optical

menuentry Ubuntu {
    loader /EFI/ubuntu/vmlinuz-3.19.0-31-generic.efi.signed
    icon /EFI/refind/icons/os_linux.png
    ostype linux
    options "root=UUID=92f926f7-19f8-4a2b-9e9a-bf91db475a3c ro initrd=boot\initrd.img-3.19.0-31-generic"
    initrd boot\initrd.img-3.19.0-31-generic
}

menuentry Grub {
    loader /EFI/ubuntu/grubx64.efi
    icon /EFI/refind/icons-backup/os_unknown.png
}

Grub 的菜单项运行良好,但到目前为止,ubuntu 的菜单项只会导致内核崩溃(大写锁定键闪烁,无法启动),无论是否带有操作系统和选项。 通过添加 initrd 行,它现在只是说找不到 initrd...,再次尝试更高级别,然后死机。

理想情况下,我还希望 rEFInd 在内核升级时自动更新 ubuntu 条目。

正如我提到的,我也保留了 GRUB,因此我可以将控制权透明地传递给 grub,但如果这是推荐的方式,我无法弄清楚如何将选项直接发送给 grub。

答案1

除非您有未提及的不使用 rEFInd 自动检测的原因,否则您就走错了路。也就是说,您应该依靠自动检测来检测 GRUB 和直接启动选项。使用默认选项的默认安装肯定会自动选择 GRUB。这相当于您的menuentry Grub选项,只是 rEFInd 显示的描述和图标会有所不同。(您可以通过多种方式轻松更改图标,如所述这里

根据内核的位置以及安装 rEFInd 的方式,内核可能会自动检测,也可能不会。如果没有,通常的解决方案是为内核所在的文件系统安装 EFI 文件系统驱动程序。ext2/3fs、ext4fs、ReiserFS、Btrfs 和一些内核可能不会出现的驱动程序都随 rEFInd 一起提供;还有许多其他驱动程序随附在efifs 包。将适当的驱动程序放入rEFInd 安装目录的driversdrivers_x64子目录中,rEFInd 应该能够在其正常位置检测到您的内核。(请注意,rEFInd 0.10.0 进行了一些更改,这些更改有助于使用 Btrfs;在早期版本中,您必须添加@/bootalso_scan_dirs行中refind.conf以检测 Btrfs 卷上的内核。使用 rEFInd 0.10.0 不再需要这样做。)

与您尝试执行的操作相比,使用自动检测具有一些很大的优势:

  • 无需手动复制您的内核;rEFInd 应该从它们的正常“主页”中检测它们。
  • 当您升级内核时,rEFInd 将自动检测新安装的版本,无需重新复制内核或更新配置文件。
  • 更简单。在大多数情况下,自动检测“正常工作”,或者只需进行最少的额外配置即可工作。(mkrlconf在某些情况下,您可能需要在 Ubuntu 中运行才能获得正确的内核选项。)手动initrd=选项可能很棘手(不明显的拼写错误和简单的错误经常会造成严重破坏),但在 Ubuntu 系统上,initrd 文件的自动检测通常是完美的。

自动检测的最大缺点是您无法控制显示为内核提示的名称。恕我直言,这是相对于优点的一点小代价。

如果你坚持按照你尝试的方式去做,你遇到的问题是由于,除非我错过了什么,否则你已经将内核复制到了 ESP,但没有将 initrd 文件复制到 ESP。让它工作的最简单方法是复制两个都文件到同一位置。然后必须使用引用内核的相同路径指定 initrd 文件。例如:

menuentry Ubuntu {
    loader /EFI/ubuntu/vmlinuz-3.19.0-31-generic.efi.signed
    icon /EFI/refind/icons/os_linux.png
    ostype linux
    options "root=UUID=92f926f7-19f8-4a2b-9e9a-bf91db475a3c ro"
    initrd /EFI/ubuntu/initrd.img-3.19.0-31-generic
}

请注意,您应该识别 initrd 文件任何一个options在线或者在单独的initrd一行,而不是同时两行。(它会大概可以使用冗余规范,但我不能保证。在最好的情况下,当您需要修改设置时,它可能会导致混乱和/或额外的工作。)

答案2

我遇到了同样的问题。为了解决这个问题,我取出了 ext4.efi 驱动程序/文件并将其放在 rEFInd 目录下的驱动程序文件夹中。这为我解决了这个问题。

相关内容