Linux系统启动过程大致按照如下步骤进行(这是一个简述):
第一阶段:BIOS启动引导阶段;
1.在该过程中实现硬件的初始化以及查找启动介质;
2.从MBR中装载启动引导管理器(GRUB)并运行该启动引导管理
第二阶段:GRUB启动引导阶段;
1.装载stage1
2.装载stage1.5
3.装载stage2
4.读取/boot/grub.conf文件并显示启动菜单;
5.装载所选的kernel和initrd文件到内存中
第三阶段:内核阶段:
1.运行内核启动参数;
2.解压initrd文件并挂载initd文件系统,装载必须的驱动;
3.挂载根文件系统
第四阶段:Sys V init初始化阶段:
1.启动/sbin/init程序;
2.运行rc.sysinit脚本,设置系统环境,启动swap分区,检查和挂载文件系统;
3.读取/etc/inittab文件,运行在/et/rc.d/rc.d中定义的不同运行级别的服务 初始化脚本;
4.打开字符终端1-6号控制台/打开图形显示管理的7号控制台
同时在上述过程中各阶段所需要读取的文件和操作的对象:
BIOS启动引导阶段 GRUB启动引导阶段 内核阶段 /init/sysinit阶段
==================================================================================================
None /boot/grub/grub.conf /boot/vmlinuz- /etc/rc.d/rc.sysinit
/boot/grub/stage1_5 /boot/initrd- /etc/inittab
/boot/grub/stage2 /etc/rc.d/rc.d
/etc/rc.d/init.d/*
(下面是详细的过程)
第一阶段:
系统上电开机后,主板BIOS(Basic Input / Output System)运行POST(Power on self test)代码,检测系统外围关键设备(如:CPU、内存、显卡、I/O、键盘鼠标等)。硬件配置信息及一些用户配置参数存储在主板的CMOS( Complementary Metal Oxide Semiconductor)上(一般64字节),实际上就是主板上一块
可读写的RAM芯片,由主板上的电池供电,系统掉电后,信息不会丢失。
执行POST代码对系统外围关键设备检测通过后,系统启动自举程序, 根据我们在BIOS中设置的启动顺序搜索启动驱动器(比如的硬盘、光驱、网络服务器等)。选择合适的启动器,比如通常情况下的硬盘设备,BIOS会读取硬盘设备的