Linux 运行级别和引导过程

Runlevels and the Boot Process in Linux
引言

Linux 是一款极其强大且多功能的操作系统,是无数应用的核心,从微小的嵌入式设备到大型服务器,都离不开它。对于任何用户,无论是经验丰富的系统管理员还是好奇的爱好者,理解其引导过程和运行级别都至关重要。本文旨在揭秘这些概念,阐明 Linux 从开机到完全运行状态的路径,并解释其运行级别系统的复杂性。

理解 Linux 引导过程

BIOS/UEFI 阶段

Linux 系统的旅程始于基本输入/输出系统 (BIOS) 或统一可扩展固件接口 (UEFI)。这些固件接口负责执行初始硬件检查和配置。虽然 BIOS 是许多旧系统中使用的传统固件,但 UEFI 是其现代替代品,提供增强的功能,例如安全启动和对更大硬盘的支持。

引导加载程序阶段

在初始硬件设置之后,控制权将传递给引导加载程序,该软件负责加载操作系统。GRUB(大统一引导加载程序)是一个常见的例子,以其管理多个操作系统的灵活性而闻名。此阶段包括选择要引导的内核以及指定任何必要的参数或选项。

内核初始化

选择后,内核(Linux 操作系统的核心)被加载到内存中。此阶段至关重要,因为内核会设置系统基本操作所需的所有必要驱动程序和子系统。在此阶段,可以使用初始 RAM 磁盘 (initrd 或 initramfs) 临时保存引导系统所需的驱动程序和模块。

系统初始化

在内核初始化之后,系统的主初始化过程开始。此阶段由 init 系统(如 SysVinit 或 systemd)管理,它启动必要的服务,挂载文件系统,并确保完全运行的系统所需的一切都已启动并运行。

Linux 运行级别

定义和目的

Linux 中的运行级别是系统可以处于的预定义状态,每个状态的特征在于一组特定的正在运行或已停止的服务和进程。理解运行级别对于管理 Linux 系统至关重要,尤其是在为不同场景自定义其行为时。

运行级别类型

Linux 通常有七个运行级别,编号从 0 到 6

  • 0:关机状态。
  • 1:单用户模式,主要用于管理任务。
  • 2 - 5:多用户模式,具有不同程度的网络和用户界面。
  • 6:重启状态。

管理运行级别

要管理运行级别,可以使用诸如 runlevel 之类的命令来检查当前状态,或使用 telinit 切换到不同的运行级别。这些命令对于系统维护和故障排除至关重要。

向 Systemd 和目标的过渡

Systemd 概述

Systemd 是一种现代 init 系统,已在许多 Linux 发行版中很大程度上取代了 SysVinit。它提供更快的启动时间,并依赖于称为“目标”的概念,这些目标类似于运行级别,但提供更多功能和灵活性。

Systemd 目标 vs. 运行级别

Systemd 目标与传统的运行级别对齐,为熟悉旧系统的用户提供了更平滑的过渡。例如,systemd 中的 multi-user.target 对应于 SysVinit 中的运行级别 3,而 graphical.target 类似于运行级别 5。

排除常见的启动问题

识别启动问题

识别引导过程失败的位置是进行故障排除的第一步。无论是引导加载程序阶段的故障还是初始化阶段中服务未启动,理解每个步骤都有助于隔离问题。

救援和恢复

Linux 提供了各种恢复方法,例如单用户模式或 systemd 中的紧急目标。这些模式允许用户以最少服务启动,从而更容易诊断和解决问题。

结论

理解 Linux 中的引导过程和运行级别不仅仅是学术性的;它是一项实用的技能,可以增强人们管理、排除故障和优化 Linux 系统的能力。这些知识揭开了底层原理的神秘面纱,为日常使用和复杂的系统管理任务奠定了坚实的基础。

George Whittaker 是 Linux Journal 的编辑,也是一位定期撰稿人。George 撰写技术文章已有二十年,并且是 Linux 用户超过 15 年。在业余时间,他喜欢编程、阅读和游戏。

加载 Disqus 评论