我被派到这里来自另一个论坛。为了完整起见,我将在这里重复我的整个帖子:
我正在尝试让 refind 直接启动 Lubuntu 内核,而不是维护手动配置并在其间使用 grub。但由于某种原因,refind 只找到 grubx64.efi 文件(在 ESP 上),但从来找不到内核文件(在 Lubuntu 自己的分区上)。我有一个安装了 refind 和 arch 的虚拟机,其中 refind 直接找到了 arch 内核。它的配置相同,所以我不知道为什么在真实机器上检测内核不起作用。
UEFI、GPT 磁盘、安全启动关闭。文件权限相同,文件系统的驱动程序已安装 (btrfs)。
文件详细信息 Arch virtualbox
/boot
:refind_linux.conf
:"Boot with standard options" "rw root=UUID=ab4286d4-fe06-453a-8bdf-0b52f53639ee " "Boot to single-user mode" "rw root=UUID=ab4286d4-fe06-453a-8bdf-0b52f53639ee single" "Boot with minimal options" "rw root=UUID=ab4286d4-fe06-453a-8bdf-0b52f53639ee"
refind.conf
:scanfor internal also_scan_dirs boot
Win8/Lubuntu双启动真机
/boot
:refind_linux.conf
:"default" "rw root=UUID=d1570108-1546-4109-ba6c-5bb35b71c20b" #uuid from gparted for /
refind.conf
:#graphics omitted use_graphics_for linux, windows, osx, grub scanfor internal also_scan_dirs boot scan_all_linux_kernels 1
如能提供任何帮助来查明为什么 Lubuntu 内核没有直接显示在 refind 下,我们将不胜感激。:)
答案1
您的问题是由 Btrfs 怪癖引起的。由于它支持子卷,因此通常需要指定不常见的选项,以使 rEFInd 扫描正确的子目录并让内核将正确的位置识别为其根目录。
为了让 rEFInd 扫描内核,您必须添加以下行refind.conf
:
also_scan_dirs +,@/boot
这假设你这样做不是有一个单独的/boot
分区。(我猜如果你有这样的分区的话,情况会是这样+,@
,但我从未尝试过。)如果这不起作用,你可以打开 EFI shell 并使用它来尝试找到你的内核,然后以类似的方式添加它们的位置。这在 Arch 中可能不是必需的,因为 Arch 和 Ubuntu 可能会以不同的方式设置它们的 Btrfs 卷。
完成此更改后,rEFInd 应该可以检测到您的内核,但尝试启动它们将失败。可以通过更改/boot/refind_linux.conf
文件来解决此问题。特别是,您必须将以下内容添加到启动选项中:
rootflags=subvol=@
一定要添加此外到您使用的正常root={whatever}
和任何其他内核选项。
drivers
另外,请确保 rEFInd或子目录中存在 Btrfs 的 EFI 驱动程序drivers_x64
。我知道您提到已安装驱动程序,但您指的是 EFI 驱动程序,这一点并不十分清楚,所以我想明确说明。