rbwrbw 发表于 2023-12-23 22:30:54

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,gpt7E0E9-6A2E
      else
          search --no-floppy --fs-uuid --set=root E0E9-6A2E
      fi
谁能解释一下条件的意思??
两大分支的代码意思也差不多,区别在哪儿?欢迎高手论剑!!

hilsonma 发表于 2023-12-23 23:00:50

本帖最后由 hilsonma 于 2023-12-23 23:07 编辑

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

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

hilsonma 发表于 2023-12-24 12:58:30

两个分支的区别就是用不用 --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:08

谢谢分享

pbmmm 发表于 2023-12-25 10:42:37

路过.....

zqfeng01 发表于 2023-12-25 11:36:26


谢谢分享

hilsonma 发表于 2023-12-25 13:32:08

在这个例子中,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:44

第一次听说辅助常量,平常没怎么用过!!

无犹启动 发表于 2024-1-29 08:40:20

谢谢分享

hehuiying 发表于 2024-4-18 13:02:07

谢谢分享
页: [1]
查看完整版本: grub2代码的意思 启动菜单的配置文件中一段代码