本篇博客将从理论到实验操作详细描述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

完成后,重启(exit+reboot)即可结束修复。

四、重置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

接着输入两遍新密码,重启即可。 -

以上,就是系统启动的理论部分以及三个容易导致无法进入系统的问题的修复方法。