Eliminar todas las particiones de la línea de comando

40

¿Cómo se eliminan todas las particiones en un dispositivo desde la línea de comandos en Linux (específicamente Ubuntu)? Intenté mirar fdisk, pero presenta un mensaje interactivo. Estoy buscando un solo comando, que puedo dar una ruta de dispositivo (por ejemplo, / dev / sda) y eliminará ext4, linux-swap y cualquier otra partición que encuentre. Básicamente, esto sería lo mismo que si abriera GParted y seleccionara y eliminara manualmente todas las particiones. Esto parece bastante simple, pero desafortunadamente, no he podido encontrar nada a través de Google.

Cerin
fuente

Respuestas:

44

¿Sería esto suficiente?

dd if=/dev/zero of=/dev/sda bs=512 count=1 conv=notrunc
pk.
fuente
44
Esto no eliminará las particiones. Al eliminar las particiones, tenía la intención de preservar el MBR y simplemente vaciar la tabla de particiones.
Mircea Vutcovici
2
No, esto parece hacer exactamente lo que necesito. Realmente no me importa si los datos siguen ahí. GParted muestra que las particiones se han ido después de ejecutar esto, y eso es lo que quería.
Cerin
Mircea Vutcovici no hablaba de sus datos, sino del código de arranque en su MBR. Eso ya no está, porque lo borró junto con las 4 entradas principales de la tabla de particiones de estilo MBR.
JdeBP
1
No olvide desmontar el controlador, de lo contrario no funcionará.
OrangeTux
Esto también funciona muy bien si ha utilizado ZFS en una unidad y lo está reutilizando para otra cosa. Ni una partición y formato estándar de Windows o Linux eliminarán las etiquetas de ZFS que pueden causarle problemas importantes.
Tony Maro
33

El wipefsprograma te permite eliminar fácilmente la firma de la tabla de particiones:

wipefs -a /dev/sda

Desde man wipefs

wipefs puede borrar firmas del sistema de archivos, incursiones o tablas de particiones (cadenas mágicas) del dispositivo especificado para hacer que las firmas sean invisibles para libblkid.

wipefs no borra el sistema de archivos ni ningún otro dato del dispositivo. Cuando se usa sin ninguna opción, wipefs enumera todos los sistemas de archivos visibles y las compensaciones de sus firmas básicas.

wipefs llama al BLKRRPART ioctl cuando ha borrado una firma de tabla de partición para informar al núcleo sobre el cambio.

usuario144437
fuente
12

Rápido y sucio: utilícelo gpartedpara eliminar las particiones, o si tiene prisa:

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

Esto eliminará el MBR de la unidad (los datos aún están intactos).

Alternativamente:

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

para limpiar todo el disco (escriba un solo paso de ceros sobre todo. No es "seguro" pero generalmente lo suficientemente bueno), o use una herramienta de "trituradora de disco" para un borrado seguro.

voretaq7
fuente
7

Ver man sfdisk, que es una variante no interactiva de fdisk. Aparte de eso, puede eliminar toda la tabla de particiones con dd, como escribió pk.

Sven
fuente
6

También debería poder usar parted para esto, aunque eso puede implicar algunas secuencias de comandos para recorrer las particiones.

Decado
fuente
3

Si estamos hablando de particiones de estilo MBR ...

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

Explicación:

dd

Este comando estándar copia bytes de una fuente y los escribe en un destino. Es la herramienta flexible más simple para este trabajo.

if=/dev/zero

Aquí, especificamos que estamos leyendo /dev/zero, que es un dispositivo especial que emite NULbytes - ceros.

of=/dev/[disk device]

Aquí, especificamos en qué dispositivo estamos escribiendo.

bs=1

ddpiensa en términos de bloques . El tamaño de bloque predeterminado puede ser 512 bytes, 1024 bytes o 4096 bytes, dependiendo de su sistema. Sin embargo, debemos abordar las cosas con mayor precisión que eso, por lo que le pedimos ddque use un tamaño de bloque de 1 byte.

cuenta = 64

Aquí, le pedimos ddque escriba 64 bloques (o bytes, debido a nuestro bs=1parámetro), ya que la tabla de partición primaria consta de 4 entradas de partición de 16 bytes, para un total de 64 bytes.

buscar = 446

La tabla de partición primaria dentro del MBR (por lo tanto, no hablando de GPT aquí) se encuentra a 446 bytes, por lo que le pedimos ddque busque 446 bytes antes de escribir.

Las particiones extendidas generalmente se crean mediante el uso de una ranura de partición primaria para apuntar a la tabla de particiones extendidas, por lo que si borramos las 4 particiones primarias, también limpiaremos efectivamente la tabla de particiones extendidas; el sistema operativo no podrá encontrarlo, por lo que no podrá leerlo ni interpretarlo. (Si desea borrar la tabla de particiones extendidas, necesitará saber más sobre el sistema operativo; los diferentes sistemas operativos realizan particiones extendidas de diferentes maneras).

Michael Mol
fuente
2

Quería hacer lo mismo (excepto en Slackware 14.2) pero descubrí que no podía afectar la mayoría de las soluciones propuestas aquí, con la solución más elaborada y bien documentada creando nuevos problemas para hacer particiones de reemplazo. Eso eliminó la partición, pero aparentemente un software de partición encontró las copias de seguridad de la partición automáticamente.

Encontré que f3probe ( http://oss.digirati.com.br/f3 ) resolvió el problema de eliminar todas las particiones, rápida y fácilmente, trabajando con unidades de gran capacidad, y creé exactamente 1 partición que abarcaba toda la unidad, lo cual fue fácil borrar.

También fue fácil, a partir de ahí, crear nuevas particiones, de una manera directa.

es decir

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
fuente
0

Utilice una versión no interactiva mejorada de fdisk, que es sfdisk

Para borrar la tabla de particiones use este comando:

sfdisk --delete /dev/sda
Suncatcher
fuente