tsb*_*lan 7 linux sd-card dd raspberry-pi
对于机器人项目,我组装了一个 make 目标,它使用dd(实际上dcfldd)将 Raspbian Jessie 图像写入 SD 卡。这样,我可以放心,我的环境可以随时从头开始重现。
制作目标只是
flash:
sudo dcfldd bs=4M if=$(IMGPATH) of=$(SDX)
sync
Run Code Online (Sandbox Code Playgroud)
$(SDX)/dev/sdc在哪里,并且意味着前面有一个脚本,该脚本将映像挂载到 /mnt/img,进行一些修改、调用sync,然后卸载它。
这个过程似乎工作正常,除了我总是需要调用 make 目标两次——第一次,如果我正确弹出整个读卡器然后重新插入,图像中的两个分区之一无法安装,而且,如果我尝试从中启动 Raspberry Pi,我会遇到内核恐慌。
在尝试闪存卡(使用 Make 目标或在终端中手动),使用 Ubuntu 的“弹出父驱动器”启动器上下文菜单选项弹出,移除并重新插入读卡器后,引导分区在 Nautilus 中打开,但我得到了下面的对话框,没有主分区。
dmesg 的最后一百行左右在这里。可能相关的是
[100640.545190] FAT-fs (sdb1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.
Run Code Online (Sandbox Code Playgroud)
和
[101082.691558] EXT4-fs (sdb2): bad geometry: block count 3894272 exceeds size of device (964096 blocks)
Run Code Online (Sandbox Code Playgroud)
正如第一个建议的那样,我做了sudo fsck /dev/sdb,并得到以下内容。
fsck from util-linux 2.20.1
e2fsck 1.42.9 (4-Feb-2014)
fsck.ext2: No medium found while trying to open /dev/sdb
The superblock could not be read or does not describe a valid ext2/ext3/ext4
filesystem. If the device is valid and it really contains an ext2/ext3/ext4
filesystem (and not swap or ufs or something else), then the superblock
is corrupt, and you might try running e2fsck with an alternate superblock:
e2fsck -b 8193 <device>
or
e2fsck -b 32768 <device>
Run Code Online (Sandbox Code Playgroud)
如果我做
sudo dcfldd bs=4M if=/dev/sdb of=/tmp/from-sd-card.img count=1024
cmp /tmp/from-sd-card.img /home/tsbertalan/workspace/gunnar/2016-05-27-raspbian-jessie.img
Run Code Online (Sandbox Code Playgroud)
我得到
/tmp/from-sd-card.img /home/tsbertalan/workspace/gunnar/2016-05-27-raspbian-jessie.img differ: char 4194342, line 1
Run Code Online (Sandbox Code Playgroud)
如果我这样做
cmp -b --verbose /tmp/from-sd-card.img /home/tsbertalan/workspace/gunnar/2016-05-27-raspbian-jessie.img
Run Code Online (Sandbox Code Playgroud)
我得到
4194342 1 ^A 0 ^@
70255618 72 : 257 M-/
70255619 35 ^] 3 ^C
70255622 375 M-} 266 M-6
70255623 166 v 16 ^N
70255625 34 ^\ 114 L
70255626 345 M-e 274 M-<
70255627 4 ^D 0 ^@
70255629 77 ? 14 ^L
70255630 371 M-y 176 ~
70255631 144 d 1 ^A
70255633 326 M-V 200 M-^@
70255634 256 M-. 252 M-*
70255635 32 ^Z 1 ^A
70255661 373 M-{ 114 L
70255662 123 S 124 T
70255665 105 E 120 P
70255666 132 Z 124 T
70255669 24 ^T 2 ^B
70255754 0 ^@ 155 m
70255823 352 M-j 353 M-k
70255993 125 U 201 M-^A
70255994 323 M-S 343 M-c
70255995 257 M-/ 71 9
1815085083 72 : 0 ^@
1815085084 103 C 132 Z
Run Code Online (Sandbox Code Playgroud)
这4194342似乎是一致的。
如果我将正确闪存的卡插入 RPI,启动它然后关闭它,我只能重现该问题。在此之后,需要两次尝试才能正确刷卡。 我现在强烈怀疑Raspbian 在第一次启动时执行的自动调整大小 可能是这个问题的一部分。如果这个问题更适合 Raspberry Pi stackexchange 站点,它可以移到那里。
这里发生了什么?有没有其他方法我应该写这个图像,以便它在第一次尝试时起作用?我不想不必要地烧毁我有限的 SD 卡写入周期。
我只有一个读卡器来测试这个,但我已经尝试过 16GB 三星 EVO micro SDHC、8GB SanDisk Ultra micro SDHC 和 32GB SanDisk Ultra micro SDHC,结果都一样。
[101082.691558] EXT4-fs (sdb2):几何结构错误:块计数 3894272 超出设备大小(964096 块)
文件系统标头已损坏。一定要与自动调整大小工具的维护者一起打开一个错误。
| 归档时间: |
|
| 查看次数: |
532 次 |
| 最近记录: |