1. 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,则判定固件编译与刷入成功。