图解Linux 启动过程的6 个步骤

图解Linux 启动过程的6 个步骤

操作系统 (OS) 是管理资源、控制外围设备并为其他软件提供基本服务的低级软件。在 Linux 中,典型的启动过程有 6 个不同的阶段。

1.BIOS

BIOS 代表基本输入/输出系统。简单来说,BIOS 加载并执行主引导记录 (MBR) 引导加载程序。

当您第一次打开计算机时,BIOS 首先对 HDD 或 SSD 执行一些完整性检查。

然后,BIOS 搜索、加载并执行引导加载程序,该程序可以在主引导记录(MBR)中找到。MBR 有时位于 USB 记忆棒或 CD-ROM 上,例如实时安装的 Linux。

一旦检测到引导加载程序,它就会被加载到内存中,BIOS 会将系统的控制权交给它。

2、主引导记录器

MBR 代表主引导记录,负责加载和执行 GRUB 引导加载程序。

MBR 位于可启动磁盘的第一个扇区,通常为/dev/hda、 或/dev/sda,具体取决于您的硬件。MBR 还包含有关 GRUB 或非常旧的系统中的 LILO 的信息。

3. GRUB

有时称为 GNU GRUB,它是 GNU GRand Unified Bootloader 的缩写,是大多数现代 Linux 系统的典型引导加载程序。

GRUB 初始屏幕通常是您启动计算机时看到的第一个画面。它有一个简单的菜单,您可以在其中选择一些选项。如果您安装了多个内核映像,您可以使用键盘选择您希望系统启动时使用的内核映像。默认情况下,选择最新的内核映像。

启动屏幕将等待几秒钟供您选择。如果不这样做,它将加载默认的内核映像。

/boot/grub/grub.conf在许多系统中,您可以在或 处找到 GRUB 配置文件/etc/grub.conf。这是一个简单文件的示例grub.conf

ini 复制代码
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-194.el5PAE)
      root (hd0,0)
      kernel /boot/vmlinuz-2.6.18-194.el5PAE ro root=LABEL=/
      initrd /boot/initrd-2.6.18-194.el5PAE.img

4. 内核

内核通常被称为任何操作系统(包括 Linux)的核心。它可以完全控制系统中的一切。

在引导过程的这个阶段,GRUB 选择的内核首先挂载文件中指定的根文件系统grub.conf。然后它执行该/sbin/init程序,该程序始终是第一个被执行的程序。您可以通过其进程 ID (PID) 来确认这一点,该 ID 应始终为 1。

然后内核使用初始 RAM 磁盘 (initrd) 建立临时根文件系统,直到挂载真正的文件系统。

5. 初始化

此时,您的系统执行运行级别程序。在某一时刻,它会查找一个 init 文件,通常可以在 处找到/etc/inittab该文件来决定 Linux 运行级别。

现代 Linux 系统使用 systemd 来选择运行级别。根据TecMint 的说法,这些是可用的运行级别:

运行级别 0由****poweroff.target 匹配(并且runlevel0.target是****poweroff.target的符号链接)。

运行级别 1与

rescue.target 匹配(并且runlevel1.target是****rescue.target的符号链接)。

运行级别3 由

multi-user.target 模拟(并且runlevel3.target是****multi-user.target的符号链接)。

运行级别5由

graphical.target 模拟(runlevel5.target是****graphical.target的符号链接)。

运行级别 6

由reboot.target 模拟(runlevel6.target是****reboot.target的符号链接)。

Emergency与

Emergency.target匹配。

然后 systemd 将开始执行运行级别程序。

6. 运行级别程序

根据您安装的 Linux 发行版,您可能会看到不同的服务正在启动。例如,您可能会发现starting sendmail .... OK.

这些被称为运行级别程序,并且根据您的运行级别从不同的目录执行。上述 6 个运行级别中的每一个都有其自己的目录:

  • 运行级别 0 --/etc/rc0.d/
  • 运行级别 1 --/etc/rc1.d/
  • 运行级别 2 --/etc/rc2.d/
  • 运行级别 3 --/etc/rc3.d/
  • 运行级别 4 --/etc/rc4.d/
  • 运行级别 5 --/etc/rc5.d/
  • 运行级别 6 --/etc/rc6.d/

请注意,这些目录的确切位置因发行版而异。

如果您查看不同的运行级别目录,您会发现分别以"S"或"K"开头的程序用于启动和终止。启动程序在系统启动时执行,在系统关闭时杀死程序。

相关推荐
追逐时光者1 天前
推荐 12 款开源美观、简单易用的 WPF UI 控件库,让 WPF 应用界面焕然一新!
后端·.net
Jagger_1 天前
敏捷开发流程-精简版
前端·后端
苏打水com1 天前
数据库进阶实战:从性能优化到分布式架构的核心突破
数据库·后端
间彧1 天前
Spring Cloud Gateway与Kong或Nginx等API网关相比有哪些优劣势?
后端
间彧1 天前
如何基于Spring Cloud Gateway实现灰度发布的具体配置示例?
后端
间彧1 天前
在实际项目中如何设计一个高可用的Spring Cloud Gateway集群?
后端
间彧1 天前
如何为Spring Cloud Gateway配置具体的负载均衡策略?
后端
间彧1 天前
Spring Cloud Gateway详解与应用实战
后端
EnCi Zheng1 天前
SpringBoot 配置文件完全指南-从入门到精通
java·spring boot·后端
烙印6011 天前
Spring容器的心脏:深度解析refresh()方法(上)
java·后端·spring