Jump to content

We use cookies to log you in, for ads and for analytics. OK


XEN howto

  • Please log in to reply
8 replies to this topic

#1 hijinks


    touch /dev/booty

  • Members
  • PipPipPip
  • 292 posts

Posted 07 February 2006 - 08:08 PM

Ok so XEN just rules.. I use it at work to test new OS builds and such. I can have a complete development enviroment under my current desktop. So here is a quick little howto on getting XEN up and running on centos 4.0 as the host OS and ttylinux as a guest OS. ttylinux is a very stripped down version of linux.. around 16 megs.. so its good to get it running

This will go into explaining how to install the binary version of XEN. If anyone is interested in the source howto I can do that too. If you do the source build.. you can custom build your kernel to meet your needs. Xen is a very active project so the latest xen kernel is

So first, i use a basic centos install with all the development libraries. Its no different really then a basic server install but with the development libraries installed. The xen install script will tell you if something is missing later on. I needed to use apt-get to install 1 package first

apt-get install bridge-utils

So lets download and extract the xen binary version

wget http://www.cl.cam.ac.uk/Research/SRG/netos/xen/downloads/xen-3.0.1-install-x86_32.tgz
tar zxfv xen-3.0.1-install-x86_32.tgz
cd xen-3.0.1-install

Now lets run the install script. This basically just copies over the binaries in install/ dir into /

sh ./install.sh

You should see something like this at the end

Checking to see whether prerequisite tools are installed...
Xen CHECK-INSTALL  Tue Feb 7 13:52:19 EST 2006
Checking check_brctl: OK
Checking check_hotplug: OK
Checking check_iproute: OK
Checking check_python: OK
Checking check_zlib_lib: OK
All done.

If one of those errors out you'll need to install that package to make it work. Just keep re-running the install.sh script

Now for centos and I'm sure other distro's You have to create a ram image to preload the console info into ram before loading the kernel. If this isn't here I got errors about not being able to load the console

mkinitrd /boot/initrd-

Now you want to edit your grub.conf.. in centos/fedora there is a symlink at /etc/grub.conf that points to the location of the grub config in /boot. So you want to add this line before the others

title XEN (2.6.12-zen)
		root (hd0,0)
		kernel /xen.gz dom0_mem=65536 noreboot 
		module /vmlinuz- root=/dev/hda3 ro
		module /initrd-

Below is my grub.conf file

title XEN (2.6.12-zen)
		root (hd0,0)
		kernel /xen.gz dom0_mem=65536 noreboot 
		module /vmlinuz- root=/dev/hda3 ro
		module /initrd-
title CentOS (2.6.9-22.0.1.EL)
		root (hd0,0)
		kernel /vmlinuz-2.6.9-22.0.1.EL ro root=LABEL=/ rhgb quiet
		initrd /initrd-2.6.9-22.0.1.EL.img
title CentOS 4.0 (2.6.9-5.0.3.EL)
		root (hd0,0)
		kernel /vmlinuz-2.6.9-5.0.3.EL ro root=LABEL=/ rhgb quiet
		initrd /initrd-2.6.9-5.0.3.EL.img

You can put the XEN one at the bottom.. you just want to change the default= line to default boot your XEN kernel. 0 is the first listing and 1 would be the 2nd and so on.

Now for fedora there is this thing called tls.. I am not gonna go into why we don't want that in XEN but just disable it. If this directory is present on your system

mv /lib/tls /lib/tls.disabled

now reboot and you should be booted up with your new XEN kernel. you can verifiy by running the uname -a command like below

[root@unused xen-3.0.1-install]# uname -a
Linux unused.ip.244.domain.com #1 Tue Jan 31 16:03:21 GMT 2006 i686 i686 i386 GNU/Linux

Ok great now xen is running. So lets start the xen service and make sure it will run on bootup

service xend start
chkconfig xend on

Now we want to make our first guest system. Like i said above I will be using ttylinux which already provides a xen image.. so lets so that to test it out.

So lets grab the image. I like to put the images in /opt/xen dir. So this part will think you are using that dir.. feel free to change it since some of these images you can make them as big as you want to meet the space needs of your guest system

mkdir /opt/xen
cd /opt/xen/
wget http://easynews.dl.sourceforge.net/sourceforge/xen/ttylinux-xen.bz2
bzip2 -d ttylinux-xen.bz2

Now we need to make the config file to load it all up

So this create a new file in /etc/xen/ttylinux and put the contents in like this

kernel = "/boot/vmlinuz-2.6-xenU"
memory = 64
name = "ttylinux"
vif = [ '' ]
ip = ""
disk = ['file:/opt/xen/ttylinux-xen,sda1,w']
root = "/dev/sda1 ro"

don't change the kernel = line
you can change the memory line to meet your needs.. just don't go over the memory allocated on your host
the name= line can be changed if you want to use mulitple guests of the same image
don't touch the vif= line
you'll eant to change the ip = line to meet your needs
the disk = line will change if you put the image in anywhere other then /opt/xen

Now leave sda1 alone.. my host machine is not using scsi drives.. its just emulation some scsi devices on the guest OS so this is OK. and leave root = the same

So now lets start it up and see if it works

xm create -c /etc/xen/ttyLinux

You should see a boot cycle and it will go pretty quickly. You should be brought to a command prompt now where you can login with the root/root password

Now you can login.. now for me I have to fill out nameserver info and also add the default route. For me it was like this.. feel free to use this dns server if you don't know yours off hand

echo "nameserver" > /etc/resolv.conf	 
route add default gw

Later I will explain how to add that into the ttylinux image.

Now with your nameserver info and default route added you can now ping hosts

root@tiny ~ # ping google.com												  
PING google.com ( 56 data bytes
64 bytes from icmp_seq=0 ttl=242 time=42.1 ms
64 bytes from icmp_seq=1 ttl=242 time=31.0 ms

Now you can detatch by using the following key combo ctrl+]

now you could view the following to connect to the tiny HTTP server running on your guest

That should show you


You have successfully installed ttylinux.

See the ttylinux homepage for updates.

For information on how to use the retawq web browser, visit its documentation page.

Now if you want to connect back into the running guest OS you would run the following command

xm console ttylinux

Hit enter a few times and the prompt should show right back up.. You can get a running list of your domains by running

xm list

You can destroy a dom by

xm destroy ttylinux

I will get into how to do more advanced builds later.. this is just a stater.. hope you like it.. be sure to join us on #linux-noob on efnet and tell Jy how much he rules

#2 hijinks


    touch /dev/booty

  • Members
  • PipPipPip
  • 292 posts

Posted 07 February 2006 - 08:50 PM

So if you want to edit the image to add in the default gateway and nameserver info you do this

mkdir /mnt/image
mount -o loop /opt/xen/ttylinux-xen /mnt/image/
cd /mnt/image/etc/

Now edit resolv.conf and add the following.. You can change the IPs to meet your needs or use these


Now edit the file network.conf

There is this line #GATEWAY="" remove the # in front and change the ip with your gateways IP info
Then look for NETWORKING="no" change the no to a yes

now lets umount it and if you destroy your dom and create it again.. the nameserver and default gateway should be all setup

cd ~/
umount /mnt/image

#3 anyweb



  • Admin
  • PipPipPipPipPipPipPipPip
  • 3,692 posts

Posted 07 February 2006 - 09:05 PM

nice post Jy !

will this work in Fedora by any chance ?

i do windows too

#4 hijinks


    touch /dev/booty

  • Members
  • PipPipPip
  • 292 posts

Posted 08 February 2006 - 03:33 PM

yep it will work good in fedora.. but I believe core4 has xen kernel rpms

#5 dubkat



  • Members
  • Pip
  • 34 posts

Posted 08 February 2006 - 06:44 PM

great how to, i tried to install from source myself because i have a 64bit arch. i havnt tried it out yet though. before i continue though, can you use Windows XP as a guest OS, and if so, could you do a how-to on that for those of us who only want windows for those few essential programs that can only work (smoothly) on windows?


#6 hijinks


    touch /dev/booty

  • Members
  • PipPipPip
  • 292 posts

Posted 09 February 2006 - 03:38 PM

no you can't use windows as a guest OS.. from what I know about windows and the gpl you can put gpl code into the windows kernel.. right now there are only some linux images

here is the 64bit version


Here is a quick little howto on how to get a slackware image running. Jailtime.org has a few user contributed images you can run

So lets grab the slackware image

You can grab it at http://jailtime.org/download:slackware:v10.2
That also tells you everything about what is installed and special instructions about the image. The first thing you notice is the image is only around 100megs. That is compressed.. now when you extract it the image file will actually be 1gig. This is due to having all the empty space being 0's so the compression can easily handle that and really shrink it down good

So now lets put the image in /opt/xen like up before

tar zcfv slackware.10-2.20050917.img.tgz

That has these files in them

slackware.10-2.img  slackware.10-2.xen.cfg  slackware.swap

The image file is the 1gig image file.
the .swap file is what is used for the guest OS's swap partition
and the .cfg file should go into /etc/xen

mv slackware.10-2.xen.cfg /etc/xen

now lets edit the /etc/xen/slackware.10-2.xen.cfg to meet our needs. Mine looks like this

kernel = "/boot/vmlinuz-2.6-xenU"
memory = 128
name = "slackware.10-2"
nics = 1
ip = ""
gateway = ""
netmask = ""
disk = ['file:/opt/xen/slackware.10-2.img,sda1,w','file:/opt/xen/slackware.swap,sda2,w']
root = "/dev/sda1 ro"

Now as you notice I pass in the ip/netmask and gateway into the guest. You can remove them and just do ip = dchp and it will grab a IP from your dhcp server if you have one running

Now lets run it

xm create -c /etc/xen/slackware.10-2.xen.cfg

Now you should be brought to a prompt.. yay slackware guest OS up and running

#7 attojung



  • Members
  • Pip
  • 1 posts

Posted 25 November 2006 - 06:43 PM

That's very nice tutorial. I am going to setup my testbed by using xen as well. But I still have some questions about this

1. How can I find image of Fedora or any other linux distributions ?
2. incase I have to create 10 guests, do i need to have 10 image files? is it possible to use just 1 image for 10 guests? if yes, how about the configuration in each guest system?
3. How to assign IP address to other interfaces of guest?
Let's say, in the configuration file i use "nic=3" , but in the "IP" filed it's for eth0. How about eth1 and eth2.
4. Is it possible to connect each guest together? For example, i create 3 guests and use guest1 as a router to connect guest2 and guest3 together and create routing policy and so on.

That's all it make me confuse right now... ^___^


#8 bigstone



  • Members
  • Pip
  • 1 posts

Posted 26 April 2007 - 06:22 AM

Very nice post. I followed it and tried to create domain 1 to run ttylinux, but failed. See the attached file for the output.

I am running it on Inspiron 4100 laptop, total memory=128M. Domain1 wasn't able to successfully start up.

My question is: is my ttylinux correct?
Why ttylinux wasn't able to start up?

Thank you!

Attached Files

#9 c4rdinal



  • Members
  • Pip
  • 3 posts

Posted 15 August 2007 - 04:32 AM


Thanks for the nice article. However, I had a problem on the portion of xm create area.

I downloaded a Fedora image at http://www.jailtime.org/ and mount it using your article. However, at the final stage I encountered this error, as follows:

[root@vmsrv xen-images]# xm create fedora.fc6.xen3.cfg
Using config file "./fedora.fc6.xen3.cfg".
Error: Device 2049 (vbd) could not be connected.
File /home/xen-images/fedora.fc6.img is loopback-mounted through /dev/loop0,
which is mounted in the privileged domain,
and so cannot be mounted by a guest.

I placed the image:

And my config:

kernel = "/boot/vmlinuz-2.6.20-2925.13.fc7xen"
memory = 512
name = "fedora.fc6"
vif = [ '' ]
dhcp = "dhcp"
disk = ['file:/home/xen-images/fedora.fc6.img,sda1,w', 'file:/home/xen-images/fedora.swap,sda2,w']
root = "/dev/sda1 ro"

How can I resolve the problem? Please help me. I'm stuck for almost 2 weeks already. Can't seem to find definite solutions everywhere.

Thank you so much.

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users