Linux 初始化 init 系统
Linux 操作系统的启动流程:
-
BIOS(或UEFI)启动:当计算机加电时,BIOS(基本输入输出系统)或更现代的UEFI(统一可扩展固件接口)会执行一系列的自检(POST,Power-On Self Test),以确保硬件正常工作。随后,BIOS/UEFI会根据用户设置的启动顺序来定位并加载引导设备(如硬盘、USB驱动器或网络)上的主引导记录(MBR)或UEFI系统分区中的引导加载程序。
-
Boot Loader加载:最常用的Boot Loader是GRUB(Grand Unified Bootloader),它负责加载内核映像和初始化RAM磁盘(initramfs)到内存中。这一阶段可能还包括用户选择操作系统内核版本或恢复模式等选项。
-
内核初始化:内核一旦被加载并控制权交接之后,会进行一系列的初始化操作,包括设置内存管理、初始化硬件设备、加载驱动模块、挂载根文件系统等。此阶段还会运行内核初始化脚本(如
/sbin/init
在较旧系统或systemd
在现代系统中)。 -
Init进程启动:内核初始化的最后阶段是启动PID为1的init进程。在传统的System V风格的init系统中,这通常是
/sbin/init
程序;而在使用systemd的系统中,则是systemd
。这个进程是所有其他用户空间进程的父进程,它根据配置启动系统服务,建立运行级别或目标状态,并管理后续的系统和服务初始化。Init进程读取如/etc/inittab
(传统系统)或/etc/systemd/system/default.target
(systemd系统)等配置文件,来确定系统启动后应进入哪种运行模式或目标单元。 -
现在大多数Linux版本都使用systemd,而旧版本则使用SysV-init。
要检查平台使用的init系统,请运行以下命令:ps --no-headers -o comm 1
这将显示作为init进程运行的进程的名称,该名称可用于确定正在使用的init系统。
总的来说,init进程作为系统启动过程的指挥中心,对整个系统的运行起着至关重要的作用。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)