本篇博客将从理论到实验操作详细描述Liunx系统的完整引导过程,并解决三种影响正常开机的故障。
目录引导:
- 开机引导过程
- 修复MBR扇区故障引起的故障
- 修复GRUB菜单故障引起的故障
- 重置Centos7系统管理员(root)密码
一、完整的开机引导流程
开机自检:
也称加电自检(POST,Power On Self Test)。 指计算机系统,接通电源,(BIOS程序)的行为,包括对CPU、系统主板、基本内存、扩展内存、系统ROM BIOS等器件的测试。如发现错误,给操作者提示或警告。简化或加快该过程,可使系统能够快速启动。
MBR引导:
其引导代码储存在第一块磁盘的第一个扇区中,容量为512字节。它负责磁盘操作系统(DOS)对磁盘进行读写时分区合法性的判别、分区引导信息的定位,它由磁盘操作系统(DOS)在对硬盘进行初始化时产生的。
GRUB菜单引导:
允许用户同时拥有多个操作系统,并在启动时选择希望加载的操作系统。也可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数。
init进程:
该进程为加载系统的必要组件,也是加载环境变量的必要部分。由Liunx内核加载运行/sbin/init程序执行,为系统的中的第一个进程,其PID(进程标记号)号始终为1.
以上就是Liunx系统完整的启动流程,而在启动的过程中,很有可能会遇到各种情况导致无法进入系统,接下来这里就将挑出几个常见的问题进行解析:
二、修复MBR扇区故障引起的故障
MBR引导位于整个启动程序的第二步,也是除了硬件问题外第一个容易出现问题的地方。
出现故障的常见原因:
(1)病毒、***等造成的破坏
(2)不正确的分区操作、磁盘读写误操作都会导致MBR扇区损坏
出现故障的表现:
(1)找不到引导程序,启动中断
(2)无法加载系统,黑屏
修复思路:
使用备份文件,通过光盘镜像的急救模式从备份中进行恢复。
修复步骤:
(1)事先备份一份mbr引导扇区到其它磁盘中(也可以拷贝相同操作系统另一台服务器的mbr引导扇区)
(2)使用安装镜像进入镜像急救模式进行mbr修复
图解:
(实验环境整体在虚拟机中实施)
确保该服务器已经存在两块磁盘并挂载完毕,在sdb1的挂载点内输入
[root@localhost data]# dd if=/dev/sda of=/data/sdr.mbr.bak bs=512 count=1
将原系统内的mbr引导扇区进行复制
接下来就准备模拟mbr扇区损坏的情况,输入
[root@localhost data]# dd if=/dev/zero of=/dev/sda bs=512 count=1
将垃圾文件导入原来的MBR扇区中,破坏扇区成功!
重启后,就会完全无法进入系统。
这时候插入Centos7的安装光盘(这里因为是虚拟机,所以只需要添加镜像文件即可),然后重启服务器,在出现读条时按下“ESC”键(不放心的可以从开始重启就一直按),进入“BOOT MENU”界面,选择第三个使用CD进入
执行完以上的步骤,需要耐心等待一分钟。待其进入如下界面,在下方输入“1”进入光盘镜像自带的简易镜像系统,正式开始修复。
在镜像系统中,输入
sh-4.2#mount /dev/sdb1 /mnt
将拥有备份的磁盘进行临时挂载(没有挂载的磁盘只是个物理设备,但无法读取),后面的工作就比较明了了,只需要进行恢复备份即可,输入
sh-4.2#dd if=/mnt/sdr.mbr.bak of=/dev/sda
事实上,此时扇区已经修复完毕,所以最后只要reboot重启即可完成修复。
三、修复GRUB菜单故障引起的故障
除了MBR引导以外,另一个容易出现问题的步骤就是由于GRUB菜单出现问题导致无法进入系统。
出现GRUB故障的原因:
(1)MBR扇区中的GRUB引导程序遭到意外损坏
(2)grub.conf文件丢失或是引导配置有误
出现该种故障的表现:
系统引导停滞不前,一直卡在“grub>”符号处
修复思路:
(1)使用引导光盘,进入急救模式,重写(一般人没那技术)或从备份恢复grub.conf
(2)向MBR扇区中重建grub程序
具体修复步骤:
(1)引导急救模式,加载系统镜像(chroot /mnt/sysimage/)
(2)重新建立加载sda分区(grub2-install /dev/sda)
(3)重新构建grub菜单配置文件(grub2-mkconfig -o /boot/grub2/grub.cfg)
(4)退出bash环境(exit)
(5)重启
图解修复步骤:
(实验环境整体在虚拟机中实施)
为了模拟grub菜单损坏导致的错误。首先输入
[root@localhost ~]# cd /boot/
[root@localhost boot]# ls
跳转到/boot目录下并用ls目录进行查看,可以看到/boot目录下存在两个grub目录
接着跳转进入grub2目录中,
[root@localhost boot]# cd grub2
将目录中的grub.cfg删除
[root@localhost grub2]# rm -rf grub.cfg
然后直接reboot重启
重启后就会发现,果不其然,开机无法进行,会卡在“grub>”符号处无法继续(当然这里不是完全卡死的,只是因为缺少关键的cfg文件才无法继续。大神可以在这里手动输入文件。)
OK,既然问题已经出现了,那么我们就来解决它。重启虚拟机,跟上章节修复MBR扇区一样(要通过光盘自带的简易镜像进行修复),直到进入镜像系统前的步骤都完全一样,这里就不耽误时间了。
进入镜像系统,开始正式修复。输入
sh-4.2#chroot /mnt/sysimage/
进入光盘镜像自带的bash环境,接着启用
bash-4.2#grub2-install /dev/sda
重新建立加载sda分区
而实际上因为我们是模拟情况,所以除了grub的配置文件丢失之外,其它部分应该都是完好的。
修复grub菜单的最后一步就是重新构建grub菜单配置文件,输入
bash-4.2#grub2-mkconfig -o /boot/grub2/grub.cfg
四、重置Centos7系统管理员(root)密码
事实上,第三篇严格意义上不能算导致无法进入系统的错误,但是不知道管理员密码其实和进不了系统没什么区别(相信看这篇博客的人都懂为什么),所以我在这里也明确的解决一下吧~~
故障原因:
无论何种原因遗忘root用户密码
出现故障表现:
无法进行所有需要root权限的操作
若没有其它账户,将无法登陆系统
修复思路:
忘了密码,重设呗(哪有那么多可说的)
修复步骤:
(1)加载光盘系统模拟镜像(chroot /mnt/sysimage/)
(2)修改密码
图解修复步骤:
(实验环境整体在虚拟机中实施)
假设这时候,突然忘了root用户密码,结果被卡在登陆界面
OK,问题出现了。让我来开始解决:
添加光盘镜像,同时把系统重启,并在出现读条时按下“ESC”。。。。。。(直到进入镜像系统,前面步骤与修复grub菜单等雷同,不再说明)
进入光盘镜像系统后,和修复grub菜单时一样输入
sh-4.2#chroot /mnt/sysimage/
进入光盘镜像自带的bash环境,接着————跟在Liunx中一样使用passwd命令即可
bash-4.2#passwd root