Redhat使用CentOS的Yum后update导致EFI引导失败

最近装了台服务器,因为乱七八糟原因只能装REDHAT7.4,然后因为yum是收费的,所以从网上找到了更换yum源的方式,换成了Centos的yum,教程挺多的。
按照步骤走都可以更换yum,就是wget下载包时候的链接可能会失效,找到最新的就行,不算困难。
更换后可以正常使用,正常安装软件包,然后作死的我就
yum -y update
yum -y upgrade 了以下,然后reboot开机就找不到grubx64.eif了
这里写图片描述
然后又重新装了几次系统,有了点发现
update前
这是更新前的/boot/efi/EFI的目录结构,可以看到只有两个目录,BOOT和 redhat
update后
这是更新后的/boot/efi/EFI目录,发现redhat目录下只有
grub.cfg和grubenv两个文件了,这时候还没有重启,重启之后就会报之前找不到efi的那个错误,再次刷机后发现yum -y update会把grub也更新了,因为换了centos的yum,所以导致redhat的efi找不到了。

服务器肯定要稳定运行的,不能开一次机就凉了把,所以得抢救下,然后找了找网上的文章,发现大多数linux操作系统都是,上电–BIOS–引导程序–kernel~~~
所以开机找不到引导程序efi,只需要在bios里面或者主机的配置软件什么里面更改就行,大概的关键字就是选择引导程序。/boot/efi这个分区是暴露在bios之下的,只要选择具体那个目录使用那个efi引导就可以了,我这里直接选择使用文件引导,

[root@localhost ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0  3.5T  0 disk 
├─sda1   8:1    0  512M  0 part /boot/efi
├─sda2   8:2    0  512M  0 part /boot
├─sda3   8:3    0  3.5T  0 part /
└─sda4   8:4    0  512M  0 part [SWAP]

更换引导文件之后就可以正常开机了,可以进入到选择系统启动的界面
系统选择界面
回车进如系统发现第一个系统panic了,无法进入????第二个可以进入,这又是什么鬼,不能每次都自己选择吧,怎么把第二个系统优先引导呢?
然后接着查寻教程,发现需要配置grub就可以选择优先启动那个系统,进入到/boot分区内执行cat grub.cfg | grep ^menuentry,可以搜索出当前grub有3个操作系统可以引导,也就是上面我开机进入那个界面,这里我需要配置第二个系统优先启动。

[root@localhost temp]# cat grub.cfg  | grep ^menuentry
menuentry 'Red Hat Enterprise Linux Server (3.10.0-693.21.1.el7.x86_64) 7.4 (Maipo)' --class red --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-693.21.1.el7.x86_64-advanced-75a78e61-c828-4dd3-b516-b8df09df729a' {
menuentry 'Red Hat Enterprise Linux Server (3.10.0-693.el7.x86_64) 7.4 (Maipo)' --class red --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-693.el7.x86_64-advanced-75a78e61-c828-4dd3-b516-b8df09df729a' {
menuentry 'Red Hat Enterprise Linux Server (0-rescue-60be0ced79ec4a03aa883cec602dd0cc) 7.4 (Maipo)' --class red --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-0-rescue-60be0ced79ec4a03aa883cec602dd0cc-advanced-75a78e61-c828-4dd3-b516-b8df09df729a' {

首先执行
grub2-mkconfig -o xxxx/xxxx/xxx/grub.cfg 选择此配置文件
执行grub2-editenv list,可以看到
saved_entry=xxxx
再执行
grub2-set-default ‘Red Hat Enterprise Linux Server (3.10.0-693.el7.x86_64) 7.4 (Maipo)’
名字很长又特殊字符可以使用引号,然后再执行grub2-editenv list,可以看到3.10.0-693.el7.x86_64这个系统会被优先引导启动,然后reboot重启就可以了

[root@localhost temp]# grub2-editenv list
saved_entry=Red Hat Enterprise Linux Server (3.10.0-693.el7.x86_64) 7.4 (Maipo)

so 经过激烈的斗争,终于不用再装系统了,如果efi被误删除了可以从系统启动盘启动,redhat有个抢救模式,ubuntu有个test模式,然后把启动盘的efi文件cp过去就可以了,这样也能恢复

如下有篇解释Linux操作系统启动流程文章写的不错
https://www.cnblogs.com/kevingrace/p/6244584.html
Redhat使用CentOS的Yum,可以看下面的连接
https://blog.csdn.net/u010833154/article/details/52453127
https://www.cnblogs.com/zdxster/p/5344944.html
GRUB2命令和环境变量配置文件比较难理解,可以看如下文章
https://blog.csdn.net/listener_ri/article/details/45621947
https://blog.csdn.net/lazyclough/article/details/5790385

猜你喜欢

转载自blog.csdn.net/wq3028/article/details/79753503