加载中...
不想等待可以点我关掉

关于DRAFT

有一些库存了很久的文章,因为各种原因没有修缮好没发布,但考虑到可能具有一些参考价值,所以说我日后也会整理一下这类型的文章放出来,但是内容的可靠度有待考量,仅供参考

如果有发现错误请在评论区指出

由来

前几天刷到个视频,突然想起来家里有一堆旧手机,突然间就想折腾一下

视频
视频

先在Mainlining - postmarketOS Wiki里查了下支持情况,发现只有红米7还说的过去,那就开整吧

注意

本文不是什么严肃的教程,有时候可能哪一步操作会有反转也说不定,如果想要照葫芦画瓢的话建议看完再画

安装pmbootstrap

Xiaomi Redmi 7 (xiaomi-onclite) - postmarketOS Wiki可以看到刷入步骤,但在刷之前得先准备好工具——pmbootstrap,是postmarketos的工具包

官方推荐使用Linux来完成所有操作,不过我也懒得为这瓶醋包盘饺子,所以我直接用wsl来解决

在wsl里运行以下命令:

1
2
3
4
5
apt install python3-pip kpartx usbutils fastboot
git clone https://gitlab.postmarketos.org/postmarketOS/pmbootstrap.git
cd pmbootstrap
pip install . --break-system-packages #建议用虚拟环境以防止破坏系统依赖
pmbootstrap --version

如果一切顺利,在安装完成以后会输出pmbootstrap的版本号

1
2
root@Thun888-Laptop:/opt/pmbootstrap# pmbootstrap --version
3.5.2

初始化系统

接下来创建一个目录用来存放初始化系统所用到的文件,名称啥的无所谓了

$

执行:

$

接下来根据提示依次填写以下内容(没有提到的部分保持默认即可):

内容备注
Work path工作目录,填上述文件夹的地址即可
pmaports path在填写的工作目录以后,这一项会自动填写
Channel保持Edge即可,不然搜不到某些机型
Vendor厂商
Device codename设备代号
Username在安装完成以后的用户名称
Install systemd?是否使用systemd,这一步有大坑,建议不要
Localezh_CN
Device hostname设备主机名

示例输出:

随后运行pmbootstrap install来构建系统,在构建过程中需要输入用户密码

刷入

因为我用的是wsl,所以还要额外添加一步把usb设备连接到wsl

安装usbipd-win,使用usbipd list查看设备列表

Snipaste_2025-08-28_20-43-29.png
Snipaste_2025-08-28_20-43-29.png

可以看到我这里的安卓设备的BUSID是5-1,依次执行以下命令

1
2
usbipd bind --busid <busid>
usbipd attach --wsl --busid <busid>
Snipaste_2025-08-28_20-44-15.png
Snipaste_2025-08-28_20-44-15.png

在执行完成以后,可以在wsl里面执行lsusb来查看是否成功附加到了wsl

Snipaste_2025-08-28_20-44-26.png
Snipaste_2025-08-28_20-44-26.png

接下来就可以开始刷入了

不同机型可能步骤上有差异,以官方wiki为准

Releases · barni2000/dtbo-lk2nd下载对应的dtbo.img,随后执行以下命令

1
2
3
4
5
fastboot flash dtbo dtbo.img
pmbootstrap flasher flash_lk2nd
pmbootstrap flasher flash_rootfs
pmbootstrap flasher flash_kernel
fastboot reboot

重启就会进入系统了。。吗?
我这里不知道为什么,重启以后必定进入原系统,然后显示加密已损坏,我索性直接给system分区格式化了,就可以进系统了

IMG_20250828_210829.jpg
IMG_20250828_210829.jpg
IMG_20250828_210930.jpg
IMG_20250828_210930.jpg

然后问题来了,不是说好有触控的吗?咋没触控勒

当时想了想,既然都这样了,那干脆刷一个没有桌面环境的吧,还省些占用
刷完以后像右边这样,屏幕会输出启动日志,在长时间不活动以后会自动熄屏(不过这自动熄屏我也搞不清楚他判断逻辑是怎么样,有时候半天都息不了屏)
那么接下来要怎么连上他呢?他提供了usb网络的方式来连接,只要把它连到电脑上,电脑就会把它当做一个网卡获取ip。这时候他的ip是固定的,只要使用ssh来连接就可以了,那连接进去以后第一件事就是联网了,我按照官方文档的来使用nmcli联网,然后问题来了,它提示我找不到命令,那我现在如果要安装它的话我就要用到网络,可我哪来的网络呢

IMG_20250828_213354.jpg
IMG_20250828_213354.jpg

问题在于nmcli是桌面环境带的依赖,所以我又刷了一遍

注:连上网络以后,我发现重启以后WiFi就连接不上了,但是后面不知道怎的就好了

DRAFT

好像当时每次连接mac地址都不同,我在此处还配置了固定的mac地址和ip,这里有个设置命令不知道有没有效果

1
2
3
4
sudo nmcli connection modify <WIFI NAME> ipv4.method manual \
ipv4.addresses 192.168.1.26/24 \
ipv4.gateway 192.168.1.1 \
ipv4.dns 192.168.10.2

那装完以后换一下源,参考alpine | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
随后我们还要停用掉整个桌面环境,太占性能了,摆在那里也没什么用

1
2
3
4
5
systemctl stop gdm.service
sudo systemctl isolate multi-user.target

systemctl disable gdm.service
sudo systemctl set-default multi-user.target

为了方便异地管理,我打算装个tailscale吧,然后启动不了,因为他根本就没有rc这个管理器,我一开始用的是systemd啊

1
2
3
4
5
+ rc-update add tailscale
sh: rc-update: not found

thun888-redmi7:~# systemctl start tailscaled
thun888-redmi7:~# systemctl enable tailscaled

DRAFT

好像 GNOME 不能在非 systemd 下正常工作

手动通过systemctl启动以后正常运行,我这里毕竟是作为实验性质的,所以想试试看能不能安装上一些常见的管理面板,然后均以失败告终

我认为这也是跟前面的管理器差异的问题导致的,谁会适配这么奇怪的搭配

所以说这玩意儿也就只适合自己折腾了,懒人方案全部用不了。后来在github上看到了droidian-onclite/droidian-images,小小折腾一下droidian吧

从release下载,第1个是不带桌面环境的,第2个是带phosh桌面环境的,我这里用了第2个

这个就很简单了,解压以后直接运行里面的刷入脚本,就会自动刷入重启了

在重启后有意思的地方来了,插触控可以用了,放几张图片欣赏一下这个系统吧,除了ui错位,有一些ui会有遮挡以外,没有什么大问题,就是性能拉垮,根本拉不动ui

联网操作也是图形化页面直接点就行了

联网以后就可以执行以下命令来禁用掉桌面环境了

1
2
systemctl stop phosh
systemctl disable phosh

DRAFT

后面如果你发现背光还亮着的话那就晾着吧,忘记当时是怎么搞定的了
同时不要去碰那个电源键按钮,一碰就会关机

换源

1
2
3
4
5
systemctl stop packagekit
systemctl disable packagekit

nano /etc/apt/sources.list
mv /etc/apt/sources.list.d/ /etc/apt/sources.list.d.backup/

那么再来装一个tailscale吧,不过这一次官方的程序压根就识别不到这是啥系统,所以得手动来安装,可以从pkgs.tailscale.com/stable/#static下载

安装完后试一下安装宝塔面板,安装共用时64分钟啊,具体原因可以参考5分钟在ARM盒子上安装完宝塔面板,不得不说的秘密! - 知乎(对了这个编译还是单核编译)

随便放下红米7的配置作为参考

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
thun888-redmi7:~# lscpu 
Architecture: aarch64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 8
On-line CPU(s) list: 0-7
Vendor ID: Qualcomm
Model name: Falkor-V1/Kryo
Model: 2
Thread(s) per core: 1
Core(s) per socket: 4
Socket(s): 1
Stepping: 0xa
Frequency boost: disabled
CPU(s) scaling MHz: 35%
CPU max MHz: 1804.8000
CPU min MHz: 633.6000
BogoMIPS: 38.40
Flags: fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid
Model name: Kryo-V2
Model: 4
Thread(s) per core: 1
Core(s) per socket: 4
Socket(s): 1
Stepping: 0xa
CPU(s) scaling MHz: 72%
CPU max MHz: 1804.8000
CPU min MHz: 614.4000
BogoMIPS: 38.40
Flags: fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid
NUMA:
NUMA node(s): 1
NUMA node0 CPU(s): 0-7
Vulnerabilities:
Gather data sampling: Not affected
Ghostwrite: Not affected
Indirect target selection: Not affected
Itlb multihit: Not affected
L1tf: Not affected
Mds: Not affected
Meltdown: Not affected
Mmio stale data: Not affected
Old microcode: Not affected
Reg file data sampling: Not affected
Retbleed: Not affected
Spec rstack overflow: Not affected
Spec store bypass: Vulnerable
Spectre v1: Mitigation; __user pointer sanitization
Spectre v2: Vulnerable
Srbds: Not affected
Tsa: Not affected
Tsx async abort: Not affected

宝塔的新ui还是挺好看的
但是我发现只要点一点就会卡死,因为当时没有翻报错日志,所以我也不清楚这是哪里的问题(好像是内核的原因)