OpenWrt File System Hierarchy / Memory Usage
OpenWrt File System Hierarchy | |||||||||
---|---|---|---|---|---|---|---|---|---|
Flash Storage Partitioning (TP-Link WR1043ND) | Main Memory Usage | ||||||||
Hardware | m25p80 spi0.0: m25p64 8192 KiB | main memory 32 768 KiB | |||||||
Layer1 | mtd0 u-boot 128 KiB | mtd5 firmware 8000 KiB | mtd4 art 64 KiB | Kernel space 3828 KiB | User space 28 940 KiB | ||||
Layer2 | mtd1 kernel 1280 KiB | mtd2 rootfs 6720 KiB | up to 50% | 512 KiB | remaining | ||||
mountpoint | / | ||||||||
filesystem | overlayfs | ||||||||
Layer3 | 1536 KiB | mtd3 rootfs_data 5184 KiB | |||||||
mountpoint | none | none | /rom | /overlay | none | /tmp | /dev | ||
filesystem | none | none | SquashFS | JFFS2 | none | tmpfs | tmpfs |
Mount Points
/
this is your entire root filesystem, it comprises/rom
and/overlay
. Please ignore/rom
and/overlay
and use exclusively/
for your daily routines!/rom
contains all the basic files, likebusybox
,dropbear
oriptables
. It also includes default configuration files used when booting into OpenWrt Failsafe mode. It does not contain the Linux kernel. All files in this directory are located on the SqashFS partition, and thus cannot be altered or deleted. But, because we use overlay_fs filesystem, so called overlay-whiteout-symlinks can be created on the JFFS2 partition./overlay
is the writable part of the file system that gets merged with/rom
to create a uniform/
-tree. It contains anything that was written to the router after installation, e.g. changed configuration files, additional packages installed withopkg
, etc. It is formated with JFFS2.
Rather than deleting the files, insert a whiteout, a special high-priority entry that marks the file as deleted. File system code that sees a whiteout entry for file F behaves as if F does not exist.
#!/bin/sh # shows all overlay-whiteout symlinks in the directory /overlay find /overlay -type l | while read FILE do [ -z "$FILE" ] && break if ls -la "$FILE" 2>&- | grep -q '(overlay-whiteout)'; then echo "$FILE" fi done
/tmp
is a tmpfs-partition#!/bin/sh # shows current size of the tmpfs-partition mounted to /tmp calc_tmpfs_size() {pi_size=$(awk '/MemTotal:/ {l=10485760;mt=($2*1024);print((s=mt/2)<l)&&(mt>l)?mt-l:s}' /proc/meminfo)}} echo $pi_size
History
- early OpenWrt-versions: the rootfs was readonly and only NVRAM-variables could be edited
- symlink approach