无忧启动论坛

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

[原创] GRUB4DOS for UEFI

    [复制链接]
跳转到指定楼层
#
发表于 2020-10-29 10:31:46 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
本帖最后由 2011yaya2007777 于 2024-12-16 15:28 编辑

  使用于 UEFI 环境的 GRUB4DOS。
  
  这是一个庞大的工程,几乎所有的代码都捋了一遍。修改了控制台键盘输入输出,控制台屏幕输出,内存控制,
  驱动器控制,获取日期时间,暂停控制,图形模式及Unicode字体实现,PXE 网启,等等。
  
  开发过程中,参考了 GRUB2 源码。有关映射,参考了 wintoflash 的源码。

  文件下载:http://grub4dos.chenall.net/                  https://github.com/chenall/grub4dos/releases

更新说明:
2024-12-16 (yaya)
  支持http网起。
  例如:map (http)/imgs/pe.iso (cd)
           chainloader (cd-1)
           boor
  例如:/efi/grub/ext/ntboot (http)/imgs/pe.wim

2021-04-24 (yaya)
  支持尾续菜单, 改进批处理调试, 内置 unicode 16*16 英文点阵字符。

2020-11-18 (yaya)
  1. 菜单目录更改为:/efi/grub/menu.lst
  2. 支持实体光盘、硬盘启动。
  3. 多个光盘时,启动光盘调整为第一光盘,以适应 windows。
  4. 增加退出 GRUB4DOS 函数 exit_g4d。
  5. 批处理变更:
     函数下标不变,参数由 32 位变更为 64 位。(Fn.下标 参数1 参数2 ...)
     变量地址由 0x8304 变更为 0x8308,由 32 位变更为 64 位。
     call Fn 函数,如果使用变量 0x8200-0x8400 则要在前面加g4e,如 g4e0x8217。
     批处理增加 else 函数。增加 {脚本集} 表示法。
     如:
     if 条件
     {
       脚本集
       if 条件 {
         脚本集 }
       else {
         脚本集 }
     }
     else if 条件
     {
       脚本集
     }
     else
     {
       脚本集
     }
     注意:
     1. 大括弧必须是一行的结尾。
     2. 脚本集可多行书写。
     3. 大括弧内部可以嵌套。

2020-10-30
  1. 可以启动 efi 文件。
  2. 可以启动 iso 及 img 文件。
  3. 内置热键功能。
  
  与旧版本不同之处:
  1. 可以通过 graphicsmode 命令查看系统支持的图形模式。
  2. map 函数执行后即挂载。不需要执行 --hook 指令。
  3. 取消 --hook,--unhook,--rehook,--unmap=,--floppies=,--harddrives= 指令。
  4. 在 UEFI 环境,可以从 0x80 以外的磁盘启动,因此不需要交换磁盘操作,如 map (hd0) (hd1)。
  5. 取消删除磁盘功能,如 map (hd1) (hd1)。
  6. 目前 PXE 网启只支持 tftp。
  






点评

这个叫g4e??????  发表于 2024-7-10 19:10
辛苦了  发表于 2024-5-11 18:36
楼主, 建议提供一个样本PE,包括ISO镜像,包含某PE制作工具对应的完整包。 这样比较易学易用。 比较像grub4DOSmenu.lst那样  发表于 2023-7-22 11:13
有没有efi siso 模块啊?  发表于 2022-2-17 07:02
菜单目录更能不能自定义?  发表于 2022-1-7 21:32

评分

参与人数 130无忧币 +647 收起 理由
新空气 + 5 赞一个!
yyz2191958 + 2 赞一个!
liangzr1976 + 5 很给力!
slyneo + 5 很给力!
jhdonline + 1 很给力!
1928374655 -1 赞一个!
msvcdll + 1 很给力!
天涯无痕 + 5 很给力!
kunpeng + 5
快雪时晴 + 1 很给力!
wawakuliao + 5 赞一个!
weiteng + 5 赞一个!
2012chenyuwen + 5 很给力!
xuxuezeng + 5 很给力!
f111 + 5 很给力!!!
994956737 + 1 很给力!
9001 + 5 致敬技术大神们!
szmsys + 5 很给力!
hzghgz + 5 赞一个!
ddngng + 5 很给力!
wwj402 + 5 很给力!
小妹 + 3
lpsyuntao + 1 赞一个!
ddianxing + 5 很给力!
defswffaaaawe + 1 赞一个!
robincai + 30 亲测非常好用!
wfccsqk + 2
ypf188 + 5 很给力!
a-lao + 5 很给力!
2011cwj6958 + 5 很给力!

查看全部评分

3706#
发表于 4 天前 | 只看该作者
本帖最后由 mygamexxx 于 2025-6-5 17:27 编辑
wmx400 发表于 2025-6-5 11:45
echo --uefi-v    UEFI revision  20046
这个版本算是旧的吗?
thinkpad的官方网站上UEFI BIOS升级程 ...

这个应该可以HTTP网启,用QEMU,v2003c的不行,提示无HTTP协议,v20046能够HTTP网启。
回复

使用道具 举报

3705#
发表于 4 天前 | 只看该作者
mygamexxx 发表于 2025-6-5 07:37
启动到命令行下,echo --uefi-v,查看一下UEFI的版本,是否是低版本的。

echo --uefi-v    UEFI revision  20046
这个版本算是旧的吗?
thinkpad的官方网站上UEFI BIOS升级程序版本应该是最新的了。

点评

这个应该可以HTTP网启  详情 回复 发表于 4 天前
回复

使用道具 举报

3704#
发表于 4 天前 | 只看该作者
感谢!
回复

使用道具 举报

3703#
发表于 4 天前 | 只看该作者
wmx400 发表于 2025-5-29 22:15
实机UEFI应该是支持HTTP的,因为我测试用ipxe.efi用autoexec.ipxe菜单是可以支持http的。
实机用g4e加载 ...

启动到命令行下,echo --uefi-v,查看一下UEFI的版本,是否是低版本的。
回复

使用道具 举报

3702#
发表于 2025-5-29 22:15:07 | 只看该作者
2011yaya2007777 发表于 2025-5-28 19:28
可能是实机的UEFI固件不支持http吧。也可能是g4e没有探测到。实机启动前你能加载网起服务器?

实机UEFI应该是支持HTTP的,因为我测试用ipxe.efi用autoexec.ipxe菜单是可以支持http的。
实机用g4e加载菜单的时候,上面显示via tftp ,但是tftp也能加载启动菜单,拉WIM文件,到进PE的整个过程。可能只是没有http那么快,速度很慢。看整个日志是不走HTTP,全走的tftp的,也可能是没探测到。
不知道是否还有其他测试方法,或需要提供的数据可以后续改进的。

点评

启动到命令行下,echo --uefi-v,查看一下UEFI的版本,是否是低版本的。  详情 回复 发表于 4 天前
回复

使用道具 举报

3701#
 楼主| 发表于 2025-5-29 15:46:13 | 只看该作者
本帖最后由 2011yaya2007777 于 2025-5-29 15:47 编辑
3.增加精简字库模式:--simp=起始0,终止0,...,起始3,终止3
    内置字库应当包含 DotSize=[font_h],['simp']
    中文可以使用 --simp=
    例如:font --font-high=24 --simp= /24_24.hex
             DotSize=24,simp

使用内置字库,如果尺寸不是16*16,需要在内置字库前面有: DotSize=24
另起一行或者数行,是内置的hex字库。

精简字库模式视乎没有人使用,现在不能确保没有问题,现在的硬盘及内存比那时候大得不是一个数量级,没有必要使用他。

内置字库时,外置菜单里不需要加载字库,也不需要指定尺寸。

如果字库是外置的,比如在 /efi/grub/font/24_24.hex,外置菜单就应当是这样的:
font --font-high=24 /efi/grub/font/24_24.hex
回复

使用道具 举报

3700#
 楼主| 发表于 2025-5-29 15:16:59 | 只看该作者
本帖最后由 2011yaya2007777 于 2025-5-29 15:18 编辑
( 00007=\efi\grub\boot.efi 访问不上, 提示文件大小为0)

在config.ini文件里的[dhcp]目录下,可以没有tftpd=1,但是不可以有tftpd=0.否则不能网起。
因为g4e为了在不支持http的机器上确保网起到菜单,一开始是使用tftp的。
你把tftpd=0删除试一试。
回复

使用道具 举报

3699#
 楼主| 发表于 2025-5-29 15:04:04 | 只看该作者
不同的 tftp服务器:  速度不一样

实机肯定比虚拟机快。
VMware 又比 Qemu 快。
回复

使用道具 举报

3698#
发表于 2025-5-28 19:33:05 | 只看该作者
强大的系统
回复

使用道具 举报

3697#
 楼主| 发表于 2025-5-28 19:28:46 来自手机 | 只看该作者
可能是实机的UEFI固件不支持http吧。也可能是g4e没有探测到。实机启动前你能加载网起服务器?
回复

使用道具 举报

3696#
发表于 2025-5-28 19:00:45 | 只看该作者
本帖最后由 wmx400 于 2025-5-28 19:02 编辑

大佬好,前几天一直在用虚拟机来测试pxe网络启动,目前虚拟机上能实现http引导wim文件,里面也写了(http),启动是能看到via HTTP。也测试过zemu_qemu也能正常显示http。
但是今天我用实机笔记本的时候,发现笔记本不走http了,走的还是tftp,上面显示via tftp。
用的HFS+TinyPXEServer,优先启动了HFS,然后也测试过dhcpserver 和 EasyWebSvr。
拉wim文件的时候都走的tftp。ntboot和G4E文件用的grub4dos-for_UEFI-2025-05-10,请指教。


title 启动服务端 http winpe.wim
/efi/grub/ext/ntboot (http)/wims/boot.wim
boot
title 使用 http 网起 winpe.iso
map (http)/wims/winpe.iso (0xff)
chainloader (0xff)
boot

回复

使用道具 举报

3695#
发表于 2025-5-27 16:11:31 | 只看该作者
开发不易啊,致敬~
回复

使用道具 举报

3694#
发表于 2025-5-27 12:43:37 | 只看该作者
赞一个!
回复

使用道具 举报

3693#
发表于 2025-5-25 11:32:02 | 只看该作者
不同的 tftp服务器:  速度不一样

虚拟机内tiny-pxe的tftp:    5MB/s   

系统内的 tftp-hpa:             20MB/s

___________________________________

访问 ubuntu 的 tftp:  00007=/efi/grub/boot.efi    ( 00007=\efi\grub\boot.efi 访问不上, 提示文件大小为0)

回复

使用道具 举报

3692#
发表于 2025-5-21 13:19:45 | 只看该作者
本帖最后由 mygamexxx 于 2025-5-21 17:38 编辑

VMware虚拟机测试:
/efi/ext/ntboot (http)/boot/boot.wim 和 map (http)/isos/NewBeePlus_Server.iso (0xff) && chainloader (0xff),HTTP方式,均2-3分钟成功到PE桌面。
/efi/ext/ntboot /boot/boot.wim 和 map /isos/NewBeePlus_Server.iso (0xff) && chainloader (0xff),TFTP方式,时间比较长,测试中,ntboot方式与map方式,均40分钟到PE桌面,
回复

使用道具 举报

3691#
发表于 2025-5-21 13:08:41 | 只看该作者
map (http)/isos/NewBeePlus_Server.iso (0xff) && chainloader (0xff),HTTP方式,2-3分钟,第一次BCD错误见http1.png、http2.png,点击终止,再点击启动,第二次纯蓝屏见http3.png、http4.png,点击终止,再点击启动,第三次BCD错误见http5.png。

HTTP1.png (52.16 KB, 下载次数: 11)

HTTP1.png

http2.png (58.62 KB, 下载次数: 9)

http2.png

HTTP3.png (56.53 KB, 下载次数: 8)

HTTP3.png

HTTP4.png (52.44 KB, 下载次数: 9)

HTTP4.png

HTTP5.png (57.91 KB, 下载次数: 8)

HTTP5.png
回复

使用道具 举报

3690#
发表于 2025-5-21 13:04:21 | 只看该作者
map /isos/NewBeePlus_Server.iso (0xff) && chainloader (0xff),TFTP方式,约20分钟成功到PE桌面。


TFTP1.png (46.91 KB, 下载次数: 8)

TFTP1.png

TFTP2.png (353.31 KB, 下载次数: 12)

TFTP2.png
回复

使用道具 举报

3689#
发表于 2025-5-21 12:31:15 | 只看该作者
mygamexxx 发表于 2025-5-21 12:19
此版本从我测试看:(pd)/efi/grub/ntboot /boot/pe64.wim,就是TFTP,(pd)/efi/grub/ntboot (http)/boot/ ...

试过:   (pd)/efi/grub/ntboot (http)/boot/pe64.wim

可能是  测试环境 连不上 http服务,  回退为  tftp
回复

使用道具 举报

3688#
发表于 2025-5-21 12:19:24 | 只看该作者

此版本从我测试看:(pd)/efi/grub/ntboot /boot/pe64.wim,就是TFTP,(pd)/efi/grub/ntboot (http)/boot/pe64.wim,才走HTTP。

点评

试过: (pd)/efi/grub/ntboot (http)/boot/pe64.wim 可能是 测试环境 连不上 http服务, 回退为 tftp  详情 回复 发表于 2025-5-21 12:31
回复

使用道具 举报

3687#
发表于 2025-5-21 12:12:10 | 只看该作者


原文件中 没有 图上 标的 文字, 是 cat 多出来的.

回复

使用道具 举报

3686#
发表于 2025-5-21 11:44:34 | 只看该作者


90秒  进pe


点评

此版本从我测试看:(pd)/efi/grub/ntboot /boot/pe64.wim,就是TFTP,(pd)/efi/grub/ntboot (http)/boot/pe64.wim,才走HTTP。  详情 回复 发表于 2025-5-21 12:19
回复

使用道具 举报

3685#
发表于 2025-5-21 11:06:23 | 只看该作者
使用zenEMU关闭HTTP,开EasyWebSvr作为HTTP服务器,第一次后每次点击终止,再点击启动,第一次蓝屏,第二次BCD错误,第三次返回菜单,第四次蓝屏。

第二次.png (217.29 KB, 下载次数: 8)

第二次.png

第三次.png (185.38 KB, 下载次数: 13)

第三次.png

第四次.png (198.75 KB, 下载次数: 6)

第四次.png
回复

使用道具 举报

3684#
发表于 2025-5-21 10:32:23 | 只看该作者
本帖最后由 mygamexxx 于 2025-5-21 10:34 编辑

从测试看,TFTP基本没问题了,HTTP还有问题。
Fail to http->pol1!,  这一句后面的数据会每次不同。
回复

使用道具 举报

3683#
发表于 2025-5-21 10:21:43 | 只看该作者
本帖最后由 xiaoy 于 2025-5-21 11:15 编辑
2011yaya2007777 发表于 2025-5-21 08:18
你这是使用的什么版本?怎么会有打开 /bcdvhd 的提示?
是不是 ntboot 比较旧?从官网下载5月10日的版本 ...

timeout 5

default 0

color normal=0xff0000 highlight=0xffff00 helptext=0xff00ff heading=0x66ff00 border=0xff00
graphicsmode -1 800
calc *0x834c > nul ;; set a=%@retval%
if %a%>=801 && font --font-high=40 /efi/grub/menu40.hex
if %a%>=100 && if %a%<=800 && font /efi/grub/unifont.hex.gz && splashimage /efi/grub/lt.jpg
setmenu --box x=2 w=0 y=6 h=9 l=8
setmenu --lang=zh
setmenu --auto-num-on
setmenu --string=m=2=0xff0000="G4D 维  护  菜  单"
setmenu --string=s=1=0xffaa="date&time=yyyy-MM-dd  HH:mm:ss"
setmenu --timeout=90=2=0x88000000ffff
setmenu --hotkey-color=0xffff

title 启动服务端  winpe.wim
/efi/grub/ext/ntboot (http)/boot/winpe.wim
boot

菜单如上,如果去掉(http)能启动成功PE   已经替换了最新版的NTBOOT 仍会启动PE蓝屏,应该还是没有通过HTTP成功加载WIM。

521.png (65.15 KB, 下载次数: 8)

521.png

522.png (97.35 KB, 下载次数: 8)

522.png
回复

使用道具 举报

3682#
发表于 2025-5-21 10:13:49 | 只看该作者
本帖最后由 mygamexxx 于 2025-5-21 10:16 编辑
mygamexxx 发表于 2025-5-21 08:56
关闭QEMU窗口,再点启动。

使用点击终止,再点击启动,第一次蓝屏,第二次返回菜单,第三次蓝屏。第三次蓝屏后,过一段时间自动重启,蓝屏。

第二次.png (62.21 KB, 下载次数: 10)

第二次.png

第四次.png (53.43 KB, 下载次数: 8)

第四次.png
回复

使用道具 举报

3681#
发表于 2025-5-21 10:05:29 | 只看该作者
wintoflash 发表于 2025-5-21 09:11
上面有警告:可用内存可能不足
是不是虚拟机内存设置太大,导致和实体机内存交换了

物理内存12G,虚拟机内存4096MB
回复

使用道具 举报

3680#
发表于 2025-5-21 09:11:51 | 只看该作者
mygamexxx 发表于 2025-5-21 08:19
/efi/ext/ntboot /boot/boot.wim,一次性成功到PE桌面,TFTP方式,约15分钟。

上面有警告:可用内存可能不足
是不是虚拟机内存设置太大,导致和实体机内存交换了

点评

物理内存12G,虚拟机内存4096MB  详情 回复 发表于 2025-5-21 10:05
回复

使用道具 举报

3679#
发表于 2025-5-21 08:56:43 | 只看该作者
2011yaya2007777 发表于 2025-5-21 08:47
这个连续3次,每次点击zenqemu的“终止”和“启动”按钮,还是关闭zenqemu,然后重启?

关闭QEMU窗口,再点启动。

点评

使用点击终止,再点击启动,第一次蓝屏,第二次返回菜单,第三次蓝屏。  详情 回复 发表于 2025-5-21 10:13
回复

使用道具 举报

3678#
 楼主| 发表于 2025-5-21 08:47:16 | 只看该作者
/efi/ext/ntboot (http)/boot/boot.wim,连续三次蓝屏,HTTP方式。

这个连续3次,每次点击zenqemu的“终止”和“启动”按钮,还是关闭zenqemu,然后重启?

点评

关闭QEMU窗口,再点启动。  详情 回复 发表于 2025-5-21 08:56
回复

使用道具 举报

3677#
发表于 2025-5-21 08:20:45 | 只看该作者
/efi/ext/ntboot (http)/boot/boot.wim,连续三次蓝屏,HTTP方式。

wechat_2025-05-21_080737_766.png (75.11 KB, 下载次数: 9)

wechat_2025-05-21_080737_766.png

wechat_2025-05-21_080924_715.png (62.77 KB, 下载次数: 8)

wechat_2025-05-21_080924_715.png

wechat_2025-05-21_081347_201.png (19.43 KB, 下载次数: 9)

wechat_2025-05-21_081347_201.png
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2025-6-9 07:48

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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