一、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)
通过模板文件编辑配置
查看/boot/grub2/grub.cfg,可以看到已经自动将我们对00_header做的配置编译到该文件
重启后,在开机时想要编辑grub需要输入用户和密码
2、通过grub修改终端界面的窗体大小。开机后编辑grub配置,在下图位置添加vga=ask,然后按ctrl+x启动
800X600这个大小看着比较舒服,输入对应十六进制,回车即可
如果想要永久生效,编辑/etc/default/grub文件即可。注意,如果直接指定大小,需要明确表明340是十六进制,写法是0x340
通过通过grub2-mkconfig使配置编译到grub.cfg
3、应急模式。在下图位置,填写s。
注意:应急模式需要root密码。通过netstat查看当前开放的端口、服务,可以看到为空。
4、修该root密码。如图,输入
重新挂载文件系统,改为读写模式,就可以修改了。修改完毕后,需要touch /.autorelabel,否则selinux会影响我们进行的操作。
5、grub程序故障。
模拟故障
解决办法:进入救援模式,重新安装grub程序。
首先,进入救援模式
注意:输入df查看当前的文件系统挂载信息。可以看出,我们的boot分区位于/dev/sda1上;通过fdisk -l /dev/sda也可以看到操作系统就安装在该文件系统。所以,我们需要将grub程序安装在/dev/sda1上,完成修复。
进入急救模式,安装grub程序前,需要先切换根环境到/mnt/sysimage。否则是无法安装的,如下。
6、模拟grub配置文件丢失;内核文件和虚拟文件系统文件丢失。
重启后,系统直接提示进入救援模式。
修改BIOS让光盘引导操作系统
同样进入到/mnt/sysimage根环境中进行操作。挂载系统盘,安装kernel,然后安装grub程序,最后生成grub.cfg配置文件。(三者缺一不可,原因参照其引导过程)
解决后,我们修改BIOS,将引导顺序改回到磁盘优先。(工作中,为防止有人理由修改BIOS的手段***操作系统,需要设置BIOS密码)
7、MBR扇区故障。
MBR扇区故障,如果没有备份将会是一件很麻烦的事。工作中也应当将MBR扇区进行备份。
备份MBR扇区(备份MBR需要将备份到没有安装操作系统的硬盘上)
模拟故障
同样进入救援模式,创建一个目录,将存有MBR备份的分区挂载到该目录,然后即可还原