我目前正在使用 cloud-init 自动安装过程。
我们通过 PXE 安装 ubuntu 或 debian 的方式是启动一个 linux miniroot,获取 ubuntu/debian 内核和 initrd。修补 preseed 并将其打包到 inird 中。然后我们做了一个 kexec 并且 die 安装程序在没有用户交互的情况下运行。
这就是我想对 cloud-init 安装做的事情。启动 miniroot,修补用户数据 yaml 文件并将其打包到 initrd 中。
目前在 apache 上使用 havin 用户数据,安装运行良好。
是否有可能将用户数据打包到 initrd 中并使其在不需要 apache 的情况下无人值守安装?我在 Linux Mint 20-X 上使用了类似的方法,其中 preseed 在 initrd 中,iso 内容通过 nfsroot 加载
这是有效的 kexec 命令:
/sbin/kexec --load /mnt/hd/tmp/vmlinuz --append='url=http://10.100.1.40/ubuntu-21.10-live-server-amd64.iso autoinstall ds=nocloud-net;s=http://10.100.1.40/ubuntu22-04/ubuntu22-04.nightly.test/ ip=dhcp ---' --initrd=/mnt/hd/tmp/initrd
这个现在没有
/sbin/kexec --load /mnt/hd/tmp/vmlinuz --append='url=http://10.100.1.40/ubuntu-21.10-live-server-amd64.iso autoinstall ds=nocloud;s=/ ip=dhcp ---' --initrd=/mnt/hd/tmp/initrd
IIRC,
debian-installer
永远不会改变根文件系统。新subiquity
安装程序将更改根文件系统,并且无法从安装程序访问 initrd 根文件系统。但是,
/run
更改根文件系统时会保留文件系统。因此,这种方法可能有效(我没有尝试过)。user-data
文件和将user-data
文件复制到/run/autoinstall/user-data
.ds="nocloud;s=file:///run/autoinstall"
编辑我提供了将自动安装文件捆绑到自定义 initrd 中的示例步骤,将它们复制到
/run
,并将它们用作https://askubuntu.com/a/1399184/376778上的数据源。这可能有助于展示我建议的方法。