UEFI模式虛擬機,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
至此,修復操作完成。
浙公網安備 33010602011771號