web-dev-qa-db-fra.com

Suppression de toutes les partitions de la ligne de commande

Comment supprimez-vous toutes les partitions d'un appareil à partir de la ligne de commande sous Linux (en particulier Ubuntu)? J'ai essayé de regarder fdisk, mais il présente une invite interactive. Je cherche une seule commande, que je peux donner un chemin de périphérique (par exemple/dev/sda) et il supprimera l'ext4, linux-swap et toutes les autres partitions qu'il trouve. Essentiellement, ce serait la même chose que si je devais ouvrir GParted et sélectionner et supprimer manuellement toutes les partitions. Cela semble assez simple, mais malheureusement, je n'ai rien trouvé via Google.

41
Cerin

Cela suffirait-il?

dd if=/dev/zero of=/dev/sda bs=512 count=1 conv=notrunc
45
pk.

Le programme wipefs vous permet de supprimer facilement la signature de la table de partition:

wipefs -a /dev/sda

De man wipefs

wipefs peut effacer les signatures de système de fichiers, de raid ou de table de partition (chaînes magiques) du périphérique spécifié pour rendre les signatures invisibles pour libblkid.

wipefs n'efface pas le système de fichiers lui-même ni aucune autre donnée de l'appareil. Lorsqu'il est utilisé sans aucune option, wipefs répertorie tous les systèmes de fichiers visibles et les décalages de leurs signatures de base.

wipefs appelle l'ioctl BLKRRPART lorsqu'il a effacé une signature de table de partition pour informer le noyau de la modification.

34
user144437

Rapide et sale: utilisez gparted pour supprimer les partitions, ou si vous êtes pressé:

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

Cela zappera le MBR du lecteur (les données sont toujours intactes).

Alternativement:

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

pour effacer tout le lecteur (écrire un seul passage de zéros sur tout. Pas "sécurisé" mais généralement assez bon), ou utiliser un outil "destructeur de disque" pour un essuyage sécurisé.

12
voretaq7

Voir man sfdisk, qui est une variante non interactive de fdisk. En dehors de cela, vous pouvez supprimer toute la table de partition avec dd, comme l'écrit pk.

7
Sven

Vous devriez également être en mesure d'utiliser parted, bien que cela puisse impliquer des scripts pour parcourir les partitions.

6
Decado

Si nous parlons de partitions de style MBR ...

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

Explication:

dd

Cette commande standard copie les octets d'une source et les écrit dans une destination. C'est l'outil flexible le plus simple pour ce travail.

if=/dev/zero

Ici, nous précisons que nous lisons à partir de /dev/zero, qui est un périphérique spécial qui émet NUL octets - zéros.

of=/dev/[disk device]

Ici, nous spécifions sur quel appareil nous écrivons.

bs=1

dd pense en termes de blocs. La taille de bloc par défaut peut être de 512 octets, 1024 octets ou 4096 octets, selon votre système. Cependant, nous devons aborder les choses plus précisément que cela, donc nous disons à dd d'utiliser une taille de bloc de 1 octet.

count = 64

Ici, nous demandons à dd d'écrire 64 blocs (ou octets, à cause de notre bs=1 paramètre), car la table de partition principale se compose de 4 entrées de partition de 16 octets, pour un total de 64 octets.

chercher = 446

La table de partition principale dans le MBR (donc, sans parler du GPT ici) est située à 446 octets, donc nous demandons à dd de rechercher 446 octets avant d'écrire.

Les partitions étendues sont généralement créées en utilisant un emplacement de partition principale pour pointer vers la table de partition étendue, donc si nous effaçons les 4 partitions primaires, nous effaçons également la table de partition étendue; le système d'exploitation ne pourra pas le trouver, il ne pourra donc pas le lire et l'interpréter. (Si vous souhaitez effacer la table de partition étendue, vous devrez en savoir plus sur le système d'exploitation; différents systèmes d'exploitation effectuent les partitions étendues de différentes manières.)

4
Michael Mol

Je voulais faire la même chose (sauf dans Slackware 14.2) mais j'ai trouvé que je ne pouvais pas effectuer la plupart des solutions proposées ici, la solution la plus élaborée et la mieux documentée créant de nouveaux problèmes pour faire des partitions de remplacement. Cela a supprimé la partition, mais certains logiciels de partitionnement ont apparemment trouvé les sauvegardes de partition automatiquement.

J'ai trouvé que f3probe ( http://oss.digirati.com.br/f ) a résolu le problème de supprimer toutes les partitions, rapidement et facilement, en travaillant avec des disques de grande capacité, et j'ai créé exactement 1 partition s'étendant sur l'ensemble du lecteur, qui était facile à supprimer.

Il était également facile, à partir de là, de créer de nouvelles partitions, de manière simple.

c'est à dire.

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....
2
John

Utilisez une version non interactive améliorée de fdisk, qui est sfdisk

Pour effacer la table de partition, utilisez cette commande:

sfdisk --delete /dev/sda
0
Suncatcher