在 initrd 中自动安装用户数据

在 initrd 中自动安装用户数据

我目前正在研究 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.这可能有助于证明我所建议的方法。

相关内容