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

固件生成过程

根据编译生成固件时控制台的打印信息整理分析得到:
OpenWrt 学习笔记【2】编译&固件生成过程&make clean_第1张图片

  • 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、原始目录大小:
OpenWrt 学习笔记【2】编译&固件生成过程&make clean_第2张图片
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

OpenWrt 学习笔记【2】编译&固件生成过程&make clean_第3张图片
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)

OpenWrt 学习笔记【2】编译&固件生成过程&make clean_第4张图片
3、make distclean: 清除所有相关的东西,包括下载的软件包,配置文件,feed内容等
一夜回到解放前!
OpenWrt 学习笔记【2】编译&固件生成过程&make clean_第5张图片

你可能感兴趣的:(Openwrt)