[Lustre-discuss] lustre + debian

Guy Coates gmpc at sanger.ac.uk
Fri Aug 15 01:30:28 PDT 2008


I've just gone through the exercise of recompiling the lenny packages on etch;
it worked like a charm.


This is the procedure I used. Hope it helps.



*Pre-requisites

Any debian machine can be used to build the packages. It does not have to be a
lustre client or server.

*Install build essentials

Install the packages required to build debs. (build-essential, module-assistant etc)

*Get Source

Ensure sources.list contains the following lines:

deb http://debian.internal.sanger.ac.uk/debian/ etch main non-free contrib
deb-src http://debian.internal.sanger.ac.uk/debian/ lenny main contrib non-free

*Download the source with:

#aptitude update
#apt-get source linux-image-2.6.18-X-686
#apt-get source lustre

This will unpack two directories, one with the lustre source and one with the
kernel source.

*Build lustre userspace

Change to the lustre directory.

#cd lustre-X.X.X
#dpkg-buildpackage -r fakeroot

If the build fails with automake errors you will need to install a later
automake version. (debian/etch provides several to choose from.)

This will build the following packages:

lustre-utils        #Userspace lustre util
lustre-dev          #Development headers
lustre-source       #Source for the kernel module
lustre-tests        #Test suite
linux-patch-lustre  #Patch for the linux kernel.

Install the lustre-source and linux-patch-lustre packages on the build machine.
These packages contain the patches to the kernel source tree that are used in
the next step of the build.

#dpkg -i linux-patch-lustre_XXX.deb
#dpkg -i  lustre-source_XXX.deb



*Build lustre patched kernel

#cd linux-2.6-XXXX

We need to grab the .config file for the debian kernel. We should be able to
generate the config from the source package, but I'm not sure how. The easiest
way to get the correct config is to copy /boot/config-X.X.X from a machine
already running the debian kernel.

#cp /boot/config-2.6.XXX-686 .config

Check the kernel config works: (This might generate 1 or 2 minor questions. Just
hit "m" or "y".)

#make oldconfig

We can now build the kernel.

#export CONCURRENCY_LEVEL=3
#make-kpkg clean
#make-kpkg --rootcmd fakeroot --added-patches=lustre \
--initrd --append-to-version "-lustre-1.6.5.1" --revision=yyyymmdd  kernel_image

(You might be asked about extra scsi statistics options; selecting Y is probably
a good idea)

You should now have a kernel-image deb.

*Build lustre kernel modules

The lustre kernel modules can now be built.

#module-assistant -u/your/working/directory -k /path/to/the/kernel/linux-2.6-X.X
build  lustre

After the build has finished you should now have a lustre-modules.deb

*Install

To install lustre on a client or server machine, simply install the packages you
have created:

linux-image-2.6.XX-lustre-X.X.X._XXXXXX.deb
lustre-modules-2.6.XX-lustre-X.X.X._XXXXXX.deb
lustre-utils_X.X.deb
liblustre-X-X.deb
lustre-dev-X.X.deb

The test suite is optional. For configuration of networks and timeout options in
/etc/modprobe.d/lustre see the lustre manual.

*Extras not currently packaged

Lustre uses a special version of e2fsprogs. These allow you to specify the disk
raid geometry at filesystem creation time to optimise performance. It also has
extra options to support the lfsck lustre filesystem consistency check. Debian
upstream have said they will package this in the future. In the meantime, you
will have to build it yourself. Note that the modified program is only required
on OST and MDS machines.


*Get the e2fsprogs source

Get the latest sun patch tarball:

http://downloads.lustre.org/public/tools/e2fsprogs/latest/

eg e2fsprogs-1.40.11-sun1-patches.tar.gz

You will also need the upstream source (in this case e2fsprogs 1.40.11). This
can be found

http://downloads.lustre.org/public/tools/e2fsprogs/upstream/



*Patch the source

tar -xvf e2fsprogs 1.40.11.tar.gz
tar -xvf e2fsprogs-1.40.11-sun1-patches.tar.gz

Patch the source with quilt.

#cd e2fsprogs 1.40.11
#ln -s -f ../patches .
#ln -s -f ../patches/series .
#quilt push -av


*Build the source

Note that the ext2fs-dev, libsqlite3-dev, sqlite3 and libdb4.3-dev headers and
libraries must be installed before building. (Note that libdb4.4 does not work,
but the code will compile OK !?)

#./configure --with-lustre=/path/to/lustre/source
#make
#make install




-- 
Dr. Guy Coates,  Informatics System Group
The Wellcome Trust Sanger Institute, Hinxton, Cambridge, CB10 1HH, UK
Tel: +44 (0)1223 834244 x 6925
Fax: +44 (0)1223 496802


-- 
 The Wellcome Trust Sanger Institute is operated by Genome Research 
 Limited, a charity registered in England with number 1021457 and a 
 company registered in England with number 2742969, whose registered 
 office is 215 Euston Road, London, NW1 2BE. 



More information about the lustre-discuss mailing list