.. _chromium_os: ================== Chromium OS ================== Chromium OS基于 :ref:`gentoo_linux` 开发,结合了开源的Chromium浏览器,实现了轻量级面向云应用的Linux。 Chromium OS/Chrome OS完全基于因特网运行的轻量级客户端,在网络受限的墙内使用非常痛苦。不过,Chormium OS通过crostini这样的容器技术,可以在PixelBook/ChromeBook上运行Linux应用程序,为本地应用打开了一扇门。 我个人更看好基于Android的系统来融合移动设备操作系统,毕竟Android市场海量的应用目前还是WEB无法超越的。何况,在国内的生态环境,很多工作应用如果不能使用Android,则即使引入Linux容器也无法满足需求。 对于技术爱好者,我觉得更好的方式是学习 Chromium OS ,通过 :ref:`lfs` 来构建自己的操作系统,构建精简的轻量级操作系统,同时构建AnBox来运行Android应用。 .. _chromium_os_arch: Chromium OS 架构 =================== .. note:: 基于Chromium OS开发定制的Linux操作系统有 `Flint OS `_ ,以及在国内再定制的 `FydeOS `_ (FydeOS提供针对FydeOS定制的硬件,可以视为ChromeBook在国内的翻版)。 `Flint OS于2018年3月被Neverware收购 `_ ,合并到Neverware的CloudReady产品。Neverware在2020年11月又被Google收购,所以目前这个产品应该是融入Chrome OS作为云计算中远程运行的桌面系统产品。 Chromium OS主要由3部分组成: - 基于Chromium的浏览器和窗口管理器 - 系统级别软件和用户级别服务:内核,驱动,连接管理器等等 - Firmware .. figure:: ../../_static/linux/chromium_os/chromium_os_arch.dms :scale: 75 Chromium OS关键组件 ====================== Firmware ----------- firmware可以说是Chromium OS的安全核心,因为现代操作系统的硬件底层都是通过firmware来完成的,firmware的安全性是整个系统的基石。通过加固firmware可以使得操作系统更安全,也更快速。 Chromium OS对firmware的改进主要是削减不必要的组件以降低被攻击面,并且支持启动过程的每一步验证。Chromium OS也支持系统恢复进入firmware。为了避免复杂性带来的安全漏洞,Chromium OS的firmware舍弃了很多旧硬件支持,例如,不支持软盘。 Chromium OS firmware可以实现以下功能: - 系统恢复: recovery firmware可以重新安装操作系统,即使操作系统损坏也可以立即恢复。这个功能有点类似mac电脑的recovery,并且macOS还支持通过Internet进行recovery - 验证启动: 每次系统启动,Chromium OS都会校验firmware,内核以及系统镜像,以防止恶意修改 - 快速启动: Chromium OS移除了很多传统PC firmware向后兼容不得不支持大量硬件的特性,所以通过精简加快了启动(当然也就限制了硬件兼容) .. figure:: ../../_static/linux/chromium_os/chromium_os_firmware.dms :scale: 75 系统级别和用户级别软件 ======================= 在Chromium OS中,提供了 Linux内核,驱动和用户级别服务。 Chromium OS使用Upstart来管理用户级别的服务,这种Upstart进程管理器提供了并行的,应用任务crashi自动重启以及推迟服务来加快启动。 Chromium OS使用了以下开源组件: - ``D-Bus`` : 浏览器使用D-Bus来和系统其他组件进行交互,包括店址检测和网络探测 - ``连接管理器`` : 提供了一个共用的API来和网络设备交互,提供DNS代理,以及管理网络服务,如3G,无线和以太网 - ``WPA Supplicant`` : 连接无线网络 - ``Autoupdate`` : 使用自动更新服务可以静默安装新的系统镜像 - ``电源管理`` : (在Intel硬件上使用ACPI)管理电能,例如合上笔记本屏幕或按下电源键时休眠 - ``标准Linux服务`` : 如NTP, syslog 和 cron Chromium和窗口管理器 ====================== 窗口管理器负责处理用户和多个客户端窗口交互,有点类似X window manager,通过控制窗口的摆放,输入窗口聚焦,以及快捷键操作。结合ICCCM(Inter-Client Communication Conventions Manual, 客户间通讯约定手册) 和 EWHM (Extended Window Manager Hints, 扩展窗口管理器提示) 标准来实现客户端和窗口管理器通讯。 窗口管理器还使用了 XComposite 扩展来重定向客户端窗口到 offscreen pixmaps,这样可以绘出一个最终的合成图形以及其中包含的内容。这样是的窗口可以缩放和混合。窗口管理器包含了一个compositor来通过OpenGL或OpenGL|ES实现窗口动画和渲染。 .. figure:: ../../_static/linux/chromium_os/chromium_os_wm.dms :scale: 75 参考 ====== - `The Chromium Projects - Software Architecture `_