Openwrt 学习记录
修订记录
| 修订时间 | 修订内容 | 修订人 | 
|---|---|---|
| 20200720 | 搭建文章基本框架; OpenWrt驱动开发流程;  | 
      JD | 
| 20200828 | 补充Openwrt文件系统部分; overlay手动挂载;  | 
      JD | 
简介
OpenWrt is a highly extensible GNU/Linux distribution for embedded devices (typically wireless routers). —Wiki
编译
Make方法
模块的编译以及其他make方法
make package/tcpdump/clean
make package/tcpdump/compile
添加 V=s 可以查看详细的编译过程
其他全局编译命令
make clean
源码目录简介
通过网络上一些博文的学习,初步了解了openwrt的源码目录框架。一般我们位openwrt做一些定制化的修改,只需要修改package目录和config.in文件即可。
-config 
-include 
-package #各种功能的软件包,我们自己的模块/软件可以放于此处
-scripts
-target 
-toolchains
-tools
Config.in #通常配置编译模块我们需要在此配置
Makefile
rules.mk
在执行编译后,还会生成几个目录。编好的版本也位于其中的build_der/version。
参考文档:
启动流程
驱动开发
由前面简单介绍的Openwrt的源码目录可知,如果需要加入我们自己定制的模块,通常我们将模块放置于package/kernel目录下,具体模块组成框架及内容模仿其他内核模块的写法。
demo
├── Makefile
└── src
    ├── Kconfig(非必要)
    ├── demo.c
    └── Makefile
为了避免重复造轮子,具体实现可以看如下参考文档。
参考文档:
参考文档
应用程序编译及其make方法
demo
├── Makefile
|── file
|   |── demo(启动脚本)
|   |── conf(配置文件)
|   |__ ***
|
└── src
    ├── demo.h
    ├── demo.c
    └── Makefile
参考链接
- openwrt中添加自定义应用模块
 - OpenWRT 增加内核模块及应用方法
 - openwrt编译 – 添加用户自定义app
 - 
    
Openwrt 文件系统
 
overlay
手动挂载overlay
首先通过如下命令cat /proc/mtd查看rootfs_data分区所执行的flash内存块。 我的系统是/dev/mtdblock11 对应的 rootfs_data。
mount -n -t jffs2 /dev/mtdblock11 -o rw,noatime,mode=0755 /overlay
mount -n -t overlayfs overlayfs:/overlay -o rw,noatime,lowerdir=/,upperdir=/overlay /mnt
mount -n /proc -o noatime,--move /mnt/proc
pivot_root /mnt /mnt/rom 
mount -n /rom/dev -o noatime,--move /dev
mount -n /rom/tmp -o noatime,--move /tmp
mount -n /rom/sys -o noatime,--move /sys
mount -n /rom/overlay -o noatime,--move /overlay