记一次linux的bios引导失败

post thumb
Ops
作者 Louis 发表于 2019年12月30日

周末公司整座大楼停电, 所有物理机全部关机然后等待来电启动, 其中一台linux系统启动报错如下:

Reboot and Select proper Boot device

or Insert Boot Media in selected Boot device and press a key.

解决思路

百度了一阵, 大概意思是, 重新启动, 选择一个正确的引导设备或者插入媒体引导设备. 第一想法就是引导失效, grub阶段都进入不了.

GRUB共分为三个阶段:
 stage1主要负责BIOS和GRUB之间的交接,载入存放于各个分区中的开机文件;
 stage1.5是连接stage1和stage2之间的通道,起着过渡的作用,负责识别stage2所在/boot分区的文件系统,以便进入stage2;
 stage2是grub的核心部分,在这个阶段完成加载内核、加载根文件系统驱动、挂载根等工作。

内核启动修复前, 看一下grub.conf文件

# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,1)
#          kernel /vmlinuz-version ro root=/dev/mapper/VolGroup-lv_root
#          initrd /initrd-[generic-]version.img
#boot=/dev/sda1
device (hd0) HD(1,800,64000,90dc22cc-792a-41d5-acf4-4225d09ce704)
default=0
timeout=5
splashimage=(hd0,1)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.32-431.el6.x86_64)
	root (hd0,1)
	kernel /vmlinuz-2.6.32-431.el6.x86_64 ro root=/dev/mapper/VolGroup-lv_root rd_NO_LUKS rd_NO_MD rd_LVM_LV=VolGroup/lv_swap crashkernel=128M LANG=zh_CN.UTF-8 rd_LVM_LV=VolGroup/lv_root  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
	initrd /initramfs-2.6.32-431.el6.x86_64.img

我们这边主要是stage1方式缺失. 需要采用新的光盘引导进入resuce 救援模式

image-20191231123135464

Resuce installed system

选择完Resuce后, 静待1分钟, 会有一个交互式选择

在询问是否同意将系统挂载到/mnt/sysimage,选择continue即可, 默认为1
选择enter即可进入shell.

进入恢复, 查看系统安装位置, 目前我们的系统安装在/dev/sda1

sh-4.1# chroot /mnt/sysimage
bash-4.1#  lsblk    
bash-4.1#  grub-install  /dev/sda1
# 修复grub,此过程stage[1,1.5,2]都可以修复, 此步骤容易出现故障
bash-4.1#  sync
# 同步设置到磁盘,确保磁盘已经写入进去了
# 此时不仅修复了mbr还修复了grub里面不同stage的文件

查看grub文件是否存在, 发现grub.conf文件也不存在. 将备份的conf复制过来

bash-4.1#  cat /boot/grub/grub.conf
cat: /boot/grub/grub.conf: No such file or directory
bash-4.1#  cp /etc/grub.conf /boot/grub/grub.conf

查看/boot/efi文件, 文件也丢失了

bash-4.1# ls /boot/efi/EFI/centos/
bash-4.1# cp /etc/grub.conf   /boot/efi/EFI/centos/
bash-4.1# reboot
上一篇
mysql执行sql导入数据库中文乱码