grub 中的“$menuentry_id_option”是什么?

grub 中的“$menuentry_id_option”是什么?

我正在摆弄我的 GRUB 2 配置文件 ( /boot/grub/grub.cfg),我注意到menuentry自动添加的 Ubuntu 引导行如下所示:

menuentry 'Ubuntu 14.04 Trusty Tahr (on sda5)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-fe3a2033-d77c-4d8c-ba04-3bb27b267dc2' {

$menuentry_id_option 'gnulinux-simple-fe3a2033-d77c-4d8c-ba04-3bb27b267dc2'最后的那部分是什么?当我添加新的启动选项时是否需要它?

那么,这是什么$menuentry_id_option意思呢?
当我为其他发行版添加另一个启动菜单项时,是否需要使用它?
如果我不包含它会发生什么?

另外,是否有一些 GRUB 参考资料可供我查找有关这些东西的作用的问题?

答案1

您正在寻找的线路是:

if [ x"${feature_menuentry_id}" = xy ]; then
  menuentry_id_option="--id"
else
  menuentry_id_option=""
fi

为您提供 的值feature_menuentry_id,如果它等于y,则会将该--id参数添加到您的菜单条目中:

menuentry 'Ubuntu 14.04 Trusty Tahr (on sda5)' --class ubuntu --class gnu-linux --class gnu --class os --id 'gnulinux-simple-fe3a2033-d77c-4d8c-ba04-3bb27b267dc2' {

如果不是,那么它将保持原样:

menuentry 'Ubuntu 14.04 Trusty Tahr (on sda5)' --class ubuntu --class gnu-linux --class gnu --class os 'gnulinux-simple-fe3a2033-d77c-4d8c-ba04-3bb27b267dc2' {

手册中--id未定义参数menuentrymenuentry,但人们可以随意猜测是内核应该从中启动的分区的 UUID。

答案2

根据这封邮件: https://lists.gnu.org/archive/html/grub-devel/2013-01/msg00070.html

摘抄
> @@ -3135,6 +3136,9 @@
>  The @option{--hotkey} option associates a hotkey with a menu entry.
>  @var{key} may be a single letter, or one of the aliases @samp{backspace},
>  @samp{tab}, or @samp{delete}.
> +
> +The @option{--id} may be used to associate unique identifier with a menu entry. address@hidden is arbitrary string.

它必须是 [a-zA-Z_][0-9a-zA-Z_]* (虽然任意字符串都可以工作,但这不是一个好主意。

该选项实际上为 menuentry 提供了一个唯一的 id,但未记录,因为不推荐这样做。 AFAIU,分区 UUID 只是许多发行版在创建该 id 时遵循的做法。

例如,在 Arch 中,格式为“gnulinux-core repo kernel-true-{UUID}”。

相关内容