简介
ImmortalWrt 在线构建服务由 aparcar 开发的 Attendedsysupgrade Server(ASU)实现,其本质为云端运行的 Image Builder。
ASU 通过一系列 API 实现自定义固件映像及预安装软件包,可以让用户轻松升级现有或自定义全新 ImmortalWrt 固件,而无需配置任何构建环境。
客户端
ImmortalWrt 固件选择器
地址: https://firmware-selector.immortalwrt.org
基于纯 JavaScript 实现的简单 Web 界面,目前由 mwarning 开发。
它支持搜索设备名称,并展示对应的固件下载链接以及通过 ASU API 请求自定义固件。
luci-app-attendedsysupgrade
软件包 luci-app-attendedsysupgrade 位于 LuCI 系统
-> 值守式系统更新
。
它会请求一个包含当前软件包的新固件并进行刷写。只需勾选“保留当前配置”,无需任何额外配置即可直接升级到新固件。
auc(已弃用)
软件包 auc 是 luci-app-attendedsysupgrade
的命令行版,升级流程与 LuCI 版一致。
owut
软件包 owut 是 auc
的 ucode 重制版,优化并更好地支持了 asu 的各项自定义参数。
服务端
服务端会监听客户端请求,如果请求有效,则生成对应的固件。它利用 Image Builder 构建固件,并进行缓存。如果构建请求命中缓存,则会直接返回结果,不会重复构建。
官方实例
https://sysupgrade.immortalwrt.org(域名已弃用)- https://sysupgrade.kyarucloud.moe
- https://asu-2.kyarucloud.moe
单个构建有效期为七天,七天后会清理对应的文件及缓存条目。
单个 IP 每分钟内只能发起两次构建请求,否则将被封禁一小时。
使用说明
ImmortalWrt 固件选择器
有关软件包名的填写,请参阅 ImmortalWrt Image Builder 使用说明 确定软件包
一栏。
1. 在稳定版本中,默认携带了部分 LuCI 插件。在自定义构建时,也需要将其更名为 luci-i18n-<app>-zh-cn
。
2. 如果不确定该选择什么版本,保持为默认即可;如非必要,尽量避免使用 SNAPSHOT
(主线)版本。
luci-app-attendedsysupgrade
您可以在 配置
选项卡内更新构建服务器地址,以及开启高级模式等。
在高级模式下,请求更新时可以自定义需要集成的软件包。
如安装了 ImmortalWrt 软件源中没有的软件包,需要在此去除,否则将无法通过服务端验证。
auc(已弃用)
$ auc -h
auc/0.3.2-1
auc: Attended sysUpgrade CLI client
Usage: auc [-b <branch>] [-B <ver>] [-c] [-f] [-h] [-r] [-y]
-b <branch> 指定分支/版本
-c 获取最新版本号
-f 强制执行
-h 打印帮助
-n 模拟执行
-r 只检查稳定版更新
-F <fstype> 覆盖文件系统类型
-y 无需确认
目前 auc 实现存在一些 bug,非必要不推荐使用。
owut
$ owut -h
owut - OpenWrt Upgrade Tool 2025.07.11~0d00192d-r1 (/usr/bin/owut)
owut is an upgrade tool for OpenWrt.
Usage: owut COMMAND [-V VERSION_TO] [-R REV_CODE] [-v] [-q] [-k] [--force] [-a ADD] [-r REMOVE] [--ignored-defaults IGNORED_DEFAULTS] [--ignored-changes IGNORED_CHANGES] [-I INIT_SCRIPT] [-F FSTYPE] [-S ROOTFS_SIZE] [-i IMAGE] [-f FORMAT] [-p PRE_INSTALL] [-T POLL_INTERVAL]
-h/--help - 打印帮助信息并退出。
--version - 打印版本信息并退出。
COMMAND - 要执行的命令,必须为下面的其中一项:
check - 收集信息并打印统计数据。
list - 打印用户安装的软件包列表。
blob - 打印用于 asu 请求 json 数据。
download - 构建、下载并校验映像文件。
verify - 校验下载的映像文件。
install - 安装指定的本地映像文件。
upgrade - 构建、下载、校验并安装映像。
versions - 打印可用的版本。
dump - 收集所有信息并打印。
-V/--version-to VERSION_TO - 指定目标版本。默认为已安装版本。
-R/--rev-code REV_CODE - 指定“version_code”,可以为“none”。默认为最新构建。
-v/--verbose - 打印调试信息。重复打印更多内容。
-q/--quiet - 减少打印信息。重复不打印任何内容。
-k/--keep - 保存所有下载的内容。
--force - 强行请求构建,即使可能会导致降级或没有任何更新。
-a/--add ADD - 将指定的软件包添加到构建列表中。
-r/--remove REMOVE - 将指定的软件包从构建列表中移除,
--ignored-defaults IGNORED_DEFAULTS - (显式)忽略指定的默认软件包。
--ignored-changes IGNORED_CHANGES - (显式)忽略指定的软件包名称更改。
-I/--init-script INIT_SCRIPT - 指定系统首次运行时执行的 uci-defaults 脚本的路径(设置为“-”则从 stdin 读取)。
-F/--fstype FSTYPE - 指定 rootfs 文件系统类型(squashfs,ext4,ubifs,jffs2)。
-S/--rootfs-size ROOTFS_SIZE - 警告:使用前先阅读 wiki。指定 rootfs 大小(单位:MB,1-1024).
-i/--image IMAGE - 用于构建、下载、校验并安装的映像名称
-f/--format FORMAT - 打印“list”输出的格式(fs-user,fs-all,config).
-p/--pre-install PRE_INSTALL - 指定最终升级前执行的脚本。
-T/--poll-interval POLL_INTERVAL - 构建监测的轮询间隔(单位:毫秒)。
完整文档
https://openwrt.org/zh/docs/guide-user/installation/sysupgrade.owut
讨论
https://forum.openwrt.org/t/owut-openwrt-upgrade-tool/200035
回报 bug
https://github.com/efahl/owut/issues
owut 仅在 24.10 及更新版本中可用。