一、CentOS7/RHEL7启动先从加点自检开始,然后会将控制权交给BIOS,BIOS工作完成后会将控制权交给GRUB。GRUB在整个启动流程中起到很大的作用,而GRUB中最重要的就是/boot/grub2/grub.cfg配置文件。启动过程中通过临时修改GRUB可以做很多事,包括修改root密码这种危险操作,所以需要对grub.cfg做一些必要操作。
1、设置grub密码
通过grub2-mkpassword-pbkdf2生成加密密码,并编辑配置文件00_header(注意在RHEL6时我们可以直接修改/boot/grub/grub.conf,如今在RHEL7官方建议修改grub的模板文件,然后将模板文件编译进入grub.cfg)
![grub2故障举例及修复](https://s1.51cto.com/images/blog/201807/07/66ed9205f8d0f8e7df4caaac17c8fd2b.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
![grub2故障举例及修复](https://s1.51cto.com/images/blog/201807/07/d5e7fca07c4e6fdbcfaf1712ff885640.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
通过模板文件编辑配置
![grub2故障举例及修复](https://s1.51cto.com/images/blog/201807/07/bd8f9cbe93f853c6b4f26789f6d9ce34.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
查看/boot/grub2/grub.cfg,可以看到已经自动将我们对00_header做的配置编译到该文件
![grub2故障举例及修复](https://s1.51cto.com/images/blog/201807/07/a42a8eaef54c066f9ce589fe4d242251.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
重启后,在开机时想要编辑grub需要输入用户和密码
![grub2故障举例及修复](https://s1.51cto.com/images/blog/201807/07/d369bc6e91034c5f1a4a4239c8da8fa2.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
2、通过grub修改终端界面的窗体大小。开机后编辑grub配置,在下图位置添加vga=ask,然后按ctrl+x启动
![grub2故障举例及修复](https://s1.51cto.com/images/blog/201807/07/c2a775830c7fee1694bdaac623e318ab.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
800X600这个大小看着比较舒服,输入对应十六进制,回车即可
![grub2故障举例及修复](https://s1.51cto.com/images/blog/201807/07/4c7bd38b1b208096d60ed86e4f300f7c.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
如果想要永久生效,编辑/etc/default/grub文件即可。注意,如果直接指定大小,需要明确表明340是十六进制,写法是0x340
![grub2故障举例及修复](https://s1.51cto.com/images/blog/201807/07/f2b6c79c4f529a0c4b3ea6d6c379bfae.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
通过通过grub2-mkconfig使配置编译到grub.cfg
![grub2故障举例及修复](https://s1.51cto.com/images/blog/201807/07/61249ab53e085794211d71719559a7f8.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
3、应急模式。在下图位置,填写s。
![grub2故障举例及修复](https://s1.51cto.com/images/blog/201807/07/cf3443e75795b6545dc9138a445f8401.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
注意:应急模式需要root密码。通过netstat查看当前开放的端口、服务,可以看到为空。
![grub2故障举例及修复](https://s1.51cto.com/images/blog/201807/07/532392b6511455f901e28375916eba77.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
4、修该root密码。如图,输入
![grub2故障举例及修复](https://s1.51cto.com/images/blog/201807/07/326f3d0a8b5756491ff4bf6ca17131ab.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
重新挂载文件系统,改为读写模式,就可以修改了。修改完毕后,需要touch /.autorelabel,否则selinux会影响我们进行的操作。
![grub2故障举例及修复](https://s1.51cto.com/images/blog/201807/07/e131af7fcd4f51bba27f0b94d5e723eb.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
5、grub程序故障。
模拟故障
![grub2故障举例及修复](https://s1.51cto.com/images/blog/201807/07/e9cbcc94970c6b10381dac2f3f73f0b7.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
解决办法:进入救援模式,重新安装grub程序。
首先,进入救援模式
![grub2故障举例及修复](https://s1.51cto.com/images/blog/201807/07/734ca9990075995f1bce68ec71b9480c.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
![grub2故障举例及修复](https://s1.51cto.com/images/blog/201807/07/d24d46b4a57183371d7e97c521442dee.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
![grub2故障举例及修复](https://s1.51cto.com/images/blog/201807/07/686ec5ebe6edaa37b88eb6e81a28ac25.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
注意:输入df查看当前的文件系统挂载信息。可以看出,我们的boot分区位于/dev/sda1上;通过fdisk -l /dev/sda也可以看到操作系统就安装在该文件系统。所以,我们需要将grub程序安装在/dev/sda1上,完成修复。
进入急救模式,安装grub程序前,需要先切换根环境到/mnt/sysimage。否则是无法安装的,如下。
![grub2故障举例及修复](https://s1.51cto.com/images/blog/201807/07/4393cf2812a46150e86be8554367774d.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
6、模拟grub配置文件丢失;内核文件和虚拟文件系统文件丢失。
![grub2故障举例及修复](https://s1.51cto.com/images/blog/201807/07/a5673ca8743478a27d49dbf6a9d856db.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
重启后,系统直接提示进入救援模式。
![grub2故障举例及修复](https://s1.51cto.com/images/blog/201807/07/37c7f0e4ed8f537aaabbcf6121740b43.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
修改BIOS让光盘引导操作系统
![grub2故障举例及修复](https://s1.51cto.com/images/blog/201807/07/9111c9173d5da9598351620bf6ff0afc.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
同样进入到/mnt/sysimage根环境中进行操作。挂载系统盘,安装kernel,然后安装grub程序,最后生成grub.cfg配置文件。(三者缺一不可,原因参照其引导过程)
![grub2故障举例及修复](https://s1.51cto.com/images/blog/201807/07/f350855ba30f98f1803e67645c9b0794.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
解决后,我们修改BIOS,将引导顺序改回到磁盘优先。(工作中,为防止有人理由修改BIOS的手段***操作系统,需要设置BIOS密码)
7、MBR扇区故障。
MBR扇区故障,如果没有备份将会是一件很麻烦的事。工作中也应当将MBR扇区进行备份。
备份MBR扇区(备份MBR需要将备份到没有安装操作系统的硬盘上)
![grub2故障举例及修复](https://s1.51cto.com/images/blog/201807/07/90efd2afebf03d56b5c2728f4a9c1d31.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
模拟故障
![grub2故障举例及修复](https://s1.51cto.com/images/blog/201807/07/c6056c6d0722bbcbe100010a904524f0.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
同样进入救援模式,创建一个目录,将存有MBR备份的分区挂载到该目录,然后即可还原
©著作权归作者所有:来自51CTO博客作者张晨chat的原创作品,如需转载,请注明出处,否则将追究法律责任