如何从 grub.cfg 中正确删除“搜索”命令?

7 linux grub ubuntu

我不想让 grub“搜索”任何东西。我知道我的根文件系统在哪里,它会一直在那里 (/dev/sda1),而且我不希望 grub 去查看所有连接的驱动器以找到其他根(似乎总是发现错误一)。

我已经能够在内核加载行中禁用 UUID 使用:

GRUB_DISABLE_LINUX_UUID=true
Run Code Online (Sandbox Code Playgroud)

in /etc/default/grub,但结果/boot/grub/grub.cfg 仍然有如下几行:

search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1  3f8c2b36-5d8f-40ac-9b63-7d1445805925
Run Code Online (Sandbox Code Playgroud)

我不想要那些。我不希望它来搜索在所有。我进一步关闭了“操作系统探测”:

GRUB_DISABLE_OS_PROBER=true
Run Code Online (Sandbox Code Playgroud)

这使它无法在其他连接的磁盘上找到我的系统的备份副本,但我不希望searchgrub 中的任何命令实例,更不用说我已经告诉它不要使用的 UUID。

我讨厌咕噜。我只希望我的机器用 启动root=/dev/sda1,而不用探测整个系统,不用寻找可能不存在的 UUID,什么都不用。就像 1999 年用 LILO 启动时那样。

如果不是因为 Ubuntu 使用 grub,我实际上会使用LILO 或 syslinux 或其他东西,因此如果我想跟上他们的内核更新,我几乎不得不使用它。我只是希望它是人类可能的最简单的配置(我知道它仍然会产生 200 行的 grub.cfg,但是很好)。

小智 5

这就是grub-mkconfig工作原理:它会自动为它发现的每个内核创建 GRUB 菜单项。但是,如果您知道自己想要什么以及在做什么,则完全不需要使用Simple 配置,因为您可以grub.cfg直接编写您的配置

grub-mkconfig确实有一些限制。虽然可以通过编辑/etc/grub.d/40_custom或创建将额外的自定义菜单项添加到列表的末尾,但 /boot/grub/custom.cfg更改菜单项的顺序或更改其标题可能需要对存储在/etc/grub.d/. 这在未来可能会得到改善。同时,grub.cfg鼓励那些认为直接编写更容易的人这样做(请参阅 引导类似 Shell 的脚本),并禁用其发行版提供的任何系统以自动运行 grub-mkconfig。

在那里,您可以只拥有一个菜单项(禁用菜单),并根据需要进行简单的设置。你可以说你想从这里启动这个内核,就是这样。

单个menuentry { }可能是 5 行,而不是 200 行。

记住:

  • 首先通过将其添加到自定义条目来测试您的自定义菜单条目。
  • 如果您grub-mkconfig从系统中禁用,则grub.cfg每当您想更新内核时都需要手动更新。