1. OpenWrt开发环境搭建

OpenWrt开发环境搭建 学习卡片

任务说明

本案例目标是在Ubuntu 22.04 LTS系统上从零搭建OpenWrt编译环境,下载官方源码并完成首次编译,最终生成可用于刷机的固件镜像文件。完成本案例后,你将拥有一个可重复使用的OpenWrt构建环境,为后续开发打下基础。

环境准备与依赖安装

OpenWrt编译需要Linux环境与一系列构建工具。以下命令在Ubuntu终端中执行,安装编译所需的全部依赖包:

sudo apt update
sudo apt install -y build-essential clang flex bison g++ gawk gcc-multilib g++-multilib gettext git libncurses5-dev libssl-dev python3-setuptools rsync swig unzip zlib1g-dev file wget

验证git与编译工具链是否就绪:

git --version
gcc --version | head -n 1

下载OpenWrt源码

使用git克隆OpenWrt官方源码仓库。以当前稳定分支openwrt-23.05为例:

mkdir -p ~/openwrt
cd ~/openwrt
git clone https://git.openwrt.org/openwrt/openwrt.git -b openwrt-23.05
cd openwrt

源码下载完成后,更新软件包索引并安装feeds(软件包源):

./scripts/feeds update -a
./scripts/feeds install -a

编译配置与首次编译

执行make menuconfig进入图形化配置界面。首次编译建议保持默认配置,直接选择Save后Exit即可。若需为特定硬件编译,可在Target System中选择对应芯片平台。

make menuconfig

保存配置后开始编译。首次编译需下载工具链与源码包,耗时较长(取决于网络与机器性能):

make -j$(nproc) V=s

参数说明:-j$(nproc)使用全部CPU核心并行编译以加速;V=s显示完整编译日志,便于排查错误。若编译中断,重新执行上述命令即可断点续编。

固件输出验证

编译成功后,固件镜像位于bin/targets/目录下,按芯片平台分目录存放。以x86/64平台为例,检查输出文件:

ls -lh bin/targets/x86/64/

预期输出中应包含以下关键文件:

  • openwrt-x86-64-generic-squashfs-combined-efi.img.gz — UEFI启动固件(压缩包)
  • openwrt-x86-64-generic-squashfs-combined.img.gz — Legacy BIOS启动固件(压缩包)
  • sha256sums — 固件校验和文件

判定编译成功的标准:sha256sums文件存在且包含上述.img.gz文件的校验值,同时固件文件大小不为0。可通过以下命令验证固件完整性:

sha256sum -c sha256sums 2>&1 | grep OK

若输出包含OK字样,说明固件文件完整无误,编译环境搭建成功。

验证观测点

阶段1:环境准备 安装依赖包 git/gcc验证 阶段2:源码下载 git clone openwrt-23.05 feeds update & install 阶段3:编译 make menuconfig make -j$(nproc) 阶段4:固件验证 bin/targets/<平台>/ sha256sum -c sha256sums sha256sums 全部OK? 成功 失败排查 验证路径:编译产物 → 校验和比对 → 判定构建成功

上图展示了本案例的完整验证路径。若sha256sums校验失败,请检查编译日志中最后输出的错误信息,常见原因包括网络中断导致源码包下载不完整、磁盘空间不足(需预留至少20GB)或缺少依赖包。重新执行make -j$(nproc) V=s即可从断点继续。

至此,OpenWrt编译环境搭建完成,固件镜像已生成并通过完整性校验。该环境可用于后续案例中的源码修改、软件包定制与固件功能开发。