ILP32
繁體中文

ILP32Wrt

以 OpenWrt 25.12.6 為基礎的路由器韌體,使用者空間是 AArch64 ILP32(musl 1.2.5), kernel 支援 ILP32。

這是什麼

支援的機型

Target狀態
armsr/armv8(QEMU、虛擬機)已在 QEMU 測試
mediatek/filogic(OpenWrt One)已在實機測試,包含 ILP32 與 LP64 之間互相 sysupgrade
bcm27xx/bcm2710(Raspberry Pi 3 B+)已在實機測試:開機、有線網路、Wi-Fi、LuCI(尚未測試出廠韌體刷寫和 sysupgrade)
其他 mediatek/filogic 路由器、Raspberry Pi 4 和 5已編出 image,尚未在實機測試
其他 target(高通、Rockchip…)尚未編譯

ILP32Wrt 多做了什麼

除了 ILP32 的 kernel、musl 和工具鏈之外,ILP32Wrt 從下一版(v25.12.6-ilp32.3)起,會用打上我們 patch 的 clang 22 編譯最常用的套件(ucode、lucihttp、json-c),其他套件仍用 GCC 14.3。這些 patch 會把位址偏移合併進定址模式, 並避免把指標運算擴成 64 位元,所以這些套件在 ILP32 上跑得更快。

OpenWrt One,同一份原始碼LP64 (GCC)ILP32 (GCC)ILP32Wrt (熱門套件用 clang)
重新載入 200 條防火牆規則2.58 秒2.84 秒 (+10%)2.63 秒 (+2%)
LuCI 20 次請求1.73 秒1.81 秒 (+5%)1.76 秒 (+2%)
使用者空間記憶體(PSS)38.3 MB28.9 MB28.9 MB (-24.6%)

比較的對象是同一份原始碼用 GCC 14.3 編成的 LP64 映像,不是官方 OpenWrt 的映像。 LP64 用 clang 編的版本還沒量過。自己編映像時,也可以用 clang 編其他套件,例如 python3。

原始碼與 image

原始碼和編譯說明:github.com/ilp32-a64/openwrt-ilp32。 image 之後會以實驗性的 pre-release 發佈在那裡;目前還沒有套件庫。

回報你的機型

在你的設備上試過了嗎?不論能不能開機,都歡迎在 repo 裡用機型回報表單開一個 issue。

ILP32Wrt 與 OpenWrt 無關聯。OpenWrt 是 Software Freedom Conservancy(SFC)的註冊商標, 詳見 openwrt.org。