Памятка по установке GRUB2 и загрузке через EFI в Gentoo x64

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

Уж очень много времени убил на поиск рабочего варианта. Итак!

Во-первых, при разметке диска нужно создать раздел с файловой системой 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 и грузим рабочее ядро. Если грузить ядро напрямую, то загрузка компьютера производится очень быстро!!!