无忧启动论坛

 找回密码
 注册
搜索

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

查看数: 73619 | 评论数: 289 | 收藏 53
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2019-12-25 21:09

正文摘要:

本帖最后由 liuzhaoyzz 于 2020-11-12 12:00 编辑 [我不是网管]分享个ipxe、grub2-http协议启动PE的免配置网启模板 https://liuzhaoyzz.lanzoux.com/b00n6291c 主机运行\boot\pxe目录下的任何一个批处理即可 ...

回复

yhm2002 发表于 2024-12-23 16:14:46
感谢分享
2011yaya2007777 发表于 2024-12-21 13:55:48
谢谢详尽解答。我现在就是简单的主机通过TinyPXEServer与本机的VM虚拟机网起。
liuzhaoyzz 发表于 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地址启动,感觉速度太慢,我没玩过。
2011yaya2007777 发表于 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}}
2011yaya2007777 发表于 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
liuzhaoyzz 发表于 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




liuzhaoyzz 发表于 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地址。


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

点评

无线网卡很难pxe启动,你想想看,客户机要想从pxe服务器启动,需要pxe主机连接到路由器,而且客户机是不是必须要输入连接路由器的帐号密码?这个在OSloader阶段,怎么输入?操作系统就没有启动,怎么输入呢?ipxe据  详情 回复 发表于 2024-12-21 09:26
liuzhaoyzz 发表于 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启动的痛点,你懂这个,如果你改进下,那就很美了。前提是你有兴趣、有空。


2011yaya2007777 发表于 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.
2011yaya2007777 发表于 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
TTzzll 发表于 2024-12-20 15:42:12

谢谢楼主更新..
2011yaya2007777 发表于 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
yixiong97 发表于 2024-11-5 12:28:07
感谢分享!!
xvegetal 发表于 2024-11-2 19:35:43
多谢大佬分享
ailixing 发表于 2024-11-2 14:33:13
好东西,谢谢分享。
13325531750 发表于 2024-9-21 22:19:43
[我不是网管]分享个ipxe、grub2-http协议启动PE的免配置网启模板。感谢分享!俺是来学习的。
wodehjy 发表于 2024-9-21 20:49:12
好用
mindmap138 发表于 2024-9-21 19:36:49
GOOD
江南一根葱 发表于 2024-1-22 13:16:08
liuzhaoyzz 发表于 2024-1-22 07:27
每个DHCP都有他的作用域,就像内网无论接多少个路由器,只要上级子网网线插WAN口,都不会影响上级子网上网 ...

用vm的网卡再架dhcp肯定不影响正常网络,但影响tinypxe的网卡判断,也是抢dhcp,tinypxe毛病一大堆
liuzhaoyzz 发表于 2024-1-22 07:27:29
每个DHCP都有他的作用域,就像内网无论接多少个路由器,只要上级子网网线插WAN口,都不会影响上级子网上网。
yaya的vmnet1-192.168.274.1,vmnet8-192.168.80.1,这两个DHCP应该是vmware的。
192.168.56.1可能是其他虚拟机的虚拟网卡的吧,有可能也开启了DHCP。
以上三个DHCP都不会影响本机,也不会影响内网其他人上网。
还有个主路由器的DHCP。
我只在192.168.1.3本机上开启了DHCP,现在grub2也可用proxydhcp了,也不会影响主网上网。

点评

用vm的网卡再架dhcp肯定不影响正常网络,但影响tinypxe的网卡判断,也是抢dhcp,tinypxe毛病一大堆  详情 回复 发表于 2024-1-22 13:16
liuzhaoyzz 发表于 2024-1-21 22:06:35
江南一根葱 发表于 2024-1-19 19:36
又想起当年和楼主proxydhcp和dhcp的争论
我苦口公心说过,,一定要依法网启。。哎,算了,
下面的grub2最 ...

根据你提供的信息,我试了下wintoflash魔改的grub2,果然支持proxydhcp了!
我更新了下批处理,默认勾选proxydhcp。一楼下载地址已更新。

分享个ipxe、grub2-http协议启动PE的免配置网启模板
https://liuzhaoyzz.lanzoux.com/b00n6291c

江南一根葱 发表于 2024-1-21 16:15:03
本帖最后由 江南一根葱 于 2024-1-21 16:25 编辑
2011yaya2007777 发表于 2024-1-21 15:47
一个笔记本电脑,插入网线。windows操作系统里有一个proxydhcp服务器 ,一个VM虚拟机。那怎么知道有几个DHC ...

http://bbs.wuyou.net/forum.php?m ... 1&extra=#pid5167665
哈哈,算了,
我做了个教程,先不要管proxydhcp吧
你的网络自带3个DHCP,加上楼主开的,,你的电脑有四个dhcp
别说grub2了,ipxe都杀疯了
2011yaya2007777 发表于 2024-1-21 15:47:49
本帖最后由 2011yaya2007777 于 2024-1-21 15:51 编辑

一个笔记本电脑,插入网线。windows操作系统里有一个proxydhcp服务器 ,一个VM虚拟机。那怎么知道有几个DHCP?怎么关闭多余的?应当保留哪一个?

点评

http://bbs.wuyou.net/forum.php?mod=viewthread&tid=439087&page=1&extra=#pid5167665 哈哈,算了, 我做了个教程,先不要管proxydhcp吧  详情 回复 发表于 2024-1-21 16:15
江南一根葱 发表于 2024-1-21 15:15:24
liuzhaoyzz 发表于 2024-1-21 12:23
一般地来说,内网电脑的ip地址基本上都是自动获取的,因为管理难度太大,自己用静态,保不齐会有ip冲突。 ...

你也知道冲突,那你两个dhcp是几个意思啊。。
2011yaya2007777 发表于 2024-1-21 15:11:36
需翻墙
freesoft00 发表于 2024-1-21 15:09:06
liuzhaoyzz 发表于 2024-1-21 12:07
github好难进去。你以后更新能否发到123网盘啊?

1、运行ipxefm-Nginx-PROXYDHCP.BAT,cmd一直显示=bu ...

github我这里原来是不好打开,多刷新几次就能打开。
这几天是怎么也打不开了。
使用了网上的办法
https://github.com/syncthing/syncthing
网址改成这样的
https://githubfast.com/syncthing/syncthing
能打开了,不过也不太稳定,有时候也得刷新
liuzhaoyzz 发表于 2024-1-21 12:51:34
本帖最后由 liuzhaoyzz 于 2024-1-21 13:00 编辑
江南一根葱 发表于 2024-1-20 23:25
efi环境的话,这个变量名变了,认的就是他之前发过获取到的上一任dhcp地址,路由的
tinypxe是有毛病的, ...

搞明白了,ipxefm-Tinypxe-DHCP,ipxefm-Tinypxe-PROXYDHCP只支持BIOS-PXE启动吗?我看到tinypxeserver的启动文件是ipxe.BIOS.我试了vmware如果选择BIOS模式,这两个批处理都可以启动F:\ipxefm-main\WePE64_V2.2.iso

那UEFI启动是启动文件选哪个?我试了ipxe.efi,vmware没有反应啊?
2011yaya2007777 发表于 2024-1-21 12:51:22
用这个模板试试,直接目录下有grub2toy.efi,就是grub2的,应该是支持proxydhcp的

运行ipxefm-Nginx-PROXYDHCP.bat,开启VM虚拟机,虚拟机显示: >>Start PXE over IPv4 ,然后等待一段时间,就又回到 UEFI 引导菜单。
服务器日志:
12:42:49 DHCPc:discovering for another DHCPd on LAN
12:42:49 ROOT=D:\grub2toy\
12:42:49 DHCPd 192.168.1.3:67 started...
12:42:49 DHCPd 192.168.1.3:4011 started...
12:42:49 TFPTd 192.168.1.3:69 started...
12:42:49 PXE share failed: 997
12:42:54 DHCPc:another DHCPd detected on your LAN @ 192.168.1.1

基本情况与liuzhaoyzz差不多。

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

闽公网安备 35020302032614号

GMT+8, 2025-2-16 22:54

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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