摘自Linux Virtualization with Lguest,Author:John Quigley

Lguest Launcher 

Launcher is an ELF userspace app that launches and monitors guests。

它执行以下任务: 

1. maps guest kernel imagine into host’s memory

2.opens /dev/lguest and writes config info about guest

3.hypervisor uses this to initialize and launch guest

4.open procfile used for ongoing control, console I/O,DMA-like I/O via shmem 

注意: Physical memory in the Guest is the Host’s virtual memory.  

Lguest Hypervisor  

The hypervisor is simply a loadablekernel module... cool! 

  •     Being able to insert a module and start new guest
  •     provides "low commitment" path to virtualization
  •     Provides the /dev/lguest interface, whereby userspace
  •      launcher controls and communicates with guest

First write tells us memory size, pagetable, entry point,kernel offset 

A read will run guest until pending signal (-EINTR), or guest does DMA out to launcher  

  • The Lguest hypervisor is unique in several ways.
  • Host domain is simply a normal kernel in ring-0
  • Hypervisor is loaded into top of kernel memory  

Hypervisor contains only core facilities:  

1domain switching code

2 interrupt handlers

3 few low-level object that need to be virtualized

4 array of structs to maintain info for each guest domain