Löschen Sie ein Linux-Speichergerät mit sgdisk

543
Luis Lavaire

Ich möchte mit sgdisk alle Partitionsdefinitionen und Daten von einem Speichergerät löschen und dann ein GPT und zwei Partitionen darauf erstellen . Die beste Lösung, die ich gefunden habe, ist die Verwendung -Zder -oOptionen und der Optionen.

sgdisk -Zo \ -n 1::16M -t 1:EF00 -c 1:ZNX_BOOT \ -N 2 -t 2:8300 -c 2:ZNX_DATA /dev/[device] 

Dies schlägt jedoch fehl, wenn das Laufwerk mit einer MBR-Partitionstabelle erstellt wurde oder ein Disk-Image darauf geschrieben wurde. Wie kann ich mit diesem Befehl jede Festplatte löschen, unabhängig vom verwendeten Partitionstabellenstil?

4

3 Antworten auf die Frage

3
Anon

Ich weiß, dass dies die Frage ändert, aber ist es für Sie möglich, dies zu verwenden wipefs(was im util-linuxPaket enthalten ist)? wipefsversteht es, alle Arten von Partitionsmetadaten zu löschen, und entfernt MBRs, GPTs (zusammen mit dem Backup-GPT), Dateisystemsignaturen usw. ordnungsgemäß.

Die Beispiele aus dem Abschnitt BEISPIELE unten auf der wipefsManpage zeigen, wie Sie dies tun könnten:

wipefs /dev/sda*

Gibt Informationen über sda und alle Partitionen auf sda aus.

wipefs --all --backup /dev/sdb

Löscht alle Signaturen vom Gerät /dev/sdbund erstellt ~/wipefs-sdb-<offset>.bakfür jede Signatur eine Signatur-Sicherungsdatei .

WARNUNG : Wie der Name schon sagt, wipefs zerstören Daten ! Seien Sie bitte vorsichtig...

Was ist mit der Leistung? @ K7AAY schlug `dd` vor, aber es ist zu langsam. Wenn es so schnell (oder zumindest ähnlich) wie `sgdisk` ist, könnte ich es in Betracht ziehen. Luis Lavaire vor 5 Jahren 0
@ luis-lavaire Ich bin erstaunt, dass ein "dd" über einen Sektor (unter der Annahme von 512-Byte-Sektoren) einer Platte langsam ist - es ist so ziemlich der kleinste Schreibvorgang, den eine Platte ausführen kann! Ich vermute, dass etwas anderes nicht stimmt, wenn das wirklich langsam war (zB wurde "count = 1" weggelassen). Ich nehme an, Sie könnten "bs = 4k oflag = direct count = 1" verwenden und sehen, ob das hilft ... Trotzdem, um Ihre Frage zu beantworten: Meiner Meinung nach endet 'wipefs' in weniger als einer Sekunde (aber das 'dd' des Antwort hätte auch so sein sollen). Anon vor 5 Jahren 1
Nein, ich meinte, dass das Wischen der gesamten Platte mit `dd 'langsam ist. Luis Lavaire vor 5 Jahren 0
@ Luis-Lavaire, das stimmt, aber das ist nicht das, was das `dd` vorschlägt. "bs = 512" bedeutet, dass jeder Datensatz nur 512 Bytes umfasst, und "count = 1" bedeutet, dass nur ein Datensatz erstellt wird, bevor "dd" abgeschlossen ist. In diesem Fall werden im Wesentlichen nur die ersten 512 Bytes Ihrer Festplatte gelöscht, sodass "dd" verwendet wird sei nicht langsam Ein vollständiges "dd" einer Platte ist in der Tat sehr langsam (und wenn Sie dies jemals mit "dd" tun werden, empfehle ich dringend, die "bs" -Methode 1M oder höher zu machen). In jedem Fall ist `wipefs` viel schneller als ein volles` dd` der Platte :-) Anon vor 5 Jahren 0
Nun, ich habe auch versucht, die GPT / MBR-Header mit `dd` zu löschen (mit` bs = 512 count = 1`). Ich muss jedoch ALLE Daten auf dem Gerät löschen, nicht nur die Header. Luis Lavaire vor 5 Jahren 0
Technisch gesehen müssen Sie nur die Partitionen und Dateisystem-Signaturen entfernen, um eine versehentliche Wiederentdeckung zu verhindern (und daran denken, dass GPT am Ende der Festplatte ein Backup von sich selbst erstellt, so dass ein "dd" von nur dem Start der Festplatte nie genug ist, wenn Sie sind es zu benutzen - du müsstest ein bisschen vom Ende "dd" Wenn Sie wirklich "Ich brauche ALLE Daten irgendwo auf der Festplatte zerstört" bedeutet, dann müssen Sie "dd" (oder einen anderen Befehl zum "Alles überschreiben") verwenden, und "sgdisk" ist bei weitem nicht ausreichend. Bonus: Sie verwenden `sgdisk` im zap- und create-Modus, sodass Sie nur Metadaten ändern ... Anon vor 5 Jahren 0
Nicht genau. Ich verwende die Option --zap-all`, mit der alle Daten auf dem Gerät (einschließlich der Header) gelöscht werden sollten. Luis Lavaire vor 5 Jahren 0
Sie löschen immer noch nur Metadaten: `-Z, --zap-all Zap (zerstören) Sie die GPT- und MBR-Datenstrukturen und beenden Sie dann. Wenn Sie über das Start- und End-Ende der Diskette "dd" gehen oder "wipefs" verwenden würden, würden Sie denselben Effekt erzielen. Anon vor 5 Jahren 0
Nun, das Handbuch empfiehlt tatsächlich die Verwendung von '-Z' anstelle von '-o' ('-o' bedeutet, dass alle Partitionsdaten gelöscht werden) und das Gerät anschließend normal partitioniert. Was ich nicht herausfinden kann, ist, warum es bei einigen Geräten fehlschlägt. Wenn Sie zum Beispiel einen startfähigen Live-USB erstellen und dann `sgdisk -Z DEVICE 'ausführen, behält das Gerät die Bezeichnung des ISO-Images bei. Luis Lavaire vor 5 Jahren 0
`-g` von` sgdisk` zerstört neben den GPT-Partitionen auch die MBR-Partitionierung und / oder beschädigte Daten: "Zap (zerstören) Sie die GPT ** - und MBR-Daten **". Was Ihre USB-Festplatte angeht, hängt es davon ab, wo Sie dieses Label finden. Vielleicht ist dieses Label Teil des Dateisystems, das Sie erstellen oder auf die Festplatte kopieren? Anon vor 5 Jahren 0
Nachdem ich `sgdisk -Z` auf einem Gerät ausgeführt habe; Wenn ich es mit `blkid` überprüfe, kann ich immer noch die ISO-Dateisystembezeichnung sehen (die Teil des ISO-Images ist, das auf das Gerät geschrieben wurde). Luis Lavaire vor 5 Jahren 0
Hmm `blkid` hustet wahrscheinlich, weil UDF-Dateisysteme sich oft nicht in Partitionen befinden. https://github.com/karelzak/util-linux/blob/e4386c8cc0f7f2cfb09781d963b353310a3cd93a/libblkid/src/superblocks/udf.c#L177 zeigt die Routine. Habe ich schon erwähnt, dass "Wipefs" auch dazu dient, Dateisystemsignaturen zu entfernen? :-) Es verwendet sogar `blkid` (https://github.com/mmalecki/util-linux/blob/5fdd35070ceb79589d52fa247d1b359bd2bdcbd1bdc471/misc-utils/wipefs.c#L33) ... Anon vor 5 Jahren 1
Wie würde ich also "Wipefs" verwenden, um das zu erreichen, was ich will? Luis Lavaire vor 5 Jahren 0
Schauen Sie sich den Abschnitt BEISPIELE unten auf der Manpage an - http://manpages.ubuntu.com/manpages/bionic/man8/wipefs.8.html#examples -, der Beispiele für Trockenläufe zeigt und tatsächlich "Wipefs" -Ergebnisse ausführt echte Aktionen. Anon vor 5 Jahren 0
Könntest du bitte noch eine Antwort hinzufügen? bearbeiten Sie Ihre Antwort], damit ich sie annehmen kann? `wipefs` funktionierte genau wie erwartet. ;) Luis Lavaire vor 5 Jahren 1
Ist die Antwort jetzt besser? Oh und danke fürs Aushalten :-) Anon vor 5 Jahren 1
2
K7AAY

Ich sehe keine Möglichkeit, dies ausschließlich innerhalb von sgdisk zu tun, aber zum Glück haben die freundlichen Leute von Virtualhelp.me die Verwendung von dd zuerst vorgeschlagen, dh

dd if=/dev/zero of=/dev/sda bs=512 count=1 

was dazu gedacht ist, diese lästige MBR-Carrier-Partition zu überschreiben, die sowohl sgdisk als auch gdisk für eine Schleife auslöst .

Ja, ich kenne mich mit "dd" aus. Der Nachteil ist, dass es sehr langsam ist. Deswegen bevorzuge ich Gdisk. Luis Lavaire vor 5 Jahren 1
Verstanden, aber da ein Review von man sqdisk und man gdisk zeigte, dass sie mit MBR-Carrier-Partitionen nicht umgehen konnten, dachte ich, ich würde anbieten, was ich könnte. EFI ist soooo viel besser als MBR, ich bin jedes Mal erschüttert, wenn jemand sagt, dass er kein EFI braucht ... K7AAY vor 5 Jahren 0
Ich vermute, dass ich möglicherweise `while! sgdisk -v / dev / device; do sgdisk -Z; done` könnte die Aufgabe erledigen. Und ich stimme mit Ihnen überein, dass GPT viel besser ist als MBR. Luis Lavaire vor 5 Jahren 1
Wenn Sie zum Löschen der GPT-Partitionierung `dd 'verwenden müssen, müssen Sie die ersten 20 KByte vom Anfang ** AND ** des Datenträgerendes entfernen. Weitere Informationen finden Sie unter https://serverfault.com/a/787210/203726 (siehe auch https://en.wikipedia.org/wiki/GUID_Partition_Table). Anon vor 5 Jahren 3
0
Luis Lavaire

Diese Befehle haben die Aufgabe erfüllt:

wipefs -af $DEVICE  sgdisk -Z \ -n 1::132M -t 1:EF00 -c 1:ZNX_BOOT \ -N 2 -t 2:8300 -c 2:ZNX_DATA $DEVICE 

Der Befehl firs löscht die Partitionsmetadaten und der zweite löscht die Daten.