不要编辑此文件

不要编辑此文件

我想从 GRUB 启动菜单中删除两个菜单项,因此我将它们从文件中注释掉/boot/grub/grub.cfg

menuentry 'Windows Boot Manager (on /dev/sda2)' --class windows --class os $menuentry_id_option 'osprober-efi-FCD5-F73E' {
    ...
}
# menuentry 'Ubuntu 16.04.3 LTS (16.04) (on /dev/sdb1)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-simple-844ea196-bb78-4f18-b7fd-58be4c491e92' {
#   ...
# }
# submenu 'Advanced options for Ubuntu 16.04.3 LTS (16.04) (on /dev/sdb1)' $menuentry_id_option 'osprober-gnulinux-advanced-844ea196-bb78-4f18-b7fd-58be4c491e92' {
#   menuentry 'Ubuntu (on /dev/sdb1)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-/boot/vmlinuz-4.10.0-37-generic.efi.signed--844ea196-bb78-4f18-b7fd-58be4c491e92' {
#       ...
#   }
#   ...
# }

然后我sudo update-grub就像往常一样跑步。但是,这样做会返回菜单项,这些菜单项不会从grub.cfg文件中取消注释。

如何使菜单项在运行后保持注释状态,update-grub以便它们不会显示在启动选项中?我意识到不运行update-grub会排除菜单项,但我想摆脱这种不需要的行为,这样update-grub我就不必在每次运行此命令时手动注释掉菜单项。

笔记:

  • 两者update-grub都会update-grub2带回不需要的菜单项。
  • 不需要的菜单项是重复的。我已经有了 Ubuntu 的菜单项。

答案1

如上所述,编辑/boot/grub/grub.cfg并不是实现此目的的好方法。您很有可能会破坏它,即使您没有这样做,您也可能会发现当系统更新稍后推出时它会被恢复。

显式添加GRUB_OS_PROBER_SKIP_LIST/etc/default/grub也不是一个很好的解决方案,因为它需要您手动查找并阻止UUID可能插入计算机的每个可启动磁盘的 s。我也不确定编辑文件是否/etc/default是自定义 Linux 发行版行为的首选方式。

完全禁用也不一定是个好主意/usr/bin/os-prober,因为其他程序可能会依赖它来实现其他目的。

grub那么,最好的解决方案可能是在属于并专门用于手动人工定制的配置文件中工作。

Debian和 上Ubuntu,自动生成的引导条目似乎是由 处理的/etc/grub.d/30_os-prober

只需删除该文件或禁用其执行权限,然后重新生成grub配置即可删除自动添加的条目。这在我的机器上有效:

sudo chmod -x /etc/grub.d/30_os-prober

sudo grub-mkconfig -o /boot/grub/grub.cfg sudo update-grub

您可以观察配置生成的输出,并检查/boot/grub/grub.cfg以验证无关条目已在重新启动之前删除。

答案2

/boot/grub/grub.cfg

#

不要编辑此文件

#

它是由 grub-mkconfig 使用模板自动生成的

来自 /etc/grub.d 和来自 /etc/default/grub 的设置

#

编辑 grub 条目的正确方法是通过/etc/default/grub/etc/grub.d/.

答案3

该条目是从 os-prober 生成的。操作系统探测器:

描述:用于检测一组驱动器上其他操作系统的实用程序此软件包检测系统上可用的其他操作系统并以通用机器可读格式输出结果。

查看 /usr/bin 中有一个来自 os-prober 包的 shell-skript。

您可以从 skript 中删除可执行标志,或者卸载 os-prober。

编辑:错误的地方我的意思是/usr/bin/os-prober。不在 /etc/grub.d 中

答案4

我能够删除由操作系统探测器使用以下 Grub 配置:

1.使用以下命令检查磁盘的 UUID:

sudo blkid

2.更新/etc/默认/grub文件中添加以下行:

GRUB_OS_PROBER_SKIP_LIST="UUID_OF_DISK_YOU_DONT_WANT_SCAN1 UUID_OF_DISK_YOU_DONT_WANT_SCAN2"

3.重新生成Grub配置:

sudo grub2-mkconfig -o /boot/grub2/grub.cfg

笔记:grub2-mkconfig由于某些原因仍然显示有关被忽略磁盘的信息,但它没有生成到最终/boot/grub2/grub.cfg文件。

相关内容