linux启动流程
2020-12-16 00:55:01 26 举报
AI智能生成
centos6启动流程
作者其他创作
大纲/内容
centos6启动流程
硬件启动阶段
Power on打开电源
BIOS
POST: power on self test开机自检
确定启动设备
启动设备:硬盘、网络、U盘、光盘
控制权交给bootloader
MBR
MBR512字节
1.446字节bootloader
启动加载器bootloader
windows: ntloader仅仅启动os
2.64字节分区信息
16字节x4 partitions
3.55aa标志位表示分区是否有效
grub启动阶段
stage1
这是二进制的0101,写在MBR分区的前446字节。
单纯为了找到1.5阶段生成的bootloader上
stage1.5
第一阶段446字节的bootloader无法存放内核位置,/boot/grub/grub.config里面有内核位置,但是/boot的文件系统需要加载,即想办法识别/boot的文件系统 来读取config文件加载内核。MBRbootloader太小无法容下文件系统的驱动代码,而且文件系统的类型有很多种,比如ext2 xfs ext4 fat32等,MBRbootloader无法容下这么多种文件系统的驱动,所以,只能提供一个中间的过度bootloader即stage1_5 bootloader
1.5阶段是MBR后面的分区,grub-install 时候,会将/boot/grub所在文件系统类型对应的stage1_5硬编码到MBR扇区后第一个分区前15个扇区中,因此这段空间位于MBR分区后,第一个分区之前。
能够识别启动分区文件系统
grub访问/boot下的stage2的文件,将stage2载入内存并执行
stage2
分区文件/boot/grub/
解析/boot/grub/grub.conf
a内核参数
e编辑模式用于编辑菜单
c命令模式,交互式接口
设置等待秒数
加载内核镜像到内存
为菜单提供了保护机制,为编辑启动菜单进行认证为启用内核或操作系统进行认证
通过/boot/initrd开头文件建立虚拟文件系统
转交控制权给内核
内核引导阶段
调用虚拟根文件系统initramfs中的init
加载驱动模块,初始化系统中各设备并做相关配置,包括cpu io 存储设备
加载并切换真正的根文件系统(grub.conf中root=指定)
协助内核呼叫/sbin/init程序 这个也可以在grub.conf中指定
系统初始化阶段
/etc/inittab
runlevel查看获取用户运行级别
0关机
2多用户模式,启动网络功能,但不会启动NFS;维护模式
3多用户模式,正常模式;文本界面
4预留级别;可同3级别
5多用户模式,正常模式;图形界面
6重启
系统初始化脚本功能/etc/rc.d/rc.sysinit
(1) 设置主机名(2) 设置欢迎信息(3) 激活udev和selinux (4) 挂载/etc/fstab文件中定义的文件系统(5) 检测根文件系统,并以读写方式重新挂载根文件系统(6) 设置系统时钟(7) 激活swap设备(8) 根据/etc/sysctl.conf文件设置内核参数(9) 激活lvm及software raid设备(10)加载额外设备的驱动程序(11)清理操作
加载系统服务
/etc/rc.d/rc
for srv in /etc/rc.d/rcN.d/K*; do$srv stopdonefor srv in /etc/rc.d/rcN.d/S*; do$srv startdone
加载系统服务:定义/etc/rcN.d/下所有文件 其实是/etc/init.d/下脚本文件的软链接
S开头文件:要启动的服务(脚本),从01开始启动,数字越小越优先启动
K开头的文件:要停止的服务(脚本),从01开始关闭,数字越小越优先关闭
用户自定义服务:/etc/rcN.d/下rc.local文件
centos6有执行权限 用户自定义服务可以写在里面 而不用写# chkconfig: 345 9 1 这样的备注
centos7 8没有执行权限 用户自定义服务可以写在里面 而不用写# chkconfig: 345 9 1 这样的备注
启动终端
/sbin/mingetty打开六个纯文本终端
验证登陆
/etc/nologin
在此文件中用户不允许登陆
/etc/passwd /etc/shadow 验证密码和shell和家目录
登陆成功
加载环境变量
屏幕输出
/var/spool/mail 查新邮件
/var/log/lastlog输出最后一次登陆信息
0 条评论
回复 删除
下一页