![图片[1]-[OpenWrt] 编译教程包含衍生版本 [插件/配置/DIY]-DoubleWorld’s](https://www.ivtuber.com/wp-content/uploads/2025/04/20250416081519543-68747470733a2f2f63646e2e6a7364656c6976722e6e65742f67682f4a656a7a3136382f506963747572652f4f70656e5772742d6c6f676f2e706e67.webp)
OpenWrt 拥有很多衍生版,但是编译过程基本都是一致的!
(一)、基本编译流程
开源项目 | 插件兼容 | 是否闭源 | 开源介绍 |
---|---|---|---|
OpenWrt | 最高兼容 | 全部开源 | 官方原版 |
LEDE | 部分插件不兼容 | 部分闭源 | lean大佬衍生版带硬件加速 |
ImmortalWrt | 最高兼容 | 全部开源 | 全开源 适合国内编译 |
iStoreOS | 最高兼容 | 全部开源 | 国内后起之秀 |
编译之前需要做好一些准备工作
注意事项:
不要用 root 用户进行编译,国内用户编译前最好准备好梯子。
- 系统推荐(最新系统编译也没问题了)
- Debian
- Ubuntu LTS
- 安装编译环境
sudo apt update -y
sudo apt full-upgrade -y
sudo apt install -y ack antlr3 asciidoc autoconf automake autopoint binutils bison build-essential \
bzip2 ccache clang cmake cpio curl device-tree-compiler flex gawk gcc-multilib g++-multilib gettext \
genisoimage git gperf haveged help2man intltool libc6-dev-i386 libelf-dev libfuse-dev libglib2.0-dev \
libgmp3-dev libltdl-dev libmpc-dev libmpfr-dev libncurses5-dev libncursesw5-dev libpython3-dev \
libreadline-dev libssl-dev libtool llvm lrzsz msmtp ninja-build p7zip p7zip-full patch pkgconf \
python3 python3-pyelftools python3-setuptools qemu-utils rsync scons squashfs-tools subversion \
swig texinfo uglifyjs upx-ucl unzip vim wget xmlto xxd zlib1g-dev
(1)克隆源码
选择其中一个项目源码进行编译,编译过程通用。
git clone https://github.com/openwrt/openwrt.git
git clone https://github.com/coolsnowwolf/lede
git clone https://github.com/immortalwrt/immortalwrt.git
git clone https://github.com/istoreos/istoreos.git
(2)进入目录
cd lede
(3)同步插件
此同步会把 feeds.conf.default 文件里面不带#符号的地址源码同步下来到feeds目录
./scripts/feeds update -a
(4)安装插件
此操作会把同步下来的插件安装到目录 feeds→package/feeds
./scripts/feeds install -a
(5)生成默认配置
如果源码目录下没有 .config 文件,则会生成一个默认的文件,如果有则不会生效该命令!
make defconfig
(6)编辑你需要的软件配置
这个选择你需要的就行,一堆东西以后再写介绍把,目前就提供基本流程!
空格选中 M只编译 *代表直接编译到系统镜像安装自带, M需要手动安装!
make menuconfig
(7)下载插件依赖
如果你不选择这个操作也行,但是编译会很慢,国内用户必须要执行,否则你试试一天能不能编译下来! -j8 是线程
make download -j8
(8)开始编译
都推荐第一次编译单线程,我嫌太慢了,直接满线程编译!选择单线程请改成 -j1
make V=s -j$(nproc)
(9)编译结束
编译完成后会在bin目录下生成固件
(二)、插件模块
只选一种,不要多选!!!在源码目录中执行,如 lede/
项目地址:https://github.com/NueXini/NueXini_Packages
sed -i '$a src-git NueXini_Packages https://github.com/NueXini/NueXini_Packages.git' feeds.conf.default
./scripts/feeds update -a && ./scripts/feeds install -a
项目地址:https://github.com/kenzok8/openwrt-packages
sed -i '1i src-git kenzo https://github.com/kenzok8/openwrt-packages' feeds.conf.default
sed -i '2i src-git small https://github.com/kenzok8/small' feeds.conf.default
git pull
./scripts/feeds update -a
./scripts/feeds install -a
make menuconfig
项目地址:https://github.com/mdsdtech/5G-Modem-Packages
这个如何使用?我也不太清楚,应该是直接放在 Packages/feeds 目录下
git clone https://github.com/mdsdtech/5G-Modem-Packages packages/feeds
项目地址:https://github.com/FUjr/modem_feeds
echo >> feeds.conf.default
echo 'src-git modem https://github.com/FUjr/modem_feeds.git;main' >> feeds.conf.default
./scripts/feeds update modem
./scripts/feeds install -a -p modem
强制更新库驱动 (使用本库驱动):
./scripts/feeds install -a -f -p modem
在终端中运行以下命令以打开配置菜单:
make menuconfig
在配置菜单中,您可以选择以下软件包:(均在 Luci/Application 下)
软件包名 | 功能 |
---|---|
luci-app-qmodem | 有模组信息、拨号设置、高级设置三大功能块。由于主程序在这里,因此其他功能依赖该程序(原谅我将后端程序也放在了这里)。 |
Add Lua Luci Homepage | 添加 Lua Luci 首页。luci2(Js Luci)首页默认已添加,若使用luci2时勾选了这个,会有两个首页 |
QMI Driver Selection | 可选择 Generic QMI driver(通用QMI驱动)或 Vendor QMI driver(厂商QMI驱动) |
Quectel Connect Manager Selection | 可选择以下三种之一: - Tom customized Quectel CM:使用本仓库定制的Quectel CM,支持屏蔽添加默认路由、屏蔽修改resolv.conf等功能 - QWRT Quectel-CM-5G:使用 QWRT 仓库的 quectel-CM-5G - NORMAL Quectel-CM:使用普通的 quectel-cm |
Add PCIe Modem SUPPORT | 勾选 PCIe 驱动,需要feeds里有kmod_mhi |
Add Qfirehose SUPPORT | 添加 Qfirehose 支持,用于高通芯片模组固件升级 |
luci-app-qmodem-hc | 支持 hc-g80 SIM 卡切换,该插件为设备专属插件 |
luci-app-qmodem-mwan | 支持多 WAN 设置。 |
luci-app-qmodem-sms | 短信首发功能 |
luci-app-qmodem-ttl | TTL 重写功能 |
为什么选择该项目
- 稳定性:通过缓存和减少 AT 指令的次数,提高了系统的稳定性。
- 可扩展性:最小化 API 端点和统一后端程序设计,便于二次开发和扩展。
- 可靠性:功能分离设计,确保核心功能的稳定性,即使其他功能出现问题也不影响主要使用。
- 多模组支持: 根据 slot 定位模组,模组和配置有一对一的绑定关系,即使重启或热插拔模组也不会造成模组和配置混淆。
- 短信支持: 长短信合并、中文短信发送
- 多语言支持: 开发时将语言资源分离,可以添加需要的语言
- IPV6支持: 部分支持ipv6 ,测试条件 (移动卡 rm50xq qmi/rmnet/mbim 驱动,使用quectel-CM-M拨号,使用扩展前缀模式)
- 优化的quectel-CM:原版quectel-CM会覆盖resolv.conf 覆盖默认路由,本仓库提供改进版,增加了对应的开关选项
- 全新实现的AT工具:尽管 sendat、sms_tool 和 gl_modem_at 这三个工具在大多数情况下表现出色,能够满足大部分需求,但它们在超时机制、mhi_DUN 和短信支持方面各自存在一些小问题。如果想要同时使用所有功能,就必须内置这三个 AT 工具,这显然不够优雅,因此我参考这三个工具,实现了一个包含所有功能的at工具。
模组信息

![图片[3]-[OpenWrt] 编译教程包含衍生版本 [插件/配置/DIY]-DoubleWorld’s](https://github.com/FUjr/modem_feeds/raw/main/imgs/modem_info.png)
模组高级设置
可对模组进行拨号模式、制式偏号、IMEI设置、锁小区、锁频段等设置
![图片[4]-[OpenWrt] 编译教程包含衍生版本 [插件/配置/DIY]-DoubleWorld’s](https://github.com/FUjr/modem_feeds/raw/main/imgs/modem_debug_lock_band.png)
拨号总览
![图片[5]-[OpenWrt] 编译教程包含衍生版本 [插件/配置/DIY]-DoubleWorld’s](https://github.com/FUjr/modem_feeds/raw/main/imgs/dial_overview.png)
全局配置
提供全局性的配置选项,允许用户进行统一的模组配置。
- 重新加载拨号:重新加载模组的配置文件,确保配置生效。
- 拨号总开关: 拨号总开关,启用后才会进行拨号
配置列表
- 插槽id为模组标识符与配置文件关联(即同一个端口即使更换模组也会使用同一套配置,同一个模组更换了端口也需要重新配置)
- 拨号相关配置修改后需要重拨才会生效
- 网络接口的名称是模组别名,若模组别名留空则为插槽id
短信
![图片[6]-[OpenWrt] 编译教程包含衍生版本 [插件/配置/DIY]-DoubleWorld’s](https://github.com/FUjr/modem_feeds/raw/main/imgs/modem_sms.png)
Mwan配置
该页面是 MWAN 配置 界面,帮助用户管理多 WAN 连接,通过监控特定 IP 来确保网络的稳定性和可靠性。用户可以根据需求自定义连接的优先级和接口,从而实现负载均衡或故障转移
功能 | 描述 |
---|---|
启用 MWAN | |
相同源地址 | 选中此框后,路由器将在一定时间内使用相同的 WAN 端口处理来自同一源的流量。 |
IPv4 配置 | |
接口 | 选择要添加的 WAN 接口(如 wan 、usb0 等),以便于配置不同的网络连接。 |
跟踪IP | 输入特定的 IP 地址或域名。 |
优先级 | 设置连接的优先级,范围为 1 到 255,数值越低优先级越高。优先级一致会根据权重负载均衡,只有优先级高的故障才会启用低优先级的接口 |
QModem 设置
配置项 | 描述 |
---|---|
禁用自动加载/移除模组 | 关闭以下所有功能。 |
启用 PCIe 模块扫描 | 选中后,系统会在开机时扫描 PCIe 接口。(耗时较长) |
启用 USB 模块扫描 | 选中后,系统会在开机时扫描 USB 接口。(耗时较长) |
监控设置的 USB 接口 | 系统会在开机时扫描插槽配置里的 USB 端口,同时监控 USB 的热插拔事件。 |
监控设置的 PCIe 接口 | 系统会在开机时扫描插槽配置里的 PCIe 端口。 |
插槽配置
该页面允许用户对每个插槽进行一些设置
配置项 | 描述 |
---|---|
插槽类型 | 选择插槽的类型(PCIe/USB),用于识别设备。 |
插槽 ID | 输入设备的唯一标识符(如 0001:11:00.0[pcie] ),用于设备识别。 |
SIM 卡指示灯 | 绑定插槽与相应的指示灯,以显示 SIM 卡的状态。 |
网络指示灯 | 绑定插槽的网络状态指示灯,以便监控网络连接的状态。 |
启用 5G 转网络口 | 启用后,支持的模组通过网络接口与主机通信,以提高性能。 |
关联的 USB | 配置该项可将 USB 端口与 PCIe 端口关联,使用兼容性更好的 USB serial 驱动进行 AT 通信。 |
项目地址:https://github.com/koshev-msk/modemfeed
这是一个用于 OpenWrt 固件的仓库,专为支持 LTE 蜂窝调制解调器而设计。
软件包 | 依赖 | 描述 |
---|---|---|
luci-app-modeminfo | 调制解调器信息 | LTE 调制解调器仪表盘 |
luci-app-smstools3 | 短信董局 | web UI smstools3 |
luci-app-mmcomig | 调制解调器管理器 | 通过 mmcli 实用程序操纵带宽调制解调器。 |
luci-app-atinout | atinout | AT 命令工具 |
luci-app-cellled | 蜂窝网络 | LED 蜂窝信号 信号强度。 |
luci-app-ttl | iptables-mod-ipopt,kmod-ipt-ipopt,kmod-ipt-nat6 | TTL |
qtools | libc | Qualcomm |
asterisk-chan-quectel | asterisk | asterisk SimCom Quectel |
xmm-modem | kmod-usb-net-ncm, kmod-usb-acm | 英特尔 XMM 调制解调器连接脚本 |
- 以及更多未包含在官方 OpenWrt 仓库中的包。
如何添加仓库并编译软件包
在 OpenWrt SDK/Buildroot 的 feeds.conf.default 中添加以下行
src-git modemfeed https://github.com/koshev-msk/modemfeed.git
更新 feeds 并编译单个包
./scripts/feeds update -a; ./scripts/feeds install -a
make -j$((`nproc` + 1)) package/feeds/modemfeed/<package_name>/compile
或 make menuconfig
菜单以在 Buildroot 中包含包固件
(三)、定制化编译
修改默认主机名
123456
(四)、各种报错
123456
暂无评论内容