Archived/XCI Building Instructions

From Xen
(Redirected from XCI Building Instructions)
Jump to: navigation, search

On a clean new debian lenny i386 installation...

The following instructions covers the case when building on a brand new debian lenny x86 (32 bit). For other distributions, the package manager and the name of package needed need to be tweaked.

1. Installing build environment (compiler, DVCS, ..) through the package manager


apt-get install git-core libdbus-1-3 gcc bcc flex bison bzip2 iasl bin86 autoconf automake1.9 libtool make libncurses5-dev asciidoc cpp g++ libglib2.0-dev texinfo pciutils-dev gawk gettext libdbus-glib-1-dev

2. Locale configuring. either manually overwriting everything:


echo "en_US.UTF-8 UTF-8" > /etc/locale.gen
locale-gen

or using debian tools and making sure en_US.UTF-8 is selected.


dpkg-reconfigure locales

3. Installing build environment (others) that are not available through the package manager


cd /usr/src
wget http://www.kernel.org/pub/linux/kernel/people/jsipek/guilt/guilt-0.32.1.tar.gz
tar zxvf guilt-0.32.1.tar.gz
cd /usr/src/guilt-0.32.1
make && make install

4. Cloning the build repository


cd /usr/src
git clone http://xenbits.xen.org/git-http/xenclient/build.git /usr/src/build

... or on any linux distribution through a chroot

You need debootstrap to create a chroot for the debian lenny x86.

if you're running on ubuntu or debian:


apt-get install debootstrap

if you're running on other distribution, you need to have debootstrap one way or another. following is one way to do that:


wget http://ftp.de.debian.org/debian/pool/main/d/debootstrap/debootstrap_1.0.15_all.deb
ar x debootstrap_1.0.15_all.deb
tar xvzf data.tar.gz -C /

then you can run the following script (as root) with the destination wanted for the chroot as 1st argument:


#!/bin/sh
DEBOOTSTRAP=/usr/sbin/debootstrap
CHROOT=chroot
PKGS="git-core libdbus-1-3 gcc bcc flex bison bzip2 iasl bin86 autoconf automake1.9 libtool make libncurses5-dev asciidoc cpp g++ libglib2.0-dev texinfo pciutils-dev gawk wget gettext libdbus-glib-1-dev"
if [ $# -lt 1 ]; then
        echo "usage: $0 <destination chroot> [debian mirror]"
        exit 1
fi
DST=$1
MIRROR=$2
if [ $# -lt 2 ]; then
        USE_MIRROR=0
else
        USE_MIRROR=1
fi
if [ -e "${DST}" ]; then
       echo "destination already exists"
       exit 2
fi
mkdir -p ${DST}
if [ "${USE_MIRROR}" -eq 1 ]; then
       ${DEBOOTSTRAP} --arch=i386 lenny ${DST} ${MIRROR}
else
       ${DEBOOTSTRAP} --arch=i386 lenny ${DST} ${MIRROR}
fi
linux32 ${CHROOT} ${DST} apt-get update
linux32 ${CHROOT} ${DST} apt-get install -y --force-yes ${PKGS}
linux32 ${CHROOT} ${DST} bash -c "cd /usr/src; \
        wget http://www.kernel.org/pub/linux/kernel/people/jsipek/guilt/guilt-0.32.1.tar.gz; \
        tar zxvf guilt-0.32.1.tar.gz; \
        cd /usr/src/guilt-0.32.1; \
        make && make install"
linux32 ${CHROOT} ${DST} bash -c "echo \"en_US.UTF-8 UTF-8\" > /etc/locale.gen; locale-gen"
linux32 ${CHROOT} ${DST} bash -c "cd /usr/src; git clone http://xenbits.xen.org/git-http/xenclient/build.git"

You can enter the building chroot with


linux32 chroot <destination/used/>

Building

If you have followed the previous methods, you should have the build repository available in /usr/src/build otherwise adjust the following instructions. change directory into it with:


cd /usr/src/build

Then the following steps need to be completed:

1. Preconfiguring the build


cp configs/xenclient_config ./.config

2. Configuring the build

Run the following command and press return if you're asked for new options.


make oldconfig

3. Starting the build


make

4. If something goes wrong

There are several common problems that can occur:

  • Compiling dbus-glib fails
  • http://lists.xensource.com/archives/html/xci-devel/2009-10/msg00008.html
  • Download of a package fails
  • This can happen if the package (or the specific version) was removed from the web, or the server is not responding. The download link is usually in the *.mk files in package/<name_of_package>. You can change it manually to a mirror and then restart the make process.