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,baseurl,它的意思是base模块的代码要通过giturl处下载。

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笔记的更多相关文章

  1. Openwrt笔记-IPv6与启动顺序

    之前使用了nat6方案和x3c8021x实现了校园网上网和IPv6连接:但实际使用时经常出现莫名奇妙的问题.IPv6状态要么是无法连接网络,要么是无法连接Internet:经过研究,发现大概是自启动项 ...

  2. HG255D刷机OPENWRT笔记

    1.按网上的办法如下:(http://www.right.com.cn/forum/thread-143721-1-1.html) 自已编译了OPENWRT,然后拆开外壳接上TTL线,通电启动 然后用 ...

  3. [Openwrt 项目开发笔记]:Openwrt平台搭建(一)

    [Openwrt项目开发笔记]系列文章传送门:http://www.cnblogs.com/double-win/p/3888399.html 正文: 最近开始着手进行Openwrt平台的物联网网关设 ...

  4. 转:openwrt中luci学习笔记

    原文地址:openwrt中luci学习笔记 最近在学习OpenWrt,需要在OpenWrt的WEB界面增加内容,本文将讲述修改OpenWrt的过程和其中遇到的问题. 一.WEB界面开发         ...

  5. [openwrt 项目开发笔记]: 传送门

    “Openwrt 项目开发笔记”系列传送门: [Openwrt 项目开发笔记]:Openwrt平台搭建(一) (2014-07-11 00:11) [Openwrt 项目开发笔记]:Openwrt平台 ...

  6. [Openwrt 项目开发笔记]:PHP+Nginx安装(七)

    [Openwrt项目开发笔记]系列文章传送门:http://www.cnblogs.com/double-win/p/3888399.html 正文: 在上一节中,我们已经搭建了MySQL数据库了,因 ...

  7. [Openwrt 项目开发笔记]:MySQL配置(六)

    [Openwrt项目开发笔记]系列文章传送门:http://www.cnblogs.com/double-win/p/3888399.html 正文: 在本人的项目中,运行在路由器上的服务器采用Ngi ...

  8. [Openwrt 项目开发笔记]:DDNS设置(五)

    [Openwrt项目开发笔记]系列文章传送门:http://www.cnblogs.com/double-win/p/3888399.html 正文: 在上一节中,我主要讲述了如何在Openwrt上安 ...

  9. [Openwrt 项目开发笔记]:Samba服务&vsFTP服务(四)

    [Openwrt项目开发笔记]系列文章传送门:http://www.cnblogs.com/double-win/p/3888399.html 正文: 在上一节中,我们讲述了如何在路由器上挂载U盘,以 ...

随机推荐

  1. 前端自己导出Excel

    1.导出当前页面,这是最简单的,只是导出当前页面的数据. exportData(tableid, name) { let table; let uri = 'data:application/vnd. ...

  2. Windows 10安装

    使用U盘安装操作系统教程 本教程介绍如何使用U盘安装操作系统,以安装Windows 10过程作为举例. 1 获取操作系统iso镜像文件 获取操作系统ISO镜像文件有很多途径,此处介绍从微软官网下载wi ...

  3. Castle Windsor Ioc 一个接口多个实现解决方案

    介绍 Castle Windsor 是微软的Ioc类库,本文主要介绍解决一个接口多个实现的解决方案 接口和类 以下内容不是真实的实际场景,仅仅是提供解决一个接口多个实现的思路. 业务场景类 先假设有一 ...

  4. POI进行导出时候发现有不可读取的内容

    通过后台查询数据,然后使用poi进行导出时候,excel进行打开会出现下面的异常: 但是在WPS中就没有问题, 如果点击否,则不会显示任何内容,点击是,就会弹出来 查看修改记录为: 刚开始也进行了很多 ...

  5. 小知识——c++关于指针的理解

    参考文章: 简介: 指针可以简化c++编程,在一些任务中没有指针是无法完成的(动态内存分配) 使用 & 可以获得变量在内存中的地址: eg: #include <iostream> ...

  6. Robot Framework--RIDE面板与库的说明

    Robot Framework的测试用例是以project作为单位进行管理的.一个project可以包含多个Test Suite文件,每一个Test Suite可以包含多条测试用例一个Test Sui ...

  7. PL/SQL存储过程

    一.概述 过程和函数统称为PL/SQL子程序,他们是被命名的PL/SQL块,均存储于数据库中. 并通过输入.输出和输入输出参数与其调用者交换信息.唯一区别是函数总向调用者返回数据. 二.存储过程详解 ...

  8. SVN工作区同步

    单击“团队同步”菜单项或“团队同步”视角的“团队”工具栏上的“同步”按钮后,“同步视图”中将显示SVN工作区同步.它提供了从远程检查本地副本的更改类型的概率. 这是“同步视图”中的 “SVN工作空间同 ...

  9. 在vscode中进行nodejs服务端代码调试(代码修改自动重启服务端)

    使用到的是nodemon,具体在package.json文件中配置如下: "scripts": { "start": "node ./bin/www& ...

  10. STM32的指令周期

    在keil中编程时,写了一行代码,然后就想知道,执行这句C代码需要多长时间. 时钟周期在这就不解释了,频率的倒数. 指令周期,个人理解就是cpu执行一条汇编指令所需要的时间. 我们知道cm3使用的三级 ...