Xiaomi Pad 6 (pipa) Ubuntu 26.04 原生双系统移植文档
文档版本: v1.0
最后更新: 2026-08-30
适用设备: Xiaomi Pad 6 国行版 (
SoC: Qualcomm Snapdragon 870
目标系统: Ubuntu 26.04 LTS Resolute (GNOME / KDE Plasma)
启动方案: A/B Slot + Mu-Silicium UEFI
上游项目: PAD6-DEV / Ubuntu-pipa
最后更新: 2026-08-30
适用设备: Xiaomi Pad 6 国行版 (
pipa)SoC: Qualcomm Snapdragon 870
目标系统: Ubuntu 26.04 LTS Resolute (GNOME / KDE Plasma)
启动方案: A/B Slot + Mu-Silicium UEFI
上游项目: PAD6-DEV / Ubuntu-pipa
目录
一、架构概述
1.1 目标架构
本方案实现的是原生硬件启动,而非 Android 容器内的 Linux:
plain
┌─────────────────────────────────────────────┐
│ Xiaomi Pad 6 (pipa) │
│ Qualcomm Snapdragon 870 │
└──────────────────┬──────────────────────────┘
│
Qualcomm Boot Chain
│
┌─────────┴─────────┐
│ │
Slot A Slot B
│ │
Android Boot Mu-Silicium UEFI
│ │
HyperOS ────────────> Linux Kernel
│
▼
Ubuntu 26.04
GNOME / Plasma
1.2 与 PRoot/容器方案的区别
表格
| 方案 | 层级 | 性能 | 硬件访问 |
|---|---|---|---|
| Termux + PRoot | Android 用户态容器 | 受限 | 通过 Android 抽象层 |
| 本方案(原生) | 直接硬件启动 | 完整 | 直接驱动(Freedreno GPU、ath11k Wi-Fi 等) |
1.3 上游项目状态
-
状态: Active(截至 2026-08-30)
-
最新构建:
build-20260724-99981bd -
提供桌面: GNOME、KDE Plasma
-
基础设施:
pipa-pkgsAPT 源(预编译设备驱动与固件)
二、前置条件与风险提示
2.1 硬性前置条件
表格
| 条件 | 验证命令 | 要求 |
|---|---|---|
| Bootloader 已解锁 | fastboot oem device-info |
Device unlocked: true |
| 设备代号确认 | fastboot getvar product |
product: pipa |
| USB 调试已开启 | adb devices |
显示授权设备 |
| 国行 Fastboot ROM 已下载 | — | 救砖备用 |
2.2 国行版 BL 解锁特别说明
⚠️ 警告: 小米 HyperOS 国际解锁政策明确限制:
-
仅开放给部分用户
-
要求账号注册地在中国大陆以外
-
仅适用于非中国大陆设备
国行设备如果未解锁,必须通过小米官方国内渠道申请。
严禁使用以下方式绕过:
-
降级未知固件
-
不明 EDL 服务
-
付费远程解锁
-
所谓 BL Bypass 工具
解锁 Bootloader 会清除用户数据,操作前务必完整备份。
三、PC 环境准备
3.1 推荐配置
-
Windows PC: 仅用于小米官方 Mi Unlock 工具
-
Linux PC(Ubuntu/Debian): 用于后续所有 ADB / Fastboot / 分区 / 刷写操作
-
备选方案: Ubuntu Live USB(无 Linux 主机时)
3.2 工具安装
bash
sudo apt update
sudo apt install -y adb fastboot git xz-utils
3.3 连接验证
bash
adb version
fastboot --version
adb devices
预期输出:
plain
xxxxxxxx device
四、设备验证
4.1 确认设备代号
bash
adb shell getprop ro.product.device
必须返回:
pipa4.2 确认 Fastboot 产品标识
bash
adb reboot bootloader
fastboot getvar product
必须返回:
product: pipa如非pipa,立即停止,勿使用本文档任何刷写命令。
4.3 记录当前 A/B Slot
bash
fastboot getvar current-slot
假设当前为 Slot A(后续示例均基于此,如为 Slot B 请全程对调 A/B):
表格
| 系统 | Slot | 用途 |
|---|---|---|
| HyperOS | A | 保留 Android |
| Ubuntu | B | 安装 Linux |
五、备份策略
备份是整个流程中最重要的保险步骤。
5.1 准备救砖资源
-
国行 Fastboot ROM(Xiaomi Pad 6
pipaChina/CN 版) -
OrangeFox Recovery(临时启动,不永久刷入)
-
启动方式:
fastboot boot recovery.img(不要fastboot flash boot)
5.2 进入 Recovery 并获取 Root Shell
bash
fastboot boot recovery.img
adb devices
adb shell id # 应显示 root 权限
5.3 备份关键分区
在 PC 上执行:
bash
mkdir -p ~/pipa-backup && cd ~/pipa-backup
# 保存分区映射
adb shell 'ls -l /dev/block/by-name' > pipa-by-name.txt
# 保存 GPT 分区表(文本)
adb shell 'parted /dev/block/sda unit GB print free' > pipa-partitions-before.txt
5.4 镜像级备份
bash
adb exec-out "dd if=/dev/block/by-name/boot_a bs=4M 2>/dev/null" > boot_a.img
adb exec-out "dd if=/dev/block/by-name/boot_b bs=4M 2>/dev/null" > boot_b.img
adb exec-out "dd if=/dev/block/by-name/dtbo_a bs=4M 2>/dev/null" > dtbo_a.img
adb exec-out "dd if=/dev/block/by-name/dtbo_b bs=4M 2>/dev/null" > dtbo_b.img
adb exec-out "dd if=/dev/block/by-name/vbmeta_a bs=4M 2>/dev/null" > vbmeta_a.img
adb exec-out "dd if=/dev/block/by-name/vbmeta_b bs=4M 2>/dev/null" > vbmeta_b.img
adb exec-out "dd if=/dev/block/by-name/rawdump bs=4M 2>/dev/null" > rawdump.img
adb exec-out "dd if=/dev/block/by-name/cust bs=4M 2>/dev/null" > cust.img
adb exec-out "dd if=/dev/block/by-name/persist bs=4M 2>/dev/null" > persist.img
验证备份完整性:
bash
ls -lh
任何镜像为0 bytes均视为备份失败,不得继续。
5.5 完整 GPT 备份(如 Recovery 支持)
bash
adb shell which sgdisk
# 若存在:
adb shell 'sgdisk --backup=/tmp/pipa-gpt.bin /dev/block/sda'
adb pull /tmp/pipa-gpt.bin
六、存储分区规划
6.1 256GB 推荐分配
plain
┌──────────────────────────────────────────────┐
│ Android 系统分区(system/vendor/super) │ 不动
├──────────────────────────────────────────────┤
│ userdata ≈ 160 GB │ HyperOS 数据
├──────────────────────────────────────────────┤
│ linux ≈ 80 GB │ Ubuntu rootfs
└──────────────────────────────────────────────┘
表格
| 用途 | 大小 | 说明 |
|---|---|---|
| Android 数据 | ~160 GB | 保留 HyperOS 日常使用空间 |
| Ubuntu | ~80 GB | 含桌面环境、开发工具、容器等 |
若以 Ubuntu 为主力开发环境,可调整为 Android 120~140 GB / Ubuntu 100~120 GB。
6.2 为什么不能直接尾部写入
Android
userdata 通常占据磁盘尾部连续空间,不能直接在其后追加分区。正确逻辑:plain
修改前: [Android 分区][────────── userdata ──────────]
修改后: [Android 分区][── userdata ──][── linux ──]
操作必然后果:Android 用户数据将全部清空。
七、分区调整操作
7.1 获取真实分区参数
在 Recovery ADB Shell 中:
bash
parted /dev/block/sda
(parted) unit GB
(parted) print free
记录
userdata 的真实:-
Number(分区号,如
34) -
Start(起始位置,如
11.1GB) -
End(结束位置,如
253.8GB)
以下数值仅为示例,必须使用你自己设备的实际输出!
7.2 计算新分区边界
假设:
-
userdata 起始于
11.1GB -
磁盘结束于
253.8GB -
计划分配给 Ubuntu
80GB
则:
-
新 userdata 结束:
253.8 - 80 = 173.8GB -
linux 起始:
173.8GB -
linux 结束:
253.8GB
7.3 执行分区调整
在
parted 交互环境中:Text
rm 34
mkpart userdata 11.1GB 173.8GB
mkpart linux 173.8GB 253.8GB
print # 确认 userdata 和 linux 均存在
quit
7.4 验证新分区
bash
ls -l /dev/block/by-name/userdata
ls -l /dev/block/by-name/linux
两者必须均存在。
若 Recovery 无parted,停止操作,勿使用来源不明的 ARM64 二进制。
八、Android 恢复验证
分完区后必须先验证 Android 可正常恢复,再继续安装 Ubuntu。
8.1 进入 Fastboot 并激活 Android Slot
bash
adb reboot bootloader
fastboot set_active a
8.2 进入官方 Recovery 格式化数据
bash
fastboot reboot recovery
# 或在关机状态下:Power + Volume Up
在小米官方 Recovery 中执行:
-
Wipe Data → Factory Reset
让 HyperOS 自行重新格式化userdata,比手动mkfs更安全(保留加密结构与文件系统选择)。
8.3 验证 Android 启动
启动后确认:
-
[x] 可正常进入系统
-
[x] 设置向导正常
-
[x] Wi-Fi 可用
-
[x] 存储容量显示减少(符合预期)
-
[x] 重新开启开发者模式 + USB 调试
九、Ubuntu 镜像准备
9.1 下载地址
-
GitHub Releases: PAD6-DEV/Ubuntu-pipa/releases
-
当前推荐构建:
build-20260724-99981bd
9.2 选择桌面环境
表格
| 桌面 | 推荐场景 |
|---|---|
| KDE Plasma | 推荐。灵活、平板/键鼠切换友好、开发体验佳 |
| GNOME | 接近标准 Ubuntu 体验 |
两者底层(Kernel、UEFI、驱动)完全一致,仅桌面层不同。
9.3 解压与校验
未拆分包:
bash
tar -xJf ubuntu-pipa-plasma-20260724.tar.xz
拆分包(
.part):bash
cat ubuntu-pipa-plasma-YYYYMMDD.tar.xz.*.part > ubuntu-pipa-plasma-YYYYMMDD.tar.xz
sha256sum -c ubuntu-pipa-plasma-YYYYMMDD.tar.xz.sha256 # 必须显示 OK
tar -xJf ubuntu-pipa-plasma-YYYYMMDD.tar.xz
9.4 解压后目录结构
进入解压目录,应包含:
表格
| 文件 | 用途 |
|---|---|
silicium.img |
Mu-Silicium UEFI → 刷入 boot_b |
ubuntu_esp.raw |
EFI System Partition → 刷入 rawdump |
ubuntu_boot.raw |
Linux Kernel / initramfs → 刷入 cust |
ubuntu_rootfs.raw |
Ubuntu 根文件系统 → 刷入 linux |
vbmeta.img |
禁用 AVB 验证 → 刷入 vbmeta_b |
flash.sh |
单系统刷写脚本 |
flash-multiboot.sh |
多系统刷写脚本 |
十、刷写流程
10.1 安全策略:Slot-Specific 操作
⚠️ 核心原则: 仅修改 Ubuntu 所在 Slot(B),完整保留 Android Slot(A)。
上游
flash-multiboot.sh 默认行为:-
ERASE_DTBO=yes→ 擦除dtbo_ab(影响双 Slot) -
FLASH_VBMETA=yes→ 刷入vbmeta_ab(影响双 Slot)
首次安装必须覆盖此默认行为。
10.2 步骤一:单独处理 Ubuntu Slot 的 DTBO
bash
adb reboot bootloader
fastboot devices
fastboot getvar product # 再次确认 pipa
fastboot getvar current-slot # 再次确认当前 Slot
fastboot erase dtbo_b
若失败(partition not found/FAILED),停止。不要改为dtbo_ab。
10.3 步骤二:单独刷入 Ubuntu Slot 的 vbmeta
bash
fastboot flash vbmeta_b vbmeta.img
若失败,停止。不要改为vbmeta_ab,避免破坏 Android AVB。
10.4 步骤三:执行 Slot-Specific 多系统刷写
bash
BOOT_SLOT_TARGET=boot_b \
ROOTFS_PARTITION=linux \
ERASE_DTBO=no \
FLASH_VBMETA=no \
./flash-multiboot.sh
环境变量说明:
表格
| 变量 | 值 | 作用 |
|---|---|---|
BOOT_SLOT_TARGET |
boot_b |
UEFI 仅写入 Slot B |
ROOTFS_PARTITION |
linux |
rootfs 写入独立 linux 分区 |
ERASE_DTBO |
no |
禁止脚本擦除 dtbo_ab |
FLASH_VBMETA |
no |
禁止脚本刷入 vbmeta_ab |
预期完成的映射:
表格
| 镜像文件 | 目标分区 |
|---|---|
silicium.img |
boot_b |
ubuntu_esp.raw |
rawdump |
ubuntu_boot.raw |
cust |
ubuntu_rootfs.raw |
linux |
10.5 备选:完全手动刷写
如需完全手动控制(假设 Android=A, Ubuntu=B):
bash
fastboot erase dtbo_b
fastboot flash vbmeta_b vbmeta.img
fastboot flash boot_b silicium.img
fastboot flash rawdump ubuntu_esp.raw
fastboot flash cust ubuntu_boot.raw
fastboot flash linux ubuntu_rootfs.raw
fastboot set_active b
fastboot reboot
十一、首次启动
11.1 启动流程
plain
Qualcomm Bootloader → Slot B → Mu-Silicium UEFI → ESP → Linux Kernel → Ubuntu
首次启动可能较慢,属正常现象。
11.2 初始账户
-
用户名:
root -
密码:
root
11.3 首次配置向导
正常应自动进入桌面并弹出初始化向导:
-
创建普通用户
-
设置用户密码
-
设置 hostname
-
加入 sudo 组
-
重启生效
11.4 系统更新
bash
sudo apt update
sudo apt upgrade
镜像已配置pipa-pkgs源,设备专属驱动与固件通过 APT 维护,无需手动编译。
十二、系统验证
建议按以下顺序逐项验证:
12.1 GPU 加速
bash
sudo apt install -y mesa-utils
glxinfo -B | grep "OpenGL renderer"
预期:
异常:
Adreno 或 Freedreno异常:
llvmpipe(软件渲染,桌面卡顿)12.2 Wi-Fi
bash
nmcli device status # 应看到 wifi 设备
iw dev
# 若异常:
sudo dmesg | grep -iE 'ath11k|wifi|wlan|firmware'
12.3 触摸屏
bash
sudo apt install -y libinput-tools
sudo libinput list-devices | grep -A20 -i touch
12.4 蓝牙
bash
bluetoothctl show
bluetoothctl power on
bluetoothctl scan on
12.5 音频
bash
wpctl status
aplay -l
12.6 电池
bash
upower -e
upower -i $(upower -e | grep BAT | head -1)
12.7 休眠(最后测试)
勿在基础功能验证前测试休眠。 移动设备 Linux 最常见问题为 Suspend/Resume、充电、温控与耗电。
十三、双系统切换
本方案利用 A/B Slot 作为系统选择器,非 GRUB 图形菜单。
13.1 Android → Ubuntu
在 Android 端:
bash
adb reboot bootloader
在 PC 端:
bash
fastboot set_active b
fastboot reboot
13.2 Ubuntu → Android
在 Ubuntu 端(如支持):
bash
sudo reboot bootloader
或手动:
plain
关机 → Power + Volume Down → 进入 Fastboot
在 PC 端:
bash
fastboot set_active a
fastboot reboot
十四、维护与注意事项
14.1 关闭 HyperOS 自动 OTA
⚠️ 双系统下 HyperOS OTA 会覆盖 Ubuntu Slot!
Android A/B OTA 机制会写入非当前 Slot,即:
-
Android 在 Slot A 时,OTA 会写入 Slot B
-
Slot B 当前为 Ubuntu → OTA 将覆盖 Ubuntu
必须关闭:
-
自动下载系统更新
-
自动夜间安装
-
手动 OTA 前需备份
boot_b,OTA 后重新刷入 Ubuntu
14.2 被 Ubuntu 占用的 Android 分区
以下分区原内容已被 Ubuntu 替代:
表格
| 分区 | Ubuntu 用途 | 是否可恢复 |
|---|---|---|
rawdump |
EFI System Partition | 需原始 rawdump.img 备份 |
cust |
Ubuntu /boot |
需原始 cust.img 备份 |
其余 Android 核心分区(
boot_a、dtbo_a、vbmeta_a、system、vendor、userdata)保持原状。14.3 镜像混用禁忌
严禁混用不同版本的镜像文件:
表格
| 旧方案(2024-2025) | 当前方案(2026 PAD6-DEV) |
|---|---|
老 6.12 boot.img |
silicium.img |
老 ubuntu.img |
ubuntu_rootfs.raw |
老 pipa_dualrole.img |
ubuntu_esp.raw + ubuntu_boot.raw |
一次安装必须使用同一 Release 内的完整配套文件。
十五、故障恢复
15.1 Ubuntu 启动失败(Android 仍正常)
plain
Power + Volume Down → Fastboot
bash
fastboot set_active a
fastboot reboot
设备未砖,仅 Linux Slot 需排查。
15.2 Android Slot 被误操作
假设 Android 为 Slot A:
bash
fastboot flash boot_a boot_a.img
fastboot flash dtbo_a dtbo_a.img
fastboot flash vbmeta_a vbmeta_a.img
fastboot set_active a
fastboot reboot
15.3 完全救砖
使用预先准备的国行 Fastboot ROM 完整恢复。
⚠️ 绝对禁止在以下状态下重新锁 BL:
-
Linux 分区仍存在
-
修改后的 GPT 未恢复
-
Slot 内容非原厂
只有满足以下条件后方可考虑锁 BL:
-
完整恢复原厂 GPT
-
完整恢复双 Slot 原厂内容
-
完整刷入官方国行 ROM
-
确认 Android 正常启动
十六、最终分区结构
plain
┌──────────────────────────────────────┐
│ Qualcomm / Xiaomi Firmware │
├──────────────────────────────────────┤
│ Android system / vendor / super │
├──────────────────────────────────────┤
│ boot_a │
│ └── HyperOS Boot │
├──────────────────────────────────────┤
│ dtbo_a │
│ └── Android DTBO │
├──────────────────────────────────────┤
│ vbmeta_a │
│ └── Android AVB │
├──────────────────────────────────────┤
│ boot_b │
│ └── Mu-Silicium UEFI │
├──────────────────────────────────────┤
│ dtbo_b │
│ └── Linux DTBO (已擦除/替换) │
├──────────────────────────────────────┤
│ vbmeta_b │
│ └── Linux / Disabled Verification │
├──────────────────────────────────────┤
│ rawdump │
│ └── Ubuntu EFI System Partition │
├──────────────────────────────────────┤
│ cust │
│ └── Ubuntu /boot (Kernel + initramfs)│
├──────────────────────────────────────┤
│ userdata ≈ 160 GB │
│ └── HyperOS Data │
├──────────────────────────────────────┤
│ linux ≈ 80 GB │
│ └── Ubuntu 26.04 RootFS │
└──────────────────────────────────────┘
十七、核心原则
表格
| # | 原则 | 说明 |
|---|---|---|
| 1 | 先查 Slot 再刷写 | fastboot getvar current-slot 每次操作前确认,绝不凭记忆 |
| 2 | 警惕 *_ab 命令 |
boot_ab、dtbo_ab、vbmeta_ab 会同时修改双系统,首次安装避免使用 |
| 3 | 分区数值来自本机 | print free 的输出不可套用教程示例 |
| 4 | Linux 分区命名为 linux |
与上游 ROOTFS_PARTITION=linux 兼容,勿自定义 |
| 5 | 非原厂状态不锁 BL | 双系统运行期间 Bootloader 永久保持 unlocked |
附录:快速参考命令
bash
# 验证设备
adb shell getprop ro.product.device
fastboot getvar product
fastboot getvar current-slot
fastboot oem device-info
# 备份(Recovery 环境)
adb exec-out "dd if=/dev/block/by-name/boot_a bs=4M" > boot_a.img
# 分区调整(parted 交互)
(parted) unit GB
(parted) print free
(parted) rm <number>
(parted) mkpart userdata <start> <end>
(parted) mkpart linux <start> <end>
# Slot-Specific 刷写
fastboot erase dtbo_b
fastboot flash vbmeta_b vbmeta.img
BOOT_SLOT_TARGET=boot_b ROOTFS_PARTITION=linux ERASE_DTBO=no FLASH_VBMETA=no ./flash-multiboot.sh
# 系统切换
fastboot set_active a # Android
fastboot set_active b # Ubuntu
文档声明: 本移植文档基于 PAD6-DEV/Ubuntu-pipa 上游项目整理。刷机存在风险,操作前请确保已完整理解每一步含义,并做好全部备份。作者不对因操作不当导致的设备损坏或数据丢失负责
免责声明
本文档所有内容仅供安全研究、学术交流与技术学习使用,严禁用于任何未经授权的逆向破解、网络攻击、隐私窃取、恶意软件开发及其他违反《中华人民共和国网络安全法》《数据安全法》等法律法规的行为,使用者应确保已获得目标软件权利人的合法授权并自行承担因使用本文档内容所产生的一切法律责任与后果,作者不对任何直接或间接损害承担任何责任,继续阅读即视为您已知悉并同意上述全部条款。
浙公网安备 33010602011771号