Hi lyzby
Its common to see bad blocks on NAND, due to it's architecture.
there's a uboot env called "nandEcc ".
HAMMING Algo ==> set nandEcc '1bit'
REED SOLOMON Algo==> set nandEcc '4bit'
Hamming algo read data from NAND faster but it's only 1bit correction.
(compare to RS, Hamming generate bad block faster, in theory)
RS algo read data slower, but 4bit correction.
Its a trade off.
After UBOOT, there's a lot of NAND file systems you can try. (JFFS2, cramfs, ubifs...etc)
To avoid bad block problem, mount RAMDISK + MTD(ubifs) maybe a good combination.
Actually boot from SPI and using NAND as storage device is better than put all stuff in NAND.
(put uboot + kernel at SPI flash)
But MPPs have to change settings .......
also means BOM cost higher, need more place to put SPI. means > $99 oops!

Regards
I have used the ESIA/EPIA installer to try to install two of the distributions in the distro folder to nand (squeeze and ubuntu), and the program reports successful completion, but for both when I try to boot, I get a NAND read "Bad block at 0x2a0000" error message, which causes a bad checksum and failure to boot. This is on an original Sheevaplug.
Here is the message:
---------------------------------
...
Hit any key to stop autoboot: 0
NAND read: device 0 offset 0x100000, size 0x400000
Bad block at 0x2a0000 in erase block from 0x2a0000 will be skipped
Reading data from 0x51f800 -- 100% complete.
4194304 bytes read: OK
## Booting image at 00800000 ...
Image Name: Linux-2.6.33
Created: 2010-03-02 21:27:23 UTC
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 2840500 Bytes = 2.7 MB
Load Address: 00008000
Entry Point: 00008000
Verifying Checksum ... Bad Data CRC
Marvell>>
-----------------------------
This seems different from the other "Bad Block" threads I have looked at. Is there something I can do to have this block marked bad, so the installer doesn't use it, or can I install to and boot from a different location from 0x100000?