Confirmed: the combination of a linaro-2.6.39 kernel with a transcend 8gb card results in flakey boots.
I zero'd a card, but instead of only zeros, I also wrote the sector number in each 512-byte block.

I changed the kernel to print out the 512 bytes it read as the mbr to the screen.

When the card didn't boot fully the printk showed all zeros except for a sector number about 100mb into the card.


How weird! Hardware? Kernel?


Anyway, today my sandisk cards arrived and all 10 of them worked flawlessly.
I ordered another 50 and hope to see the same results.

AJ ONeal


On Wed, Jun 29, 2011 at 11:48 AM, AJ ONeal <coolaj86@gmail.com> wrote:
I have a few inter-related issues:
  • Why would one kernel boot a card that another kernel can't?
  • Why would a card's disk geometry matter for boot?
  • Who is a good manufacturer for getting hardware-identical cards in bulk?
  • How can I probe the actual "disk geometry" of an sd card?

I bought 100 Transcend SD cards a little while ago and duplicated them with an OpenEmbedded-based filesystem (linux-2.6.36).
There were a few "bad" cards that I threw out, but the success rate was acceptable.


In the next round of 40 SD cards I used a Linaro-based filesystem (linux-2.6.39) and had about a 50% failure rate when testing that the cards would boot, which is absurd.
There kernel reports: [    1.003204]  mmcblk0: unknown partition table
However, the cards would mount and show files just fine.

I reduplicated one of the non-booting cards with an OpenEmbedded filesystem and then it booted. Weird!


After some investigation I found that using `gparted` (instead of `fdisk`) to create a new partition table and then `rsync`ing the contents of the original filesystem resulted in a booting Linaro card.
Rinse and repeat and I ended up with 3 images which only vary by the disk geometry as reported by `fdisk -l`:
  • 50% -- 255 heads, 63 sectors/track, 974 cylinders
  • 40% -- 2 heads, 4 sectors/track, 1957632 cylinders
  • 10% -- 247 heads, 62 sectors/track, 1022 cylinders
  • 1 card still didn't boot
I'm lost. Please advise.

AJ ONeal



Non-booting kernel message

[    0.923309] Waiting for root device /dev/mmcblk0p2...
[    0.957885] mmc0: host does not support reading read-only switch. assuming write-enable.
[    0.982025] mmc0: new high speed SDHC card at address b368
[    0.988494] mmcblk0: mmc0:b368 USD   7.46 GiB 
[    0.993957] mmcblk0: detected capacity change from 0 to 8018460672
[    1.003204]  mmcblk0: unknown partition table
[    1.036926] VFS: Cannot open root device "mmcblk0p2" or unknown-block(179,2)
[    1.044433] Please append a correct "root=" boot option; here are the available partitions:
[    1.053344] b300         7830528 mmcblk0  driver: mmcblk
[    1.058959] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(179,2)


Booting kernel message

[    1.122070] mmc0: host does not support reading read-only switch. assuming write-enable.
[    1.146087] mmc0: new high speed SDHC card at address b368
[    1.152557] mmcblk0: mmc0:b368 USD   7.46 GiB 
[    1.158020] mmcblk0: detected capacity change from 0 to 8018460672
[    1.166351]  mmcblk0: p1 p2 p3
[    1.259674] EXT3-fs: barriers not enabled
[    1.265411] kjournald starting.  Commit interval 5 seconds
[    1.271331] EXT3-fs (mmcblk0p2): mounted filesystem with ordered data mode
[    1.278686] VFS: Mounted root (ext3 filesystem) readonly on device 179:2.