Estoy usando MacOS Catalina.
Tengo una tarjeta microSD de 16GB que tenía Raspbian, que son 2 particiones:
- Partición de arranque de 45 MB
- gran partición de Linux
Necesitaba borrarlo, así que conecté la tarjeta SD a mi Mac e hice esto:
$ sudo bash -c 'gdd if=/dev/zero of=/dev/rdisk2 bs=4M; sync'
gdd
es la versión GNU de dd
Instalado con homebrew.
/dev/disk2
es definitivamente la tarjeta microSD correcta que estoy poniendo a cero, confirmado con la Utilidad de Discos.
Yo uso rdisk
en lugar de disk
porque es mucho más rápido y apunta al mismo disco.
Cuando el comando comienza a ejecutarse, la utilidad de discos de MacOS muestra que el nombre de la unidad cambia de "boot" a algo como "Generic Flash Device" o algo así, así que sé que definitivamente está haciendo algo.
gdd
se ejecuta durante un tiempo, y después de unos minutos, muestra esto:
gdd: error writing '/dev/rdisk2': Input/output error
3799+0 records in
3798+0 records out
15931539456 bytes (16 GB, 15 GiB) copied, 419.932 s, 37.9 MB/s
El error tiene sentido, ya que intenta escribir ceros en la tarjeta microSD hasta que se queda sin espacio. En este punto, la tarjeta SD debería contener todos los ceros. He hecho esto literalmente docenas de veces en Linux. Nunca falla. Incluso he hecho esto con éxito en High Sierra docenas de veces.
Lo que no tiene sentido para mí es que tan pronto como el gdd
proceso termina de ejecutarse, la Utilidad de Discos vuelve a mostrar la tarjeta SD como "de arranque", se monta automáticamente en /Volumes/boot
y los archivos siguen ahí. ¿Cómo es que gdd
muestra que ha escrito con éxito toda la tarjeta SD llena de ceros, y sin embargo los datos siguen ahí?
Actualización: El Mac en el que estaba haciendo esto casualmente tenía VMware fusion en él, así que hice esto:
- Creé una VM, le adjunté la ISO de Arch Linux y la arranqué
- Conectar el dispositivo lector de tarjetas USB a la VM
- Usé dd en Arch para poner a cero la unidad
Apagué la VM, y el dispositivo USB se volvió a conectar al MacOS. Exactamente lo mismo - la partición de "arranque" todavía está allí, todavía auto-monta, y tiene todos los archivos allí. ¿Qué está pasando?
Actualización 2: Parece que no puedo borrar las particiones. Utilizo la VM de Arch, y o bien fdisk
o cfdisk
para borrar las 2 particiones de la tarjeta SD, dice que las ha borrado con éxito, pero en cuanto vuelvo a comprobarlo, las particiones siguen ahí. La tarjeta SD es nueva. No veo ningún error de E/S al leer o escribir en ella que pueda sugerir que está dañada.
Actualización 3: Ni siquiera puedo borrar los archivos. Monto cualquiera de las dos particiones bajo Arch, uso rm -rf *
para eliminar TODOS los archivos de esa partición, y ls
muestra que se han ido. Desmonto la partición, e inmediatamente la vuelvo a montar, y todos los archivos siguen ahí.
1 votos
¿Por qué no utilizar
diskutil
para borrar y preparar esto?0 votos
Sobre todo porque soy un tipo de Linux - no un tipo de mac. ¿Importa? Se supone que MacOS da a cualquier proceso que tenga permisos para leer o escribir en /dev/rdiskX acceso absoluto al dispositivo. dd se ha utilizado para operaciones de disco de bajo nivel durante décadas. ¿Estoy equivocado?
0 votos
¿Desmontó/expulsó la unidad antes de ejecutar
dd
?0 votos
Sí. No puedes expulsarlo sin que el dispositivo desaparezca, pero lo desmonté, como he hecho decenas de veces en el pasado. Además, al usar VMware, en cuanto le dices que adjunte la unidad USB a la VM, la separa automáticamente del MacOS anfitrión, haciendo que el dispositivo desaparezca de la Utilidad de Discos por completo, y aparezca en la VM.
0 votos
Gracias John. No era una crítica y sólo ver si quería el resultado final más que la explicación por qué
dd
puede tropezar. +1 perdón por no haber votado antes