我有一个 pxe 服务器设置,可以正常启动到 pxe,但是自动安装似乎没有获取我的用户数据文件。这是我的 main.ipxe 文件。有什么想法吗?
#!ipxe
set boot-url=http://192.168.x.x
:MENU
menu
item --gap -- ---------------- iPXE boot menu ----------------
item ubuntu ubuntu-20.04-physical
item shell ipxe shell
choose --default return --timeout 5000 target && goto ${target}
:ubuntu
set server_ip 192.168.x.x
set root_path /pxeboot
set os_root os-images/ubuntu-20.04-server
kernel tftp://${server_ip}/${root_path}/${os_root}/casper/vmlinuz
initrd tftp://${server_ip}/${root_path}/${os_root}/casper/initrd
imgargs vmlinuz initrd=initrd ipv6.disable=1 netboot=nfs ip=dhcp nfsroot=${server_ip}:${root_path}/${os_root} autoinstall ds=nocloud-net\;s=http://192.168.x.x/pxe_ks/ubuntu-20-04-3-phys/ cloud-config-url=192.168.x.x/px_ks/ubuntu-20-04-3-phys/user-data ---
boot
boot
:shell
shell ||
goto MENU
autoboot
答案1
我发现启动做不是想要转义分号或者引用内核参数。
在你的启动脚本你将改变参数
ds=nocloud-net\;s=http://192.168.x.x/pxe_ks/ubuntu-20-04-3-phys/
到
ds=nocloud-net;s=http://192.168.x.x/pxe_ks/ubuntu-20-04-3-phys/
如果这不起作用,您可以检查您的 Web 服务器日志、安装程序 cloud-init 日志(打开 shell 并查看/var/log/cloud-init.log
)以及安装程序 cmdline 参数(打开 shell 并查看cat /proc/cmdline
)。
下列启动脚本片段对我的 20.04.5 版本有效
:ubuntu
set server_ip a.b.c.d
initrd tftp://${server_ip}/ubuntu/focal/server/initrd
kernel tftp://${server_ip}/ubuntu/focal/server/vmlinuz initrd=initrd root=/dev/ram0 ramdisk_size=1500000 ip=dhcp url=http://${server_ip}/tftp/iso/ubuntu-20.04.5-live-server-amd64.iso cloud-config-url=/dev/null autoinstall ds=nocloud-net;s=http://${server_ip}/tftp/ubuntu/focal/server/autoinstall/
boot