我想自动安装 Ubuntu 20.04
我正在虚拟机(vmware)上创建一个具有修改后的 initramfs(包含一些我稍后需要的文件)的可启动分区。
该分区安装在另一台服务器上,因此我通过这种方式复制到该分区。
我在存储库服务器上有 Ubuntu 20.04 的解压 iso。
当我重新启动机器时,我希望执行可启动分区中的内核/initramfs,然后安装 Ubuntu 20.04 并从存储库服务器中获取数据。
引导加载程序(grub)配置设置如下:
kernel vmlinuz autoinstall ds=nocloud;s=/cdrom/nocloud
initrd initrd custom-init
在 custom-init 中我有自动安装配置。
虚拟机重新启动并开始安装,但一段时间后触发 42 错误,未找到 cdrom。
答案1
这可能就是您正在尝试做的事情的一个例子。
为自定义 initrd 文件创建目录结构。
mkdir custom-init
cd custom-init
mkdir autoinstall
mkdir -p conf/conf.d
创建自动安装配置文件。您将需要使用完整的user-data
文件。这只是一个基本示例。
cat <<EOF > autoinstall/meta-data
instance-id: focal-autoinstall
EOF
cat <<EOF > autoinstall/user-data
#cloud-config
autoinstall:
version: 1
EOF
创建脚本以将autoinstall
目录复制到/run
。安装介质中的 initrd 将在启动安装程序之前更改根文件系统(下位性)。安装程序无法访问 initrd 根文件系统,但/run
更改根文件系统后分区仍然存在。将 initrd 中捆绑的文件放入 中,即可让安装程序使用这些文件/run
。这个脚本是一个非常笨拙的解决方案,但我费了好大劲才找到另一种方法从自定义 initrd 运行脚本。
cat <<EOF > conf/conf.d/autoinstall.conf
echo 'cp -r /autoinstall /run/' >> /scripts/init-top/ORDER
EOF
创建自定义的 initrd。
find . | cpio --create --format='newc' | gzip > ../custom.gz
我使用以下命令通过 PXE 启动 Grub 进行了测试menuentry
。我发现我必须/custom.gz
第一的在 initrd 文件列表中。
menuentry "Focal Live Installer - automated" --id=install_focal_live_unattended {
echo "Loading Kernel..."
linux /vmlinuz "ds=nocloud;s=file://run/autoinstall/" ip=dhcp url=http://${pxe_default_server}/tftp/ubuntu-20.04.4-live-server-amd64.iso autoinstall cloud-config-url=/dev/null root=/dev/ram0 ---
echo "Loading Ram Disk..."
initrd /custom.gz /initrd
}
我使用 Ubuntu 20.04.4 安装程序对此进行了测试。