我与PostmarketOS相遇

简介: PostmarketOS 系统 手机改造

theme: vue-pro

理论部分

关于postmarketos是什么?它是一个是一个运行在手机上的Linux系统,基于Alpine Linux。如果你也想将旧手机发挥他的余温,那么久加入postmarketos让这个发行版本更加安全、迅速、稳定。pmbootstrap是一个什么东西?它是构建postmarketos工具,在整个刷机过程中扮演着不可缺少重要角色之一,没有它就刷不了(排除TWRP卡刷),另外整个刷机过程中还有谷歌的套件:fastboot、adb。刷机分为卡刷与fastboot线刷,卡刷相对于线刷来说是比较方便的,但是在这个刷机过程中我更推荐采用fastboot方式,因为它可以避免许多不必要的麻烦。因为我尝试过很多次卡刷都以失败而告终,不知道为什么wiki上面却显示可以刷机成功。关于UI的选择,如果你的机型为官方wiki上的主要设备机型推荐使用phosh UI,假如你无法使用phosh UI又想使用一个简单的UI,单纯使用Linux SSH拿它来做一台小型服务器,推荐使用sxmo-de-sway它比xfce更加省内存开机只有300多M,另外一种更极端的方式,只安装一个终端不包含任何交互UI,这种方式是不会默认安装网卡驱动,你需要在安装过程中指定网卡驱动包(下文安装流程中有介绍)。

写在最后我以手上的redmi 4x 机器来总一下我的日常使用

开发环境

  • docker(部分机器能够正常使用,很遗憾我自己的设备不支持)
  • Java、python、pip、nodejs、shell、MariaDB、PG 基本上所有能够刷入的机器都能跑

在redmi 4x刷入postmarketos 系统后,充电过程中振动马达每隔一段时间会莫名的震动一下,这让人非常烦躁。我将它反馈到postmarketOS组织,他们是一群很棒的开发者解决问题非常迅速。但是这个问题我并没有得到根本上的解决,于是我把马达的金属触点用隔热胶将其断电,这样很好的解决充电马达一直震动的问题,但是屏幕还是会每隔一段时间亮起,这是我再sxmo-de-swayUI上的体验,我相信在不久的未来它会更好,支持设备也会更多。如果能够使用VNC Service 服务进行远程操作那体验更佳,但是这个发行版本我没有找到合适的解决方案,如果有更好的解决方案可以留言。

操作环境

在这里声明一下,操作环境必须是linux,本次操作环境采用ubuntu20.04(2022-05-01),为什么用20.04而不是用22.04?目前22.04还不太完善,很多软件还没有适配,所以不推荐,因为我有尝试过它并不能很好的安装好pip3。如果没有linux环境的同学可以去下载任意发行版,这里我推荐Ubuntu 20.04版本。

所需软件

刷机所需软件: git、pip3、fastboot、adb、pmbootstrap

那如何将它刷入手机中?

安装大体流程

  1. 首先找到官网wiki查看自己手里的设备是否支持以及完善程度
  2. 在linux操作系统中Install pmbootstrap
  3. 安装postmarketos进手机官方安装wiki

安装完整流程

  1. Ubuntu 更换源,推荐使用Ubuntu 自带的可视化软件更换源,如果没有可以百度更换Ubuntu镜像源,也是非常简单。

  1. 首先先按官方初始化Install pmbootstrap
# 更新Ubuntu镜像源 
sudo apt-get update && upgrade

# 安装刷机所需要的软件
sudo apt-get install -y git python-pip3 android-tools-adb android-tools-fastboot

# 初始化pmbootstrap环境
pip3 install --user pmbootstrap

# 生效当前环境变量,如果不生效环境变量 pmbootstrap命令使用不用了
source ~/.profile

完成以上命令,pmbootstrap环境基本上是安装好了,但是这别着急你还需要了解一下pmbootstrap命令的使用。

# 基础命令
pmbootstrap pull # 用来更新最新版本的补丁
pmbootstrap init # 初始化,这个命令使用来构建postmarketos的配置信息,如需要安装的设备机型、用户、安装额外的软件包、交互UI
pmbootstrap install # 开始构建postmarketos
pmbootstrap shutdown # 卸载工作目录,当你想删除工作路径得先卸载才能够被删除
pmbootstrap config # 查看配置,一般我用他来解决下载镜像网络慢的问题

# 线刷所需了解的命令
pmbootstrap flasher flash_rootfs # 在设备与主机连接好后手机并进入fastboot就可以开始讲系统刷入手机
# pmbootstrap flasher flash_rootfs --partition userdata
# --partition userdata 是用来指定分区的,假设你的手机是64G,而使用`pmbootstrap flasher flash_rootfs`刷完却只有2G或者更少
# 可以采用`--partition userdata`参数来指定安装分区为userdata分区。这样你的64G将全部被挂载/目录

pmbootstrap flasher flash_kernel # 刷入内核,运行此命令Linux 终端将把设备的SHH信息 显示在Linux终端中
# 关于SHH连接地址非常有意思,根据官网wiki介绍它是一个ipv4的内网地址(32位IP地址,即ipv4)
# 例如内网ip为10.56.1.0 那么他的连接地址为 [user]@10.56.1.1,第二台设备则为[user]@10.56.1.2 ...依次类推
# 前三位是相同的,只有第四位是不相同的,一般以1开始依次类推。
pmbootstrap flasher boot # 设备重启进入系统



# 卡刷所需了解的命令
pmbootstrap install --android-recovery-zip # 构建zip包

# 安装并以data分区安装
pmbootstrap install --android-recovery-zip --recovery-install-partition=data

# 关于卡刷请阅读官网wiki
# https://wiki.postmarketos.org/wiki/Installation_from_recovery_mode
  1. 安装环节
    1. pmbootstrap init 命令输入完,选择一个合适的目录来存放工作目录
    2. 选择设备
    3. 选择设备型号
    4. 设置Linux用户名
    5. 选择交互UI
    6. 一路回车(如果需要安装额外的软件包在第二个回车就可以指定)
    7. pmbootstrap install
    8. pmbootstrap flasher flash_rootfs --partition userdata # 输入系统到userdata分区
    9. pmbootstrap flasher flash_kernel # 输入内核此操作会再终端中会显示出SSH连接信息
    10. pmbootstrap flasher boot # 重启设备进入系统

详细请参考官网wiki

  1. 安装好系统,怎么使用WIFI?
# 启动网卡 wlan0 为wifi网卡名称,如果没有则不能够使用wifi
sudo nmcli device wifi list ifname wlan0 
# 连接WiFi $SSID 为wifi名称,$PASSWORD 密码
sudo nmcli device wifi connect "$SSID" password "$PASSWORD" ifname "wlan0" 

# 例如我一个wifi名为akwangl密码为12345679 使用下面命令进行链接
# sudo nmcli device wifi connect akwangl password 12345678 ifname "wlan0" 

官网WiFi wiki

  1. 更换镜像源,当然也可以不换(官方镜像源还凑和网速还行)
  2. 关于Alpine Linux发行版本的使用
# 安装软件,例如安装vim
sudo apk add vim

# 软件包搜索
sudo apk search open-jdk

# 删除软件
sudo apk del vim

# 查看当前系统安装的所有软件(通过这个命令可以找出此设备的网卡驱动,当你不想使用UI来交互可以通过该方式来找出设备安装的wifi驱动包)
sudo apk info

Alpine Linux常用命令

如何将服务注册到开机项中?

过程中可能会遇到的问题

镜像下载慢

你可以使用pmbootstrap config命令来解决。

例如你想更换一个mirror_alpine镜像源地址就可以使用pmbootstrap config mirror_alpine https://mirrors.cloud.tencent.com/alpine/来替换,其他配置参数类似,一般只需要替换mirror_alpinemirrors_postmarketos这两个参数。我推荐mirrors_postmarketos使用nju镜像源,mirror_alpine也是nju,为什么不是阿里云腾讯云清华镜像那是因为有时候他们同步镜像不及时,很容易下载失败导致postmarketos构建失败,并不是他们不够优秀。

mirrors alpine源地址[](https://mirrors.alpinelinux.org/)

postmarketos镜像源地址[](https://postmarketos.org/mirrors/)

相关文章
|
7月前
程序让我们相遇
我叫橘橙黄又青,我来自广东湛江,也是刚刚加入编程这个大家庭。
106 0
|
7月前
快慢指针之:链表中倒数第k个结点
快慢指针之:链表中倒数第k个结点
|
算法
快慢指针法解决链表问题
快慢指针算法是一种基于指针的算法技巧,通常用于解决链表相关的问题。 它的核心思想是使用两个指针,一个指针移动速度较快,另一个指针移动速度较慢。通过这种方式,我们可以在遍历链表的过程中,同时比较不同的节点,以达到特定的目的。
|
7月前
|
缓存 测试技术
有环链表的处理
【5月更文挑战第7天】该文介绍了链表环的检测和处理方法。使用快慢指针可判断链表是否存在环,相遇点距离等于环入口距离。环的长度可通过相遇时慢指针的步长计算。若两链表相交,它们的尾节点相同。
48 1
有环链表的处理
|
7月前
链表反转问题
链表反转问题
43 0
|
7月前
|
算法
链表中快慢指针的应用
链表中快慢指针的应用
|
机器学习/深度学习 存储 缓存
有环链表环的问题
有环链表环的问题
链表带环问题
链表带环问题
104 0
|
测试技术 C++
力扣876 - 链表的中间结点【快慢指针】
力扣876 - 链表的中间结点,利用快慢指针的逻辑寻找中间的那个结点
94 0
力扣876 - 链表的中间结点【快慢指针】
|
存储 前端开发 程序员
实现链表反转
实现链表反转
实现链表反转