Установка GRUB2 и загрузка Gentoo через EFI
ПРЕДУПРЕЖДЕНИЕ! Всё, что вы делаете со своим компьютером вы делаете на свой страх и риск. Эта заметка создавалась с целью сохранения накопленного опыта для себя. Уж очень много времени убил на поиск рабочего варианта. Итак!
Во-первых, при разметке диска нужно создать раздел с файловой системой FAT. На нём и будут располагаться ядро системы или Grub 2. Этот раздел нужно подключить в /boot/EFI. Хотя я в своё время сделал весь раздел /boot в FAT32. Далее рассматривается именно этот вариант.
Что нам понадобится:
- sys-boot/grub - непосредственно GRUB2. Не забываем включить efi-64 в GRUB_PLATFORMS в файле /etc/portage/make.conf;
- sys-boot/os-prober - нужен, если мы хотим чтобы GRUB2 находил что-то ещё, кроме ядер Linux, например, загрузчик Windows;
- sys-boot/efibootmgr - утилита для настройки EFI.
После сборки нужных пакетов устанавливаем 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. Главное правильно указать пути к файлам загрузчиков, например:
\EFI\BOOT\BOOTX64.EFI
;\EFI\gentoo\grubx64.efi
;\EFI\fedora\grubx64.efi
;\EFI\fedora\shimx64.efi
.
Обратите внимание, что заметки могут обновляться со временем. Это может быть как исправление найденных ошибок, так и доработка содержания с целью более полного раскрытия темы. Информация об изменениях доступна в репозитории на github. Там же вы можете оставить в Issue ваши замечания по данной заметке.
Если данная заметка оказалась вам полезной, можете поблагодарить автора финансово.