Sd Card Partitions


Sep 30, 2005
Adelaide, Australia
Visit site
Hey everyone.

I have a 1GB SanDisk SD card. It worked fine when I first got it, but after trying to copy some stuff over using a dodgy card reader, it became corrupted. I put it in a good card reader and recreated the partition. Worked fine in windows, but didn't detect in my GP2X (something about the partition table, I think. I read that the GP2X won't detect a card with a partition table.. wtf?).

I found an image of an SD card in some thread here (sd.dd), but it was only for a 256mb card. I copied the image over onto the card through linux and it worked. The problem I have now is that I can't access the other 768mb on the card. I can't access it through linux anymore because my new card reader doesn't have nix drivers, and no windows tools I've found can do it. I can't even delete the 256mb partition in Disk Management under Win XP. I've tried partition magic but it doesn't work with removable drives.

Does anybody have any advice on how I can fix this problem?

Thanks, Skitzo
Sounds like a bit of a pickle you've got yourself into :D

First off, the GP2X kernel handles partitions just fine, but the front-end only mounts the first partition by default. To mount other partitions, you'd need a .GPU to do it or (better) a serial adapter cable. There's quite a bit of misinformation about what the GP2X will and won't handle, but the facts are: it handles partitions, and it handles FAT12, FAT16, and FAT32. Unfortunately it's buggy and under circumstances we don't yet fully understand, it just refuses to work with seemingly good cards.

I don't quite understand what you mean about your card reader and Linux. Did you write the 256MB image using another card reader? What is your new card reader? Surely all card readers these days appear as standard USB drives that Linux should handle better than Windows?

A corrupted SD card can usually be restored by completely rubbishing the partition table and starting over, say by 'dd if=/dev/zero of=/dev/sdc bs=512 count=1' or so. If you don't even get a /dev entry for your card reader, then maybe that's not an option for you. If it does work, then fdisk /dev/sdc should get you back up and running.

Perhaps if you could give us details of the Linux distro, the kernel version, and the model of your card reader, we could be more help here.

On Windows, there used to be a 'fdisk /MBR E:' function to restore the master boot record (including partition table) to something resembling sanity. Does the card appear as a drive in Windows at all?