From KVM
Revision as of 11:17, 24 May 2009 by Pierro78 (Talk | contribs) (initramfs)


Virtio block device is a para-virtualized device for kvm guest. It is different from normal emulated hard drive, because it is simply faster. This small how-to is about how to make a disk para-virtualized and boot from it.


  1. create a disk and install os to it by appending "-hda <your_disk_image>" to your virtual machine
  2. in your guest os, upgrade kernel to 2.6.25 which contains virtio_* drivers. or ubuntu 8.04 also has it.
  3. in guest os, change /boot/grub/ from "(hd0) /dev/sda" to "(hd0) /dev/vda"
  4. in guest os, change /boot/grub/menu.list from "root=/dev/sda1" to "root=/dev/vda1", if you are using UUID, then no need to do this step.
  5. enable para-virtualization by changing "-hda <your_disk_image" to "-drive file=<your_disk_image>,if=virtio,boot=on"

Error 18

you may experience this error while grub is booting. I solved it by making the /boot the first partition and make it 32MB.


I have problem to boot from qcow2 format image, it will hang while kernel booting. you may convert your disk image to raw format by "qemu-img convert -f qcow2 <your_disk_image> -O raw <a_new_location>".

Booting with lilo

You must add this to your lilo.conf:

disk=/dev/vda bios=0x80 max-partitions=7

and after your image clausule change:


where vda1 is your boot partition

updating the initramfs with the virtio driver

If you are using debian then you may want to update your initramfs with the virtio driver as explained in Using VirtIO NIC