Linux启动流程详解:从BIOS到BootLoader

需积分: 16 0 下载量 3 浏览量 更新于2024-09-10 收藏 81KB DOC 举报
"本文档详细阐述了Linux系统从启动到完全准备就绪的步骤,涵盖了BIOS硬件检测、MBR加载、BootLoader、Kernel启动、硬件驱动、init进程、run-level服务、rc.local文件以及login进程等关键环节。文档内容整合自网络资料和个人理解,旨在帮助读者深入理解Linux系统的底层运作机制。" Linux系统的启动过程是一个复杂而有序的序列,它涉及到多个层次的硬件初始化和软件加载。以下是对这一过程的详细解析: 1. **BIOS与硬件自检**:系统启动时,首先运行的是BIOS(基本输入输出系统),它负责读取CMOS(互补金属氧化物半导体)中的配置信息,包括硬件配置、启动顺序等。接着,BIOS进行POST(Power-On Self Test,开机自检),检查硬件设备是否正常,并配置PnP(即插即用)设备。通过POST后,BIOS根据设定的启动顺序选择启动设备。 2. **MBR与BootLoader**:BIOS读取选定启动设备的第一个扇区,即MBR(主引导记录)。MBR包含了一个小小的程序,即BootLoader,如GRUB或LILO,它的作用是加载合适的操作系统内核。BootLoader允许用户选择要启动的操作系统版本,或者提供故障恢复选项。 3. **Kernel加载与硬件驱动**:BootLoader找到内核文件后,将其加载到内存中并执行。内核开始初始化,检测和加载必要的硬件驱动程序,以便与硬件设备进行通信。 4. **Init进程与run-level**:Kernel加载完成后,启动第一个进程`init`。`init`是系统中的PID 1,它根据预设的run-level(运行级别)信息执行相应的系统初始化任务。Run-level定义了系统运行时的服务和程序状态,如单用户模式(run-level 1)或多用户网络服务模式(run-level 3或5)。 5. **系统初始化脚本**:`init`会执行`/etc/rc.d/rc.sysinit`文件,这是系统启动时进行环境设置的关键脚本,涉及网络配置、时区设置等。随后,`init`根据当前run-level启动对应的系统服务,这些服务通常是以脚本形式存在于`/etc/rc.d/rc.runlevel`目录下。 6. **rc.local的执行**:在所有run-level服务启动完毕后,`init`会执行`/etc/rc.d/rc.local`文件,这个文件用于执行用户自定义的启动脚本,可以添加额外的系统初始化任务。 7. **终端与login进程**:最后,`init`启动终端模拟器`mingetty`,并启动login进程,等待用户输入用户名和密码进行登录。至此,Linux系统启动完成,用户可以开始使用。 理解这些启动步骤对于系统管理员来说至关重要,因为这有助于诊断和解决启动问题,以及优化系统的启动性能。同时,对于系统定制和自动化部署也有着深远的影响。