Vor einer Neuinstallation von Linux macht es Sinn die Festplatte zu formatieren, weil z.B. Ubuntu es einem nicht erlaubt denselben Volume Group Namen zu verwenden, welcher das vorherige System schon hatte. Dabei muss man noch nicht einmal zeitaufwändig die ganze Festplatte löschen; es reicht auch schon, wenn man nur die Partitionstabelle löscht. Und das geht sogar bei laufendem System.
Mit dd
lässt sich die Partitionstabelle einer Festplatte löschen, indem einfach die ersten paar Megabyte der Festplatte überschrieben werden – dort befindet sich die Partitionstabelle (MBR oder GPT). Achtung: Dieser Vorgang ist irreversibel und zerstört alle Partitionseinträge auf der Festplatte!
Beispiel (vorsichtig anwenden!):
sudo dd if=/dev/zero of=/dev/sdX bs=512 count=2048
if=/dev/zero
: Eingabedatei – nur Nullenof=/dev/sdX
: Zieldatenträger (z. B./dev/sda
, nicht/dev/sda1
!)bs=512
: Blockgröße (512 Byte)count=2048
: Anzahl der Blöcke → 2048 × 512 = 1 MiB (genug für MBR und GPT)
Inhalt
Hinweise
- MBR (klassisch): Die Partitionstabelle sitzt im ersten 512 Byte –
count=1
würde schon reichen. - GPT: GPT speichert die Partitionstabelle am Anfang und eine Kopie am Ende der Platte. Deshalb am besten Anfang und Ende löschen, z. B.:
# Anfang löschen (GPT + Protective MBR)
sudo dd if=/dev/zero of=/dev/sdX bs=1M count=2
# Ende löschen (Backup-GPT-Tabelle)
sudo dd if=/dev/zero of=/dev/sdX bs=1M count=2 seek=$(($(blockdev --getsz /dev/sdX) / 2048 - 2))
Danach, um sicherzustellen, dass das System keine Reste cached:
sudo partprobe /dev/sdX
Oder neu starten.
Script zur Automatisierung
Hier ist ein kleines Bash-Skript, das die Partitionstabelle einer Festplatte sicher löscht, sowohl bei MBR als auch GPT. Es löscht die ersten 2 MiB und – im Fall von GPT – auch die letzten 2 MiB der Platte.
🔧 Skript: wipe_partition_table.sh
#!/bin/bash
# Sicheres Skript zum Löschen der Partitionstabelle (MBR und GPT)
# WARNUNG: ALLE DATEN auf der angegebenen Festplatte werden unbrauchbar!
set -e
DEVICE="$1"
if [[ -z "$DEVICE" ]]; then
echo "❌ Bitte gib das Zielgerät an (z. B. /dev/sdX)"
echo "✅ Beispiel: sudo $0 /dev/sdX"
exit 1
fi
# Sicherheitsabfrage
read -p "⚠️ Bist du sicher, dass du ALLE Partitionen auf $DEVICE löschen willst? (ja/nein): " confirm
if [[ "$confirm" != "ja" ]]; then
echo "❎ Abgebrochen."
exit 1
fi
echo "🧹 Lösche die ersten 2 MiB auf $DEVICE..."
dd if=/dev/zero of="$DEVICE" bs=1M count=2 status=progress
# Ermitteln der Größe der Festplatte in Sektoren
DISK_SIZE=$(blockdev --getsz "$DEVICE")
# 512 Byte pro Sektor, 2048 Sektoren = 1 MiB → Wir nehmen 2 MiB → 4096 Sektoren
GPT_BACKUP_START=$((DISK_SIZE - 4096))
echo "🧹 Lösche die letzten 2 MiB (GPT-Backup) auf $DEVICE..."
dd if=/dev/zero of="$DEVICE" bs=512 count=4096 seek=$GPT_BACKUP_START status=progress
echo "🔄 Aktualisiere Partitionstabellen im Kernel..."
partprobe "$DEVICE" || true
echo "✅ Partitionstabelle auf $DEVICE erfolgreich gelöscht."