Làm cách nào để giải nén và dd hình ảnh đĩa vào Thẻ SD bằng một lệnh duy nhất?


14

Tôi đang bị hạn chế sau:

  • Tôi có một .ziptệp 1.0 GB trên máy tính chứa một tệp, ảnh đĩa raspbian. Khi không nén, tệp này có dung lượng lớn 3,2 GB và được đặt tên 2015-11-21-raspbian-jessie.img.
  • Sau khi tải xuống tệp zip, tôi chỉ còn dưới 1 GB dung lượng lưu trữ trên máy tính, không đủ dung lượng để trích xuất hình ảnh vào máy tính của tôi.
  • Tập tin này cần được giải nén và ghi vào thẻ SD bằng cách sử dụng cũ dd.

Tôi có thể ghi hình ảnh vào thẻ SD theo các hạn chế này không?

Tôi biết rằng có thể chuyển dữ liệu qua tarvà sau đó chuyển dữ liệu đó đi nơi khác, tuy nhiên, điều này sẽ vẫn hoạt động cho zipđịnh dạng tệp hay toàn bộ kho lưu trữ cần phải được giải nén trước khi có thể truy cập bất kỳ tệp nào?


Tôi nhận ra rằng tôi chỉ có thể trích xuất tệp zip vào ổ đĩa flash ngoài, nhưng điều này thú vị hơn. Tôi muốn thực hiện điều này cho thử thách (và học hỏi kinh nghiệm) của nó!
IQAndreas

3
Nếu thẻ SD của bạn là thiết bị /dev/sdh, sau đó chạy unzip -p file.zip >/dev/sdh. (Tôi biết rằng việc sử dụng ddlà truyền thống nhưng không cần thiết.)
John1024

Huh. Điều đó sẽ làm việc mà không có dd? Tôi hình dung tham số Kích thước khối sẽ là cần thiết.
CRThaze

2
Vâng, nó hoạt động mà không có dd. Trước đây, kích thước khối rất quan trọng khi ghi vào băng. Đối với đĩa, nó không thành vấn đề.
John1024

1
@TheCzar Ngoài băng, tham số kích thước khối ddchỉ có thể mất dữ liệu hoặc làm chậm mọi thứ (hoặc trong trường hợp hiếm hoi tăng tốc mọi thứ lên một chút, nếu đủ lớn). Quên đi dd, nó rất hiếm khi hữu ích.
Gilles 'SO- ngừng trở nên xấu xa'

Câu trả lời:


24

Sử dụng unzip -p:

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

Mã đang chạy và không gian cứng cũng như RAM của tôi không hết. Tất cả đều tốt cho đến nay.
IQAndreas

5
Hoặc đơn giản unzip -p … >/dev/sdb.
Gilles 'SO- ngừng trở nên xấu xa'

1
@Gilles bên cạnh nhược điểm, ddđôi khi rất hữu ích với sudo:unzip -p ... | sudo dd of=/dev/sdb bs=1M
yaegashi

5
@yaegashi unzip -p … | sudo 'cat >/dev/sdb'Nhưng tôi thích sudo chown $USER /dev/sdbđiều đó cho tôi thêm một cơ hội để kiểm tra xem tôi có viết đúng thiết bị không.
Gilles 'SO- ngừng trở nên xấu xa'

Nó hoạt động rất đẹp! Nếu tôi chỉnh sửa tên tệp chính xác trong trường hợp bất cứ ai chỉ muốn sao chép và dán lệnh?
IQAndreas

0

Sau một chút vật lộn với giải pháp cũ:

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

hoặc, nếu bạn muốn xem tiến trình và bạn đã cài đặt pv:

 unzip -p ~/Downloads/2020-02-05-raspbian-buster-lite.zip | pv | sudo dd of=/dev/disk2 bs=1m
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.