dd wurde auf dev USB angewendet, bevor die Verbindung /dev/sdX beschädigt wurde und nicht funktionierte

dd wurde auf dev USB angewendet, bevor die Verbindung /dev/sdX beschädigt wurde und nicht funktionierte

Ich habe einen USB-Stick, auf dem ich eine ISO-Datei von ca. 5 MB mit einem kleinen Betriebssystem mit eigenem Grub übertrage. Wenn ich das Gerät anschließe und es überprüfesudo fdisk -lIch bekomme:

...
Device     Boot Start   End Sectors  Size Id Type
/dev/sdb1  *        1  9551    9551  4.7M cd unknown

Wenn ich mit dd die ISO kopieresudo dd if=my_os.iso von=/dev/sdb

14852+0 records in
14852+0 records out
7604224 bytes (7.6 MB) copied, 0.538487 s, 14.1 MB/s

Es funktioniert perfekt. Ein Bootvorgang vom BIOS auf einem anderen PC.

Das Problem ist, dass ich manchmal vergesse, das USB-Gerät nach der Aktualisierung des BIOS anzuschließen. Dann mache ich es OHNE das angeschlossene USB-Gerät. Die Ausgabe lautet:

14852+0 records in
14852+0 records out
7604224 bytes (7.6 MB) copied, 0.00987684 s, 770 MB/s

Jetzt ist das /dev/sdb-Register beschädigt, die Kopiergeschwindigkeit (770 MB/s) ergibt keinen Sinn und dd kann bis zum Neustart nicht erneut verwendet werden.

Ich habe versucht, es mit ddrescue zu reparieren, aber es funktioniert nicht

sudo ddrescue /dev/zero /dev/sdb conv=noerror,sync

Meine Frage ist nun, was genau passiert und, falls möglich, wie man /dev/sdb repariert, um einen Neustart zu vermeiden und dd wieder zum Laufen zu bringen?

Danke.

Antwort1

Geräteknoten /dev/sd*werden nur in /dev angezeigtnachdem das Gerät angeschlossen ist, nicht vorher. (Außerdem werden sie nicht „Register“ genannt.) Als Sie dd of=/dev/sdbes also ausgeführt haben, hat es tatsächlich kein Gerät berührt – stattdessen, da die Ausgabedatei nicht existierte,dd erstellteine neue Datei mit diesem Namen.

$ sudo dd if=archlinux-2016.04.01-dual.iso von=/dev/sdc
1482752+0 Datensätze in
1482752+0 Datensätze aus
759169024 Bytes (759 MB, 724 MiB) kopiert, 0,941926 s, 806 MB/s

$ ls -l /dev/sd*
brw-rw---- 1 Root-Disk 8, 0 15. Juni 08:54 /dev/sda
brw-rw---- 1 Root-Disk 8, 16. Juni 15 14:14 /dev/sdb
-rw-r--r-- 1 root root 724 M 15. Juni 15:06 /dev/sdc

Es gibt also wirklich nichts, was „beschädigt“ sein könnte, und nichts, was sinnvollerweise „repariert“ oder mit ddrescue gerettet werden könnte. Sie haben einfach eine riesige Datei namens /dev/sdb, und weil sie existiert, kann der Kernel dort keinen echten Geräteknoten erstellen.

(Die Schreibgeschwindigkeit ist absolut sinnvoll – /devsie wird im RAM gespeichert, Sie haben also das Image einfach vom RAM, wo es zwischengespeichert war, zurück in den RAM kopiert, wo /dev liegt.)

Löschen Sie /dev/sdbdas Gerät und verbinden Sie es erneut.realDer Geräteknoten sollte wieder angezeigt werden.

verwandte Informationen