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. 手写DAO框架(五)-DAO层实现

    -------前篇:手写DAO框架(四)-SQL执行--------- 前言 通过上一篇,可以通过传入sql和对应的参数,可以执行sql并返回结果.但是对于一个DAO框架来说,要尽量的面向对象编程,也 ...

  2. vue中组件之间的通信

    一.vue中组件通信的种类 父组件向子组件的通信 子组件向父组件的通信 隔代组件之间的通信 兄弟 组件 之间的通信 二.实现通信的方式  props vue自定义的事件 消息订阅与发布 vuex sl ...

  3. python OpenCV使用

    关于OpenCV简介  OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux.Windows.Android和Mac OS操作系统上.它轻量级而且高效——由一系列 C ...

  4. Oracle GoldenGate(ogg)安装经验大汇总,采坑总结,绝对干货!

    一下是安装ogg过程中遇到的问题和解决办法,绝对良心干货,抽空会写更详细的安装教程.更多精彩内容请点击 OGG-00685 begin time prior to oldest log in log ...

  5. Scyther Advanced Topics

    建立非对称秘钥对 声明一个公钥函数和一个私钥函数: const pk2: Function ; const sk2: Function : 我们还声明这些函数代表非对称密钥对: inversekeys ...

  6. Swaks - SMTP界的瑞士军刀

    0x00 安装: kali中自带,或者从作者网页下载 http://www.jetmore.org/john/code/swaks/ 0x01 基本用法: swaks –to <要测试的邮箱&g ...

  7. 浅析 array_map array_walk

    map    主要是为了得到你的回调函数处理后的新数组,要的是结果. walk   主要是对每个参数都使用一次你的回调函数,要的是处理的过程. walk   可以认为提供额外参数给回调函数,map不可 ...

  8. django中使用form表单,数据库保存密码出现明文

  9. [Angular] Lazy Load CSS at runtime with the Angular CLI

    Ever had the need for multiple "app themes", or even to completely dynamically load CSS ba ...

  10. 百度静态资源库CDN库, cdnjs库,引入JS

    不适用本地引入js文件,而使用其他服务器引入JS文件,1,减轻服务器压力2,速度快3,可以缓存 cdnjs库,更新比较快https://cdnjs.com/ cdn库 引入JS文件如:jquerybo ...