无忧启动论坛

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

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

  [复制链接]
发表于 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 很给力!

查看全部评分

 楼主| 发表于 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 的引导示例
回复

使用道具 举报

发表于 2020-4-7 18:30:33 | 显示全部楼层
看不到图

点评

不是图,是代码,是配置脚本,贴得太多,乱了,刚减掉一些,搞好了。  详情 回复 发表于 2020-4-7 18:32
回复

使用道具 举报

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

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

使用道具 举报

发表于 2020-4-7 22:03:50 来自手机 | 显示全部楼层
. $prefix/run/run.cfg  请问这句中的第一个点和linux中的source命令作用一样么?

点评

一样  详情 回复 发表于 2020-4-7 22:07
回复

使用道具 举报

发表于 2020-4-7 22:07:19 | 显示全部楼层
my9823 发表于 2020-4-7 22:03
. $prefix/run/run.cfg  请问这句中的第一个点和linux中的source命令作用一样么?

一样
回复

使用道具 举报

发表于 2020-4-8 11:48:22 来自手机 | 显示全部楼层
这些wintoflsh大神回复!
回复

使用道具 举报

发表于 2020-4-8 21:14:54 | 显示全部楼层
多谢H大无私分享
回复

使用道具 举报

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

点评

单文件模板 多文件模板  详情 回复 发表于 2020-4-21 21:18
回复

使用道具 举报

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

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

使用道具 举报

发表于 2020-5-1 01:53:06 | 显示全部楼层
好东西,正需要
回复

使用道具 举报

发表于 2020-5-1 16:06:19 | 显示全部楼层
兄弟,用你的RUN命令不能直接启动 PE.WIM文件啊。
看看如下图,帮忙看看要如何弄 sshot-1.png QQ图片20200501155601.png QQ截图20200501155641.png QQ图片20200501155715.png

不会还要选择吧,在一个一个选择下去?要直接启动 用RUN命令怎么写?

点评

不要加设备名,如: run /WEPE_64_20200501.WIM  详情 回复 发表于 2020-5-1 19:25
回复

使用道具 举报

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

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

使用道具 举报

发表于 2020-5-8 20:39:37 | 显示全部楼层
本帖最后由 szmsys 于 2020-5-8 20:59 编辑

看了这么多命令,不知道怎样设置 才能让 屏幕不显示 执行过程中的一行行命令字符

太难看了

点评

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

使用道具 举报

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

太难看了

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

点评

好的谢谢您  详情 回复 发表于 2020-5-9 01:16
回复

使用道具 举报

发表于 2020-5-9 01:16:19 | 显示全部楼层
hilsonma 发表于 2020-5-8 22:54
windows引导过程中的文字信息是显示在console的,可以切换到gfxterm来屏蔽这些信息。
即菜单中使用
ter ...

好的谢谢您
回复

使用道具 举报

发表于 2020-5-17 03:09:03 来自手机 | 显示全部楼层
这个要学会了
回复

使用道具 举报

发表于 2020-5-24 18:12:35 | 显示全部楼层
谢谢楼主分享!!!
回复

使用道具 举报

发表于 2020-6-7 14:32:51 | 显示全部楼层
谢谢高手们的分享
回复

使用道具 举报

发表于 2020-6-16 17:35:22 | 显示全部楼层
好的谢谢您
回复

使用道具 举报

发表于 2020-6-23 09:55:38 | 显示全部楼层
我想只保留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 模板请  详情 回复 发表于 2020-6-23 13:03
回复

使用道具 举报

 楼主| 发表于 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
回复

使用道具 举报

发表于 2020-6-23 13:27:28 | 显示全部楼层
hilsonma 发表于 2020-6-23 13:03
source $prefix/run/run.cfg
terminal_output gfxterm
loadfont unicode

好的,感谢大神指导
回复

使用道具 举报

发表于 2020-6-25 15:01:43 | 显示全部楼层
小白问:加载顺序是怎样的

点评

是指自动菜单的排序吗?好象是按添加到自动菜单目录的先后顺序的。如果要实现文件名排序等需添加代码,我没有心思搞了。  详情 回复 发表于 2020-6-26 19:53
回复

使用道具 举报

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

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

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

使用道具 举报

发表于 2020-7-31 14:24:22 | 显示全部楼层
给力。很好,但是搞了好久,不行啊。
回复

使用道具 举报

发表于 2021-2-13 12:51:25 | 显示全部楼层
大师你好,下载了你的单文件efi定制包主题(efi_one.7z),无法启动在硬盘里的win10pe.iso,启动boot.wim正常,是否指导一下,谢谢!

点评

run /win10pe.iso 就可以启动了的,不能的话说说详细情况。  详情 回复 发表于 2021-2-14 00:06
回复

使用道具 举报

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

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

使用道具 举报

发表于 2021-2-15 11:52:47 | 显示全部楼层
我把win10pe.iso放在diy文件夹里,启动后直接选diy里的win10pe.iso直接启动它,但无法启动,提取win10pe.iso里的boot.wim放在diy文件夹里,可以启动,查看了mod.txt清单里没有map,加了后,重新生成的单文件,替换原来的,还是启动不了iso?

点评

试试下面这个定制包  详情 回复 发表于 2021-2-15 22:54
回复

使用道具 举报

 楼主| 发表于 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, 下载次数: 151)
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-3-28 16:53

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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