OpenWrt 学习笔记【2】编译&固件生成过程&make clean

硬件介绍

  1. 硬件平台为QCA9531,64M/128M DDR, 16M Flash
  2. 目标是做一款带4G功能的工业网关产品

第一次编译

看了大神写的执行make menuconfig/kernel_menuconfig 的流程分析:
openwrt make menuconfig流程分析
openwrt make kernel_menuconfig流程分析
大致流程如下:
a.顶层Makefile调用toplevel.mk,执行其中的menuconfig 目标
a.1 编译script/config/mconf
a.2 调用scan.mk生成tmp/.packageinfo文件
a.3 使用metadata.pl脚本根据tmp/.packageinfo生成tmp/.config-package文件
a.4 调用script/config/mconf Config.in 生成图形配置界面
b.scan.mk的作用就是扫描package和target目录下的Makefile,根据Makefile中的内容生成tmp/.packageinfo,供metadata.pl使用
c.Config.in 只是配置文件,作为mconf的参数

以后信息量很大,苦于对脚本语言尚未开窍,不得其要领;

  • 在根目录执行make menuconfig
    Target System --> Atheros AR7xxx/AR9xxx
    Subtarget --> Generic
    Target Profile --> Qualcomm Atheros AP147-010 reference board
    Target Images --> [+] ext4, [+] squashfs, [+] GZip images
    others default…
  • make -j1 V=s
  • 在/bin/targets/ar71xx/generic生成内核、文件系统、整个bin文件
  • 区别与QSDK编译生成的kernel和rootfs可以单独通过tftp更新,而openwrt编译也生成了内核和文件系统,以及sysupgrade.bin,但不知为何原因无法单独更新,只能完整的更新sysupgrade.bin。
  • 默认选中的packages位于/bin/targets/ar71xx/generic/packages

固件生成过程

根据编译生成固件时控制台的打印信息整理分析得到:
在这里插入图片描述

  • mkimge生成kernel,openwrt-ar71xx-generic-uImage-lzma.bin
  • 通过mksquashfs4、make_ext4fs制作文件系统
  • 通过padjffs2后,最终生成文件系统openwrt-ar71xx-generic-root.squashfs
  • Patch cmdline参数,lzma压缩,mkimage,用于下一步
  • 制作sysupgrade.bin,openwrt-ar71xx-generic-ap147-010-squashfs-sysupgrade.bin
  • 生成manifest文件,即packages的清单,并生成ipk包
  • 结束编译

make clean、dirclean、distclean

Warnning:一定做好备份!!!!
0、原始目录大小:
在这里插入图片描述
1、make clean: 清除bin目录

clean: FORCE
  rm -rf $(BUILD_DIR) $(STAGING_DIR) $(BIN_DIR) $(OUTPUT_DIR)/packages/$(ARCH_PACKAGES) $(BUILD_LOG_DIR) $(TOPDIR)/staging_dir/packages

在这里插入图片描述
2、make dirclean: make clean+清除交叉编译工具及工具链目录

dirclean:clean                                                                                                                                                                         
  rm -rf $(STAGING_DIR_HOST) $(STAGING_DIR_HOSTPKG) $(TOOLCHAIN_DIR) $(BUILD_DIR_BASE)/host $(BUILD_DIR_BASE)/hostpkg $(BUILD_DIR_TOOLCHAIN)
  rm -rf $(TMP_DIR)

在这里插入图片描述
3、make distclean: 清除所有相关的东西,包括下载的软件包,配置文件,feed内容等
一夜回到解放前!
在这里插入图片描述

  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OpenWrt是一个基于Linux的嵌入式操作系统,可以运行在各种路由器和嵌入式设备上。OpenWrt固件编译是指将OpenWrt源代码编译成可在特定硬件平台上运行的固件过程。 首先,我们需要准备编译环境。在Ubuntu或其他基于Debian的发行版上,可以通过以下命令安装所需的软件包: ``` sudo apt-get install subversion build-essential libncurses5-dev zlib1g-dev gawk git ccache gettext libssl-dev xsltproc wget ``` 接下来,我们需要获取OpenWrt的源代码。可以使用以下命令来获取最新的OpenWrt源代码: ``` git clone https://git.openwrt.org/openwrt/openwrt.git ``` 获取源代码后,进入源代码目录: ``` cd openwrt ``` 在配置编译选项之前,可以运行以下命令更新源代码: ``` ./scripts/feeds update -a ./scripts/feeds install -a ``` 接下来,我们需要选择目标平台和配置编译选项。可以通过以下命令启动配置界面: ``` make menuconfig ``` 在配置界面中,可以选择目标平台、应用软件包、内核和其他编译选项。选择完成后,保存配置并退出。 最后,开始编译固件。可以运行以下命令来启动编译: ``` make -j4 ``` 编译过程可能需要一些时间,具体时间取决于计算机性能和配置选项。编译完成后,在`bin/targets`目录下可以找到编译生成固件文件。 总之,OpenWrt固件编译过程包括准备编译环境、获取源代码、配置编译选项和开始编译编译完成后,可以得到适用于特定硬件平台的OpenWrt固件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值