揭秘Linux启动层:系统启动全过程解析
linux 启动层

首页 2024-12-22 18:50:47



Linux启动层深度解析 Linux系统的启动过程是一个复杂而精细的系统操作,涉及多个层次的协作与配合

    从硬件自检到操作系统内核的加载,再到用户登录,每个阶段都扮演着不可或缺的角色

    本文将对Linux启动的各个层次进行详细解析,帮助读者深入理解Linux系统的启动机制

     一、硬件自检与BIOS/UEFI 当按下计算机的电源按钮时,整个系统开始运作

    首先,计算机会进行硬件自检(Power-On Self-Test,POST)

    这一过程由主板上的BIOS(Basic Input/Output System,基本输入输出系统)或UEFI(Unified Extensible Firmware Interface,统一可扩展固件接口)完成

    BIOS和UEFI都是固化在计算机主板上的ROM芯片中的程序,负责在计算机启动时进行硬件检测和初始化

     在POST过程中,BIOS/UEFI会逐一检查系统中的硬件设备,包括CPU、内存、硬盘等,以确保这些设备能够正常工作

    如果硬件检测失败,BIOS/UEFI会发出警报或显示错误信息;如果硬件检测成功,BIOS/UEFI会继续执行启动过程

     BIOS/UEFI的另一个重要功能是存储磁盘的启动顺序,并按照启动顺序查找第一个磁盘头的MBR(Master Boot Record,主引导记录)信息,然后加载和执行MBR中的Bootloader程序

    若第一个磁盘不存在MBR,则会继续查找第二个磁盘

     二、MBR与GRUB引导加载程序 MBR是硬盘的第一个扇区,里面存储着少量启动代码和分区表信息

    每个可启动的操作系统都需要在MBR或分区表中留有相应的引导代码

    对于Linux系统,MBR中的代码会加载并运行GRUB(GRand Unified Bootloader)引导加载程序

     GRUB是一个通用的引导加载程序,支持多种操作系统,如Linux、Windows、FreeBSD等

    GRUB提供了一个菜单,用户可以选择要启动的操作系统或内核版本

    选择后,GRUB会加载指定的内核映像到内存中

     GRUB的配置文件通常位于/boot/grub/grub.cfg文件中,该文件包含了GRUB的启动选项和参数

    通过编辑GRUB配置文件,用户可以自定义启动菜单的显示、内核的加载参数等

     三、内核加载与init进程 GRUB加载内核映像到内存后,内核开始执行

    内核是操作系统的核心部分,负责管理系统资源、处理硬件请求、提供进程调度等功能

    内核加载的第一个程序是/sbin/init,它是系统启动和服务的总调度

     init进程启动后,会负责系统资源的分配和初始化,为后续的应用程序提供稳定的环境

    init进程会根据/etc/inittab文件或systemd服务管理器来确定系统的运行级别(Runlevel)

    运行级别决定了系统启动后运行哪些服务和进程

     在Linux系统中,运行级别通常分为以下几种: - 0:关机 - 1:单用户模式 - 2:多用户模式,没有网络服务 - 3:完全多用户模式,有网络服务 - 4:用户自定义的运行级别 - 5:图形界面模式 - 6:重启 根据设定的运行级别,init进程会启动相应的服务和进程

    例如,在运行级别3下,init进程会启动网络服务、系统日志服务等

     四、系统初始化与终端建立 init进程启动后,系统会进入初始化阶段

    在这个阶段,系统会执行一系列初始化脚本和程序,以设置系统变量、网络配置、启动swap分区、加载用户自