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-cpuIf 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:
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.Open the XML file, which is located in
/etc/libvirt/qemu/(e.g./etc/libvirt/qemu/xpsp1.xml). Probably.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>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)Restart the machine (
virsh create /etc/libvirt/qemu/xpsp1.xml) and the two CDs should be recognized.
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