|
本帖最后由 201287zr 于 2025-7-11 09:16 编辑
今天终于解决了困扰我许久的GRUB4EFI默认工作目录设置问题
事情是这样的:以前一直以为启动G4E后,配置文件的默认目录只能是/EFI/GRUB,但我想放到/根目录下,前段时间用安装包中的mkimage.exe来设置,但始终不成功,是今天看了一下这个工具(grub2)的相关说明,终于搞明白了,原来是其参数设置的姿势不对。唉,虽然这对于熟悉的可能很容易,但对于一般人还是有点难度……
下面用mkimage.exe来定制配置文件目录(指G4E默认在哪里去查找menu.lst)
- mkimage.exe -c config.cfg -d x86_64-efi -p /EFI/GRUB -o grubx64.efi -O x86_64-efi
- mkimage.exe -c config.cfg -d i386-efi -p /EFI/GRUB -o grubx86.efi -O i386-efi
复制代码 (config.cfg文件名可以根据实际情况自行定义)
以上两条命令就可以生成G4E的引导文件,这里着重介绍一下 -c 参数,它可以根据config.cfg文件中的设置,试先设置一些变量,比如root,熟悉grub4dos的人就可以在里面使用一些命令改变默认的工作目录。yaya大师在更新说明里面叫作“嵌入菜单”,感觉总有点让人迷惑。以前我也这么试着嵌入一个菜单,但总是失败,因为只要你设置了 -p 参数G4E就只会到这个目录里面去找配置文件,过于简单暴力。而用 -c 参数就能解决这个问题,下面是我的config.cfg的内容:
- debug off
- errorcheck off
- #设置启动驱动器为根目录,类似于GRUB2的$prefix功能
- root %@boot%/
- #依次查找 /menu.lst 和 /EFI/GRUB/menu.lst
- if exist /menu.lst && configfile /menu.lst ! configfile /EFI/GRUB/menu.lst
- errorcheck on
复制代码
以上 config.cfg 中写的是g4e命令,主要目的是设置G4E的工作目录root,将其设置为启动驱动器所在设备根目录,比如,当前是网络启动则root=(pd)/,这样就将G4E的工作目录设置到网启服务器的根目录。如果根目录下没有menu.lst,则查找/EFI/GRUB/menu.lst。
以上就是用mkimage工具动态设置配置文件所在目录的方法,算是抛砖引玉吧给新手一点启示吧。如果有更好的方法,还望不吝赐教。
-----------
补充:经测试,下面这种内置菜单不能实现动态查找menu.lst。可能因为G4E与GRUB4DOS不同,当执行configfile出错时就直接进入命令行了,不会再接着执行下一条命令。
- default 0
- timeout 0
- title find /menu.lst
- errorcheck off
- configfile /menu.lst
- find --set-root /menu.lst && configfile /menu.lst
- find --set-root /EFI/GRUB/menu.lst && configfile /EFI/GRUB/menu.lst
- errorcheck on
- commandline
- title commandline
- commandline
- title reboot
- reboot
- title halt
- halt
复制代码
|
|