***了解Linux开机启动顺序之前先了解一下Linux运行级别,通过inittab配置文件查看运行级别的定义:
[root@oldboy ~]# cat /etc/inittab
# Default runlevel. The runlevels used are:
0表示系统关机
# 0 - halt (Do NOT set initdefault to this)
1表示单用户模式,一般用于修改root密码或系统救援
# 1 - Single user mode
2表示多用户模式,但没有NFS网络文件系统功能
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
3表示多用户模式,一般生产系统就用此级别
# 3 - Full multiuser mode
4表示未使用
# 4 – unused
5表示以图形介面登录
# 5 - X11
6表示重启系统
# 6 - reboot (Do NOT set initdefault to this)
id:3:initdefault: ##系统修改运行级加就在此修改即可
[root@oldboy ~]# runlevel ##查看当前系统运行级别
N 3
[root@oldboy ~]# init 5 ##切换运行级别
Linux 开机启动顺序流程图:
一、开机加载BIOS自检设备启动顺序信息、硬盘信息、内存信息等
标注:以VMware WorkStation虚拟机截图
二、MBR引导
标注:还有另外一种开机加载方式GPT(UEFI+GPT)引导,GUID Partition Table全局唯一标识分区表
MBR(Legacy+MBR)引导,Master Boot Record即硬盘主引导记录分区 (硬盘0柱面、0磁头、1扇区,大小为512字节)
(1)、主引导扇区MBR 占446个字节
(2)、分区表DPT 占64个字节(一个硬盘只能分四个主分区,一个分区占用16个字节)
(3)、分区表有效性标记 占用2个字节
三、Boot Loader引导加载(以GRUB引导菜单为例),系统读取内存中的grub配置信息,
并依照此配置信息来启动不同的操作系统,可以通过/boot/grub/grub.conf进行配置
四、加载内核Kernel
五、启动第一个进程init
六、执行/etc/rc.d/rc.sysinit脚本文件初始化设置
七、读取inittab配置文件设定运行等级,执行/etc/rc.d/rc3.d目录相应的脚本程序
标注:kdump 是一个系统意外崩溃时收集错误信息的工具,可以关闭,不影响系统启动
八、启动mingetty进程,进入登录状态
标注:在启动mingetty进程时,系统会先执行/etc/rc/rc.local开机自动启用户自定义的动程序命令的文件
感谢老男孩博客提供参考 https://blog.51cto.com/oldboy