centos進入dracut模式修復grub啟動

語言: CN / TW / HK

Centos系統進入dracut的原因有很多

比如:

系統重要檔案丟失

系統配置檔案配置錯誤

伺服器遷移到不同虛擬化環境

處理流程

1.掛載系統/root檔案到tmp1,編輯grub啟動,重新生成啟動檔案

dracut# mkdir tmp1
dracut# mount /dev/centos/root tmp1
dracut# vi tmp1/etc/defaut/grub
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet"
修改為
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rhgb quiet"

檢視實際掛載分割槽情況:

dracut# cat tmp1/etc/fstab
#
# /etc/fstab
# Created by anaconda on Thu Jan  2 21:15:59 2020
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=22747de8-b577-4bbb-9b5e-40c1b8c3c504 /boot                   xfs     defaults        0 0
#/dev/mapper/centos-swap swap                    swap    defaults        0 0

看到如上swap是被註釋掉的狀態,系統不能啟動正式swap分割槽無法載入引起,

檢視uuid對應的碟符

dracut# blkid
/dev/vda1: UUID="22747de8-b577-4bbb-9b5e-40c1b8c3c504" TYPE="xfs"
/dev/vda2: UUID="T7xTcp-ywWd-ciYc-k9mU-Fd3f-TCfe-wgKQgd" TYPE="LVM2_member"

如上看到是/dev/vda1

掛載分割槽:

dracut# mkdir tmp2
dracut# mount /dev/vda1 tmp2

編輯grub.cfg檔案,把和swap相關的都改成root

dracut# vi /tmp2/grub2/grub.cfg

linux16 /vmlinuz-3.10.0-1062.el7.x86_64 root=/dev/mapper/centos-root ro crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet LANG=en_US.UTF-8
linux16 /vmlinuz-0-rescue-6f9bcc60986041238dcda79bfef462d5 root=/dev/mapper/centos-root ro crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet
上面的centos/swap 改成 centos/root
linux16 /vmlinuz-3.10.0-1062.el7.x86_64 root=/dev/mapper/centos-root ro crashkernel=auto rd.lvm.lv=centos/root rhgb quiet LANG=en_US.UTF-8
linux16 /vmlinuz-0-rescue-6f9bcc60986041238dcda79bfef462d5 root=/dev/mapper/centos-root ro crashkernel=auto rd.lvm.lv=centos/root rhgb quiet

然後重啟就可以正常引導系統了

除了在dracut下編輯進入外,也可以在剛開始進入grub選單時,編輯修改centos/swap為centos/root

或是通過修復盤引導進入系統後 編輯/grub.cfg檔案