From 29e49dd7a42ea4ee0d988b04e26a6745f4358bb9 Mon Sep 17 00:00:00 2001 From: AskaEth Date: Sat, 7 Nov 2026 08:32:33 +0800 Subject: [PATCH] =?UTF-8?q?docs(termux):=20=E8=A1=A5=20MC=20=E8=BF=90?= =?UTF-8?q?=E8=A1=8C=E6=97=B6=E7=BB=93=E8=AE=BA=EF=BC=88glibc=20JRE=20+=20?= =?UTF-8?q?LWJGL=20arm64=20+=20softpipe=20GL=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - §4.2:Temurin 21 JRE 在 glibc 下跑通;AWT/X11 正常; LWJGL 3.3.3 arm64 + GLFW + GLX/softpipe 端到端探针通过(GL 3.3) - zink 仍卡 DRI3;softpipe 可用(软件 GL) - README 同步:MC 标 🟡(栈已验证,启动器接线待做),后续改为接线 + DRI3 --- README.termux.md | 12 +++++++----- packaging/docs/termux-glibc-build.md | 25 +++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 5 deletions(-) diff --git a/README.termux.md b/README.termux.md index e893fcf..218a5eb 100644 --- a/README.termux.md +++ b/README.termux.md @@ -15,7 +15,7 @@ | Java 发现 | ✅ | `JAVA_HOME`/PATH + `$PREFIX/lib/jvm` 扫描 | | Java 自动安装 | ✅ | `ull java install 17` 由内置镜像装完 openjdk-17(约 20 s) | | GPU(wgpu) | ✅ | 自编 Mesa 26.2.6 + KGSL;wgpu 选中 Adreno 840(Vulkan/turnip) | -| Minecraft 运行 | 🟡 | glibc JRE(Temurin 21.0.13)可跑,AWT/X11 正常;GLX 待 Mesa 26 GL 构建 | +| Minecraft 运行 | 🟡 | 栈已验证:glibc JRE + LWJGL arm64 + GLX/softpipe(GL 3.3);启动器接线待做 | ## 快速开始 @@ -38,13 +38,15 @@ DISPLAY=:0 ./unlucky-launcher-iced --software-renderer `$PREFIX/glibc/{lib,share/vulkan/icd.d}` 后应用会自动启用;Termux 官方源里的 glibc Mesa 太旧(24.2.6 不认识 Adreno 840)。驱动缺失时自动降级 CPU,不会崩。 - **MC**:Android 原生 natives 走不通(LWJGL 没有官方 Android/bionic 产物,且 GLFW 的 - 窗口模型与 termux-x11 的 X11 不兼容)。可行路线是 glibc JVM(Temurin linux-aarch64 + - glibc Mesa)——JRE 与 AWT/X11 已验证,GLX 还差一份 Mesa 26 的 GL 构建。 + 窗口模型与 termux-x11 的 X11 不兼容)。有效路线是 glibc JVM——Temurin 21 JRE + AWT、 + LWJGL arm64 + GLFW + GLX/softpipe 已手动跑通(GL 3.3)。启动器接线还差两步: + Linux/aarch64 上把 natives 选成 `natives-linux-arm64`,并给 MC 子进程带 glibc JVM 与 + `MESA_LOADER_DRIVER_OVERRIDE=swrast`。 - Termux 上三条测试失败是环境差异(`/proc/*/children`、长路径脱敏、mtime flaky), PC 的 Linux CI 不受影响。 ## 后续 -1. Mesa 26 GLX(zink/softpipe)构建 → MC 的 LWJGL/GLFW 打通 -2. MC 运行链接线:启动器在 Termux 上改用 glibc JVM(Temurin),bionic java 留给 UI/CLI +1. MC 运行链接线(natives arm64 映射 + glibc JVM 启动 + softpipe env) +2. zink 的 DRI3 问题(硬件 GL;当前 softpipe 可跑但慢) 3. 剪贴板/IME 在 termux-x11 下的行为验证 diff --git a/packaging/docs/termux-glibc-build.md b/packaging/docs/termux-glibc-build.md index ae5df07..6a1c571 100644 --- a/packaging/docs/termux-glibc-build.md +++ b/packaging/docs/termux-glibc-build.md @@ -169,6 +169,31 @@ DISPLAY=:0 .gnu/target/release/unlucky-launcher-iced \ - 已实测:`ull java install 17` 从 SAU 镜像装完 `openjdk-17`(含 `openjdk-17-x`), 约 20 秒;`ull java list` 随后列出 `[system]` 的 17。 +### 4.2 跑 MC 需要的运行时(已手动验证) + +bionic 的 Termux JVM 加载不了 MC 的 glibc natives,所以 MC 要用 **glibc JVM**: + +```sh +# Temurin 21 JRE(linux-aarch64),用 glibc loader 直接跑 +curl -L -o jre21.tar.gz \ + https://api.adoptium.net/v3/binary/latest/21/ga/linux/aarch64/jre/hotspot/normal/eclipse +tar -xzf jre21.tar.gz -C "$G/jre" +JRE="$G/jre/jdk-21.0.13+9-jre" +$PREFIX/glibc/lib/ld-linux-aarch64.so.1 \ + --library-path "$JRE/lib:$JRE/lib/server:$PREFIX/glibc/lib" "$JRE/bin/java" -version +``` + +- AWT/X11:`DISPLAY=:0` 下 Swing 窗口正常(`headless=false`、`swing-ok`)。 +- GL:需要 §5 的 Mesa 26 GL 构建(`-Dgallium-drivers=zink,softpipe -Dglx=dri`)。 + `zink` 目前卡在 `DRI3 not available`;**softpipe 可用**: + `MESA_LOADER_DRIVER_OVERRIDE=swrast LIBGL_ALWAYS_SOFTWARE=1`。 +- 端到端探针:LWJGL 3.3.3 arm64 natives + GLFW + GLX → `GL_VERSION=3.3 (Compatibility + Profile) Mesa 26.2.6`、`GL_RENDERER=softpipe`、`gl-ok`。 + +> 启动器侧还没接线:MC 的 library 清单在 Linux/aarch64 上要选 +> `natives-linux-arm64` 而不是 `natives-linux`(x64),并在启动 MC 的子进程里带上 +> `MESA_LOADER_DRIVER_OVERRIDE=swrast` 与 glibc JVM 的 `JAVA_HOME`。这两步是后续工作。 + ## 5. GPU(已打通:自编 Mesa 26.2.6 + KGSL) termux-x11 的 X 客户端可以走硬件;glibc 侧的问题在**驱动**,不在 loader: