查看: 638|回复: 1
打印 上一主题 下一主题

open_wrt存储结构分析

[复制链接] qrcode

32

主题

39

帖子

114

积分

注册会员

Rank: 2

积分
114
楼主
跳转到指定楼层
发表于 2014-12-26 11:41 PM | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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)ROMAtheros方案中保存了无线的硬件参数,

firmware(7.9M),完整的固件位置,不包含ubootart


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+文件系统


回复

使用道具 举报

0

主题

83

帖子

8

积分

新手上路

Rank: 1

积分
8
沙发
发表于 2014-12-27 03:17 PM | 只看该作者
名字少了o,技术贴必须顶
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表