无忧启动论坛

标题: grub2代码的意思 启动菜单的配置文件中一段代码 [打印本页]

作者: rbwrbw    时间: 2023-12-23 22:30
标题: grub2代码的意思 启动菜单的配置文件中一段代码
if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt7 --hint-efi=hd0,gpt7 --hint-baremetal=ahci0,gpt7  E0E9-6A2E
        else
          search --no-floppy --fs-uuid --set=root E0E9-6A2E
        fi
谁能解释一下条件的意思??
两大分支的代码意思也差不多,区别在哪儿?欢迎高手论剑!!

作者: hilsonma    时间: 2023-12-23 23:00
本帖最后由 hilsonma 于 2023-12-23 23:07 编辑

前者使用 --hint 后者没有使用 --hint

--hint 指定了找到多个分区的情况下的优先顺序
就适用于你之前的多esp的情况

作者: hilsonma    时间: 2023-12-24 12:58
两个分支的区别就是用不用 --hint 参数,没有涉及uefi/legacy的区分。
grub2有一个变量叫 feature_platform_search_hint,这个变量的值为y时,--hint参数才起作用。
--hint参数的作用就是优先找 --hint指定的分区,你上面的例子中,加了平台的hint就是这个优先参数只适用于相应的平台。

解读你上面的例子就是:
如果 变量feature_platform_search_hint的值为y ,则
    按uuid找分区 E0E9-6A2E,bios平台先找hd0,gpt7 ,efi平台先找hd0,gpt7 ,baremetal平台先找ahci0,gpt7 ,忽略软驱,找到的第一个分区设为root
否则
    按uuid找分区 E0E9-6A2E,忽略软驱,找到的第一个分区设为root

再详细的解释我也不知道了,我也是看说明文档知道这些的,我自己比较少用这些复杂的。
作者: nathan6498    时间: 2023-12-24 13:54
谢谢分享
作者: pbmmm    时间: 2023-12-25 10:42
路过.....
作者: zqfeng01    时间: 2023-12-25 11:36

谢谢分享
作者: hilsonma    时间: 2023-12-25 13:32
在这个例子中,xy并不都是变量,xy都是常量,x是辅助常量,y是值
为提防变量为空(不存在),一般都会将变量加双引号或者加一个辅助常量,这个例子中,x就是这样的辅助常量。
x$feature_platform_search_hint = xy
当变量 feature_platform_search_hint 不存在时,这个表达式就变成 x=xy 当然结果就为假
如果没有辅助常量x,当变量 feature_platform_search_hint 不存在时,这个表达式就变成  =y 这个表达式是报错的
作者: rbwrbw    时间: 2023-12-27 10:53
第一次听说辅助常量,平常没怎么用过!!
作者: 无犹启动    时间: 2024-1-29 08:40
谢谢分享
作者: hehuiying    时间: 2024-4-18 13:02
谢谢分享




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3