Сайт FSA
15.12.2014

Установка GRUB2 и загрузка Gentoo через EFI

ПРЕДУПРЕЖДЕНИЕ! Всё, что вы делаете со своим компьютером вы делаете на свой страх и риск. Эта заметка создавалась с целью сохранения накопленного опыта для себя. Уж очень много времени убил на поиск рабочего варианта. Итак!

Во-первых, при разметке диска нужно создать раздел с файловой системой FAT. На нём и будут располагаться ядро системы или Grub 2. Этот раздел нужно подключить в /boot/EFI. Хотя я в своё время сделал весь раздел /boot в FAT32. Далее рассматривается именно этот вариант.

Что нам понадобится:

После сборки нужных пакетов устанавливаем GRUB2:

grub2-install --target=x86_64-efi --efi-directory=/boot

Не забываем положить нужные ядра в /boot. После этого можно сгенерировать конфиг для grub2:

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

Проверим, всё ли в порядке c EFI:

# efibootmgr -v
BootCurrent: 0000
Timeout: 1 seconds
BootOrder: 0000,0001
Boot0000*GRUB2 HD(1,800,f3800,927dfa8b-a8da-4a33-ae18-3cbab9449dbb)File(\EFI\gentoo\grubx64.efi)
Boot0001* Windows Boot Manager HD(1,800,96000,b0a33380-d8c1-4402-b7da-7d1214ebfd4c)
  File(\EFI\Microsoft\Boot\bootmgfw.efi)WINDOWS.........x...B.C.D.O.B.J.E.C.T.=.{.9.d.e.a.8.6.2.c.
  -.5.c.d.d.-.4.e.7.0.-.a.c.c.1.-.f.3.2.b.3.4.4.d.4.7.9.5.}...s................

У меня, почему-то, после первой установки был указан тот же диск, что и для Windows. В любом случае можно удалить неугодные записи через:

efibootmgr -b XXXX -B

и создать угодную нам. ВНИМАНИЕ! Главное не перестарайтесь и не полудаляйте что-нибудь ценное.

efibootmgr -c -d /dev/sdb -p 1 -L "GRUB2" -l \\EFI\\gentoo\\grubx64.efi

Двойных слэшей можно не делать, если взять имя файла в кавычки. Обратите внимание на направление слэша - оно не типичное для *nix систем.

Если лень ждать каждый раз загрузку GRUB и выбирать ядро, можно скопировать нужную версию ядра в любую папку в /boot/EFI и указать путь к ней:

efibootmgr -c -d /dev/sdb -p 1 -L "Gentoo Linux" -l \\EFI\\gentoo\\vmlinuz.efi

В результате получим что-то вроде:

# efibootmgr -v
BootCurrent: 0000
Timeout: 1 seconds
BootOrder: 0000,0002,0001
Boot0000* Grub 2 HD(1,800,f3800,927dfa8b-a8da-4a33-ae18-3cbab9449dbb)File(\EFI\gentoo\grubx64.efi)
Boot0001*Windows Boot Manager HD(1,800,96000,b0a33380-d8c1-4402-b7da-7d1214ebfd4c)
  File(\EFI\Microsoft\Boot\bootmgfw.efi)WINDOWS.........x...B.C.D.O.B.J.E.C.T.=.{.9.d.e.a.8.6.2.c.
  -.5.c.d.d.-.4.e.7.0.-.a.c.c.1.-.f.3.2.b.3.4.4.d.4.7.9.5.}...s................
Boot0002* Gentoo Linux HD(1,800,f3800,927dfa8b-a8da-4a33-ae18-3cbab9449dbb)File(\EFI\gentoo\vmlinuz.efi)

Проверяем что пути к файлам указаны верно, слэш в нужную сторону (я убил некоторое время пока пытался использовать разделитель “/”, потом ещё немного времени, с тем, чтобы правильно прописался “".

Если что-то сделали не так (кстати, нужно определённым образом сконфигурировать ядро, об этом позже), то просто выбираем в меню загрузки GRUB2 и грузим рабочее ядро. Если грузить ядро напрямую, то загрузка компьютера производится очень быстро!!!

Дополнение из 2022 года. Кроме утилиты efibootmgr редактировать загрузочные записи можно непосредственно в BIOS Setup. Главное правильно указать пути к файлам загрузчиков, например:


Обратите внимание, что заметки могут обновляться со временем. Это может быть как исправление найденных ошибок, так и доработка содержания с целью более полного раскрытия темы. Информация об изменениях доступна в репозитории на github. Там же вы можете оставить в Issue ваши замечания по данной заметке.


Если данная заметка оказалась вам полезной, можете поблагодарить автора финансово.