I am trying to change the boot device for a VM. I go to the VM's XML file in /etc/libvirt/qemu and set <boot dev='cdrom' />. Still, it attempts to boot from the harddrive instead of the cdrom.

I know I have an ISO image loaded on the CD-ROM virtual device.

Am I not doing this correctly? I tried shutting down the VM completely and starting it back up to no avail. Perhaps I need to reload the settings somehow?


By request of @Selivanov:

$ libvirtd --version
libvirtd (libvirt) 0.8.7

And XML file:

<domain type='kvm'>
    <type arch='x86_64' machine='rhel6.1.0'>hvm</type>
    <boot dev='cdrom'/>
  <clock offset='utc'/>
    <disk type='file' device='disk'>
      <driver name='qemu' type='raw' cache='none'/>
      <source file='/var/lib/libvirt/images/nimmy.img'/>
      <target dev='hda' bus='ide'/>
      <address type='drive' controller='0' bus='0' unit='0'/>
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <source file='/home/nimmy/CentOS-6.0-x86_64-netinstall.iso'/>
      <target dev='hdc' bus='ide'/>
      <address type='drive' controller='0' bus='1' unit='0'/>
    <controller type='ide' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
    <interface type='network'>
      <mac address='(SNIP)'/>
      <source network='default'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    <serial type='pty'>
      <target port='0'/>
    <console type='pty'>
      <target type='serial' port='0'/>
    <input type='mouse' bus='ps2'/>
    <graphics type='vnc' port='-1' autoport='yes'/>
    <sound model='ac97'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
      <model type='cirrus' vram='9216' heads='1'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    <memballoon model='virtio'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>

2 Answers 2


If libvirt doesn't reload VM settings on start/stop, virsh edit command may help. And please write entire XML file and libvirt version

Hmm... everything seems OK. Try adding

<boot dev='hd'/>
<boot dev='cdrom'/>
<bootmenu enable='yes'/>

to <os> section and look if cdrom appears in boot menu. Also try removing all <boot> records from <os> and adding

<boot order='1'/>

to <disk> section

  • Apparently, I had to close virt-manager for the settings to reload. Is this the usual case? Is there a way to reload the settings? Also, I'm confused as to why the settings in virt-manager were not taking. Sep 22, 2011 at 0:24
  • 1
    You may reload libvirt-bin service, if it's init script in your distributive supports this, for example in ubuntu: sudo reload libvirt-bin. If you edited xml file with external editor, this is normal. If you used virsh edit or changed settings from virt-manager, this is bug. Sep 22, 2011 at 7:19
  • If you edit the XML file you need to reload the VM to effect the updates. /etc/init.d/libvirt-bin reload
    – user361660
    Jun 21, 2016 at 13:42
  • virsh edit just yields error: command 'edit' requires <domain> option. Aug 31, 2020 at 6:14
  • 1
    @PhilippLudwig, just add the name of your VM after the virsh edit command. The <domain> is the VM itself. For example, if your VM is named winserver2016, the command would be virsh edit winserver2016.
    – Tornado726
    Dec 12, 2021 at 17:13

If the VM is down, look for a stored saved image under /var/lib/libvirt/qemu/save - it will keep the old parameters alive, despite changes made via virsh edit. I deleted such image in a similar case where it kept looking for an non-existent network interface (and failing to boot due to this).

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.