I (roughly) followed the instructions at http://www.cyrius.com/debian/kirkwood/sheevaplug/unpack.html to get Debian lenny running on my new plug completely off a USB hard drive without touching the NAND (I first upgraded uboot to .19). Everything went pretty smoothly there and my plug could boot the included kernel off USB without any issues. The next step was compiling my own kernel with a few extra things I wanted, which is where things got a lot more troublesome. I set up my cross compiler and had no problem compiling an appropriate image of the mainline 18.104.22.168, resulting in the uImage and the appropriate modules. I couldn't find any documentation that was clear on what to do from here, however, since I didn't have a uInitrd file to go with the new uImage as per the original Debian download.
Unsurprisingly, simply replacing the old uImage with my new one and leaving the old uInitrd and uboot args caused boot to fail -- it didn't panic and uboot didn't throw any errors, but the process just froze in the midst of trying to load the kernel. I haven't found any clear documentation describing how to create the uInitrd, but I thought that uInitrd wasn't needed if everything needed to boot is compiled into the kernel, which was also stated in another thread on this forum. I next tried modifying the uboot args to get rid of the uInitrd calls (starting from the values in the original docs):
setenv bootcmd_usb 'usb start; ext2load usb 0:1 0x0800000 /uInitrd; ext2load usb 0:1 0x400000 /uImage'
setenv bootcmd 'setenv bootargs $(bootargs_console) $(bootargs_root); run bootcmd_usb; bootm 0x400000 0x0800000'
setenv bootcmd_usb 'usb start; ext2load usb 0:1 0x800000 /uImage'
setenv bootcmd 'setenv bootargs $(bootargs_console) $(bootargs_root); run bootcmd_usb; bootm 0x0800000'
This successfully started to load the new 22.214.171.124 kernel, but resulted in a panic when trying to mount the root partition:
Waiting 10sec before mounting root device...
Root-NFS: No NFS server available, giving up.
VFS: Unable to mount root fs via NFS, trying floppy.
VFS: Cannot open root device "sda2" or unknown-block(2,0)
Please append a correct "root=" boot option; here are the available partitions:
1f00 1024 mtdblock0 (driver?)
1f01 4096 mtdblock1 (driver?)
1f02 519168 mtdblock2 (driver?)
Kernel panic - not syncing: VFS: Unable to mount root fs
So now I'm pretty much stuck, since I'm not sure how to make a matching uInitrd or deal with the kernel panic. My boot partition is formatted as ext2 and my root partition is formatted as ext3. Any pointers would be appreciated -- it seemed pretty weird to me that there don't seem to be any comprehensive docs on installing a custom kernel on top of the Debian system.