Wird dd if = / dev / zero von = / dev / sda eine bereits vorhandene Partitionstabelle löschen?


13

Wird # dd if=/dev/zero of=/dev/sdaeine bereits bestehende Partitionstabelle auszulöschen?

Oder ist es umgekehrt?

# fdisk /dev/sda g (für GPT)

die Nullen von auslöschen /dev/zero?


6
Das /dev/zerolöscht nicht etwas aus, es ddlöscht es durch Kopieren. Die Tatsachen, dass die Bytes zufällig Null sind und dass die Null-Bytes zufällig /dev/zerovon einer anderen Quelle von Nullen stammen, sind geringfügige Details.
chrylis -on strike-

2
Wenn Sie nur die Partitionstabelle löschen möchten, sind wipefs möglicherweise zuverlässiger.
Pipe

Antworten:


23

Wird dd if=/dev/zero of=/dev/sdaeine bereits bestehende Partitionstabelle auszulöschen?

Ja, die Partitionstabelle befindet sich im ersten Teil des Laufwerks. Durch Überschreiben wird das Laufwerk zerstört. Das ddwird über das gesamte Laufwerk schreiben, wenn Sie es laufen lassen (so wird es einige Zeit dauern).

So etwas dd bs=512 count=50 if=/dev/zero of=/dev/sdawürde ausreichen, um die ersten 50 Sektoren, einschließlich der MBR-Partitionstabelle und des primären GPT, zu überschreiben. Obwohl laut Wikipedia GPT eine sekundäre Kopie der Partitionstabelle am Ende des Laufwerks vorhanden ist, reicht es möglicherweise nicht aus, nur den Teil im Kopf des Laufwerks zu überschreiben.

(Sie haben nicht zu verwenden dd, though. head -c10000 /dev/zero > /dev/sdaOder cat /bin/ls > /dev/sdawürde die gleiche Wirkung haben.)

tut fdisk /dev/sda gauszulöschen (GPT) , die von / dev / null geschrieben Nullen?

Auch ja (sofern Sie die Änderungen speichern).

(Allerdings ist die Formulierung im Titel nur verwirrend, /dev/zeroin sich selbst nicht hat tun nichts mehr als jede regelmäßige Lagerung der Fall ist.)


Randnotiz: Wenn die Ausgabe von /bin/lskurz genug ist, überschreibt der Schreibvorgang möglicherweise nur die wenigen Bytes des MBR, und der wichtigste Teil (Anfangs- und Endsektor der Partitionen) kann intakt bleiben. Obwohl eine MBR-Neuinstallation (meistens grub --install /dev/sda) weiterhin erforderlich ist, um das System wieder bootfähig zu machen.
peterh

8
@peterh Beachten Sie, dass sie die eigentliche lsBinärdatei umleiten und nicht die Ausgabe, wenn sie ausgeführt wird. Die kleinstmögliche ELF-Binärdatei "Hello World" scheint 98 Bytes zu sein (also weniger als ein MBR), aber ich denke, man kann davon ausgehen, dass jede Binärdatei mit tatsächlichen Funktionen größer sein sollte als ein MBR (die notorisch kleine FreeBSD-Implementierung von ls32784) Byte lang, sogar groß genug, um den Start-of-Disk-Teil eines GPT zu überschreiben). ;)
25.

Oh ja, Sie könnten auch die Ausgabe von verwenden ls. Eine Auflistung von /usr/binwäre wahrscheinlich lang genug. Ich wollte es nur echoals Beispiel verwenden, aber IIRC benötigt fast 500 Bytes, um eine MBR-Partitionstabelle zu überschreiben, daher ist die Eingabe etwas müde. (was auch immer die genaue Zahl war)
ilkkachu

1
Sie sollten dafür wahrscheinlich bs verwenden und mit dd zählen, sonst wird es einige Zeit dauern. Sie müssen nur den Sektor auf Null setzen. 512 Byte für ältere Datenträger. (siehe @ n.st unten) Tatsächlich befindet sich die Partitionstabelle am Ende dieser Liste und ist klein genug, um mit einem Hex-Editor eine Kopie und eine Null zu erstellen, bevor Sie zurückkopieren, um den Startinhalt beizubehalten. Auch hierfür gibt es Tools. Dies ist bei der NAS-Festplatteninitialisierung üblich.
McKenzm

1
Ich wollte nur hinzufügen, dass Sie im Falle von GPT-Laufwerken auch das Ende der Festplatte löschen MÜSSEN. Eine kompatible GPT-Implementierung überprüft die Sekundärtabelle am Ende des Datenträgers und schreibt auch den ersten Teil neu (wobei alles, was Sie bereits haben, ignoriert wird). Siehe: news.ycombinator.com/item?id=18541493
wbkang

10

Die Partitionstabelle wird in der Nähe des Anfangs 1 der (logischen 2 ) Platteneinheit gespeichert.

Wenn Sie diesen Bereich mit irgendetwas überschreiben (Nullen von /dev/zerooder anderen Daten), wird die Partitionstabelle durch Kauderwelsch ersetzt, sodass nicht mehr ersichtlich ist, wo die Partitionen auf dem Gerät beginnen.
Man kann immer noch die gesamte Festplatte scannen und versuchen, die "magischen Bytes" zu identifizieren, die die Anfänge von Dateisystemen markieren.

Wenn Sie umgekehrt fdiskeine neue Partitionstabelle mit (oder einem anderen Partitionstool) erstellen, überschreibt das Tool die ersten Bytes des Datenträgers, um diese neue Tabelle zu speichern.

Es gibt nur einen Anfang für die Festplatte, sodass alles, was Sie zuletzt tun, dort "hängen bleibt".

Beachten Sie jedoch, dass einige Partitionstabellenformate (wie GPT) Sicherungskopien an verschiedenen Orten aufbewahren (z. B. am Ende der Festplatte für GPT), von denen einige Partitionsinformationen wiederhergestellt werden können.

1: beispielsweise in dem ersten 512 Bytes für einen MBR oder das ersten und letztes 17408 Bytes für einen GPT
2: der Antrieb der logischen Blöcke zu verschiedenen Teilen des physikalischen Mediums intern neu zuordnen kann, aber das Mapping ist unsichtbar (und unwichtig) das Betriebssystem.


1
Fast richtig - die Partitionstabelle (alter MBR-Typ) befindet sich in den Bytes 1BE - 1FD des MBR. Die ersten Bytes enthalten den IBL (Initial Boot Loader).
RudiC

@RudiC Guter Punkt, ich habe es jetzt genauer gesagt.
25.
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.