如何编译 OpenWrt 运行系统
OpenWrt 是一套基于 Linux 的面向嵌入式体系架构的开源软件系统,由于其高度的可定制化、灵活的功能组合搭配、适配多种硬件架构、支持跨平台等特点,获得了广泛的应用,特别是作为软路由系统而深受广大玩家的喜爱。Openwrt 内生就具有很好的可扩展性、安全性、稳定性、高性能及易用性,因此完全可以作为小型商用和家用软路由系统来使用。
OpenWrt 可以适配多种硬件架构,比如基于 X86、Arm、Mips、PowerPc 等 CPU 的架构。OpenWrt 除了可以布署到通用的硬件平台上以外,还可以移植到现有的大量的商用产品上,比如华硕、华为、网件、领势等公司的路由器产品。
编译 OpenWrt 运行系统首先就是要确定硬件平台,X86 比较简单,目前有很多不同配置的基于 X86 架构的通用设备可以选择(Pc 机当然也可以),Arm 架构的主要是一些开发板。商用产品官方确认支持的设备请参考这个列表,当然也有一些电视盒子可以支持 OpenWrt ,比如国内比较火的 N1(不能直接使用,需要做一些调整)。
确定了硬件架构,接下来就可以开始编译了,详细步骤如下:
首先就是搭建一个编译环境,推荐使用 Ubuntu 服务器版本,18 或 20 都可以,硬件方面实体机或虚拟机皆可,硬盘空间预留 30G。
接着进入命令行界面,输入下面的命令:
$git clone https://git.openwrt.org/openwrt/openwrt.git
$cd openwrt
$./scripts/feeds update -a
$./scripts/feeds install -a
$make menuconfig
$make -j5 download ;下载源代码,如果要显示详细信息加上 V=s 参数,5 代表 CPU 核心数
$make ; 如果要显示详细编译信息,加上 V=s 参数
编译完成后,生成的映像文件放在 openwrt/bin/target/… 目录中,如果编译的是 x86 64 位的映像,则目录是 openwrt/bin/target/x86/64/。
这里面有三点要说明一下:
首先,make menuconfig 命令会显示一个编译配置窗口,所有的编译选项可以在这个界面里修改,比如目标硬件架构选择,驱动、固件选择,软件包选择等。
根据目标硬件平台的情况进行选择和配置,主要涉及 CPU 相关配置,应用软件配置,网络及工具配置,实用工具及命令配置。
绝大部分选项使用缺省的设置就可以,完成后要保存一下,下次做配置的时候就可以调出之前的选项。
第二,如果要重新编译,输入下面的命令:
$cd openwrt
$git pull
$./scripts/feeds update -a
$./scripts/feeds install -a
$rm -rf tmp
$make menuconfig
$make
第三,如果需要往编译后生成的映像里加入自己的文件,可以在 openwrt/files 目录下创建目录和自定义的文件,目录结构要与根文件系统的目录一致,比如想要在/etc/ 目录下增加一个文件 customize.sh,则把这个文件放到 openwrt/files/etc/ 目录中。
在下一篇文章中,将会详细介绍如何为 N1 编译制作一套 OpenWrt 的运行系统。