服务器测评网
我们一直在努力

Linux启动时具体按什么顺序执行哪些脚本程序?

Linux 启动执行的核心流程

Linux 系统的启动执行是一个复杂而有序的过程,涉及硬件初始化、内核加载、服务启动等多个阶段,从按下电源键到用户登录,系统严格按照预设步骤逐步完成各项任务,确保最终提供一个稳定可用的操作环境,以下将详细解析这一过程的关键环节。

固件初始化与引导加载

系统启动的第一步由固件(BIOS 或 UEFI)负责,开机后,固件首先进行硬件自检(POST),检测 CPU、内存、硬盘等核心组件是否正常,随后,固件根据启动设备列表(如硬盘、U 盘)查找引导程序,在传统 BIOS 系统中,固件会读取硬盘主引导记录(MBR)中的引导代码;而在 UEFI 系统中,则直接读取 EFI 分区下的引导文件(如 grubx64.efi),引导程序的核心任务是加载操作系统内核,常见的引导加载程序有 GRUB 和 systemd-boot,GRUB 因其灵活性和功能丰富性成为大多数 Linux 发行版的首选。

内核加载与初始化

引导程序加载完成后,会将 Linux 内核(通常位于 /boot/vmlinuz)和初始内存盘(initrd,或 initramfs)解压到内存中,initrd 包含了驱动模块和必要的工具,用于挂载根文件系统(),尤其是当根文件系统位于 LVM、RAID 或特殊存储设备时,initrd 提供了必要的驱动支持。

内核启动后,会进行自身初始化,包括设置内存管理、加载设备驱动、识别硬件设备(如硬盘、网卡等),随后,内核启动第一个用户空间进程——init(现代系统中多为 systemdupstart),并将系统控制权交由该进程。

系统初始化与服务管理

init 进程作为系统启动的“总调度器”,负责启动和管理系统服务,以当前主流的 systemd 为例,其通过单元文件(Unit File)定义服务、挂载点、设备等对象的启动规则,启动过程大致分为以下阶段:

  • 基本系统挂载systemd 首先挂载 /proc/sys/dev 等虚拟文件系统,这些文件系统为内核与用户空间提供了交互接口,随后按需挂载 /etc/fstab 中定义的其他文件系统。
  • 切换运行级别systemd 通过目标(Target)替代传统的运行级别(如 Runlevel 3 为多用户模式,5 为图形界面模式)。multi-user.target 对应多用户文本模式,graphical.target 则启动图形界面服务。
  • 并行服务启动systemd 采用并行启动机制,根据依赖关系(通过 AfterRequires 等指令定义)同时启动多个服务,大幅缩短启动时间,网络服务(network.service)依赖于 sysinit.target,而 sshd.service 可在基本网络就绪后启动。

用户空间服务与登录环境

在核心服务启动后,systemd 会执行用户自定义的启动脚本(如 /etc/rc.local 或通过 systemctl 管理的服务),并启动图形登录管理器(如 gdmsddm),对于文本模式系统,则直接启动 getty 进程,提供终端登录界面。

用户输入用户名和密码后,登录程序(如 bashzsh)会加载用户配置文件(如 .bashrc.profile),设置环境变量,最终进入命令行或图形桌面环境,系统启动流程全部完成,用户可正常操作。

Linux 启动执行是一个从硬件到软件、从内核到用户空间的完整链条,通过固件引导、内核加载、systemd 初始化和服务管理,系统实现了高效、可靠的启动过程,理解这一流程不仅有助于排查启动故障(如无法挂载根文件系统、服务启动失败等),也为系统优化(如减少非必要服务、并行化启动)提供了理论依据,对于系统管理员和开发者而言,掌握启动机制是提升运维能力和开发效率的重要基础。

赞(0)
未经允许不得转载:好主机测评网 » Linux启动时具体按什么顺序执行哪些脚本程序?