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

[原创] GRUB4DOS for UEFI

   火... [复制链接]
发表于 2025-3-27 08:03:53 | 显示全部楼层
本帖最后由 mygamexxx 于 2025-3-27 08:06 编辑

使用.vmdk虚拟磁盘测试,确保第一启动是G4E。
硬盘分区情况和启动结果如下:20250212的测试版,%@boot%是正确的(hd0,0)。20250325不正确,是(0xffffffff)。
微信截图_20250327080022.png
微信截图_20250327075600.png
微信截图_20250327075504.png
微信截图_20250327075428.png
微信截图_20250327075338.png
回复

使用道具 举报

发表于 2025-3-28 08:22:02 | 显示全部楼层
本帖最后由 mygamexxx 于 2025-3-28 09:04 编辑
2011yaya2007777 发表于 2025-3-26 17:49
由Ventoy转来,怎么排除不是它引起的?根应当是pd,而现在成了hd0,2。出现菜单后,进入命令行,执行:root

验证应该很简单,从本地硬盘启动G4E,进入命令行,echo %@boot%

不是%@root%!!!!

关于PXE网启,是否默认TFTP,菜单中加上(http)后,再http。
回复

使用道具 举报

发表于 2025-3-28 09:24:24 | 显示全部楼层
2011yaya2007777 发表于 2025-3-26 19:06
经测试,从grub2网起,转g4e,失败。

3月25日的g4e,压缩包里面还是没有ipxegrldr啊?
可能修改调整编译?
回复

使用道具 举报

 楼主| 发表于 2025-3-28 10:17:46 | 显示全部楼层
验证应该很简单,从本地硬盘启动G4E,进入命令行,echo %@boot%

BOOTX64.rar

145.78 KB, 下载次数: 23, 下载积分: 无忧币 -2

点评

测试了本地硬盘启动与PXE启动,%@boot%均正常了。  详情 回复 发表于 2025-3-28 11:08
回复

使用道具 举报

发表于 2025-3-28 11:08:37 | 显示全部楼层

测试了本地硬盘启动与PXE启动,%@boot%均正常了。
回复

使用道具 举报

发表于 2025-3-31 11:46:31 | 显示全部楼层
UEFI 环境的 GRUB4DOS比BIOS下考虑的东西多。
回复

使用道具 举报

发表于 2025-3-31 17:18:39 | 显示全部楼层
mygamexxx 发表于 2025-3-26 17:03
wintoflash发布的ZenEMU,配合 EasyWebSvr测试新版本G4E,也是各种不同的状况,使用了不同的网络e1000\rtl8 ...

如何用qemu测试http网启?http server是怎么设置的?

点评

http根目录与tftp根目录一样就行。  详情 回复 发表于 2025-3-31 19:50
回复

使用道具 举报

 楼主| 发表于 2025-3-31 18:21:21 | 显示全部楼层
如何用qemu测试http网启?http server是怎么设置的?

我使用EasyWebSvr,首先启动它。
设置是:
[WebServer]
RootDir=C:\usr\TinyPXEServer-win\netboot

netboot是网起根目录,也就是“tftp目录”。
EasyWebSvr子目录在netboot网起根目录下。
回复

使用道具 举报

发表于 2025-3-31 19:50:41 | 显示全部楼层
wintoflash 发表于 2025-3-31 17:18
如何用qemu测试http网启?http server是怎么设置的?

http根目录与tftp根目录一样就行。
回复

使用道具 举报

 楼主| 发表于 2025-3-31 19:55:05 来自手机 | 显示全部楼层
最好是翻译成“网起文件夹”,或者是“网起根目录”。容易理解。
回复

使用道具 举报

发表于 2025-4-1 10:13:54 | 显示全部楼层
感谢,目录还不太懂,慢慢研究研究。
回复

使用道具 举报

发表于 2025-4-1 14:42:28 | 显示全部楼层
使用旧版本的QEMU启动测试器和EasyWebSvr配合,分别测试IPXE.EFI和bootg4e.efi的HTTP网启。
IPXE.EFI在出菜单后,能看到HTTP日志中正常获取了文件。但启动到最后黑屏失败,错误代码为0xc0000017。
G4E在出菜单后,停留在Copy data from the network viaTFTP, please wait...,HTTP日志中没有信息。
bootg4e.efi.png
ipxe.efi.png
回复

使用道具 举报

发表于 2025-4-1 14:53:21 | 显示全部楼层
IPXE.EFI使用新版QEMU启动测试器配合EasyWebSvr,能顺利启动至PE桌面。
G4E采用WIMBOOT进行PXE网启,使用新版QEMU测试器配合EasyWebSvr,停留WIMBOOT界面。HTTP日志有相关内容。
G4E采用WIMBOOT进行PXE网启,使用旧版QEMU测试器配合EasyWebSvr,停留WIMBOOT界面。HTTP日志无内容。
新版QEMU-G4E-WIMBOOT.png
旧版QEMU-G4E-WIMBOOT.png
回复

使用道具 举报

 楼主| 发表于 2025-4-1 19:32:38 | 显示全部楼层
使用旧版本的QEMU启动测试器和EasyWebSvr配合,分别测试IPXE.EFI和bootg4e.efi的HTTP网启

首先启动EasyWebSvr!!!
然后启动旧版本的QEMU启动测试器。

title 启动服务端 WePE64_V2.2.iso
map /boot/WePE64_V2.2.iso (cd)
chainloader (cd-1)
boot
成功网起。
不过虽然使用HTTP,仍然是龟速!!!慢得很。

点评

现在使用haneWIN DHCP Server+EasyWebSvr,VMware在UEFI下,无论用ntboot\wimboot\map,这三种方式都能成功HTTP网启至PE桌面。 就是用QEMU+EasyWebSvr,HTTP网启从没有成功到PE桌面过,不知道是什么原因。  详情 回复 发表于 2025-4-2 13:18
回复

使用道具 举报

发表于 2025-4-2 13:18:01 | 显示全部楼层
本帖最后由 mygamexxx 于 2025-4-2 13:19 编辑
2011yaya2007777 发表于 2025-4-1 19:32
首先启动EasyWebSvr!!!
然后启动旧版本的QEMU启动测试器。

现在使用haneWIN DHCP Server+EasyWebSvr,VMware在UEFI下,无论用ntboot\wimboot\map,这三种方式都能成功HTTP网启至PE桌面。

就是用QEMU+EasyWebSvr,HTTP网启从没有成功到PE桌面过,不知道是什么原因。单纯TFTP就更不用说了。
回复

使用道具 举报

发表于 2025-4-2 13:28:24 | 显示全部楼层
谢谢!!! 支持!!!
回复

使用道具 举报

发表于 2025-4-2 20:30:04 | 显示全部楼层
继续反馈,同样环境 12.16.和2.25的版本能正常启动 HTTP模式,  其它版本和3580楼的启动了都看不到菜单
回复

使用道具 举报

发表于 2025-4-3 09:32:18 | 显示全部楼层
本帖最后由 mygamexxx 于 2025-4-3 09:44 编辑

bootmgfe.efi(ZenEMU 在 TFTP)大概10~12分钟看到PE桌面。启动成功。
ipxe.efi(ZenEMU 在 TFTP + EasyWebSvr)大概5~7分钟看到PE桌面。启动成功。
ipxe.efi(ZenEMU 在 HTTP)大概5~7分钟看到PE桌面。启动成功。
G4E.efi  ntboot方式(ZenEMU 在 HTTP)有时能出菜单,有时不能出菜单,出菜单后,最好的情况是蓝屏。G4E的网启还需要完善。

bootmgfe.efi(VMware+haneWIN DHCP Server+EasyWebSvr)大概1.5分钟完成PE桌面。启动成功。走的是TFTP,没有HTTP。
ipxe.efi(VMware+haneWIN DHCP Server+EasyWebSvr)大概1分钟完成PE桌面。启动成功。HTTP。
G4E.efi  ntboot方式  (VMware+haneWIN DHCP Server+EasyWebSvr)大概1.5分钟完成PE桌面。启动成功。HTTP。
G4E.efi  map方式  (VMware+haneWIN DHCP Server+EasyWebSvr)大概1.5分钟完成PE桌面。启动成功。HTTP。
G4E.efi  wimboot方式  (VMware+haneWIN DHCP Server+EasyWebSvr)大概1.5分钟完成PE桌面。启动成功。HTTP。
回复

使用道具 举报

发表于 2025-4-3 09:52:37 | 显示全部楼层
太强大了,感谢分享。
回复

使用道具 举报

发表于 2025-4-9 09:34:01 | 显示全部楼层

title NTBOOT 启动 VHD find --set-root /VHDOS/LTSC2024.VHDX | set vhdd= ntboot...

本帖最后由 minmax 于 2025-4-9 09:35 编辑

請問 BRUG4DOS FOR  UEFI 中 NTBOOT 啟動 VHD(X)的參數
與之前或另版的NTBOOT參數不同, WIM 可以啟動 ntboot %vhdd%/PE.WIM winload=/Windows/System32/boot/winload.efi minint=1
title NTBOOT 启动 VHD
find --set-root /VHDOS/LTSC2024.VHDX | set vhdd=
ntboot %vhdd%/LTSC2024.VHDX winload=/Windows/System32/boot/winload.efi minint=1
boot
出現選單就報以下錯,執行的話也是
aligned pointer 8e234252
回复

使用道具 举报

 楼主| 发表于 2025-4-9 14:14:39 | 显示全部楼层
出現選單就報以下錯,執行的話也是

这句话是不是可以这样理解:
你通过U盘或者其他方式启动到出现菜单,其中菜单项包含”title NTBOOT 启动 VHD“,这时报错”aligned pointer 8e234252“,是这样吗?

我查了一下,释放内存时有一句错误提示”printf_debug ("unaligned pointer %x", ptr);“,且只有这一句包含”aligned pointer %x“。

点评

报 unaligned pointer 这种错误,个人感觉是严重错误。就是,程序含有 bug,居然能够让指针不对齐!32位的程序,应该是 4 字节对齐的。而 8e234252 不是 4 字节对齐。 产生这种错误,个人感觉,大概率是汇编代码  详情 回复 发表于 2025-4-10 09:06
呼叫NTBOOT 參數不對(我猜 )麻煩 給個示例  详情 回复 发表于 2025-4-9 16:40
回复

使用道具 举报

发表于 2025-4-9 16:40:04 | 显示全部楼层
本帖最后由 minmax 于 2025-4-9 17:34 编辑
2011yaya2007777 发表于 2025-4-9 14:14
这句话是不是可以这样理解:
你通过U盘或者其他方式启动到出现菜单,其中菜单项包含”title NTBOOT 启动 ...

呼叫NTBOOT 參數不對(我猜 )麻煩 給個示例
是否目前不支持.VHDX
回复

使用道具 举报

 楼主| 发表于 2025-4-9 17:52:24 来自手机 | 显示全部楼层
ntboot前面应当有路径。它肯定不在根目录。应该支持vhdx吧,没有测试过。实际上是调用微软的efi启动的。

点评

有設定command --set-path=()/grub/  详情 回复 发表于 2025-4-10 11:04
回复

使用道具 举报

发表于 2025-4-10 09:06:55 | 显示全部楼层
2011yaya2007777 发表于 2025-4-9 14:14
这句话是不是可以这样理解:
你通过U盘或者其他方式启动到出现菜单,其中菜单项包含”title NTBOOT 启动 ...

报 unaligned pointer 这种错误,个人感觉是严重错误。就是,程序含有 bug,居然能够让指针不对齐!32位的程序,应该是 4 字节对齐的。而 8e234252 不是 4 字节对齐。

产生这种错误,个人感觉,大概率是汇编代码有错。如果汇编代码是 grub2 之中的,那就是 grub2 本身含有 bug。相关的代码应该不是 yaya 写的,因为 yaya 自己对这条错误信息好像也并不熟悉(yaya 自己还需要查一下才知道)。

我在基于 grub legacy 做 grub4dos 的时候,就已经发现 grub legacy 里面的堆栈很糟糕。后来,我把堆栈重新设计和整理,基本上不会再有各种死机发生。

也就是说,有可能是堆栈溢出、堆栈冲突之类的错误。递归函数占用过多堆栈,也能导致堆栈溢出。我在 grub4dos 中,把 grub legacy 原有的递归函数统统转为非递归函数;把函数体中的大变量(比如 char str[512]; 之类的)都放到函数体之外(变成 static char str[512];);把函数体中的嵌套函数,也提取出来,放到函数体之外(前面也添加 static 指示符)。总之,尽一切可能,最大限度地节约堆栈的使用,减少死机发生。这个工作是很繁重的,不能留下任何一个死角,全部改造完成,工作量很庞大。当时我身体还不错,彻底完成了。

但愿 grub2 不会在这方面有问题。

点评

这个是grub2内存管理部分报的错误。 具体来说,是free了不该free的内存时就会报这个错。 比如 会报 unaligned pointer  详情 回复 发表于 2025-4-10 10:34
回复

使用道具 举报

发表于 2025-4-10 10:34:00 | 显示全部楼层
不点 发表于 2025-4-10 09:06
报 unaligned pointer 这种错误,个人感觉是严重错误。就是,程序含有 bug,居然能够让指针不对齐!32位 ...

这个是grub2内存管理部分报的错误。
具体来说,是free了不该free的内存时就会报这个错。
比如
  1. char* a = grub_malloc(2*sizeof(char));
  2. grub_free(&a[1]);
复制代码

会报 unaligned pointer


点评

明白了,是那些调用 grub_free 的代码,产生了错误。比如,把一个非法指针传给了 grub_free 函数。 那就要检查 grub_free 的调用。看看是不是咱们 grub4dos 的开发者在调用 grub_free 时犯了某个错误,被 grub2  详情 回复 发表于 2025-4-10 21:14
回复

使用道具 举报

发表于 2025-4-10 11:04:47 | 显示全部楼层
本帖最后由 minmax 于 2025-4-10 11:05 编辑
2011yaya2007777 发表于 2025-4-9 17:52
ntboot前面应当有路径。它肯定不在根目录。应该支持vhdx吧,没有测试过。实际上是调用微软的efi启动的。

有設定command --set-path=()/grub/WIM 可以正常起動,所以想知道 VHD 有額外啟動參數需要調用?
回复

使用道具 举报

发表于 2025-4-10 21:14:25 | 显示全部楼层
本帖最后由 不点 于 2025-4-11 07:51 编辑
wintoflash 发表于 2025-4-10 10:34
这个是grub2内存管理部分报的错误。
具体来说,是free了不该free的内存时就会报这个错。
比如

明白了,是那些调用 grub_free 的代码,产生了错误。比如,把一个非法指针传给了 grub_free 函数。

那就要检查 grub_free 的调用。看看是不是咱们 grub4dos 的开发者在调用 grub_free 时犯了某个错误,被 grub2 的调试(监控)代码检查出来了。

补充一下。个人感觉,无论如何,这是个严重错误。不管根源在哪里,都很严重。

比如说,咱们的开发者从未调用过 grub_free 函数,那么,这个错误就更深刻,差不多可说,一定是 grub2 本身产生的。那就要看堆栈是否有毛病,必要时,加大堆栈空间,或者挪动到一个更合理的位置。最后,就像我前面说的,查找递归函数,全部改写为非递归的;逐一检查函数体,把嵌套函数和大个头的变量移出函数体之外,减少堆栈的使用,最大限度保证安全。如果一个函数经常被调用,调用深度很深,那如果它占用很多堆栈,这就容易触发堆栈溢出。堆栈溢出时,指针就都是非法的了。

回复

使用道具 举报

 楼主| 发表于 2025-4-12 17:09:45 | 显示全部楼层
有設定command --set-path=()/grub/WIM 可以正常起動,所以想知道 VHD 有額外啟動參數需要調用?

你的参数正确。
find --set-root /VHDOS/LTSC2024.VHDX | set vhdd=
/path/ntboot %vhdd%/LTSC2024.VHDX winload=/Windows/System32/boot/winload.efi minint=1
boot

ntboot支持vhdx有点问题。
你测试一下这个。

ntboot.rar

964.37 KB, 下载次数: 15, 下载积分: 无忧币 -2

点评

可以開機進 WIN 但是 M$ WINDOWS 方塊 LOGO 變小 無法正確進到桌面 不要顯示這個比較快也減少問題  详情 回复 发表于 2025-4-13 16:25
回复

使用道具 举报

发表于 2025-4-13 16:25:34 | 显示全部楼层
本帖最后由 minmax 于 2025-4-15 09:25 编辑
2011yaya2007777 发表于 2025-4-12 17:09
你的参数正确。
find --set-root /VHDOS/LTSC2024.VHDX | set vhdd=
/path/ntboot %vhdd%/LTSC2024.VHD ...

ntboot.rar
可以開機進 WIN
NTBOOT 這個外部命令 無法用 makemod.exe 打包
Err read file ntboot,a000



回复

使用道具 举报

发表于 2025-4-14 08:10:53 | 显示全部楼层

向开发者致敬!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-7 22:04

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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