![]() |
文件名小写,文件夹大写,这样显示的时候便于区分。 |
本帖最后由 mygamexxx 于 2025-9-23 12:20 编辑 请教一下,G4E的PXE网启支持DIR.TXT显示(pd)/下的文件吗?试了,是支持的。 |
图像分辨率与屏幕分辨率不匹配。 |
不知为何G4E显示不全屏 |
IMG_20250922_194516_副本.jpg (951.52 KB, 下载次数: 9)
厉害,但好像没看见谁用G4D UEFI 做启动盘 分享出来的 |
本帖最后由 mygamexxx 于 2025-9-19 19:36 编辑 江南一根葱 发表于 2025-9-18 17:57 葱大已经搞好ipxe-->grubfm。再搞ipxe-->G4E了吧? ipxe-->g4d,葱大用的是grub.exe加尾续参数的方式,不知道是否支持HTTP?用ipxe-->g4d的grldr的ipxe命令可以实现HTTP。 |
江南一根葱 发表于 2025-9-18 17:57 能把 cmdline 定置到 g4e.efi内 : http://bbs.c3.wuyou.net/forum.ph ... &fromuid=413782 需用 fbinst 转一下cmdline |
加载了G4E,不移交控制权?如果移交,由G4E加载菜单并执行。如果不移交,那只能自己加载菜单。估计环境不同,也不能执行。 |
666 |
本帖最后由 mygamexxx 于 2025-9-19 07:50 编辑 2011yaya2007777 发表于 2025-9-18 19:33 估计是IPXE脚本,转G4E吧?ipxe.efi使用 chain http://${next-server}/bootg4e.efi 能够加载G4E,G4E的menu.lst和所需的字体、背景图、外部命令如何加载? |
感谢分享,感谢分享,感谢分享 |
本帖最后由 江南一根葱 于 2025-9-18 18:02 编辑 2011whp 发表于 2025-9-17 20:53 我如果编译的时候嵌入脚本,里面的脚本能读到参数不 |
666 |
感谢分享 |
外部命令 cmdline 可以 读到 g4e.efi 后面的参数: http://bbs.wuyou.net/forum.php?m ... p;page=7#pid5680283 ---------------------------- 外部命令 getenv 能读到 nvme变量: http://bbs.wuyou.net/forum.php?m ... 059&pid=5628384 |
g4e有没有设置传入参数的功能 有,但是没有用过。 |
本帖最后由 江南一根葱 于 2025-9-17 17:46 编辑 g4e有没有设置传入参数的功能,比如chain g4e.efi tftpserver=192.168.11.1, 和设置tftp http服务器比如set next-server=192.168.11.1 内部弄个脚本访问 |
估计http服务是挂载别人的。他的核心不是这个。再说使用者觉得不好用,换其他的就好,也不会反馈给他。 |
好的 2.10版也不行的 发过邮件联系过作者,他不认为是个问题 |
本帖最后由 mygamexxx 于 2025-9-9 07:46 编辑 2011yaya2007777 发表于 2025-9-9 07:23 dhcpsrv2.5.2是免费的最高版本,收费版都2.10了,可能都已经改进了。个别的软件缺陷无需适应吧? |
本帖最后由 2011yaya2007777 于 2025-9-9 07:31 编辑 AI回答的 不知有没有帮助 不会编译没有测试。 有些建议很好,待仔细研究。 关于断点续传的使用,你有些误解。正常情况下并不使用它,只有发生传输状况时才使用。这时一般是整体重新传输(只重新尝试3次,大概率彻底失败)。如果可以断点续传,则从出错的地方续传即可。 我这里测试,永远是只读一次。 对于dhcpsrv2.5.2自带(dhcpsrv) ,当执行HEAD操作获得文件尺寸时,它返回0。旧版本直接退出,新版本则执行READ操作替代它,所以多读了一次。当然可以再改进,但是对于出现如此严重错误的程序,不值得下功夫。估计人家后续版本也根正了。 优化错误。“http_buffer_size = 0x10000; // 64KB缓冲区,提高传输性能” 没有意义。 grub_size_t read_size = len; if (read_size > http_buffer_size) read_size = http_buffer_size; 这里的len通常情况远大于0x10000。 |
本帖最后由 xiaoy 于 2025-9-8 21:38 编辑 根据您提供的 grub4dos for UEFI 中 PXE 启动相关的源代码, fsys_pxe.c 中关于 HTTP 协议的处理部分,我们可以分析出为什么在某些 HTTP 服务器上会出现需要下载两次文件(如 winpe.wim)才能启动的问题,以及为什么 HTTP 传输速度可能不够理想。 🔍 问题分析 1. 重复下载问题(下载两次) 在 http_read 函数中,存在一个 repeat 标签和 goto repeat 的逻辑,用于处理断点续传(Range 请求)。当发生以下情况时,会重新发起带 Range 头的请求: c if (status == GRUB_EFI_CONNECTION_FIN) { // ... 重新构造 Range 头,goto repeat } 这意味着: 如果服务器不支持 Range 请求或响应异常(如连接提前关闭),代码会尝试重新下载; 在某些服务器(如 TinyPXEServer 或 Indy-based 服务器)中,Range 处理不规范,导致客户端必须发起多次请求才能完成下载; 尤其是在 headeronly=1(只读头部)和后续实际读取时,可能触发两次请求。 2. 传输速度慢 可能的原因包括: 小缓冲区读取:每次读取的缓冲区大小可能较小(如 1460 字节),导致频繁的网络往返; 服务器响应慢:某些服务器(如 TinyPXEServer)的 HTTP 实现效率较低; UEFI HTTP 协议栈限制:UEFI 下的 HTTP 驱动可能没有优化大文件传输; 网络延迟:PXE 启动通常在局域网,但若服务器响应慢或网络拥堵也会影响速度。 🛠 解决方案建议 1. 避免重复下载 可以在 http_open 中增加对服务器 Range 支持能力的检测,若服务器明确不支持 Range,则禁用断点续传逻辑: c // 在 efihttp_request 中检测服务器是否支持 Range if (response_data.status_code != GRUB_EFI_HTTP_STATUS_206_PARTIAL_CONTENT) { partial_content = 0; // 禁用断点续传 } 2. 优化传输性能 增大读取缓冲区:在 http_read 中适当增大 len(如 64KB~1MB),减少读写次数; 使用 TFTP 作为备选:若 HTTP 性能差,可回退到 TFTP: c if (cur_pxe_type == 1 && performance_test_failed) { cur_pxe_type = 0; // 切换到 TFTP goto only_tftp; } 启用压缩传输:若服务器支持 Accept-Encoding: gzip,可尝试启用(需服务器支持); 3. 服务器兼容性处理 对不支持 Range 的服务器(如某些嵌入式 HTTP 服务),禁用 partial_content; 对已知有问题的服务器(如 TinyPXEServer),使用 TFTP 代替 HTTP; 附件主要优化内容
AI回答的 不知有没有帮助 不会编译没有测试。 |
11.95 KB, 下载次数: 2, 下载积分: 无忧币 -2
xiaoy 发表于 2025-9-5 18:13 网启对http要求很严,很多http服务器不支持ipxe的sanboot,估计这个问题和sanboot要求一样 |
希望葱大继续修正让G4E通过一些HTTP服务(https://www.dhcpserver.de/cms/)启动PE 不要下载两次的问题 这是你使用的HTTP服务有缺陷,我在常用HTTP服务比较一文中已经详细说明。你换一个再看看。如果有问题再反馈。反馈时说明使用了什么HTTP服务。 |
本帖最后由 xiaoy 于 2025-9-5 18:17 编辑 江南一根葱 发表于 2025-9-5 12:30 希望葱大继续修正让G4E通过一些HTTP服务(https://www.dhcpserver.de/cms/)启动PE 不要下载两次的问题 并且感觉HTTP速度并不快 |
本帖最后由 江南一根葱 于 2025-9-5 12:38 编辑 @2011yaya2007777 ![]() 精修化改了下,新的源码我已经让ai改好了,测试没问题 |
本帖最后由 mygamexxx 于 2025-9-4 23:16 编辑 江南一根葱 发表于 2025-9-4 22:57 验证了葱大的结果,ntboot方式在NBPXE与TINYPXE,在DHCP和PROXY两种模式下均HTTP成功启动到PE桌面。 PXE至少连续测试两次以上,我目前测试第一遍都是有问题的,特别是改变网启环境后。 |
Powered by Discuz! X3.3
© 2001-2017 Comsenz Inc.