您的位置:首页 > 运维架构 > Linux

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

2018-03-30 10:51 393 查看
最近装了台服务器,因为乱七八糟原因只能装REDHAT7.4,然后因为yum是收费的,所以从网上找到了更换yum源的方式,换成了Centos的yum,教程挺多的。

按照步骤走都可以更换yum,就是wget下载包时候的链接可能会失效,找到最新的就行,不算困难。

更换后可以正常使用,正常安装软件包,然后作死的我就

yum -y update

yum -y upgrade 了以下,然后reboot开机就找不到grubx64.eif了



然后又重新装了几次系统,有了点发现



这是更新前的/boot/efi/EFI的目录结构,可以看到只有两个目录,BOOT和 redhat



这是更新后的/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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: