抬头仰望星空,是否能发现自己的渺小。

伪斜杠青年
人们总是混淆了欲望和理想

小米 12X 刷全功能内核 原生运行 LXC/Docker 指北

旧手机小米12X 换个盆嫌弃它太便宜,内置空间 256G 和 CPU + 12G 内存,用来做个 mini 主机不错。

内核

折腾了几天,内核出来了,直接用,仅适用于 小米12X ,理论上 Android 11 到 Android 15 MIUI 或者澎湃 OS 都支持,个人的选择是 MIUI 14 的最后一个稳定版。

项目地址:https://github.com/Anr-C/kernel_xiaomi_sm8250_mod/releases

其中分为 SkiSU 和 没有 SkiSU 版本,对于我来说,除了 Magisk 其他都不需要,所以我选择 Kernel_MIUI_psyche_NoKernelSU 前缀的。

注意:NFT 作为 Docker 新版需要的特性,如果不运行新版 Docker 是没必要去开启的。

使用方式:用 SkiSU 的客户端 或者 TWRP 刷入即可,内核开启项截图这里就不放了,Github 那边有。

容器方案

研究了好几天,看了很多项目,最后主要用酷安小绿书上的 tomxi1997 提供的懒人包:https://www.coolapk.com/feed/67916139?s=Y2Q2ZTRiZTExODUzZTM3ZzY4ZmNiY2Ezega1560,在此表示感谢。

LXC 5.0

是一开始尝试的,也是 tomxi1997 最新的 release 上推荐的 deb 版本,可正常安装运行 Docker 29.0.2 。

不便之处:LXC 容器对自身系统文件不可写,有需要就得在 Termux 中以 su 的形式,用 Termux 的 busybox 指令集去编辑 lxc 容器所在处的文件,命令很长,维护起来很麻烦。

同时也带来了另一个很麻烦的事,Docker 桥接模式需要写 iptables raw 表无法达成,没找到合适的开启特权模式的方式。以为是权限不够,转向使用 Magisk 版 lxc-5.0.2,但实测模块版 LXC 容器无法启动卡死在某处,12X 兼容性存在问题。

于是便仅留下了 deb 版本,仅需要 Linux 容器不做套娃 Docker 的还是可以试试,对于 SD 文件目录挂载,可能无从配置,未去折腾。

个人更新日志如下:

2025.11.21

1、sed 源匹配规则不正确导致部分 Linux 无法更换源问题。
2、修正缺少 env.sh 从而 LXC 面板无法进入命令行模式的问题。

DockerCore

化繁为简,毕竟我只需要 Portainer 统一管理,原生跑 Docker 运行在物理机也是可以的。tomxi1997 也提供了最终版,Magisk 刷入重启即可,也比较简单。详细描述见:https://github.com/Anr-C/DockerCore_Systemd-Ubuntu24_Magisk/blob/main/readme.txt

Docker 版本比较低,Docker Compose 版本也不高,但目前社区也就到这个版本:

:/data/data/com.termux/files/home # docker info
Client:
Version: v24.0.6-ce

已知问题:内置 Ubuntu 24 容器也如同 LXC 一样对 NTF iptables 不可写,不同的是 LXC 中的 Docker 可启动, Ubuntu 24 容器的 Docker 无法启动。

其他问题:宿主 Dcoker 容器运行时,比如 samba 对于 sdcard 挂载因 Android 权限问题不可用,大型项目因 Android 缺失其需要获取的文件而无法使用,比如 OS release 等信息文件,可以考虑补全,但终究麻烦。

网络相关则macvlan 不可用以及部分网络配置存在以下可能:

"specify mac-address per network" requires API version 1.44, but the Docker daemon API version is 1.43

尽量使用 alpine 作为底包自行搭建容器,一般无其他问题也不需要特意再套娃,已是最好选择。

个人更新日志如下:

2025.11.24

1、增加 os_release 伪造,减少错误日志输出
2、修正 daemon 单词拼写错误导致的 sd 卡日志错乱
3、开机默认启用桥接网络,用于不使用 systemd 容器,纯宿主 docker 运行情况。

2025.11.21

1、梳理项目文案,包括 Readme,sh 等。
2、docker 默认开启 Api 远程模式 2375 端口,可在 Portainer 中集群使用。

Chroot

本来不打算尝试,但处于好奇试了试。Linux 玩得多的应知道,Chroot 大多数时候用于系统急救,其具备的能力并不全,其依赖的能力来自宿主机器,仅挂载系统核心文件。于是在 Android 这边体验下来存在启动慢,卸载慢,内存地址/文件读写错误/不存在、发热大等问题,同时 Docker 在其中也无法正常启动,报内存地址错误,评价低于 LXC,不必折腾。

总评

原生跑在 Android 上的 Docker 本身为了兼容做了很多处理,不方便可以理解。可惜了这性能强了不是一点半点的闲置,本以为可以折腾点以前树莓派上因为很卡而没法折腾的了,现在看还差点实用性。

总的来说:纯玩 Docker 需要端口映射/桥接网络 就安装 Docker core for Android,需要运行各种 Linux 容器或者需要新版 Docker 能接受仅 HOST 网络就 LXC 5.0 deb。体验落地则各有缺点,需要自行摸索。

两个包都在这儿了,之所以开仓库是因为,以后可能会考虑更新下 Docker 版本,以后若有解决方案方便更新。不过小米 12X 的 4.19 内核本身就限制了很多东西,多少有点旧了,难处理。

项目地址:https://github.com/Anr-C/DockerCore_Systemd-Ubuntu24_Magisk/releases

以上。


本站广告由 Google AdSense 提供

0条评论

发表评论

在 TA 离去的那一刻

“仍在努力工作”