該專案簡化了升級運行 OpenWrt 或基於 OpenWrt 的發行版的設備韌體的 sysupgrade 過程。這些工具提供了一種使用新韌體版本(包括所有軟體包)重新刷新路由器的簡單方法,而無需使用opkg
。
ASU 基於 API 來請求自訂韌體映像以及預先安裝的任何軟體包選擇。這避免了設定建置環境的需要,甚至可以使用行動裝置建立自訂韌體映像。
使用 vanilla JavaScript 的簡單 Web 介面,目前由 @mwarning 開發。它提供基於型號名稱的設備搜索,並顯示官方圖像的連結或透過asu API 請求圖像。請參與 GitLab 儲存庫的開發
luci-app-attendedsysupgrade
套件在System > Attended Sysupgrade
下提供了一個簡單的工具。它請求一個包含當前軟體包集的新韌體映像,等待它建構並刷新它。如果在 GUI 中選取“保留配置”,設備將升級到新韌體,無需重新輸入任何配置或重新安裝任何軟體包。
在OpenWrt SNAPSHOT-r26792 or newer
中,CLI 應用程式auc
被owut
取代,作為更全面的 CLI 工具,提供了一種簡單的方法來升級您的設備。
auc
套件執行與透過 SSH/命令列執行luci-app-attendedsysupgrade
相同的程序。
伺服器偵聽圖像請求,如果有效,則自動生成它們。它協調多個 OpenWrt ImageBuilder 並將生成的圖像緩存在 Redis 資料庫中。如果圖像被緩存,伺服器可以立即提供它而無需重建。
出於安全原因,每個建置都發生在容器內,以便一個建置不會影響另一個建置。為此,Podman 容器運行 API 服務,以便工作人員可以自己在容器內執行建置。
請安裝 Podman 並測試是否有效:
podman run --rm -it docker.io/library/alpine:latest
Podman 工作後,安裝podman-compose
:
pip install podman-compose
現在可以透過podman-compose
運行所有服務:
# where to store images and json files
echo "PUBLIC_PATH=$(pwd)/public" > .env
# absolute path to podman socket mounted into worker containers
echo "CONTAINER_SOCK=/run/user/$(id -u)/podman/podman.sock" >> .env
podman-compose up -d
這將啟動伺服器、Podman API 容器和兩個工作執行緒。第一次運行需要幾分鐘,因為可用的套件是從上游伺服器解析的。伺服器執行後,就可以透過http://localhost:8000
上的 API 請求映像。修改podman-compose.yml
以更改連接埠。
對於生產,建議使用反向代理,例如nginx
或caddy
。
複製此儲存庫後,建立 Python 虛擬環境並安裝相依性:
poetry install
poetry run fastapi dev asu/main.py
# podman unix socket (not path), no need to mount anything
export CONTAINER_HOST=unix:///run/user/1001/podman/podman.sock
poetry run rq worker
若要更新可用目標列表,請執行:
poetry run python3 misc/update_all_targets.py
這可以新增到 cron 作業中以定期更新目標。如果您想從不同的來源更新目標或在不同的連接埠上執行伺服器,則必須變更腳本。
該 API 透過OpenAPI進行記錄,可以在伺服器上互動式查看: