我正在为可在不同计算机上使用的驱动器编写自定义 grub.cfg。根据我使用它的计算机,设备标识符可能不同(从 hd0 到 hd1 或 hd2,具体取决于存在的其他驱动器)。
给${cmdpath}
了我正确的 grub.cfg 位置,所以我基本上是在尝试做set root=${cmdpath}/../../
。但是随后,ls /
返回错误消息error: disk '(hd1,gpt1)/EFI/BOOT/../../' not found.
⇒ 有没有办法让这hd1
部分不再${cmdpath}=(hd1,gpt1)/EFI/BOOT
使用 grub.cfg 命令?
我知道解决问题的正确方法是使用search
命令。但是为了简化部署,我试图在多个驱动器上使用完全相同的 grub.cfg(所以没有search.fs_uuid
),并且计算机上可以有两个相同驱动器格式的实例(所以我不能依赖search.fs_label
or search.file
)。
请注意,有一个
regexp
命令:即使这样似乎也能奏效:
不确定在这种情况下
(
incmdpath
以某种方式被忽略/剥离是否是一个错误,所以第一种方法可能更安全(编辑:除非以某种方式原始root
文件不在同一个磁盘上,否则cmdpath
您可以改用这种方法root
;显然,当获得其价值()
时无论如何都会被剥夺)root
顺便说一句,虽然我没有检查过,但我认为当 grub 安装到 BIOS 的 MBR 驱动器时(即,在这种情况下
core.img
嵌入到后 MBR 间隙中),cmdpath
可能是一个hdX
. 对我来说确实不幸的是,对于 GPT(无论是否为 EFI),变量没有(重新)定义为打开的磁盘,core.img
也没有为此引入新变量。