Linux系统的启动过程是一个复杂且有序的流程,涉及多个阶段和组件。以下是对Linux启动顺序的详细解析:
1. 加电自检(POST)
当计算机电源被打开时,首先进行硬件自检,检测并初始化硬件设备,如CPU、内存、硬盘、显卡等。
2. 加载BIOS
BIOS(基本输入输出系统)被激活,它负责硬件的初始化和自检,并提供一组基本的输入输出服务,如键盘输入、屏幕输出等。
3. 读取MBR(主引导记录)
BIOS根据启动顺序设置,从硬盘的第一个扇区读取MBR,MBR包含了预启动信息、分区表信息和引导加载程序(如GRUB或LILO)。
4. 引导加载程序(Boot Loader)
Boot Loader是在操作系统内核运行之前运行的一段小程序,常见的有GRUB、LILO等。它的主要任务是初始化硬件设备、建立内存空间的映射图,并加载内核映像到内存中。
5. 加载内核
根据GRUB设定的内核映像所在路径,系统读取内存映像,并进行解压缩操作。内核被放置在内存中,并调用start_kernel函数进行一系列的初始化,包括硬件检测、驱动程序加载、内存管理初始化等。
6. 初始化系统

内核初始化完成后,第一个运行的程序是/sbin/init,它读取/etc/inittab文件,设定系统的运行等级(如单用户模式、多用户模式等),并执行相应的初始化脚本,如/etc/rc.d/rc.sysinit,进行系统环境的设置。
7. 启动服务
根据运行等级的不同,系统会运行rc0.d到rc6.d中的相应脚本程序,启动或停止相应的服务,如网络服务、打印服务等。
8. 登录系统
执行/bin/login程序,进入登录状态,等待用户输入用户名和密码。用户登录后,系统会执行/etc/profile和用户目录下的.bash_profile、.bash_login或.profile文件,设置用户环境变量。
9. 启动完成
系统启动完成,用户可以开始使用Linux系统。
在整个启动过程中,涉及到的关键组件和文件包括:
BIOS:基本输入输出系统,负责硬件初始化和自检。
MBR:主引导记录,包含引导加载程序和分区表。
GRUB:引导加载程序,负责加载内核和初始化文件系统。
/etc/inittab:设定系统运行等级的配置文件。
/etc/rc.d/rc.sysinit:系统初始化脚本。
/etc/rc.d/rc.local:用户自定义启动脚本。
/bin/login:登录程序。
/etc/profile:系统环境变量设置文件。
~/.bash_profile、~/.bash_login、~/.profile:用户环境变量设置文件。
通过对Linux启动顺序的深入理解,可以更好地进行系统维护和故障排查。这也是深入了解Linux核心工作原理的一个很好的途径。