刚刚安装了另一个硬盘,发现 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 菲 菲 ### 结束 /etc/grub.d/00_header ###
因此这里使用了超时选项。问题似乎出在后面的 /etc/grub.d/30_os-prober 部分。在我拥有第二块硬盘之前,显然没有来自那里的条目。现在有了,它将以下内容添加到 grub.cfg 中:
### 开始 /etc/grub.d/30_os-prober ### 菜单项'Windows 7 (加载器) (在 /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 如果 [ “${timeout}” = 0 ]; 然后 设置超时=10 菲 ### 结束 /etc/grub.d/30_os-prober ###
因此,它不仅不会忽略我告诉它的分区,而且脚本的 os-prober 部分也不允许我将超时设置为 0 并强制显示菜单(如果我想更改启动选项,我习惯在开机时按住左移键)。
一两秒的超时延迟只会稍微让人烦躁一些,但当我明确不想要菜单时却强制显示菜单,并且该菜单包含一个永远不应该列出的分区,这就更加让人烦躁了。
除了每次编辑 grub.cfg 或调整 /etc/grub.d/30_os-prober(在升级过程中可能会被覆盖?)之外,有没有办法解决这个问题?
谢谢!
答案1
Grub 检查是否GRUB_OS_PROBER_SKIP_LIST
为,因此正确的格式例如:EXPUUID
UUID
GRUB_OS_PROBER_SKIP_LIST
UUID@/dev/????
GRUB_OS_PROBER_SKIP_LIST="A3F5-6DF3@/dev/sda1"
答案2
我如何清理 grub.cfg
0- 当安装新的 [Linux] 发行版时,grub-mkconfig 将使用 /etc/grub.d/10_linux 来实现 Linux 内核和恢复菜单项。OS-Prober 将 [/etc/grub.d/30_os-prober] 使用 30_os-prober 查找其他操作系统 [操作系统]
启动菜单经常会有不需要的、多余的甚至是无效的条目。(启动菜单中的一个无效条目让我开始了这一探索。)我查看了 /boot/grub/grub.config 以熟悉菜单条目。
为了删除不需要的条目,我以 root 身份执行以下操作:
1- 30_os-prober 发现了无效条目。我将我想要的条目 [由 30_os-prober 在 /boot/grub/grub.cfg 中创建] 复制到 40_custom。
2-我在 /etc/default/grub 中放入 GRUB_DISABLE_OS_PROBER="true"
3-我在启动备份目录中测试了新配置。sudo grub-mkconfig -o menu-test.cfg [文件名任意]
4-当测试文件看起来符合我的要求时:sudo update grub
下次我启动时,不需要的条目消失了,但我想要的条目却在最后。
答案3
查找 UUID 的最佳方法是这样的:
sudo grub-probe --target=fs_uuid --device /dev/sda6
查找 UUIDblkid
对 Mac OS X 分区不起作用。
答案4
如果os-prober
检查分区时返回错误(例如zfs
),请参见此修复