[OpenWrt] 编译教程包含衍生版本 [插件/配置/DIY]

图片[1]-[OpenWrt]  编译教程包含衍生版本 [插件/配置/DIY]-DoubleWorld’s

OpenWrt 拥有很多衍生版,但是编译过程基本都是一致的!

(一)、基本编译流程

开源项目插件兼容是否闭源开源介绍
OpenWrt最高兼容全部开源官方原版
LEDE部分插件不兼容部分闭源lean大佬衍生版带硬件加速
ImmortalWrt最高兼容全部开源全开源 适合国内编译
iStoreOS最高兼容全部开源国内后起之秀

编译之前需要做好一些准备工作

注意事项:

不要用 root 用户进行编译,国内用户编译前最好准备好梯子。

  1. 系统推荐(最新系统编译也没问题了)
    • Debian
    • Ubuntu LTS
  2. 安装编译环境
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)安装插件

此操作会把同步下来的插件安装到目录 feedspackage/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-ttlTTL 重写功能

为什么选择该项目

  • 稳定性:通过缓存和减少 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工具。

模组信息

在首页显示(Lua)
图片[3]-[OpenWrt]  编译教程包含衍生版本 [插件/配置/DIY]-DoubleWorld’s

模组高级设置

可对模组进行拨号模式、制式偏号、IMEI设置、锁小区、锁频段等设置

图片[4]-[OpenWrt]  编译教程包含衍生版本 [插件/配置/DIY]-DoubleWorld’s

拨号总览

图片[5]-[OpenWrt]  编译教程包含衍生版本 [插件/配置/DIY]-DoubleWorld’s

全局配置

提供全局性的配置选项,允许用户进行统一的模组配置。

  • 重新加载拨号:重新加载模组的配置文件,确保配置生效。
  • 拨号总开关: 拨号总开关,启用后才会进行拨号

配置列表

  • 插槽id为模组标识符与配置文件关联(即同一个端口即使更换模组也会使用同一套配置,同一个模组更换了端口也需要重新配置)
  • 拨号相关配置修改后需要重拨才会生效
  • 网络接口的名称是模组别名,若模组别名留空则为插槽id

短信

图片[6]-[OpenWrt]  编译教程包含衍生版本 [插件/配置/DIY]-DoubleWorld’s

Mwan配置

该页面是 MWAN 配置 界面,帮助用户管理多 WAN 连接,通过监控特定 IP 来确保网络的稳定性和可靠性。用户可以根据需求自定义连接的优先级和接口,从而实现负载均衡或故障转移

功能描述
启用 MWAN
相同源地址选中此框后,路由器将在一定时间内使用相同的 WAN 端口处理来自同一源的流量。
IPv4 配置
接口选择要添加的 WAN 接口(如 wanusb0 等),以便于配置不同的网络连接。
跟踪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-atinoutatinoutAT 命令工具
luci-app-cellled蜂窝网络LED 蜂窝信号 信号强度。
luci-app-ttliptables-mod-ipopt,kmod-ipt-ipopt,kmod-ipt-nat6TTL
qtoolslibcQualcomm
asterisk-chan-quectelasteriskasterisk SimCom Quectel
xmm-modemkmod-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

© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片快捷回复

    暂无评论内容