通过SYSLINUX实现Ubuntu 22.04 PXE自动安装时cloud-config文件无法加载的问题求助
通过SYSLINUX实现Ubuntu 22.04 PXE自动安装时cloud-config文件无法加载的问题求助
各位大佬好,我目前已经搭好了正常运行的DHCP、FTP和TFTP服务器,TFTP根目录下的tftpboot配置好了SYSLINUX,支持PXE启动的机器能正常从网络加载SYSLINUX,没什么问题。现在我想通过SYSLINUX实现Ubuntu 22.04 Server的PXE自动安装,跟着教程做了一系列步骤,但遇到了cloud-config加载失败的问题,想请教大家怎么解决。
我的目录结构
首先是TFTP服务器的tftpboot核心目录结构(省略了SYSLINUX常规的其他冗余文件):
tftpboot ├── pxelinux.0 ├── jammy │ ├── initrd │ └── vmlinuz ├── pxelinux.cfg │ └── default └── syslinux └── bios ├── ldlinux.c32 ├── libutil.c32 └── menu.c32
然后是FTP服务器的目录结构:
ftp └── Ubuntu-22.04 ├── ubuntu-22.04.1-live-server-amd64.iso └── Kickstart ├── user-data └── meta-data
配置文件内容
user-data我写的是最小化自动安装的配置,meta-data是空文件:
#cloud-config autoinstall: identity: hostname: jammy-minimal password: $6$gnqbMUzHhQzpDEw.$.cCNVVDsDfj5Feebh.5O4VbOmib7tyjmeI2ZsFP7VK2kWwgJFbfjvXo3chpeAqCgXWVIW9oNQ/Ag85PR0IsKD/ username: ubuntu version: 1
pxelinux.cfg/default的配置如下:
default menu.c32 menu title Ubuntu installer LABEL ubuntu MENU LABEL Install Ubuntu Jammy Server MENU DEFAULT KERNEL jammy/vmlinuz IPAPPEND 1 APPEND initrd=jammy/initrd ip=dhcp url=ftp://172.16.0.4/Ubuntu-22.04/ubuntu-22.04.1-live-server-amd64.iso autoinstall ds=nocloud-net;s=ftp://172.16.0.4/Ubuntu-22.04/Kickstart
问题现象
内核和ISO都能正常加载,安装流程能启动,但到了需要加载cloud-config的环节时,cloud-init会一直处于等待状态,最后还是会进入手动安装菜单,看起来user-data完全被忽略了。
我的疑问
- 为什么通过SYSLINUX的
default配置文件指定的ds=nocloud-net参数不生效?是不是我哪里配置错了? - 有没有其他方式可以让安装程序加载到我的
user-data文件? - 我考虑过把
user-data集成到修改后的ISO里再通过PXE加载,这个方案可行吗?
麻烦各位大佬帮我分析下问题,谢谢!
备注:内容来源于stack exchange,提问作者Andy McRae




