Linux启动过程详解:从BIOS到/sbin/init

需积分: 9 7 下载量 143 浏览量 更新于2024-08-25 收藏 235KB PPT 举报
本文将深入探讨Linux系统的启动过程,特别是关注/sbin/init程序的运行流程。在启动过程中,涉及的关键步骤包括BIOS引导、GRUB加载、内核启动、init进程的初始化以及用户登录等环节。 1. BIOS引导: - 加电自检(POST):系统上电后,BIOS会对硬件进行检测,确保所有部件正常工作。 - 设备枚举和初始化:BIOS识别并初始化连接的硬件设备。 - 寻找驱动器和启动扇区:BIOS读取硬盘的MBR(主引导记录),这是系统启动的关键。 - MBR加载:MBR包含446字节的stage1引导加载程序,负责加载stage2,或者如果支持文件系统,则加载stage1.5。 2. GRUB加载: - GRUB是一个多阶段引导加载程序,通常stage1安装在MBR中,加载并执行stage2。 - stage2显示引导菜单,允许用户选择要启动的操作系统或内核,并能提供一个简单的Shell环境来指定内核位置。 3. Linux内核引导: - _start():引导扇区的汇编代码首先执行,然后将自身移动到内存中的特定位置,并加载setup。 - setup():初始化硬件设备,如内存、磁盘等,并设置保护模式运行环境。 - startup_32():进入保护模式,解压缩bzImage内核到内存,并继续执行。 4. /sbin/init启动: - /etc/inittab:这是init的配置文件,定义了系统启动时的不同运行级别和服务。 - init进程:作为PID 1的进程,它是系统的第一个进程,负责启动系统服务、终端会话和初始化网络等。 - /etc/init.d/*:启动脚本,如/etc/init.d/boot和/etc/init.d/rc,这些脚本按特定顺序执行,启动系统服务。 5. 用户登录及后续流程: - agetty:在终端上创建登录提示,让用户输入用户名和密码。 - /bin/login:验证用户凭证,成功后启动用户的shell环境。 - shell:用户获得命令行界面,可以开始执行各种命令。 Linux启动过程是一个复杂的过程,涉及多个层次的引导加载程序、内核初始化以及用户空间服务的启动。理解这个过程有助于我们更好地管理和维护Linux系统,特别是在故障排除和性能优化时。