Although all the source is available it's not immediately obvious how to compile it.

All these commands should work on a Debian Etch or Lenny system.  Attempting to do this on a Sarge, Squeeze or Sid system will fail.

For the user level packages do:
  1. apt-get source _package_
  2. apt-get build-dep _package_
  3. cd _package_
  4. make any changes you want.
  5. dpkg-buildpackage -rfakeroot
For the kernel it's harder:
  1. Download the linux-source package you want, linux-source-2.6.12-ssi or linux-source-2.6.14-ssi
  2. make sure you have gcc-3.4 or gcc-3.3 installed (apt-get install gcc-3.4)
  3. make sure you have fakeroot, kernel-package and gawk installed.
  4. Set up some environment variables:
    export MAKEFLAGS
    export INITRD_CMD
  5. get the kernel config.  If you're already running an OpenSSI kernel you'll find it in /boot/config-2.6.14-ssi-686-smp or /boot/config-2.6.12-ssi-686-smp.  Alternatively extract it from the  linux-image .deb:
    1. dpkg-deb -x linux-image-2.6.14-ssi-686-smp_1.9.6-3_i386.deb _dir_
    2. cp _dir_/boot/config-2.6.14-ssi-686-smp .config
  6. Make whatever changes you need in the config
  7. make-kpkg --rootcmd fakeroot  --initrd  kernel_image
  8. have an appropriate amount of fun.
(If you want to re-build the kernel you may run into an irritating make-kpkg bug - it seems to think that Documentation/lguest needs cleaning up even though it doesn't exist.  Just make a "Documentation/lguest/Makefile" that contains just one line: "clean:").