Ubuntu 22.04 自动安装方法

Ubuntu 22.04 自动安装方法

有人找到通过 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

过了一会儿问题就解决了。正确的启动命令是:

   `linux /casper/vmlinuz autoinstall quiet ---
    initrd /casper/initrd
    boot`

安装程序会寻找用户数据文件确实会自动生成。不太明白为什么提供“ds=”部分会完全破坏它。你只需要使用西达塔包含至少两个公共文件的标签用户数据元数据. 内容用户文件与我们在 Ubuntu 20.04 中使用的不同,一些错误已经消失,这很好。截至今天(2022 年 5 月 26 日),Ubuntu自动安装docs 就足够了,因此云初始化doc。
感谢 Andrew Lowther 提出的好观点。

答案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 答案

相关内容