请解释我是如何误解这两条命令的:
root@DD-WRT:/tmp/var/log# cat /proc/mtd
dev: size erasesize name
mtd0: 00080000 00020000 "boot"
mtd1: 00180000 00020000 "nvram"
mtd2: 01e00000 00020000 "linux"
mtd3: 01c60000 00020000 "rootfs"
mtd4: 05000000 00020000 "ddwrt"
root@DD-WRT:/tmp/var/log# nvram show >/dev/null
size: 52341 bytes (78731 left)我的路由器上的闪存页是128个kB (0x20000),有12页(0x18/0x02)专用于NVRAM。那么,为什么我总可用的NVRAM只有一页(52341+78731 B)?
发布于 2023-05-01 14:58:37
由于缺乏答案,我的结论是,这些额外的页面永远不会被写入,所以,是的,NVRAM可以做得更大。
要明确的是,这也意味着没有闪存磨损水平(也就是说,相同的页面正在被覆盖,尽管循环12页会延长闪存寿命12倍),所以我想我的路由器可能会在100,000 NVRAM覆盖后失败。另外,我发现巨大的mtd4也是完全空的,所以mtd1只是冰山一角。请看下面用于确认这些点的简单命令(除了mtd1的前半页之外,所有闪存读取都是空的),如果我错了,请纠正我。
当然,开发人员很慷慨地编写了这段代码,而且我知道为每个系统优化东西会更加复杂,所以我不会抱怨(老实说,除了磨损,我不知道我会用更多的内存做什么,即使我有编写固件的技能)。
root@DD-WRT:/tmp/var/log# dd if=/dev/mtd1 count=1 skip=0
<REDACTED BUT NOT EMPTY>
1+0 records in
1+0 records out
root@DD-WRT:/tmp/var/log# dd if=/dev/mtd1 count=1 skip=102
<REDACTED BUT NOT EMPTY>
1+0 records in
1+0 records out
root@DD-WRT:/tmp/var/log# dd if=/dev/mtd1 count=1 skip=103
1+0 records in
1+0 records out
root@DD-WRT:/tmp/var/log# dd if=/dev/mtd1 count=1 skip=256
1+0 records in
1+0 records out
root@DD-WRT:/tmp/var/log# dd if=/dev/mtd1 count=1 skip=3071
1+0 records in
1+0 records out
root@DD-WRT:/tmp/var/log# dd if=/dev/mtd1 count=1 skip=3072
0+0 records in
0+0 records out
root@DD-WRT:/tmp/var/log# dd if=/dev/mtd4 count=1 skip=0
1+0 records in
1+0 records out
root@DD-WRT:/tmp/var/log# dd if=/dev/mtd4 count=1 skip=256
1+0 records in
1+0 records out
root@DD-WRT:/tmp/var/log# dd if=/dev/mtd4 count=1 skip=183839
1+0 records in
1+0 records out
root@DD-WRT:/tmp/var/log# dd if=/dev/mtd4 count=1 skip=183840
0+0 records in
0+0 records outhttps://unix.stackexchange.com/questions/744477
复制相似问题