pxebooting 的本质

pxebooting 的本质

我对 pxe-booting 进入 freebsd 有疑问。我们假设如下。

  • 机器 A = dhcpd/tftp/控制台服务器
  • 机器 B = 没有操作系统(通过 PXE 获取一个)

通过 pxe 启动机器 B 之后,我希望机器 B 能够访问网络。

今天我遇到了一件非常有趣的事情。我使用 pxe 启动了计算机 B,但当我输入“ifconfig -a”时,我只找到了回送。这是不可能的,应该至少有一个接口,与计算机 B 用于从计算机 A 进行 pxe 启动的接口完全相同。

有人可以告诉我为什么会发生这种情况吗?

谢谢

答案1

PXE 启动/安装过程有几个阶段。在第一阶段,NIC 卡中包含的固件提供 PXE 标准化网络驱动程序 (UNDI) 的服务。该驱动程序处理第一个 TFTP 传输,例如:

  1. 苯二氮平(网络启动程序)即pxelinux.0
  2. 核心即在Linux世界vmlinuz
  3. 初始化文件即在Linux世界中的initrd.gz

通过 TFTP 传输内核和 initrd 文件后,NBP 将控制权交给挂载 initrd 的内核。

此时(第二阶段),正在运行的内核将不再使用 PXE UNDI 驱动程序,而是开始使用自己的网络驱动程序。在这里,您可以清楚地看到传输的 initrd“不包含匹配的 NIC 驱动程序”然后在控制台上输入 ifconfig 您将只看到环回 127.0.0.1

如您所见,虽然 PXE NIC 驱动程序可以传输初始启动组件,但启动的操作系统可能不包含继续正常运行所需的 NIC 驱动程序。

我的例子提到了 Linux,但启动任何 BSD 版本还包括由 UNDI 驱动程序处理的初始 PXE 传输,然后使用其自己的网络驱动程序(如果可用)启动内核。

相关内容