Differences between revisions 51 and 52
Revision 51 as of 2008-07-29 22:00:03
Size: 7430
Comment: correct upstream and doc links
Revision 52 as of 2008-08-10 14:32:56
Size: 8794
Editor: ?IanCampbell
Comment: Update Lenny domU section to mention the Lenny Debian Installer images for Xen.
Deletions are marked like this. Additions are marked like this.
Line 3: Line 3:
Line 4: Line 5:
Line 9: Line 9:
In addition to Linux, members of Xen's user community have contributed or are working on ports to other operating systems such as NetBSD (Christian Limpach), FreeBSD (Kip Macy) and Plan 9 (Ron Minnich).  In addition to Linux, members of Xen's user community have contributed or are working on ports to other operating systems such as NetBSD (Christian Limpach), FreeBSD (Kip Macy) and Plan 9 (Ron Minnich).
Line 14: Line 14:

Upstream documentation can be found in the `xen-docs-3.0` package (in /usr/share/doc/xen-docs-3.0/user.pdf.gz). It's also available [http://www.cl.cam.ac.uk/research/srg/netos/xen/readmes/user/user.html online].
Upstream documentation can be found in the {{{xen-docs-3.0}}} package (in /usr/share/doc/xen-docs-3.0/user.pdf.gz). It's also available [http://www.cl.cam.ac.uk/research/srg/netos/xen/readmes/user/user.html online].
Line 18: Line 17:

* Choose and install a `xen-linux-system-KERNELVERSION` package. This installs the kernel, a hypervisor and matching utilities.
 * On i386, install `libc6-xen`. This means that you don't have to delete `/lib/tls` or move it out of the way, as suggested by most Xen guides.
 * Choose and install a {{{xen-linux-system-KERNELVERSION}}} package. This installs the kernel, a hypervisor and matching utilities.
 * On i386, install {{{libc6-xen}}}. This means that you don't have to delete {{{/lib/tls}}} or move it out of the way, as suggested by most Xen guides.
Line 23: Line 21:
Line 42: Line 39:
The instructions for etch also apply for lenny: xen-tools can create a lenny domU. The Lenny Debian Installer fully supports installation of 32 bit guests under Xen using the netboot/xen variant. Currently images are available only from the[javascript:void(0);/*1218377534358*/ daily builds]which contain a kernel, installer ramdisk and an example Xen configuration file. To install edit the configuration file to suite your tastes and start the guest with the "install=true" option and, for the time being, manually direct it to the daily builds:
Line 44: Line 41:
The default lenny kernel is the newer paravirt_ops version (currently 2.6.25), which does not function as a dom0. It will also not support PCI passthrough in a domU. For PCI passthrough, you have to run the 2.6.18 etch kernel as both dom0 and domU. {{{
xm create -c xm-debian.cfg install=true \
  install-installer=http://people.debian.org/~joeyh/d-i/images/daily/}}}
See the comments in the configuration file for additional installation options.

Once the guest is installed simply boot it using:

{{{
xm create -c xm-debian.cfg
}}}
Since Lenny only includes 32 bit (PAE) kernel support which means there is no installer support for 64 bit guests. You can continue to use the Etch kernels or obtain a newer upstream kernel which supports 64 bit operation (2.6.27+).

In addition to installing via Debian Installer xen-tools can also create a Lenny domU as described in the Etch section above.

The default Lenny kernel is the newer paravirt_ops version (currently 2.6.25), which does not function as a dom0. It will also not support PCI passthrough in a domU. For PCI passthrough, you have to run the 2.6.18 etch kernel as both dom0 and domU.

In Lenny the distinction between the Xen and non-Xen flavours of the kernel is no longer present and either the -686-bigmem or -xen-686 flavour kernel images can be used. The Debian Installer will install the -686-bigmem flavour.
Line 47: Line 60:
Line 50: Line 62:
`libc6-xen` is not present. [http://saintaardvarkthecarpeted.com/blog/?p=182 Allegedly], creating the file `/etc/ld.so.nohwcap` will cause libraries in `/lib/tls` to be ignored, thus making it unnecessary to move the directory out of the way. ''Can anyone confirm this?'' {{{libc6-xen}}} is not present. [http://saintaardvarkthecarpeted.com/blog/?p=182 Allegedly], creating the file {{{/etc/ld.so.nohwcap}}} will cause libraries in {{{/lib/tls}}} to be ignored, thus making it unnecessary to move the directory out of the way. ''Can anyone confirm this?''
Line 52: Line 64:
 {i} This is a Debian-specific feature. Other guest operating systems will still require `/lib/tls` to be removed/renamed.
 . {i} This is a Debian-specific feature. Other guest operating systems will still require {{{/lib/tls}}} to be removed/renamed.
Line 55: Line 66:
The page ["DebianInstaller/Xen"] contains instructions on how to install Xen Dom0 and DomU with ["DebianInstaller"]. The page ["DebianInstaller/Xen"] contains instructions on how to install Xen Dom0 and Etch DomU with DebianInstaller.See above for details of installing Lenny using Debian Installer.
Line 58: Line 69:
Line 64: Line 74:
Line 66: Line 75:
 {i} Note: if Xen is crashing and reboot automatically, you may want to use {{{noreboot}}} xen option, to prevent it from rebooting automatically. Grub example :  . {i} Note: if Xen is crashing and reboot automatically, you may want to use {{{noreboot}}} xen option, to prevent it from rebooting automatically. Grub example :
Line 74: Line 83:
== error : CDROM boot failure ==
You get the error :
Line 75: Line 86:

== error : CDROM boot failure ==
You get the error :
 {{{
 . {{{
Line 84: Line 92:
Line 88: Line 95:
 {{{
 .
{{{
Line 92: Line 100:
Line 95: Line 102:
Line 99: Line 105:
Now you can use /dev/loop9 in xen configuration file (/etc/xen/foobar.cfg) :
Line 100: Line 107:
Now you can use /dev/loop9 in xen configuration file (/etc/xen/foobar.cfg) :
 {{{
 . {{{
Line 112: Line 118:
 * (quite basic and low-level) Upstream Documentation is on package `xen-docs-3.0` package (in /usr/share/doc/xen-docs-3.0/user.pdf.gz). It's also available [http://xen.org/xen/documentation.html online].  * (quite basic and low-level) Upstream Documentation is on package {{{xen-docs-3.0}}} package (in /usr/share/doc/xen-docs-3.0/user.pdf.gz). It's also available [http://xen.org/xen/documentation.html online].
Line 116: Line 122:
  * [http://wiki.xensource.com/xenwiki/XenNetworkingExamples Xen Networking Examples] -    * [http://wiki.xensource.com/xenwiki/XenNetworkingExamples Xen Networking Examples] -

?TableOfContents(2)

Xen Overview

Modern computers are sufficiently powerful to use virtualization to present the illusion of many smaller virtual machines (VMs), each running a separate operating system instance. Successful partitioning of a machine to support the concurrent execution of multiple operating systems poses several challenges. Firstly, virtual machines must be isolated from one another: it is not acceptable for the execution of one to adversely affect the performance of another. This is particularly true when virtual machines are owned by mutually untrusting users. Secondly, it is necessary to support a variety of different operating systems to accommodate the heterogeneity of popular applications. Thirdly, the performance overhead introduced by virtualization should be small.

Xen is a virtual machine monitor for x86 that supports execution of multiple guest operating systems with unprecedented levels of performance and resource isolation. Xen is Open Source software, released under the terms of the GNU General Public License. We have a fully functional ports of Linux 2.6 running over Xen, and regularly use it for running demanding applications like MySQL, Apache and PostgreSQL. Any Linux distribution (RedHat, SuSE, Debian, Mandrake) should run unmodified over the ported OS.

In addition to Linux, members of Xen's user community have contributed or are working on ports to other operating systems such as NetBSD (Christian Limpach), FreeBSD (Kip Macy) and Plan 9 (Ron Minnich).

It is also possible to run some other, not ported, operating systems if your CPU has hardware virtualization support (VT or Pacifica).

Installation on etch

Upstream documentation can be found in the xen-docs-3.0 package (in /usr/share/doc/xen-docs-3.0/user.pdf.gz). It's also available [http://www.cl.cam.ac.uk/research/srg/netos/xen/readmes/user/user.html online].

Dom0 (host)

  • Choose and install a xen-linux-system-KERNELVERSION package. This installs the kernel, a hypervisor and matching utilities.

  • On i386, install libc6-xen. This means that you don't have to delete /lib/tls or move it out of the way, as suggested by most Xen guides.

  • Use Grub as bootloader (since Lilo and Xen don't play well with one another)
  • You probably want to configure /etc/xen/xend-config.sxp (especially the network-script scheme).

The two xen-linux-system packages of interest are xen-linux-system-2.6.18-6-xen-686 and xen-linux-system-2.6.18-6-xen-amd64. Install the correct one for your architecture.

If you need to apply some modifications to the kernel with the xen patch, then one way to do it is described ?DebianKernelCustomCompilation.

DomU (guests)

The easiest way to create a domU is to use xen-tools (and, if this doesn't do what you need, Steve Kemp is keen and fast in implementing useful suggestions).

If you do not wish to use xen-tools, follow [http://www.debian.org/releases/stable/i386/apds03.html this alternative guide].

Xen boots domUs using kernels stored on dom0, so you only need to install the corresponding linux-modules package in the domU. Alternatively, you can use pygrub to boot kernels on the domU filesystem (is there documentation for this?).

On i386, make sure you install libc6-xen.

Installation on lenny

Dom0 (host)

Critically, there are no dom0 kernels included in lenny (see this thread for more details, for instance : http://lists.debian.org/debian-devel/2008/07/msg00305.html). You can either use etch as dom0 and run lenny domUs, or use the xen-hypervisor packages included in lenny (xen-hypervisor-3.2-1-i386 and xen-hypervisor-3.2-1-amd64) along with the etch [http://packages.debian.org/etch/linux-image-xen-686 linux-image package].

DomU (guest)

The Lenny Debian Installer fully supports installation of 32 bit guests under Xen using the netboot/xen variant. Currently images are available only from the[javascript:void(0);/*1218377534358*/ daily builds]which contain a kernel, installer ramdisk and an example Xen configuration file. To install edit the configuration file to suite your tastes and start the guest with the "install=true" option and, for the time being, manually direct it to the daily builds:

xm create -c xm-debian.cfg install=true \
  install-installer=http://people.debian.org/~joeyh/d-i/images/daily/

See the comments in the configuration file for additional installation options.

Once the guest is installed simply boot it using:

xm create -c xm-debian.cfg

Since Lenny only includes 32 bit (PAE) kernel support which means there is no installer support for 64 bit guests. You can continue to use the Etch kernels or obtain a newer upstream kernel which supports 64 bit operation (2.6.27+).

In addition to installing via Debian Installer xen-tools can also create a Lenny domU as described in the Etch section above.

The default Lenny kernel is the newer paravirt_ops version (currently 2.6.25), which does not function as a dom0. It will also not support PCI passthrough in a domU. For PCI passthrough, you have to run the 2.6.18 etch kernel as both dom0 and domU.

In Lenny the distinction between the Xen and non-Xen flavours of the kernel is no longer present and either the -686-bigmem or -xen-686 flavour kernel images can be used. The Debian Installer will install the -686-bigmem flavour.

Installation on sarge (oldstable)

Most of the above packages seem to be present on http://backports.org/, so use them!

libc6-xen is not present. [http://saintaardvarkthecarpeted.com/blog/?p=182 Allegedly], creating the file /etc/ld.so.nohwcap will cause libraries in /lib/tls to be ignored, thus making it unnecessary to move the directory out of the way. Can anyone confirm this?

  • {i} This is a Debian-specific feature. Other guest operating systems will still require /lib/tls to be removed/renamed.

Using Debian-Installer

The page ["DebianInstaller/Xen"] contains instructions on how to install Xen Dom0 and Etch DomU with DebianInstaller.See above for details of installing Lenny using Debian Installer.

Package maintenance

Debian's Xen packages are maintained by the [http://alioth.debian.org/projects/pkg-xen/ pkg-xen] project. ([http://lists.alioth.debian.org/mailman/listinfo/pkg-xen-devel developpers' mailing list])

The [http://qa.debian.org/developer.php?login=pkg-xen-devel@lists.alioth.debian.org Debian Developer's Package Overview] page lists source packages that are maintained by the team.

Common Errors

dom0 automatic reboots

  • {i} Note: if Xen is crashing and reboot automatically, you may want to use noreboot xen option, to prevent it from rebooting automatically. Grub example :

    title           Xen 3.1-1-i386 / Debian GNU/Linux, kernel 2.6.18-5-xen-686
    root            (hd0,0)
    kernel          /xen-3.1-1-i386.gz noreboot
    module          /vmlinuz-2.6.18-5-xen-686 root=/dev/foo ro console=tty0
    module          /initrd.img-2.6.18-5-xen-686

error : CDROM boot failure

You get the error :

  • CDROM boot failure code 0002
    or CDROM boot failure code 0003
    Boot from cd-Rom failed
    Fatal: Could not read the boot disk.

That's because Xen can't boot from a cdrom iso image at the moment. i.e you can't have tap:aio:/path/to/mycd.iso,hdc:cdrom,r or file:/path/to/mycd.iso,hdc:cdrom,r.

Workaround: use losetup to create a loopback device for the cdrom ISO image, then use it in Xen configuration file. for example :

  • #First, check which loop device is free
    $losetup -f
    /dev/loop9
    #Then create a loopback device
    $losetup -f /path/to/mycd.iso
    losetup /dev/loop9
    /dev/loop9: [fe04]:3096598 (/path/to/mycd.iso)

Now you can use /dev/loop9 in xen configuration file (/etc/xen/foobar.cfg) :

  • ...
    disk = [ 'phy:/dev/vg1/xpsp3,ioemu:hda,w', 'phy:/dev/loop/0,ioemu:hdc:cdrom,r' ]
    ...

then boot/install the guest OS.

note: yo should switch back to the tap:aio:/path/to/mycd.iso,hdc:cdrom,r syntax after installation, since loop back have to be recreated after you reboot the host system.

Resources