Leadaxe 说明新 Linux 架构适配及 launcher 下载 UPX 核心的限制

Leadaxe 在 issue #146 说明,sing-box-lx 的相关改动加入 linux-386、linux-riscv64 静态 musl/NaïveProxy 构建,以及面向小闪存路由器的 arm64、mipsle-softfloat UPX 压缩副本;产物将从相关合并后的首个发布提供。初始讨论指出 launcher 尚有架构选择与无设备信息时的下载适配问题,并提醒下载普通核心可能把压缩二进制替换为体积约 4–5 倍的文件。后续作者明确修正:lxd update 的压缩格式保留和写入前空间检查已在 9dd91577a 实现,将随 lx.21 发布;launcher 的新架构下载、界面及服务初始化适配已提交 develop 的 fdceb50a,不能视为正式版已发布。仍未解决的是 launcher 的 Download core:设备使用压缩核心时仍会下载普通归档,需要设备信息增加压缩状态才能进一步适配。

作者原文

В релизах ядра появляются новые linux-сборки: Leadaxe/sing-box-lx#35 (влит 03bccf484, UPX на rc — 2e80a11eb; ассеты — с первого релиза после мержа, rc тоже).

  • sing-box-<ver>-linux-386.tar.gz (musl, static, NaïveProxy, GO386=sse2; OpenWrt i386_pentium4)
  • sing-box-<ver>-linux-riscv64.tar.gz (musl, static, NaïveProxy; OpenWrt riscv64_generic)
  • во всех релизах, включая rc: sing-box-<ver>-linux-arm64.upx.tar.gz и sing-box-<ver>-linux-mipsle-softfloat.upx.tar.gz — тот же бинарь, упакованный UPX, для роутеров с маленьким флешем

Демон новых сборок отдаёт в паспорте (GET /admin/info) platform = linux-386 / linux-riscv64, так что путь через assetSuffixFor(…, platform) заработает сам. Что в лаунчере осталось без них:

  1. core/core_downloader.go SingboxAssetSuffixFor — без паспорта (машина ещё не отвечает, ручная запись) linux/386 и linux/riscv64 дают "" → unsupported platform. Комментарий над функцией («the fork publishes no build for that platform (e.g. linux/386)») устарел. Решить: добавить две строки или оставить правило «таблицу не расширяем» и только поправить комментарий.
  2. ui/machine_add_window.go:70, ui/machine_edit_window.go:97 — в выборе GOARCH нет riscv64.
  3. ui/machine_host_format.go hostArchEqual — нет нормализации riscv64 (uname и Go пишут одинаково, проверить, что сверка не ругается).

UPX-копии случайно не выбираются: findPlatformAsset ищет подстроку linux-arm64.tar.gz, в …-linux-arm64.upx.tar.gz её нет. Отдельно: при обновлении ядра на машине с UPX-сборкой лаунчер (как и lxd update) поставит обычный бинарь в 4–5 раз крупнее; на маленьком overlay это упрётся в место. Нужно ли что-то с этим делать — открытый вопрос, не блокер.