¿Cómo descomprimir y dd una imagen de disco en una tarjeta SD con un solo comando?


15

Estoy bajo las siguientes restricciones:

  • Tengo un .ziparchivo de 1.0 GB en mi computadora que contiene un archivo, una imagen de disco raspbian. Cuando está descomprimido, este archivo tiene un tamaño de 3.2 GB y está nombrado 2015-11-21-raspbian-jessie.img.
  • Después de descargar el archivo zip, tengo poco menos de 1.0 GB de espacio de almacenamiento en mi computadora, no hay suficiente espacio para extraer la imagen a mi computadora.
  • Este archivo debe descomprimirse y escribirse en una tarjeta SD usando un formato antiguo dd.

¿Es posible para mí escribir la imagen en la tarjeta SD bajo estas restricciones?

Sé que es posible canalizar datos tary luego canalizar esos datos a otra parte, sin embargo, ¿esto todavía funcionará para el zipformato de archivo, o es necesario descomprimir todo el archivo para poder acceder a los archivos?


Me doy cuenta de que podría extraer el archivo zip a una unidad flash externa, pero esto es más divertido. ¡Quiero lograr esto para el desafío (y la experiencia de aprendizaje)!
IQAndreas

3
Si su tarjeta SD es un dispositivo /dev/sdh, ejecute unzip -p file.zip >/dev/sdh. (Sé que el uso de ddes tradicional pero no es necesario.)
John1024

Huh ¿Funcionaría eso sin dd? Pensé que el parámetro Tamaño del bloque sería necesario.
CRThaze

2
Sí, funciona sin dd. En el pasado, el tamaño del bloque era muy importante al escribir en cintas. Para los discos, no importa.
John1024

1
@TheCzar Aparte de las cintas, el parámetro de tamaño de bloque ddsolo puede perder datos o ralentizar las cosas (o, en casos excepcionales, acelerar un poco las cosas, si es lo suficientemente grande). Olvídate dd, rara vez es útil.
Gilles 'SO- deja de ser malvado'

Respuestas:


24

Uso unzip -p:

unzip -p 2015-11-21-raspbian-jessie.zip 2015-11-21-raspbian-jessie.img | dd of=/dev/sdb bs=1M

El código se está ejecutando y ni mi espacio en el disco duro ni mi RAM se están agotando. Todo bien hasta ahora.
IQAndreas

55
O simplemente unzip -p … >/dev/sdb.
Gilles 'SO- deja de ser malvado'

1
@Gilles además de la desventaja, a ddveces es útil con sudo:unzip -p ... | sudo dd of=/dev/sdb bs=1M
yaegashi

55
@yaegashi unzip -p … | sudo 'cat >/dev/sdb'Pero prefiero lo sudo chown $USER /dev/sdbque me da una oportunidad adicional de verificar que estoy escribiendo en el dispositivo correcto.
Gilles 'SO- deja de ser malvado'

Funcionó muy bien! ¿Te importa si edito el nombre exacto del archivo en caso de que alguien solo quiera copiar y pegar el comando?
IQAndreas

0

Después de un poco de lucha con la solución anterior:

 unzip -p ~/Downloads/2020-02-05-raspbian-buster-lite.zip | sudo dd of=/dev/disk2 bs=1m

o, si desea ver el progreso y ha instalado pv:

 unzip -p ~/Downloads/2020-02-05-raspbian-buster-lite.zip | pv | sudo dd of=/dev/disk2 bs=1m
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.