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

我想在rEFInd中设置一个menuentry来直接启动到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的menuentry只会产生内核恐慌(闪烁的大写密钥,没有启动),有或没有ostype和选项。 通过添加initrd行,它现在只是说它找不到initrd …,再次尝试更高,然后死掉。

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

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

除非你有理由不使用你没有提到的rEFInd的自动检测,否则你会以错误的方式解决这个问题。 也就是说,您应该依赖GRUB和直接启动选项的自动检测。 默认安装默认选项应该自动选择GRUB。 这相当于您的menuentry Grub选项,除了menuentry Grub显示的描述和图标会有所不同。 (您可以通过多种方式轻松更改图标,如此处所述。)

根据内核的位置以及rEFInd的安装方式,可能会自动检测内核,也可能不会自动检测内核。 如果没有,通常的解决方案是为任何保存内核的文件系统安装EFI文件系统驱动程序。 ext2 / 3fs,ext4fs,ReiserFS,Btrfs以及一些内核可能不会出现的驱动程序都附带rEFInd; 和更多的驱动程序来自efifs包。 将相应的驱动程序放在rEFInd安装目录的driversdrivers_x64子目录中,rEFInd应该能够在正常位置检测内核。 (请注意,rEFInd 0.10.0进行了一些更改,有助于使用Btrfs;对于早期版本,您必须将@/boot添加到also_scan_dirs中的also_scan_dirs行以检测Btrfs卷上的内核。对于rEFInd 0.10,不再需要这样做。 0.0。)

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

  • 无需手动复制内核; rEFInd应该从正常的“家园”中发现它们。
  • 升级内核时,rEFInd将自动检测新安装的版本,无需重新复制内核或更新配置文件。
  • 这更容易。 在大多数情况下,自动检测“只是工作”,或者使用最少的额外配置。 (您可能需要在Ubuntu中运行mkrlconf以获得在某些情况下使用的正确内核选项。)手动initrd=选项可能很挑剔(非显而易见的错别字和简单的错误经常造成严重破坏),但是自动检测initrd文件在Ubuntu系统上通常完美无瑕。

自动检测的最大缺点是您无法控制显示为内核提示的名称。 恕我直言,这是一个付出优惠的小价格。

如果你坚持按照你尝试的方式去做,你遇到的问题是由于,除非我错过了什么,否则你已经将内核而不是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 } 

请注意,您应该在options单独的initrd行上标识initrd文件,而不是两者。 (它可能适用于冗余规范,但我不能保证。最好的情况是,当您需要修改设置时,它可能会导致混乱和/或额外的工作。)