Linux操作系统引导过程
引导过程总览
开机自检(BIOS)——MBR引导——GRUB菜单——加载内核(kernel)——init进程初始化
1.开机自检
服务器主机开机之后,将根据主板BIOS中的设置对CPU、内存、显卡、键盘等设备进行初步检测,检测成功后根据预设的启动顺序移交系统控制权,大多时候会移交本机硬盘;
2.MBR引导
当从本机硬盘中启动系统时,首先根据硬盘第一个扇区中MBR(主引导记录)的设置,将系统控制权传递给包含操作系统引导文件的分区;或者直接根据MBR记录中的引导信息调用启动菜单(如GRUB);
3.GRUB菜单
对于Linux操作系统来说,GRUB(统一启动加载器)是使用最为广泛的多系统引导器程序。系统控制权传递给GRUB后,将会显示启动菜单给用户选择,并根据所选项(或采用默认值)加载Linux内核文件,然后将系统控制权转交给内核。需要注意的是,Centos 7 采用的是GRUB2启动引导器。cd grub/cd…/cd grub2/ls
4.加载Linux内核
Linux内核是一个预先编译好的特殊二进制文件,介于各种硬件资源与系统程序之间,负责资源分配与调度。内核接过系统控制权以后,将会完全掌握整个Linux操作系统的运行过程。在Centos 系统中,默认的内核文件是“/boot/vmlinuz-3.10.0-514.el7.x86_64”。装驱动同时产生initramfs(虚拟文件系统)再挂载再读modules中的东西(lib/modules)。挂载到真正的根才算启动成功。
5.init进程初始化
为了进一步的系统引导过程,Linux内核首先将系统中的“/sbin/init”程序加载到内存中运行,init进程负责完成一系列的系统初始化过程,最后等待用户进行登录。
由systemd管理:1、sysint 对系统进行初始化
2、multi-user 命令行模式,把自启动服务开启
3、getty 为用户准备登录环境
4、graphcal 开启图形化界面
Systemd 单元类型
运行级别所对应的Systemd目标
init 0 关机
init 1大用户模式 相当于Windows安全模式
init 2没有网络,没有共享存储
init 3字符界面,多用户没有图形化界面
init 4未使用保留
init 5实现图形化界面操作
init 6重启
两种方式看运行级别
- 查看运行级别
runlevel命令(runlevel只能查看切换运行级别与当前运行级别
systemctl时能查看默认的运行级别)
systemctl工具 - 临时切换运行级别
init命令(init的命令参数是运行级别所对应的数字
systemctl的命令参数是具体的target)
systemctl工具 - 设置永久运行级别
设置配置文件
/etc/systedm/system;
/run/systemd/system;
/usr/lib/systemd/system
优点
- 并行处理所有服务,加速开机流程:
- 立即响应
- 服务依赖性的自我检查
- 功能分类
- 向下兼容init服务脚本
修复MBR扇区故障
- 故障原因
病毒、木马等造成的破坏
不正确的分区操作、磁盘读写误操作 - 故障现象
找不到引导程序,启动中断
无法加载操作系统,开机后黑屏 - 解决思路
应提前做好备份文件
以安装光盘引导进入急救模式
从备份文件中恢复
修复GRUB引导故障
- 故障原因
MBR中的GRUB引导程序遭到破坏
grub。conf文件丢失、引导配置有误 - 故障现象
系统引导停滞,显示“grub>”提示符 - 解决思路
尝试手动输入引导命令
进入急救模式,重新或者从备份中恢复grub。conf
向MBR扇区中重建grub程序
遗忘root用户密码
- 故障原因
遗忘root用户的密码 - 故障现象
无法进行需要root权限的管理操作
若没有其他可用账号,将无法登录系统 - 解决思路
进入急救模式,重设密码