USB-Stick und SD-Karte bootfähig machen

Nachdem immer mehr Laptops oder Netbooks ohne optische Laufwerke ausgeliefert werden und die DVD/CD gegenüber SD-Cards oder USB-Sticks als Speichermediium an Bedeutung verlieren, macht es Sinn, sich die Erstellung eines bootfähigen Flashspeichers unter Linux anzusehen.

Unter Windows existieren graphische Tools mit denen man USB-Sticks für eine Linux-Installation erstellen kann. Mittlerweile existieren diese Tools auch für Linux. Allerdings sind diese Tools durchaus fehleranfällig und führen dazu, dass eine Installation nicht ablaufen kann. Warum so kompliziert, wenn es unter Linux die Werkzeuge bereits gibt, mit denen sich ganz leicht bootfähige SD-Cards und USB-Sticks erstellen lassen?

Unter Linux werden die Geräte der Reihe nach gemountet. Wenn also eine externe Festplatte am USB-Port bereits eingehängt ist und als Device /dev/sdg1 bekannt ist, dann wird das nächste zuvergebende Device /dev/sdh lauten. Wie die Blockdevices auf dem System verteilt sind lassen mit lsblk anzeigen.

lsblk -a

NAME                      MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda                         8:0    0 931,5G  0 disk
??sda1                      8:1    0   171M  0 part /boot
??sda2                      8:2    0  14,9G  0 part [SWAP]
....

Dadurch sieht man auch exakt welches Device der Flash-Speicher erhalten hat.

Kopieren von Images mit dd auf das Flash-Medium (SD-Card, USB-Stick)

dd schreibt exakt die Daten, die es von der Standardeingabe einliest direkt ohne Veränderung in die Standardausgabe. So lässt sich also ein Image, z.B. ein Installationsimage, 1:1 in das Device auf der Standarausgabe kopieren.

dd bs=1M if=debian-8.2.0-amd64-netinst.iso of=/dev/sdh

Ganz wichtig ist hierbei, dass das gesamte Device mit /dev/sdh angesprochen wird und nicht eine einzelne Partition wie /dev/sdh1.

Sobald der dd-Befehl anzeigt, dass er alles fertig geschrieben hat, kann das Medium benutzt werden. Aber der USB-Stick/die SD-Karte muss ordnungsgemäss synchronisiert und aus dem System entfernt werden, damit keine Daten verloren gehen können.

sync
eject /dev/sdh