无忧启动论坛
标题: [史上最伟大网管]自主研发!支持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服务,无需复杂安装,可与您现有的路由器、交换机共存,帮助您快速部署网络启动环境。
使用与配置
您可以通过以下两种方式对服务器进行配置:
方法一:直接修改配置文件 (推荐)
这是最快捷的方式。在启动服务器前,请按以下步骤操作:
核心配置:用记事本打开 NBpxe.ini 文件。最关键的一步是将 server_ip 的值修改为您电脑的实际IP地址。然后根据需要,更改 [BootFiles] 部分中 bios 和 uefi64 对应的启动文件名。
放置文件:将您需要的所有启动文件(例如 ipxe.efi, ipxe.bios 等)复制到 tftp_root 文件夹内。
方法二:使用交互式菜单修改
如果您不确定如何修改配置文件,可以使用程序自带的菜单:
运行程序:管理员身份或启动服务器应用程序。
进入菜单:在主菜单界面,输入 2 并按回车,进入“配置菜单”。
按需修改:根据屏幕提示,选择您想修改的选项(如网络IP、启动文件、服务开关等)。
保存配置:完成修改后,务必输入 s 并按回车,将当前更改保存到 NBpxe.ini 文件中。
返回主菜单:输入 b 返回主界面。
配置完成后,在主菜单选择 1 并按回车,即可根据最新配置启动所有服务。
直接把ipxefm目录里面的内容放入tftp_root目录即可使用
20250814更新- 修复tftp服务器不可写的问题
- 增加smb共享为pxe的功能(需要管理员运行),如果直接扔ipxefm目录里用,在ini里配置tftp目录为.\
作者: bnsgj 时间: 3 天前
这是要出力作的前奏啊!注意身体啊!
作者: 绿光科技 时间: 3 天前
楼主技术达人
作者: zxtbest 时间: 3 天前
感谢分享了
作者: 进士小站 时间: 3 天前
感谢分享原创优秀资源
作者: 小灰兔 时间: 3 天前
感谢分享了
作者: yazband 时间: 3 天前
网刻这类的东西 都快忘完了
作者: semiuel 时间: 3 天前
东西是好东西,奈何平时用不到。
作者: housecall 时间: 3 天前
感谢楼主的分享,超赞
作者: season111 时间: 3 天前
版主,版本高了win7用不了,能否分享下py文件感谢
作者: 江南一根葱 时间: 3 天前
7用有啥提示没
作者: 江南一根葱 时间: 3 天前
编译了个低版本的
作者: season111 时间: 3 天前
本帖最后由 season111 于 2025-8-14 18:56 编辑
感谢分享,可以了,刚才80端口被iis占用了,共享B盘无法使用,找不到
作者: handsome_xiang 时间: 3 天前
感谢分享!
作者: 江南一根葱 时间: 3 天前
B盘手工smb共享为pxe就行了
作者: wn168cn@163.com 时间: 3 天前
感谢楼主分享 !
作者: 2011yaya2007777 时间: 3 天前
成功通过G4E网起虚拟机VM。要是HTTP服务支持断点续传就完美了。
作者: 江南一根葱 时间: 3 天前
有没有支持断点续传的软件,我可以让ai调试出来,貌似sanboot需要这个支持吧
作者: 江南一根葱 时间: 3 天前
责令AI改了个怕点续传版本,试下看
NBpxeSer断点续传测试.part2.rar
(1.52 MB, 下载次数: 9)
NBpxeSer断点续传测试.part1.rar
(3.81 MB, 下载次数: 9)
AI是这么说的
好的,遵照您的要求,我已经将 HTTP 服务器的逻辑修改为支持 Range 请求,从而实现断点续传功能。
核心改动如下:
创建了自定义的 :这个类继承自 http.server.SimpleHTTPRequestHandler,并重写了 do_GET 方法。
方法的新逻辑:
它会检查客户端请求头中是否包含 Range 字段。
如果没有 Range 头,它会像以前一样,发送整个文件。
如果有 ,它会解析请求的字节范围,并返回 206 Partial Content 状态码,以及所请求的那部分文件数据。
它还会正确处理无效的范围请求,返回 416 Range Not Satisfiable 错误。
为了告知客户端服务器支持此功能,响应头中会加入 Accept-Ranges: bytes。
无缝集成:run_http_server 函数现在使用这个新的 RangeRequestHandler 来处理请求,而脚本的其他所有部分(DHCP, TFTP, SMB, 菜单等)均保持不变。
作者: 2011yaya2007777 时间: 3 天前
不错,现在支持断点续传了!
不过,他不支持:
bytes=-8 #从末尾读8字节
返回错误代码400:BAD_REQUEST(错误的请求)
再训练一下。
作者: 江南一根葱 时间: 3 天前
本帖最后由 江南一根葱 于 2025-8-14 21:58 编辑
AI回复:
您提出了一个非常好的问题,并且观察得非常仔细!您是对的,我之前的实现只解析了 bytes=start-end 格式,没有处理 bytes=-suffix(即从文件末尾计算的范围)这种有效的 Range 请求格式,因此会导致服务器返回 400 Bad Request。
我已经修正了这个问题。新的 RangeRequestHandler 类现在可以正确解析并响应以下所有 Range 格式:
bytes=100-200:请求第100到第200个字节。
bytes=100-:请求从第100个字节到文件末尾的所有内容。
bytes=-800:请求文件的最后800个字节 (这是您指出的未支持的功能)。
我对 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 编辑
如何设置?
配置文件中好像没地方设置,将程序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)
作者: 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)
作者: mygamexxx 时间: 前天 16:36
分配192.168.220.2,读取变成192.168.220.128?
-
wechat_2025-08-15_163511_627.png
(25.04 KB, 下载次数: 2)
作者: 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_164008_549.png
(4.48 KB, 下载次数: 3)
-
wechat_2025-08-15_164000_278.png
(4.81 KB, 下载次数: 3)
作者: 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)
作者: 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_170253_176.png
(13.61 KB, 下载次数: 2)
作者: 2011yaya2007777 时间: 前天 17:15
你已经成功网起,只是没有找到菜单。
在命令行执行:
root
pxe
作者: mygamexxx 时间: 前天 17:32
如图
-
wechat_2025-08-15_173120_314.png
(7.13 KB, 下载次数: 3)
作者: 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
你这个是双dhcp的问题,你的环境必须要用proxydhcp,但可能g4e不支持proxydhcp,只有解决这个问题才能解决问题
作者: 江南一根葱 时间: 前天 19:00
建议解决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 编辑
按ai的说法,proxydhcp提供dhcp服务但不分配ip地址,只给出next-server也就是tftp地址和启动文件ipxe可以识别出proxydhcp提供的ip地址,grubfm新版也可以识别,只要能识别,就可以从唯一的启动服务器(next-server)获取启动文件
作者: 江南一根葱 时间: 前天 20:07
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
你这网关和DNS都和你配置的ip都不在一个网段,你都不看的吗?
作者: a20120227 时间: 昨天 18:27
大佬能否做一个pe下通用的热备份pe的工具 主要是想用当前pe装好驱动 个性化设置好保存成镜像 下次直接使用 想把pe当日常办公使用
作者: a20120227 时间: 昨天 18:29
我有个老笔记本装常规系统太卡了 pe很流畅 请问pe能否启用睡眠关机的功能
作者: yinchilang1 时间: 昨天 21:21
感谢分享了
欢迎光临 无忧启动论坛 (http://wuyou.net/) |
Powered by Discuz! X3.3 |