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

Dan*_*ane 4 windows-xp linux-kvm ubuntu-10.04

我想从我拥有的 windows xp upgrade cd创建一个 windows xp 来宾,以及我周围的几个完整版本之一。但是,当我到达安装程序中提示我插入完整版 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
Run Code Online (Sandbox Code Playgroud)

如果我尝试指定多个 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.
Run Code Online (Sandbox Code Playgroud)

Edw*_*ang 8

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

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

  2. 打开位于/etc/libvirt/qemu/(例如/etc/libvirt/qemu/xpsp1.xml)中的 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>
    
    Run Code Online (Sandbox Code Playgroud)
  4. 复制粘贴此块并更改第二张 CD-ROM 的设置。即,您将需要更改<source file=...>(其他文件的路径)、<target dev=...>(to,例如,hdd)和<address unit=...(to,例如,1)

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

  • 除了创建和销毁 VM,您还可以使用 `virt-install` 的 `--print-xml` 选项来获取它会生成的配置。 (2认同)

小智 5

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

这个对我有用:

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
Run Code Online (Sandbox Code Playgroud)