我有一台通过 PXE 启动的 Linux 机器。我可以确定用于启动的网络接口吗?
答案1
如果假设您使用的是 PXELINUX。
有一面旗帜IPAPPEND
;如果您将其设置为2
,它应该会导致 PXELINUX 将一个参数附加BOOTIF=<hardware-address-of-boot-interface>
到您的内核命令行。然后你就得到了 MAC 地址,你可以用它来识别所使用的接口。
http://www.syslinux.org/wiki/index.php/SYSLINUX#IPAPPEND_flag_val_.5BPXELINUX_only.5D
答案2
我已经使用 PXELINUXIPAPPEND=2
多年了。但我最近不得不切换到 EFI PXE 引导,大多数人似乎更喜欢 GRUB 而不是 PXELINUX。
GRUB EFI PXE 引导加载程序定义了一个$net_default_mac
包含引导接口的 MAC 地址的变量。您可以使用它将 MAC 地址添加到内核命令行,但它与 PXELINUXIPAPPEND=2
值有两个不同之处:
- 它不包括硬件类型前缀字节(
01
=以太网) - 它使用冒号来分隔八位字节而不是破折号(例如
ba:98:76:54:32:10
而不是01-ba-98-76-54-32-10
)
我们有一些脚本需要 PXELINUXBOOTIF
格式,所以我想在 GRUB 配置中复制它。
不幸的是,GRUB 的文本操作功能似乎几乎不存在。我会使用正则表达式像这样命令:
set dd="[0-9a-f][0-9a-f]"
regexp --set 1:o1 --set 2:o2 --set 3:o3 --set 4:o4 --set 5:o5 --set 6:o6 \
($dd):($dd):($dd):($dd):($dd):($dd) \
$net_default_mac
set hwaddr="01-$o1-$o2-$o3-$o4-$o5-$o6"
menuentry 'My Linux' --class fedora --class gnu-linux --class gnu --class os {
linuxefi my-kernel-image BOOTIF=$hwaddr
initrdefi my-initramfs.img
}