open_wrt内核采用MTD设备驱动,一般linux内核都是该驱动,MTD是用于内存类设备(ROM,Flash)的linux驱动子系统,在硬件和上层提供了一个抽象的接口,是我们可以像操作哦硬盘一样操作该设备
下面是linux内核启动的部分:
[ 0.690000] 5 tp-link partitions found on MTD
device spi0.0
[ 0.700000] Creating 5 MTD partitions on
"spi0.0":
[ 0.700000] 0x000000000000-0x000000020000 :
"u-boot"
[ 0.710000] 0x000000020000-0x00000012a290 :
"kernel"
[ 0.730000] 0x00000012a290-0x0000007f0000 :
"rootfs"
[ 0.760000] 0x000000300000-0x0000007f0000 :
"rootfs_data"
[ 0.760000] 0x0000007f0000-0x000000800000 :
"art"
[ 0.770000] 0x000000020000-0x0000007f0000 :
"firmware"
Uboot(128k)引导,
kernel(1M),内核,不包括文件系统,
rootfs(6.7M),完整的系统文件包含只读和可写,
rotfs_data(4.9M),rootfs中的可写部分,
art(64k),ROM,Atheros方案中保存了无线的硬件参数,
firmware(7.9M),完整的固件位置,不包含uboot和art
Uboot启动kernel之后,kernel加载“ROM分区”(rootfs减去rootfs_data那一块)
ROM分区采用Linux内核支持的squashFS文件系统(一种压缩只读文件系统),加载完毕后将其挂载到/rom,同时挂载为跟文件系统
系统使用JFFS2文件系统格式化rootfs_data这部分,并经这部分挂载到/overlay
将/overlay透明挂载为/
将一部分内存挂在为/tmp目录
有两个位置最终都挂载到了/目录,小伙伴肯定很好奇根文件系统到底是哪个,这个是openwrt设计的很nice的地方,它采用了一种叫overlay透明挂载技术,首先将/rom挂载为根文件,然后用/overlay覆盖在根文件之上,然后,文件系统中的变更,修改都在overlay中记录,/rom不变,这样恢复出厂设置就很容易,删除掉/overlay下所有的文件即可。
这样也就可以知道那个bpi官方提供的openwrt的img是什么了,就是uboot+kernal+文件系统
|