整理 | 郑丽媛
出品 | CSDN(ID:CSDNnews)
还记得在今年年初盘点 “Bug 连连”的 Android 12 时 , XDA Developers的前主编 Mishaal Rahman 曾预言:“Android 12 的 Bug 修复对谷歌而言已压力不小 ,由此可能导致下一版本的开发周期遭到缩减 , 从而引发恶性循环 。 ”
结果不到一个月 , Mishaal Rahman 就被“打脸”了:2月10日, 谷歌正式发布了 Android 13 首个开发者预览版。
不可否认的是 , 在感受过“Android 历史上最大设计变更”的 Android 12 后 , 首个 Android 13 预览版似乎处在一种“珠玉在前 , 瓦石难当”的尴尬处境:在看过谷歌的介绍后 , 许多人吐槽 Android 13 “平淡无奇”、“鸡肋平庸” 。
Android 和 Web 开发人员 @kdrag0n 发现了隐藏在 Android 13 预览版中的闪光点: 谷歌 Pixel 6 等设备在安装 Android 13 预览版后 , 可实现完全虚拟化!
这意味着 , 现在我们可以在 Pixel 6 或其他基于 Tensor 处理器的设备上 , 以接近原生的速度运行几乎任意操作系统 , 包括 Windows 11、Ubuntu 或 Arch Linux Arm 等 Linux 发行版 。
文章图片
将 KVM 引入 Android
早在 2 个月之前 , Mishaal Rahman 就曾“谷歌将如何在 Android 13 中使用虚拟化”这一话题进行过分析 , 他坚定认为:“ 谷歌多年碎片化战争的下一个战场是虚拟化 。 ”
说起 Android 的虚拟化 , Android 系统团队的 Will Deacon 将之称为“碎片化的狂野西部” 。 因为不论虚拟机是否存在于设备上 , 它们的作用通常都不是用来运行其他操作系统 , 而是用于试图增强内核安全或在 Android 操作系统之外运行杂项代码(例如 DRM、密码学和其他闭源二进制文件的第三方代码) 。
但在谷歌看来 , “在 Android 操作系统之外运行杂项代码”这一点存在重大隐患:
文章图片
从上面这张 ARMv8/v9 异常模型中可以看出 , 虚拟机程序运行在 EL2 层 , 而在 ARM 命名法中 , 数字越大 , 特权级别越高 , 即 EL2 比行在 EL0、EL1 的代码权限更高 。 这也就意味着 , 许多闭源二进制文件的第三方代码的运行权限 , 比操作系统和内核还高 。 这显然是个安全隐患 , 因为 在较高 EL 上运行的代码可访问低级别的所有寄存器 。
为解决这一安全问题 , 谷歌一直在寻求一个通用的虚拟化解决方案 , 以实现解除第三方代码的特权 , 并将该代码与 Android 和其他第三方程序隔离开来 。 关于这点 , KVM 是个不错的选择 。
KVM , 全名 Kernel-based Virtual Machine , 是一个开源的系统虚拟化模块 , 自 Linux 2.6.20 之后 , 便广泛集成在各个主流 Linux 发行版中 , 主要使用 Linux 自身的调度器进行管理 。 而 Android 同样也基于 Linux 内核构建 , 所以谷歌自然而然会选择将 KVM 部署为通用虚拟机管理程序 。 但谷歌并非照搬全收 , 它实际上是在扩展具有额外安全功能的 KVM , 即 pKVM:受保护的 KVM 。
当时 , Mishaal Rahman 就已预测了 Android 13 可能出现的变化:“目前 , 市场上没有任何 Android 设备配备虚拟化模块 , 包括谷歌自己的 Pixel 6 也没有 , 但 这将随着即将发布的 Android 13 版本而改变 。 ”他补充道 , 据他了解 ,谷歌有计划在 Android 13 中引入 pKVM 和虚拟机框架的第一个版本 。
Mishaal Rahman 预测成功
这次 , Mishaal Rahman 的预测成功了:通过加入全新虚拟化框架的 Android 13 预览版 , @kdrag0n 完成了在 Pixel 6 中运行 Windows 11 及部分 Linux 发行版的尝试 。
特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。