Windows 下编译 OpenWrt 全攻略:从零到定制固件
对于很多网络爱好者和开发者来说,OpenWrt 是一个极具吸引力的开源路由器系统。它能让普通路由器变身为一台功能强大的网络设备,支持广告过滤、多拨、科学上网等高级功能。但官方固件可能不包含你需要的功能,这时候自己编译就成了最佳选择。今天,我就以一名老技术员的身份,手把手教你在 Windows 系统上完成 OpenWrt 的编译,即便是电脑新手也能跟着做出来。
一、编译环境搭建:为 Windows 装上“Linux 心脏”
OpenWrt 的编译工具链主要基于 Linux,所以我们需要在 Windows 上创建一个 Linux 编译环境。目前最主流、问题最少的方法是使用 WSL2。
1. 安装 WSL2 与 Ubuntu 系统
这是最关键的一步,环境搭好了,后面就顺利了一半。
第一步:启用 Windows 功能
- 在 Windows 搜索框输入“启用或关闭 Windows 功能”,打开它。
- 在弹出来的窗口里,找到并勾选 “适用于 Linux 的 Windows 子系统” 和 “虚拟机平台” 这两项。
- 点击“确定”,系统会应用更改,然后根据提示重启电脑。

第二步:安装 WSL2 内核更新包 重启后,去微软官网下载一个叫 “WSL2 Linux 内核更新包” 的小程序。下载完直接双击安装,一直点“下一步”就行。
第三步:安装 Ubuntu 系统
- 打开 Windows 自带的 Microsoft Store(微软商店)。
- 在商店里搜索 “Ubuntu”,选择版本(推荐 Ubuntu 22.04 LTS,比较稳定),点击“获取”进行安装。这个过程就是下载一个Linux系统到你的Windows里,但别担心,它和你的Windows是分开的。
第四步:设置 WSL2 为默认版本并初始化 Ubuntu
- 以管理员身份打开 Windows 的“命令提示符”或“PowerShell”。(在开始菜单里搜索“cmd”或“PowerShell”,右键选择“以管理员身份运行”)。
- 输入以下命令并回车,将 WSL 的默认版本设置为 2:
wsl --set-default-version 2 - 回到开始菜单,找到刚刚安装好的“Ubuntu”并打开。第一次启动会需要几分钟来安装,完成后会让你设置一个用户名和密码。这个用户名密码是 Ubuntu 系统专用的,记住它,后面输入密码时屏幕上不会显示*号,正常输入后回车即可。
2. 更换软件源并安装编译依赖
Ubuntu 自带的软件服务器在国外,下载很慢。我们需要把它换成国内的镜像源,比如阿里云或清华的。
第一步:备份并更新软件源 在打开的 Ubuntu 窗口里,依次输入下面的命令(每输入一行,按一次回车):
# 备份原来的源列表
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
# 使用 sed 命令一键替换为阿里云源 (适用于 Ubuntu 22.04)
sudo sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list
sudo sed -i 's/security.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list
# 更新软件包列表
sudo apt update
如果上面的 sed 命令执行后报错或你觉得不放心,也可以用图形化编辑器 nano 手动修改文件,但对于新手,上面这个命令成功率很高。
第二步:安装编译所需的全部工具 这是一条很长的命令,作用是安装编译 OpenWrt 需要的所有软件包。一次性复制粘贴进去执行即可:
sudo apt install -y build-essential ccache ecj fastjar file g++ gawk gettext git java-propose-classpath libelf-dev libncurses5-dev libncursesw5-dev libssl-dev python3 python2.7-dev python3-pip python3-setuptools python3-dev rsync subversion swig time xsltproc zlib1g-dev
这个过程会下载几百兆的文件,取决于你的网速,请耐心等待完成。
二、获取 OpenWrt 源码并开始配置
环境准备好,我们就可以“获取原材料”了。
第一步:拉取 OpenWrt 源码
OpenWrt 源码就像一棵大树,有主干(开发版)和许多分支(稳定版)。新手建议从稳定分支开始,比如 openwrt-22.03。
在 Ubuntu 里继续输入:
# 先回到家目录
cd ~
# 使用 git 克隆 OpenWrt 的官方源码仓库
git clone https://github.com/openwrt/openwrt.git
# 进入源码目录
cd openwrt
# 切换到 22.03 稳定分支
git checkout v22.03.5
第二步:更新和安装 feeds
OpenWrt 的很多功能是以“软件包”形式存在的,它们存放在另一个叫 feeds 的列表中,需要更新并安装。
# 更新 feeds 列表
./scripts/feeds update -a
# 安装所有 feeds 中的包到配置菜单
./scripts/feeds install -a
第三步:进行编译配置(核心环节) 这是决定你的固件包含什么功能的一步。我们使用一个图形化的菜单来配置。
make menuconfig
执行这个命令后,会进入一个蓝底白字的文本图形界面。在这个界面里:
- 使用 上下箭头键 移动光标。
- 使用 回车键 进入子菜单或选中/取消选中项目。
- 按 Y 键:将这个功能编译进固件(固件体积会变大)。
- 按 M 键:将这个功能编译成独立的软件包(固件里不包含,但之后可以手动安装)。
- 按 N 键:不编译此功能。
- 按 空格键 可以在 Y/M/N 之间切换。
- 按 ESC 键两次:返回上一级菜单。
- 移动光标到
<Save>并回车保存,再到<Exit>回车退出。
对于新手,必须关注这几个关键选项:
- Target System:选择你的路由器CPU架构。比如常见的老款联发科MT7621芯片,就选
MediaTek Ralink MIPS->MT7621。 - Subtarget:选择具体的型号变体,比如
Default或带MT7603/MT7612等无线芯片的。 - Target Profile:选择具体的路由器型号!这是最重要的一步,一定要选对,比如
Xiaomi Mi Router 3G。如果列表里没有你的 exact 型号,可以选一个配置最接近的。 - LuCI:这是网页管理界面,必须选上。进入
LuCI->Collections,按 Y 选中luci。 - 常用软件包:在
LuCI->Applications里,可以按 M 或 Y 选择你需要的插件,如luci-app-upnp(UPnP自动端口映射)、luci-app-wireguard(VPN)等。
如何查找自己路由器的配置?
去 OpenWrt 官网的硬件支持页面,搜索你的路由器型号,页面会明确告诉你对应的 Target、Subtarget 和 Profile 名称。
三、开始编译与获取固件
配置保存好后,就可以开始漫长的编译了。编译时间取决于电脑CPU性能,从半小时到几小时不等。
第一步:开始编译
输入以下命令,-j 后面的数字代表使用几个CPU核心进行编译,一般是你的CPU核心数+1。比如4核CPU可以用 -j5。
make -j5 download V=s
这条命令会先下载编译所需的所有源代码(dl库),确保网络通畅。
make -j5 V=s
这条是真正的编译命令。V=s 表示输出详细的编译信息,方便出错时排查。第一次编译会非常久,因为要编译整个工具链。你可以去喝杯咖啡,看看剧。
第二步:处理常见编译错误
- 下载失败:编译过程中如果某个包下载失败,可以按
Ctrl+C中断,重新执行make download或单独下载该包放到dl/目录。 - 依赖错误:通常是环境问题,确保第一步的所有依赖包都已安装。
- 内存不足:WSL2 默认内存可能不够,可以在用户目录(
C:\Users\你的用户名\)下创建.wslconfig文件,写入以下内容后重启 WSL(在 PowerShell 输入wsl --shutdown):[wsl2] memory=4GB # 分配4GB内存,可根据你电脑情况调整 processors=2 # 分配2个CPU核心
第三步:找到编译好的固件
编译成功后,生成的固件文件在 bin/targets/ 目录下。根据你选择的架构,路径会有所不同。例如:
~/openwrt/bin/targets/ramips/mt7621/openwrt-22.03.5-ramips-mt7621-xiaomi_mir3g-squashfs-sysupgrade.bin
这个 .bin 文件就是你千辛万苦编译出来的定制固件!
四、刷入固件与后续建议
- 刷机:将固件通过路由器原厂升级页面或 Breed/Uboot 等引导程序刷入你的路由器。刷机有风险,务必确认固件型号完全匹配!
- 首次登录:刷机成功后,用网线连接路由器,浏览器访问
192.168.1.1,设置密码即可登录 LuCI 管理界面。
给新手的终极建议:
- 第一次编译,强烈建议在
make menuconfig里除了选对路由器型号和 LuCI,其他所有额外插件都先不要选(按 N),确保能编译出一个最精简可用的固件。 成功一次后,你就有信心了,下次再慢慢添加功能。 - 编译过程会占用大量C盘空间(约20-30GB),请确保C盘有足够空间。
- 善用
make clean(清理编译文件,保留配置和dl库)和make dirclean(更彻底的清理)命令来进行下一次编译。
自己编译 OpenWrt 就像为你的路由器量身定制一件铠甲,虽然过程有些曲折,但成功后的成就感和完全掌控设备的自由是无与伦比的。遇到问题不要慌,多查阅 OpenWrt 官方论坛和 Wiki,大部分坑都有前人踩过。祝你一次编译成功!

还没有评论,来说两句吧...