欢迎光临
我们一直在努力

【超详细新手向】Ubuntu 22.04 编译 OpenWrt 固件(官方/Lean版二选一,避坑必看)

🔥 前言:本文专为 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 插件配置、优化技巧等内容!

 

 

赞(0)
未经允许不得转载:171主机测评 » 【超详细新手向】Ubuntu 22.04 编译 OpenWrt 固件(官方/Lean版二选一,避坑必看)
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址