rEFInd 在 Lubuntu 分区上找不到 Lubuntu 内核

rEFInd 在 Lubuntu 分区上找不到 Lubuntu 内核

我被派到这里来自另一个论坛。为了完整起见,我将在这里重复我的整个帖子:

我正在尝试让 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 驱动程序,这一点并不十分清楚,所以我想明确说明。

相关内容