Come decomprimere e dd un'immagine disco su una scheda SD con un singolo comando?


15

Sono soggetto alle seguenti restrizioni:

  • Ho un .zipfile da 1,0 GB sul mio computer che contiene un file, un'immagine del disco di raspbian. Se non compresso, questo file ha una dimensione di 3,2 GB e un nome 2015-11-21-raspbian-jessie.img.
  • Dopo aver scaricato il file zip, ho poco meno di 1,0 GB di spazio di archiviazione sul mio computer, non abbastanza spazio per estrarre l'immagine sul mio computer.
  • Questo file deve essere non compresso e scritto su una scheda SD usando semplicemente il vecchio dd.

È possibile per me scrivere l'immagine sulla scheda SD in base a queste restrizioni?

So che è possibile reindirizzare i dati tare poi reindirizzarli altrove, tuttavia, funzionerà comunque per il zipformato del file o l'intero archivio deve essere decompresso prima che i file siano accessibili?


Mi rendo conto che potrei semplicemente estrarre il file zip su un'unità flash esterna, ma questo è più divertente. Voglio farcela per la sfida (e l'esperienza di apprendimento)!
IQAndreas,

3
Se la tua scheda SD è un dispositivo /dev/sdh, esegui unzip -p file.zip >/dev/sdh. (So ​​che l'uso di ddè tradizionale ma non è necessario.)
Giovanni 1024,

Huh. Funzionerebbe senza dd? Ho pensato che sarebbe stato necessario il parametro Dimensione blocco.
CRThaze,

2
Sì, funziona senza dd. In passato, la dimensione del blocco era molto importante quando si scriveva su nastri. Per i dischi, non importa.
Giovanni 1024,

1
@TheCzar A parte i nastri, il parametro della dimensione del blocco ddpuò solo perdere dati o rallentare le cose (o in rari casi velocizzare le cose un po ', se abbastanza grande). Dimentica dd, è molto raramente utile.
Gilles 'SO- smetti di essere malvagio' il

Risposte:


24

Utilizzare unzip -p:

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

Il codice è in esecuzione e né lo spazio sul disco rigido né la RAM si stanno esaurendo. Tutto bene finora.
IQAndreas,

5
O semplicemente unzip -p … >/dev/sdb.
Gilles 'SO- smetti di essere malvagio' il

1
@Gilles oltre al rovescio della medaglia, a ddvolte è utile con sudo:unzip -p ... | sudo dd of=/dev/sdb bs=1M
yaegashi

5
@yaegashi unzip -p … | sudo 'cat >/dev/sdb'Ma preferisco sudo chown $USER /dev/sdbche mi dia un'ulteriore opportunità di verificare che sto scrivendo sul dispositivo giusto.
Gilles 'SO- smetti di essere malvagio' il

Ha funzionato magnificamente! Ti dispiace se modifico il nome esatto del file nel caso in cui qualcuno voglia solo copiare e incollare il comando?
IQAndreas,

0

Dopo un po 'di difficoltà con la soluzione precedente:

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

oppure, se vuoi vedere i progressi e hai installato pv:

 unzip -p ~/Downloads/2020-02-05-raspbian-buster-lite.zip | pv | sudo dd of=/dev/disk2 bs=1m
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.