Bagaimana cara unzip dan dd image disk ke SD Card dengan satu perintah?

15

Saya di bawah batasan berikut:

  • Saya memiliki .zipfile 1,0 GB di komputer saya yang berisi satu file, gambar disk raspbian. Saat tidak dikompresi, file ini berukuran 3,2 GB dan diberi nama 2015-11-21-raspbian-jessie.img.
  • Setelah mengunduh file zip, saya memiliki ruang penyimpanan hanya di bawah 1,0 GB di komputer saya, tidak cukup ruang untuk mengekstrak gambar ke komputer saya.
  • File ini perlu dikompresi dan ditulis ke kartu SD menggunakan polos lama dd.

Apakah mungkin bagi saya untuk menulis gambar ke kartu SD di bawah batasan ini?

Saya tahu mungkin untuk mem- pipe data tardan kemudian zipmem- pipe data itu di tempat lain, apakah ini akan tetap bekerja untuk format file, atau apakah seluruh arsip perlu dikompres sebelum file dapat diakses?

IQAndreas
sumber
Saya sadar saya hanya bisa mengekstrak file zip ke flash drive eksternal, tetapi ini lebih menyenangkan. Saya ingin melakukan ini untuk tantangan (dan pengalaman belajar) itu!
IQAndreas
3
Jika kartu SD Anda adalah perangkat /dev/sdh, maka jalankan unzip -p file.zip >/dev/sdh. (Saya tahu bahwa penggunaannya ddtradisional tetapi tidak perlu.)
John1024
Hah. Apakah itu akan berhasil tanpa dd? Saya pikir parameter Ukuran Blok akan diperlukan.
CRThaze
2
Ya, itu bekerja tanpa dd. Di masa lalu, ukuran blok sangat penting saat menulis ke kaset. Untuk disk, tidak masalah.
John1024
1
@TheCzar Selain dari kaset, parameter ukuran blok ddhanya dapat kehilangan data atau memperlambat (atau dalam kasus yang jarang mempercepat sedikit, jika cukup besar). Lupakan dd, ini sangat jarang berguna.
Gilles 'SANGAT berhenti menjadi jahat'

Jawaban:

24

Gunakan unzip -p:

unzip -p 2015-11-21-raspbian-jessie.zip 2015-11-21-raspbian-jessie.img | dd of=/dev/sdb bs=1M
yaegashi
sumber
Kode berjalan, dan ruang harddisk saya maupun RAM saya tidak habis. Semuanya baik sejauh ini.
IQAndreas
5
Atau sederhananya unzip -p … >/dev/sdb.
Gilles 'SANGAT berhenti menjadi jahat'
1
@Gilles selain sisi negatifnya, ddterkadang berguna dengan sudo:unzip -p ... | sudo dd of=/dev/sdb bs=1M
yaegashi
5
@yaegashi unzip -p … | sudo 'cat >/dev/sdb'Tapi saya lebih suka sudo chown $USER /dev/sdbyang memberi saya kesempatan ekstra untuk memeriksa apakah saya menulis ke perangkat yang tepat.
Gilles 'SANGAT berhenti menjadi jahat'
Itu bekerja dengan indah! Keberatan jika saya mengedit nama file yang tepat kalau-kalau ada yang hanya ingin menyalin dan menempelkan perintah?
IQAndreas
0

Setelah sedikit berjuang dengan solusi sebelumnya:

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

atau, jika Anda ingin melihat kemajuan dan Anda telah menginstal pv :

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