OpenWrt笔记
1. OpenWrt目录结构说明
作者:辛勤的摆渡人
来源:CSDN
原文:https://blog.csdn.net/hunter168_wang/article/details/50780597
1.1. bin
bin目录存放的是一些输出文件,主要是存放OpenWrt编译好的开发环境,比如toolchain, SDK,Image制作工具,还存放一些package安装包(ipk包),
OpenWrt-ImageBuilder-bcm53xx.Linux-x86_64.tar.bz2
OpenWrt-SDK-bcm53xx_gcc-4.8-linaro_uClibc-0.9.33.2_eabi.Linux-x86_64.tar.bz2
OpenWrt-Toolchain-bcm53xx_gcc-4.8-linaro_uClibc-0.9.33.2_eabi.Linux-x86_64.tar.bz2
目录bin/bcm53xx/packages/主要包含下面四个子目录
base:
存放的是一些基础的软件安装包;
leadlcore:
存放的是联芯自定义的一些软件安装包;
luci:
存放的是一些UI相关的软件安装包
packages:
存放的是一些通用的软件安装包
1.2. build_dir
build_dir存放的是一些软件源码目录,解压缩后的程序源码均放在该目录,build_dir存在三个目录分别如下:
host子目录:
host子目录下存放的是开机系统需要的一些工具或程序,比如automake, autoconf, flex, sison, gettext,libtool等
target-arm_cortex-a9_uClibc-0.9.33.2_eabi子目录:
该目录下存放的是用过feeds install安装或者用户自定义的一些程序比如samba, vsftpd,hostapd,dbus, iperf等等
toolchain-arm_cortex-a9_gcc-4.8-linaro_uClibc-0.9.33.2_eabi子目录:
该目录存放的是编译toolchain所需的一些源码包,比如linux内核目录, binutils源码包,gcc源码包;
1.3. config
该目录存放的是一些配置文件
Config-build.in
Config-devel.in
Config-images.in
Config-kernel.in
1.4. dl
软件源码包download目录,通过网络下载软件包(*.tar.bz2, *.tar.gz)均存放在此目录,一般编译某个软件时会从此目录找对应的软件源码包,然后解压到指定的源码目录中;
如果此目录没有对应软件的源码包,则根据此软件Makefile文件中指定的网络地址去下载,下载好的软件包会自动存放在该目录;
1.5. docs
文档目录,目前此目录下存放的也是代码,需要使用latex编译输出PDF后才可以阅读;
1.6. feeds
相关资源存放目录;
1.7. include
该目录存放的是编译时所需要的一些通用的Makefile脚本;
编译时会include到该目录中的makefile脚本
1.8. logs
1.9. package
顾名思义该目录与软件包有关系,package目录存放的软件包或者程序的配置文件,所有程序或者软件均会被分门别类的存放在package目录下,子目录列表如下
base-files boot devel feeds firmware kernel libs Makefile network system utils
再以网络相关的程序为例进行说明,network子目录下又包含如下目录
config
配置相关的程序或者软件,比如firewall
ipv6
ipv6协议相关的资料
services
网络服务相关的软件或者程序,比如hostapd, samba, odhcpd等等
utils
存放的是网络调试相关的一些工具,比如iperf, iw, tcpdump,等等
对于某一个指定的软件包目录,内部主要包含两个文件,
一个是Makefile,内部包含着软件的名字和版本,以及下载该软件包服务器网络地址;
另一个是patch目录,下载好对应版本的软件包后,打上对应的patch;
最后一个是files目录,
该目录存放的是此程序的默认配置文件;
说明:Makefile是必须具备的文件,而patch和file目录并非必选项,根据软件情况可有可无
1.10. scripts
该目录存放的是一些程序的脚本,
用户可以通过./script/feeds search/install 进行搜索或者安装相关软件;
1.11. staging_dir
stage_dir目录存放的子目录如下:
host
目前字母存放的输出文件为X86格式的,暂不清楚具体作用;
target-arm_cortex-a9_uClibc-0.9.33.2_eabi
该子目录主要存放的是编译出来的根文件系统,即rootfs
toolchain-arm_cortex-a9_gcc-4.8-linaro_uClibc-0.9.33.2_eabi
该子目录存放的是编译好的toolchain目录树,
1.12. target
1.13. tmp
1.14. toolchain
OpenWrt编译toolchain时依赖的Makefile以及配置文件存放目录;
1.15. tools
tools目录类似于packages目录,只不过该目录存放的是系统必须的一些程序或者软件的配置文件目录;
2.通过feeds编译程序
在openwrt的根目录下有feeds.conf或者feeds.conf.default文件,里面的内容类似如下
src-git base https://git.openwrt.org/openwrt/openwrt.git^412d80c
src-git packages https://git.openwrt.org/feed/packages.git^76ebe2b
src-git luci https://git.openwrt.org/project/luci.git^84692e5
src-git routing https://git.openwrt.org/feed/routing.git^e5fe4b6
src-git telephony https://git.openwrt.org/feed/telephony.git^16bad9e
以第一行为例,src-git base https://git.openwrt.org/openwrt/openwrt.git^412d80c,它包含3个部分,src-git,base,url,它的意思是base模块的代码要通过git从url处下载。
2.1更新/下载
./scripts/feeds update packages luci //对应feeds.conf文件的第二列的模块
./scripts/feeds update -a //下载所有模块
这时会把文件检出到feeds目录下,下一步就是安装:
./scripts/feeds install feeds/base/package/devel/gdb //这里我要安装gdb
执行完这里,脚本会把gdb编译时所有依赖在package/feeds/base建立一个同名符号链接,链接到feeds对应的目录下
2.2配置
使用make menuconfig配置你要编译的模块是何种安装方式。
2.3编译安装
make package/feeds/base/gdb/{clean,prepare,compile,install} V=99
在clean,prepare,compile,install各个阶段会做不同的动作,比如prepare可能就会拉源码包下来,到dl目录,install就会将ipk安装到bin对应的目录下。
OpenWrt笔记的更多相关文章
- Openwrt笔记-IPv6与启动顺序
之前使用了nat6方案和x3c8021x实现了校园网上网和IPv6连接:但实际使用时经常出现莫名奇妙的问题.IPv6状态要么是无法连接网络,要么是无法连接Internet:经过研究,发现大概是自启动项 ...
- HG255D刷机OPENWRT笔记
1.按网上的办法如下:(http://www.right.com.cn/forum/thread-143721-1-1.html) 自已编译了OPENWRT,然后拆开外壳接上TTL线,通电启动 然后用 ...
- [Openwrt 项目开发笔记]:Openwrt平台搭建(一)
[Openwrt项目开发笔记]系列文章传送门:http://www.cnblogs.com/double-win/p/3888399.html 正文: 最近开始着手进行Openwrt平台的物联网网关设 ...
- 转:openwrt中luci学习笔记
原文地址:openwrt中luci学习笔记 最近在学习OpenWrt,需要在OpenWrt的WEB界面增加内容,本文将讲述修改OpenWrt的过程和其中遇到的问题. 一.WEB界面开发 ...
- [openwrt 项目开发笔记]: 传送门
“Openwrt 项目开发笔记”系列传送门: [Openwrt 项目开发笔记]:Openwrt平台搭建(一) (2014-07-11 00:11) [Openwrt 项目开发笔记]:Openwrt平台 ...
- [Openwrt 项目开发笔记]:PHP+Nginx安装(七)
[Openwrt项目开发笔记]系列文章传送门:http://www.cnblogs.com/double-win/p/3888399.html 正文: 在上一节中,我们已经搭建了MySQL数据库了,因 ...
- [Openwrt 项目开发笔记]:MySQL配置(六)
[Openwrt项目开发笔记]系列文章传送门:http://www.cnblogs.com/double-win/p/3888399.html 正文: 在本人的项目中,运行在路由器上的服务器采用Ngi ...
- [Openwrt 项目开发笔记]:DDNS设置(五)
[Openwrt项目开发笔记]系列文章传送门:http://www.cnblogs.com/double-win/p/3888399.html 正文: 在上一节中,我主要讲述了如何在Openwrt上安 ...
- [Openwrt 项目开发笔记]:Samba服务&vsFTP服务(四)
[Openwrt项目开发笔记]系列文章传送门:http://www.cnblogs.com/double-win/p/3888399.html 正文: 在上一节中,我们讲述了如何在路由器上挂载U盘,以 ...
随机推荐
- English-培训6-Do you like rap?
- ios数组倒序
比如有一个数组: NSArray *arr = @["]; 倒过来排序: arr = [[arr reverseObjectEnumerator] allObjects]; NSMutabl ...
- jmeter学习笔记(三)配置元件之HTTP信息头管理
使用jmeter模拟发送http请求时,有些请求是需要带上HTTP请求头里面的信息.比如页面需要登录信息的,那个就需要用户登录信息authorization.这个时候是需要使用到HTTP信息头管理器. ...
- 修改Linux命令:ls为例
Linux命令可以被修改,用于启动一些不起眼的程序. 操作方法如下: whereis ls cd /usr/bin mv ls ls_bak vim ls 新建的ls文件中 chmod +x ls c ...
- [Docker][ansible-playbook]3 持续集成环境之分布式部署
预计阅读时间: 30分钟 本期解决痛点如下:1. 代码版本的多样性,编译环境的多样性如何解决?答案是使用docker,将不同的编译环境images统统打包到私有仓库上,根据需求进行下载,从宿主机上挂载 ...
- ArcGIS + Python 批量裁剪、添加X/Y坐标脚本
前言 前一段时间,同事拿来的数据范围太大,用不了那么多(只需要一个乡镇的,结果拿来区县的),太多了加载也是问题.所以就让我给处理下. 由于文件较多,手动裁剪的话,我一个一个用ArcGIS工具箱中的工具 ...
- 9 loader - 分析webpack调用第三方loader的过程
注意:webpack处理第三方文件类型的过程: 1.发现这个要处理的文件不是JS文件,然后就去配置文件中,查找有没有对应的第三方loader规则 2.如果能找到对应的规则,就会调用对应的loader处 ...
- Mac+Appium+Python+Pycharm环境搭建
为什么优先选择Mac做自动化测试? 1.既可以做iOS端的测试也可以进行Android端测试 2.Mac运行效率相对于Win要高很多,可以真正发挥appium的功能 以下是在Mac上完整搭建过程 一. ...
- DOM(innerHTML和className)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Codeforces Round #603 (Div. 2) A,B,C,D【E题待补】
#include<bits/stdc++.h> using namespace std; #define int long long signed main(){ int _; cin&g ...