Celeb Glow
updates | March 16, 2026

Using virt-install to mount multiple cdrom drives/images

I would like to create a windows xp guest from the windows xp upgrade cd I have, along with one of a few full versions I have around. However, when I reach the stage in the installer where I am prompted to insert a full version cd, the installer can't find it (update: I checked that this works for a normal install), i.e.:

Setup could not read the CD you inserted, or the CD is not a valid Windows CD..

Is there a work-around for this so I can mount both cd's, or mount a new cd during the install process?

I've tried various combinations of mounting .iso files and specifying disks, such as:

$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

If I try to specify multiple cdrom drives, I receive an error:

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.
4

2 Answers

virt-install does not appear to support multiple CD ROMs natively. Fortunately, there is a fairly direct way to get it to do so:

  1. Use virt-install to create the virtual machine with the first CD-ROM, in your case named xpsp1. Behind the scenes, libvirt will create an XML configuration file. Turn off the machine now (virsh destroy xpsp1); you were only interested in the XML file.

  2. Open the XML file, which is located in /etc/libvirt/qemu/ (e.g. /etc/libvirt/qemu/xpsp1.xml). Probably.

  3. Search for the string cdrom. This should lead you to a chunk with these values:

    <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. Copy paste this block and change the settings for your second CD-ROM. Namely, you will need to change <source file=...> (path of your other file), <target dev=...> (to, e.g., hdd) and <address unit=... (to, e.g., 1)

  5. Restart the machine (virsh create /etc/libvirt/qemu/xpsp1.xml) and the two CDs should be recognized.

2

Because you can't use --cdrom twice, you can you --disk ...,device=cdrom,bus=ide instead.

It works for me:

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
2

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy