环境:redhat8.4 RHEL8.4
服务器:华为G560
问题描述:调整了/etc/default/grub文件,重新生成/boot/grub2/grub.cfg导致机器启动失败,直接进入了rescue模式
解决方案:
启动到如下界面
选择c进入grub命令界面
可以使用ls命令去查看驱动器的情况
- (hd0) 是第一个硬盘。
- (hd0,msdos1) 是第一个硬盘上的第一个分区。
- (hd0,msdos2) 是第一个硬盘上的第二个分区。
- (hd0,msdos3) 是第一个硬盘上的第三个分区。
一般来说,对于LVM结构磁盘,对应关系如下,这也是我的系统对应关系(这个结构需要根据自己系统情况仔细区分)
- (hd0,msdos1) 是第一个硬盘上的第一个分区,对应/dev/sda1,也就是系统中文件系统/boot ,启动文件存储的分区 对应的是传统方式部署、启动的系统
- (hd0,msdos2) 是第一个硬盘上的第二个分区,对应/dev/sda2,也就是系统中文件系统/boot/efi,对应的是UEFI方式部署、启动的系统
- (hd0,msdos3) 是第一个硬盘上的第三个分区,对应/dev/sda3,也就是系统中其它文件系统,也就是根VG所在的分区
以上的对应关系也可以和同类系统对应
可以用命令详细查看磁盘内具体内容
现在清楚了这些内容,就开始
手动引导启动
首先让引导程序找到启动文件
grub> set root=(hd0,msdos1)
然后加载内核版本到根分区,我的根分区是在sda3里
- 对于直接磁盘方式安装的话命令如下
grub> linux16 /vmlinuz-4.18.0-305.el8.x86_64 ro root=/dev/sda2
- 对于LVM结构系统,命令如下
grub> linux16 /vmlinuz-4.18.0-305.el8.x86_64 ro root=/dev/mapper/vgrhel-lvroot
最后加载系统内核镜像
grub> initrd16 /initramfs-4.18.0-305.el8.x86_64.img
grub> boot
以上手工引导,并不能让下次系统能够正常启动。
配置自动启动:
先说明一点结论,千万不要手工编辑/etc/default/grub或者/etc/sysconfig/grub
因为我手工编辑了/etc/default/grub,所以执行如下步骤
- 删除配置文件
# rm /etc/default/grub
- 重新安装软件包
# yum reinstall grub2-tools
- 重建
grub.cfg
文件以使更改生效
# grub2-mkconfig -o /boot/grub2/grub.cfg
- 重新安装 GRUB在
/boot/
分区上恢复 GRUB
# grub2-install /dev/sda
- 验证
# reboot
以上步骤基于BIOS安装的机器,基于UEFI安装的机器请参考https://docs.redhat.com/zh_hans/documentation/red_hat_enterprise_linux/8/html/managing_monitoring_and_updating_the_kernel/proc_resetting-grub_assembly_reinstalling-grub
相关内容:
查看、配置grub使用如下命令:
# grubby
还有其它情况的处理步骤,请参考:https://blog.csdn.net/Howei__/article/details/104537757 本文为实际操作后的记录