内部结构深入解析

这是一个高级流程,我们不建议 Linux 新用户使用。

ChromeOS 支持在 VM 中运行任意代码。这是有关该支持的低级别文档;如需查看更便于用户理解的文档,请参阅faq

前提条件

运行时功能

运行 Linux 容器时,您应该会发现以下功能正常运行:

  • 出站网络连接 (IPv4)。
  • 未加速的图形。
  • 加速图形(通过 OpenGL)。
  • Wayland 程序(首选;通过 Sommelier)。
  • X 程序(通过 SommelierXWayland 实现兼容性)。
  • M74 及更高版本中的音频输出,以及 R79 及更高版本映像中的实验性捕获/麦克风

缺少功能

我们正在努力完善许多容易实现的突破。以下是几个清晰的示例:

  • 视频硬件解码。
  • IME

虽然我们还在考虑更多事项,但 ChromeOS 团队会采取谨慎的方法来推出新功能,以确保整体系统安全性不会受到影响。如需详细了解 ChromeOS 上 Linux 开发的各个方面,请参阅 Crostini 常见问题解答

安全

虽然运行任意代码通常存在安全风险,但 ChromeOS 团队认为,ChromeOS 容器中 Linux 采用的运行时模型足以缓解和控制这种安全风险。虚拟机 (VM) 是安全边界,其中的所有内容都被视为不可信。当前的虚拟机 guest 映像还运行自定义强化型内核,以进一步提高容器的安全性,但这被视为锦上添花的功能,而不是确保整个系统安全性的依赖项。

在此模型中,ChromeOS 系统的其余部分应保持受到保护,免受虚拟机内容器中运行的任意代码(恶意或意外)的侵害。

与外界的唯一联系是通过 crosvm,并且每个渠道都与单个进程(每个进程都经过严格的沙盒处理)进行通信。

容器中的用户数据

随着云服务的普及,当前的安全理念强调,获取账号凭据(例如您的 Google/Facebook 密码)比攻击桌面设备或笔记本电脑更有利可图。它们并没有错。目前的虚拟机/容器 ChromeOS 解决方案目前无法改进这一点。简单来说,目前用户需要对输入到容器中的任何内容负责。因此,如果您运行不安全或遭入侵的容器,然后在容器中输入密码,即使 ChromeOS 系统的其余部分保持安全,密码也可能会被盗。

进程持久性

虚拟机和容器中的进程在用户退出登录后不会继续运行(因为它们位于用户的加密存储空间中),并且会自动终止。它们也不会在登录时自动启动(以避免持续攻击),也无法在启动时自动运行(没有登录会话),因为它们无法访问(它们位于用户的加密存储空间中)。

可执行和可写入的代码

Termina 虚拟机磁盘映像会像其他 Chrome 组件一样下载到可写入的状态分区。为了确保内容不被修改,系统会使用 dm-verity。这也意味着只能加载由 Google 签名的映像,并且映像始终为只读。

硬件攻击

Meltdown/Spectre 漏洞会影响虚拟机的使用安全性。我们已应用修复和缓解措施,以确保虚拟机无法攻击主机系统或其他虚拟机。如需了解详情,请参阅 Chromium OS Wiki 页面上的 ChromeOS 设备的 Meltdown 和 Spectre 漏洞状态

生命周期

启用 Linux 容器(这会负责安装所有其他必要组件,例如 Termina)后,系统即可供您使用。

虽然这些组件可能已安装,但不会立即开始运行。当您退出登录时,所有内容都会关闭并终止;当您登录时,系统不会自动重启任何内容。

当您运行终端应用或任何其他启动容器的 Linux 应用时,如果其父容器尚未运行,系统会自动启动 Termina 虚拟机,并在其中启动 ChromeOS 上的默认 Linux 容器(也称为 Crostini)。这样,您就可以通过 SSH 或 SFTP(通过“文件”应用)连接到容器。

当您关闭所有可见的应用时,虚拟机/容器不会关闭。如果需要,您可以手动停止和启动它们,还可以生成比默认数量更多的容器。

数据持久性

创建的所有虚拟机和容器以及这些容器中的数据都会在用户会话(退出/登录)之间保持不变。它们与浏览器的其余数据一样,都保存在每个用户的加密存储空间中。

如果虚拟机或容器被不安全地停止或终止(例如断电),则可能会丢失数据,需要像系统中的其他内容一样进行恢复。

设备支持

虽然我们希望 Linux on ChromeOS 能够适用于所有 Chromebook,但所需的内核和硬件功能限制了其部署范围。该团队在反向移植功能时,侧重于系统安全性和稳定性。我们正在持续努力改进这方面。

目前支持的语言

如需查看目前支持的设备列表,请参阅支持 Linux 的 ChromeOS 系统

硬件要求

虽然目前对运行 Linux on ChromeOS 容器所需的 RAM、存储空间或 CPU 速度没有最低要求,但这些资源越多,系统性能就越好。

也就是说,您需要使用支持硬件虚拟化的 CPU。在 x86 平台上,此功能有多种名称。Intel 将其称为 VT-xVMX。AMD 将其称为 AMD-VSVM

BayTrail 系统

使用 Intel BayTrail 的 Chromebook 不包含 VT-x。虽然此 CPU 通常包含 VMX,但 Chromebook 中的变体不包含,因此很遗憾,永远不会支持。

您可以在我们的公开设备列表中搜索 Platform 列下的 BayTrail,以查看相应主板是否受支持。

旧版内核

我们没有支持 Linux 3.14 或更早版本的计划。这些需要对新功能进行广泛且通常具有侵入性的反向移植。例如:

您可以在我们的公开设备列表中搜索 Kernel 列中版本号低于 3.14 的主板,以查看相应主板是否受支持。

32 位 ARM CPU

在 32 位 ARM CPU 下运行虚拟机非常困难,不符合标准,并且需要与固件协调。遗憾的是,ChromeOS 固件往往不会配置扩展程序。因此,这些系统不受支持。

您可以在我们的公开设备列表中搜索 Kernel ABI 列下的 arm,以查看相应主板是否受支持。