网站搜索

Linux 启动过程不同阶段的基本指南


每次启动 Linux PC 时,它都会经历一系列阶段,然后最终显示提示输入用户名或密码的登录屏幕。每个 Linux 发行版在典型的启动过程中都会经历 4 个不同的阶段。

在本指南中,我们将重点介绍 Linux 操作系统从开机到登录期间所执行的各个步骤。请注意,本指南仅考虑 GRUB2 引导加载程序和 < systemd init,因为它们目前被绝大多数现代 Linux 发行版所使用。

启动过程分为以下 4 个步骤,我们将更详细地讨论这些步骤:

  • BIOS 完整性检查 (POST)
  • 加载引导加载程序 (GRUB2)
  • 内核初始化
  • 启动所有进程的父进程 systemd

1. BIOS 完整性检查 (POST)

当用户按下开机按钮(如果 PC 已关闭)或使用 GUI 或命令行重新启动系统时,通常会初始化引导过程。

当 Linux 系统启动时,BIOS基本输入输出系统)启动并执行开机自检POST )。这是执行大量诊断检查的完整性检查。

POST 探测HDDSSD键盘RAM 等组件的硬件可操作性、USB 端口以及任何其他硬件。如果未检测到某些硬件设备,或者任何设备出现故障(例如 HDD 或 SSD 损坏),屏幕上会出现一条错误消息,提示您进行干预。

在某些情况下,特别是在缺少 RAM 模块的情况下,会发出蜂鸣声。但是,如果预期的硬件存在并且按预期运行,则引导过程将进入下一阶段。

2.引导加载程序(GRUB2)

一旦POST完成并且海岸线畅通无阻,BIOS就会探测MBR主引导记录)引导加载程序和磁盘分区信息。

MBR是一个512字节的代码,位于硬盘驱动器的第一个扇区,通常是/dev/sda/dev/hda 取决于您的硬盘架构。但请注意,有时 MBR 可能位于 Linux 的 Live USBDVD 安装上。

Linux 中有 3 种主要类型的引导加载程序:LILOGRUB、GRUB2GRUB2 引导加载程序是现代 Linux 发行版中最新且主要的引导加载程序,它让我们决定放弃其他两个随着时间的推移而变得过时的引导加载程序。

GRUB2 代表 GRand Unified Bootloader 版本 2。一旦 BIOS 找到 grub2 引导加载程序,它就会执行并将其加载到主内存上(BIOS)。 >内存)。

grub2 菜单允许您执行一些操作。它允许您选择要使用的 Linux 内核版本。如果您已经升级系统几次,您可能会看到列出的不同内核版本。此外,它还使您能够通过按键盘按键组合来编辑某些内核参数。

此外,在安装了多个操作系统的双引导设置中,grub 菜单允许您选择要引导到的操作系统。 grub2 配置文件是 /boot/grub2/grub2.cfg 文件。 GRUB 的主要目标是将 Linux 内核加载到主内存上。

3. 内核初始化

内核是任何 Linux 系统的核心。它将 PC 的硬件与底层进程连接起来。内核控制 Linux 系统上的所有进程。一旦引导加载程序加载了所选的 Linux 内核,它必须在执行任何任务之前从其压缩版本中进行自解压。自解压后,选定的内核会挂载根文件系统并初始化 /sbin/init 程序(通常称为 init)。

Init 始终是第一个被执行的程序,并被分配进程 ID 或 PID 1。它是 init 进程,它会生成各种守护进程并挂载 /etc/ 中指定的所有分区。 fstab 文件。

然后内核会挂载初始 RAM 磁盘 (initrd),它是一个临时根文件系统,直到挂载真正的根文件系统。所有内核与初始 RAM 磁盘映像一起位于 /boot 目录中。

4.启动Systemd

内核最终加载Systemd,它是旧的SysV init的替代品。 Systemd 是所有 Linux 进程之母,除其他外还管理文件系统的安装、启动和停止服务等。

Systemd 使用 /etc/systemd/system/default.target 文件来确定 Linux 系统应引导到的状态或目标。

  • 对于桌面工作站(带有 GUI),默认目标值为 5,相当于旧 SystemV init 的运行级别 5。
  • 对于服务器,默认目标是multi-user.target,它对应于SysV init 中的运行级别3。

以下是 systemd 目标的细分:

  • poweroff.target (runlevel 0):关闭系统电源。
  • rescue.target(运行级别 1):启动救援 shell 会话。
  • multi-user.target(运行级别 2,3,4):将系统配置为非图形(控制台)多用户系统。
  • graphical.target(运行级别5):将系统设置为使用带有网络服务的图形多用户界面。
  • reboot.target(运行级别6):重新启动系统。

要检查系统上的当前目标,请运行以下命令:

systemctl get-default

您可以通过在终端上运行以下命令从一个目标切换到另一个目标:

init runlevel-value

例如,init 3 将系统配置为非图形状态。

init 6 命令重新启动系统,init 0 命令关闭系统电源。当您想切换到这两个目标时,请务必调用 sudo 命令

一旦 systemd 加载所有守护进程并设置目标或运行级别值,引导过程就会结束。此时,系统会提示您输入用户名和密码,然后您就可以访问 Linux 系统。