Linux启动过程大致分为五个阶段:
1.BIOS加电自检
2.加载主引导加载程序(MBR)
3.加载次引导加载程序(GRUB)
4.Linux内核映像
5.init进程
BIOS加电自检初始化: 检查外围设备 检查启动设备(硬盘/光盘/网络)
如果是硬盘启动则读取与执行启动设备的第一个扇区
主引导加载程序MBR: Maser Boot Record 主引导记录
硬盘的0柱面,0磁头,1扇区称为主引导扇区(主引导记录MBR) 占512字节
它由四部分组成:
主引导程序 boot loader 0000H -- 0088H 负责从活动分区中装载 运行系统引导程序
出错信息数据区 0089H -- 00E1H 为出错信息 00E2H -- 01BDH 全为0字节
硬盘分区表 占64字节 包含4个分区项每个分区16个字节 记录硬 盘中的分区信息
分区有效标志 01FE -- 01FF为结束标志"魔数"0xAA55或0x55AA, 如果该标志错误系统就不能启动
主引导程序的主要任务是查找并加载保存在硬盘分区上的次引导加载程序!通过分区表查找活动分区然后将活动分区的次引导加载程序从设备读入内存中并运行
次引导加载程序GRUB: 也被称为内核加载程序(主要任务是加载内核)
一旦次引导加载程序被加载到内存中,便会显示GRUB的图形界面(选择系统)
GRUB的配置文件为: /boot/grub/grub.conf 编辑此文件时会有一些选项
1.default选项: 定义缺省启动系统
2.timeout选项: 定义缺省等待时间
3.splashimage选项: 定义GRUB的图片
4.hiddenmenu选项: 隐藏菜单
5.title选项: 定义菜单名称
6. root (hdx,y) :设置grub所在的分区
7. kernel选项: 定义内核文件所在位置
8. initrd选项: 定义文件加载镜像文件
启动windows : title windows
rootnoverify (hdx,y) #操作系统存放在hdx,y上,不要在grub里mount
chainloader +1 # 从hdx,y上的第一个扇面启动
Linux内核映像: Linux内核获得控制权后,将会按以下步骤继续引导系统
(1) 内核映像首先会检测系统中的硬件设备, 包括内存,CPU,硬盘等,对这些设备进行初始化并配置
(2) 内核映像是经过压缩的, 它要对自身进行解压,同时加载必要的设备驱动
(3) 初始化与文件系统相关的虚拟设备, 如LVM等
(4) 装载根文件系统(/), 把根文件系统挂在到根目录下
(5) 完后引导后, Linux内核会在其进程空间加载init程序, 并把控制器交给init进程,由init进程继续完成接下来的系统引导工作
init进程:进程号恒为0
当init进程获得控制权后,它首先会执行/etc/rc.d/rc.sysinit脚本, 根据脚本中的代码配置环境变量,配置网络,启动swap,检查并挂载文件系统,执行其他系统初始化所必须的步骤
/etc/rc.d/rc.local文件时在系统启动最后一个被读取的用户自定义启动脚本文件
一般系统用户将针对此台计算机的开机定制设置写入其中,而非/etc/rc.d/rc.sysinit