Linux - more fun than porn. At least with linux there is always something new.
Here's how I managed to build things. Feel free to skip the first three steps if you are already booting from nand.
1) If you aren't already booting into ubuntu (maybe you broke your plug when you opened the package like I did) get yourself booting to TFTP and NFS first using the uImage.sheeva.whateverdate kernel and the root package from the Linux Host tar. Make sure you put your kernel image and the jffs2 of the root into that root directory so they are available for the next step.
2) flash_eraseall /dev/mtd1
nandwrite -pm /dev/mtd1 uImage.sheeva.whatever
nandwrite -pm /dev/mtd2 root.jffs2
3) Now you can reboot and set your environment variables to boot from nand. Do it.
4) Since this is ubuntu, you need to apt-get a few things to build your environment properly. I suggest:
apt-get install gcc make ncurses-dev ncurses-bin ncurses-base ncurses-term wget
although I might have missed a package or two there. You'll know what you need when one of the next steps complains.
5) Time to build u-boot.
# rumor has it that a newer version supports the plug, but this is the one I've had the most success with.
tar xvjf u-boot-2009-03.tar.bz2
#this compilation will seem to fail, but it will produce mkimage for the next step
cp tools/mkimage /usr/local/bin
6) I used kernel sources taken from this snapshot
Just download the snapshot to /usr/src and untar it. It will expand to orion.git with all the kernel sources below it.
7) ln -sf /usr/src/orion.git /usr/src/linux
8 ) cd /usr/src/linux; make ARCH=arm mrproper; make ARCH=arm kirkwood_defconfig;make ARCH=arm menuconfig;make ARCH=arm uImage module module_install
9) Wait 20 or so minutes after compilation gets going. Once it completes you should have /usr/src/linux/arch/arm/boot/uImage which you can then use for:
10) flash_eraseall /dev/mtd1
nandwrite -pm /dev/mtd1 my-sparkling-uImage
Reboot, but stop the boot process. You need to set/check 2 environment variables. mainlineLinux should be yes and arcNumber should be 2097. If they aren't set them. Once they are set and saved, reset the plug and it should boot your new kernel.
I'm not sure what the mainlineLinux variable is for exactly, but kernels I compile won't start without it. The included uImage.sheeva.20090319 won't start with it. Go figure.
Hope that helps.