blob: 189d97d7ed3f95e1262786d7be9121a8a32d05ea [file] [log] [blame]
Native Linux KVM tool
=====================
The goal of this tool is to provide a clean, from-scratch, lightweight
KVM host tool implementation that can boot Linux guest images (just a
hobby, won't be big and professional like QEMU) with no BIOS
dependencies and with only the minimal amount of legacy device
emulation.
Note that this is a development prototype for the time being: there's no
networking support and no graphics support, amongst other missing
essentials.
It's great as a learning tool if you want to get your feet wet in
virtualization land: it's only 5 KLOC of clean C code that can already
boot a guest Linux image.
Right now it can boot a Linux image and provide you output via a serial
console, over the host terminal, i.e. you can use it to boot a guest
Linux image in a terminal or over ssh and log into the guest without
much guest or host side setup work needed.
1. To try out the tool, clone the git repository:
git clone git://github.com/penberg/linux-kvm.git
or alternatively, if you already have a kernel source tree:
git checkout -b kvm/tool
git pull git://github.com/penberg/linux-kvm.git
2. Compile the tool:
cd tools/kvm && make
3. Download a raw userspace image:
wget http://wiki.qemu.org/download/linux-0.2.img.bz2 && bunzip2
linux-0.2.img.bz2
4. Build a kernel with CONFIG_VIRTIO_BLK=y and
CONFIG_SERIAL_8250_CONSOLE=y configuration options. Note: also make sure
you have CONFIG_EXT2_FS or CONFIG_EXT4_FS if you use the above image.
5. And finally, launch the hypervisor:
./kvm --image=linux-0.2.img --kernel=../../arch/x86/boot/bzImage
The tool has been written by Pekka Enberg, Cyrill Gorcunov, and Asias
He. Special thanks to Avi Kivity for his help on KVM internals and Ingo
Molnar for all-around support and encouragement!
See the following thread for original discussion for motivation of this
project:
http://thread.gmane.org/gmane.linux.kernel/962051/focus=962620
Build dependencies
=====================
For deb based systems:
32-bit:
sudo apt-get install build-essential
64-bit:
sudo apt-get install build-essential libc6-dev-i386
For rpm based systems:
32-bit:
yum install glibc-devel
64-bit:
yum install glibc-devel glibc-devel.i386