龙空技术网

UEFI模式虚拟机,grub文件丢失如何处理

singless233 138

前言:

今天兄弟们对“grub手动引导”大体比较关注,各位老铁们都想要分析一些“grub手动引导”的相关知识。那么小编也在网摘上网罗了一些关于“grub手动引导””的相关内容,希望我们能喜欢,看官们一起来了解一下吧!

最近生产环境有一台虚拟机,重启后grub引导出现问题,无法正常进入系统,虚拟机正好之前也没创建快照,因此需要进行修复。

修复之前,我们先来了解一下grub的作用。grub是一个操作系统启动管理器,用来引导不同的操作系统。在Linux中,它最重要的作用就是指定了boot分区以及根分区的位置,使得我们开机时能正常进入操作系统。

了解上面这些基本信息后,我们得到grub修复的基本思路,即手动设置boot分区和根分区进入操作系统,系统内再重新设置grub文件,下面我们开始来修复grub。

我们在grub界面,输入ls,查询分区,其中hd开头为云主机的磁盘,gpt开头为磁盘上的分区。例如(hd0,gpt1)代表磁盘0上的分区1。

使用命令 ”ls (hd0,gpt1)/” 查看分区1中的文件。通过查看分区中的文件,找到grub2或grub目录所在的分区,即boot分区,本例中,boot分区为(hd0,gpt2)。

通过ls命令找到根分区所在分区,根分区下会有诸如/etc、/dev、/proc等目录,本例中为(hd0,gpt4),再使用命令cat (hd0,gpt4)/etc/fstab查看挂载信息,记录好根目录所在分区信息。如果系统分区方式为lvm,则无法以这种方式查看信息,lvm类型系统根分区路径一般为/dev/mapper/centos-root,其中centos为vg名,root为根分区的lv名。

设置引导分区,即boot分区,本例为(hd0,gpt2)

加载内核启动映像,设置根分区。输入“linuxefi /vmlinuz-”后可以按tab键补全。“root=”后面填入在/etc/fstab中看到的根分区uuid信息。如果/etc/fstab中看到的根目录挂载信息为/dev/vda1这种形式,则填写“root=/dev/sda1”。如果系统分区类型为lvm,则可以尝试“root=/dev/mapper/centos-root”。如云主机bios模式为legacy则需要把linuxefi换成linux16。

linuxefi /vmlinuz-3.10.0-1160.el7.x86_64 root=UUID=8956931f-b138-4a79-a9e0-46e75ef3e430

设置Linux 内核映像的初始 ramdisk。输入”initrdefi /initramfs-”后可以按tab补全,Bios模式为legacy的云主机需要将initrdefi修改为initrd16。

initrdefi /initramfs-3.10.0.1160.el7.x86_64.img

上面所有操作做完后输入boot,再敲回车,即可进入系统

用以下命令重新生成grub.cfg文件,生成后可以重启云主机测试grub文件是否正常。

grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg

至此,修复操作完成。

标签: #grub手动引导 #centos修复uefi