分类
联系方式
  1. 新浪微博
  2. E-mail

PostmarketOS

介绍

真正的手机 Linux 发行版。

手机的痛点:

  1. 手机厂商只维护新机型,老机型失去维护升级
  2. Android 和 iOS 都是有高高围墙的花园,过多的来自商业公司的限制

PostmarketOS 基于 Alpine Linux。Alpine 有两个 Channel:Edge 是滚动更新,Stable 每 6 个月发布一次。PostmarketOS 也有两个 Channel,Edge 和 Stable,追随 Alpine。

为何选用 Alpine?

Alpine 非常小,基础安装只有 5MB。因为只有这样,我们的开发/安装工具 pmbootstrap 才能够将所有东西抽想到 chroots 中,并因此保持一致的开发环境,不论宿主运行的是哪种 Linux 发行版。

同时,因为很多老设备配置比较老,设备存储空间比较小,Alpine 的精简更加适合这些老设备。

Android 支持

当前,最佳方案是在 PostmarketOS 上通过 Anbox 或者 Waydroid 运行 Android 应用。Android 应用存在以下问题:

  1. Freedom 问题:大多数是私有软件,track you。如果要用,优先使用 F-Droid 提供的软件。
  2. 资源使用开销大:为了运行 Android 应用,需要加载一个 Android 环境,它是跟 Linux 并存的。相对于原生 Linux 应用,会使用更多的内存和 CPU。

在使用 Android 应用前,优先去寻找一个 Linux 原生的替代。对于开发者来说,考虑使用类似 Kirigami UI 这种移动+桌面的跨端技术应用。

project Treble

Google 提出了 Treble,通过拥有一个稳定的API的 "供应商实施 "来改善安卓系统的更新情况,安卓系统是在此基础上建立的。通过该 API,能够方便地改变 Android 版本。

从 postmarketOS 开发者角度来看,这是正确的方向,但是没有完全解决上游的问题。

你还将需要厂商实现(vendor implementation),每个设备都不一样。它包含至少是内核和驱动,你作为用户,依赖于厂商对他们保持更新,但是大概率厂商不会维护它。这就意味着,一两年之后,设备已经失去维护了,但是你还在使用它,缺不再有更新了。

还有一点,Treble 只针对 Android O 以上的系统,老系统没有这项技术。postmarketOS 致力于拯救这些老设备,防止他们变成电子垃圾。

结论:Treble 只对 Android 移植有帮助,对 postmarketOS 遇到的问题没有帮助。

双启动

postmarketOS 允许从 SD 卡启动,而不用覆写现存操作系统。通常这个适用于有 fastboot 和 SD 卡插槽的设备。参见双启动

Google Android 设备上会创建 A/B 分区,也可以将 postmarketOS 刷到另一个/未使用的分区上。

术语介绍

android-msm

Google 修改的 Linux 3.4 内核,作为所有 Qualcomm 的基础。

boot.img

特殊的 Android 格式,通常包含 Linux 内核(在现代版本中附加了dtb)和 initramfs 组成。

这些文件被刷如设备的 boot 或 recovery 分区中。

变种:

  • 有些旧三星设备:boot.img 只是一个带有内置 initramfs 的内核。
  • qcdt:boot.img中附加了一个dtb(而不是附加在内核上)。

dtb

二进制设备树(dtb),该文件包含了对设备硬件的描述。因为手机不像x86平台那样有可发现的总线。这些文件是由内核库中的 dts 文件创建的,并为一些安卓内核产生一个叫做 zImage-dtb 的文件(旧的安卓内核根本不产生 dtb 文件,而是直接在内核源中硬编码信息)。在主线内核中,所有支持的主板的 dtb 文件都是一次性创建的。

dri

Direct Rendering Infrastructure,现代 Linux 内核 API,用于在屏幕上进行绘制。fbdev/framebuffer 已经废弃了。

drm/kms

Direct Rendering Manager/Kernel Mode Setting 是稍微更加复杂一些的 API,相较于 fbdev(替换了 fbdev 的所有功能),仍然提供了 framebuffer,但同事带有 2D、3D 加速选项。

所有开源的 fbdev 驱动应当被一直到 drm 驱动。

FDE

全盘加密(Full Disk Encryption),pmbootstrap 创建的 rootfs 会使用 LUKS 进行全盘加密,以防止手机数据在关机状态下,不用密码也能访问数据。该功能可以通过 --fde 参数启用。

fdt

Flattened Device Tree,是 dtb 的另一种叫法。unpackbootimg 生成以 .fdt 为结尾的文件。

FIMC-IS

Fully Interactive Mobile Camera Imaging Subsystem(全交互式移动相机成像子系统)。

存在于三星的 Exynos 芯片,通常必须在内核配置中禁用,postmarketos 才能基于下游内核启动。参见 FIMC-IS on linux-exynos

fbdev/framebuffer

Linux framebuffer 是 Linux 内核中废弃的 API,允许在屏幕上绘制。采用新的 DRI 驱动替代。Android 设备通常有 framebuffer 驱动,而不是 DRI。

IDA

私有软件 Interactive Disassembler,常用的逆向工具。适用于所有二进制逆向工程,包括闭源固件(Firmware)

反编译是很难的,而且有一个很高的学习曲线。 IDA 还有一个反编译器,能产生 C 代码,以便更好地理解。

lk (little kernel)

lk 是 fastboot 运行的内核。至少所有新的高通设备都使用了LK,新的联发科设备也是如此。

pmic

这是电源管理集成电路的缩写。它是控制手机各部件电源的芯片。

qmi

高通公司调制解调器接口。高通公司SoC内部连接调制解调器和应用处理器的内部接口。

网络资源

官网

Glossary