有人找到通过 grub 使用自定义 iso 文件提供自动安装数据的正确方法吗?显然,Ubuntu 22.04 没有像 Ubuntu 20.04 那样提供通过 casper 定义启动命令的好方法(一种交互式菜单 [启动后,F6 等等..])。
初始点:
- 从 Ubuntu 网站下载 Ubuntu 22.04 iso 文件。
- 带有用户数据和元数据的自定义 iso 文件
自定义 iso 包含:
- 安装程序的带有“答案”的用户数据
- 元数据是一个空文件
Iso 文件通过以下命令创建:
mkisofs -V cidata -lJR -o custom.iso user-data meta-data
因此标记“cidata”(如 cloud-init 文档所述,这是必需的)存在。现在,一旦创建并启动虚拟机,安装程序就无法找到应答文件,而是从安装程序指南开始。但是,可以在以下路径中找到用户数据:
/var/lib/cloud/instances/nocloud/user-data.txt
该文件包含我创建的原始数据。
现在最重要的部分是 GRUB,它看起来像:
`linux /casper/vmlinuz autoinstall quiet \"ds=nocloud;s=/\" ---
initrd /casper/initrd
boot`
这个例子应该没问题,但事实并非如此。即使我提供了文件的完整路径,也是不行的。我也尝试通过 http 服务器提供应答文件,但结果是一样的。
这个例子:
`linux /casper/vmlinuz autoinstall quiet ---
initrd /casper/initrd
boot`
应该也够了,但还是不行。有人有什么想法吗?
编辑 2022.5.26 至少在 http 服务器上找到了一些可用的部分。因此,可用的启动命令是:
`linux /casper/vmlinuz --- autoinstall quiet 'ds=nocloud-net;s=http://192.168.100.100/'
initrd /casper/initrd
boot`
现在有关其他 iso 文件的更多信息。我认为它没有正确安装。因为使用此命令:
`linux /casper/vmlinuz --- autoinstall quiet
initrd /casper/initrd
boot`
我在这个路径上看到一个 user-data.txt 文件:
/var/lib/cloud/instances/nocloud/user-data.txt
没问题,但是有些日志显示:
cat /var/log/cloud-init-output.log Cloud-init v. 22.1-14-g2e17a0d6-0ubuntu1~22.04.5 finished at Thu, 26 May 2022 10:52:10 +0000. Datasource DataSourceNoCloudNet [seed=cmdline,/var/lib/cloud/seed/nocloud,/dev/sr1][dsmode=net]. Up 63.17 seconds
cat /var/log/cloud-init.log 2022-05-26 10:51:24,065 - subp.py[DEBUG]: Running command ['mount', '-o', 'ro', '-t', 'auto', '/dev/sr1', '/run/cloud-init/tmp/tmpb4d62dyf'] with allowed return codes [0] (shell=False, capture=True) 2022-05-26 10:51:35,825 - handlers.py[DEBUG]: finish: init-network/consume-user-data: SUCCESS: reading and applying user-data
显然那里发生了一些事情。尽管如此,使用上面列出的启动命令不文件正在从附加 iso 文件下载。这意味着该文件:/var/lib/cloud/instances/nocloud/用户数据.txt是空的。如果我手动挂载 /dev/sr1 /mnt我可以看到我的用户数据。
也许可以用 GRUB cli 挂载 iso 文件并将 cloud-init 指向该文件?当然可以。。。会继续黑客攻击。。
答案1
答案2
也许尝试
menuentry "Try or Install Ubuntu Server" {
set gfxpayload=keep
linux /casper/vmlinuz autoinstall quiet ds='nocloud;s=/cdrom/' ---
initrd /casper/initrd
}
当用户数据和元数据位于 iso 的根目录中时。
答案3
我尝试在 vSphere 上使用 packer。您可以查看教程(下面的链接),其中他使用 Packercd_files
创建了一个包含云配置文件的临时 ISO 文件并将其作为附加 CD 驱动器安装。注意:在教程中,您将找到 ubuntu 20.04,但如果您将 iso 路径更改为 ubuntu 22.04 实例,它就可以正常工作。
https://tekanaid.com/posts/hashicorp-packer-build-ubuntu20-04-vmware
答案4
拇指驱动器根目录的布局如下所示:
。磁盘 引导 卡斯帕 地区 电喷 安装 无云 水池 自动运行图标 自动运行文件 启动目录 md5sum.txt
我使用原始 ISO Ubuntu 22.04 制作了我的拇指驱动器,并使用 Rufus 写入。拇指驱动器用于无人值守安装服务器。我之前在 Ubuntu 20.04 上用过它,在此之前我使用过 kickseed 和 di 答案