Openwrt--系统分析

文章介绍了OpenWrt编译完成后各目录的用途,如bin目录包含编译成果如固件和ipk包,dl目录用于下载软件代码包,feeds目录用于扩展软件包,build_dir存储编译中间文件,staging_dir作为编译安装目录。此外,还提到了make-menuconfig菜单配置选项以及编译过程的相关设置。
摘要由CSDN通过智能技术生成

文件结构

编译完以后的文件结构如下

    moqi@ubuntu:~/sources$ tree -L 1 ./openwrt/
    ./openwrt/
    ├── BSDmakefile
    ├── COPYING
    ├── Config.in
    ├── LICENSES
    ├── Makefile
    ├── README.md
    ├── bin
    ├── build_dir
    ├── config
    ├── dl
    ├── feeds
    ├── feeds.conf.default
    ├── include
    ├── key-build
    ├── key-build.pub
    ├── key-build.ucert
    ├── key-build.ucert.revoke
    ├── logs
    ├── package
    ├── rules.mk
    ├── scripts
    ├── staging_dir
    ├── target
    ├── tmp
    ├── toolchain
    └── tools

常用目录介绍

bin

编译完成后的最终成果目录。例如烧录用的固件及ipk安装包

moqi@ubuntu:~/sources/openwrt$ tree -L 3 ./bin/
    ./bin/
    ├── packages
    │   └── mipsel_24kc
    │       ├── base
    │       ├── luci
    │       ├── packages
    │       ├── routing
    │       └── telephony
    └── targets
        └── ramips
            └── mt76x8
  • bin/bin/packages/mipsel_24kc/:编译完的ipk包存放路径。
  • bin/targets/ramips/mt76x8/:编译完以后的生成映像存放路径。
dl

下载软件代码包临时目录。编译前使用 make download V=s,可以将编译时需要的软件代码包下载到该目录。

feeds

扩展软件包目录。将一些不常用的软件包放在其他代码库中,通过feed机制可以自定义下载及配置。软件包的下载网址放在feeds.conf.default文件里。

    moqi@ubuntu:~/sources/openwrt$ tree -L 1 feeds
    feeds
    ├── luci
    ├── luci.index -> luci.tmp/.packageinfo
    ├── luci.targetindex -> luci.tmp/.targetinfo
    ├── luci.tmp
    ├── packages
    ├── packages.index -> packages.tmp/.packageinfo
    ├── packages.targetindex -> packages.tmp/.targetinfo
    ├── packages.tmp
    ├── routing
    ├── routing.index -> routing.tmp/.packageinfo
    ├── routing.targetindex -> routing.tmp/.targetinfo
    ├── routing.tmp
    ├── telephony
    ├── telephony.index -> telephony.tmp/.packageinfo
    ├── telephony.targetindex -> telephony.tmp/.targetinfo
    └── telephony.tmp
  • feeds/luci:Luci代码。
build_dir

编译中间文件目录。如生成的.o文件。

staging_dir

编译安装目录,文件安装到这里,并由这里的文件生成最终的编译成果。

    moqi@vmserver:~/sources/openwrt$ tree -L 1 ./staging_dir/
    ./staging_dir/
    ├── host
    ├── hostpkg
    ├── packages
    ├── target-mipsel_24kc_musl
    └── toolchain-mipsel_24kc_gcc-11.3.0_musl
  • staging_dir/host:该文件夹是一个微型的Linux 根目录,有自己的目录bin/, lib/等等。这是主机工具安装的位置,构建系统的其余部分会将该区域的目录前缀到环境变量PATH中。
  • staging_dir/toolchain-*:交叉编译链的解压后的存放文件,编译时使用不同的主控芯片后缀会不一样。
  • staging_dir/target-*:包含每个目标包已安装的版本;根目录形式,包含bin/,lib/等等,并且将会变成实际的根目录,仅作出一些调整就会打包进固件镜像中,像root-ramips之类。这里也有一些其他的文件在其中,主要生成软件包和开发软件包。编译时使用不同的主控芯片后缀会不一样。
target

指的是嵌入式平台,包括特定嵌入式平台的内容。如果需要对特定芯片修改内容,都在这个目录下。

    moqi@vmserver:~/sources/openwrt$ tree -L 1 target/
    target/
    ├── Config.in
    ├── Makefile
    ├── imagebuilder
    ├── linux
    ├── llvm-bpf
    ├── sdk
    └── toolchain
  • target/linux/ramips/:ramips系列芯片代码存放的位置,包括设备树文件、芯片初始化代码。
logs

如果打开了针对开发人员log选项,则将编译log保存在这个目录下,否则该目录不会创建。

make-menuconfig菜单

在Openwrt源码的顶层目录下输入 make menuconfig就可以编译菜单。

        Target System (MediaTek Ralink MIPS)  --->
        Subtarget (MT76x8 based boards)  --->
        Target Profile (Jotale JS76x8 32M)  --->
        Target Images  --->
    [ ] Enable experimental features by default
        Global build settings  --->
    [ ] Advanced configuration options (for developers)  ----
    [ ] Build the OpenWrt Image Builder
    [ ] Build the OpenWrt SDK
    [ ] Package the OpenWrt-based Toolchain
    [ ] Image configuration  --->
        Base system  --->
        Administration  --->
        Boot Loaders  --->
        Development  --->
        Extra packages  --->
        Firmware  --->
        Fonts  --->
        Kernel  ----
        Kernel modules  --->
        Languages  --->
        Libraries  --->
        LuCI  --->
        Mail  --->
        Multimedia  --->
        Network  --->
        Sound  --->
        Utilities  --->
        Xorg  --->
  • Target System:目标平台,例如一般Windows系统均为X86系统架构,嵌入式路由器通常有ARM、MIPS系统和博通系统。
  • Target Images:编译生成物控制,根据目标平台不同选项不同。例如根文件系统格式、内核空间大小和是否生成VirtualBox映像文件等。
  • Global build settings:全局编译设置,例如是否打开内核namespace等。
  • Advanced configuration options:针对开发人员的高级配置选项,包含设置下载文件目录、编译log和外部编译工具等。
  • Build the OpenWrt SDK:是否生成Openwrt的软件开发包,这样就可以离开Openwrt整体环境而进行模块编译和增加功能。
  • Image configuration:固件生成的软件包模块,即是否打开feed;.conf中的各个模块。
  • Base System:Openwrt基本系统。包括Openwrt的基本文件系统Base-file模块、实现DHCP和DNS代理的dnsmasq模块、软件包管理模块opkg、通用库ubox、系统总线ubux和防火墙firewall。
  • Development:开发包。例如调试工具gdb,代码检查和调优工具valarind等。
  • Firmware:各种硬件平台固件。
  • Kernel modules:内核模块,运行在操作系统内部。例如加密模块、各种USB渠道和netfilter扩展模块等。
  • Languages:不是国际化中的多语言支持模块,而是软件开发语言模块。如lua,Python。
  • libraries:一些动态链接库。例如XML语言解析库libxml2,和内核通信的libnfnetlink库,压缩和解压缩算法zlib,微型数据库libsqlite3等。
  • LuCI:Openwrt管理UI模块,例如动态DNS管理模块luci-app-ddns、防火墙管理模块luci-app-firewall和QOS管理模块luci-app-qos等。
  • Mail:邮件传输客户端模块,例如msmtp软件包。
  • Multimedia:多媒体模块,例如ffmpeg。
  • Network:网络功能,Openwrt最具特色的核心模块。例如防火墙、路由、VPN和文件传输等。
  • Sound:音频模块
  • Utilities:一些不常用的工具模块。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值