在 Live CD 环境中使用 KVM/Qemu 运行无人值守脚本

在 Live CD 环境中使用 KVM/Qemu 运行无人值守脚本

我正在尝试为这些建立一个自动化测试环境Linux 安装程序脚本使用 KVM/Qemu 来宾。目前它仅提供从 Debian Live 环境引导 Debian 系统的端到端支持,但我正在努力添加对 Archlinux、Fedora、吉克斯最终结果是,人们可以引导到任何受支持的 LiveCD 环境,并且可以在自定义根文件系统/环境(LU​​KS、LVM、MDADM、ZFS、UEFI/BIOS 等的组合)上引导任何受支持的发行版。

我正在使用 KVM/Qemu 在实时环境中手动测试脚本。我更愿意坚持使用 KVM/Qemu,但如果有人向我展示其他 VM 解决方案可以更好地完成工作,我就愿意!

对我来说最大的问题是自动化测试,因为目前测试它的唯一方法是:

  1. 启动 Live CD 环境
  2. 克隆 git 存储库(或从主机目录或 NFS 挂载)
  3. 运行init-instroot脚本来配置根文件系统
  4. 运行引导脚本来引导新系统(目前仅支持 Debian)。

我希望自动化此过程,以便能够针对init-instroot脚本选项的所有不同可能配置自动运行它(例如,使用 LVM 或文件进行交换、使用 ZFS 作为根、UEFI 或 BIOS 等),然后在如此配置的根文件系统上引导不同的发行版。最后,重新启动新引导的系统,并以某种方式验证该死的工作原理!

到目前为止,我已经查看了以下帖子,但它们要么与我的情况不符,要么无法让它们工作:

我在使用脚本的 QEMU/KVM 访客自动化帖子中看到了很多希望expect。正如我的脚本是写在GNU 吉勒,它本身就具有很大的期待图书馆,这将是自然的发展方向。不幸的是,我什至无法通过终端运行 LiveCD 来宾环境。显然,我希望获得登录的实时提示,此时我的期望脚本可以开始与来宾环境交互。

我正在尝试virt-install使用下面的命令运行 , 但我无法通过终端与任何内容交互,并且似乎没有任何内容真正启动。这是输出:

Running text console command: virsh --connect qemu:///system console test
Connected to domain 'test'
Escape character is ^] (Ctrl + ])

我尝试从“标准”(仅限命令行)Dabian Live ISO 启动,但使用--cdrom参数不支持--extra-args设置内核参数:

virt-install --name test --ram 4096 --vcpu 2 \
--disk path=disks/test.img,bus=virtio,size=4 \
--graphics none \
--cdrom /home/dadinn/Downloads/isos/debian-live-10.3.0-amd64-standard.iso

--cdromusing--location允许使用 -- 来使用内核参数,而不是使用参数extra-args,但似乎仍然没有发生任何事情:

virt-install --name test --ram 4096 --vcpu 2 \
--disk path=disks/test.img,bus=virtio,size=4 \
--graphics none \
--location http://ftp.us.debian.org/debian/dists/buster/main/installer-amd64/ \
--extra-args console=tty0,console=ttyS0,115200n8,serial

也许是因为 url 没有指向仅限命令行的图像。另外,我不确定extra-argswithconsole=tty0,console=ttyS0参数如何真正起作用 [1,2],刚刚在上面的例子中看到了它们。

答案1

我认为您需要选择 VGA/USB 控制台 (tty0) 或串行控制台 (ttyS0)。我不相信你可以同时使用两者。

另外,IIRC,大多数小酒馆都有一个可以传递的无图形安装程序参数。

例如,Debian 的此页面可能有用: https://www.debian.org/releases/stable/amd64/apbs02.en.html#preseed-bootparms

并包含一个 fb= 变量,用于设置传递给安装程序的帧缓冲区。

相关内容