我与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/)

相关文章
|
存储 缓存 文件存储
如何保证分布式文件系统的数据一致性
分布式文件系统需要向上层应用提供透明的客户端缓存,从而缓解网络延时现象,更好地支持客户端性能水平扩展,同时也降低对文件服务器的访问压力。当考虑客户端缓存的时候,由于在客户端上引入了多个本地数据副本(Replica),就相应地需要提供客户端对数据访问的全局数据一致性。
32713 80
如何保证分布式文件系统的数据一致性
|
前端开发 容器
HTML5+CSS3前端入门教程---从0开始通过一个商城实例手把手教你学习PC端和移动端页面开发第8章FlexBox布局(上)
HTML5+CSS3前端入门教程---从0开始通过一个商城实例手把手教你学习PC端和移动端页面开发第8章FlexBox布局
17766 21
|
设计模式 存储 监控
设计模式(C++版)
看懂UML类图和时序图30分钟学会UML类图设计原则单一职责原则定义:单一职责原则,所谓职责是指类变化的原因。如果一个类有多于一个的动机被改变,那么这个类就具有多于一个的职责。而单一职责原则就是指一个类或者模块应该有且只有一个改变的原因。bad case:IPhone类承担了协议管理(Dial、HangUp)、数据传送(Chat)。good case:里式替换原则定义:里氏代换原则(Liskov 
36697 21
设计模式(C++版)
|
存储 编译器 C语言
抽丝剥茧C语言(初阶 下)(下)
抽丝剥茧C语言(初阶 下)
|
机器学习/深度学习 人工智能 自然语言处理
带你简单了解Chatgpt背后的秘密:大语言模型所需要条件(数据算法算力)以及其当前阶段的缺点局限性
带你简单了解Chatgpt背后的秘密:大语言模型所需要条件(数据算法算力)以及其当前阶段的缺点局限性
24772 14
|
机器学习/深度学习 弹性计算 监控
重生之---我测阿里云U1实例(通用算力型)
阿里云产品全线降价的一力作,2023年4月阿里云推出新款通用算力型ECS云服务器Universal实例,该款服务器的真实表现如何?让我先测为敬!
36677 15
重生之---我测阿里云U1实例(通用算力型)
|
SQL 存储 弹性计算
Redis性能高30%,阿里云倚天ECS性能摸底和迁移实践
Redis在倚天ECS环境下与同规格的基于 x86 的 ECS 实例相比,Redis 部署在基于 Yitian 710 的 ECS 上可获得高达 30% 的吞吐量优势。成本方面基于倚天710的G8y实例售价比G7实例低23%,总性价比提高50%;按照相同算法,相对G8a,性价比为1.4倍左右。
|
存储 算法 Java
【分布式技术专题】「分布式技术架构」手把手教你如何开发一个属于自己的限流器RateLimiter功能服务
随着互联网的快速发展,越来越多的应用程序需要处理大量的请求。如果没有限制,这些请求可能会导致应用程序崩溃或变得不可用。因此,限流器是一种非常重要的技术,可以帮助应用程序控制请求的数量和速率,以保持稳定和可靠的运行。
29849 52

热门文章

最新文章

下一篇
开通oss服务