无忧启动论坛

标题: [史上最伟大网管]自主研发!支持HTTP,适应BIOS/UEFI环境! NBpxeServer网启全面公测 [打印本页]

作者: 江南一根葱    时间: 3 天前
标题: [史上最伟大网管]自主研发!支持HTTP,适应BIOS/UEFI环境! NBpxeServer网启全面公测
本帖最后由 江南一根葱 于 2025-8-14 20:54 编辑

声明:我完全不懂python,我连python写"hello world"都不会
全由AI使用python语言编写,我是躺在AI的怀抱里进行开发!

NBpxeServer 功能简介与使用说明
功能简介
本工具是一款轻量级的PXE网络启动服务器,专为同时兼容传统BIOS和现代UEFI(特别是VMware环境)而设计。软件为绿色单文件,内置代理DHCP (Proxy DHCP) 和TFTP服务,无需复杂安装,可与您现有的路由器、交换机共存,帮助您快速部署网络启动环境。
使用与配置
您可以通过以下两种方式对服务器进行配置:
方法一:直接修改配置文件 (推荐)
这是最快捷的方式。在启动服务器前,请按以下步骤操作:
方法二:使用交互式菜单修改
如果您不确定如何修改配置文件,可以使用程序自带的菜单:
配置完成后,在主菜单选择 1 并按回车,即可根据最新配置启动所有服务。
直接把ipxefm目录里面的内容放入tftp_root目录即可使用


下载(支持win764位):

NBpxeSer.part1.rar (4 MB, 下载次数: 43)

NBpxeSer.part2.rar (1.33 MB, 下载次数: 39)

  



作者: bnsgj    时间: 3 天前
这是要出力作的前奏啊!注意身体啊!
作者: 绿光科技    时间: 3 天前
楼主技术达人
作者: zxtbest    时间: 3 天前
感谢分享了
作者: 进士小站    时间: 3 天前
感谢分享原创优秀资源
作者: 小灰兔    时间: 3 天前
感谢分享了
作者: yazband    时间: 3 天前
网刻这类的东西 都快忘完了
作者: semiuel    时间: 3 天前
东西是好东西,奈何平时用不到。
作者: housecall    时间: 3 天前
感谢楼主的分享,超赞
作者: season111    时间: 3 天前
版主,版本高了win7用不了,能否分享下py文件感谢
作者: 江南一根葱    时间: 3 天前
season111 发表于 2025-8-14 17:48
版主,版本高了win7用不了,能否分享下py文件感谢

7用有啥提示没
作者: 江南一根葱    时间: 3 天前
season111 发表于 2025-8-14 17:48
版主,版本高了win7用不了,能否分享下py文件感谢

编译了个低版本的
作者: season111    时间: 3 天前
本帖最后由 season111 于 2025-8-14 18:56 编辑
江南一根葱 发表于 2025-8-14 17:54
7用有啥提示没

感谢分享,可以了,刚才80端口被iis占用了,共享B盘无法使用,找不到
作者: handsome_xiang    时间: 3 天前
感谢分享!
作者: 江南一根葱    时间: 3 天前
season111 发表于 2025-8-14 18:31
感谢分享,可以了,刚才80端口被iis占用了,共享B盘无法使用,找不到

B盘手工smb共享为pxe就行了
作者: wn168cn@163.com    时间: 3 天前
感谢楼主分享 !
作者: 2011yaya2007777    时间: 3 天前
成功通过G4E网起虚拟机VM。要是HTTP服务支持断点续传就完美了。
作者: 江南一根葱    时间: 3 天前
2011yaya2007777 发表于 2025-8-14 20:17
成功通过G4E网起虚拟机VM。要是HTTP服务支持断点续传就完美了。

有没有支持断点续传的软件,我可以让ai调试出来,貌似sanboot需要这个支持吧
作者: 江南一根葱    时间: 3 天前
2011yaya2007777 发表于 2025-8-14 20:17
成功通过G4E网起虚拟机VM。要是HTTP服务支持断点续传就完美了。

责令AI改了个怕点续传版本,试下看 NBpxeSer断点续传测试.part2.rar (1.52 MB, 下载次数: 9) NBpxeSer断点续传测试.part1.rar (3.81 MB, 下载次数: 9)


AI是这么说的

好的,遵照您的要求,我已经将 HTTP 服务器的逻辑修改为支持 Range 请求,从而实现断点续传功能。

核心改动如下:



作者: 2011yaya2007777    时间: 3 天前
不错,现在支持断点续传了!

不过,他不支持:
bytes=-8         #从末尾读8字节
返回错误代码400:BAD_REQUEST(错误的请求)

再训练一下。
作者: 江南一根葱    时间: 3 天前
本帖最后由 江南一根葱 于 2025-8-14 21:58 编辑
2011yaya2007777 发表于 2025-8-14 21:41
不错,现在支持断点续传了!

不过,他不支持:

NBpxeSer断点续传2.part2.rar (1.33 MB, 下载次数: 12) NBpxeSer断点续传2.part1.rar (4 MB, 下载次数: 14)


AI回复:

您提出了一个非常好的问题,并且观察得非常仔细!您是对的,我之前的实现只解析了 bytes=start-end 格式,没有处理 bytes=-suffix(即从文件末尾计算的范围)这种有效的 Range 请求格式,因此会导致服务器返回 400 Bad Request。

我已经修正了这个问题。新的 RangeRequestHandler 类现在可以正确解析并响应以下所有 Range 格式:

我对 do_GET 方法中的范围解析逻辑进行了重写,使其更加健壮和符合 RFC 7233 标准。其他所有功能(DHCP, TFTP, SMB, 菜单等)均保持原样。







作者: luodeman    时间: 3 天前
先生大才,感谢分享,辛苦了
作者: 2011yaya2007777    时间: 3 天前
你这效率太高了!我明天再测试吧。
作者: zp1688    时间: 3 天前
不错!
作者: yuguotqing    时间: 3 天前
赞 一只支持你!!
作者: AcidBurn    时间: 前天 04:55
谢谢楼主的分享!
作者: 2011yaya2007777    时间: 前天 07:08
HTTP已经完美支持断点续传!

反馈一个问题:
服务状态:TFTP 红 已停止
日志:TFTP:致命错误,无法绑定端口:[WinError 10048]  通常每个套接字地址(协议/网络地址/端口)只允许使用一次。
但是实际上无论tftp/http都工作正常。这个tftp服务是哪里提供的?

如果点一下服务状态:TFTP 的红方框,变绿了,但是“已停止”仍然是红的。此时再执行HTTP传输,则失败。
作者: 江南一根葱    时间: 前天 08:58
2011yaya2007777 发表于 2025-8-15 07:08
HTTP已经完美支持断点续传!

反馈一个问题:

应该是启动了多个,我启动两个才遇到有这情况,或者默认有可能监听了0.0.0.0,那就冲突几率大,可能要改成实际ip
作者: wqsohu    时间: 前天 10:00
谢谢分享
作者: mygamexxx    时间: 前天 11:31
能否将TFTP与HTTP的根目录设置不在程序所在目录下,并且能使用磁盘根目录?
作者: yahu5    时间: 前天 11:38
AI让你搞正了
作者: 2011yaya2007777    时间: 前天 11:57
可以设置任意目录。c:\asd\zxc
作者: redapple    时间: 前天 12:23
用哪个AI这么强大?给个地址
作者: yidaifengniu    时间: 前天 12:35
感谢分享
作者: fegr    时间: 前天 14:02
谢谢楼主分享
作者: mygamexxx    时间: 前天 14:26
本帖最后由 mygamexxx 于 2025-8-15 14:34 编辑
2011yaya2007777 发表于 2025-8-15 11:57
可以设置任意目录。c:\asd\zxc

如何设置?
配置文件中好像没地方设置,将程序NBpxeServer.exe放在G:根目录
[FileServer]
shared_root_dir = G:
tftp_enabled = true
http_enabled = true
http_port = 80

wechat_2025-08-15_143225_372.png (13.37 KB, 下载次数: 4)

wechat_2025-08-15_143225_372.png

作者: 2011yaya2007777    时间: 前天 15:32
shared_root_dir = G:\
作者: mygamexxx    时间: 前天 16:19
本帖最后由 mygamexxx 于 2025-8-15 16:21 编辑

没有区别!并且NBpxeServer.exe必须在根目录,否则设置就会与显示不一致。
[FileServer]
shared_root_dir = G:\
tftp_enabled = true
http_enabled = true
http_port = 80

wechat_2025-08-15_161858_779.png (17.78 KB, 下载次数: 3)

wechat_2025-08-15_161858_779.png

作者: mygamexxx    时间: 前天 16:36
分配192.168.220.2,读取变成192.168.220.128?

wechat_2025-08-15_163511_627.png (25.04 KB, 下载次数: 2)

wechat_2025-08-15_163511_627.png

作者: 2011yaya2007777    时间: 前天 16:38
本帖最后由 2011yaya2007777 于 2025-8-15 16:47 编辑
没有区别!并且NBpxeServer.exe必须在根目录,否则设置就会与显示不一致

这是我的配置:
[General]
listen_ip = 192.168.182.1
server_ip = 192.168.182.1

[DHCP]
enabled = false
mode = proxy
pool_start = 192.168.56.2
pool_end = 192.168.56.254
subnet = 255.255.255.0
router = 192.168.1.1
dns = 192.168.1.1
lease_time = 86400

[FileServer]
shared_root_dir = C:\usr\TinyPXEServer\netboot\
tftp_enabled = true
http_enabled = true
http_port = 80

[BootFiles]
bios = grldr
uefi32 = ipxe32.efi
uefi64 = bootx64.efi
ipxe = ipxeboot.txt

[SMB]
enabled = false
share_name = pxe

我的NBpxeServer文件在:C:\usr\dist\
你是不是需要配置一下。选4,从文件重载配置。

作者: mygamexxx    时间: 前天 16:41
试了下BOOTG4E.EFI

wechat_2025-08-15_164027_464.png (13.9 KB, 下载次数: 3)

wechat_2025-08-15_164027_464.png

wechat_2025-08-15_164008_549.png (4.48 KB, 下载次数: 3)

wechat_2025-08-15_164008_549.png

wechat_2025-08-15_164000_278.png (4.81 KB, 下载次数: 3)

wechat_2025-08-15_164000_278.png

作者: mygamexxx    时间: 前天 16:48
配置文件修改如下,启用代理,客户机返回到BOOT MANAGER
[General]
listen_ip = 192.168.220.1
server_ip = 192.168.220.1

[DHCP]
enabled = false
mode = proxy
pool_start = 192.168.220.2
pool_end = 192.168.220.254
subnet = 255.255.255.0
router = 192.168.1.1
dns = 192.168.1.1
lease_time = 86400

[FileServer]
shared_root_dir = G:\
tftp_enabled = true
http_enabled = true
http_port = 80

[BootFiles]
bios = ipxe.bios
uefi32 = ipxe32.efi
uefi64 = BOOTG4E.EFI
ipxe = ipxeboot.txt

[SMB]
enabled = false
share_name = pxe


wechat_2025-08-15_164723_515.png (17.46 KB, 下载次数: 3)

wechat_2025-08-15_164723_515.png

作者: mygamexxx    时间: 前天 17:04
本帖最后由 mygamexxx 于 2025-8-15 17:07 编辑

重建配置,选择DHCP,
[General]
listen_ip = 192.168.220.1
server_ip = 192.168.220.1

[DHCP]
enabled = true
mode = dhcp
pool_start = 192.168.220.2
pool_end = 192.168.220.254
subnet = 255.255.255.0
router = 192.168.1.1
dns = 192.168.1.1
lease_time = 86400

[FileServer]
shared_root_dir = g:\
tftp_enabled = true
http_enabled = true
http_port = 80

[BootFiles]
bios = ipxe.bios
uefi32 = ipxe32.efi
uefi64 = bootg4e.efi
ipxe = ipxeboot.txt

[SMB]
enabled = false
share_name = pxe


日志如下
[2025-08-15 17:02:44] --- 正在根据当前配置启动所有服务 ---
[2025-08-15 17:02:44] SMB: 删除旧共享'pxe'时出错,可能不存在。
[2025-08-15 17:02:44] DHCP: 服务已在 192.168.220.1:67 启动 (dhcp 模式)
[2025-08-15 17:02:44] TFTP: 服务已在 192.168.220.1:69 启动, 根目录: 'G:\/'
[2025-08-15 17:02:44] HTTP: 服务已在 http://192.168.220.1:80/ 启动 (支持断点续传)
[2025-08-15 17:03:43] DHCP: 为 00:0c:29:52:ce:c8 (UEFI64) 提供 Offer -> 'bootg4e.efi'
[2025-08-15 17:03:47] DHCP: 为 00:0c:29:52:ce:c8 (UEFI64) 提供 Offer -> 'bootg4e.efi'
[2025-08-15 17:03:55] DHCP: 为 00:0c:29:52:ce:c8 (UEFI64) 分配 IP [192.168.220.2] -> 'bootg4e.efi'
[2025-08-15 17:03:55] TFTP: [GET] ('192.168.220.132', 1960) 开始读取 'bootg4e.efi'
[2025-08-15 17:03:55] TFTP: [GET] 选项协商失败 -> ('192.168.220.132', 1960)
[2025-08-15 17:03:55] TFTP: [GET] ('192.168.220.132', 1961) 开始读取 'bootg4e.efi'
[2025-08-15 17:03:57] TFTP: [GET] 'BOOTG4E.EFI' -> ('192.168.220.132', 1961) 传输完成。
[2025-08-15 17:04:34] --- 正在停止所有服务 ---
[2025-08-15 17:04:35] HTTP: 线程已停止。
[2025-08-15 17:04:35] DHCP: 线程已停止。
[2025-08-15 17:04:35] TFTP: 线程已停止.
[2025-08-15 17:04:35] SMB: 删除旧共享'pxe'时出错,可能不存在。





wechat_2025-08-15_170326_950.png (4.46 KB, 下载次数: 3)

wechat_2025-08-15_170326_950.png

wechat_2025-08-15_170253_176.png (13.61 KB, 下载次数: 2)

wechat_2025-08-15_170253_176.png

作者: 2011yaya2007777    时间: 前天 17:15
你已经成功网起,只是没有找到菜单。
在命令行执行:
root
pxe
作者: mygamexxx    时间: 前天 17:32
2011yaya2007777 发表于 2025-8-15 17:15
你已经成功网起,只是没有找到菜单。
在命令行执行:
root

如图

wechat_2025-08-15_173120_314.png (7.13 KB, 下载次数: 3)

wechat_2025-08-15_173120_314.png

作者: 2011yaya2007777    时间: 前天 17:46
在菜单里设置 set http
在 G:\ 建立 g:\efi\grub\   安放 menu.lst
在 G:\ 建立 g:\efi\grub\ext\   安放 ntboot
作者: mygamexxx    时间: 前天 18:22
本帖最后由 mygamexxx 于 2025-8-15 18:33 编辑

这几个原来就有,用其他服务器是成功的。应该是server ip,client ip 地址的问题。其他服务器一般是192.168.220.1,客户端为192.168.220.2或3。日志中地址里示前后不一致。dhcp与[GET]不一致。
作者: 江南一根葱    时间: 前天 18:58
mygamexxx 发表于 2025-8-15 18:22
这几个原来就有,用其他服务器是成功的。应该是server ip,client ip 地址的问题。其他服务器一般是192.168 ...

你这个是双dhcp的问题,你的环境必须要用proxydhcp,但可能g4e不支持proxydhcp,只有解决这个问题才能解决问题
作者: 江南一根葱    时间: 前天 19:00
2011yaya2007777 发表于 2025-8-15 17:46
在菜单里设置 set http
在 G:\ 建立 g:\efi\grub\   安放 menu.lst
在 G:\ 建立 g:\efi\grub\ext\   安放 ...

建议解决proxydhcp支持的问题
https://github.com/a1ive/grub2-filemanager
编译出来的efi文件是支持proxydhcp的
作者: 2011yaya2007777    时间: 前天 19:05
proxydhcp与dhcp有什么不同?系统里只留一个dhcp不好吗?g4e是静态绑定ip的。
作者: 2011yaya2007777    时间: 前天 19:24
我理解这是虚拟机或者实体机的UEFI固件提供的。
作者: 江南一根葱    时间: 前天 19:43
本帖最后由 江南一根葱 于 2025-8-15 19:44 编辑
2011yaya2007777 发表于 2025-8-15 19:05
proxydhcp与dhcp有什么不同?系统里只留一个dhcp不好吗?g4e是静态绑定ip的。

按ai的说法,proxydhcp提供dhcp服务但不分配ip地址,只给出next-server也就是tftp地址和启动文件ipxe可以识别出proxydhcp提供的ip地址,grubfm新版也可以识别,只要能识别,就可以从唯一的启动服务器(next-server)获取启动文件

作者: 江南一根葱    时间: 前天 20:07
2011yaya2007777 发表于 2025-8-15 19:05
proxydhcp与dhcp有什么不同?系统里只留一个dhcp不好吗?g4e是静态绑定ip的。

https://github.com/a1ive/grub/bl ... s/efi/efinet.c#L468

支持proxydhcp代码好像在这里,瞎猜的
作者: sxz7392    时间: 昨天 13:29
谢谢分享
作者: blank_f    时间: 昨天 17:17
谢谢分享
作者: lypopuser    时间: 昨天 17:25
东西是好东西
作者: season111    时间: 昨天 17:52
mygamexxx 发表于 2025-8-15 17:04
重建配置,选择DHCP,
[General]
listen_ip = 192.168.220.1

你这网关和DNS都和你配置的ip都不在一个网段,你都不看的吗?
作者: a20120227    时间: 昨天 18:27
大佬能否做一个pe下通用的热备份pe的工具 主要是想用当前pe装好驱动 个性化设置好保存成镜像 下次直接使用 想把pe当日常办公使用
作者: a20120227    时间: 昨天 18:29
a20120227 发表于 2025-8-16 18:27
大佬能否做一个pe下通用的热备份pe的工具 主要是想用当前pe装好驱动 个性化设置好保存成镜像 下次直接使用  ...

我有个老笔记本装常规系统太卡了 pe很流畅 请问pe能否启用睡眠关机的功能
作者: yinchilang1    时间: 昨天 21:21

感谢分享了




欢迎光临 无忧启动论坛 (http://wuyou.net/) Powered by Discuz! X3.3