DD-WRT는 NVRAM 공간을 낭비합니까?

DD-WRT는 NVRAM 공간을 낭비합니까?

이 두 명령을 어떻게 오해했는지 설명해주세요.

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)

내 라우터의 플래시 페이지는 128kB(0x20000)이며 12페이지(0x18/0x02)는 NVRAM 전용입니다. 그렇다면 사용 가능한 총 NVRAM이 왜 한 페이지(52341+78731 B)입니까?

답변1

답변이 부족하여 이러한 추가 페이지는 절대 기록되지 않으므로 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 out

관련 정보