面向小米平板 6S Pro 的 SteamOS 类 Linux 系统
在小米平板 6S Pro(sheng,SM8550)上运行 Armada——Steam、FEX、Proton 与完整桌面,
直接刷入设备内部存储,**不含 bootc/OSTree/OTA**。
Warning
本项目为开发中的原型软件。安装需要已解锁的 bootloader,并会刷写 Android 分区—— 可能导致设备变砖、分区损坏或数据丢失。**请先备份数据。**操作前请阅读 刷写至小米平板 6S Pro。
这是面向小米平板 6S Pro(sheng)的 Armada 修改版,与上游 Armada 有两处刻意差异:
- 无 bootc / OSTree / OTA。 移除了上游基于镜像的系统更新链路。根文件系统是
普通 ext4 分区,通过
fastboot刷写——升级方式为重新刷写,而非原地更新。 - 设备专属内核,来自
ianchb/sm8550-mainline @
sheng-7.2.2分支,并烘焙了设备修复(见下文)。
其余均与 Armada 相同:ARM64 Steam(FEX 翻译 + Proton 兼容)、游戏模式、KDE Plasma 桌面、Decky 插件、Waydroid,以及 Armada 设备服务。
| 组件 | 状态 |
|---|---|
启动(原厂 ABL、boot_b.img、header-v0 cmdline root=PARTLABEL=) |
✅ 可进入 Steam |
| 触摸屏(Novatek NT36532E) | ✅ 通过 xiaomi-sheng-thp(用户态 THP → uinput) |
| 音频(6× CS35L43 + WCD938X,经 QDSP6) | ✅ 通过 sheng UCM2(alsa-ucm-conf) |
| USB gadget ECM 网络(sshd) | ✅ |
| WiFi / KDE Plasma 桌面 / Steam 离线回退 | ✅ |
已知限制:Steam 客户端更新与游戏下载需要可用的代理/网络访问 Valve CDN (开发中使用的代理配置见 故障排查)。
<<<<<<< HEAD
先刷新基础镜像(sheng 容器),再导出。两条流水线:
build-sheng-container.yml—— 刷新基础镜像(:sheng-latest):构建 sheng 内核 → 构建 Armada 容器。几分钟到几十分钟(有缓存,同 commit 复用)。build-armada-export.yml—— 导出可刷镜像:拉取:sheng-latest,逐字节导出为rootfs.img, 烘焙boot_b.img,上传制品armada-flashable-no-ota(勾选publish_release还会发布到 GitHub Release,自动分卷)。
更新链路(为什么要先刷容器)
ianchb/sm8550-mainline 内核更新
↓
build-sheng-container.yml: 内核镜像 → Armada 容器 (ghcr :sheng-latest)
↓
build-armada-export.yml: 导出 :sheng-latest → rootfs.img + boot_b.img → Release
导出流程不重新构建系统,只导出当前 :sheng-latest——
想更新系统内容(Steam/软件包/上游 armada 修复),必须先跑容器 workflow。
本地: .github/scripts/armada-export-flashable.sh(需要
podman、配套 mkbootimg.py 与 e2fsprogs)。
产物(位于制品目录 / output/):
boot_b.img 内核 + initramfs + DTB(header-v0,Android boot image)
rootfs.img 8 GB 上限 ext4 根文件系统(导出时缩至实际大小,单分区、growfs、/boot 并入根分区)
flash.sh fastboot 包装脚本(校验 → 擦除 → 刷写 → 重启)
SHA256SUMS 上述所有文件的校验和
MANIFEST.txt 构建元数据
脚本同时会把 sheng 专属修复烘焙进导出的根文件系统:
xiaomi-sheng-thp0.3.9 +libssc0.4.2(用户态触摸 → uinput)及其 Fedora 运行时库(libqmi-glib、libqrtr-glib、libmbim-glib、libprotobuf-c)、modules-load.d/uinput.conf、启用xiaomi-sheng-thp.service- sheng 的 ALSA UCM2(
/usr/share/alsa/ucm2/Xiaomi/sheng/),含conf.d/sm8550/Xiaomi-Pad6SPro.conf的驱动目录映射修复 - sheng 设备固件(来自
ianchb/sheng-firmware)+ 驱动硬编码的novatek/nt36532e.bin别名 - SELinux 防护(容器标签 → permissive)
steam-now启动器(探测 CDN,离线回退)- sshd +
armada-usbgadget.service(USB 以太网,便于远程访问) steamos-update/steamos-select-branch替换为提示(本构建无 OTA)
单系统模式(占用/擦除 Android 的 userdata 分区,不支持双系统):
$ fastboot flash boot_b boot_b.img
$ fastboot erase userdata
$ fastboot flash userdata rootfs.img
$ fastboot reboot也可以直接运行自带的 flash.sh(固定刷 userdata)。
完整流程与故障排查见
docs/flashing-xiaomi-sheng.md。
$ just --list # 查看镜像与 sheng 配方
$ just build-sheng-kernel # 从 ianchb/sm8550-mainline @ sheng-7.2.2 构建内核镜像
$ just build-sheng-image <kernel> # 使用 sheng 内核构建 Armada 容器This repository assembles the Armada bootc image and its flashable disk images,
along with the upstream-derived packages it ships (see
packages/). The development recipes require
just and Podman:
$ just check # Run the test suite and check recipe formatting
$ just packages # Build the packages the image consumes (slow from cold)
$ just build # Build the local bootc container image
$ just --list # Show disk-image, VM, and other development recipesEach package builds as a stage in packages/Containerfile and is published
under a tag derived from its own sources, so an unchanged package is never
rebuilt. just build uses a locally built package when you have one and the
published image otherwise, so you only build what you are changing.
Issues and pull requests are welcome. For installation or device support, check the troubleshooting documentation or ask in the Armada Discord community.
upstream/main
- 内核镜像(
.github/workflows/build-sheng-disk.yml仍保留旧版 BIB 步骤; 当前有效的可刷写路径是上面的容器导出流水线)。 kernel-sheng/BUILD.env固定了KERNEL_REPO/KERNEL_BRANCH/KERNEL_CONFIG。
欢迎提交 Issue 与 PR。
claude codex deepseek harness
项目上游见项目致谢页。sheng 的
内核、固件与 ALSA UCM 配置源自 ianchb
(sm8550-mainline / sheng-firmware / xiaomi-sheng-thp)。
Armada 自有代码采用 GPL-2.0-or-later 许可。捆绑组件保留其上游许可。 详见 LICENSE.md。