The setup for this tool is very simple. The steps given by the developer just works fine. Make sure that you have Ext2 / Ext3 / Ext4 file systems are built as part of your kernel. This will be handy if you are only giving a kernel image. Like any other virtualization solution kvm tool also require a disk image to get started with. You can create your own disk file or try to get a working one from qemu wiki.
[root@hs22 kernels]# linux-kvm/tools/kvm/kvm --image=./linux-0.2.img --kernel=linux-kvm/arch/x86/boot/bzImage
Initializing cgroup subsys cpu
Linux version 2.6.37 (root@hs22) (gcc version 4.4.5 20110214 (Red Hat 4.4.5-6) (GCC) ) #2 SMP Sat Apr 9 01:05:10 IST 2011
Command line: notsc nolapic noacpi pci=conf1 console=ttyS0 root=/dev/vda rw
BIOS-provided physical RAM map:
BIOS-e820: 0000000000000000 - 000000000009fc00 (usable)
BIOS-e820: 000000000009fc00 - 00000000000a0000 (reserved)
BIOS-e820: 00000000000f0000 - 00000000000fffff (reserved)
BIOS-e820: 0000000000100000 - 0000000004000000 (usable)
NX (Execute Disable) protection: active
DMI not present or invalid.
[..............................................................................................]
Freeing unused kernel memory: 1476k freed
Write protecting the kernel read-only data: 10240k
Freeing unused kernel memory: 768k freed
Freeing unused kernel memory: 1720k freed
EXT4-fs (vda): re-mounted. Opts:
mount: mount point /dev/pts does not exist
Linux version 2.6.37 (root@hs22) (gcc version 4.4.5 20110214 (Red Hat 4.4.5-6) (GCC) ) #2 SMP Sat Apr 9 01:05:10 IST 2011
QEMU Linux test distribution (based on Redhat 9)
Type 'exit' to halt the system
SIOCSIFADDR: No such device
eth0: unknown interface: No such device
SIOCADDRT: No such process
sh-2.05b#
Wow! There you go. We have a minimal shell.
sh-2.05b# ls
20thfull.mp2 nbench
You can also have a initrd built and give that as a parameter.
[root@hs22 kernels]# linux-kvm/tools/kvm/kvm --image=./linux-0.2.img --kernel=linux-kvm/arch/x86/boot/bzImage --initrd=./initrd.img
[root@hs22 kernels]# linux-kvm/tools/kvm/kvm
usage: linux-kvm/tools/kvm/kvm [--single-step] [--ioport-debug] [--kvm-dev=<device>] [--mem=<size-in-MiB>] [--params=<kernel-params>] [--initrd=<initrd>] [--kernel=]<kernel-image> [--image=]<disk-image>
As I said earlier its a simple tool with very minimal features. The first thing that might want to get added would be SMP support. I am yet to go through the code. Will be posting the design in another post.