【初学者】图解从开启服务器到完成启动的机制

大家好,
我是来自 Beyond 的 Kita,一位拥有超级稀有角色、在《猫咪大乱斗》中无人能敌的玩家。

上次我写了一篇
关于硬件的博客文章这次,我想用通俗易懂的方式解释一下服务器从开机到完全启动的整个工作流程。

我们经常在不假思索的情况下启动和停止云端服务器,但我认为真正了解这一过程的人比你想象的要少。
(我以前就是其中之一。)

这次,我们将用图示解释启动顺序,以便即使是初学者也能理解,所以请读到最后。

Linux 服务器启动概览

首先,总而言之,Linux 系统启动顺序如下:

固件(BIOS/UEFI)→ 引导加载程序 → 内核 → 初始化进程

然而,仅凭这些信息很难理解,所以我们将用图表进行更详细的解释。

从开机到完成启动过程总共有八个步骤。
大致来说,启动过程按以下顺序完成:

  1. 启动到 BIOS/UEFI
  2. 执行硬件检测
  3. 启动设备选择过程运行
  4. GRUB启动
  5. 内核启动
  6. initramfs 启动
  7. systemd 启动
  8. 启动完成

整体流程如上图所示,整个系统启动过程称为引导。
从启动 BIOS/UEFI 到上述步骤的一系列步骤称为“引导顺序”或“启动过程”。
接下来我们将详细解释每个步骤。

每项内容的解释

①BIOS/UEFI启动

首先,当你按下电源按钮启动电脑时,首先运行的是BIOS/UEFI。BIOS
/UEFI安装在主板上的ROM中,它的作用是在启动操作系统之前初始化电脑中安装的各种设备,并确保操作系统能够正常启动。

BIOS 和 UEFI 的区别在于,如图所示,UEFI 是 BIOS 的改进版本。
但这并不意味着 UEFI 是唯一选择,目前这两种系统并存。

虽然两者在功能上相似,但UEFI在复杂性和易用性方面都优于传统的BIOS。

②硬件检测

接下来,我们将解释硬件检测。

BIOS 的一个过程称为
POST(开机自检),它可以识别、检查和初始化连接的硬件,以便可以使用该硬件。

③ 选择启动设备

接下来,运行启动设备选择过程。
这也是BIOS过程的一部分,在完成POST(硬件识别)后,选择启动设备(包含操作系统的存储设备)。

启动设备是一个存储设备(硬盘/固态硬盘),其中包含服务器启动时要首先运行的程序。
包含要启动的操作系统的存储设备,

④ 引导加载程序启动

接下来,BIOS启动存储在启动设备上的引导加载程序。
引导加载程序是一个识别并启动操作系统(内核)的程序

许多 Linux 系统使用 GRUB 作为引导加载程序,
GRUB 有两种类型:长期使用的“GRUB Legacy”和“GRUB 2”。
注意:对 GRUB Legacy 的支持已经停止。

大多数现代操作系统都使用较新版本的 GRUB 2。

⑤启动内核

现在我们终于可以启动内核了。

内核是Linux的核心程序,狭义上也称Linux。
它主要负责控制连接到服务器的硬件。

简而言之,BIOS/UEFI 启动启动设备中包含的引导加载程序(GRUB),引导加载程序启动内核。

⑥启动initramfs

然后内核启动 initramfs 来访问启动系统所需的数据。

initramfs 由引导加载程序放入内存中,然后由内核提取出来临时使用,内核负责挂载文件系统。

首先,引导加载程序将内核和 RAM 文件系统 (initramfs) 加载到内存中,然后内核解包 initramfs 并将其注册为临时根文件系统 → 初始化它 → 挂载它。

这将允许加载必要的内核模块并初始化设备。

此过程完成后,HDD 或 SSD 中包含的原始文件系统将被重新挂载为根文件系统。

这是一个复杂的话题,所以总结起来,最好把它看作是一种允许内核访问启动系统所需数据​​的机制

⑦启动systemd

initramfs 挂载根文件系统后,内核加载并启动“systemd”。

systemd 是系统启动时生成的第一个进程(PID=1)。
它代表“系统守护进程”,守护进程驻留在内存中,负责控制整个系统。

守护进程是一种在系统启动时启动,并在系统运行时持续在后台运行的程序。

⑧启动完成

最后,启动完成。
内核调用 systemd 后,它会依次生成系统运行所需的“子进程”,并显示登录屏幕。

概括

最后,让我们回顾一下启动前的整个过程。

  1. 首先,按下电源按钮启动 BIOS/UEFI(固件)。
  2. BIOS 通过 POST 初始化硬件。
  3. BIOS 从识别到的硬件中选择启动设备。
  4. BIOS启动存储在启动设备上的引导加载程序。
  5. 引导加载程序从选定的引导设备加载并启动内核。
  6. 内核启动initramfs。
  7. initramfs 为内核提供启动系统所需的数据。
  8. systemd 接管该进程,创建系统运行所需的子进程,初始化系统,并显示登录屏幕。

事情就是这样发生的。

最后

到目前为止,我们已经详细解释了从开机到启动完成的整个过程中的 BIOS/UEFI、启动设备、启动加载程序、initramfs、systemd 等相关内容。

由于服务器启动是常有的事,你可能没有太多机会了解启动过程,但如果服务器无法正常启动,这些知识在进行故障排除时将非常有用,所以我希望本文能帮助你至少对服务器启动过程有所了解。

是参考
我公司运营的频道Nezumiya基础设施工程师道场这是一个很棒的频道,您可以从头开始学习基础设施知识,所以如果您有兴趣,请订阅该频道并给予高度评价!

如果您觉得这篇文章有帮助,请点赞!
7
加载中...
7 票,平均:1.00 / 17
2,164
X Facebook 哈特纳书签 口袋

写这篇文章的人

关于作者

Beyond 把我从兼职工作中接了出来。
人力资源部教育部基建工程师
我讨厌飞虫。