Day by Day, Site by Site

Open source, Some Code, Troubleshooting, Good Links

Jun 11, 2016 - linux

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

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

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

Ubuntu 14.04 UEFI boot partition and GRUB reinstall problem

Оригинальный пост, последняя страница, первый описанный вариант.

Загружаемся с 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, efi раздел в /dev/sda1:

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

Прописываем пункт в меню 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/efi --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

или

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

update-grub