Est-ce que dd si = / dev / zero of = / dev / sda effacera une table de partition préexistante?

13

# dd if=/dev/zero of=/dev/sdaEffacera- t -il une table de partition préexistante?

Ou est-ce l'inverse, c'est-à-dire

# fdisk /dev/sda g (pour GPT)

effacer les zéros écrits par /dev/zero?

tilikoom
la source
6
Ce n'est pas /dev/zeroeffacer quelque chose, c'est l' ddeffacer en copiant dessus. Les faits selon lesquels les octets se trouvent être zéro et que les octets zéro proviennent de la /dev/zeroplace d'une autre source de zéros sont des détails mineurs.
chrylis -on strike-
2
Si vous voulez simplement effacer la table de partition, les wipefs pourraient être plus fiables.
pipe

Réponses:

23

dd if=/dev/zero of=/dev/sdaEffacera- t -il une table de partition préexistante?

Oui, la table de partition est dans la première partie du lecteur, donc l'écrire dessus le détruira. Cela ddécrira sur tout le lecteur si vous le laissez fonctionner (cela prendra donc un certain temps).

Quelque chose comme dd bs=512 count=50 if=/dev/zero of=/dev/sdaserait suffisant pour écraser les 50 premiers secteurs, y compris la table de partition MBR et le GPT principal. Bien qu'au moins selon Wikipedia, GPT possède une copie secondaire de la table de partition à la fin du lecteur, donc écraser uniquement la partie dans la tête du lecteur pourrait ne pas être suffisant.

(Vous ne devez pas utiliser dd, cependant. head -c10000 /dev/zero > /dev/sdaOu cat /bin/ls > /dev/sdaaurait le même effet.)

fait fdisk /dev/sda g(pour TPG) effacer les zéros écrits par / dev / zero?

Oui aussi (à condition d'enregistrer les modifications).

(Cependant, le phrasé dans le titre est juste déroutant, /dev/zeroen soi ne fait rien de plus que tout stockage régulier.)

ilkkachu
la source
Remarque: si la sortie de la /bin/lsest suffisamment courte, l'opération d'écriture peut écraser uniquement les quelques octets du MBR et la partie la plus importante (secteurs de début et de fin des partitions) peut rester intacte. Bien qu'une réinstallation du MBR (le plus souvent grub --install /dev/sda) soit toujours nécessaire pour rendre le système amorçable à nouveau.
peterh
8
@peterh Notez qu'ils redirigent le lsbinaire réel , pas la sortie de son exécution. Le plus petit binaire ELF "Hello World" possible semble être de 98 octets (donc moins qu'un MBR), mais je pense qu'il est sûr de supposer que tout binaire avec des fonctionnalités réelles devrait être plus grand qu'un MBR (l'implémentation FreeBSD notoirement petite de ls32784 octets de long, même assez grand pour remplacer la partie de début de disque d'un GPT). ;)
n.st
Oh oui, vous pouvez aussi utiliser la sortie de ls. Une liste de /usr/binserait probablement assez longue. J'allais utiliser juste echocomme exemple, mais IIRC vous avez besoin de près de 500 octets pour écraser une table de partition MBR, donc c'est un peu fatigant à taper. (quel que soit le nombre exact)
ilkkachu
1
Vous devriez probablement utiliser bs et compter avec dd pour cela, sinon cela durera un certain temps, il vous suffit de mettre à zéro le secteur. 512 octets pour les disques hérités. (voir @ n.st ci-dessous) En fait, la table de partition est à la fin de cela et est assez petite pour que vous puissiez faire une copie et zéro avec un éditeur hexadécimal avant de recopier pour conserver le contenu de démarrage. Il existe également des outils pour cela, il est courant que l'initialisation du disque NAS le fasse.
mckenzm
1
Je voulais juste ajouter qu'en cas de lecteurs GPT, vous DEVEZ également effacer la fin du disque. Une implémentation GPT conforme vérifiera la table secondaire à la fin du disque et réécrira également la première partie (en ignorant tout ce que vous avez déjà). Voir: news.ycombinator.com/item?id=18541493
wbkang
10

La table de partition est stockée près du début 1 du périphérique de disque (logique 2 ).

Le remplacement de cette zone par quoi que ce soit (des zéros à partir de /dev/zeroou toute autre donnée) remplacera la table de partition par du charabia, il ne sera donc plus évident de savoir où commencent les partitions sur le périphérique.
On peut toujours analyser tout le disque et essayer d'identifier les "octets magiques" qui marquent les débuts des systèmes de fichiers.

Inversement, si vous utilisez fdisk(ou tout autre outil de partitionnement) pour créer une nouvelle table de partition, l'outil remplacera les premiers octets du disque pour stocker cette nouvelle table.

Il n'y a qu'un seul début sur le disque, donc quoi que vous fassiez en dernier "y restera".

Notez cependant que certains formats de table de partition (comme GPT) conserveront des copies de sauvegarde à différents endroits (par exemple à la fin du disque pour GPT), à partir desquels certaines informations de partition peuvent être récupérées.

1: par exemple dans les 512 premiers octets pour un MBR ou les premier et dernier 17408 octets pour un GPT
2: le lecteur peut remapper en interne les blocs logiques vers différentes parties du support physique, mais ce mappage est invisible pour (et sans importance pour) le système d'exploitation.

n.st
la source
1
Presque à droite - la table de partition (ancienne, de type MBR) réside dans les octets 1BE - 1FD du MBR. Les premiers octets contiennent l'IBL (chargeur de démarrage initial).
RudiC
@RudiC Bon point, je l'ai dit plus précisément maintenant.
2018