Penguin XEN: Vmxassist

Last update : Friday the 3rd of February 2012
maintained by: Guillaume Thouvenin

Table of Contents [Back to main menu]

  1. Intel's VT



Intel's VT

Full virtualization hardware support

The first step is to provide an assembler and a linker for real mode 80x86 instructions in order to build the BIOS code. They are provided by the dev86 package.

dev86 package

When I first compiled the dev86 package on the pentium D, I had the following error:
 [...skip...]

 make[3]: Entering directory `/home/guill/build/dev86-0.16.17/elksemu'
 cc -O   -c -o elks.o elks.c
 elks.c:18:22: sys/vm86.h: No such file or directory
 elks.c: In function `elks_init':
 elks.c:37: error: invalid use of undefined type `struct vm86_struct'
 elks.c:38: error: invalid use of undefined type `struct vm86_struct'
 elks.c:38: error: `CPU_286' undeclared (first use in this function)
 elks.c:38: error: (Each undeclared identifier is reported only once
 elks.c:38: error: for each function it appears in.)
 elks.c:42: error: invalid use of undefined type `struct vm86_struct'
 elks.c:42: error: invalid use of undefined type `struct vm86_struct'
 elks.c:42: error: invalid use of undefined type `struct vm86_struct'
 elks.c:42: error: invalid use of undefined type `struct vm86_struct'
 elks.c:42: error: invalid use of undefined type `struct vm86_struct'
 elks.c:42: error: invalid use of undefined type `struct vm86_struct'
 elks.c:42: error: invalid use of undefined type `struct vm86_struct'
 elks.c:42: error: invalid use of undefined type `struct vm86_struct'
 elks.c:42: error: invalid use of undefined type `struct vm86_struct'
 elks.c:42: error: invalid use of undefined type `struct vm86_struct'
 elks.c: In function `elks_take_interrupt':
 elks.c:64: error: invalid use of undefined type `struct vm86_struct'
 elks.c: In function `load_elks':
 elks.c:101: error: invalid use of undefined type `struct vm86_struct'
 elks.c:102: error: invalid use of undefined type `struct vm86_struct'
 elks.c:103: error: invalid use of undefined type `struct vm86_struct'
 elks.c:104: error: invalid use of undefined type `struct vm86_struct'
 elks.c:105: error: invalid use of undefined type `struct vm86_struct'
 elks.c:106: error: invalid use of undefined type `struct vm86_struct'
 elks.c:111: error: invalid use of undefined type `struct vm86_struct'
 elks.c:114: error: invalid use of undefined type `struct vm86_struct'
 elks.c: In function `vm86_mine':
 elks.c:133: warning: cast from pointer to integer of different size
 elks.c: In function `run_elks':
 elks.c:154: error: `VM86_SIGNAL' undeclared (first use in this function)
 elks.c:156: error: `VM86_UNKNOWN' undeclared (first use in this
 function) elks.c:159: error: `VM86_INTx' undeclared (first use in this
 function) elks.c:162: error: `VM86_STI' undeclared (first use in this
 function) elks.c: In function `build_stack':
 elks.c:197: error: invalid use of undefined type `struct vm86_struct'
 elks.c:205: error: invalid use of undefined type `struct vm86_struct'
 elks.c:205: error: invalid use of undefined type `struct vm86_struct'
 elks.c:206: error: invalid use of undefined type `struct vm86_struct'
 elks.c:212: error: invalid use of undefined type `struct vm86_struct'
 elks.c:220: error: invalid use of undefined type `struct vm86_struct'
 elks.c: At top level:
 elks.c:26: error: storage size of `elks_cpu' isn't known
 make[3]: *** [elks.o] Error 1
 make[3]: Leaving directory `/home/guill/build/dev86-0.16.17/elksemu'
 make[2]: *** [elksemu] Error 2
 make[2]: Leaving directory `/home/guill/build/dev86-0.16.17'
 make[1]: *** [all] Error 2
 make[1]: Leaving directory `/home/guill/build/dev86-0.16.17'
 make: *** [all] Error 2
Here is a fix provided by Robert de Bath:
" No problem, that just 'elksemu' a program to allow you to run 16 bit executables 
on 32 bit linux. The attached patch file disables it for 64 bit linux, the rest 
of dev86 should run fine. The only small issues happen for the C compiler which 
will do some calculations in 64bit when it should be doing them with only 32bits."

The patch can be downloaded here

Now we can build domain firmeware support tools.

Compile Xen

To compile Xen we choose to seperate the dom0 and domU kernels. To achieve this we just use the following command:

make KERNELS="linux-2.6-xen0 linux-2.6-xenU"

Valid XHTML 1.0 Strict