无忧启动论坛

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

[原创] GRUB4DOS for UEFI

    [复制链接]
3511#
发表于 2025-3-10 00:28:49 | 只看该作者
回复

使用道具 举报

3512#
 楼主| 发表于 2025-3-10 11:16:52 | 只看该作者
如果问题不好定性,那就暂时放放吧。以后有时间慢慢研究。

找到的根源了,是堆与栈的问题。
请再试一试,谢谢!

BOOTX64.rar

147.13 KB, 下载次数: 16, 下载积分: 无忧币 -2

点评

同样的环境测试,1216版能出现菜单,但第一项启动蓝屏,用第四项不能改名的boot菜单项能启动成功, 3月10号的版本不能出现菜单。  详情 回复 发表于 2025-3-21 16:53
1、测试了我电脑里面的64位的pe.iso,除了WePE64_V2.2.iso启动时黑屏,其余均正常启动。速度跑满了网速。我把WePE64_V2.2.iso复制粘贴重命名,删除原来的文件,又可以启动了。所以我怀疑碎片处理那个问题,可有合并  详情 回复 发表于 2025-3-10 13:57
TPFT加HTTP服务器开启。 iftitle 从PXE服务器端EFI启动10pe(/boot/boot.wim) if %@uefi%==64 && set gbk2uni=/efi/ext/gbk2uni && /efi/ext/ntboot /boot/boot.wim 测试结果:蓝屏。 iftitle 从PXE服务器端EF  详情 回复 发表于 2025-3-10 13:05
晚点再详细测试,回帖,辛苦了!  详情 回复 发表于 2025-3-10 12:07
回复

使用道具 举报

3513#
发表于 2025-3-10 12:07:09 来自手机 | 只看该作者
2011yaya2007777 发表于 2025-3-10 11:16
找到的根源了,是堆与栈的问题。
请再试一试,谢谢!

晚点再详细测试,回帖,辛苦了!
回复

使用道具 举报

3514#
发表于 2025-3-10 13:05:45 | 只看该作者
本帖最后由 mygamexxx 于 2025-3-10 13:22 编辑
2011yaya2007777 发表于 2025-3-10 11:16
找到的根源了,是堆与栈的问题。
请再试一试,谢谢!

TFTP加HTTP服务器开启。
iftitle [if "%@boot%"=="(pd)"] 从PXE服务器端EFI启动10pe(/boot/boot.wim)
if %@uefi%==64 && set gbk2uni=/efi/ext/gbk2uni && /efi/ext/ntboot /boot/boot.wim
测试结果:蓝屏。
iftitle [if "%@boot%"=="(pd)"] 从PXE服务器端EFI启动10pe(/boot/boot.wim)
if %@uefi%==64 && set gbk2uni=/efi/ext/gbk2uni && /efi/ext/ntboot (http)/boot/boot.wim
测试结果:正常启动到PE桌面。

title 从PXE服务器端启动8pe(Win8PE64.iso)\n用于G4E网启ISO测试
if %@uefi%==64 && map --mem /iso/Win8PE64.iso (0xff) && chainloader (0xff)
boottitle 从PXE服务器端启动8pe(Win8PE64.iso)\n用于G4E网启ISO测试
if %@uefi%==64 && map --mem (http)/iso/Win8PE64.iso (0xff) && chainloader (0xff)
boot
测试结果:均返回到G4E菜单。

微信截图_20250310130945.png (98.14 KB, 下载次数: 6)

微信截图_20250310130945.png

点评

map --mem /iso/Win8PE64.iso (0xff) && chainloader (0xff) 你这个菜单就不对! 要么分行写,要么用两个分号: map --mem /iso/Win8PE64.iso (0xff) ;; chainloader (0xff)  详情 回复 发表于 2025-3-10 13:59
回复

使用道具 举报

3515#
发表于 2025-3-10 13:15:27 | 只看该作者
本帖最后由 mygamexxx 于 2025-3-14 08:26 编辑

%@boot%还是不对。本地硬盘启动又变成了(0xffffffff),本来应该是(hd0,0)。PXE网启显示%@boot%=(pd)对了。
但不知为什么,PXE网启下setmenu --string=9=5=0xff00ff="硬盘数量:%hdn%,启动分区:%@boot%,根分区:%@root%,启动方式:%bt%",这一句内容不显示了。--------找到不显示的原因:字串太长,显示换行导致被覆盖。

微信截图_20250310131424.png (182.49 KB, 下载次数: 6)

微信截图_20250310131424.png
回复

使用道具 举报

3516#
发表于 2025-3-10 13:57:35 | 只看该作者
本帖最后由 liuzhaoyzz 于 2025-3-10 18:05 编辑
2011yaya2007777 发表于 2025-3-10 11:16
找到的根源了,是堆与栈的问题。
请再试一试,谢谢!

1、测试了我电脑里面的64位的pe.iso,除了WePE64_V2.2.iso启动时黑屏,其余均正常启动。速度跑满了网速。我把WePE64_V2.2.iso复制粘贴重命名,删除原来的文件,又可以启动了。所以我怀疑碎片处理那个问题,可有合并进来?碎片问题的补丁,你没有回复,我不知道具体情况,是否合并进来了?当时我忘了测试倒底有多少个碎片,文件已经删除了。
title WePE64_V2.2.iso
echo --uefi-v
map --mem --top /imgs/WePE64_V2.2.iso (cd)
chainloader (cd-1)

2、测试了我电脑里面的64位的PE.WIM,用你的ntboot都可以正常启动。速度跑满了网速。
title /imgs/WePE64_V2.2/WEPE/WEPE64.WIM-ntboot_2011yaya2007777
echo --uefi-v
set gbk2uni=/efi/grub/ext/gbk2uni
/efi/grub/ext/ntboot (http)/imgs/WePE64_V2.2/WEPE/WEPE64.WIM
boot


3、测试了我电脑里面的64位的PE.WIM,用ipxe的那个wimboot和wintoflash修改版本的wimboot,似乎都不行了,以前版本排除堆栈问题之外可以正常启动。

title /imgs/SXWIN10PEX64_17763_NET20201109/sources/boot.wim-wimboot_wintoflash
echo --uefi-v
kernel /grub/wimboot
initrd @bootx64.efi=/pxe/bootmgfw.efi @bcd=/pxe/BCD @boot.sdi=/boot.sdi @boot.wim=/imgs/SXWIN10PEX64_17763_NET20201109/sources/boot.wim
boot



title /imgs/SXWIN10PEX64_17763_NET20201109/sources/boot.wim-wimboot_wintoflash
echo --uefi-v
kernel /pxe/wimboot
initrd @bootx64.efi=/pxe/bootmgfw.efi @bcd=/pxe/BCD @boot.sdi=/boot.sdi @boot.wim=/imgs/SXWIN10PEX64_17763_NET20201109/sources/boot.wim
boot

上面的两个菜单直接返回主菜单了。我那个包里面,/pxe/wimboot是官方wimboot,/grub/wimboot是wintoflash修改的wimboot。

wimboot下载地址
发布 ·IPXE/WIMBOOT --- Releases · ipxe/wimboot
https://github.com/ipxe/wimboot/releases



发布测试 ·grub4dos/wimboot --- Release test · grub4dos/wimboot
https://github.com/grub4dos/wimboot/releases/tag/test2





速度跑满了网速.png (46.14 KB, 下载次数: 6)

速度跑满了网速.png
回复

使用道具 举报

3517#
发表于 2025-3-10 13:59:33 | 只看该作者
mygamexxx 发表于 2025-3-10 13:05
TFTP加HTTP服务器开启。
iftitle  从PXE服务器端EFI启动10pe(/boot/boot.wim)
if %@uefi%==64 && set  ...

map --mem /iso/Win8PE64.iso (0xff) && chainloader (0xff)
你这个菜单就不对!
要么分行写,要么用两个分号:
map --mem /iso/Win8PE64.iso (0xff) ;; chainloader (0xff)

点评

set gbk2uni=/efi/ext/gbk2uni /efi/ext/ntboot /boot/boot.wim map --mem /iso/Win8PE64.iso (0xff) chainloader (0xff) boot 改成分行,与上面测试结果没有区别。  详情 回复 发表于 2025-3-10 14:13
回复

使用道具 举报

3518#
发表于 2025-3-10 14:13:24 | 只看该作者
本帖最后由 mygamexxx 于 2025-3-10 14:19 编辑
liuzhaoyzz 发表于 2025-3-10 13:59
map --mem /iso/Win8PE64.iso (0xff) && chainloader (0xff)
你这个菜单就不对!
要么分行写,要么用两 ...

set gbk2uni=/efi/ext/gbk2uni
/efi/ext/ntboot /boot/boot.wim
boot

map --mem /iso/Win8PE64.iso (0xff)
chainloader (0xff)
boot

改成分行,加与不加(http)与上面测试结果没有区别。



微信截图_20250310141932.png (332.89 KB, 下载次数: 6)

微信截图_20250310141932.png

点评

哦,我也是被带偏了,g4e下面的map不是这样子的菜单。应该这样子: title WePE64_V2.2.iso echo --uefi-v map --mem --top /imgs/WePE64_V2.2.iso (cd) chainloader (cd-1) 你那样子写是不行的,那是g4d的  详情 回复 发表于 2025-3-10 14:32
回复

使用道具 举报

3519#
发表于 2025-3-10 14:32:23 | 只看该作者
本帖最后由 liuzhaoyzz 于 2025-3-10 14:34 编辑
mygamexxx 发表于 2025-3-10 14:13
set gbk2uni=/efi/ext/gbk2uni
/efi/ext/ntboot /boot/boot.wim
boot

哦,我也是被带偏了,g4e下面的map不是这样子的菜单。应该这样子:

title WePE64_V2.2.iso
echo --uefi-v
map --mem /imgs/WePE64_V2.2.iso (cd)
chainloader (cd-1)

你那样子写是不行的,那是g4d的。

点评

title 从PXE服务器端启动8pe(Win8PE64.iso)\n用于G4E网启ISO测试 map --mem /iso/Win8PE64.iso (cd) chainloader (cd-1) ls (cd-1)/ pause boot  详情 回复 发表于 2025-3-10 15:17
回复

使用道具 举报

3520#
 楼主| 发表于 2025-3-10 14:35:37 | 只看该作者
所以我怀疑碎片处理那个问题,可有合并进来?

现在的测试版本,碎片补丁已经打上了。客户端应当没有问题。
难道是服务器读写受碎片影响?这个还真不知道。

点评

任何文件要想加载到内存,前提都是必须要读取的啊,包括从pd读取,pd上的文件也是保存在磁盘上面的,我感觉也可能会收到碎片的影响吧? 碎片补丁打上了就好了。 以后有碎片了再验证。  详情 回复 发表于 2025-3-10 14:39
回复

使用道具 举报

3521#
发表于 2025-3-10 14:39:08 | 只看该作者
本帖最后由 liuzhaoyzz 于 2025-3-10 18:14 编辑
2011yaya2007777 发表于 2025-3-10 14:35
现在的测试版本,碎片补丁已经打上了。客户端应当没有问题。
难道是服务器读写受碎片影响?这个还真不知 ...

任何文件要想加载到内存,前提都是必须要读取的啊,包括从pd读取,pd上的文件也是保存在磁盘上面的,我感觉也可能会受到碎片的影响吧?

碎片补丁打上了就好了。
以后有碎片了再验证。

回复

使用道具 举报

3522#
 楼主| 发表于 2025-3-10 14:49:51 | 只看该作者
本帖最后由 2011yaya2007777 于 2025-3-10 15:13 编辑
3、测试了我电脑里面的64位的PE.WIM,用ipxe的那个wimboot和wintoflash修改版本的wimboot,似乎都不行了,以前版本排除堆栈问题之外可以正常启动。

我使用旧wimboot测试正常。
title 启动服务端 10PE.WIM
kernel /boot/wimboot
initrd @bootx64.efi=/boot/bootmgfw.efi @bcd=/boot/bcd @boot.sdi=/boot/boot.sdi @boot.wim=/boot/10PE.WIM
boot
新版本wimboot没有测试。视乎新版本的语法修改了。

点评

语法没有修改啊,你发这个版本的前一个版本,还全部都可以的,包括wintoflash修改的wimboot和官方的wimboot,都可以启动pe.wim呢。  详情 回复 发表于 2025-3-11 07:27
回复

使用道具 举报

3523#
 楼主| 发表于 2025-3-10 15:12:21 | 只看该作者
title 从PXE服务器端启动8pe(Win8PE64.iso)\n用于G4E网启ISO测试
if %@uefi%==64 && map --mem /iso/Win8PE64.iso (0xff) && chainloader (0xff)
boottitle 从PXE服务器端启动8pe(Win8PE64.iso)\n用于G4E网启ISO测试
if %@uefi%==64 && map --mem (http)/iso/Win8PE64.iso (0xff) && chainloader (0xff)
boot
测试结果:均返回到G4E菜单。

从ipxe启动g4e,我没有测试。
回复

使用道具 举报

3524#
 楼主| 发表于 2025-3-10 15:14:50 | 只看该作者
TFTP加HTTP服务器开启。
iftitle [if "%@boot%"=="(pd)"] 从PXE服务器端EFI启动10pe(/boot/boot.wim)
if %@uefi%==64 && set gbk2uni=/efi/ext/gbk2uni && /efi/ext/ntboot /boot/boot.wim
测试结果:蓝屏。
iftitle [if "%@boot%"=="(pd)"] 从PXE服务器端EFI启动10pe(/boot/boot.wim)
if %@uefi%==64 && set gbk2uni=/efi/ext/gbk2uni && /efi/ext/ntboot (http)/boot/boot.wim
测试结果:正常启动到PE桌面。

这个问题比较诡异。你再仔细看看,是哪里书写错了。
回复

使用道具 举报

3525#
发表于 2025-3-10 15:17:32 | 只看该作者
本帖最后由 mygamexxx 于 2025-3-10 15:27 编辑
liuzhaoyzz 发表于 2025-3-10 14:32
哦,我也是被带偏了,g4e下面的map不是这样子的菜单。应该这样子:

title WePE64_V2.2.iso

下面菜单,加不加(http),均返回菜单。显示第2张图后,返回菜单。
title 从PXE服务器端启动8pe(Win8PE64.iso)\n用于G4E网启ISO测试
map --mem /iso/Win8PE64.iso (cd)
echo 1
pause
chainloader (cd-1)
echo 2
pause
ls (cd-1)/
echo 3
pause
boot

微信截图_20250310152147.png (19.39 KB, 下载次数: 10)

微信截图_20250310152147.png

微信截图_20250310152344.png (11.74 KB, 下载次数: 7)

微信截图_20250310152344.png

点评

确认是ISO文件的问题,用另一个葱大的ISO,成功启动。  详情 回复 发表于 2025-3-10 15:39
回复

使用道具 举报

3526#
 楼主| 发表于 2025-3-10 15:25:23 | 只看该作者
%@boot%还是不对。本地硬盘启动又变成了(0xffffffff),本来应该是(hd0,0)。

不是启动硬盘变成了(0xffffffff)!看图是启动分区!
看看你的菜单,传递的是什么变量?

点评

就是%@boot%  详情 回复 发表于 2025-3-10 15:26
回复

使用道具 举报

3527#
发表于 2025-3-10 15:26:06 | 只看该作者
本帖最后由 mygamexxx 于 2025-3-10 15:29 编辑
2011yaya2007777 发表于 2025-3-10 15:25
不是启动硬盘变成了(0xffffffff)!看图是启动分区!
看看你的菜单,传递的是什么变量?

就是%@boot%
启动分区:%@boot%

回复

使用道具 举报

3528#
 楼主| 发表于 2025-3-10 15:33:35 | 只看该作者
网起到菜单,进入命令行,此时%@boot%=pd
网起后,出现菜单前做了什么?
或者出现菜单后,在执行选中的菜单项前,做了什么?

点评

在没有加载菜单前。menu.lst debug off echo %@boot% pause  详情 回复 发表于 2025-3-10 15:49
回复

使用道具 举报

3529#
 楼主| 发表于 2025-3-10 15:38:10 | 只看该作者
下面菜单,加不加(http),均返回菜单。显示第2张图后,返回菜单。
title 从PXE服务器端启动8pe(Win8PE64.iso)\n用于G4E网启ISO测试
map --mem /iso/Win8PE64.iso (cd)
echo 1
pause
chainloader (cd-1)
echo 2
pause
ls (cd-1)/
echo 3
pause
boot

我现在测试,正常。

点评

确认是ISO问题,已成功启动PE.iso  详情 回复 发表于 2025-3-10 16:12
回复

使用道具 举报

3530#
发表于 2025-3-10 15:39:34 | 只看该作者
本帖最后由 mygamexxx 于 2025-3-10 15:42 编辑
mygamexxx 发表于 2025-3-10 15:17
下面菜单,加不加(http),均返回菜单。显示第2张图后,返回菜单。
title 从PXE服务器端启动8pe(Win8PE64 ...

确认是ISO文件的问题,用另一个葱大的ISO,加不加(http)均成功启动。
回复

使用道具 举报

3531#
发表于 2025-3-10 15:49:16 | 只看该作者
2011yaya2007777 发表于 2025-3-10 15:33
网起到菜单,进入命令行,此时%@boot%=pd
网起后,出现菜单前做了什么?
或者出现菜单后,在执行选中的菜 ...

在没有加载菜单前。menu.lst

debug off
echo %@boot%
pause

pd.png (7.22 KB, 下载次数: 6)

pd.png

hd.png (21.5 KB, 下载次数: 6)

hd.png
回复

使用道具 举报

3532#
发表于 2025-3-10 16:12:59 | 只看该作者
2011yaya2007777 发表于 2025-3-10 15:38
我现在测试,正常。

确认是ISO问题,已成功启动PE.iso
回复

使用道具 举报

3533#
 楼主| 发表于 2025-3-10 16:14:55 | 只看该作者
在没有加载菜单前。menu.lst

可能内部还没有调整过来。
回复

使用道具 举报

3534#
发表于 2025-3-11 07:27:27 | 只看该作者
2011yaya2007777 发表于 2025-3-10 14:49
我使用旧wimboot测试正常。
title 启动服务端 10PE.WIM
kernel /boot/wimboot

语法没有修改啊,你发这个版本的前一个版本,好像是2025.2.25日的版本,还全部都可以的,包括wintoflash修改的wimboot和官方的wimboot,都可以启动pe.wim呢。

点评

我这边wintoflash修改的wimboot2.8版本,启动wim成功。  详情 回复 发表于 2025-3-11 07:46
回复

使用道具 举报

3535#
发表于 2025-3-11 07:46:43 | 只看该作者
liuzhaoyzz 发表于 2025-3-11 07:27
语法没有修改啊,你发这个版本的前一个版本,好像是2025.2.25日的版本,还全部都可以的,包括wintoflash ...

我这边wintoflash修改的wimboot2.8版本,启动wim成功。

点评

他发布的2.8版本,在哪里?我看原来的2.7.5版本好像没有了?  详情 回复 发表于 2025-3-11 08:37
回复

使用道具 举报

3536#
发表于 2025-3-11 08:37:10 | 只看该作者
本帖最后由 liuzhaoyzz 于 2025-3-11 08:40 编辑
mygamexxx 发表于 2025-3-11 07:46
我这边wintoflash修改的wimboot2.8版本,启动wim成功。

他发布的2.8版本,在哪里?我看原来的2.7.5版本好像没有了?

昨天不知道咋回事,g4e搭配wintoflash的修改版wimboot启动失败,今天又可以了。邪了门了。

点评

https://github.com/chenall/grubutils/releases/latest  详情 回复 发表于 2025-3-11 11:26
回复

使用道具 举报

3537#
发表于 2025-3-11 11:26:05 | 只看该作者
liuzhaoyzz 发表于 2025-3-11 08:37
他发布的2.8版本,在哪里?我看原来的2.7.5版本好像没有了?

昨天不知道咋回事,g4e搭配wintoflash的 ...

https://github.com/chenall/grubutils/releases/latest

点评

用这个确实可以。  详情 回复 发表于 2025-3-11 14:03
回复

使用道具 举报

3538#
发表于 2025-3-11 14:03:18 | 只看该作者
mygamexxx 发表于 2025-3-11 11:26
https://github.com/chenall/grubutils/releases/latest

用这个确实可以。
回复

使用道具 举报

3539#
发表于 2025-3-11 19:03:59 | 只看该作者
vbox测试 ,没见过菜单


dir.txt的内容是什么?

直接启动


ipxe的snponly.efi 间接启动


点评

1、dir.txt可以删除,这个是为了在pxe客户端ls目录和文件用的。没有他不影响pxe启动。 2、看你的截图,Does not support EFI_HTTP_POTOCOL!(单词protocol拼错了?) 好像virtualBOX的UEFI版本低了,不支持http  详情 回复 发表于 2025-3-12 07:57
回复

使用道具 举报

3540#
发表于 2025-3-11 19:16:42 | 只看该作者
谢谢分享
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2025-4-1 02:23

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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