OpenSSI Logo SourceForge Logo

 home page
 sourceforge page
 mailing lists
 feature list
 Bruce's corner
 related links
 1.2 stable
 1.9 development
 1.2 stable
 1.9 development
work items
 task list
 bug database
 feature requests
 process mgmt hooks
  hide sidebar
Installing OpenSSI Xen Cluster ( XXEN)
1) Follow the Xen installation procedure available at Since
in this howto we are explaining the Xen-OpenSSI integration using Debian 
distro you should follow the Debian installation instructions on the above 
manual which can be found at

2) Make sure the installation is successful by booting the unprivileged

3) Modify the unprivileged domain configuration file to specify constant 
mac address. The relevant entry will look like 
vif  = ['mac=AA:00:00:18:98:FB']

4) Make sure the unprivileged domain supports loop back device. You can verify
this using the mount command ( mount -o loop ) or losetup. If not enabled
you may need to rebuild the unprivileged kernel using the config option
CONFIG_BLK_DEV_LOOP=y. You can edit the default config file available with 
xen source (xen-2.0/linux-2.6.10-xen-sparse/arch/xen/configs/xenU_defconfig)

5) Configure OpenSSI Xen cluster 
	a)  Add the following entries to /etc/apt/sources.list in addition 
	to entries used for Debian installation.

	deb ./
	deb-src ./

	b) Add following entries to /etc/apt/preferences

	Package: *  
	Pin: origin
	Pin-Priority: 1001 

	c) Configure http proxy. In the bash shell , you can export 
	environment variable ``http_proxy'' by setting its value to 
	local proxy server.
	# Execute:

	# apt-get update 

	# apt-get dist-upgrade 

	As a part of the dist-upgrade, some of the utilities will be 
	downgraded since OpenSSI needs a modified version of those utilities.
	d) apt-get install openssi-xen
	This will configure OpenSSI on your Xen virtual domain 

 	e) Now you need to build a ramdisk which can be used to start the 
	cluster manager early during the boot

	edit  /etc/mkinitrd/mkinitrd.conf and enable OPENSSI_XEN
	set the MODULES entry in  /etc/mkinitrd/mkinitrd.conf to none

	mkinitrd -o /tmp/initrd

	f) ftp this initrd to domain 0 so that it can used to boot
	the unprivileged domains

6) Booting the OpenSSI Xen cluster
	You need to build a OpenSSI kernel patched with xen changes

	a) download  a pre built  OpenSSI xen kernel from

	or you can build from source by the following steps

cvs login
cvs -z3 co  -r OPENSSI-DEBIAN ci
cvs login
cvs -z3 co  -r OPENSSI-DEBIAN openssi

Now you need to get the base kernel against which the above checked out 
openssi changes are made. In our case it is the linux 2.6.10 kernel. You can download the same from 

Extract  linux-X-Y-Z.bz2 to linux directory so that we have a directory layout as below
kvaneesh@machineheads:~/myopensource/$ ls
ci  linux  linux-2.6.10.tar  openssi
kvaneesh@machineheads:~/myopensource/$ cd openssi/
kvaneesh@machineheads:~/myopensource/openssi$ make xenkern
kvaneesh@machineheads:~/myopensource/openssi$ cd ..
kvaneesh@machineheads:~/myopensource/$ ls
ci  linux  linux-2.6.10.tar  linux-ssi  openssi

This should give you  linux-ssi dir which is the linux kernel with ssi 

	b) Build the kernel.
         You can use the sample config file available at
	make ARCH=xen oldconfig 
	make ARCH=xen vmlinuz

	c) Now boot the Xen unprivileged domain using the above build vmlinuz kernel

7) Adding new nodes to the cluster
	a) Fix another mac address to the nodes to be added. We cannot let
	xen to work with random mac address.

	b) Now from  booted single node cluster run 
	ssi-addnode --xennode --hwaddr=<The mac address specified in the above step> 	
	c) rebuild the ramdisk using 
	mkinitrd -o /tmp/intrd.gz

	d) ftp the initrd image to the domain 0 so that it can be used to 
	boot the unprivileged domain

Sample Xen configuration files 
node3:/home/kvaneesh/xen/sarge/ssi# more sarge-node1-config 
kernel = "/home/kvaneesh/xen/sarge/ssi/vmlinuz"
ramdisk = "/home/kvaneesh/xen/sarge/ssi/initrd"
memory = 32
name = "sarge-node1"
nics = 1
vif  = ['mac=AA:00:00:18:98:FB']
ip = "node1's IP address"
netmask = "your network subnet mask"
gateway = "gateway IP address"
disk = ['file:/home/kvaneesh/xen/sarge/root-sarge-image.hda,hda1,w']
root = "/dev/hda1 ro"

node3:/home/kvaneesh/xen/sarge/ssi# more sarge-node2-config 
kernel = "/home/kvaneesh/xen/sarge/ssi/vmlinuz"
ramdisk = "/home/kvaneesh/xen/sarge/ssi/initrd"
memory = 32
name = "sarge-node2"
nics = 1
vif  = ['mac=AA:00:00:18:97:FB']
ip = "node 2 IP address"
netmask =" your network subnet mask"
gateway = "gateway IP address "
root = "/dev/hda1 ro"

This page last updated on Thu Dec 15 17:17:43 2005 GMT
privacy and legal statement