Bootloader? Не, не слышали... Загрузка через EFISTUB без костылей

Опрос

Пользуетесь ли вы UEFI загрузкой?
Да, это стильно-модно-молодежно
Пользовался бы, но нет железа с поддержкой
Нафик оно надо? У меня и так все хорошо
А?
Воды там много, а как сделать - 0.

На данный момент правильно - это поставить загрузчик, собственно в Вики другого варианта не предлагается. Красивая заставочка в подарок.
Занятно. Так должно быть? Вряд ли.

BootCurrent: 0006
Timeout: 1 seconds
BootOrder: 0001,0002,0000,0006
Boot0000* Arch Linux    HD(1,194,2000,cee0ec63)File(\vmlinuz-linux)r.o.o.t.=.U.U.I.D.=.c.9.6.4.6.f.f.b.-.1.d.8.d.-.4.c.8.2.-.a.5.6.f.-.2.f.b.1.b.0.7.c.a.4.d.5. .r.o. .r.o.o.t.f.s.t.y.p.e.=.e.x.t.4. .a.d.d._.e.f.i._.m.e.m.m.a.p. .i.n.i.t.r.d.=.\.i.n.i.t.r.a.m.f.s.-.l.i.n.u.x...i.m.g...
Boot0001* Hard Drive    BIOS(2,0,00)
Boot0002* CD/DVD Drive  BIOS(3,0,00)P2: ATAPI   iHAS124   Y       .
Boot0006* UEFI: silicon -power 0.00     ACPI(a0341d0,0)PCI(13,2)USB(3,0)HD(1,194,2000,cee0ec63)

Откуда там точки образовались?
Это не вода, всё же там статья, а не хауту.
Это не точки, это UTF-16LE, обычная форточная кодировка. То ли параметры в неправильной кодировке записаны, то ли отображаются криво.
Что efibootmgr записал, то и показано. Про кодировку - ни звука, в том числе в упомянутой статье.
Natrio
Утверждают, что собранное с поддержкой EFI ядро (ядро Арч уже собрано так) выступает при EFI-загрузке как EFI-приложение, и потому МОЖЕТ САМО загрузить initrd, если его ПРАВИЛЬНО прописать в параметрах, которые всё таки можно ему передать, если делать это правильно
Подсовывая ядро для запуска вместо загрузчика (в моем случае вместо груб.ефи я подсунул ядро.ефи) нам не скормить ядру никаких параметров запуска (а через загрузчик- запросто). Соотв. и не дать понять ядру, где инитрам. Следовательно, надо компилить с указанием.
wau
Подсовывая ядро для запуска вместо загрузчика (в моем случае вместо груб.ефи я подсунул ядро.ефи) нам не скормить ядру никаких параметров запуска (а через загрузчик- запросто). Соотв. и не дать понять ядру, где инитрам. Следовательно, надо компилить с указанием.
Повторяю ещё раз – читайте статью! Там написано, что образ ядра, собранного с поддержкой EFI, содержит обёртку, выступающую как EFI-приложение. Это приложение ПРИНИМАЕТ ПАРАМЕТРЫ и грузит initrd из файла с помощью функций UEFI, и только после этого стартует само ядро.

Никакой перекомпиляции не требуется. Все параметры можно прописать либо в NVRAM, либо в скрипте, который будет выполняться через EFI-шелл.

И нет, я не считаю такой способ загрузки более удобным, чем привычный GRUB, которым я и пользуюсь :)
Просто пересказываю, что выяснил – разработчики ядра приняли все меры к тому, чтобы ядро Linux при желании МОЖНО было даже "подсунуть вместо загрузчика" UEFI.
Natrio
Никакой перекомпиляции не требуется. Все параметры можно прописать либо в NVRAM, либо в скрипте, который будет выполняться через EFI-шелл.

Указанным здесь способом не удаётся. Придётся делать как рекомендуют в Gentoo Wiki.
elsonador
Автор, а автор? Ты сам-то свою инструкцию пробовал?
Нет, это полет моей больной фантазии %)

elsonador
Я краем уха слышал, что UEFI does not support loading a separate initramfs. Перевод нужен?
Что, простите? UEFI вообще знать не знает ни про какие initramfs, ядра и т.п. творения создателей ОС. Он знает, как найти и передать управление на UEFI-загрузчик с прописанными в NVRAM параметрами. Все остальное не его дело. Если имелось в виду, что ядро не может загрузить образ initramfs с другого раздела где ФС, которую не поддерживает ядро, то, отчасти, это верно. Можно собрать ядро с поддержкой этой ФС, но тогда смысла в initramfs вообще нету. Либо добавить драйвер ext4 в UEFI (но такой вариант я не пробовал и не уверен, что ядро его поддерживает).

Если бы внимательно читали мою заметку, то поняли бы, что и ядро, и initramfs находятся на разделе UEFI.
Последовательность загрузки:
1. UEFI считывает BootXXXX запись и достает из нее путь к загрузчику-ядру (/vmlinuz-linux) и параметры для него (initrd=/initramfs-linux.img root=PARTUUID=087e1626-ccc5-468a-ab8d-ca02f8f04d14 ro add_efi_memmap)
2. UEFI передает управление ядру
3. Ядро подгружает initramfs с раздела UEFI (initrd=/initramfs-linux.img)
4. Теперь ядро спокойно может читать rootfs с ext4 (или что там у вас) и грузиться дальше

Хотя бы рассказали, что именно у вас не работает.

elsonador
Откуда там точки образовались?
Так и должно быть. Там UTF-16.

Natrio
Просто пересказываю, что выяснил – разработчики ядра приняли все меры к тому, чтобы ядро Linux при желании МОЖНО было даже "подсунуть вместо загрузчика" UEFI.
Как раз про это и заметка.
farwayer
ядро не может загрузить образ initramfs с другого раздела где ФС, которую не поддерживает ядро
Если бы внимательно читали мою заметку, то поняли бы, что и ядро, и initramfs находятся на разделе UEFI.
Ну дык ядро и встроенной поддержки FAT не имеет. Как оно будет грузить initramfs?

farwayer
Хотя бы рассказали, что именно у вас не работает.
Чёрный экран и загружается UEFI shell, который вторым номером в списке на загрузку. Так что даже до initramfs дело не доходит. На всякий случай: вариант с PARTUUID - аналогично.

farwayer
Так и должно быть. Там UTF-16.
А вдруг не должно?
Люди пишут, что после одного из обновлений ядра загрузка efistub на некоторых материнских платах тупо отвалилась и до сих пор не работает.
 
Зарегистрироваться или войдите чтобы оставить сообщение.