LINUX.ORG.RU

Загрузка ядра напрямую через UEFI

 , , , ,


1

1

Есть ноут с Arch на борту, есть UEFI, но когда ставил не захотел заморачиваться и сделал загрузку через grub2.
Теперь хочу выкинуть grub и обойтись средствами uefi. Отсюда вопросы:
1. EFISTUB или systemd-boot? Чем они отличаются? Вопрос снят - EFISTUB это собственно сам механизм загрузки, а systemd-boot предоставляет графическое меню для загрузки
2. В случае с граб, если мне нужно (на этапе загрузки) загрузиться в single mode или блэклистнуть какой-либо модуль ядра я просто пишу прям в граб нужные параметры и загружаюсь. Как то-же самое проделать в EFISTUB или systemd-boot?
3. Есть ли какие-либо ограничения или подводные камни у такого способа загрузки?

★★

Последнее исправление: man_of_motley (всего исправлений: 2)
Ответ на: комментарий от anonymous

Что бы не терять вот этот функционал:

если мне нужно (на этапе загрузки) загрузиться в single mode или блэклистнуть какой-либо модуль ядра я просто пишу прям в граб нужные параметры и загружаюсь.

kostik87 ★★★★★
()
Ответ на: комментарий от kostik87

Можно например в редких специальных случаях переключать режим в биос и стартовать через grub.

anonymous
()

EFISTUB это ядро в виде приложения EFI, позволяет загружаться в него напрямую из UEFI. Предварительно нужно зарегистрировать его в прошивке UEFI, записав там также параметры ядра. При загрузке их изменить нельзя, но можно сделать несколько записей с разными параметрами. Проблема в том, что прошивки UEFI не предоставляеют удобного и настраивомого интерфейса для их выбора при загрузке. Для этого есть такие загрузчики, как refind и systemd-boot. Это EFI-приложения, предоставляющие графический интерфейс для загрузки других EFI-приложений (EFISTUB-ядер, например. Или загрузчика винды).

equeim ★★
()
Ответ на: комментарий от equeim

То есть с помощью systemd-boot я смогу получить этот функционал:

В случае с граб, если мне нужно (на этапе загрузки) загрузиться в single mode или блэклистнуть какой-либо модуль ядра я просто пишу прям в граб нужные параметры и загружаюсь

Верно?

man_of_motley ★★
() автор топика
Ответ на: комментарий от equeim

В случае с systemd-boot все просто. Устанавливаешь его согласно wiki, он скопирует себя на EFI-раздел и пропишет в прошивке. Далее копируешь туда же ядро (а лучше напрямую примонтировать EFI-раздел в /boot) и настраиваешь systemd-boot на его загрузку с нужными опциями.

equeim ★★
()
Ответ на: комментарий от man_of_motley

Делай себе systemd-boot. 2. Нажимаешь «e» и редактируешь командную строку ядра как хочешь 3. Да вроде никаких проблем. Может только для добавления *indows в меню загрузки придётся вручную его настроить. У меня только линуксы и вообще проблем нет.

Necrogrinder
()
Ответ на: комментарий от Necrogrinder

для добавления *indows в меню загрузки придётся вручную его настроить

Это не нужно. Спасибо за ответ.

man_of_motley ★★
() автор топика

а systemd-boot предоставляет графическое меню для загрузки

Технически говоря, systemd-boot это как GRUB2, но очень ограниченно. Например, с ним весь /boot должен быть на ESP. Ну и вообще очень мало умеет, хотя для нетребовательного пользователя неплох, если этот пользователь готов править конфиг руками.

anonymous
()
Ответ на: комментарий от slon

как-как, у меня комп биосом может грузиться с двд, а с файла на диске (исошки) не умеет

anonymous
()

Собираешь ведро с поддержкой всех нужных опций, компилируешь, генерируешь initrd, копируешь vmlinuz в $esp/EFI/Arch/bootx64.efi, с помощью efibootmgr делаешь пункт загрузки и там же указываешь параметры загрузки ядра. На арче- и гентовики всё есть, почитай.

sudopacman ★★★★★
()

Тебе не нужен systemd-boot, так как это такая же прослойка между ядром и загрузчиком, как и grub. Инструкции по ссылке у меня в профиле.

r3lgar ★★★★★
()
Ответ на: комментарий от Falcon-peregrinus

Зачем кастовать, если я подписан на теги?

r3lgar ★★★★★
()
Ответ на: комментарий от man_of_motley

Можно например через UEFI Shell это делать, при необходимости. Но будет неудобнее, да. Хотя, не так и часто возникает данная потребность.

Andrew ★★★
()
Ответ на: комментарий от man_of_motley

UEFI Shell — это отдельное приложение EFI, которое представляет из себя консоль, с помощью которой можно рулить добавленными записями, редактить конфиги и играть в косынку.

Andrew ★★★
()
Последнее исправление: Andrew (всего исправлений: 2)
Ответ на: комментарий от man_of_motley

efibootmgr умеет, можно через EFI Shell, если он у тебя есть, но это нужно раз в пять лет делать на лету, так что тебе efibootmgr хватит за глаза.

r3lgar ★★★★★
()
Ответ на: комментарий от man_of_motley

Эти опции можно вкомпилить прямо в ядро. Но через efibootmgr тоже можно.

sudopacman ★★★★★
()

Всем спасибо, грузанулся через UEFI Shell - все работает, сейчас буду создавать запись в EFI vars.

man_of_motley ★★
() автор топика
Ответ на: комментарий от man_of_motley

Вобщем кратенький отчет, вдруг кто наткнется на эту тему:
Ядро не пересобирал, в Arch оно уже собрано с нужными флагами.
esp я еще при установке монтировал в /boot
Сначала зашел в UEFI Shell и попробовал загрузиться оттуда

vmlinuz-linux root=UUID=bd7203c1-a2e7-4797-8d67-3d5d698a03b2 initrd=initramfs-linux.img rw quiet
Можно создать на разделе esp файл boot.nsh с вышеприведенным содержимым (если понадобится добавить параметр ядра - заходим в Shell и с помощью edit правим все что нужно).Хинт - если назвать файл startup.nsh, то он он будет автоматически грузиться при старте UEFI Shell c задержкой в 5 секунд.
Когда убедились что все работает, загружаемся в UEFI систему (в свою инсталяцию или в livecd):
efibootmgr -d /dev/sda -p 1 -c -L "Arch Linux" -l 'vmlinuz-linux' -u "root=UUID=bd7203c1-a2e7-4797-8d67-3d5d698a03b2 rw initrd=initramfs-linux.img quiet"
Создастся запись в UEFI.
Когда убедимся что все работает удаляем граб и удаляем запись для загрузки граба из UEFI.
Happy End.

man_of_motley ★★
() автор топика
Ответ на: комментарий от equeim

Сколько не видел прошивок UEFI, все позволяли по нажатию какой-нибудь клавиши вызвать меню загрузки. А в этом меню и загрузочные пункты из NVRAM-переменных BootXXXX, и автоматические загрузочные пункты UEFI (\efi\boot\bootx64.efi с FAT-разделов и iso9660 CD/DVD), и легаси пункты (валидные загрузочные сектора с дисков и CD/DVD).

Во всех прошивках, которые видел, также был UI для изменения последовательности пунктов. В некоторых даже был UI для добавления своего пункта из файла с FAT раздела, с возможность указать текстовое описание и параметры командной строки.

iliyap ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.