view stubdom/README @ 21044:fd6946ad6816

[PV-GRUB DOC] Add details to PV-GRUB documentation

Add a couple of documentation details about PV-GRUB support

- the menu.lst content can be passed as a ramdisk.
- virtual partitions are not supported.

Signed-off-by: Samuel Thibault <>
author Keir Fraser <>
date Fri Mar 05 14:30:45 2010 +0000 (2010-03-05)
parents e7c6a258be0d
line source
1 IOEMU stubdom
2 =============
4 This boosts HVM performance by putting ioemu in its own lightweight domain.
6 General Configuration
7 =====================
9 Due to a race between the creation of the IOEMU stubdomain itself and allocation
10 of video memory for the HVM domain, you need to avoid the need for ballooning,
11 by using the hypervisor dom0_mem= option for instance.
14 There is a sample configuration set in xmexample.hvm-stubdom
16 In your HVM config "hvmconfig" use stubdom-dm as dm script:
18 device_model = 'stubdom-dm'
21 To run
22 ======
24 mkdir -p /exports/usr/share/xen/qemu
25 ln -s /usr/share/xen/qemu/keymaps /exports/usr/share/xen/qemu
26 mkdir -p /exports/var/lib
27 ln -s /var/lib/xen /exports/var/lib
28 /usr/sbin/fs-backend &
30 xm create hvmconfig
35 =======
37 This replaces pygrub to boot domU images safely: it runs the regular grub
38 inside the created domain itself and uses regular domU facilities to read the
39 disk / fetch files from network etc. ; it eventually loads the PV kernel and
40 chain-boots it.
42 Configuration
43 =============
45 In your PV config,
47 - use pv-grub.gz as kernel:
49 kernel = "pv-grub.gz"
51 - set the path to menu.lst, as seen from the domU, in extra:
53 extra = "(hd0,0)/boot/grub/menu.lst"
55 or you can provide the content of a menu.lst stored in dom0 by passing it as a
56 ramdisk:
58 ramdisk = "/boot/domU-1-menu.lst"
60 or you can also use a tftp path (dhcp will be automatically performed):
62 extra = "(nd)/somepath/menu.lst"
64 or you can set it in option 150 of your dhcp server and leave extra and ramdisk
65 empty (dhcp will be automatically performed)
67 Limitations
68 ===========
70 - You can not boot a 64bit kernel with a 32bit-compiled PV-GRUB and vice-versa.
71 To cross-compile a 32bit PV-GRUB,
73 export XEN_TARGET_ARCH=x86_32
75 - bootsplash is supported, but the ioemu backend does not yet support restart
76 for use by the booted kernel.
78 - PV-GRUB doesn't support virtualized partitions. For instance:
80 disk = [ 'phy:hda7,hda7,w' ]
82 will be seen by PV-GRUB as (hd0), not (hd0,6), since GRUB will not see any
83 partition table.
86 Your own stubdom
87 ================
89 By running
91 cd stubdom/
92 make c-stubdom
94 or
96 cd stubdom/
97 make caml-stubdom
99 you can compile examples of C or caml stub domain kernels. You can use these
100 and the relevant Makefile rules as basis to build your own stub domain kernel.
101 Available libraries are libc, libxc, libxs, zlib and libpci.