我经常将磁盘映像复制到 SD 卡,以便在 Raspberry Pi 上使用。我执行此操作的常用方法是通过dd if=/tmp/filesystem.img of=/dev/sdb
,这与在 上覆盖我计算机的引导驱动器仅差一个小拼写错误/dev/sda
。
有没有更安全的方法来做到这一点,例如。通过删除对启动驱动器进行原始写入的权限?
答案1
我认为最简单的解决方案是不要以 root 身份执行此操作并强制 SD 卡始终获得相同的字母。您可以使用 udev 来实现这一点。
首先使用 udevinfo 获取足够的属性来唯一标识您的卡(或多张卡),然后创建规则,为内核为您的 SD 卡创建的设备分配特定的字母和访问权限。来自谷歌的第一个链接
现在,如果由于某种原因失败,请为 dd 编写包装器脚本,该脚本将检查设备的属性是否与 SD 卡匹配,并且仅当它们确实运行 dd 时。
答案2
没有什么可以阻止您使用内置目标设备的脚本。
#!/bin/bash
#
# Usage: <script> <image>
#
img="$1"
dev=/dev/sdb
echo -n "Copy image $img to $dev..."
sleep 5
echo -n " writing..."
cat "$img" >"$dev"
ss=$?
echo " done"
exit $ss
将其放在您的$PATH
某个地方并确保它是可执行的。