无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 369|回复: 10
打印 上一主题 下一主题

[分享] 如何正确设置GRUB4EFI默认工作目录

[复制链接]
跳转到指定楼层
1#
发表于 前天 19:33 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 201287zr 于 2025-7-11 09:16 编辑

今天终于解决了困扰我许久的GRUB4EFI默认工作目录设置问题
事情是这样的:以前一直以为启动G4E后,配置文件的默认目录只能是/EFI/GRUB,但我想放到/根目录下,前段时间用安装包中的mkimage.exe来设置,但始终不成功,是今天看了一下这个工具(grub2)的相关说明,终于搞明白了,原来是其参数设置的姿势不对。唉,虽然这对于熟悉的可能很容易,但对于一般人还是有点难度……

下面用mkimage.exe来定制配置文件目录(指G4E默认在哪里去查找menu.lst)
  1. mkimage.exe -c config.cfg -d x86_64-efi -p /EFI/GRUB -o grubx64.efi -O x86_64-efi
  2. 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的内容:
  1. debug off
  2. errorcheck off
  3. #设置启动驱动器为根目录,类似于GRUB2的$prefix功能
  4. root %@boot%/
  5. #依次查找 /menu.lst 和 /EFI/GRUB/menu.lst
  6. if exist /menu.lst && configfile /menu.lst ! configfile /EFI/GRUB/menu.lst
  7. errorcheck on
复制代码

以上 config.cfg 中写的是g4e命令,主要目的是设置G4E的工作目录root,将其设置为启动驱动器所在设备根目录,比如,当前是网络启动则root=(pd)/,这样就将G4E的工作目录设置到网启服务器的根目录。如果根目录下没有menu.lst,则查找/EFI/GRUB/menu.lst。

以上就是用mkimage工具动态设置配置文件所在目录的方法,算是抛砖引玉吧给新手一点启示吧。如果有更好的方法,还望不吝赐教。

-----------

补充:经测试,下面这种内置菜单不能实现动态查找menu.lst。可能因为G4E与GRUB4DOS不同,当执行configfile出错时就直接进入命令行了,不会再接着执行下一条命令。
  1. default 0
  2. timeout 0

  3. title find /menu.lst
  4.         errorcheck off
  5.         configfile /menu.lst
  6.         find --set-root /menu.lst && configfile /menu.lst
  7.         find --set-root /EFI/GRUB/menu.lst && configfile /EFI/GRUB/menu.lst
  8.         errorcheck on
  9.         commandline

  10. title commandline
  11.         commandline

  12. title reboot
  13.         reboot

  14. title halt
  15.         halt
复制代码





2#
发表于 前天 20:21 | 只看该作者
感谢分享
回复

使用道具 举报

3#
发表于 昨天 00:03 | 只看该作者
谢谢技术分享!
回复

使用道具 举报

4#
发表于 昨天 01:23 | 只看该作者
感谢分享!
回复

使用道具 举报

5#
发表于 昨天 08:36 | 只看该作者
感谢分享
回复

使用道具 举报

6#
发表于 昨天 08:41 | 只看该作者
楼主表达什么真的没有理解

点评

不好意思,我理解得也许不太对,因为我真不太懂引导的技术原理。你的意思是直接编辑替换掉g4e里面的字符串就行了吗?  详情 回复 发表于 昨天 08:56
回复

使用道具 举报

7#
 楼主| 发表于 昨天 08:56 | 只看该作者
本帖最后由 201287zr 于 2025-7-11 08:58 编辑
fuldho 发表于 2025-7-11 08:41
楼主表达什么真的没有理解

不好意思,我理解得也许不太对,因为我真不太懂引导的技术原理。我的意思其实就是想让g4e先查找根目录下的menu.list,再查找/efi/grub/menu.lst,你的意思是直接编辑替换掉g4e里面的字符串就行了吗?

点评

g4d才有,g4e指定目录  发表于 昨天 10:01
回复

使用道具 举报

8#
发表于 昨天 10:54 | 只看该作者
感谢分享
回复

使用道具 举报

9#
发表于 昨天 11:28 | 只看该作者
来学习下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2025-7-12 21:29

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表