无需编译, 简单三步定制OpenWrt
现在要给你的软路由, 硬路由或AP刷成OpenWrt的话, 网络上主要分两种方法
自己编译: 搭建环境克隆库更新拉取代码编辑配置开始编译等待编译完成, 以上消耗的时间视网络和主机的配置而定, 可能还会报错. 当然也可以用Action自动编译.
直接下载其他人编译好的固件: 存量固件可以说百家争鸣了, 基本都发布在论坛, 少数在GIthub, 什么完全版精简版, 如果是AP的话可能还有闭源版.
自己编译太麻烦, 直接下载网络上编译好的固件的话, 一是发布的人可能会断更跑路, 而你要切换到其他人/自己编译的固件的话, 原来系统上生成的备份是可能不可用的, 上网方式等都要重新设置; 二是一些人的固件还好是编译在大版本上的(比如21.02, 23.05或24.10), 要是编译在非主线/快照版上, 从opkg安装软件是大概率的失败, 要么无源可用, 要么快照已经更新了. 三是安全性问题, 手机的刷机圈都出现过远程一键格机, 往装了一堆插件的OP固件里放后门那更是简单.
步骤
前置条件
设备获得官方的支持(第一步查看)
设备已经安装了OpenWrt
本文主要使用小米路由器3G来演示, 配置是经典的MT7621, 128M+256M, 80MHz的WiFi 5.
下载初始镜像
我们使用ImmortalWrt, 这个分支也是之前玩OpenWrt和写插件的作者们一起打造的. 相比于OpenWrt, 支持的设备更多, 做了一些小的改进(比如主页默认展示了CPU和WIFI的温度), 内核与版本跟着主线走, 仓库里包含了很多中文圈的插件, 同时国内的网络环境也可访问.
浏览器打开ImmortalWrt的固件选择页面
ImmortalWrt的固件选择页面搜索你设备的型号, 可以先输入品牌, 比如"xiaomi", 如果是x86, 输入"x86", 然后选择Generic x86/64
选好设备后, 会展示型号等信息和下载选项, 如下图
硬路由的下载选项, arm软路由和x86的选项不一样绿色处为选择OpenWrt版本, 默认为最新的数字版本
蓝色处是设备的Wiki, 包含设备的参数, 刷机教程, 救砖方法等信息. 注意这是OpenWrt的Wiki, 而不是ImmortalWrt的, 有一些后者支持了而前者没支持的设备没有写Wiki.
红色处为我们将要下载的文件, 对硬路由是SYSUPGRADE, 如果是arm软路由则可能会不一样, x86更是分为了2个文件系统×是否EFI启动×5种虚拟机硬盘格式=20个选项
不要关闭这个页面, 后面还要用到
下载完成后, 进入OP的管理页面, 刷写下载好的固件, 可以先备份配置, 但刷写时最好不要保留配置
按照123的步骤刷写下载好的固件, 可以先点击
取消勾选开始刷机后, 不要断电, 将设备的WAN口连接到上级路由器. 等待不超过3分钟后, 就能搜索到名称为ImmortalWrt的无密码WiFi, 电脑直接连接, 这样设备和电脑都有网络
如果没搜到, 就用网线连接电脑和设备的LAN口
浏览器直接输入immortalwrt.lan/或者192.168.1.1连接到管理页面, 直接点击登录后, 进入系统 - 系统, 点击同步浏览器时间, 防止随后的更新源出现SSL报错
然后进入系统 - Software, 点击更新列表

同时注意剩余的磁盘空间, 这里是94M
更新完成后的界面如下, 如果出现了Error, 可以重试下
两个框, 没有提示错误, 代表更新成功确定自定义内容
现在的OP没有服务栏, 因为没有安装任何额外的luci app, 这个固件可以说是最精简版
在过滤器下方的输入框输入luci-app-, 就会出现所有可安装的应用
开始确定要安装的应用: 比如ddns-go是一款支持市面上大多数动态DNS服务提供商的应用, 具有独立的WebUI. 在输入框里输入ddns-go
ddns-go搜索结果中, 出现的luci-app-ddns-go表示这是安装后会出现在管理页面的应用(如果直接安装第一个ddns-go, 则只能通过终端配置, 有的包会注册为服务, 在系统 - 启动项里出现), 与其伴随的还有绿色框里标记的zh-cn中文翻译包, 描述里还会出现简体中文. 我们复制绿色框里的名称.
安装了翻译包的话, 会自动安装对应的应用. 如果只安装应用(蓝色框)的话, 在luci里也会自动勾选上当前语言的翻译包, 但是放在固件生成器里就不会这么做了, 导致你最终打开的应用界面是英语.
切回到固件下载页面, 点击红色箭头所指处, 在第一个输入框中新起一行, 粘贴包名称
将要安装的包新起一行放入, 与默认配置的预安装的包区分开接下来就是增加各种各样的包了, 比如起手psw, 比如DNS过滤分流组合: adguardhome, mosdns, smartdns, 小米R3G上还带USB口, 可以再加上与轻NAS相关的: diskman, qbittorrent, alist, 也可加上连接手机作为热点的协议: kmod-usb-net-rndis
这么多应用同时运行, 还要处理WiFi, MT7621是带不动的, 此处仅作演示.
添加的包名之间以空格或回车分隔
有些应用, 比如adguardhome和mosdns, 可能已经有了luci插件而且插件在被维护, 但搜索结果却没有. 原因是仓库没有收录. 输入仓库里不存在的包制作时会报错. 可以在项目的Github里提交你希望收录的包.
加完后, 再新起一行, 添加: luci-i18n-attendedsysupgrade-zh-cn, 这个相当于自动的检查更新与升级, 后续需要升级固件时不用重复上述步骤, 只需在这个应用中升级.
如果你的路由器带有WiFi, 可以检查默认配置的安装包里是否有名称带wpad的包, 如果包名称还带有basic, 比如wpad-openssl-basic, 把basic去掉. 完全包比基础包多了802.11k, v, mesh等的支持.硬路由也可以改用wpad-mbedtls, 占用更少空间.
如果有需要, 我们还可以设置固件首次运行时的脚本, 点击右下角的齿轮图案(蓝色箭头处), 会生成一份可以自定义WiFi名称和密码, root密码, 设备IP和宽带的用户名与密码的默认脚本, 要修改哪项, 取消前面的#字注释. 这里定义了root密码为password, IP为192.168.100.1.

注意这里定义了之后, 即使在升级时勾选了保留配置, 也会覆盖掉原来的配置. 比如原来设备的IP是192.168.1.1, 即使升级时保留配置, 在刷完重启之后, 首次运行脚本就会修改配置, 重设IP为192.168.100.1
生成定制的镜像与后续的升级
点击请求构建, 服务器就会开始构建你定制的固件. 这次生成固件的时间在2分钟左右. 如果一直卡在"收到请求"阶段, 可以多点几次. 相同定制内容的请求只会对应到同一个任务.
生成完成后, 我们还是下载SYSUPGRADE包. 注意生成的固件的大小, 不要超过上面提到的磁盘空间. 否则应用本身的配置, 下载的规则等等也没有空间存放.
注意固件大小然后就是再次升级了, 升级完毕后, 可以看到安装的应用
可以看到可用的空间也变小了那么如何更新呢? 点击系统 - 值守式系统更新, 点击搜索固件更新

最后
可以将包名存为txt, 制作其他设备的包时粘贴上就行
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

值友4398086287
校验提示文案
值友4398086287
校验提示文案