linux系统学习(启动过程整理)1

preview
需积分: 0 0 下载量 201 浏览量 更新于2022-08-08 收藏 18KB DOCX 举报
在Linux系统的学习中,了解其启动过程是非常关键的一部分。这一过程涉及到多个阶段,从BIOS的初始化到内核的加载,再到文件系统的挂载和初始化服务的启动。下面将详细解析这一系列步骤。 启动过程始于BIOS(基本输入输出系统),它是计算机硬件和操作系统之间的桥梁。BIOS的主要任务是检测硬件,如显卡、内存和磁盘,并提供设备信息给操作系统。此外,BIOS还负责寻找启动设备,通常用户可以在BIOS设置中选择优先启动的设备,如硬盘、光驱或网络设备。 当BIOS确定了启动设备后,会寻找该设备的主引导记录(MBR)。MBR位于硬盘的第一个扇区,如果MBR中没有找到操作系统信息,BIOS会搜索标记为BOOT的分区。MBR中包含了一个小型的引导加载器,即bootloader,例如GRUB(GRand Unified Bootloader)。 GRUB有三个主要阶段:STAGE1、STAGE1.5和STAGE2。STAGE1仅512字节,存于MBR中,负责加载STAGE2。STAGE2是GRUB的核心,实现大部分功能。STAGE1.5作为两者之间的过渡,帮助识别不同的文件系统类型,如ext和fat,以便加载位于特定文件系统中的STAGE2。 GRUB的配置文件是`grub.conf`,其中定义了启动操作系统的标题、根目录、内核文件和加载参数等。例如,`root (hd0,0)`表示从第一个硬盘的第一个分区加载,`kernel`指定内核文件名,`initrd`则加载额外的驱动程序。 内核加载后,它会查询BIOS获取硬件信息并接管设备管理。内核中包含了一些静态编译的驱动,但更多的驱动程序存在于文件系统中。这就需要挂载文件系统,Linux通过一组交互接口与数据交互,每种文件系统都有对应的交互程序。在启动过程中,内核会寻找并挂载关键目录,如`/etc`、`/bin`、`/sbin`、`/lib`和`/dev`。 快速启动的概念是指在内核启动时,通过设置`init=/bin/sh`,使系统跳过许多初始化工作,直接进入shell。这通常用于调试目的。 接下来,启动`init`服务,这是系统初始化的关键步骤。内核会尝试按照`/sbin/init`、`/etc/init`和`/bin/init`的顺序寻找`init`程序。`init`会读取`/etc/inittab`文件,执行初始化任务,包括运行一系列脚本,如`/etc/rc.d/rc.sysinit`、`/etc/rc.d/rc`和`/etc/rc.d/rc.local`。 `rc.sysinit`主要负责建立系统的基本环境,包括启动udev(设备管理)、selinux(安全增强)、加载核心参数、设定系统时间和挂载文件系统。`rc`脚本则根据指定的启动级别启动相应服务。整个启动过程完成后,Linux系统环境准备就绪,用户可以进行交互和操作。