SD-Karte formatieren

Kürzlich wollte ich eine SD-Karte für die Verwendung auf einem Raspberry Pi auf meinem Ubuntu-Notebook neu formatieren. Also habe ich das Programm Laufwerke gestartet, die SD-Karte ausgewählt und per Zahnrad-Menü Formatieren ausgeführt. Eine Weile passierte nichts, danach erschien die kryptische Fehlermeldung Error synchronizing after initial wipe. Timed out waiting for object (udisk-error-quark, 0). Die SD-Karte blieb anscheinend unverändert. In solchen Fällen ist man froh, dass es unter Linux ja auch ein Terminal gibt!

Zum Glück gibt es auch das Terminal!

Also: Terminal starten und mit sudo -s in den root-Modus wechseln. lsblk listet dann die Festplatten, SSDs, USB-Sticks, SD-Karten mit all ihren Partitionen auf. Das Ergebnis sieht z.B. so aus:

lsblk
  NAME    MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
  sda      8:0    0 119,2G  0 disk 
    sda1   8:1    0 143,1M  0 part /boot/efi
    sda2   8:2    0   2,8G  0 part [SWAP]
    sda3   8:3    0    28G  0 part /
    sda4   8:4    0  23,2G  0 part /fedora
  mmcblk0 179:0   0   7,3G  0 disk 

Das Ergebnis macht klar, dass mmcblk0 der Device-Name der ca. 8 GByte großen SD-Karte ist. sda ist hingegen die Festplatte bzw. SSD, die auf keinen Fall angerührt werden soll!

Partitionieren und Formatieren

Nach diesen Vorbereitungsarbeiten sind zum eigentlichen Formatieren drei Kommandos erforderlich:

parted /dev/xxx mklabel msdos
parted /dev/xxx 'mkpart primary fat32 1MiB -1MiB'
mkfs.vfat -F 32 /dev/xxxyy

Das erste parted-Kommando richtet auf der SD-Karte eine neue Partitionstabelle ein, das zweite eine primäre Partition, die nahezu die gesamte SD-Karte ausfüllt. (Am Beginn und am Ende bleibt jeweils ein MByte frei.) mkfs.vfat erzeugt darin ein VFAT-Dateisystem.

Bei den beiden parted-Kommandos müssen Sie anstelle von xxx den Device-Namen der SD-Karte angeben. Bei mkfs.vfat müssen Sie den Device-Namen der neuen Partition verwenden. Dieser lautet z.B. /dev/sdc1 oder /dev/mmcblk0p1. Wenn Sie sich unsicher sind, verwenden Sie nochmals lsblk:

lsblk
  NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
  ...
  mmcblk0     179:0    0   7,3G  0 disk 
    mmcblk0p1 179:1    0   7,3G  0 part 

In diesem Fall müsste es also mkfs.vfat -F 32 /dev/mmcblk0p1 heißen.