UEFI iPXE 启动进入 debian 导致进入 grub shell

UEFI iPXE 启动进入 debian 导致进入 grub shell

稍微介绍一下背景,我是一名系统管理的学生,正在努力扩展我的网络知识,因为这不是我的强项。

目前,我正在尝试使用 PXE。几天前,我设置了一些 ESXi 虚拟机,其中一个是 DHCP 和 TFTP 服务器,另外两个是 BIOS 和 UEFI 客户端。我设法在 BIOS 和 UEFI 机器上通过 PXE 启动了 Debian。

我听说过 iPXE 及其带来的可能性(例如在 HTTP、iSCSI 上启动等),并决定尝试一下。目前,我仍在尝试启动本地 debian 网络启动安装程序,我想在确保安装正确后测试远程文件。


此时,我的 DHCP 配置如下所示(减去一些不太感兴趣的内容):

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 的网络启动安装程序。一切正常。

但是,UEFI 机器确实 PXE -> iPXE -> grub shell。

我尝试对进程进行 tcpdump,但一无所获:所有流量看起来都很正常,符合预期。这与我使用 iPXE 之前的情况没有太大区别。

知道这里可能发生什么事吗?


编辑:进一步的 tcpdump 测试表明,如果没有 iPXE,我的 EFI 机器会为引导加载程序和一堆其他文件发送 RRQ 数据包,我假设这些文件是由引导加载程序本身引用的。但是,使用 iPXE 时,只有引导加载程序,我只能看到引导加载程序。

所以我猜正确的问题是:iPXE 发生了什么,导致它无法检索标准 PXE 正确下载的所有文件?

答案1

与您的问题无关,但是

用于启动 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 时,根据其版本,它将检索动态组件加上 pxelinux.0 菜单定义。当您加载 iPXE 时,您没有加载那些额外的文件。

相关内容