简单的说,系统的启动过程如下:
1.开机自检:
按下电源按键后,计算机硬件会主动读取BIOS加载硬件信息并进行硬件的自我测试,然后系统会根据BIOS里的启动顺序读取第一个可启动的设备,从而移交系统控制权,大多数时候移交给本机硬盘。
2.MBR引导
当从本机硬盘中启动系统时,首先根据硬盘第一个扇区中MBR(Master Boot Record,主引导记录)的设置,将系统的控制权传递给包含操作系统引导文件的分区,或者直接根据
MBR记录中的引导信息调用启动菜单(如GRUB)。
3.GRUB菜单
启动过程中,每个引导装载程序使用的软件可能都不一样。目前各大linux distributions的主流为grub,但是早期默认使用LILO,包括现在有很多朋友喜欢使用spfdisk。当系统
控制权交给grub后,显示启动菜单供用户选择,并根据所选项(或者默认值)加载Linux内核文件,然后将系统控制权转交给内核。
4.加载Linux内核
linux内核是一个预先编译好的特殊二进制文件,介于各种硬件资源和系统程序之间,负责资源分配和调度。当加载内核到内存中,内核会检测所有硬件信息和加载适当的驱动
程序来使这部主机可以开始运行.。
5.init进程初始化
当内核检测和加载驱动成功后,将主动调用‘/sbin/int‘程序到内存中运行,(运行中的程序叫进程)init进程则负责完成一系列的系统初始化过程,最后等待用户登录。
(1)init会取得run-level信息;
(2)init执行/etc/rc.d/rc.sysinit文件来准备软件执行的操作环境(如网络、时区等);
(3)init执行run-level的各个服务的启动(script方式);
(4)init执行/etc/rc.d/rc.local文件;
(5)init执行终端机模拟程序mingetty来启动login进程,最后等待用户登录。