
Our SBC have been happily booting uClinux from ext3 partitioned SD cards prepared on a Fedora Linux-2.6.15 PC.
But, when we prepared our 2GB SD cards on a brand new Ubuntu Linux-2.6.27 PC, out SBCs were no longer able to find /boot/linux.bin.
Linux/dumpe2fs showed that the bootable [Fedora] 2GB SD cards had inode_size = 128, whereas the delinquent [Ubuntu] SD cards had inode_size = 256. Adding a "-I 128" switch to mkfs.ext3 in the script that prepares an loads the SD cards solved the problem. That is, our SBCs can now boot from Ubuntu prepared SD cards. However, this brings up the point that, somewhere along the line, the default inode_size for SD cards is no longer 128 bytes. It could be double, quadruple or more.
There is some suspicious code in ext2fs.c/ext2fs_mount():
inodes_per_block = EXT2_BLOCK_SIZE (data) / 128;
However, when this was replaced by
inodes_per_block = EXT2_BLOCK_SIZE (data) / INODE_SIZE(data);
..the 2GB/128 byte inode SD cards booted and the 2GB/256 byte inode SD cards didn't.
When reading a 2GB/256 byte inode card, ext2fs_mount()/ext2fs_read_inode(data, 2, data->inode) returns data->inode filled with zeros. Either there is a flaw in data or data is not being interpreted correctly. Regrettably, the root problem eludes me.
Any thoughts or comments would be appreciated.
Bob Furber