我有一个虚拟设备(qcow2
图像),它需要虚拟机上的串行控制台。换句话说,我不需要安装任何东西。我只需要从该磁盘启动虚拟机qcow2
并通过串行接口访问虚拟设备。可以用 来做到这一点吗virt-install
?当我添加--extra-args="console=ttyS0,115200"
to时virt-install
,它要求我指定 a --location
。是否有解决方法可以使用 启动启用串行的虚拟机virt-install
,但不指定分发树安装源?
答案1
是的,这是可能的,尽管添加串行控制台需要多个步骤。
--extra-args
只能与 结合使用--location
。由于您正在使用本地qcow2
磁盘映像,--location
因此这实际上并不是您正在寻找的机制。
相反,您正在寻找--console
:
安慰:
--console
Connect a text console between the guest and host. Certain guest and
hypervisor combinations can automatically set up a getty in the guest, so an
out of the box text login can be provided (target_type=xen for xen paravirt
guests, and possibly target_type=virtio in the future).
实际上,添加如下(在现代 Linux 系统上):
--console pty,target_type=virtio
笔记:您可以在此处获得有关可用配置的更多选项:https://libvirt.org/formatdomain.html#elementsConsole
由于我已经准备好了基于 QCOW2 的设备,因此我能够按如下方式进行测试:
virt-install --name thing --memory 512 \
--console pty,target_type=virtio --disk appliance.qcow2 --boot hd
在幕后,这是对“域”(存储主机配置的 XML 文件)执行许多添加。例如:
<controller type='virtio-serial' index='0'>
<alias name='virtio-serial0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</controller>
<console type='pty' tty='/dev/pts/14'>
<source path='/dev/pts/14'/>
<target type='virtio' port='0'/>
<alias name='console0'/>
</console>
<channel type='spicevmc'>
<target type='virtio' name='com.redhat.spice.0' state='disconnected'/>
<alias name='channel0'/>
<address type='virtio-serial' controller='0' bus='0' port='1'/>
</channel>
如果这不起作用,您还可以通过编辑启动选项来实现此目的里面带有类似工具的设备guestfish
(关联)或通过指定内核、initrd 的位置,并使用 手动提供选项--boot
。就客鱼而言,甚至有一个食谱可以实现您所寻找的目标:guestfish-recipies:在虚拟机中编辑 grub 配置。
启动:
--boot
Optionally specify the post-install VM boot configuration. This option
allows specifying a boot device order, permanently booting off
kernel/initrd with option kernel arguments, and enabling a BIOS boot menu
(requires libvirt 0.8.3 or later)
--boot kernel=KERNEL,initrd=INITRD,kernel_args="console=/dev/ttyS0"
Have guest permanently boot off a local kernel/initrd pair, with the
specified kernel options.