感谢分享 |
谢谢详尽解答。我现在就是简单的主机通过TinyPXEServer与本机的VM虚拟机网起。 |
本帖最后由 liuzhaoyzz 于 2024-12-21 13:51 编辑 2011yaya2007777 发表于 2024-12-21 10:50 pxe启动本来就不需要外网的,就是内部局域网PC1启动PC2这样子,PC1、PC2都连接到路由器。 如果PC1当pxeserver,PC1连接到路由器用有线/无线都可以,但是无线的速度太慢不稳定,除非是WIFI_5GHz那种。 PC2当客户机被启动,PC2应该是只能用有线方式连接到路由器;可能无线ipxe也行,但我没有尝试过,我不确定。 论坛里面有玩的比较花的是直接从外网的ip地址启动,感觉速度太慢,我没玩过。 |
//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}} |
使用TinyPXEServer做主机,VM虚拟机做客户机,都是需要利用虚拟机网络设置模式设置为自定义(U):特定虚拟网络VMnet0(自动桥接),这都是在主机有线网卡插了网线,分配了ip地址的情况下才能模拟啊,这时候主机和客户机都在同一个网段,vmware内部有个虚拟路由器,可以通过DHCP服务器给vm虚拟网卡分配ip地址。 解释得非常好。 我刚才把笔记本的无线网卡断开,主机与VM虚拟机网起成功。 是不是可以这样理解,如果主机网起本机的虚拟机,是不需要外网的。这时主机是无线网卡,还是有线网卡无关紧要,两者都可以。 |
本帖最后由 liuzhaoyzz 于 2024-12-21 10:15 编辑 2011yaya2007777 发表于 2024-12-20 16:08 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 13:56 编辑 2011yaya2007777 发表于 2024-12-20 16:47 无线网卡很难pxe启动,你想想看,客户机要想从pxe服务器启动,需要pxe主机连接到路由器,而且客户机是不是必须要输入连接路由器的WIFI帐号密码?这个在OSloader阶段,怎么输入?操作系统就没有启动,怎么输入呢?ipxe据说有,我没看到详细的说明,也没有尝试过。无线传输就算能启动,也是很慢的,比不上有线网络。客户机通过有线网卡连接到路由器,是不需要什么帐号密码认证的,获取的ip地址也是通过路由器DHCP服务器分配的,这是有区别的。 你的操作,在本地主机+虚拟机可以测试,问题是实体机上面部署的时候,一台pxe主机+若干台客户机,客户机都没有操作系统启动,OSloader阶段,怎么输入WIFI帐号密码连接到无线路由器? 使用TinyPXEServer做主机,VM虚拟机做客户机,都是需要利用虚拟机网络设置模式设置为自定义(U):特定虚拟网络VMnet0(自动桥接),这都是在主机有线网卡插了网线,分配了ip地址的情况下才能模拟啊,这时候主机和客户机都在同一个网段,vmware内部有个虚拟路由器,可以通过路由器DHCP给vm虚拟网卡分配ip地址。 |
我的笔记本电脑使用的是无线网卡。我不清楚笔记本使用TinyPXEServer做主机,VM虚拟机做客户机,他们之间通讯是不是使用无线网卡?如果不是,那使用的是什么?反正我修改了一下你的批处理代码,可以继续往下走了,搞懂了一点http在uefi环境的状况,对于移植grub2到g4e,起了很大作用。 |
本帖最后由 liuzhaoyzz 于 2024-12-20 16:32 编辑 2011yaya2007777 发表于 2024-12-20 15:37 无线网卡不支持pxe启动呀?增加有啥用啊? 你上面的测试和代码,都不能在无线环境下测试啊。 好像ipxe支持无线启动,但我没有测试过,不知道怎么输入密码。 grub2的pxe启动,传输速度很慢,而且传输的文件名字编码,似乎有问题,好像grub2菜单文件是要utf-8的,但路径里的中文需要转换成gbk,反正挺折腾的,这是grub2的pxe启动的痛点,你懂这个,如果你改进下,那就很美了。前提是你有兴趣、有空。 |
测试情况 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. |
双击 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毫秒 |
谢谢楼主更新.. |
楼主的批处理识别不到无线网卡,提示后退出。 现在找到一种解决办法: 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,然后选择“停止”,再选择“启动”。 |
感谢分享!! |
多谢大佬分享 |
好东西,谢谢分享。 |
[我不是网管]分享个ipxe、grub2-http协议启动PE的免配置网启模板。感谢分享!俺是来学习的。 |
好用 |
GOOD |
liuzhaoyzz 发表于 2024-1-22 07:27 用vm的网卡再架dhcp肯定不影响正常网络,但影响tinypxe的网卡判断,也是抢dhcp,tinypxe毛病一大堆 |
每个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了,也不会影响主网上网。 |
江南一根葱 发表于 2024-1-19 19:36 根据你提供的信息,我试了下wintoflash魔改的grub2,果然支持proxydhcp了! 我更新了下批处理,默认勾选proxydhcp。一楼下载地址已更新。 分享个ipxe、grub2-http协议启动PE的免配置网启模板 https://liuzhaoyzz.lanzoux.com/b00n6291c |
本帖最后由 江南一根葱 于 2024-1-21 16:25 编辑 2011yaya2007777 发表于 2024-1-21 15:47 http://bbs.wuyou.net/forum.php?m ... 1&extra=#pid5167665 哈哈,算了, 我做了个教程,先不要管proxydhcp吧 你的网络自带3个DHCP,加上楼主开的,,你的电脑有四个dhcp 别说grub2了,ipxe都杀疯了 |
liuzhaoyzz 发表于 2024-1-21 12:23 你也知道冲突,那你两个dhcp是几个意思啊。。 |
需翻墙 |
liuzhaoyzz 发表于 2024-1-21 12:07 github我这里原来是不好打开,多刷新几次就能打开。 这几天是怎么也打不开了。 使用了网上的办法 https://github.com/syncthing/syncthing 网址改成这样的 https://githubfast.com/syncthing/syncthing 能打开了,不过也不太稳定,有时候也得刷新 |
本帖最后由 liuzhaoyzz 于 2024-1-21 13:00 编辑 江南一根葱 发表于 2024-1-20 23:25 搞明白了,ipxefm-Tinypxe-DHCP,ipxefm-Tinypxe-PROXYDHCP只支持BIOS-PXE启动吗?我看到tinypxeserver的启动文件是ipxe.BIOS.我试了vmware如果选择BIOS模式,这两个批处理都可以启动F:\ipxefm-main\WePE64_V2.2.iso 那UEFI启动是启动文件选哪个?我试了ipxe.efi,vmware没有反应啊? |
用这个模板试试,直接目录下有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差不多。 |
Powered by Discuz! X3.3
© 2001-2017 Comsenz Inc.