无忧启动论坛

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

[我不是网管]分享个ipxe、grub2-http协议启动PE的免配置网启模板

    [复制链接]
271#
发表于 2024-1-22 13:16:08 | 只看该作者
liuzhaoyzz 发表于 2024-1-22 07:27
每个DHCP都有他的作用域,就像内网无论接多少个路由器,只要上级子网网线插WAN口,都不会影响上级子网上网 ...

用vm的网卡再架dhcp肯定不影响正常网络,但影响tinypxe的网卡判断,也是抢dhcp,tinypxe毛病一大堆
回复

使用道具 举报

272#
发表于 2024-9-21 19:36:49 | 只看该作者
GOOD
回复

使用道具 举报

273#
发表于 2024-9-21 20:49:12 | 只看该作者
好用
回复

使用道具 举报

274#
发表于 2024-9-21 22:19:43 | 只看该作者
[我不是网管]分享个ipxe、grub2-http协议启动PE的免配置网启模板。感谢分享!俺是来学习的。
回复

使用道具 举报

275#
发表于 2024-11-2 14:33:13 | 只看该作者
好东西,谢谢分享。
回复

使用道具 举报

276#
发表于 2024-11-2 19:35:43 | 只看该作者
多谢大佬分享
回复

使用道具 举报

277#
发表于 2024-11-5 12:28:07 | 只看该作者
感谢分享!!
回复

使用道具 举报

278#
发表于 2024-12-20 15:37:37 | 只看该作者
楼主的批处理识别不到无线网卡,提示后退出。
现在找到一种解决办法:
1.  将以下这些批处理注释
rem 获取有线本地连接ip地址(plusv方案)
rem for /f "delims=[]" %%a in ('%NicInfo% /delfake^|find /n "=EtherNet"') do  if not defined n1 set /a n1=%%a+4
rem rem echo n1=%n1%&pause
rem if not defined n1 (echo 未找到有线网卡,按任意键退出。&pause 1>nul 2>nul&exit/b)
rem set /a n2=%n1%+1
rem for /f "skip=%n1%  tokens=3-5 delims=^= " %%a in ('%NicInfo% /delfake') do  if not defined ip set ip=%%a&set mask=%%b&set Gateway=%%c
rem for /f "skip=%n2%  tokens=3-5 delims=^= " %%a in ('%NicInfo% /delfake') do  if not defined dns1 set dns1=%%a&set dns2=%%b&set dns3=%%c
rem set ip=%ip:IP:=%
rem set mask=%mask:Mask:=%
rem set Gateway=%Gateway:Gateway:=%
rem rem echo %dns1%-%dns2%-%dns3%
rem if defined dns1 set dns1=%dns1:IP:=%
rem if defined dns2 set dns2=%dns2:IP:=%
rem if defined dns3 set dns3=%dns3:IP:=%

2.  增加一行批处理
set ip=192.168.114.1  #这是我的TinyPXEServer服务器IP

3. 双击 07[UEFI]TinyPXEServer免配置网启http服务器启动grub2x64.efi.bat,启动TinyPXEServer。

4. 在TinyPXEServer界面的“DHCP服务器”选择192.168.114.1,然后选择“停止”,再选择“启动”。

点评

无线网卡不支持pxe启动呀?增加有啥用啊?  详情 回复 发表于 2024-12-20 16:20
回复

使用道具 举报

279#
发表于 2024-12-20 15:42:12 | 只看该作者

谢谢楼主更新..
回复

使用道具 举报

280#
发表于 2024-12-20 16:08:28 | 只看该作者
双击 07[UEFI]TinyPXEServer免配置网启http服务器启动grub2x64.efi.bat,启动TinyPXEServer。
这是UEFI+TinyPXEServer(http)+grub2x64.efi+pe.iso启动方式。死机。但是楼主说可以启动,不知是不是无线网卡的问题。
grub2没有使用UEFI网络函数。进一步跟踪,问题出现在 grub-core\net\efi\net.c 的 grub_efi_net_boot_from_opa 函数。
该函数要求网络接口类型为0xC7,我的笔记本是1。

将以下代码注释
grub_efi_mac_address_device_path_t *mac_dp  = (grub_efi_mac_address_device_path_t *)dp;
return (mac_dp->if_type == 0xC7) ? 1 : 0;
替换为
return 1;
成功启动!

这个网络接口类型是什么,1是什么设备?0xC7是什么设备?在网上搜索,没有结果。

另外,修改了 grub-core\net\efi\http.c:
在以下代码后面
  request_callback_done = 0;                    //请求回调完成=0
  status = efi_call_5 (b->create_event,                  //创建事件
                       GRUB_EFI_EVT_NOTIFY_SIGNAL,       //事件的类型       通知信号
                       GRUB_EFI_TPL_CALLBACK,            //事件的优先级     回调
                       grub_efi_http_request_callback,   //事件处理函数     请求回调
                       NULL,                             //传递给事件处理函数的参数
                       &request_token.event);
  if (status != GRUB_EFI_SUCCESS) //失败
  {
    grub_free (request_data.url);
    return grub_error (GRUB_ERR_IO, "Fail to create an event");
  }
插入
  efi_call_1 (grub_efi_system_table->boot_services->stall, 50000);  //延时50毫秒

在以下代码后面
  response_token.status = GRUB_EFI_SUCCESS;   //响应令牌.状态  成功
  response_token.message = &response_message; //响应令牌.消息
插入
  efi_call_1 (grub_efi_system_table->boot_services->stall, 50000);  //延时50毫秒

点评

Kimi.ai - 会推理解析,能深度思考的AI助手 https://kimi.moonshot.cn/ kimi.ai搜索并且推论的结果就是"IPv4 over LAN”类型的网络接口,这就是个有线网络接口。 根据提供的搜索结果,特别是来自UEFI Specifi  详情 回复 发表于 2024-12-21 10:13
回复

使用道具 举报

281#
发表于 2024-12-20 16:19:32 | 只看该作者
测试情况
1. 使用原始 grub2x64.efi
    07[UEFI]TinyPXEServer免配置网启http服务器启动grub2x64.efi.bat  启动pe.iso死机。
    08[UEFI]TinyPXEServer免配置网启http服务器ipxe.efi-grub2x64.efi.bat,启动boot.wim,51.80秒。
2. 使用修改 grub2x64.efi
    07[UEFI]TinyPXEServer免配置网启http服务器启动grub2x64.efi.bat  启动boot.wim,122.66秒。
    08[UEFI]TinyPXEServer免配置网启http服务器ipxe.efi-grub2x64.efi.bat 直接进入命令行。
3. 使用 g4e.efi+ntboot,启动boot.wim,36.32秒。

测试环境:VM虚拟机。
boot.wim 291,668kb.

点评

十分抱歉,之前让你测试了那么多次。我今天才发现,grub2的http网启,似乎对UEFI固件有要求,似乎在较低的固件版本下才行,我在vmware12.5.7版本上面测试成功的,在vmware15.5.5,vm16,vm17上面测试都失败了,主要  详情 回复 发表于 2025-3-5 18:13
回复

使用道具 举报

282#
 楼主| 发表于 2024-12-20 16:20:24 | 只看该作者
本帖最后由 liuzhaoyzz 于 2024-12-20 16:32 编辑
2011yaya2007777 发表于 2024-12-20 15:37
楼主的批处理识别不到无线网卡,提示后退出。
现在找到一种解决办法:
1.  将以下这些批处理注释

无线网卡不支持pxe启动呀?增加有啥用啊?

你上面的测试和代码,都不能在无线环境下测试啊。

好像ipxe支持无线启动,但我没有测试过,不知道怎么输入密码。

grub2的pxe启动,传输速度很慢,而且传输的文件名字编码,似乎有问题,好像grub2菜单文件是要utf-8的,但路径里的中文需要转换成gbk,反正挺折腾的,这是grub2的pxe启动的痛点,你懂这个,如果你改进下,那就很美了。前提是你有兴趣、有空。


回复

使用道具 举报

283#
发表于 2024-12-20 16:47:49 来自手机 | 只看该作者
我的笔记本电脑使用的是无线网卡。我不清楚笔记本使用TinyPXEServer做主机,VM虚拟机做客户机,他们之间通讯是不是使用无线网卡?如果不是,那使用的是什么?反正我修改了一下你的批处理代码,可以继续往下走了,搞懂了一点http在uefi环境的状况,对于移植grub2到g4e,起了很大作用。

点评

无线网卡很难pxe启动,你想想看,客户机要想从pxe服务器启动,需要pxe主机连接到路由器,而且客户机是不是必须要输入连接路由器的帐号密码?这个在OSloader阶段,怎么输入?操作系统就没有启动,怎么输入呢?ipxe据  详情 回复 发表于 2024-12-21 09:26
回复

使用道具 举报

284#
 楼主| 发表于 2024-12-21 09:26:22 | 只看该作者
本帖最后由 liuzhaoyzz 于 2024-12-21 13:56 编辑
2011yaya2007777 发表于 2024-12-20 16:47
我的笔记本电脑使用的是无线网卡。我不清楚笔记本使用TinyPXEServer做主机,VM虚拟机做客户机,他们之间通 ...

无线网卡很难pxe启动,你想想看,客户机要想从pxe服务器启动,需要pxe主机连接到路由器,而且客户机是不是必须要输入连接路由器的WIFI帐号密码?这个在OSloader阶段,怎么输入?操作系统就没有启动,怎么输入呢?ipxe据说有,我没看到详细的说明,也没有尝试过。无线传输就算能启动,也是很慢的,比不上有线网络。客户机通过有线网卡连接到路由器,是不需要什么帐号密码认证的,获取的ip地址也是通过路由器DHCP服务器分配的,这是有区别的。

你的操作,在本地主机+虚拟机可以测试,问题是实体机上面部署的时候,一台pxe主机+若干台客户机,客户机都没有操作系统启动,OSloader阶段,怎么输入WIFI帐号密码连接到无线路由器?

使用TinyPXEServer做主机,VM虚拟机做客户机,都是需要利用虚拟机网络设置模式设置为自定义(U):特定虚拟网络VMnet0(自动桥接),这都是在主机有线网卡插了网线,分配了ip地址的情况下才能模拟啊,这时候主机和客户机都在同一个网段,vmware内部有个虚拟路由器,可以通过路由器DHCP给vm虚拟网卡分配ip地址。


回复

使用道具 举报

285#
 楼主| 发表于 2024-12-21 10:13:06 | 只看该作者
本帖最后由 liuzhaoyzz 于 2024-12-21 10:15 编辑
2011yaya2007777 发表于 2024-12-20 16:08
双击 07TinyPXEServer免配置网启http服务器启动grub2x64.efi.bat,启动TinyPXEServer。
这是UEFI+TinyPXES ...

Kimi.ai - 会推理解析,能深度思考的AI助手
https://kimi.moonshot.cn/

kimi.ai搜索并且推论的结果就是"IPv4 over LAN”类型的网络接口,这就是个IPv4有线网络接口。

根据提供的搜索结果,特别是来自UEFI Specification 2.10 documentation的“Universal Network Driver Interfaces”部分,我们可以找到网络接口类型0xC7的具体含义。在UEFI规范中,定义了不同的网络接口类型,其中0xC7代表的是“IPv4 over LAN”类型的网络接口。

根据UEFI规范,网络接口类型(IFType)是一个用于标识不同网络接口的值。然而,0xC7这个特定的值并没有在提供的搜索结果中被明确解释。通常,这些值会在UEFI规范的某个部分详细列出,但在这次搜索结果中并未包含这些详细信息。

为了找到0xC7所代表的具体网络接口类型,通常需要查阅UEFI规范的“Device Path”或“Network Device Path”相关章节,这些章节会详细列出IFType的值及其含义。如果需要准确的信息,建议直接查阅最新的UEFI规范文档,以获取官方和准确的数据。

28. Network Protocols — TCP, IP, IPsec, FTP, TLS and Configurations — UEFI Specification 2.10 documentation
https://uefi.org/specs/UEFI/2.10 ... html?highlight=0xc7




回复

使用道具 举报

286#
发表于 2024-12-21 10:50:06 | 只看该作者
使用TinyPXEServer做主机,VM虚拟机做客户机,都是需要利用虚拟机网络设置模式设置为自定义(U):特定虚拟网络VMnet0(自动桥接),这都是在主机有线网卡插了网线,分配了ip地址的情况下才能模拟啊,这时候主机和客户机都在同一个网段,vmware内部有个虚拟路由器,可以通过DHCP服务器给vm虚拟网卡分配ip地址。

解释得非常好。
我刚才把笔记本的无线网卡断开,主机与VM虚拟机网起成功。
是不是可以这样理解,如果主机网起本机的虚拟机,是不需要外网的。这时主机是无线网卡,还是有线网卡无关紧要,两者都可以。

点评

pxe启动本来就不需要外网的,就是内部局域网PC1启动PC2这样子,PC1、PC2都连接到路由器。 如果PC1当pxeserver,PC1连接到路由器用有线/无线都可以。 PC2当客户机被启动,PC2应该是只能用有线方式连接到路由器;可  详情 回复 发表于 2024-12-21 13:43
回复

使用道具 举报

287#
发表于 2024-12-21 10:54:18 | 只看该作者
//MAC地址设备路径子类型
#define GRUB_EFI_MAC_ADDRESS_DEVICE_PATH_SUBTYPE        11

struct grub_efi_mac_address_device_path   //MAC地址设备路径
{
  grub_efi_device_path_t header;
  grub_efi_mac_address_t mac_address;     //mac地址
  unsigned char if_type;                  //网络接口类型(即802.3、FDDI) See RFC 3232
} __attribute__ ((packed));
typedef struct grub_efi_mac_address_device_path grub_efi_mac_address_device_path_t;

是这个 if_type。
视乎不是这个
#define EFI_TCP4_PROTOCOL_GUID \
  {0x65530BC7,0xA359,0x410f,\
    {0xB0,0x10,0x5A,0xAD,0xC7,0xEC,0x2B,0x62}}
回复

使用道具 举报

288#
 楼主| 发表于 2024-12-21 13:43:20 | 只看该作者
本帖最后由 liuzhaoyzz 于 2024-12-21 13:51 编辑
2011yaya2007777 发表于 2024-12-21 10:50
解释得非常好。
我刚才把笔记本的无线网卡断开,主机与VM虚拟机网起成功。
是不是可以这样理解,如果主 ...

pxe启动本来就不需要外网的,就是内部局域网PC1启动PC2这样子,PC1、PC2都连接到路由器。
如果PC1当pxeserver,PC1连接到路由器用有线/无线都可以,但是无线的速度太慢不稳定,除非是WIFI_5GHz那种。
PC2当客户机被启动,PC2应该是只能用有线方式连接到路由器;可能无线ipxe也行,但我没有尝试过,我不确定。

论坛里面有玩的比较花的是直接从外网的ip地址启动,感觉速度太慢,我没玩过。
回复

使用道具 举报

289#
发表于 2024-12-21 13:55:48 来自手机 | 只看该作者
谢谢详尽解答。我现在就是简单的主机通过TinyPXEServer与本机的VM虚拟机网起。
回复

使用道具 举报

290#
发表于 2024-12-23 16:14:46 | 只看该作者
感谢分享
回复

使用道具 举报

291#
 楼主| 发表于 2025-3-5 18:13:28 | 只看该作者
本帖最后由 liuzhaoyzz 于 2025-3-5 19:54 编辑
2011yaya2007777 发表于 2024-12-20 16:19
测试情况
1. 使用原始 grub2x64.efi
    07TinyPXEServer免配置网启http服务器启动grub2x64.efi.bat  启 ...

十分抱歉,之前让你测试了那么多次。我今天才发现,grub2的http网启,似乎对UEFI固件有要求,似乎在较低的固件版本下才行,我在vmware12.5.7版本上面测试成功的,在vmware15.5.5,vm16,vm17上面测试都失败了,主要就是不能进行http协议传输文件,我搜遍了全网的精简版本虚拟机,测试了N多相对完整版本的虚拟机,安装-卸载-重启→安装-卸载-重启无数次虚拟机,似乎都不行。
也就是说,grub2的http网启感觉很不可靠,还是ipxe最牛逼。
我再把我测试通过的虚拟机发上来:
[46MB]VMwareWorkstation_12.5.7_Lite_CHS_NoTool:https://liuzhaoyzz.lanzouq.com/b00nnn5uf


回复

使用道具 举报

292#
发表于 2025-3-7 17:46:33 | 只看该作者
也就是说,grub2的http网启感觉很不可靠,还是ipxe最牛逼。

确实如此。目前g4e网起还不如grub2.

点评

我在一楼更新了下: 1、更新ipxe和wimboot2.8到最新版本。ipxe用的是yigeren编译的版本,要比官方ipxe稳定:iPXE最新编译文件2025-01-29 - 网络启动区 - 无忧启动论坛 - Powered by Discuz! http://bbs.wuyou.net/  详情 回复 发表于 2025-3-7 20:40
回复

使用道具 举报

293#
 楼主| 发表于 2025-3-7 20:40:30 | 只看该作者
本帖最后由 liuzhaoyzz 于 2025-3-11 14:15 编辑
2011yaya2007777 发表于 2025-3-7 17:46
确实如此。目前g4e网起还不如grub2.

我在一楼更新了下:
1、更新ipxe和wimboot2.8到最新版本。ipxe用的是yigeren编译的版本,要比官方ipxe稳定:
iPXE最新编译文件2025-01-29 - 网络启动区 - 无忧启动论坛 - Powered by Discuz!
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=444574&extra=


2、05[BIOS][UEFI]TinyPXEServer免配置网启http服务器启动ipxegrldr和g4ebootx64.efi,一键添加g4d和g4e网启批处理更新,g4d用的是ipxegrldr方案支持http协议,启动PE.ISO用的是map  --mem,启动PE.WIM用的是wintoflash的修改版wimboot方案;g4e启动PE.ISO用的是map --mem方案,启动PE.WIM做了两套方案,一套用的是wintoflash的修改版wimboot方案,另一套用的是你的ntboot方案。
适用于grub4dos的wimboot: https://github.com/chenall/grubutils/releases/tag/latest

来日方长,慢慢研究吧,研究好了,我只需要更新下g4e和你的ntboot即可。
回复

使用道具 举报

294#
发表于 2025-3-8 14:04:59 | 只看该作者
感谢分享
回复

使用道具 举报

295#
发表于 2025-3-8 21:30:59 | 只看该作者
感谢分享
回复

使用道具 举报

296#
发表于 2025-3-8 21:32:35 | 只看该作者
感谢分享
回复

使用道具 举报

297#
 楼主| 发表于 2025-3-10 20:13:12 | 只看该作者
本帖最后由 liuzhaoyzz 于 2025-3-10 22:33 编辑

2025-03-10更新:
1、更新3512楼g4e版本解决pxe-http启动问题。http://bbs.wuyou.net/forum.php?m ... 6702&fromuid=298214
05[BIOS][UEFI]TinyPXEServer免配置网启http服务器启动ipxegrldr和g4ebootx64.efi。
2、04[BIOS][UEFI]HaneWinDHCP免配置网启http服务器ipxe.pxe和ipxe.efi增加haneWINDHCP3.1.26版本免配置ipxe启动方案,搭配EasyWebSvr-http服务器,支持[BIOS][UEFI]启动,能够跑满网速。ipxe.pxe、undionly.kpxe来自yigeren编译的iPXE最新编译文件http://bbs.wuyou.net/forum.php?m ... 44574&extra=&page=1,默认加载autoexec.ipxe菜单;ipxe.efi来自ipxe官方:http://boot.ipxe.org/,默认加载autoexec.ipxe菜单。haneWINDHCP来自201287zr:【经验】haneWINDHCP配合iPXE、wimboot网启教程(附3.1.24注册版) - 网络启动区 - 无忧启动论坛 - Powered by Discuz!
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=436932&extra=page%3D1
采用基于客户端标识符VendorClass的方式给pxe客户机分配ip地址,例如PXEClient:Arch:00000、PXEClient:Arch:00007、PXEClient:Arch:00009,理论上要比无条件ip申请bootp的方案能够更好地解决内网多个DHCP服务器冲突的问题;他还支持多播、多线程TFTP服务。
haneWINDHCP的缺点是软件设置坑多,不同版本不兼容,3.1.27高版本不读配置,界面语言不是保存在ini文件中等等,必须要自动写配置才行。
3、总体上根据可靠性、稳定性、通用性、[BIOS][UEFI]支持情况等方面综合考虑,对PXE启动批处理进行排序。




haneWINDHCP免配置ipxe启动支持BIOS-UEFI.png (165.69 KB, 下载次数: 10)

haneWINDHCP免配置ipxe启动支持BIOS-UEFI.png
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2025-5-12 18:49

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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