UEFI iPXE引导到debian结果在grubshell

从某种意义上讲,我是一个系统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.kpxeipxe.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时,您没有加载这些额外的文件。