Linux操作系统引导过程
引导过程总览
开机自检(bios)→MBR引导→GRUB菜单→加载内核(kernel)→init进程初始化
- 开机自检(bios)
检测出第一个能够引导系统的设备,比如硬盘或者光驱
- MBR引导(主引导记录)
mbr处在第一个扇区,占512字节,446字节作为引导,64作为分区文件,2字节未使用,通过引导程序找到启动系统,首先根据硬盘第一个扇区中MBR (主引导记录)的设置,将系统控制权传递给包含操作系统引导文件的分区;或者直接根据MBR记录中的引导信息调用启动菜单(如GRUB) 。
总结:运行放在MBR扇区里的启动GRUB引导程序
3.GRUB菜单
对于Linux操作系统来说,GRUB (统一启动加载器)是使用最为广泛的多系统引导器程序。系统控制权传递给GRUB以后,将会显示启动菜单给用户选择,并根据所选项(或采用默认值)加载Linux内核文件,然后将系统控制权转交给内核。
CentOS 7采用的是GRUB2启动引导器。
总结:GRUB引导程序通过读取GRUB配置文件/boot/grub2/grub.cfg,来获取内核和镜像文件系统的设置和路径位置
4、加载Linux内核
Linux内核是一个预先编译好的特殊二进制文件,介于各种硬件资源与系统程序之间,负责资源分配与调度。内核接过系统控制权以后,将完全掌控整个Linux操作系统的运行过程。
CentOS 7系统中,默认的内核文件位于”/boot/vmlinuz-3.10.0-514.e17.x86_64″
总结:把内核和镜像文件系统加载到内存中
5、init进程初始化
为了完成进一步的系统引导过程,Linux内核首先将系统中的”/sbin/init”程序加载到内存中运行(运行中的程序称为进程),init进程负责完成整个系统的初始化,最后等待用户进行登录。
总结:加载硬件驱动程序,内核把init进程加载到内存中运行
init进程与Systemd
init进程
由Linux内核加载运行/sbin/init程序
init进程是系统中第一个进程,是所有进程的父进程
init进程的PID (进程标记)号永远为1
Systemd(守护进程集合)
Systemd是Linux操作系统的一种init软件
CentOS7中采用全新的Systemd启动方式,取代传统的SysVinit
CentOS7中运行的第一个init进程是/lib/systemd/systemd
传统SysVinit依赖于串行执行Shell脚本启动服务,导致效率低下,系统启动速度较慢
systemd能够将更多的服务进程并行启动,并且具有提供按需启动服务的能力,使得启动更少进程,从而提高系统启动速度。
它会按序同步多线程打开守护进程,加快系统启动
Systemd单元类型
运行级别所对应的Systemd目标
排除启动类故障
修复MBR扇区故障
故障原因
病毒、木马等造成的破坏
不正确的分区操作、磁盘读写误操作
故障现象
找不到引导程序,启动中断
无法加载操作系统,开机后黑屏
解决思路
应提前做好备份文件
以安装光盘引导进入急救模式
故障模拟
实验步骤
1.创建新硬盘,然后格式化,并挂载
2.备份MBR文件(存到其他硬盘)
3.模拟破坏MBR引导区
4.重启进入急救模式
4.1看到载入画面按一次ESC进入boot菜单
4.2选择3.CD-ROM Drive光盘驱动
5.进入系统急救
6.从备份文件中恢复MBR数据
7.恢复成功
另一种方法scp远程网络修复
注:只能在同一网段内使用此方法
1.用scp命令将已备份好的mbr文件传输到另一台同网段主机
2.同意传输
3.输入另一台主机的密码后,进行发送文件
另一台主机收到文件
4.模拟破坏mbr文件
5.进入急救模式
5.1进入boot菜单选择CD-ROM Drive
5.2选择急救模式
5.3选择跳转到Shell
5.4配置IP地址(本地IP需要手动设置),并测试连通性
5.5使用scp命令将文件考入本地
5.6 dd if命令替换mbr文件
5.7重启
6.成功启动
修复GRUB引导故障
故障原因
- MBR中的GRUB引导程序遭到破坏
- grub.conf文件丢失、引导配置有误
故障现象
- 系统引导停滞,显示‘grub>’提示符
解决思路
- 尝试手动输入引导命令
- 进入急救模式,重写或者从备份中恢复grub.conf
- 向MBR扇区中重建grub程序
故障模拟
进入急救模式,重建GRUB菜单配置文件
1.删除grub.cfg文件以模拟故障
2.急救模式下重建grub配置文件
3.重建成功,成功登录
遗忘root用户密码
故障原因
- 遗忘root用户密码
故障现象
- 无法进行需要root权限的管理操作
- 若没有其他账号可用,将无法登陆系统
解决思路
- 进入急救模式,重设密码
实例
进入急救模式更改密码,最后exit退出,reboot重启(此实验使用CentOS7)
注:CentOS6:esc进入boot菜单→按a进入命令框
进入直接输入空格+S后回车,输入passwd进行修改密码
总结
1.Systemd是一款基于init进程的优化集合守护进程,它会将主要进程优先运行,并多线程运行打开,加快系统启动;
2.恢复mbr可以使用本地硬盘数据还原,也可以远程网络数据传输(scp)还原;
3.如果开机显示,
error : unknow filesystem
grub rescue>
系统进不去,这表示你的grub2的配置文件坏了,需要修复grub2文件