如何使用单个命令将磁盘映像解压缩并添加到SD卡?


15

我受到以下限制:

  • 我的.zip计算机上有一个1.0 GB的文件,其中包含一个文件,磁盘映像为raspbian。未压缩时,此文件的大小为3.2 GB,名为2015-11-21-raspbian-jessie.img
  • 下载完zip文件后,我的计算机上的存储空间不足1.0 GB,没有足够的空间将图像提取到计算机上。
  • 该文件需要解压缩并使用plain old写入SD卡dd

在这些限制下,是否可以将图像写入SD卡?

我知道可以通过管道传输数据tar,然后再将数据管道传输到其他位置,但是,这对于zip文件格式是否仍然有效,还是需要在访问任何文件之前先解压缩整个档案?


我意识到我可以将zip文件解压缩到外部闪存驱动器中,但这更有趣。我想为挑战(和学习经验)而努力!
IQAndreas 2015年

3
如果您的SD卡是设备/dev/sdh,请运行unzip -p file.zip >/dev/sdh。(我知道使用dd是传统的做法,但这不是必须的。)
John1024

嗯 没有这个工作dd吗?我认为需要块大小参数。
CRThaze 2015年

2
是的,没有可以使用dd。过去,写入磁带时,块大小非常重要。对于磁盘,这无关紧要。
John1024

1
@TheCzar除了磁带外,块大小参数to dd只能丢失数据减慢速度(或者在极少数情况下,如果速度足够大,则可以加快速度)。算了dd,这很少有用。
吉尔斯(Gilles)'所以别再邪恶了'

Answers:


24

用途unzip -p

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

代码正在运行,并且我的硬盘空间和RAM都没有耗尽。到目前为止一切都很好。
IQAndreas

5
或者干脆unzip -p … >/dev/sdb
吉尔(Gilles)'所以

1
@Gilles除了缺点外,dd有时还可以用于sudounzip -p ... | sudo dd of=/dev/sdb bs=1M
yaegashi

5
@yaegashi unzip -p … | sudo 'cat >/dev/sdb'但是我更喜欢sudo chown $USER /dev/sdb这给了我额外的机会来检查我是否在写正确的设备。
吉尔斯(Gilles)'所以

效果很好!介意我在确切的文件名中进行编辑,以防有人只想复制并粘贴命令吗?
IQAndreas

0

经过与前一种解决方案的斗争后:

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

或者,如果您想查看进度并且已经安装了pv

 unzip -p ~/Downloads/2020-02-05-raspbian-buster-lite.zip | pv | sudo dd of=/dev/disk2 bs=1m
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.