无忧启动论坛

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

[分享] 使用Grub2定制UEFI启动 (bootx64.efi)

    [复制链接]
发表于 2019-3-21 07:49:52 | 显示全部楼层 |阅读模式
本帖最后由 hilsonma 于 2020-4-7 17:48 编辑

使用grub2做为uefi平台主引导的最大特色是:
当无法通过菜单项正常引导指定系统时,可以进入一个文件浏览菜单项,查找所有可能的引导项,以实现引导。
如果是grub2熟手,还可以临时修改菜单项,及进入grub2命令行。

附件是我定制的一个范例,下面附两张效果图。
启动菜单中第一项是默认启动Windows
第二项是启动efi区pe文件夹的PE镜像
第三项是将所有分区下的pe文件夹里的文件列为自动菜单,一键启动wim镜像。
自动菜单中第一项即两点开头那一项即是返回上一层文件夹,通过此项可浏览所有磁盘文件。
efi.7z (987.04 KB, 下载次数: 1823)

评分

参与人数 22无忧币 +94 收起 理由
某些人 + 5 赞一个!
csnnan + 1 很给力!
2011cwj6958 + 5 很给力!
wuxin9712 + 5
isakmp + 1
hl7741 + 1 神马都是浮云
hx200000 + 1 很给力!
2012kwy + 5 赞一个!
纯脆entropy + 5
2011yaya2007777 + 5 赞一个!
freesoft00 + 5
北冥有鱼 + 5
sea2moon + 5 请教导入证书后会不会覆盖原来的文件,我的.
2010mkjx + 5 赞一个!
xmzhqw + 5 赞一个!
vrboxing + 5 赞一个!
ksafei + 5 很给力!
shan + 5
brook + 5
心零 + 5 赞一个!
chishingchan + 5 为技术奉献精神点赞!
有阴也有阳 + 5 简明、扼要、实用!

查看全部评分

发表于 2019-3-21 08:50:03 | 显示全部楼层
不错,谢谢楼主的分享
回复

使用道具 举报

发表于 2019-3-21 10:18:18 | 显示全部楼层
这样是不是容易理解一点?
  1. @echo off
  2. cd /d d:\grub2

  3. :: bootx64.efi
  4. grub-mkimage -O x86_64-efi -p /efi/boot -o bootx64.efi normal part_gpt part_msdos fat exfat chain

  5. :: grub.cfg
  6. echo set default=0>grub.cfg
  7. echo set fallback=1>>grub.cfg
  8. echo set timeout=5>>grub.cfg
  9. echo.>>grub.cfg
  10. echo menuentry "0.xorboot" --hotkey=0 {>>grub.cfg
  11. echo   chainloader /efi/xorboot/xorboot.efi>>grub.cfg
  12. echo }>>grub.cfg
  13. echo menuentry "1.grub2 fileman" --hotkey=1 {>>grub.cfg
  14. echo   chainloader grubfmx64.efi>>grub.cfg
  15. echo }>>grub.cfg
  16. echo menuentry "2.mini linux" --hotkey=2 {>>grub.cfg
  17. echo   chainloader minilinux.efi>>grub.cfg
  18. echo }>>grub.cfg

  19. ::
  20. md \efi\boot>nul 2>nul
  21. ren \efi\boot\bootx64.efi grubfmx64.efi
  22. copy bootx64.efi \efi\boot\
  23. copy grub.cfg \efi\boot\

  24. :: if bootx64.efi == xorboot
  25. md \efi\xorboot>nul 2>nul
  26. ren \efi\boot\bootx64.efi \efi\xorboot\xorboot.efi
  27. move \efi\boot\xorboot.xor \efi\xorboot\

  28. :: if bootx64.efi == Shim
  29. :: if bootfmx64.efi == xorboot
  30. md \efi\boot>nul 2>nul
  31. md \efi\xorboot>nul 2>nul
  32. move \efi\boot\bootfmx64.efi \efi\xorboot\xorboot.efi
  33. copy bootx64.efi \efi\boot\bootfmx64.efi
复制代码

点评

不过如果能把各项参数都包含进去,提供图形界面给用户选择,也能提供图形化菜单编辑,那就是太好了,不用学习命令行了。图形化菜单编辑如xorboot,图形化参数使用如fbinsttool  发表于 2019-3-21 11:29
我认为提供智能脚本倒不如提供做好的文件直接下载,所以这个脚本很好,但不是很适用。  发表于 2019-3-21 10:33
谢谢,这个确实更智能,用户处理更简单。 只是正因为用户用得简单,不利于进一步学习。 grub-mkimage.exe的运用还有很多参数要改变的,比如32位的,比如bios启动的 grub2菜单grub.cfg也要灵活修改以用于各项启动  发表于 2019-3-21 10:28
回复

使用道具 举报

发表于 2019-3-21 11:54:59 | 显示全部楼层
谢谢分享
回复

使用道具 举报

发表于 2019-3-21 17:24:17 | 显示全部楼层
普及W大的成果,赞一个。
回复

使用道具 举报

发表于 2019-3-21 20:59:18 | 显示全部楼层
谢谢分享,
回复

使用道具 举报

发表于 2019-3-22 14:10:24 | 显示全部楼层
期待XORBOOT一统天下,就先G4D一样
回复

使用道具 举报

发表于 2019-4-5 21:02:17 | 显示全部楼层
但有些efi程序xorboot不支持引导,比如 wintoflash 制作的单文件微型Linux系统 http://bbs.wuyou.net/forum.php?mod=viewthread&tid=410295


经过测试,这个 EFI 在 QEMU 和我的 Surface Pro 6 上都是可以启动的呀

点评

0.2.4 是不能启动 minilinux.efi 的,0.2.5 可以了。 部份wim文件在逻辑分区时 xorboot 不能启动,例如微PE的核心文件wepe64.wim,放在esp能启动,放在E盘启动出错。而有的wim文件不论放哪个盘上0.2.5版都能成功  详情 回复 发表于 2019-4-5 21:26
回复

使用道具 举报

 楼主| 发表于 2019-4-5 21:26:29 | 显示全部楼层
Pauly 发表于 2019-4-5 21:02
经过测试,这个 EFI 在 QEMU 和我的 Surface Pro 6 上都是可以启动的呀

0.2.4 是不能启动 minilinux.efi 的,0.2.5 可以了。

部份wim文件在逻辑分区时 xorboot 不能启动,例如微PE的核心文件wepe64.wim,放在esp能启动,放在E盘启动出错。而有的wim文件不论放哪个盘上0.2.5版都能成功启动。不知此问题是否会解决?
回复

使用道具 举报

发表于 2019-5-7 15:20:33 | 显示全部楼层
Grub2定制的启动界面支持鼠标操作吗?

点评

就我知道的grub2菜单是键盘菜单,不支持鼠标操作的。  详情 回复 发表于 2019-5-8 06:13
回复

使用道具 举报

 楼主| 发表于 2019-5-8 06:13:10 | 显示全部楼层
tkfiles 发表于 2019-5-7 15:20
Grub2定制的启动界面支持鼠标操作吗?

就我知道的grub2菜单是键盘菜单,不支持鼠标操作的。
回复

使用道具 举报

发表于 2019-5-8 08:23:31 | 显示全部楼层
不错,感谢制作教程!
回复

使用道具 举报

 楼主| 发表于 2019-5-27 00:22:35 | 显示全部楼层
20190526更新:
1.定制脚本自动获取管理员权限,自动定位脚本所在文件夹
2.定制脚本包含证书模块、文件管理相关模块、wimboot相关模块
3.相关wim镜像和efi程序可统一放到任意磁盘 \wim 文件夹中,WIM/EFI菜单项自动列表启动
回复

使用道具 举报

 楼主| 发表于 2019-5-27 12:04:56 | 显示全部楼层
20190527更新:
1.安全启动(secureboot)支持
回复

使用道具 举报

发表于 2019-5-27 12:38:29 | 显示全部楼层
非常好的学习贴,感谢分享。

grub2.7z不能下载,还请楼主处理下

点评

已更新  详情 回复 发表于 2019-5-27 12:47
回复

使用道具 举报

 楼主| 发表于 2019-5-27 12:47:24 | 显示全部楼层
ksafei 发表于 2019-5-27 12:38
非常好的学习贴,感谢分享。

grub2.7z不能下载,还请楼主处理下

已更新
回复

使用道具 举报

发表于 2019-6-11 10:17:41 | 显示全部楼层
请问如何能加载背景图片呢?

点评

首先制作一张PNG格式的图片,分辨率最好是"1024x768"以保证较好的兼容性。然后将这张图片放到"$prefix/themes/1024x768.png"("$prefix"是你生成efi文件时使用的/p参数指定的目录)。然后在'grub.cfg'中加入如下内容:  详情 回复 发表于 2019-6-12 10:34
回复

使用道具 举报

发表于 2019-6-11 15:49:35 | 显示全部楼层
看完,晕晕的,搞不定。
如果有这样一个 包含全部类型(包含深度DEEPIN)的启动菜单http://bbs.wuyou.net/forum.php?m ... amp;authorid=514118
让小白根据需要复制删除或修改一些启动选项估计才能玩的了

另外,请教 XORboot可以用在bios启动吗?家里的EFI启动现在用的不错,特别是你的小PE,以后再也不用拔插优盘启动了

点评

完整的范例请参考我的启动U盘 http://bbs.wuyou.net/forum.php?mod=viewthread&tid=414574 如果不想制启动U盘可以只看其中的esp文件夹,里面是完整的uefi启动文件包 (包括PE) 我没有装过深度DEEPIN,不了解相关  详情 回复 发表于 2019-6-12 10:43
回复

使用道具 举报

 楼主| 发表于 2019-6-12 10:34:38 | 显示全部楼层
suge 发表于 2019-6-11 10:17
请问如何能加载背景图片呢?

首先制作一张PNG格式的图片,分辨率最好是"1024x768"以保证较好的兼容性。然后将这张图片放到"$prefix/themes/1024x768.png"("$prefix"是你生成efi文件时使用的/p参数指定的目录)。然后在'grub.cfg'中加入如下内容:
  1. set gfxmode=1024x768,auto
  2. terminal_output  gfxterm
  3. background_image $prefix/themes/1024x768.png
复制代码

生成efi文件时需要添加 gfxterm png 这两个模块才能支持显示png图片

点评

看看看看看看  详情 回复 发表于 2022-3-30 18:54
你好,请问 gfxterm png 这两个模块放在从你处下载来的哪个文件夹内呢?  详情 回复 发表于 2019-6-13 08:53
回复

使用道具 举报

 楼主| 发表于 2019-6-12 10:43:28 | 显示全部楼层
vm669 发表于 2019-6-11 15:49
看完,晕晕的,搞不定。
如果有这样一个 包含全部类型(包含深度DEEPIN)的启动菜单http://bbs.wuyou.net/ ...

完整的范例请参考我的启动U盘 http://bbs.wuyou.net/forum.php?mod=viewthread&tid=414574
如果不想制启动U盘可以只看其中的esp文件夹,里面是完整的uefi启动文件包 (包括PE)

我没有装过深度DEEPIN,不了解相关启动文件,所以没有提供这个系统的范例。

XorBoot可以用在bios启动,要用 XorBoot BIOS版本。BIOS下我用g4d已经足够了,所以没有了解XorBoot BIOS版。
回复

使用道具 举报

发表于 2019-6-13 08:53:07 | 显示全部楼层
hilsonma 发表于 2019-6-12 10:34
首先制作一张PNG格式的图片,分辨率最好是"1024x768"以保证较好的兼容性。然后将这张图片放到"$prefix/th ...

你好,请问 gfxterm png 这两个模块放在从你处下载来的哪个文件夹内呢?

点评

如果你生成efi文件时指定了这两个模块,那么生成的grubx64.efi本身就包含这两个模块了,可以使用相关功能。 如果生成efi文件时没有指定这两个模块,就要把下载的grub2包中的x86_64-efi这个文件夹中的 gfxterm.mod  详情 回复 发表于 2019-6-13 12:50
回复

使用道具 举报

 楼主| 发表于 2019-6-13 12:26:38 | 显示全部楼层
本帖最后由 hilsonma 于 2019-6-13 12:40 编辑

建议下载 wintoflash 的新版:http://bbs.wuyou.net/forum.php?mod=viewthread&tid=414244

是上面下载的grub2里有的,你要做的是生成grub2x64.efi (或者bootx64.efi)时使用的脚本要指定加上这两个模块。象下面这样:
  1. grub-mkimage -O x86_64-efi -p /efi/grub -o grubx64.efi normal part_gpt part_msdos fat exfat ntfs chain sbpolicy configfile loopback probe progress regexp test help search wimboot fb halt reboot gfxterm png
复制代码

最后面就是这两个模块。
因为我不想加背景图片,所以我原来的脚本是不含这两个模块的。
上面脚本中,normal开始直到结尾都是指定要使用的模块,顺序不论。你明白的情况下可以按自己意愿增减。你减了哪些模块,那些功能就不支持。你加了哪些模块,生成的efi文件就支持那些功能或命令。

另外一个方法就是将下载的grub2包中的整个x86_64-efi 文件夹复制到你指定的文件夹(跟grub2.cfg同一个文件夹,是生成efi文件时脚本的 -p参数指定的文件夹,又叫$prefix 文件夹),然后要使用到某个模块时就用insmod载入,我不使用这个方法。这个方法多用了一些磁盘空间,目录结构略为复杂,好外是efi程序按需载入模块,占用较少内存。
回复

使用道具 举报

 楼主| 发表于 2019-6-13 12:50:05 | 显示全部楼层
本帖最后由 hilsonma 于 2019-6-13 12:51 编辑
suge 发表于 2019-6-13 08:53
你好,请问 gfxterm png 这两个模块放在从你处下载来的哪个文件夹内呢?


如果你生成efi文件时指定了这两个模块,那么生成的grubx64.efi本身就包含这两个模块了,可以使用相关功能。
如果生成efi文件时没有指定这两个模块,就要把下载的grub2包中的x86_64-efi这个文件夹中的 gfxterm.mod 和png.mod 这两个文件复制到 \efi\grub\ 文件夹,然后在用到这两个命令时先用 insmod 载入这两个模块。
  1. insmod gfxterm
  2. insmod png
  3. set gfxmode=1024x768,auto
  4. terminal_output  gfxterm
  5. background_image $prefix/themes/1024x768.png
复制代码

点评

你好,按照你的方法,背景图折腾一翻,搞好了。还有一个问题,在 z.cmd中加了font模块,在grub文件夹中加入了unicode.pf2与locale文件夹,在grub.cfg中加上 set gfxterm_font=unicode set lang=zh_CN set locale_d  详情 回复 发表于 2019-6-17 10:48
回复

使用道具 举报

发表于 2019-6-13 16:12:45 | 显示全部楼层
感谢分享
回复

使用道具 举报

发表于 2019-6-17 10:48:40 | 显示全部楼层
hilsonma 发表于 2019-6-13 12:50
如果你生成efi文件时指定了这两个模块,那么生成的grubx64.efi本身就包含这两个模块了,可以使用相关功 ...

你好,按照你的方法,背景图折腾一翻,搞好了。还有一个问题,在 z.cmd中加了font模块,在grub文件夹中加入了unicode.pf2与locale文件夹,在grub.cfg中加上 set gfxterm_font=unicode
set lang=zh_CN
set locale_dir=$prefix/locale
insmod gfxterm
terminal_output  gfxterm
loadfont unicode
但还是显示不了中文,请问如何解决呢?谢谢。。

点评

说的不错谢谢  详情 回复 发表于 2022-3-30 19:00
字体文件unicode.pf2 放到 $prefix/fonts 比如 \efi\grub\fonts  详情 回复 发表于 2019-6-17 13:07
感觉还是xorboot比较容易操作些,但有些功能只有GRUB2有,两者混合着用比较完美。。。。  详情 回复 发表于 2019-6-17 10:56
回复

使用道具 举报

发表于 2019-6-17 10:56:52 | 显示全部楼层
suge 发表于 2019-6-17 10:48
你好,按照你的方法,背景图折腾一翻,搞好了。还有一个问题,在 z.cmd中加了font模块,在grub文件夹中加 ...

感觉还是xorboot比较容易操作些,但有些功能只有GRUB2有,两者混合着用比较完美。。。。

点评

同感。别的电脑我都是用xorboot引导,只有我自己用的电脑才是用grub2引导,便于尝试各种pe各种efi  详情 回复 发表于 2019-6-17 13:09
回复

使用道具 举报

 楼主| 发表于 2019-6-17 13:07:16 | 显示全部楼层
suge 发表于 2019-6-17 10:48
你好,按照你的方法,背景图折腾一翻,搞好了。还有一个问题,在 z.cmd中加了font模块,在grub文件夹中加 ...

字体文件unicode.pf2 放到 $prefix/fonts 比如 \efi\grub\fonts

点评

谢谢。解决了。看了http://bbs.wuyou.net/forum.php?mod=viewthread&tid=404837&ordertype=1此文wintoflash对另一网友的回复,原来忽略了utf8编码  详情 回复 发表于 2019-6-17 18:06
回复

使用道具 举报

 楼主| 发表于 2019-6-17 13:09:38 | 显示全部楼层
suge 发表于 2019-6-17 10:56
感觉还是xorboot比较容易操作些,但有些功能只有GRUB2有,两者混合着用比较完美。。。。

同感。别的电脑我都是用xorboot引导,只有我自己用的电脑才是用grub2引导,便于尝试各种pe各种efi
回复

使用道具 举报

发表于 2019-6-17 15:39:41 | 显示全部楼层
学习了!谢谢
回复

使用道具 举报

发表于 2019-6-17 18:06:19 | 显示全部楼层
hilsonma 发表于 2019-6-17 13:07
字体文件unicode.pf2 放到 $prefix/fonts 比如 \efi\grub\fonts

谢谢。解决了。看了http://bbs.wuyou.net/forum.php?m ... 837&ordertype=1此文wintoflash对另一网友的回复,原来忽略了utf8编码
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-3-29 04:47

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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