![在 initrd 中自动安装用户数据](https://linux22.com/image/945527/%E5%9C%A8%20initrd%20%E4%B8%AD%E8%87%AA%E5%8A%A8%E5%AE%89%E8%A3%85%E7%94%A8%E6%88%B7%E6%95%B0%E6%8D%AE.png)
我目前正在研究 cloud-init 自动安装程序。
我们通过 PXE 安装 ubuntu 或 debian 的方式是启动 linux miniroot,获取 ubuntu/debian 内核和 initrd。修补预置并将其打包到 inird 中。然后我们执行 kexec,安装程序无需用户交互即可运行。
这就是我想用 cloud-init 安装做的事情。启动 miniroot,修补用户数据 yaml 文件并将其打包到 initrd 中。
目前,由于 apache 上有用户数据,安装运行良好。
是否有可能将用户数据打包到 initrd 中,并使其无需 apache 即可无人值守地安装?我在 Linux Mint 20-X 上使用类似的方法,其中预置位于 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
答案1
如果我没记错的话,它debian-installer
永远不会改变根文件系统。新subiquity
安装程序将改变根文件系统,并且无法从安装程序访问 initrd 根文件系统。
但是,/run
更改根文件系统时,文件系统会保留下来。因此,这种方法可能有效(我还没有尝试过)。
- 修改 initrd 映像以包含您的
user-data
文件和将user-data
文件复制到类似路径的脚本/run/autoinstall/user-data
。 - 使用类似以下的启动参数
ds="nocloud;s=file:///run/autoinstall"
编辑我提供了示例步骤,将自动安装文件捆绑在自定义 initrd 中,将它们复制到/run
,并将它们用作数据源https://askubuntu.com/a/1399184/376778.这可能有助于证明我所建议的方法。