Booten von CD oder DVD ist recht unaktraktiv geworden,
da USB-Speichermedien sowohl größer alsauch schneller sind.
Daher beschreibe ich hier wie ich von einer Image-Datei
zu einem bootbaren Datenträger komme.
Durch fdisk -l
wissen wir
dass der USB-Stick, hier
folgenden Namen hat.
/dev/sdb
Dieses Ziel wird dann
bei dd
genutzt.
Zunächst muss ich mein Ziellaufwerk bestimmen.
Damit man nicht die eigene Platte überschreibt,
sollte man hier sehr sorgfältig vorgehen.
Ein externer 8 GB USB-Stick ist eingesteckt...
su fdisk -l Disk /dev/nvme0n1: 465,8 GiB, 500107862016 bytes, 976773168 sectors ... Device Boot Start End Sectors Size Id Type /dev/nvme0n1p1 * 2048 58593279 58591232 28G 83 Linux /dev/nvme0n1p2 117188606 976771071 859582466 409,9G 5 Extended /dev/nvme0n1p3 58593280 117186559 58593280 28G 83 Linux /dev/nvme0n1p5 117188608 148436991 31248384 14,9G 82 Linux swap / Solaris /dev/nvme0n1p6 148439040 976771071 828332032 395G 83 Linux Disk /dev/sda: 2,7 TiB, 3000592982016 bytes, 5860533168 sectors ... Device Start End Sectors Size Type /dev/sda1 2048 31999999 31997952 15,3G EFI System /dev/sda3 32000000 39999487 7999488 3,8G Linux swap /dev/sda4 39999488 5860532223 5820532736 2,7T Microsoft basic data Disk /dev/sdb: 7,9 GiB, 8472494080 bytes, 16547840 sectors ... Device Boot Start End Sectors Size Id Type /dev/sdb1 * 0 5559679 5559680 2,7G 0 Empty /dev/sdb2 1540 7427 5888 2,9M ef EFI (FAT-12/16/32)
Hier nun der gefährliche Arbeitsschritt:
Hier lese ich aus der Datei debian-live-10.9.0-amd64-xfce+nonfree.iso
und schreibe es entsprechend dem Ergebnis von fdisk
auf den Datenträger /dev/sdb
Mein Ziel, wo dann alle Daten unwiederbringlich überschrieben werden.
su dd if=debian-live-10.9.0-amd64-xfce+nonfree.iso of=/dev/sdb bs=4096 722868+0 Datensätze ein 722868+0 Datensätze aus bs=512 bs=4096 2960867328 Bytes (3,0 GB, 2,8 GiB) kopiert, 1388,83 s, 2,0 MB/s -> 3,4 MB/s sync
Bei DEB 10 ist der alte Befehl fdisk
in /sbin/fdisk
verschoben worden…
Sollte sich das Installationsmedium an anderer Stelle befinden,
ist noch der Pfad mit anzugeben.
Somit ist, wenn auch langsam, ein Installationsmedium erstellt worden,
welches nun auf der neuen Hardware eingesetzt werden kann.
Je nach Hardware (z.B. NAND-Flash kann in 4096 Bytes Blöcken organisiert sein),
kann man die Blockgrösse von bs=512
auf z.B. bs=4K
vergrößern,
was die Übertragungszeit verbessert und den Speicherstick
weniger Schreibzyklen zumutet.
Mittlerweile würde ich sogar eher bs=16K
empfehlen,
wo ich mit einer SDHC-Card, nur class 6 (Sandisk Extreme III),
und einem USB3.0 Adapter (Transcend TS-RDF9K),
entgegen der Erwartungshaltung, 107 MB/s hinbekommen habe.
su dd if=debian-live-11.2.0-amd64-xfce+nonfree.iso of=/dev/sdc bs=16384 196860+0 records in 196860+0 records out 3225354240 bytes (3.2 GB, 3.0 GiB) copied, 30.1907 s, 107 MB/s sync
Da dabei Müll raus kam, habe ich alles mit einen USB2.0 Reader
DeLock 91443 mit lediglich 9,6 MB/s wiederholen müssen.
Zum Anfang
Die Dateigrösse des Images, kann ich entweder über ls -la
sehen
oder nach dem Schreiben mittels dd
.
Lese ich Byteweise, wird die ganze Angelegenheit kriechend langsam.
Versuche ich alles in einen Stück einzulesen,
passt es unter Umständen nicht ins lokale RAM.
Also wähle ich einen Kompromiß, aus möglichst großen,
noch handhabbaren Blöcken.
Um die Anzahl der z.B. 4k-Blöcke zu bestimmen, teile ich die Bytes durch die Blockgrösse.
In diesem konkreten Fall 2.960.867.328 / 4096 = 722.868
Sollte ein Bruch herauskommen, wähle ich die Blockgröße entsprechend kleiner.
Die Berechnung ist auch erforderlich, da das Image meist kleiner ist (oder max. gleich Groß ist),
als der zur Verfügung stehende Platz auf dem Datenträger.
Denn die Checksumme darf nur über den Bereich bestimmt werden, welcher auch beschrieben wurde.
sha256sum debian-live-10.9.0-amd64-xfce+nonfree.iso > check.txt dd if=/dev/sdb bs=4096 count=722868 | sha256sum >> check.txt 722868+0 records in 722868+0 records out 2960867328 bytes (3.0 GB, 2.8 GiB) copied, 247.863 s, 11.9 MB/s cat check.txt 24d7efb2972e86f864175eba604c745a5766044cfe9567c29d207b759f8d4219 debian… 24d7efb2972e86f864175eba604c745a5766044cfe9567c29d207b759f8d4219 -
Glücklicherweise kommt zwei Mal die selbe Checksumme heraus.
Im 2. Beispiel hat das Image eine andere Größe und es wurde auch eine andere Blockgröße gewählt.
Bei 3.225.354.240 Bytes à 16k Blöcke, komme ich auf 196.860 Blöcke
In den meisten Fällen wirkt sich eine große Blockgröße
positiv auf die Lesegeschwindigkeit aus.
Das muß aber nicht zwangsläufig so sein.
Bei einer class 10 4 GB SanDisk Extreme SD-Card erreichte ich mit
4k Blöcken 89 MB/s und mit 16k Blöcken 21 MB/s.
dd if=/dev/sdb bs=16k count=196860 | sha256sum >> check.txt 196860+0 records in 196860+0 records out 3225354240 bytes (3.2 GB, 3.0 GiB) copied, 151.562 s, 21.3 MB/s
Sollten in der Quelle/Webseite andere Checksummen erforderlich sein,
kann ich natürlich auch andere Befehle zur
Überprüfung
verwenden.
Zum Anfang
laptop.org
how to damage a Flash device
Zum Anfang