Sailfish OS构建(1)

本指南介绍了如何在安卓设备上部署Sailfish OS,包括目标、开发环境设置、构建组件及部署流程。内容涉及Sailfish Core、Android Hardware Adaptation、Android基础以及Sailfish OS组件。开发环境需要Platform SDK和HA构建SDK,构建过程包括内核、Android相关组件以及Sailfish OS RPM包。设备需预装Android基础,如LineageOS,且需要通过adb备份和恢复设备。最后,详细阐述了配置SDK、下载Ubuntu Chroot、设备仓库设置以及构建Android base的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一章 概述

1.1目标

依据本指南,您可以在一个安卓设备上部署一个运行于已有的安卓固件和内核之上sailfishos(或基于sailfishos core)linux操作系统。

内容包括:

Sailfish Core: GNU/Linux userspace core

Android Hardware Adaptation (HA/HAL), 包括:

指定设备的 Android Kernel

Android base :

LineageOS - https://wiki.lineageos.org

AOSP - Android Open Source Project - https://source.android.com

CAF - Code Aurora Forum - https://www.codeaurora.org

Sony Open Devices program - Open Devices - Open Devices - Sony Developer World

Vendor-specific Android base

从 Android base 获取的二进制驱动

针对 Android base 的hybris补丁

针对二进制驱动程序构建的 libhybris 接口

基于特定硬件插件的中间件包

使用 Android hwcomposer 的 Qt/Wayland QPA 插件

Sailfish OS 组件

1.2 开发

1.2.1 需求

使用platform SDK作为开发环境,具备以下功能:

一个或多个特定于设备的目标(具有特定于设备的头文件和库的 rootfs)

HA 构建 SDK(构建 Android 源代码所需的最小 Ubuntu chroot)  在 HA 开发期间,您通常会有一个使用 HA 构建 SDK 的窗口/终端,您可以在其中构建和处理 Android 代码。以及另一个使用 Platform SDK 构建 RPM 以进行硬件适配的会话。

配置 platform SDK,以及特定设备的target和用于HA构建的chroot在配置SDK中介绍。

平台 SDK 会话的命令和输出通过在代码块顶部使用 PLATFORM_SDK $ 指示,如下所示:

PLATFORM_SDK $

echo "此命令应该在 Platform SDK 执行"

如何进入platform SDK 在配置SDK中介绍。

在代码块顶部使用HABUILD_SDK $指示来自与HA构建会话的命令和输出,类似这样

HABUILD_SDK $

echo "此命令应该在 Ubuntu HA build SDK 执行"

如何进入 HABUILD_SDK $ 在进入Ubuntu Chroot中介绍.

1.2.2 构建位置的根目录

在本指南中,我们使用环境变量 $PLATFORM_SDK_ROOT 代表托管 Platform SDK、Targets 和 Ubuntu chroot 的 SDK 目录。 对于一个在 0.5-1GB 的 SDK Targets,您总共需要大约 3GB 的空间。

1.2.3 构建组件

有许多组件需要构建; 在HA build SDK中构建底层和Android相关的组件; 其余的都是在 Platform SDK 中构建的。

在 HA 构建 SDK 中:

一个内核

一个支持各种启动选项的hack友好的 initrd

hybris-boot.img 和 hybris-recovery.img(用于启动和调试)

最小的 Android /system/ 树

为与 libhybris 和 Sailfish OS(例如 Bionic libc、logcat、init、...)兼容而修改的 Android 组件

在platform SDK中:

包含所有构建的二进制文件和提取的配置的 RPM 包

特定于硬件的中间件和插件(例如 Qt QPA 插件、PulseAudio)

RPM 包被上传到一个特定于 HA 的存储库进行分发,通过这个存储库,使用 mic 实用程序的完整系统映像。 mic 实用程序通常也在 Platform SDK 中运行。

1.3 部署

hybris-boot.img(包含内核和我们自定义的 initrd)被刷写到设备上,而 Sailfish OS rootfs 被放置在 /data/ 分区的子目录中,与一个现有的、未修改的 Android 系统一起。Sailfish OS rootfs 然后用作 switchroot 目标,其中 /data 绑定安装在其中以共享访问任何用户数据。

第二章 先决条件

2.1 移动设备

在撰写本文时(2021-02-12 ),LineageOS 15.1 (Android 8)、16.0 (Android 9) 和 17.1 (Android 10) 正式支持 Android 设备。 CyanogenMod 版本(与 Sailfish 操作系统兼容)10.1.x、11.0、12.1、13.0、14.1 将需要额外的努力,因为 CM 已经过时。 有关更多受支持的 Android 版本,请查看此链接

在本指南中,我们将使用术语 Android 基础,它指的是您正在移植的适当基础:LineageOS、AOSP、CAF 等

我们同样支持Sony Open Device项目,并且为此发布了如何重构可刷机镜像的教程:

Xperia X (Sony AOSP 6)

Xperia XA2 (Sony AOSP 8)

Xperia 10 (Sony AOSP 9)

Xperia 10 II (Sony AOSP 10)

自 sailfishos 3.4.0,添加了对 ARM 64bit 的 sailfishos userspace 支持。

从 CM 13.0 (Android 6) 开始的 Sailfish OS 适配是通过混合运行 64 位 Linux 内核和 Android HAL 构建的,而 Sailfish OS 用户空间在 32 位模式下运行。 这种混合模式仍然受支持,但我们鼓励移植者切换到完整的 64 位移植(以 Xperia 10 II 为参考)

兼容设备的列表,请参阅 Redirecting…

有关已使用 HADK 移植的设备的状态列表,请参阅 Adaptations/libhybris - Mer Wiki

请参阅 Adaptations/libhybris/porters - Mer Wiki 以获取早期阶段的移植人员列表,以在 IRC 上联系作者

AOSP 或 CAF Android 基础支持也是可能的,但我们为更广泛的设备选择 LineageOS。 由移植者用 hybris 补丁修补 AOSP/CAF base。使用它的剩余差异很小(例如,使用lunch命令替代breakfast)

用于备份和恢复设备内容(例如 SD 卡或 USB 电缆到主机),以及闪存恢复图像到设

2.2 构建设备

使用64bit 内核的 X86-64机器

sailfishos platform SDK (稍后介绍安装方法)

sailfishos platform SDK target (稍后介绍)

至少 30 GiB 的可用磁盘空间(20 GiB 源下载 + 更多用于构建)用于完整的 Android 6 构建; 最少的下载和 HADK 构建(仅与硬件适配相关的组件)需要空间略小。 较新的 Android 基础版本会产生越来越大的尺寸要求。

最少4GB RAM(越大越好)

第三章 准备您的设备

确认您可以备份和恢复您的设备,并且您了解设备恢复选项。 这不仅在刷写您使用本指南构建的映像时很有用,而且在您想使用库存 Android 将设备重置为出厂状态时也很有用(请注意,并非所有 Android 供应商都提供可供下载的出厂映像,因此您可能需要创建 正在运行的 Android 系统的完整备份并将其存储在安全的地方,然后再开始使用您的自定义版本擦除和重新刷新设备)。

3.1 备份和检查您的设备

如上所述,在首次刷入 Android 基础版本之前备份现有的 Android 原始镜像可能会有所帮助,因为对于某些供应商而言,获取原始镜像可能很困难(例如,某些原始图像只能作为适用于 Windows 的自解压 . exe 包)或不可能(某些供应商不提供供下载的库存镜像)。

使用 Android Recovery&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值