update-grub 忽略 /etc/default/grub 中的一些选项

Ies*_*Mwg 4 partitioning grub2 timeout

刚刚安装了另一个硬盘并注意到 grub 自动添加了必要的菜单项来启动它。我想通过编辑 /etc/default/grub 来调整这些新条目,但似乎有些设置被 update-grub 和 grub-mkconfig 脚本忽略或覆盖。特别是这些行:

GRUB_TIMEOUT=2
GRUB_OS_PROBER_SKIP_LIST="469841589841479F"

我确实删除了 GRUB_HIDDEN_TIMEOUT=0 行,因为文档说它已被弃用并将其替换为:

GRUB_TIMEOUT_STYLE="隐藏"

运行任一脚本后,生成的 grub.cfg 文件确实包含:

如果 [ "${recordfail}" = 1 ] ; 然后
  设置超时=-1
别的
  如果 [ x$feature_timeout_style = xy ] ; 然后
    设置 timeout_style=hidden
    设置超时=2
  # 回退隐藏超时代码,以防 timeout_style 功能是
  # 不可用。
  elif sleep --interruptible 2 ; 然后
    设置超时=0
  菲
菲
### END /etc/grub.d/00_header ###

所以这里使用了超时选项。问题似乎出现在 /etc/grub.d/30_os-prober 部分之后。在我拥有第二个硬盘之前,显然没有条目。既然有了,这将被添加到 grub.cfg 中:

### 开始 /etc/grub.d/30_os-prober ###
menuentry 'Windows 7 (loader) (on /dev/sdb1)' --class windows --class os $menuentry_id_option 'osprober-chain-CA0E41BE0E41A3F3' {

[剪辑]
}
menuentry 'Windows 恢复环境(加载程序)(在 /dev/sdb2 上)' --class windows --class os $menuentry_id_option 'osprober-chain-469841589841479F' {

[剪辑]
}
设置 timeout_style=menu
如果 [ "${超时}" = 0 ]; 然后
  设置超时=10
菲
### END /etc/grub.d/30_os-prober ###

因此,它不仅不会忽略我告诉它的分区,而且脚本的 os-prober 部分不允许我将超时设置为 0 并强制菜单(我习惯于只按住左移如果我想更改启动选项,则在开机时键)。

一两秒的超时延迟只是有点烦人,但是当我明确不想要菜单时强制使用一个菜单,并且这个菜单包括一个永远不应该列出的分区。

每次都没有编辑 grub.cfg,或者调整 /etc/grub.d/30_os-prober(在升级过程中可能会被覆盖?)是否有解决方法?

谢谢!

小智 5

蛴螬检查GRUB_OS_PROBER_SKIP_LIST针对EXPUUID没有UUID,所以正确的格式GRUB_OS_PROBER_SKIP_LISTUUID@/dev/????例如:

GRUB_OS_PROBER_SKIP_LIST="A3F5-6DF3@/dev/sda1"
Run Code Online (Sandbox Code Playgroud)