原文:Installing Operating System Images on Linux

请注意:使用dd工具可以覆盖你机器上的所有分区。如果在下面的指令中输入了错误的设备号,你将可能删除你的Linux主分区。请谨慎输入。
  • 运行 df -h 命令查看已加载的设备。
  • 如果你的机器有SD卡插槽,插入SD卡。如果没有,把SD卡插入一个SD读卡器,然后再把读卡器连接到电脑。
  • 再次运行 df -h 命令。新出现的设备就是你的SD卡。左边的列显示SD卡的设备名,类似于 /dev/mmcblk0p1/dev/sdd1。设备名的最后部分(分别为p11)是分区号,不过我们要写入整个SD卡,而不是某一个分区。所以你需要删除设备名的最后部分(例如/dev/mmcblk0/dev/sdd)。注意:同一张SD卡可能在df的输出中出现多次;一张已写入树莓派镜像的SD卡更是如此,这是因为镜像有多个分区。
  • 现在你已知道了SD卡的设备名,你需要卸载它以保证镜像写入期间SD卡不可读写。
  • 运行 umount /dev/sdd1 命令,用你的SD卡设备名替换sdd1(包含分区号)
  • 如果df命令的输出显示SD卡有多分区被加载,你需要卸载所有分区。
  • 在控制台中输入下面的命令向SD卡写入镜像。用你自己的.img文件替换if=参数,用你SD卡设备名/dev/sdd替换of=参数。请使用正确的设备名,否则你将损失磁盘上的所有数据。设备名不应包含分区号,例如:sdd, 而不是sdds1sddp1; mmcblk0, 而不是 mmcblk0p1

    dd bs=4M if=2015-05-05-raspbian-wheezy.img of=/dev/sdd

  • 请注意:大部分情况下4M的 block size 都能正常工作。如不行,可尝试修改为1M,尽管这将需要更长的时间。
  • 同时注意:如果你没使用root登录,你需要在命令前面加入sudo
  • 控制台将会冻结因为dd命令不会显示任何输出;大概需要超过5分钟的时间来完成写卡。如果你的读卡器有LED,那么在写入期间它将闪烁。你可以在另一个控制台输入pkill -USR1 -n -x dd来查看拷贝进度,如果你不是root登录记得加入sudo。进度将显示在原控制台而不是运行pkill的控制台;由于缓存,显示可能有延迟。
  • dcfldd替换dd;它将有一个写入进度展示。
  • 你可以使用dd把SD卡上的数据回写到硬盘上的一个镜像文件,然后使用diffmd5sum与原镜像进行比对。
  • SD卡导出的镜像比原始镜像大,这是因为dd拷贝整个SD卡。我们必须裁剪导出的镜像让它和原始镜像一样大。确保if=的参数替换为正确的设备号。diff命令将报告两个镜像是一致的。

    dd bs=4M if=/dev/sdd of=from-sd-card.img
    truncate --reference 2015-05-05-raspbian-wheezy.img from-sd-card.img
    diff -s from-sd-card.img 2015-05-05-raspbian-wheezy.img

  • 运行sync,确保缓存数据都已写入磁盘,之后可以安全卸载SD卡。
  • 从SD读卡器取出SD卡。

本文由u0u0翻译于2015.7.24

标签: 树莓派, dd

添加新评论