POST-->BIOS(Boot Sequence)-->MBR(bootloader)-->Kernel(initrd)-->/sbin/init(/etc/inittab)
当我们按下开机按钮时,会发生这些事:
1.自检:依赖于CPU,ROM中的程序
2.加载BIOS,Boot Sequence确定启动顺序
3.MBR:
硬盘0磁道0扇区的MBR文件,共512字节
446:BootLoader
64:分区表,每16字节一个分区
2:5A(一个特殊标记)
4.kernel文件vmlinuz+initrd:只能放在基本磁盘分区,BootLoader会把vmlinuz当做根来使用,即/vmlinuz
将vmlinuz加载到内存中使用。vmlinuz分为两段,前半部分未压缩段,是为了解压第二段。
至此BootLoader任务完成,退场。
操作系统安装时会执行一个命令,安装程序完成后自动运行脚本,收集操作系统运行需要的脚本,将所需要的模块打包成initrd,帮助内核完成初始化
initrd: ram disk,内核将之作为根来使用,将硬盘模拟成磁盘
5.initrd将所需文件复制到/下,内核完成初始化后进行根切换
6.启动/sbin/init,由内核空间进入用户空间
/lib/modules
/sbin/init:
/etc/inittab
id:3:initdefault:
/etc/rc.d/rc.sysinit脚本
运行级别:
0:关闭所有服务,切断电源。效果等同于关机
1:单用户模式:直接以root身份登录。破解管理员密码?
2:多用户模式:不支持NFS
3:多用户模式:文本模式,不启动图形界面
4:预留级别
5:多用户模式:图形模式
6:重启
/sbin/init的配置文件
每行定义一种模式:
id:操作的ID
runlevels:在哪些级别下操作此操作
action:
initdefault:设置运行级别,无需定义操作
sysinit:指定系统初始化运行脚本
si::sysinit:/etc/rc.d/rc.sysinit
wait:等待系统切换至此级别时运行一次
ctrlaltdel:定义组合键被按下时运行的命令
respawn:当操作系统进程被关闭时立即再启动一次
process:
/etc/inittab中定义的操作:
设定默认运行级别
指定系统运行的初始脚本
启动指定级别下要启动的服务,并关闭需要停止的服务
定义CtrlAltDel组合键的动作
启动图形终端
init要完成的任务:
设定默认运行级别
指定系统运行的初始脚本
启动指定级别下要启动的服务,并关闭需要停止的服务
/etc/init.d
/etc/rc.d/rcN.d (0-6)
S##
K##
定义CtrlAltDel组合键的动作
初始化字符终端
终端:对应的设备
/dev/tty#,/dev/ttyS#,/dev/console,/dev/pts#
login-->/etc/issue
启动图形终端
X-Window,桌面管理器
系统初始化脚本/etc/rc.d/rc.sysinit
设置主机名
激活SFELinux和Udev
激活swap
挂载/ etc/fstab定义的本地系统
检测根文件系统并对其以读写方式重新挂载
设置系统时钟
根据/etc/sysctl.conf设置内核参数
激活RAID和LVM设备
清理操作