Löschen aller Partitionen über die Befehlszeile

40

Wie löscht man alle Partitionen auf einem Gerät von der Kommandozeile unter Linux (speziell Ubuntu)? Ich habe versucht, fdisk zu betrachten, aber es wird eine interaktive Eingabeaufforderung angezeigt. Ich suche nach einem einzelnen Befehl, dem ich einen Gerätepfad geben kann (z. B. / dev / sda) und der ext4, Linux-Swap und alle anderen gefundenen Partitionen löscht. Im Wesentlichen ist dies das Gleiche, als würde ich GParted öffnen und alle Partitionen manuell auswählen und löschen. Dies scheint ziemlich einfach zu sein, aber leider konnte ich über Google nichts finden.

Cerin
quelle

Antworten:

44

Würde das ausreichen?

dd if=/dev/zero of=/dev/sda bs=512 count=1 conv=notrunc
pk.
quelle
4
Dadurch werden die Partitionen nicht gelöscht. Durch das Löschen der Partitionen wollte er den MBR erhalten und nur die Partitionstabelle leeren.
Mircea Vutcovici
2
Nein, das scheint genau das zu tun, was ich brauche. Es ist mir eigentlich egal, ob die Daten noch da sind. GParted zeigt, dass die Partitionen verschwunden sind, nachdem dies ausgeführt wurde, und das wollte ich.
Cerin
Mircea Vutcovici sprach nicht über Ihre Daten, sondern über den Bootstrap-Code in Ihrem MBR. Das ist jetzt weg, weil Sie es zusammen mit den 4 primären Einträgen aus der Partitionstabelle im MBR-Stil gelöscht haben.
JdeBP
1
Vergessen Sie nicht, den Treiber auszusteigen, sonst funktioniert es nicht.
OrangeTux
Dies funktioniert auch hervorragend, wenn Sie ZFS auf einem Laufwerk verwendet haben und es für einen anderen Zweck verwenden. Weder eine standardmäßige Windows- noch eine Linux-Partitionierung und -Formatierung werden die darauf befindlichen ZFS-Labels entfernen, was zu größeren Problemen führen kann.
Tony Maro
32

Mit dem wipefsProgramm können Sie die Partitionstabellensignatur einfach löschen:

wipefs -a /dev/sda

Von man wipefs

wipefs kann Dateisystem-, RAID- oder Partitionstabellensignaturen (magische Zeichenfolgen) vom angegebenen Gerät löschen, um die Signaturen für libblkid unsichtbar zu machen.

wipefs löscht weder das Dateisystem selbst noch andere Daten vom Gerät. Bei Verwendung ohne Optionen listet wipefs alle sichtbaren Dateisysteme und die Offsets ihrer Basissignaturen auf.

wipefs ruft das BLKRRPART ioctl auf, wenn es eine Partitionstabellensignatur gelöscht hat, um den Kernel über die Änderung zu informieren.

user144437
quelle
12

Schnell und schmutzig: Verwenden Sie gparteddiese Option, um die Partitionen zu löschen, oder wenn Sie es eilig haben:

dd if=/dev/zero of=/dev/[disk device] bs=512 count=1

Dadurch wird der MBR des Laufwerks gezappt (Daten sind noch intakt).

Alternative:

dd if=/dev/zero of=/dev/[disk device]

um das gesamte Laufwerk zu löschen (schreiben Sie einen einzigen Durchgang von Nullen über alles. Nicht "sicher", aber normalerweise gut genug), oder verwenden Sie ein "Disk Shredder" -Tool für ein sicheres Löschen.

voretaq7
quelle
7

Siehe man sfdisk, das ist eine nicht interaktive Variante von fdisk. Ansonsten können Sie die gesamte Partitionstabelle mit dd löschen, wie pk geschrieben hat.

Sven
quelle
6

Sie sollten in der Lage sein, auch hierfür parted zu verwenden, obwohl dies einige Skripte zum Durchlaufen der Partitionen erfordern kann.

Decado
quelle
3

Wenn wir über MBR-Partitionen sprechen ...

dd if=/dev/zero of=/dev/[disk device] bs=1 count=64 seek=446 conv=notrunc

Erläuterung:

dd

Dieser Standardbefehl kopiert Bytes von einer Quelle und schreibt sie in ein Ziel. Es ist das einfachste flexible Werkzeug für diesen Job.

if=/dev/zero

Hier geben wir an /dev/zero, von welchem ​​speziellen Gerät gelesen werden soll , das NULBytes - Nullen ausgibt.

of=/dev/[disk device]

Hier legen wir fest, auf welches Gerät wir schreiben.

bs=1

dddenkt in Blöcken . Die Standardblockgröße kann je nach System 512 Byte, 1024 Byte oder 4096 Byte betragen. Wir müssen die Dinge jedoch genauer ansprechen, daher raten wir, ddeine Blockgröße von 1 Byte zu verwenden.

count = 64

Hier sagen wir, dass dd64 Blöcke (oder Bytes aufgrund unseres bs=1Parameters) geschrieben werden sollen, da die primäre Partitionstabelle aus 4 Partitionseinträgen mit 16 Bytes für insgesamt 64 Bytes besteht.

seek = 446

Die primäre Partitionstabelle innerhalb des MBR (hier wird also nicht über GPT gesprochen) befindet sich in 446 Bytes, daher weisen wir ddan, vor dem Schreiben in 446 Bytes zu suchen.

Erweiterte Partitionen werden im Allgemeinen mithilfe eines primären Partitionssteckplatzes erstellt, der auf die erweiterte Partitionstabelle verweist. Wenn Sie also die 4 primären Partitionen löschen, wird auch die erweiterte Partitionstabelle gelöscht. Das Betriebssystem kann es nicht finden, daher kann es es nicht lesen und interpretieren. (Wenn Sie die erweiterte Partitionstabelle löschen möchten, müssen Sie mehr über das Betriebssystem wissen. Verschiedene Betriebssysteme führen erweiterte Partitionen auf unterschiedliche Weise aus.)

Michael Mol
quelle
2

Ich wollte dasselbe tun (außer in Slackware 14.2), konnte jedoch die meisten hier vorgeschlagenen Lösungen nicht umsetzen, da die aufwändigste und gut dokumentierte Lösung neue Probleme bei der Erstellung von Ersatzpartitionen verursachte. Dadurch wurde die Partition gelöscht, aber einige Partitionssoftware hat die Partitionssicherungen anscheinend automatisch gefunden.

Ich fand, dass f3probe ( http://oss.digirati.com.br/f3 ) das Problem des schnellen und einfachen Löschens aller Partitionen löste , indem es mit Laufwerken mit großer Kapazität arbeitete, und genau eine Partition erstellte, die sich über das gesamte Laufwerk erstreckte, was einfach war löschen.

Von dort aus war es auch einfach, neue Partitionen auf einfache Weise zu erstellen.

dh

f3probe --destructive --time-ops /dev/sdb
# Now we know only 1 partition exists on /dev/sdb
#    which is /dev/sdb1
#
# Unmount that partition
umount /dev/sdb1

#
# Delete that single partition
parted /dev/sdb rm 1

#
# Now you can create new partitions
# i.e. parted /dev/sdb mkpart primary fat32 1049K 15.8G
# 
# Update /etc/fstab before rebooting....
John
quelle
0

Verwenden Sie die verbesserte nicht interaktive Version von fdisk, sfdisk

Verwenden Sie diesen Befehl, um die Partitionstabelle zu löschen:

sfdisk --delete /dev/sda
Sonnenfänger
quelle