Here is how I recovered from a bad flash.
Asuming that Redboot is intact and you have terminal or telnet
connected and you are at the redboot prompt.
ip_address -l 192.168.0.75 -h 192.168.0.61
load -r -v -b 0x01000000 codev24.bin
fis write -f 0x50060000 -b 0x01060000 -l 0x7a0000
192.168.0.61 is the address of the TFTP server
codev24.bin is the renamed firmware file (8192KB) downloaded from
Linksys and placed on the TFTP server. Apparantly it is the exact
image of the 8MB flash on NSLU2.
The whole 8MB firmware file is loaded into NSLU RAM at 0x01000000
The first 256KB (redboot=mtd0) and 128KB (config=mtd1) are left
untouched. The remaining 0x7a0000 = 7995392bytes comprise of kernel
and ramdisk (mtd2+mtd3) and trailer bytes containing the "eRcOmM"
signature and version number.
Instead of fiddling with partitions and blocks, I simply copy the
whole firmware excluding redboot and config to flash.
Now I have one problem left over. During some testing of mtd
partitions, I gave a wrong mtd command and since then, I cant attach
any HDD to the NSLU2. It somply fails to mount them. Here is what it
scsi: device set offline - not ready or command retry failed after
bus reset: host 1 channel 0 id 0 lun 0
SCSI disk error : host 1 channel 0 id 0 lun 0 return code = 50000
I/O error: dev 08:01, sector 4304
I/O error: dev 08:01, sector 4312
JBD: Failed to read block at offset 12
JBD: recovery failed
EXT3-fs: error loading journal.
I/O error: dev 08:01, sector 4200
The USB disk is OK and works fine in a windows box.