我一直在开发一个 make 目标,它使用dd
(实际上dcfldd
)将 Raspbian Jessie 映像写入 SD 卡。目标只是
flash:
sudo dcfldd bs=4M if=$(IMGPATH) of=$(SDX)
sync
其中 $(SDX) 是 /dev/sdc。请参阅这个问题了解更多详细信息。
有一次,我从 USB 读卡器中取出 SD 卡,在 Raspberry Pi 中对其进行了测试,并记录了一些脚本更改。但是,在再次调用 make 目标之前,我忘记将其从 RPi 中取出并放回读卡器(读卡器仍在 USB 插槽中)。奇怪的是,没有出现任何错误;但几秒钟内就“写入”了约 4GB 的数据。
此后,正确放入卡片并再次调用目标,同样会出现超快速的“复制”,但卡片似乎并未发生改变。
我尝试使用 Ubuntu 中的“磁盘”工具和 gparted 多次重新格式化卡,但让它再次正常闪烁的唯一方法是重新启动机器。当然,我也尝试从 USB 插槽中移除并重新插入读卡器。
插入读卡器但没有卡时,我只能看到 /dev/sdc。插入卡后,我能看到 /dev/sdc、/dev/sdc1 和 /dev/sdc2(卡上有 Raspbian 映像)。
我在想
- dd 将它认为正在写入的数据放在哪里?
- 有没有什么方法可以让我无需重启就可以重置读卡器?
答案1
检查一下/dev/sdc
常规文件是否突然充满了您的数据。虽然我通常认为它是一个特殊文件,要么连接到实时设备,要么给出“未找到错误”,但在某些情况下,特殊文件可能会被意外删除。您必须root
这样做,但我以前也遇到过这种情况,您的症状非常熟悉。
如果它确实被删除了,那么您将需要阅读mknod
命令才能重新创建它。