我是一名高级 DevOps 工程师,负责部署系统,每周交付几千台 Linux 机器。我使用 vmware fusion 7 pro 来执行此操作,但在 pxe 启动方面遇到了一些问题。
我遇到了这个小问题,所以我想我应该快速写一篇文章,也许可以节省 15 分钟。如果有人知道更好的方法,我很乐意听听。
我正在尝试使用 PXE 启动一些容器。我希望 VMware Fusion 处理 DHCP,并且我希望虚拟机与我的 Mac 进行网络地址转换以便进行外部访问,因此我需要默认使用 vmnet8。我还有几个虚拟机应该有静态预留来模拟此系统将驻留在的生产网络。因此,我编辑 /Library/Preferences/VMware Fusion/vmnet8/dhcpd.conf
我需要在 tftp 的子网声明中添加两行简单的行:
next-server 192.168.87.20;
filename "pxelinux.0";
问题在于子网声明(库存文件的第 26 行)处于禁区内:
###### VMNET DHCP Configuration. Start of "DO NOT MODIFY SECTION" #####
如果您更改了禁区中的某些内容,然后重新启动 vmware fusion,或重新启动其网络,它会粗暴地用自动生成的文件替换整个 dhcpd.conf 文件。它会将现有文件轮换为备份,但只轮换一次(3 次会更不粗暴,提示和日志条目也是如此)。
答案1
这是如何在相关的 VMware Fusion dhcp.conf 文件中添加 PXE 启动配置。
“正确”的解决方案是简单地在“请勿修改”部分下重新声明整个子网块。因此,要添加用于 PXE 引导的下一个服务器和文件名选项,我必须添加以下内容:
####### VMNET DHCP Configuration. End of "DO NOT MODIFY SECTION" #######
subnet 192.168.87.0 netmask 255.255.255.0 {
range 192.168.87.128 192.168.87.254;
option broadcast-address 192.168.87.255;
option domain-name-servers 192.168.87.2;
option domain-name localdomain;
default-lease-time 1800; # default is 30 minutes
max-lease-time 7200; # default is 2 hours
option netbios-name-servers 192.168.87.2;
option routers 192.168.87.2;
next-server 192.168.87.20;
filename "pxelinux.0";
}
#
host cmhpxe {
hardware ethernet 00:0C:29:DF:06:7F;
fixed-address 192.168.87.20;
}
#
无需重新启动 Fusion 即可重新配置和重新启动 DHCP 的有趣方法:
alias vm_restartdhcpd='sudo /Applications/VMware\ Fusion.app/Contents/Library/vmnet-cli --configure ;
sudo /Applications/VMware\ Fusion.app/Contents/Library/vmnet-cli --stop;
sudo /Applications/VMware\ Fusion.app/Contents/Library/vmnet-cli --start'