虚拟机成为 Android 的核心结构

安卓虚拟化框架(AVF)将出现在即将推出的部分安卓 14 设备上。AVF 于 Android 13 首次在 Pixel 设备上推出,为开发特权应用程序的平台开发人员提供了新的功能。

有了 AVF,我们将更广泛地支持安卓的虚拟化。虚拟化被广泛应用和部署,以隔离工作负载和操作系统。它可以有效地扩展基础设施、测试环境、兼容传统软件、创建虚拟桌面等。

有了 AVF,虚拟机就成了安卓操作系统的核心结构,类似于安卓利用 Linux 进程的方式。开发人员可以灵活选择虚拟机的隔离级别:

  1. 主机(Android)无法访问虚拟机内的工作负载和数据(保密)。

  2. 即使 Android 一直到(包括)主机内核都受到攻击,隔离的虚拟机也不会受到攻击。

AVF 的意义

有了隔离虚拟机,开发人员现在有了 Trustzone 之外的另一种选择,可用于需要在不升级权限的情况下与 Android 隔离的用例。

虚拟机及其内部运行的应用程序的可移植性远高于可信 applets。例如,带有 Linux 应用程序有效载荷的基于 Linux 的虚拟机可以在所有支持 AVF 的设备上运行。这意味着开发人员只需构建一次应用程序,就可以将其部署到任何地方。与移植到 Trustzone 操作系统相比,虚拟机还能无缝、轻松地移植基于 Linux 的现有应用程序。

AVF 设计轻巧、高效、灵活。虚拟机可以:

AVF 在设计时考虑到了开发人员的需求。虚拟机可以定制,以满足特定用例的需求。只要符合 AVF 规定的某些启动和通信协议,开发人员就可以部署任何虚拟机有效载荷。

除了将虚拟化的强大功能引入安卓系统,实现虚拟桌面、沙箱、AVF 使用隔离虚拟机的所有可能性外,还能使以下常见的安卓使用场景(以及更多使用场景)受益:

AVF 使用

AVF 提供了简单的应用程序接口,用于查询设备创建虚拟机的能力及其支持的类型,以及从创建虚拟机的应用程序和服务与这些虚拟机建立安全的通信渠道。

例如,检查 AVF API 的可用性,以及隔离虚拟机和常规虚拟机的可用性:

有关 AVF 及其 API 的其他文档,请点击此处查看。

AVF 组件

AVF 由框架 API、Hypervisor 和虚拟机管理器组成。Hypervisor 确保虚拟机(包括 Android)相互隔离,就像 Linux 内核对进程的隔离一样。不过,与 Linux 内核相比,AVF Hypervisor(pKVM)的代码量要小得多(约 50 倍)。

Hypervisor 侧重于开源可用性、安全性、虚拟机的设备分配以及虚拟机之间的隔离安全。它的攻击面较小,符合较高的安全保证级别。受保护的 KVM Hypervisor(pKVM)完全支持 AVF API 和功能。

pKVM 构建在 Linux 中基于内核的虚拟机(KVM)这一行业标准之上。这意味着所有依赖基于 KVM 的虚拟机的现有操作系统和工作负载都能通过 pKVM 在安卓设备上无缝运行。

crosvm 是基于 Rust 的虚拟机管理器(VMM),是 Hypervisor 与 AVF 框架之间的桥梁。它负责创建、管理和销毁虚拟机。此外,它还提供了一个跨多个 Hypervisor 实现的抽象层。

隔离的虚拟机对 Android 来说是不可见的,即在 Android 中运行的任何进程都无法检查、查看或篡改此类虚拟机的内容。这一保证由 Hypervisor 提供。

虚拟机与隔离的虚拟机相同,只是拥有正确权限的 Android 进程可以访问虚拟机。

Microdroid 是一个经过精简的 Android 操作系统软件包,可作为启动虚拟机(VM)的模板。它为开发人员在虚拟机中构建和运行工作负载提供了熟悉的环境。Microdroid 使用熟悉的 Android 工具和库,如 Bionic、Binder IPC 和 keystore 支持。

VirtualizationService 管理所有客户虚拟机(无论是否隔离)。它主要通过管理 crosvm 实例来实现。它还公开了 AIDL API,系统服务或特权应用程序可使用该 API 启动、监控和停止虚拟机。

RpcBinder 是为 Android 界面定义语言(AIDL)开发的全新后端。RpcBinder 可使用现有的 binder 线协议与虚拟机进行通信。这意味着:

Android 14 有哪些新功能?

安卓 14 不仅使 AVF 可以在更多设备上使用,还提供了一个新的工具包,使用户可以使用 AVF 及其组件构建更多内容:

特权应用程序现在可以使用虚拟机来执行需要隔离的关键工作负载;

添加了跟踪功能、改进的可调试性和监控功能,以提供洞察力并协助平台开发人员在隔离虚拟机内进行开发;

通过供应商模块扩展,我们的合作伙伴可以定制谷歌的 pKVM,以满足他们的特定需求,实现差异化;

安卓 14 中,基于 microdroid 的虚拟机启动速度比安卓 13 快 2 倍,而内存使用量却只有安卓 13 的一半。

AVF 框架的其它部分可让 Android 服务和应用程序轻松使用虚拟化。例如,使用 AIDL 作为传输层抽象虚拟机之间的通信,管理虚拟机生命周期或虚拟机的创建方式。

原文链接:https://android-developers.googleblog.com/2023/12/virtual-machines-as-core-android-primitive.html

Posted by Sandeep Patil – Principal Software Engineer, and Irene Ang – Product Manager