The Perfect Xen 3.1.0 Setup For Debian Etch (i386) - Page 6

On this page

  1. )

5.4 Creating Virtual Machines (domU)

(In this chapter I'm assuming that you've compiled a domU kernel to use with the virtual machines (/boot/vmlinuz-2.6.18-xenU). If you haven't, please replace all references to /boot/vmlinuz-2.6.18-xenU with /boot/vmlinuz-2.6.18-xen!)

We will use xen-tools to create virtual machines. xen-tools make it very easy to create virtual machines - please read this tutorial to learn more: xen-tools are available as a Debian Etch package, so we install that one right now:

apt-get install xen-tools

Next we edit /etc/xen-tools/xen-tools.conf. This file contains the default values that are used by the xen-create-image script unless you specify other values on the command line. I changed the following values and left the rest untouched:

vi /etc/xen-tools/xen-tools.conf

gateway   =
netmask   =

passwd = 1

kernel = /boot/vmlinuz-2.6.18-xenU
#initrd = /boot/initrd.img-2.6.16-2-xen-686

mirror =

Please make sure that you comment out the initrd line! At least on my installations I've never needed a ramdisk for virtual machines.

The passwd = 1 line makes that you can specify a root password when you create a new guest domain. In the kernel line you must specify the domU kernel that you want to use for your guest domains. In the mirror line specify a Debian mirror close to you.

Make sure you specify a gateway and netmask. If you don't, and you don't specify a gateway and netmask on the command line when using xen-create-image, your guest domains won't have networking even if you specified an IP address!

Now let's create our first guest domain,, with the IP address

xen-create-image --size=2Gb --swap=256Mb --ide \
--ip= --netmask= --gateway= --force \
--dir=/vserver --memory=32Mb --arch=i386 --kernel=/boot/vmlinuz-2.6.18-xenU \
--debootstrap --dist=etch --mirror= --passwd

A lot of switches are unnecessary here because we specified the same details in /etc/xen-tools/xen-tools.conf but it shows that you can specify the desired settings either on the command line or in /etc/xen-tools/xen-tools.conf. Please make sure that you specify --ide, otherwise your virtual machine might not boot!

(To learn more about the available options, take a look at the xen-create-image man page:

man xen-create-image


The xen-create-image command will now create the virtual machine for us. This can take a few minutes. The output should be similar to this one:

server1:/usr/src/xen-3.1.0-src# xen-create-image --size=2Gb --swap=256Mb --ide \
>   --ip= --netmask=  --gateway= --force \
>   --dir=/vserver --memory=32Mb --arch=i386 --kernel=/boot/vmlinuz-2.6.18-xenU \
>   --debootstrap --dist=etch --mirror= --passwd

General Infomation
Hostname       :
Distribution   :  etch
Fileystem Type :  ext3

Size Information
Image size     :  2Gb
Swap size      :  256Mb
Image type     :  sparse
Memory size    :  32Mb
Kernel path    :  /boot/vmlinuz-2.6.18-xenU

Networking Information
IP Address 1   :
Netmask        :
Gateway        :

Loopback module not loaded and you're using loopback images
Run the following to load the module:

modprobe loop loop_max=255

Creating swap image: /vserver/domains/

Creating disk image: /vserver/domains/

Creating ext3 filesystem on /vserver/domains/

Installing your system with debootstrap mirror

Running hooks

No role script specified.  Skipping

Creating Xen configuration file
Setting up root password
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
All done

Logfile produced at:

(You can ignore this warning:

Loopback module not loaded and you're using loopback images
Run the following to load the module:

modprobe loop loop_max=255

The virtual machine will work nevertheless.)

There should now be a configuration file - /etc/xen/ Take a look at it to become familiar with virtual machines configuration files:

cat /etc/xen/

#  Configuration file for the Xen instance, created on
# Tue May 29 01:21:54 2007.

#  Kernel + memory size
kernel  = '/boot/vmlinuz-2.6.18-xenU'

memory  = '32'

#  Disk device(s).
root    = '/dev/hda1 ro'

disk    = [ 'file:/vserver/domains/,hda1,w', 'file:/vserver/domains/,hda2,w' ]

#  Hostname
name    = ''

#  Networking
vif  = [ 'ip=' ]

#  Behaviour
on_poweroff = 'destroy'
on_reboot   = 'restart'
on_crash    = 'restart'

To start the virtual machine, run

xm create /etc/xen/


xm console

to log in on that virtual machine (type CTRL+] if you are at the console, or CTRL+5 if you're using PuTTY to go back to dom0), or use an SSH client to connect to it (

To get a list of running virtual machines, type

xm list

The output should look like this:

server1:~# xm list
Name                                      ID   Mem VCPUs      State   Time(s)
Domain-0                                   0   301     1     r-----   1191.0                           1    32     1     -b----     50.6

To shut down, do this:

xm shutdown

If you want to start automatically at the next boot of the system, then do this:

ln -s /etc/xen/ /etc/xen/auto

Here are the most important Xen commands:

xm create -c /path/to/config - Start a virtual machine.
xm shutdown <name> - Stop a virtual machine.
xm destroy <name> - Stop a virtual machine immediately without shutting it down. It's as if you switch off the power button.
xm list - List all running systems.
xm console <name> - Log in on a virtual machine.
xm help - List of all commands.

Let's create a second vm, with the IP address

xen-create-image --size=2Gb --swap=256Mb --ide \
--ip= --netmask= --gateway= --force \
--dir=/vserver --memory=32Mb --arch=i386 --kernel=/boot/vmlinuz-2.6.18-xenU \
--debootstrap --dist=etch --mirror= --passwd

Afterwards, you can start like this:

xm create /etc/xen/

and shut it down like this:

xm shutdown

A list of all virtual machines that were created with the xen-create-image command is available under


server1:~# xen-list-images
Memory: 32

Memory: 32

To learn more about what you can do with xen-tools, take a look at this tutorial:

You can check which kernel you are using by running

uname -a

You can do this on both dom0 and domU. For example, on my virtual machine for which I have compiled a special domU kernel, the output looks like this:

xen1:~# uname -a
Linux 2.6.18-xenU #2 SMP Tue May 29 00:53:13 CEST 2007 i686 GNU/Linux

Falko Timme

About Falko Timme

Falko Timme is an experienced Linux administrator and founder of Timme Hosting, a leading nginx business hosting company in Germany. He is one of the most active authors on HowtoForge since 2005 and one of the core developers of ISPConfig since 2000. He has also contributed to the O'Reilly book "Linux System Administration".

Share this page:

Suggested articles

0 Comment(s)

Add comment


By: Falko Timme