启动过程图
1、BIOS
A.post加电自检,检测电脑硬件
B.初始化,分配中断号;外部设备初始化和检测
C.读取CMOS信息,根据启动顺序加载引导驱动器的bootloader程序。交接工作给bootloader
2、MBR
解释:狭义理解为引导程序;广义理解为引导驱动器的第一扇区
第一扇区结构:
446 | 64 | 2 |
代码区(存储引导程序) | 硬盘分区表DPT | 标志位 |
3、Bootloader(grub)
从预先编排好的清单中选择一个内核,用系统管理员指定好的参数来加载这个内核。系统启动交给kernel控制,grub可以引导有两(多)个内核的系统。
4、Kernel/initrd.img
a.系统初始化,加载各种模块
b.Initrd.img是一个虚拟文件系统(由内存虚拟而成的硬盘映像文件),目的是让内核在虚拟文件系统中执行某些文件,用来加载各种模块。同时,识别加载真实的硬盘文件系统。
c.在真正的文件系统上执行启动init进程
5、Init
a.运行 rc.sysinit 以便执行一些重要的系统初始化任务。在 RedHat 公司的 RHEL5 中(RHEL6 已经使用 upstart 了),rc.sysinit 主要完成以下这些工作。
l 激活 udev 和 selinux
l 设置定义在/etc/sysctl.conf 中的内核参数
l 设置系统时钟
l 加载 keymaps
l 使能交换分区
l 设置主机名(hostname)
l 根分区检查和 remount
l 激活 RAID 和 LVM 设备
l 开启磁盘配额
l 检查并挂载所有文件系统
l 清除过期的 locks 和 PID 文件
b.运行/etc/rc.d/rc 脚本。根据不同的 runlevel,rc 脚本将打开对应该 runlevel 的 rcX.d 目录(X 就是 runlevel),找到并运行存放在该目录下的所有启动脚本。每个 runlevel X 都有一个这样的目录,目录名为/etc/rc.d/rcX.d。
c.运行/etc/rc.d/rc.local 脚本。
原文地址:http://4708705.blog.51cto.com/4698705/1629221