Day by Day, Site by Site

Open source, Some Code, Troubleshooting, Good Links

Восстановление Grub на компьютере с Linux, UEFI, GPT

   linux

При попытке сделать загрузочную флэшку, сделал процедуру установки загрузчка Grub на флэшку. В результате поменялась информация и в загрузочном меню UEFI. Видно что то не учел. Система перестал грузиться с основного жесткого диск, только с флэшки. Для исправления загрузки не подходил способ для восстановления загрузчика BIOS систем.

Данный способ изначально для Ubuntu Linux, но должен подойти для любого дистрибутива.

Загружаемся с Live CD и определяем, используется ли UEFI при загрузке с Live CD:

[ -d /sys/firmware/efi ] && echo "EFI boot on HDD" || echo "Legacy boot on HDD"

В нашем случае должно быть EFI boot on HDD.

Устанавливаем efibootmgr:

sudo apt-get install efibootmgr

Проверяем, то что есть EFI раздел и диск с GPT:

sudo gdisk -l /dev/sda

Конечно же вместо /dev/sda подставьте ваш диск. У вас он может быть другим.

Монтируем файловую систему. В моём случае, root в /dev/sda2, boot раздел в /dev/sda1:

sudo mkdir -p /mnt
sudo mount /dev/sda2 /mnt
sudo mount /dev/sda1 /mnt/boot

Прописываем пункт в меню UEFI:

sudo efibootmgr -c -d /dev/sda -p 1 -w -L Ubuntu

При необходимости удаляем пункты из меню:

sudo efibootmgr -v
sudo efibootmgr -B -b [number item]

Устанавливаем grub-efi:

sudo apt-get install grub-efi-amd64

Устанавливаем загрузчик на диск:

sudo grub-install --root-directory=/mnt --boot-directory=/mnt/boot \
--efi-directory=/mnt/boot --target=x86_64-efi --bootloader-id=Ubuntu \
--recheck --debug /dev/sda

Далее прописано обновить меню Grub. В оригинале как то странно. Привожу рабочий набор команд. Надо попасть в chroot, и там уже обновить конфигурацию Grub:

sudo mount --bind /dev /mnt/dev
sudo mount --bind /sys /mnt/sys
sudo mount --bind /proc /mnt/proc
sudo chroot /mnt

grub-mkconfig -o /boot/grub/grub.cfg

# или строка выше или строка ниже

update-grub

Можно перезагрузиться. Загрузчик должен быть восстановлен.