      __
 (___()'`;  Rusty's Remarkably Unreliable Guide to Lguest
 /,    /`      - or, A Young Coder's Illustrated Hypervisor
 \\"--\\    http://lguest.ozlabs.org

Lguest is designed to be a minimal 32-bit x86 hypervisor for the Linux kernel,
for Linux developers and users to experiment with virtualization with the
minimum of complexity.  Nonetheless, it should have sufficient features to
make it useful for specific tasks, and, of course, you are encouraged to fork
and enhance it (see drivers/lguest/README).

Features:

- Kernel module which runs in a normal kernel.
- Simple I/O model for communication.
- Simple program to create new guests.
- Logo contains cute puppies: http://lguest.ozlabs.org

Developer features:

- Fun to hack on.
- No ABI: being tied to a specific kernel anyway, you can change anything.
- Many opportunities for improvement or feature implementation.

Running Lguest:

- The easiest way to run lguest is to use same kernel as guest and host.
  You can configure them differently, but usually it's easiest not to.

  You will need to configure your kernel with the following options:

  "General setup":
     "Prompt for development and/or incomplete code/drivers" = Y
        (CONFIG_EXPERIMENTAL=y)

  "Processor type and features":
     "Paravirtualized guest support" = Y
        "Lguest guest support" = Y
     "High Memory Support" = off/4GB
     "Alignment value to which kernel should be aligned" = 0x100000
        (CONFIG_PARAVIRT=y, CONFIG_LGUEST_GUEST=y, CONFIG_HIGHMEM64G=n and
         CONFIG_PHYSICAL_ALIGN=0x100000)

  "Device Drivers":
     "Block devices"
        "Virtio block driver (EXPERIMENTAL)" = M/Y
     "Network device support"
        "Universal TUN/TAP device driver support" = M/Y
        "Virtio network driver (EXPERIMENTAL)" = M/Y
           (CONFIG_VIRTIO_BLK=m, CONFIG_VIRTIO_NET=m and CONFIG_TUN=m)

  "Virtualization"
     "Linux hypervisor example code" = M/Y
        (CONFIG_LGUEST=m)

- A tool called "lguest" is available in this directory: type "make"
  to build it.  If you didn't build your kernel in-tree, use "make
  O=<builddir>".

- Create or find a root disk image.  There are several useful ones
  around, such as the xm-test tiny root image at
	  http://xm-test.xensource.com/ramdisks/initrd-1.1-i386.img

  For more serious work, I usually use a distribution ISO image and
  install it under qemu, then make multiple copies:

	  dd if=/dev/zero of=rootfile bs=1M count=2048
	  qemu -cdrom image.iso -hda rootfile -net user -net nic -boot d

  Make sure that you install a getty on /dev/hvc0 if you want to log in on the
  console!

- "modprobe lg" if you built it as a module.

- Run an lguest as root:

      Documentation/virtual/lguest/lguest 64 vmlinux --tunnet=192.168.19.1 \
        --block=rootfile root=/dev/vda

   Explanation:
    64: the amount of memory to use, in MB.

    vmlinux: the kernel image found in the top of your build directory.  You
       can also use a standard bzImage.

    --tunnet=192.168.19.1: configures a "tap" device for networking with this
       IP address.

    --block=rootfile: a file or block device which becomes /dev/vda
       inside the guest.

    root=/dev/vda: this (and anything else on the command line) are
       kernel boot parameters.

- Configuring networking.  I usually have the host masquerade, using
  "iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE" and "echo 1 >
  /proc/sys/net/ipv4/ip_forward".  In this example, I would configure
  eth0 inside the guest at 192.168.19.2.

  Another method is to bridge the tap device to an external interface
  using --tunnet=bridge:<bridgename>, and perhaps run dhcp on the guest
  to obtain an IP address.  The bridge needs to be configured first:
  this option simply adds the tap interface to it.

  A simple example on my system:

    ifconfig eth0 0.0.0.0
    brctl addbr lg0
    ifconfig lg0 up
    brctl addif lg0 eth0
    dhclient lg0

  Then use --tunnet=bridge:lg0 when launching the guest.

  See:
  
    http://www.linuxfoundation.org/collaborate/workgroups/networking/bridge
    
  for general information on how to get bridging to work.

- Random number generation. Using the --rng option will provide a
  /dev/hwrng in the guest that will read from the host's /dev/random.
  Use this option in conjunction with rng-tools (see ../hw_random.txt)
  to provide entropy to the guest kernel's /dev/random.

There is a helpful mailing list at http://ozlabs.org/mailman/listinfo/lguest

Good luck!
Rusty Russell rusty@rustcorp.com.au.
