Jak rozpakować i dodać obraz dysku na kartę SD za pomocą jednego polecenia?


15

Mam następujące ograniczenia:

  • Mam .zipplik 1,0 GB na moim komputerze, który zawiera jeden plik, obraz dysku raspbian. Po rozpakowaniu ten plik ma 3,2 GB i nosi nazwę 2015-11-21-raspbian-jessie.img.
  • Po pobraniu pliku zip mam na komputerze prawie 1,0 GB miejsca do przechowywania, za mało miejsca, aby wyodrębnić obraz na komputer.
  • Ten plik musi być nieskompresowany i zapisany na karcie SD zwykłym starym dd.

Czy mogę zapisać obraz na karcie SD zgodnie z tymi ograniczeniami?

Wiem, że możliwe jest przepuszczanie danych przez tarrurę, a następnie przesyłanie danych w innym miejscu, jednak czy to nadal będzie działać w przypadku zipformatu pliku, czy też całe archiwum musi zostać zdekompresowane przed udostępnieniem jakichkolwiek plików?


Zdaję sobie sprawę, że mogę po prostu rozpakować plik zip na zewnętrzny dysk flash, ale to jest bardziej zabawne. Chcę to zrobić, aby sprostać wyzwaniu (i doświadczeniu w nauce)!
IQAndreas

3
Jeśli twoja karta SD jest urządzeniem /dev/sdh, uruchom unzip -p file.zip >/dev/sdh. (Wiem, że stosowanie ddjest tradycyjne, ale nie jest konieczne.)
John1024,

Huh Czy to by działało bez dd? Pomyślałem, że potrzebny będzie parametr Rozmiar bloku.
CRThaze

2
Tak, działa bez dd. W przeszłości rozmiar bloku był bardzo ważny podczas pisania na taśmy. W przypadku dysków nie ma to znaczenia.
John1024,

1
@TheCzar Oprócz taśm parametr wielkości bloku ddpozwala tylko na utratę danych lub spowolnienie (lub w rzadkich przypadkach przyspiesza trochę, jeśli jest wystarczająco duży). Zapomnij o dd, to bardzo rzadko przydatne.
Gilles „SO- przestań być zły”

Odpowiedzi:


24

Użyj unzip -p:

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

Kod działa, i nie ma miejsca na moim dysku twardym ani na pamięci RAM. Jak dotąd wszystko dobrze.
IQAndreas

5
Lub po prostu unzip -p … >/dev/sdb.
Gilles „SO- przestań być zły”

1
@Gilles poza minusem ddjest czasem przydatny w sudo:unzip -p ... | sudo dd of=/dev/sdb bs=1M
yaegashi

5
@yaegashi unzip -p … | sudo 'cat >/dev/sdb'Ale wolę, sudo chown $USER /dev/sdbco daje mi dodatkową możliwość sprawdzenia, czy piszę na właściwym urządzeniu.
Gilles „SO- przestań być zły”

Działa pięknie! Czy mógłbyś edytować dokładną nazwę pliku na wypadek, gdyby ktoś chciał po prostu skopiować i wkleić polecenie?
IQAndreas,

0

Po drobnych zmaganiach z poprzednim rozwiązaniem:

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

lub, jeśli chcesz zobaczyć postęp i zainstalowałeś pv:

 unzip -p ~/Downloads/2020-02-05-raspbian-buster-lite.zip | pv | sudo dd of=/dev/disk2 bs=1m
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.