使用 virt-install 挂载多个 cdrom 驱动器/映像

使用 virt-install 挂载多个 cdrom 驱动器/映像

我想从 Windows XP 创建 Windows XP 客户机升级我有一个 CD,以及我手头上的几个完整版本之一。但是,当我到达安装程序提示我插入完整版本 CD 的阶段时,安装程​​序找不到它(更新:我检查过这适用于正常安装),即:

安装程序无法读取您插入的 CD,或者该 CD 不是有效的 Windows CD。

有没有解决办法,以便我可以安装这两张 CD,或者在安装过程中安装一张新 CD?

我尝试了挂载 .iso 文件和指定磁盘的各种组合,例如:

$sudo virt-install --accelerate --connect qemu:///system -n xpsp1 -r 2048 
--disk ./vm/winxp_sp1.iso,device=cdrom  --disk ./vm/windows.qcow2,size=12 
--vnc --noautoconsole --os-type windows --os-variant winxp --vcpus 2 -c /dev/cdrom 
--check-cpu

如果我尝试指定多个 cdrom 驱动器,我会收到一个错误:

virt-install --accelerate --connect qemu:///system -n xpsp1 -r 2048 
--disk ./vm/winxp_sp1.iso,device=cdrom --disk /dev/cdrom,device=cdrom 
--disk ./vm/windows.qcow2,size=12 --vnc --noautoconsole --os-type windows 
--os-variant winxp --vcpus 2 --check-cpu

Starting install...
ERROR    IDE CDROM must use 'hdc', but target in use.

答案1

virt-install 似乎本身不支持多个 CD ROM。幸运的是,有一个相当直接的方法可以让它支持多个 CD ROM:

  1. 使用 virt-install 创建带有第一张 CD-ROM 的虚拟机,在本例中名为xpsp1。在后台,libvirt 会创建一个 XML 配置文件。现在关闭机器 ( virsh destroy xpsp1);您只对 XML 文件感兴趣。

  2. 打开 XML 文件,该文件位于/etc/libvirt/qemu/(例如/etc/libvirt/qemu/xpsp1.xml)。可能。

  3. 搜索字符串cdrom。这将引导您找到具有以下值的块:

    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <source file='/path/to/vm/winxp_sp1.iso'/>
      <target dev='hdc' bus='ide'/>
      <readonly/>
      <address type='drive' controller='0' bus='1' target='0' unit='0'/>
    </disk>
    
  4. 复制粘贴此块并更改第二张 CD-ROM 的设置。也就是说,您需要更改<source file=...>(其他文件的路径)、<target dev=...>(例如hdd)和<address unit=...(例如 1)

  5. 重新启动机器(virsh create /etc/libvirt/qemu/xpsp1.xml)并且两张 CD 应该可以被识别。

答案2

因为您不能使用 --cdrom 两次,所以您可以--disk ...,device=cdrom,bus=ide改用 you。

这个对我有用:

virt-install \
--virt-type=kvm \
--name=win10 \
--ram=4096 \
--cpu=host \
--vcpus=2 \
--os-type=windows \
--os-variant=win10 \
--disk /var/lib/libvirt/boot/win10.iso,device=cdrom,bus=ide \
--disk /var/lib/libvirt/boot/virtio-win.iso,device=cdrom,bus=ide \
--disk /var/lib/libvirt/images/win10.qcow2,size=40,bus=virtio,format=qcow2 \
--network=bridge=br0,model=virtio \
--graphics vnc

相关内容