¿Dd if = / dev / zero of = / dev / sda eliminará una tabla de particiones preexistente?

13

¿ # dd if=/dev/zero of=/dev/sdaEliminará una tabla de particiones preexistente?

¿O es al revés, es decir,

# fdisk /dev/sda g (para GPT)

eliminar los ceros escritos por /dev/zero?

tilikoom
fuente
66
Eso no está /dev/zeroborrando algo, lo está ddborrando al copiarlo. Los hechos de que los bytes son cero, y que los bytes cero provienen en /dev/zerolugar de alguna otra fuente de ceros, son detalles menores.
chrylis -on strike-
2
Si solo desea borrar la tabla de particiones, wipefs podría ser más confiable.
tubería

Respuestas:

23

¿ dd if=/dev/zero of=/dev/sdaEliminará una tabla de particiones preexistente?

Sí, la tabla de particiones está en la primera parte de la unidad, por lo que escribir sobre ella la destruirá. Eso ddlo escribirá sobre todo el disco si lo deja correr (por lo que llevará bastante tiempo).

Algo así dd bs=512 count=50 if=/dev/zero of=/dev/sdasería suficiente para sobrescribir los primeros 50 sectores, incluida la tabla de partición MBR y el GPT primario. Aunque al menos según Wikipedia, GPT tiene una copia secundaria de la tabla de particiones al final de la unidad, por lo que sobrescribir solo la parte en la cabeza de la unidad podría no ser suficiente.

(No tiene que usar dd, sin embargo, head -c10000 /dev/zero > /dev/sdao cat /bin/ls > /dev/sdatendría el mismo efecto).

¿ fdisk /dev/sda g(para GPT) borra los ceros escritos por / dev / zero?

También sí (siempre que guarde los cambios).

(Sin embargo, la redacción del título es confusa, /dev/zeroen sí misma no hace nada más que cualquier almacenamiento normal).

ilkkachu
fuente
Nota al margen: si la salida de la /bin/lses lo suficientemente corta, entonces la operación de escritura podría sobrescribir solo algunos bytes del MBR, y la parte más importante (sectores inicial y final de las particiones) puede permanecer intacta. Aunque grub --install /dev/sdaaún se requiere una reinstalación de MBR (más comúnmente ) para que el sistema se pueda iniciar nuevamente.
peterh - Restablece a Monica el
8
@peterh Tenga en cuenta que están redirigiendo el lsbinario real , no el resultado de ejecutarlo. El binario ELF "Hello World" más pequeño posible parece tener 98 bytes (menos que un MBR), pero creo que es seguro asumir que cualquier binario con características reales debería ser más grande que un MBR (la implementación de FreeBSD notoriamente pequeña lses 32784 bytes de longitud, incluso lo suficientemente grande como para sobrescribir la parte de inicio de disco de un GPT). ;)
n.st
Oh sí, también podrías usar la salida de ls. Una lista de /usr/binprobablemente sería lo suficientemente larga. Iba a usar solo echocomo ejemplo, pero IIRC necesita casi 500 bytes para sobrescribir una tabla de partición MBR, por lo que es un poco cansado escribir. (cualquiera que sea el número exacto)
ilkkachu
1
Probablemente deberías usar bs y contar con dd para esto, de lo contrario, irá por algún tiempo, solo necesitas poner a cero el sector. 512 bytes para discos heredados. (vea @ n.st a continuación) De hecho, la tabla de particiones está al final de esto y es lo suficientemente pequeña para que pueda hacer una copia y poner a cero con un editor hexadecimal antes de volver a copiar para preservar el contenido de arranque. También hay herramientas para esto, es común que la inicialización del disco NAS lo haga.
mckenzm
1
Solo quería agregar que, en el caso de las unidades GPT, DEBE limpiar el extremo del disco también. Una implementación GPT compatible verificará la tabla secundaria al final del disco y reescribirá la primera parte también (ignorando lo que ya tenga allí). Ver: news.ycombinator.com/item?id=18541493
wbkang
10

La tabla de particiones se almacena cerca del comienzo 1 del dispositivo de disco (lógico 2 ).

Sobrescribir esa área con cualquier cosa (ceros /dev/zeroo cualquier otro dato) reemplazará la tabla de particiones con galimatías, por lo que ya no será obvio dónde comienzan las particiones en el dispositivo.
Sin embargo, todavía se puede escanear todo el disco e intentar identificar los "bytes mágicos" que marcan el comienzo de los sistemas de archivos.

Por el contrario, si usa fdisk(o cualquier otra herramienta de particionamiento) para crear una nueva tabla de particiones, la herramienta sobrescribirá los primeros bytes del disco para almacenar esa nueva tabla.

Solo hay un principio en el disco, por lo que lo que hagas al final se "quedará" allí.

Sin embargo, tenga en cuenta que algunos formatos de tabla de particiones (como GPT) mantendrán copias de seguridad en diferentes lugares (por ejemplo, al final del disco para GPT), desde donde se puede recuperar parte de la información de la partición.

1: por ejemplo, en los primeros 512 bytes para un MBR o en el primer y último 17408 bytes para un GPT
2: La unidad puede reasignar internamente los bloques lógicos a diferentes partes del medio físico, pero esa asignación es invisible para (y no es importante para) El sistema operativo.

n.st
fuente
1
Casi a la derecha: la tabla de particiones (antigua, tipo MBR) reside en los bytes 1BE - 1FD del MBR. Los primeros bytes contienen el IBL (cargador de arranque inicial).
RudiC
@RudiC Buen punto, lo he dicho con mayor precisión ahora.
n.