mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
This fetches GRUB1 sources, applies the {graphical, print function,
save default, and ext3_256byte} patches from debian, and applies a
patch to make it work on x86_64 and port it to Mini-OS. By using
libxc, PV-GRUB can then "kexec" the loaded kernel from inside the
domain itself, hence permitting to avoid the security-concerned
pygrub.
Signed-off-by: Samuel Thibault <samuel.thibault@eu.citrix.com>
137 lines
3.2 KiB
Plaintext
137 lines
3.2 KiB
Plaintext
To compile
|
|
==========
|
|
|
|
Just run make -j 4, that will download / patch / compile
|
|
Then make install to install the result.
|
|
|
|
Also, run make and make install in $XEN_ROOT/tools/fs-back
|
|
|
|
|
|
|
|
IOEMU stubdom
|
|
=============
|
|
|
|
This boosts HVM performance by putting ioemu in its own lightweight domain.
|
|
|
|
General Configuration
|
|
=====================
|
|
|
|
In your HVM config "hvmconfig",
|
|
|
|
- use /usr/lib/xen/bin/stubdom-dm as dm script:
|
|
|
|
device_model = '/usr/lib/xen/bin/stubdom-dm'
|
|
|
|
- comment the disk statement:
|
|
|
|
#disk = [ 'file:/tmp/install.iso,hdc:cdrom,r', 'phy:/dev/sda6,hda,w', 'file:/tmp/test,hdb,r' ]
|
|
|
|
- disable anything related to dom0, like pty serial assignments
|
|
|
|
|
|
Create /etc/xen/stubdom-hvmconfig (where "hvmconfig" is the name of your HVM
|
|
guest) with
|
|
|
|
kernel = "/usr/lib/xen/boot/ioemu-stubdom.gz"
|
|
vif = [ '', 'ip=10.0.1.1,mac=aa:00:00:12:23:34']
|
|
disk = [ 'file:/tmp/install.iso,hdc:cdrom,r', 'phy:/dev/sda6,hda,w', 'file:/tmp/test,hdb,r' ]
|
|
|
|
where
|
|
- the first vif ('') is reserved for VNC (see below)
|
|
- 'ip=10.0.1.1,mac= etc...' is the same net configuration as in the hvmconfig
|
|
script,
|
|
- and disk = is the same block configuration as in the hvmconfig script.
|
|
|
|
Display Configuration
|
|
=====================
|
|
|
|
There are three posibilities
|
|
|
|
* Using SDL
|
|
|
|
- In hvmconfig, disable vnc and sdl:
|
|
|
|
vnc = 0
|
|
sdl = 0
|
|
|
|
- In stubdom-hvmconfig, set an sdl vfb:
|
|
|
|
vfb = [ 'type=sdl' ]
|
|
|
|
* Using a VNC server in the stub domain
|
|
|
|
- In hvmconfig, set vnclisten to "172.30.206.1" for instance. Do not use a
|
|
host name as Mini-OS does not have a name resolver. Do not use 127.0.0.1 since
|
|
then you will not be able to connect to it.
|
|
|
|
vnc = 1
|
|
vnclisten = "172.30.206.1"
|
|
|
|
- In stubdom-hvmconfig, fill the reserved vif with the same IP, for instance:
|
|
|
|
vif = [ 'ip=172.30.206.1', 'ip=10.0.1.1,mac=aa:00:00:12:23:34']
|
|
|
|
* Using a VNC server in dom0
|
|
|
|
- In hvmconfig, disable vnc and sdl:
|
|
|
|
vnc = 0
|
|
sdl = 0
|
|
|
|
- In stubdom-hvmconfig, set a vnc vfb:
|
|
|
|
vfb = [ 'type=vnc' ]
|
|
|
|
and any other parameter as wished.
|
|
|
|
To run
|
|
======
|
|
|
|
mkdir -p /exports/usr/share/qemu
|
|
ln -s /usr/share/qemu/keymaps /exports/usr/share/qemu
|
|
mkdir -p /exports/var/lib
|
|
ln -s /var/lib/xen /exports/var/lib
|
|
/usr/sbin/fs-backend &
|
|
|
|
xm create hvmconfig
|
|
|
|
|
|
|
|
PV-GRUB
|
|
=======
|
|
|
|
This replaces pygrub to boot domU images safely: it runs the regular grub
|
|
inside the created domain itself and uses regular domU facilities to read the
|
|
disk / fetch files from network etc. ; it eventually loads the PV kernel and
|
|
chain-boots it.
|
|
|
|
Configuration
|
|
=============
|
|
|
|
In your PV config,
|
|
|
|
- use /usr/lib/xen/boot/pv-grub.gz as kernel:
|
|
|
|
kernel = "/usr/lib/xen/boot/pv-grub.gz"
|
|
|
|
- set the path to menu.lst, as seen from the domU, in extra:
|
|
|
|
extra = "(hd0,0)/boot/grub/menu.lst"
|
|
|
|
you can also use a tftp path (dhcp will be automatically performed):
|
|
|
|
extra = "(nd)/somepath/menu.lst"
|
|
|
|
or you can set it in option 150 of your dhcp server and leave extra empty
|
|
|
|
Limitations
|
|
===========
|
|
|
|
- You can not boot a 64bit kernel with a 32bit-compiled PV-GRUB and vice-versa.
|
|
To cross-compile a 32bit PV-GRUB,
|
|
|
|
export XEN_TARGET_ARCH=x86_32
|
|
|
|
- bootsplash is supported, but the ioemu backend does not yet support restart
|
|
for use by the booted kernel.
|