小米红米 5A(xiaomi-riva) 安装 postmarketOS
家里有部旧的红米 5A 手机,放着没啥用拿来刷成 Linux 玩一玩。没想到耗费了我很大的精力。
弯路
本来还是比较简单的一件事,因为一些不当操作导致了刷机失败,编译内核,查看 pmbootstrap 代码等等一系列操作。
开始我就给手机刷了新版本安卓,没想到固件跟 postmarketOS 开发者提供的内核不兼容。导致了内核无法启动。
fastboot boot boot.img
报错说 dtb not found
。具体的一些问题可以看看 https://gitlab.com/postmarketOS/pmaports/-/issues/1848
简要介绍
刷机主要步骤如下:
- OEM 解锁
- 刷 recovery
- 电脑安装配置 pmbootstrap
- 生成并安装系统
- ssh 进入,配置系统
OEM 解锁
这里使用的是第三方开发的小米工具,官网 https://www.xiaomitool.com/V2/
java 编写的,三大主流系统都可以运行。
yay -S --needed xiaomitool-v2
手机端开启 USB 调试并在设备解锁状态里绑定帐号设备。
登录解锁工具解锁,注意选择地区。
刷入 recovery
下载地址 https://github.com/iusmac/recovery_rova/releases
我用的最新版 OrangeFox-R11.1_5
# 刷入
fastboot flash recovery OrangeFox-R11.1_5_FDE+FBE-Unofficial-rova.img
# 也可以直接启动
fastboot boot OrangeFox-R11.1_5_FDE+FBE-Unofficial-rova.img
注意不要进入 MIUI,否则 recovery 会被重置成官方版本
安装 pmbootstrap
其他系统及详情请查看 https://wiki.postmarketos.org/wiki/Installing_pmbootstrap
yay -S --needed pmbootstrap
安装完成之后初始化
pmbootstrap init
我的 ~/.config/pmbootstrap.cfg
,主要是设备信息正确无误。
我修改了镜像源,中国访问加速。
[pmbootstrap]
aports = /home/light4/.local/var/pmbootstrap/cache_git/pmaports
ccache_size = 5G
is_default_channel = False
device = xiaomi-riva
extra_packages = neovim,git,curl
hostname =
build_pkgs_on_install = False
jobs = 17
kernel = stable
keymap =
locale = en_US.UTF-8
mirror_alpine = http://mirrors.tuna.tsinghua.edu.cn/alpine/
mirrors_postmarketos = http://mirrors.tuna.tsinghua.edu.cn/postmarketOS/
nonfree_firmware = True
nonfree_userland = True
ssh_keys = True
ssh_key_glob = ~/.ssh/id_*.pub
timezone = Asia/Shanghai
ui = gnome-mobile
ui_extras = False
user = light4
work = /home/light4/.local/var/pmbootstrap
boot_size = 512
extra_space = 0
sudo_timer = True
qemu_redir_stdio = False
[providers]
生成并安装系统
我选择了用 recovery 模式安装
https://wiki.postmarketos.org/wiki/Installation_from_recovery_mode
pmbootstrap install --android-recovery-zip
# 也可以选择安装到数据分区
pmbootstrap install --android-recovery-zip --recovery-install-partition=data
# 导出生成的系统,其实就是软链接到了 /tmp/postmarketOS-export/
pmbootstrap export
手机进入 recovery,并开启 adb sideload
模式
# adb sideload 安装具体的系统
adb sideload pmos-xiaomi-riva.zip
ssh 进入并配置系统
参考 WIKI:
- https://wiki.postmarketos.org/wiki/USB_Network
- https://wiki.postmarketos.org/wiki/SWAP
- https://wiki.postmarketos.org/wiki/Fstab
- https://wiki.gentoo.org/wiki/OpenRC_to_systemd_Cheatsheet
# ssh 登录
ssh [email protected]
主要是配置 swap 和家目录
配置 swap
默认的 swapfile 在安装的系统分区并且大小为 1G。安装完系统分区就 100% 了。
# 关闭 swapfile
swapoff swapfile
# 删除文件
rm swapfile
# 使用 cache 分区
mkswap /dev/disk/by-partlabel/cache
# swapon
swapon /dev/disk/by-partlabel/cache
修改 /etc/fstab
自动挂载
# This file is *not* used to mount / or /boot.
# More information: https://postmarketos.org/fstab
/dev/disk/by-partlabel/cache swap swap nofail 0 0
/root/swap swap swap nofail 0 0
更新服务
rc-update add swap
配置家目录
修改 /etc/fstab
自动挂载
# This file is *not* used to mount / or /boot.
# More information: https://postmarketos.org/fstab
/dev/disk/by-partlabel/cache swap swap nofail 0 0
/root/swap swap swap nofail 0 0
/dev/disk/by-partlabel/userdata /home ext4 noatime 0 2
# 挂载数据分区
mkdir -p /data
mount /dev/disk/by-partlabel/userdata /data
# 备份家目录
cp -a /home/light4 /data/
# 卸载
umount /data
# 删除系统分区家目录
rm -rf /home/light4
# 挂载新家目录
mount /dev/disk/by-partlabel/userdata /home
# 更新服务
rc-update add localmount default
其他
折腾的一个副产物: https://github.com/light4/gfd.sh 方便断点续传克隆 Git 仓库。
下载内核代码让人头大 😂。
小米 MIUI 正式版刷机包汇总
https://xiaomishequ.feishu.cn/sheets/shtcnsRTbwSvpUsaei6B04ogI6Z?sheet=bRyHnR