1. OpenWrt开发环境搭建与固件编译

OpenWrt开发环境搭建与固件编译 学习卡片

任务说明

本案例目标是在Ubuntu 22.04 x86_64主机上搭建OpenWrt编译环境,下载源码,配置目标平台为x86/64(Generic),执行编译生成自定义固件镜像,并说明刷入设备的操作路径。完成后你将获得一个可启动的OpenWrt固件,并验证其版本信息。

环境准备与依赖安装

OpenWrt编译需要Linux环境与若干构建工具。以下命令在Ubuntu 22.04上安装全部必要依赖:

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

下载OpenWrt源码

使用git克隆官方OpenWrt源码仓库,并切换到稳定的23.05分支:

git clone https://git.openwrt.org/openwrt/openwrt.git
cd openwrt
git checkout openwrt-23.05

更新与安装软件包源

执行以下命令下载所有软件包的Makefile与补丁,并安装编译所需的feeds(软件包集合):

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

配置目标平台

运行配置菜单,选择目标系统为x86/64:

make menuconfig

在菜单中依次设置:

  • Target System → x86
  • Subtarget → x86_64
  • Target Profile → Generic

保存并退出菜单。此时.config文件已生成,确认关键配置项:

grep "CONFIG_TARGET_x86_64=y" .config
grep "CONFIG_TARGET_x86_64_Generic=y" .config

两条命令均输出对应配置项即表示目标平台配置正确。

编译固件

首次编译建议先下载dl目录中的源码包(耗时较长),然后执行编译。使用-j参数指定并行任务数,建议设为CPU核心数+1:

make download -j$(nproc)
make -j$(nproc)

编译过程约需30分钟至数小时,取决于网络与主机性能。编译完成后,固件输出在bin/targets/x86/64/目录下。

验证编译产物

检查输出目录中的关键镜像文件:

ls -lh bin/targets/x86/64/
# 预期看到以下文件(文件名含版本号):
# openwrt-23.05.x-x86-64-generic-squashfs-combined-efi.img.gz
# openwrt-23.05.x-x86-64-generic-squashfs-combined.img.gz

其中combined-efi.img.gz适用于UEFI启动,combined.img.gz适用于传统BIOS启动。解压后即为可写入磁盘的镜像文件。

刷入设备

将镜像写入U盘或硬盘(以/dev/sdX为例,请务必确认设备名,避免写错):

gunzip -c bin/targets/x86/64/openwrt-23.05.x-x86-64-generic-squashfs-combined-efi.img.gz | sudo dd of=/dev/sdX bs=4M status=progress
sync

写入完成后,将设备设为U盘或硬盘启动,开机即可进入OpenWrt系统。

验证方法

设备启动后,通过串口或SSH登录(默认IP 192.168.1.1,root无密码),执行以下命令验证固件版本与平台信息:

cat /etc/openwrt_release
# 预期输出包含:
# DISTRIB_ID='OpenWrt'
# DISTRIB_RELEASE='23.05.x'
# DISTRIB_TARGET='x86/64'
# DISTRIB_ARCH='x86_64'

uname -a
# 预期输出包含 x86_64 字样

若上述命令输出版本号与x86_64架构信息,且系统能正常启动到shell,则判定固件编译与刷入成功。

OpenWrt编译环境搭建与固件编译流程 ① 环境准备 Ubuntu 22.04 安装构建依赖 ② 下载源码 git clone openwrt.git checkout openwrt-23.05 ③ 更新feeds ./scripts/feeds update -a ./scripts/feeds install -a ④ 配置 make menuconfig x86/64 Generic ⑤ 编译 make download make -j$(nproc) ⑥ 编译产物 bin/targets/x86/64/ combined-efi.img.gz ⑦ 刷入设备 dd if=*.img of=/dev/sdX sync ⑧ 验证 cat /etc/ openwrt_release 验证判定标准 ✓ DISTRIB_ID='OpenWrt' ✓ DISTRIB_RELEASE='23.05.x' ✓ DISTRIB_TARGET='x86/64' ✓ uname -a 包含 x86_64