I had built and updated an installation of debian on a USB stick, however I wanted it to work from the built in flash, so I copied everything over. After tweaking the environment variables to boot from NAND again, I ran into the following problem (and know how to fix it now, quite easily!)
Waiting for /dev to be fully populated...done.
Setting the system clock.
Activating swap...done.
Checking root file system...fsck 1.41.3 (12-Oct-2008)
e2fsck 1.41.3 (12-Oct-2008)
fsck.ext3: No such device or address while trying to open /lib/init/rw/rootdev
Possibly non-existent or swap device?
fsck died with exit status 8
failed (code

.
An automatic file system check (fsck) of the root filesystem failed. A manual fsck must be performed, then the system restarted. The fsck should be performed in maintenance mode with the root filesystem mounted in read-only mode. failed!
The root filesystem is currently mounted in read-only mode. A maintenance shell will now be started. After performing system maintenance, press CONTROL-D to terminate the maintenance shell and restart the system. (warning).
Give root password for maintenance
(or type Control-D to continue):
sheeva:~# fsck
fsck 1.41.3 (12-Oct-2008)
e2fsck 1.41.3 (12-Oct-2008)
fsck.ext3: No such file or directory while trying to open /dev/sda1
The superblock could not be read or does not describe a correct ext2
filesystem. If the device is valid and it really contains an ext2
filesystem (and not swap or ufs or something else), then the superblock
is corrupt, and you might try running e2fsck with an alternate superblock:
e2fsck -b 8193 <device>
The fstab file is essentially looking for the old usb mount points - if it doesn't find them it goes into maintenance mode and gets stuck. If booting from NAND and you only have one partition, the fstab is usually empty.
At this point in maintenance, you can't edit any files - but fear not!
mount -o remount,rw /
You can now edit the /etc/fstab and comment out the lines that point to the old USB/MMC mountpoints, save and reboot as normal.