Grub rescue на Linux что делать не загружается ОС

Thank you for reading this post, don't forget to subscribe!

Grub rescue — это режим, когда GRUB 2 не может най­ти пап­ку GRUB или ее содер­жи­мое отсутствует/повреждено. Пап­ка GRUB 2 содер­жит меню, моду­ли и сохра­нен­ные дан­ные об окру­жа­ю­щей среде.

Это может про­изой­ти после каких-либо опе­ра­ций с раз­де­ла­ми на дис­ке или при добав­ле­нии новых устройств. При­чин может быть мно­го. Но чаще все­го про­бле­ма реша­ет­ся все­го в несколь­ко команд, кото­рые пред­став­ле­ны ниже.

Посмот­рим какие дис­ки и раз­де­лы у нас есть.

grub rescue> ls
(hd0) (hd0,msdos2) (hd0,msdos1)

Видим, что есть диск (hd0) и раз­де­лы msdos2 и msdos1. Посмот­рим что на разделах.

grub rescue> ls (hd0,msdos2)/
boot etc initrd.img lib32 libx32 media opt root sbin srv tmp var vmlinuz.old
bin dev home initrd.img.old lib lib64 lost+found mnt proc run snap sys usr vmlinuz

grub rescue> ls (hd0,msdos1)/
config-4.19.0-11-amd64 config-4.19.0-14-amd64 initrd.img-4.19.0-11-amd64 initrd.img-4.19.0-14-amd64 System.map-4.19.0-11-amd64 System.map-4.19.0-14-amd64 vmlinuz-4.19.0-12-amd64
config-4.19.0-12-amd64 grub initrd.img-4.19.0-12-amd64 lost+found System.map-4.19.0-12-amd64 vmlinuz-4.19.0-11-amd64 vmlinuz-4.19.0-14-amd64

Мы видим, что msdos2 — это кор­не­вой раз­дел / где хра­нят­ся все фай­лы систе­мы, а msdos1 — это раз­дел boot (пото­му что там нуж­ная нам дирек­то­рия grub и ядро) кото­рый мон­ти­ру­ет­ся к /boot. Воз­мо­жен дру­гой вари­ант, когда раз­дел один и дирек­то­рия boot не мон­ти­ру­ет­ся отдель­ным разделом,тогда ее най­ти мож­но так:

grub rescue> ls (hd0,msdos1)/boot/
config-4.19.0-11-amd64 config-4.19.0-14-amd64 initrd.img-4.19.0-11-amd64 initrd.img-4.19.0-14-amd64 System.map-4.19.0-11-amd64 System.map-4.19.0-14-amd64 vmlinuz-4.19.0-12-amd64
config-4.19.0-12-amd64 grub initrd.img-4.19.0-12-amd64 lost+found System.map-4.19.0-12-amd64 vmlinuz-4.19.0-11-amd64 vmlinuz-4.19.0-14-amd64

Сей­час загру­зим нашу ОС

grub rescue> set prefix=(hd0,msdos1)/grub
grub rescue> set root=(hd0,msdos2)
grub rescue> insmod normal
grub rescue> normal

А для вто­ро­го вари­ан­та с одним разделом

grub rescue> set prefix=(hd0,msdos1)/boot/grub
grub rescue> set root=(hd0,msdos1)
grub rescue> insmod normal
grub rescue> normal

После того, как ОС загру­зит­ся, открой­те тер­ми­нал под супер­поль­зо­ва­те­лем и уста­но­ви­те GRUB на свой диск заново.

# update-grub
# grub-install /dev/sda

Где /dev/sda — это Ваш систем­ный диск.

Конеч­но, grub rescue не все­гда так про­сто мож­но испра­вить. Напри­мер, если у Вас систе­ма LVM или GPT раз­мет­ка, то потре­бу­ет­ся чуть боль­ше команд