trouble with should-be-bootable SD cards and kernel versions

3 views
Skip to first unread message

AJ ONeal

unread,
Jun 29, 2011, 1:48:39 PM6/29/11
to General mailing list for gumstix users., Utah Embedded, linaro-dev
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.

Brad Midgley

unread,
Jun 29, 2011, 2:00:22 PM6/29/11
to utah-e...@googlegroups.com
you should compare notes with Steve Sakoman.

http://www.sakoman.com/OMAP/microsd-card-perfomance-test-results.html

--
Brad Midgley

AJ ONeal

unread,
Jul 7, 2011, 6:37:35 PM7/7/11
to General mailing list for gumstix users., Utah Embedded, linaro-dev, a...@gumstix.com
Confirmed: the combination of a linaro-2.6.39 kernel with a transcend 8gb card results in flakey boots.
  • linaro-2.6.39 kernel is affected
  • transcend cards are affected
  • oe-2.6.36 kernel is not affected
  • sandisk 8gb cards are not affected (67 megabytes smaller)
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 <cool...@gmail.com> wrote:

Bryan Murdock

unread,
Jul 7, 2011, 7:20:55 PM7/7/11
to utah-e...@googlegroups.com
On Thu, Jul 7, 2011 at 4:37 PM, AJ ONeal <cool...@gmail.com> wrote:
> Confirmed: the combination of a linaro-2.6.39 kernel with a transcend 8gb
> card results in flakey boots.
>
> linaro-2.6.39 kernel is affected
> transcend cards are affected
> oe-2.6.36 kernel is not affected
> sandisk 8gb cards are not affected (67 megabytes smaller)
>
> 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?

I don't know, raw nand flash is pretty junky stuff. It's not strange
at all for there to be bit errors and bad blocks. Maybe that's what
you are seeing.

Bryan

Reply all
Reply to author
Forward
0 new messages