I have a KVM virtual machine that is managed via libvirsh. Now I want to use a different ISO image inside the VM.

How do I change the DVD in the virtual drive using virsh?

4 Answers 4



attach-disk guest01 /root/disc1.iso hdc --driver file --type cdrom
--mode readonly

Change CDROM:

attach-disk guest01 /root/disc2.iso hdc --driver file --type cdrom
--mode readonly

Remove CDROM:

 attach-disk guest01 " " hdc --driver file --type cdrom
 --mode readonly
  • Thanks, rkthr. I test this next week and come back here. +1 anyway :-)
    – DerMike
    Jun 10, 2011 at 8:24
  • 7
    Thanks for tip. For me it works but only if I remove '--driver file' from the command (version of virsh: 0.9.2). Dec 23, 2011 at 20:50
  • 2
    I had to add --config to the command. Probably due to the fact that the guest wasn't originally configured with a cdrom. This addressed the following: error: internal error: No device with bus 'ide' and target 'hdc'. cdrom and floppy device hotplug isn't supported by libvirt.
    – user59156
    Oct 19, 2015 at 15:59
  • 1
    virsh attach-disk virtual.host.name /tank/kvm/iso/ubuntu-16.04.1-server-amd64.iso hda --type cdrom --mode readonly
    – Xdg
    Aug 31, 2016 at 8:20
  • It seems that the domain must be started to attach a new source for the cdrom. Jan 31, 2017 at 12:00

In libvirt 0.9.12 and maybe earlier, a command change-media exists:

change-media <domain> <path> [<source>] [--eject] [--insert] [--update] [--current] [--live] [--config] [--force]

Change CD:

change-media guest01 hdb /pool/disc.iso

Eject CD:

change-media guest01 hdb --eject
  • This is the right command when using SATA controller for CD-ROM.
    – Xdg
    Oct 9, 2016 at 12:41
  • This worked for SATA CDROM: virsh change-media guest01 sdb /var/lib/libvirt/images/disc.iso
    – Alek
    Apr 25, 2021 at 5:00

I tried the attach-disk command and it didn't work for me. However, I found this doc on fedora which asks you to use the "update-device" command. This worked for me, and you can find it at Attaching and updating a device with virsh. Here are the steps:

  • Create an XML file:

    <target dev='hdc' bus='ide'/>
    <alias name='ide0-1-0'/>
    <address type='drive' controller='0' bus='1' target='0' unit='0'/>

Make sure you don't have the <source> tag in your definition

  • Update the device:

    virsh update-device <guest name> <XML file name>
  • That would remove the device, not change the CD as the OP asks. It's also badly copied from your link - it's malformed XML as it stands.
    – user84636
    Nov 22, 2014 at 12:07

First you have to export existing configuration:

virsh dumpxml guest_name > config.xml

Then you have to open file and copy cdrom section and add the line with iso image path like

<source file='some.iso'/>

So the result is something like

<disk type='file' device='cdrom'>
   <source file='some.iso'/>
   <driver name='qemu' type='raw'/>
   <target dev='hdb' bus='ide'/>
   <alias name='ide0-0-1'/>
   <address type='drive' controller='0' bus='0' target='0' unit='1'/>

and save it as cdrom.xml.

After that:

virsh update-device guest_name cdrom.xml

#Device updated successfully

Your Answer

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

Not the answer you're looking for? Browse other questions tagged or ask your own question.