从某种意义上讲,我是一个系统pipe理员,试图扩展我的networking知识,因为这不是我最重要的一点。
目前,我正在试验PXE。 几天前,我设置了一些ESXi虚拟机,一个是DHCP和TFTP服务器,另外两个是BIOS和UEFI客户端。 我设法在BIOS和UEFI机器上通过PXE引导debian。
我听说过iPXE及其带来的可能性(例如在HTTP,iSCSI等上启动),并决定放弃它。 现在,我仍然试图启动我的本地debiannetworking启动安装程序,我想我会testing远程文件后,确保安装是正确的。
在这一点上,这就是我的DHCPconfiguration文件的样子(减去任何不感兴趣的东西):
option arch code 93 = unsigned integer 16; class "pxe-clients" { match if substring (option vendor-class-identifier, 0, 9) = "PXEClient"; option tftp-server-name "192.168.0.5"; next-server 192.168.0.5; if option arch = 00:00 { if exists user-class and option user-class = "iPXE" { filename = "pxelinux.0"; } else { filename = "undionly.kpxe"; } } elsif option arch = 00:02 or option arch = 00:06 or option arch = 00:07 or option arch = 00:08 or option arch = 00:09 { if exists user-class and option user-class = "iPXE" { filename = "bootnetx64.efi"; } else { filename = "ipxe.efi"; } } else { filename = "UNKNOWN_VCI"; } }
192.168.0.5是DHCP / TFTP服务器的LAN IP。
至于我的TFTP服务器的根目录:
root@vmpxe:/srv/tftp# ls -l total 968 lrwxrwxrwx 1 root root 37 Sep 22 14:01 bootnetx64.efi -> debian-installer/amd64/bootnetx64.efi drwxrwxr-x 3 root root 4.0K Sep 22 00:21 debian-installer -rw-r--r-- 1 root root 896K Sep 22 16:00 ipxe.efi lrwxrwxrwx 1 root root 47 Sep 22 00:21 ldlinux.c32 -> debian-installer/amd64/boot-screens/ldlinux.c32 lrwxrwxrwx 1 root root 33 Sep 22 00:21 pxelinux.0 -> debian-installer/amd64/pxelinux.0 lrwxrwxrwx 1 root root 35 Sep 22 00:21 pxelinux.cfg -> debian-installer/amd64/pxelinux.cfg -rw-r--r-- 1 root root 64K Sep 22 16:00 undionly.kpxe -rw-rw-r-- 1 root root 64 Sep 22 00:21 version.info
我坚持认为,在iPXE之前,两种架构都能正常工作。 我做的唯一的改变是从iPXE的网站上下载undionly.kpxe和ipxe.efi文件,并编辑DHCP conf以将文件名设置包装在if exists user-class and option user-class = "iPXE" {...} else {...}条件。
现在,BIOS机器执行PXE – > iPXE – > Debian的netboot安装程序。 一切工作正常。
但是,UEFI机器执行PXE – > iPXE – > grub shell。
我试图tcpdump的过程,但没有得到什么:所有的stream量显示正常和预期。 与iPXE之前的版本没有什么不同。
任何想法可能发生在这里?
编辑:进一步的tcpdumptesting表明,没有iPXE,我的EFI机器发送引导加载程序的RRQ数据包和一堆其他文件,我假设引导加载程序本身引用。 但是,对于iPXE,只有引导加载程序我只能看到引导加载程序。
所以我想正确的问题是:iPXE会发生什么情况,它不会检索标准PXE正确下载的所有文件?
不涉及你的问题,但
用于启动EFI64
} elsif option arch = 00:02 or option arch = 00:06 or option arch = 00:07 or option arch = 00:08 or option arch = 00:09 {
应该改成
} elsif option arch = 00:07 or option arch = 00:09 {
关于你的问题,如果你启动bootnetx64.efi这就是你得到的; 一个Grub屏幕。
请参阅: http : //lists.ipxe.org/pipermail/ipxe-devel/2015-December/004532.html
编辑:当你加载pxelinux.0根据它的版本,它会检索dynamic组件加pxelinux.0菜单定义。 当您加载iPXE时,您没有加载这些额外的文件。