终于设法自己做到了,可以做到!
这里$l>
代表您的机器,带有IP 192.168.0.10
. 并且$e>
是在没有 tar 的嵌入式设备上完成的,在我的例子中是一个机器人。dd
它使用能够复制整个磁盘的老式。
$l> nc -p 12345 -l | dd obs=4K of=/tmp/file.jffs2
$e> dd ibs=4K if=/dev/mtdblock2 | nc 192.168.0.10 12345
就是这样,但因为不是每个人都知道如何读取这种形式的文件系统,所以这是挂载它的方式:
file /tmp/file.jffs2
/tmp/file.jffs2: Linux jffs2 filesystem data little endian
sudo su #careful
mknod /tmp/mtdblock0 b 31 0
modprobe loop
losetup /dev/loop0 /tmp/file.jffs2
modprobe mtdblock
modprobe block2mtd
echo "/dev/loop0,128KiB" > /sys/module/block2mtd/parameters/block2mtd
modprobe jffs2
mkdir /media/robot
mount -t jffs2 /tmp/mtdblock0 /media/robot
Ctrl-D #back as normal user
是的,您需要环回设备,否则:
sudo mount -t jffs2 /tmp/file.jffs2 /media/robot
mount: /tmp/file.jffs2 is not a block device (maybe try `-o loop'?)
从逻辑上讲,它是一个文件(字符),而不是块设备。我唯一不知道的是dd
,嵌入式设备上的命令是否有语法只能选择要包含的文件系统的子集。我认为这不太可能,因为这需要dd
理解jffs2
,而它的优势在于它的原始字节复制行为。