目录
前言
在系统加载过程中往往会因为缺少一些系统文件而无法正常重启,这里为大家讲述了一些常见的开机故障问题
一、Linux操作系统引导过程
1.1、引导过程总览
开机自检:就是检测第一个能够引导系统的设备比如硬盘或光驱、U盘
MBR引导:记录中的引导信息调用启动菜单
GRUB菜单:GRUP引导程序通过读取GRUP配置文件/boot/grup2/grup.cfg,来获取内核和镜像文件系统的设置和路径位置
加载Linux内核:把内核镜像文件系统加载到内存中
init进程初始化:加载硬件驱动程序,内核把init进程加载到内存中运行
1.2、系统初始化进程
init进程
由Linux内核加载运行/sbin/init程序
init进程是系统中第一个进程
init程序的PID(进程标记)号永远为1
init 0 ##关机
init 6 ##重启
Systemd
Systemd是Linux操作系统的一种init软件
CentOS7中采用权限的Systemd启动方式,取代传统的SysVinit
CentOS7中运行的第一个init进程是/lib/systemd/system
二、MBR、GRUB菜单、忘记密码故障修复
2.1、MBR的故障修复
准备备份盘
首先准备一块备用盘,备份sda中MBR的数据
mkdir /mnt/sdd ##创建一个挂载目录
mount /dev/sdd1 /mnt/sdd ##挂载
dd if=/dev/sda of=/mnt/sdd/sda.bak bs=512 count=1
##将sda中的文件备份到sdd下的sda.bak
模拟故障
dd if=/dev/zero of=/dev/sda bs=512 count=1
##利用/dev/zero将/dev/sda里的内容覆盖
这样sda盘就被我们搞坏了
重启,进入急救模式
init 6 ##重启
重启后会发现我们一进去的界面变成了这样
我们进入Troubleshooting选项
进入标红”急救模式“ 等待
这里选择1进入”安全模式“
按回车,会进入下面这种界面
数据恢复操作
这是一个简单化的命令行模式,能执行一些基础命令
mkdir /copy ##创建一个用来挂载目录
mount /dev/sdd1 /copy ##将之前备份的盘挂载到sdabak上
dd if=/copy/sda.bak of=/dev/sda bs=512 count=1
##将备份的完整的MBR引导数据覆盖到sda
这样就恢复数据完成
exit ##退出安全模式,系统将会重启
这样就排除故障,恢复了系统
2.2、GRUP的故障恢复
模拟故障
rm -rf /boot/grub2/grub.cfg ##删除grub的文件
重启,进入急救模式
init 6 或者 reboot
等待,随后进入下图界面
exit ##输入exit进入下图模式
我们进入Troubleshooting选项
依旧选择Rescue a CentOS system 急救模式,然后等待
输入1 然后回车 进入安全模式
还是点回车进入下图界面
进行故障恢复
chroot /mnt/sysimage
##加载光盘镜像,切换到系统根环境
grub2-install /dev/sda
##重新将GRUB引导程序安装到第一块盘的MBR扇区,如果有多个分区可省略
grub2-mkconfig -o /boot/grub2/grub.cfg
##重新构建GRUB菜单的配置文件
exit ##退出chroot
reboot ##再重启
可能需要多等一会,有点耐心
这样就能进入系统了
2.3、忘记密码的故障恢复
重启,进入急救模式
init 6 或者 reboot
###在进入下图界面的时候要一直点c!!!
按c!!就会进入下图界面
exit ##输入exit进入下图模式
我们进入Troubleshooting选项
依旧选择Rescue a CentOS system 急救模式,然后等待
输入1 然后回车 进入安全模式
还是点回车进入下图界面
修改密码操作
chroot /mnt/sysimage
##加载光盘镜像,切换到系统根环境
passwd root ##修改root密码
exit ##退出系统根环境
reboot ##重启
这样就完成了