Alibaba Cloud Linux 2 (原Aliyun Linux 2)是阿里云操作系统团队基于社区版 4.19 LTS 内核打造的一款针对云产品优化的下一代 Linux 操作系统发行版,不仅提供 Linux 社区的最新增强功能,也提供了云上最佳用户体验并针对阿里云基础设施做了深度的优化。今年 3 月 26 日Alibaba Cloud Linux 2 LTS 正式发布,这是一个重要的里程碑。在 LTS 版本中,阿里云操作系统团队将提供长期的技术支持、稳定的安全更新以及持续的特性与优化。
阿里云同时推出了基于 Alibaba Cloud Linux 2 LTS 的快速启动版镜像,当前正在火热公测中,用户可以在北京、杭州、张家口、香港等可用区的控制台中购买试用。Alibaba Cloud Linux 2 LTS 为快速启动版做了大量优化工作,本文将深度披露相关操作系统侧的优化技术细节。
镜像目前在北京、杭州、张家口、香港等可用区公测,欢迎购买试用。
1、Linux 系统启动流程简介
我们首先需要定义 Linux 系统启动,这里我们定义为从系统上电到用户能够登录终端的时间为启动时长,对于云上用户来说,从 Guest OS 启动到用户可以通过 ssh 登录的阶段,为系统启动阶段。通用 Linux 操作系统启动大致分为三个阶段:引导阶段(第一阶段),内核启动阶段(第二阶段)及用户态启动阶段(第三阶段),相关流程如下图所示:
下面来看看各阶段大致的启动流程。
第一阶段
Bootloader 是位于系统引导扇区的一段独立的系统程序,用于系统启动初期的硬件初始化,系统分区识别,系统内核加载及跳转执行。目前应用比较广泛的 bootloader 是用于通用系统的 Grub2 和嵌入式系统的 uboot。Grub2 是多重引导器(multiboot),提供交互界面,默认配置下 Grub2 有5秒交互超时时间,启动耗时较长。
第二阶段
Bootloader 加载 Linux 内核(一般为压缩内核 vmlinuz)到内存,并运行内核自解压缩程序,解压后跳转至start_kernel()
,开始内核初始化流程:
第三阶段
Linux 内核完成一系列初始化动作之后,开始运行 init 程序,创建 PID 为 1 的用户态进程,将系统控制权从内核态跳转到用户态。init 程序会继续进行用户态启动流程,开启各种必要的或是预先配置的系统服务,最后启动登陆服务