无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 17487|回复: 47
打印 上一主题 下一主题

[分享] 我这样配置grub2 (grub.cfg)

  [复制链接]
跳转到指定楼层
1#
发表于 2020-4-7 18:07:21 | 显示全部楼层 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 hilsonma 于 2020-4-21 21:22 编辑

纯粹晒内容,主要是想分享一些引导例子,见二楼。
下载请到 http://bbs.wuyou.net/forum.php?m ... 7204&fromuid=586362
或者直击 espg2.7z
10楼增加新模板。

grub.cfg 的内容:

  1. . $prefix/run/run.cfg
  2. set timeout=1
  3. menuentry "0.Windows"  --hotkey=0 {run /vhd/win.vhdx;}
  4. menuentry "1.WinPE"    --hotkey=1 {run /pe.wim;}
  5. menuentry "2.Menu /pe" --hotkey=2 {run /pe;}
  6. menuentry "3.Reboot"   --hotkey=3 {reboot;}
  7. menuentry "4.Halt"     --hotkey=4 {halt;}
复制代码


run.cfg 的内容:
  1. function run {
  2.         if test -z $1
  3.         then
  4.                 echo To search and load a file: run /mydir/myfile
  5.                 echo To search and automenu a directory: run /mydir
  6.         elif search -n -s -f $1
  7.         then runx $1
  8.         else runseek $1
  9.         fi
  10. }

  11. function runx {
  12.         regexp -s name_ext '.*\.(.*)' $1
  13.         if regexp '^[eE][fF][iI] $name_ext
  14.         then chainloader $1
  15.         elif regexp '^[cC][fF][gG] $name_ext
  16.         then configfile $1
  17.         elif regexp '^[wW][iI][mM] $name_ext
  18.         then xntboot $1
  19.         elif regexp '^[vV][hH][dD][xX]? $name_ext
  20.         then xntboot $1
  21.         elif regexp '^[iI][sS][oO] $name_ext
  22.         then map $1
  23.         fi
  24. }

  25. function rundir {
  26.         if test -z $1
  27.         then unset grub_path
  28.         else export grub_path="$1"
  29.         fi
  30.         configfile $prefix/run/rundir.cfg
  31. }

  32. function runseek {export grub_seek=$1; configfile $prefix/run/runseek.cfg;}
  33. function xntboot {ntboot -e $prefix/run/ms/bootmgfw.efi -s $prefix/run/ms/boot.sdi $1;}
复制代码

评分

参与人数 4无忧币 +16 收起 理由
wuxin9712 + 5
wongfaye + 5 很给力!
jack612 + 1
shan + 5 很给力!

查看全部评分

2#
 楼主| 发表于 2020-4-7 18:07:32 | 显示全部楼层
本帖最后由 hilsonma 于 2020-8-1 05:59 编辑

还有2个函数文件就不晒了,下载包里都有,主要是想给出一些引导的例子,引导语句主要在run.cfg 中 runx函数下。
如果觉得我的配置太复杂,可参见 简单的菜单配置

efi 的引导:
search -n -s -f /test.efi
chainloader /test.efi

cfg 的引导:
search -n -s -f /test.cfg
configfile /test.cfg

wim 的引导 (使用ntboot,比较快)
search -n -s -f /test.wim
ntboot -e $prefix/run/ms/bootmgfw.efi /test.wim

wim 的引导 (使用wimboot,可以进行一些复杂操作)
search -n -s wimroot -f /test.wim
wimboot @:bootmgfw.efi:$prefix/run/ms/bootmgfw.efi \
        @:boot.wim:($wimroot)/test.wim

vhd 的引导
search -n -s -f /test.vhdx
ntboot -e $prefix/run/ms/bootmgfw.efi -s $prefix/run/ms/boot.sdi /test.vhdx

iso 的引导
search -n -s -f /test.iso
map /test.iso

porteus 的引导
search -n -s -f /porteus/vmlinuz
linux /porteus/vmlinuz norootcopy nomagic
initrd /porteus/initrd.xz

--------------------------------------------------
windows的引导
windows的引导,现在我是使用vhd部署,所以就是vhd的引导。
如果是常规部署,那就是使用efi的引导。
常规方法一:
search -n -s -f /EFI/Microsoft/Boot/bootmgfw.efi
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
这个方法的优点是一般是安装生成的配套引导,不需再配置bcd
假如不存在或出错可以使用bcdboot重新生成
常规方法二:
search -n -s -f /Windows/Boot/EFI/bootmgfw.efi
chainloader /Windows/Boot/EFI/bootmgfw.efi
这个方法的缺点是要自己配置一个bcd放在同一文件夹或同分区的/EFI/Microsoft/Boot
优点是efi文件一定存在,bcd可以配置boot盘,配置一次,一直有效, 不会出错。

--------------------------------------------------
winpe的引导
winpe的引导,我是使用wim的引导,也可以将wim封装到iso使用iso的引导。

--------------------------------------------------
linux的引导
linux的引导,就是cfg的引导,把引导配置写在一个cfg文件,然后引导这个cfg就行了。就把引导linux的cfg当做是windows的bcd一样。
windows自身的主引导bootx64.efi实质是bootmgfw.efi
而linux自身的主引导bootx64.efi实质就是grub2的引导grubx64.efi (这一点我接触的linux少,只是猜测,不能完全肯定)。

--------------------------------------------------
统一的引导
总结上面各种引导,都是先确定要引导的文件,然后用search确定该文件所在分区,最后使用相应命令引导。
于是我自定义一个run命令,统一如下引导:
run /xxxx
前面porteus的引导,可以写到porteus.cfg里,然后 run /porteus.cfg,只要不是一句就搞定的引导,都可以使用cfg的引导,这样就简化成统一的 run /xxx.cfg


另参见wintoflash提供的PhoenixOS 和 UOS 的引导示例
回复

使用道具 举报

3#
 楼主| 发表于 2020-4-7 18:32:27 | 显示全部楼层

不是图,是代码,是配置脚本,贴得太多,乱了,刚减掉一些,搞好了。
回复

使用道具 举报

4#
 楼主| 发表于 2020-4-21 21:18:40 | 显示全部楼层
ernesthan 发表于 2020-4-21 21:02
谁能给个模板,小白下不了手啊!

单文件模板 单文件efi.7z (2.01 MB, 下载次数: 333)

多文件模板 多文件efi.7z (814.81 KB, 下载次数: 543)
回复

使用道具 举报

5#
 楼主| 发表于 2020-5-1 19:25:41 | 显示全部楼层
bet365 发表于 2020-5-1 16:06
兄弟,用你的RUN命令不能直接启动 PE.WIM文件啊。
看看如下图,帮忙看看要如何弄

不要加设备名,如:
run /WEPE_64_20200501.WIM
回复

使用道具 举报

6#
 楼主| 发表于 2020-5-8 22:54:16 | 显示全部楼层
szmsys 发表于 2020-5-8 20:39
看了这么多命令,不知道怎样设置 才能让 屏幕不显示 执行过程中的一行行命令字符

太难看了

windows引导过程中的文字信息是显示在console的,可以切换到gfxterm来屏蔽这些信息。
即菜单中使用
terminal_output gfxterm
当然定制efi文件时要包含相应的模块。(gfxterm efi_gop efi_uga)
回复

使用道具 举报

7#
 楼主| 发表于 2020-6-23 13:03:21 | 显示全部楼层
yuaie 发表于 2020-6-23 09:55
我想只保留2.menu /pe选项,但timeout设置为0时放在pe目录下的wim会自动启动,怎样才能设置为只浏览目录而 ...

source $prefix/run/run.cfg
terminal_output gfxterm
loadfont unicode
theme=elegant/theme.txt
runseek /diy
以上是加了主题的,不加主题的话就是:
source $prefix/run/run.cfg
runseek /diy


模板请看 http://bbs.wuyou.net/forum.php?m ... &fromuid=586362
单文件成品请看 http://bbs.wuyou.net/forum.php?m ... &fromuid=586362

也可以到 hilsonma.ys168.com 下载
grub2\efi_*.7z
回复

使用道具 举报

8#
 楼主| 发表于 2020-6-26 19:53:52 | 显示全部楼层
本帖最后由 hilsonma 于 2020-6-26 20:00 编辑
mountainbear 发表于 2020-6-25 15:01
小白问:加载顺序是怎样的

是指自动菜单的排序吗?好象是按添加到自动菜单目录的先后顺序的。如果要实现文件名排序等需添加代码,我没有心思搞了。

所以在不修改代码的情况下,要实现排序的一个笨办法就是将自动菜单目录里的文件搬到别处,再按照你要的顺序一个个搬回来。
回复

使用道具 举报

9#
 楼主| 发表于 2021-2-14 00:06:19 | 显示全部楼层
qq328 发表于 2021-2-13 12:51
大师你好,下载了你的单文件efi定制包主题(efi_one.7z),无法启动在硬盘里的win10pe.iso,启动boot.wim正 ...

run /win10pe.iso 就可以启动了的,不能的话说说详细情况。
回复

使用道具 举报

10#
 楼主| 发表于 2021-2-15 22:54:09 | 显示全部楼层
本帖最后由 hilsonma 于 2021-2-15 22:56 编辑
qq328 发表于 2021-2-15 11:52
我把win10pe.iso放在diy文件夹里,启动后直接选diy里的win10pe.iso直接启动它,但无法启动,提取win10pe.is ...

试试下面这个定制包
grub2定制单文件efi.7z (3.32 MB, 下载次数: 156)

由于ntboot模块依赖map模块,所以有ntboot模块就会自动包含map模块了的。
回复

使用道具 举报

11#
 楼主| 发表于 2021-2-16 16:09:30 | 显示全部楼层
本帖最后由 hilsonma 于 2021-2-16 16:15 编辑
qq328 发表于 2021-2-16 12:30
下载了,试一下还是不行,可能我的主板问题吧,能启动.wim,vhd,就行了,谢谢大师!

那有可能是你的iso镜像的问题。
用下面这个贴子的脚本重新制作一个iso镜像试试。
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=419771

附更新的模板
mkisofs.7z (2.49 MB, 下载次数: 98)
回复

使用道具 举报

12#
 楼主| 发表于 2021-2-17 14:23:06 | 显示全部楼层
qq328 发表于 2021-2-17 11:43
可能是不懂弄,提取iS0里的文件到另一个文件夹里,拖到脚本上,无法打包,提取boot.wim到iso1里,打包成功 ...

是将boot.wim替换到 iso1\boot 中。

是你反馈说不能启动iso,我才叫你尝试重新打包。其实我是建议直接使用wim文件启动的,不需要打包到iso文件。
回复

使用道具 举报

13#
 楼主| 发表于 2021-2-23 10:30:09 | 显示全部楼层
本帖最后由 hilsonma 于 2021-2-23 10:31 编辑
lusir401 发表于 2021-2-23 10:01
H大,你好,我已经下载了你的run模块(ms文件夹、run.cfg、rundir.cfg、runseek.cfg),放在ESP的 EFI/boot/g ...

范例请参见2楼。

使用我的run命令也可以这样:
run /pe/pe.wim
run /pe/pe.iso
等等
参见http://bbs.wuyou.net/forum.php?mod=viewthread&tid=418198
回复

使用道具 举报

14#
 楼主| 发表于 2021-2-23 11:13:22 | 显示全部楼层
lusir401 发表于 2021-2-23 10:47
感谢,已经搞定了这些菜单。
问个题外话:
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=420831&e ...

注意第一点所说的分区格式,要求FAT32

至于写菜单,
UEFI下,原本U盘是 \efi\boot\bootx64.efi
放到硬盘FAT32分区后,将原本放U盘的 \efi\boot\bootx64.efi改名如netcopysrv.efi,然后菜单(grub2)这样写:
search -n -s -f /efi/boot/netcopysrv.efi
chainloader /efi/boot/netcopysrv.efi

legacy下,原本U盘是分区引导记录引导io.sys
放到硬盘FAT32分区后,菜单可以这样写(grub4dos):
find --set-root --devices=h /io.sys
chainloader /io.sys

点评

按照你的指导,还是不行,情况如下: 1、在legacy下用grub4dos引导FAT32分区的文件 find --set-root --devices=h /io.sys chainloader /io.sys 执行后是这个画面:[attachimg]475730[/attachimg] 2、在legacy下  详情 回复 发表于 2021-2-23 20:01
回复

使用道具 举报

15#
 楼主| 发表于 2021-2-24 07:02:17 | 显示全部楼层
lusir401 发表于 2021-2-23 20:01
按照你的指导,还是不行,情况如下:
1、在legacy下用grub4dos引导FAT32分区的文件
find --set-root -- ...

我是根据那贴中的使用方法来回答你的,并没有下载测试过,不知道其真实文件组织和引导部署,你上图中也没有提示,所以没办法进一步解答,请到相应的贴子中提问,可以发消息给我。就不在本贴中讨论了。
回复

使用道具 举报

16#
 楼主| 发表于 2021-2-24 14:44:58 | 显示全部楼层
lusir401 发表于 2021-2-23 20:01
按照你的指导,还是不行,情况如下:
1、在legacy下用grub4dos引导FAT32分区的文件
find --set-root -- ...

已在原贴回复 http://bbs.wuyou.net/forum.php?m ... &fromuid=586362
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-6 07:03

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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