🔥 前言:本文专为 OpenWrt 新手打造,全程手把手实操,兼顾稳定性与实用性,解决新手编译中“缺依赖、编译失败、找不到固件”等核心痛点,两种源码(官方原版/Lean增强版)任选,附常见问题速解,建议收藏备用!
💡 适用人群:软路由爱好者、路由器刷机新手、想自定义OpenWrt固件的小伙伴,无需复杂Linux基础,跟着复制命令即可完成。
一、环境准备(虚拟机/物理机,新手优先虚拟机)
✅ 核心要求(满足以下条件,避免编译卡顿/失败):
-
系统版本:Ubuntu 22.04 LTS x64(推荐,兼容性最好,避免用Ubuntu 23.04+,部分依赖存在兼容性问题)
-
硬件配置:CPU 4核及以上(越多越快)、内存 8GB+(建议16GB,避免编译时内存不足)、空闲硬盘 100GB+(编译过程会生成大量临时文件,建议预留150GB)
-
关键注意:全程禁止用 root 用户编译(必坑!会导致权限异常、编译失败),用普通用户 + sudo 执行命令即可。
-
补充建议:虚拟机建议开启“嵌套虚拟化”,网络选择“桥接模式”,方便后续固件刷写测试;物理机建议用全新系统,避免原有软件冲突。
二、安装编译依赖(一键复制,避免漏装)
⚠️ 新手直接复制下面的命令,一次性安装所有依赖,无需手动逐个安装,避免遗漏导致编译失败。
sudo apt update && sudo apt upgrade -y
sudo apt install -y \\
build-essential ccache cmake ninja-build \\
git subversion mercurial bzr \\
flex bison gawk gettext quilt \\
libncurses5-dev libncursesw5-dev libssl-dev \\
zlib1g-dev libz-dev libelf-dev \\
python3 python3-pip python3-distutils \\
unzip zip bzip2 p7zip-full rsync wget curl \\
file uglifyjs upx-ucl cpio squashfs-tools \\
gcc-multilib g++-multilib libc6-dev-i386 \\
asciidoc texinfo xmlto xsltproc libxml-parser-perl
✅ 安装完成后,建议重启一次系统(可选),确保依赖生效。
三、下载 OpenWrt 源码(二选一,按需选择)
📌 两种源码对比(新手必看,避免选错):
|
官方原版 |
稳定、干净、无多余插件、更新及时 |
插件少,需手动安装常用功能 |
追求稳定性、纯小白、用于生产环境 |
|
Lean 大源码 |
插件丰富(SSR、AdGuard、迅雷等)、配置便捷、适配多机型 |
更新频率略低,部分插件可能存在兼容性问题 |
想快速上手、需要丰富功能、软路由玩家 |
选项1:下载官方原版源码(稳定、干净)
git clone https://github.com/openwrt/openwrt.git cd openwrt
选项2:下载 Lean 大源码(插件多、常用)
git clone https://github.com/coolsnowwolf/lede.git openwrt cd openwrt
⚠️ 注意:下载源码时,确保网络通畅,若下载失败(git clone 卡住),可更换国内镜像源(文末附镜像替换方法)。
四、更新 feeds(软件源,相当于“应用商店更新”)
📌 feeds 是 OpenWrt 的软件源,更新后才能获取最新的插件和包,新手建议执行以下两步,避免后续配置时找不到插件。
# 第一步:更新所有 feeds(同步最新软件包列表)
./scripts/feeds update -a
# 第二步:安装所有可用包(可选,新手建议执行,后续可在 menuconfig 中筛选)
./scripts/feeds install -a
✅ 若更新时出现“connection timed out”,大概率是网络问题,可多执行几次 ./scripts/feeds update -a,或配置代理。
五、配置固件(make menuconfig,新手关键步骤)
⚠️ 这一步是核心,配置错误会导致固件无法使用,新手严格按照以下步骤操作,重点修改标注的选项!
make menuconfig
执行命令后,会进入图形化配置界面(用键盘上下键选择,回车键进入,空格键勾选/取消),新手必改配置如下:
1. 选择目标平台(根据你的设备选择)
-
软路由(x86架构):Target System → x86 → Subtarget → x86_64(64位)
-
普通路由器:Target System → 选择对应芯片(如 MediaTek Ralink、Qualcomm Atheros 等,可查设备说明书)
2. 选择机型(Target Profile)
-
软路由(x86):Target Profile → Generic x86/64(通用机型,适配大部分x86软路由)
-
普通路由器:选择与自己设备型号完全一致的选项(如小米AX3600、斐讯K3等)
3. 必选 Web 后台(LuCI)
⚠️ 必须勾选,否则编译后的固件没有Web管理界面,无法配置!
-
LuCI → Collections → 勾选 [*] luci(完整Web后台,新手必选)
-
可选补充:LuCI → Applications → 勾选常用插件(如 luci-app-adguardhome、luci-app-ssr-plus,Lean源码自带,官方源码需手动安装)
4. 选择固件格式(方便刷写)
-
Target Images → 勾选以下3种格式(适配不同刷写场景):
-
squashfs(推荐,支持系统恢复,适合软路由/路由器)
-
ext4(适合物理机安装,可扩展空间)
-
vmdk(虚拟机专用格式,方便在VMware/VirtualBox中测试)
-
5. 保存配置并退出
配置完成后,按键盘方向键选择 Save → 按回车键确认(文件名默认 .config,无需修改) → 选择 OK → 按 Esc 键退出配置界面。
六、下载依赖包(避免编译中断,关键一步)
📌 编译前先下载所有依赖包,避免编译到一半因缺少依赖而中断,新手建议用 -j8 多线程下载(根据CPU核心数调整,4核用 -j4,8核用 -j8)。
make download -j8
✅ 若下载失败,可重复执行该命令,直到所有包下载完成;若多次失败,可更换国内下载源(文末附方法)。
七、开始编译(新手必看,避免出错)
⚠️ 编译时间根据CPU性能和网络速度而定,一般1~3小时,新手建议用单线程编译(不易出错,还能查看详细日志),熟练后再用多核编译。
选项1:新手推荐(单线程 + 详细日志)
make -j1 V=s
📌 说明:-j1 表示单线程,V=s 表示显示详细编译日志,若出现错误,可往上翻日志,快速定位问题(大部分是缺依赖)。
选项2:熟练后使用(多核编译,速度快)
# 自动识别CPU核心数,多核编译
make -j$(nproc) V=s
⚠️ 注意:多核编译虽然快,但容易因内存不足或资源冲突导致失败,若出现编译中断,重新执行 make -j1 V=s 即可继续编译。
八、编译成功 → 找到固件(关键一步)
✅ 当终端显示“Build complete.” 时,说明编译成功,固件默认生成在以下路径,进入路径即可查看:
cd bin/targets/x86/64/ ls -lh
📌 常用固件说明(新手重点关注这两个):
-
openwrt-x86-64-generic-squashfs-sysupgrade.bin:升级固件,适合已有OpenWrt系统的设备升级(保留配置)
-
openwrt-x86-64-generic-squashfs-factory.img:全新刷写固件,适合新设备、虚拟机或恢复出厂设置后刷写
💡 补充:若编译的是路由器固件,路径会对应为 bin/targets/对应芯片/对应机型/,找到后缀为 .bin 或 .img 的文件即可。
九、常见问题速解(新手必看,避坑神器)
问题1:不能用 root 用户编译 → 解决方案:切换到普通用户,用 sudo 执行命令(sudo su – 普通用户名)
问题2:编译时提示“缺少 xxx 库” → 解决方案:重新执行第二步的依赖安装命令,确保所有依赖都安装成功
问题3:make download 下载失败 → 解决方案:多执行几次 make download -j8,或配置国内镜像源(文末附方法)
问题4:编译中断 → 解决方案:直接执行 make -j1 V=s 继续编译,若多次中断,检查内存是否充足,或重新配置固件(减少插件)
问题5:编译成功后找不到固件 → 解决方案:确认路径正确(bin/targets/对应平台/对应机型/),若仍找不到,重新执行 make menuconfig,勾选 Target Images 中的固件格式
十、固件刷入方法(简单示例,适配新手)
1. 软路由/物理机刷写
-
下载 balenaEtcher 工具(官网:https://www.balena.io/etcher/,跨平台,免费)
-
打开工具,选择编译好的 xxx.img 固件,选择要刷写的 U 盘/硬盘,点击 Flash! 等待刷写完成
-
将刷写好的 U 盘/硬盘插入软路由/物理机,设置从 U 盘启动,即可进入 OpenWrt 系统
2. 普通路由器刷写
-
进入路由器官方 Web 后台(如 192.168.1.1)
-
找到“系统 → 备份/升级”选项,上传 xxx.sysupgrade.bin 固件
-
点击升级,等待路由器重启完成(升级过程中不要断电,否则变砖)
十一、新手福利(CSDN专属补充)
补充1:国内镜像源替换(解决下载慢、失败问题)
编辑 feeds.conf.default 文件,替换为国内镜像(以清华源为例):
vim feeds.conf.default
将文件中的内容替换为以下内容(按 i 进入编辑模式,编辑完成后按 Esc,输入 :wq 保存退出):
src-git packages https://mirrors.tuna.tsinghua.edu.cn/openwrt/packages.git
src-git luci https://mirrors.tuna.tsinghua.edu.cn/openwrt/luci.git
src-git routing https://mirrors.tuna.tsinghua.edu.cn/openwrt/routing.git
src-git telephony https://mirrors.tuna.tsinghua.edu.cn/openwrt/telephony.git
替换后,重新执行 ./scripts/feeds update -a 即可。
补充2:默认登录信息(新手必记)
-
官方原版源码:默认IP 192.168.1.1,无密码(首次登录需设置密码)
-
Lean 源码:默认IP 192.168.1.1,用户名 root,密码 password
补充3:二次编译方法(后续修改配置后使用)
cd openwrt # 进入源码目录
git pull # 更新源码(可选)
./scripts/feeds update -a && ./scripts/feeds install -a # 更新
feeds make menuconfig # 重新配置固件
make download -j8 # 下载新增依赖
make -j$(nproc) V=s # 多核编译
十二、总结
✅ 本文覆盖了新手编译 OpenWrt 固件的全流程,从环境准备到固件刷写,从问题排查到补充技巧,全程实操无废话。
💡 新手建议先从虚拟机测试开始,熟悉流程后再刷写物理设备;若遇到其他问题,可在评论区留言,或加入 OpenWrt 交流群(Lean 源码有官方QQ群,见源码README)。
🌟 觉得有用的话,记得点赞+收藏+关注,后续会更新 OpenWrt 插件配置、优化技巧等内容!




