OpenWrt 是目前最强大的开源路由器固件,支持丰富的软件包和高度的自定义。本文详细介绍从零搭建编译环境、拉取源码、配置固件到刷机的完整流程。
准备工作
硬件要求:
- 编译主机:Ubuntu 22.04/24.04(推荐)或 Debian
- CPU:4核以上(推荐8核)␣内存:8GB以上(推荐16GB)␣硬盘:至少50GB可用空间
- 网络:能访问GitHub和OpenWrt软件源(国内需要代理)
- 编译主机:Ubuntu 22.04/24.04(推荐)或 Debian
- CPU:4核以上(推荐8核)␣内存:8GB以上(推荐16GB)␣硬盘:至少50GB可用空间
- 网络:能访问GitHub和OpenWrt软件源(国内需要代理)
第一步:安装编译依赖
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 python3-pip unzip zlib1g-dev file wget rsync cpio \ libelf-dev autoconf automake libtool sharutils curl asciidoc
如果是 Ubuntu 24.04,还需要安装:
sudo apt install -y python3-distutils python3-setuptools
第二步:拉取 Lean's OpenWrt 源码(推荐)
Lean(coolsnowwolf)的OpenWrt源码是国内最流行的分支,集成了大量实用软件包(OpenClash、PassWall等)。
# 克隆源码 git clone https://github.com/coolsnowwolf/lede.git openwrt cd openwrt # 添加插件源(可选) cd feeds ./scripts/feeds update -a ./scripts/feeds install -a cd ..
💡 提示:国内用户建议使用 GitHub 镜像站或设置代理,否则下载速度极慢。
第三步:配置固件(make menuconfig)
make menuconfig
关键配置项:
- Target System:选择你的路由器芯片平台(如 MediaTek Ralink ARM、Qualcomm Atheros等)
- Subtarget:选择具体子平台
- Target Profile:选择你的路由器型号
- LuCI → Applications:选择要集成的软件包
- Network → Web Servers/Proxies:勾选 Nginx/uhttpd
推荐必选软件包:
# LuCI 应用 luci-app-openclash luci-app-passwall luci-app-adguardhome luci-app-ddns luci-app-upnp luci-app-samba4 luci-app-aria2 luci-app-dockerman # 如果路由器内存≥512MB
第四步:编译固件
# 下载 dl 包(预下载,避免编译时网络问题) make download -j8 # 开始编译(-j 后数字为线程数,建议 CPU 核心数+1) make V=s -j$(nproc) # 如果编译失败,用单线程查看详细错误 make V=s -j1 2>&1 | tee build.log
编译时间:首次编译约30-90分钟(取决于机器配置)。编译完成后,固件在 bin/targets/ 目录下。
第五步:刷机
方法一:Web 刷机(推荐新手)
1. 路由器断电
2. 按住 Reset 键不放,通电,保持10秒
3. 电脑连路由器LAN口,设IP为 192.168.1.x
4. 浏览器访问
5. 上传编译好的固件,等待刷机完成
1. 路由器断电
2. 按住 Reset 键不放,通电,保持10秒
3. 电脑连路由器LAN口,设IP为 192.168.1.x
4. 浏览器访问
http://192.168.1.15. 上传编译好的固件,等待刷机完成
方法二:U-Boot 命令行刷机(进阶)
# 路由器通过串口连接,进入 U-Boot 命令行 # 设置 TFTP 服务器 IP 和固件路径后刷入 tftpboot 0x80000000 openwrt.bin erase 0x9f050000 +0x7b0000 cp.b 0x80000000 0x9f050000 0x7b0000 bootm 0x9f050000
第六步:初始配置
刷机完成后:
- 访问
http://192.168.1.1设置管理员密码 - 配置 WAN 口(PPPoE 拨号或 DHCP)
- 安装额外软件包:
opkg update && opkg install luci-app-xxx - 配置 OpenClash/PassWall 等代理工具
常见问题排查
编译失败:undefined reference to 'xxx'
通常是依赖缺失或源码版本不匹配。尝试 make clean && make defconfig 后重新编译。
刷机后无法启动
可能刷入了错误型号的固件。进入 U-Boot 救援模式重新刷机。
软件包安装失败
检查 /etc/opkg/distfeeds.conf 源地址是否正确,国内用户建议换成中科大或清华镜像。
⚠️ 警告:刷机有风险,操作不当可能导致路由器变砖。刷机前请备份原厂固件和 ART/EEPROM 分区!
进阶:自动化编译(GitHub Actions)
推荐使用 GitHub Actions 云端编译,无需本地高性能主机:
# 参考 Actions 模板 # https://github.com/coolsnowwolf/lede/issues # Fork Lean's repo 后,在 Actions 页面触发编译
优势:免费、自动、可复现。编译完成后自动上传固件到 Releases。
💬 评论区