Linux操作系统引导过程中MBR引导与GRUB菜单的故障模拟与恢复
引导过程总览
Linux操作系统的引导过程一般包括以下几个阶段:开机自检、MBR引导、GRUB菜单、加载Linux内核、init进程初始化。
·开机自检
服务器主机开机以后,将根据主板BIOS中的设置对CPU、内存、显卡、键盘等设备进行初步检测,检测成功后根据预设的启动顺序移交系统控制权,大多时候会移交给本机硬盘。
·MBR引导
当从本机硬盘中启动系统时,首先根据硬盘第一个扇区中MBR的位置,将系统控制权传递给包含操作系统引导文件的分区,或者直接根据MBR记录中的引导信息调用启动菜单(如GRUB)
·GRUB菜单
对于Linux操作系统来说,GRUB是使用最为广泛的多系统引导器程序,系统控制权传递给GRUB以后将会显示启动菜单给用户选择,并根据所选项(或采用默认值)加载Linux内核文件,然后将系统控制权转交给内核,需要注意的是,CentOS7采用的是GRUB2启动引导器。
·加载Linux内核
Linux内核是一个预先编好的特殊二进制文件,介于各种硬件资源与系统程序之间,负责资源分配与调度,内核接过系统控制权以后,将完全掌控整个Linux操作系统的运行过程,在CentOS中,默认的内核文件位于"/boot/vmlinuz-3.10.0-514.el7.x86_64"。
·init进程初始化
为了完成进一步的系统引导过程,Linux内核首先将系统中的/sbin/init程序加载到内存中运行(运行中的程序称为进程),init进程负责一系列的系统初始化过程,最后等待用户进行登录。
修复MBR扇区故障
- 故障原因
1、病毒、木马等造成的破坏
2、不正确的分区操作、磁盘读写误操作 - 故障现象
1、找不到引导程序,启动终端
2、无法加载操作系统,开机后黑屏 - 解决思路
1、提前做好备份文件(生产环境中,可用硬盘去其他相同配置的服务器中拷一份)
2、以安装光盘引导进入急救模式
3、从备份文件中恢复
实验环境
VMware、rhel 7.4
实验步骤
1、在虚拟机关机的状态下,重新添加一块硬盘,大小为10G
2、开启虚拟机,fdisk -l查看新加入的硬盘
3、对硬盘进行格式化(创建文件系统的类型)mkfs.ext4 /dev/sdb
4、对磁盘挂载 mount /dev/sdb /opt (挂载到opt目录)
5、df -Th查看挂载
6、备份MBR扇区数据 dd if=/dev/sda of=/opt/mbr.bak bs=512 count=1
7、模拟MBR扇区故障 dd if=/dev/zero of=/dev/sda bs=512 count=1 (表示对第一块磁盘上的MBR扇区进行全0覆盖写入)
8、init 6 重启会发现系统起不来,此时选择进入troubleshooting
9、进入troubleshooting菜单 选择Rescue a Red Hat Enterprise Linux system
10、按1 再按回车进入sh-4.2#
11、mount /dev/sdb /mnt 将sdb备份的文件挂到mnt下,然后进mnt目录查看是否有mbr.bak
12、dd if=/mnt/mbr.bak of=/dev/sda bs=512 count=1 把MBR扇区备份数据拷贝到第一块磁盘,之后reboot重启,可以看到系统已修复好,可以登录
修复GRUB菜单故障
实验环境
VMware RedHat 7.4
实验步骤
1、模拟GRUB菜单故障 cd /boot/grub2 rm -rf grub2.cfg 进入到grub2目录,删除grub2的配置文件,之后init 6重启,重启时快速按F2键进入BIOS界面
2、在BIOS界面切换到Boot,把CD-ROM Drive排在第一个启动,然后切换到Exit保存退出
3、之后选择进入troubleshooting
4、进入troubleshooting菜单 选择Rescue a Red Hat Enterprise Linux system
5、按1 再按回车进入sh-4.2#
6、进入救援模式后切根 chroot /mnt/sysimage/ ;之后进入到grub2目录 cd /boot/grub2/; 修复grub.cfg配置文件grub2-mkconfig -o /boot/grub2/grub.cfg ;ls查看是否修复
7、退出、重启(exit init 6)注意:重启时需要快速按F2键进入BIOS,把Boot里的启动顺序还原,然后切到Exit保存退出,可以看到系统已修复好可以正常登录