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

Опрос

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

efibootmgr -c -d /dev/sdd -p 1 -l \vmlinuz-linux -L "Arch Linux" -u "initrd=\initramfs-linux.img root=/dev/disk/by-partuuid/0fbabe60-3f42-47ea-8702-9fb4bdaa7d13 ro add_efi_memmap"

Загрузилось успешно, только EFI раздел я не стал указывать в fstab.

Время запуска на глаз гораздо меньше, чем с GRUB, учитывая, что ведро пускается с флешки, а основная система на SSD.

Любые другие варианты у меня не работают. Завтра пробую на второй машине.
elsonador
Ну дык ядро и встроенной поддержки FAT не имеет. Как оно будет грузить initramfs?
Да, верно. Но подгрузкой initramfs занимается EFI STUB, который почти наверняка делает это через функции EFI_FILE_PROTOCOL в UEFI, такие как Open() и Read(). По крайней мере, я бы делал именно так. Таким образом, если в UEFI добавить драйвер чтения ext4, то загружать initram можно было бы даже с другого раздела с этой ФС. Но такой способ EFI STUB не поддерживает - initram должен находиться на разделе UEFI. Да и смысла оставлять initram на другом разделе, если ядро на разделе UEFI, нет.

elsonador
farwayer
Так и должно быть. Там UTF-16.
А вдруг не должно?
Прошу прощения, там на самом деле не UTF-16, а его предшественник - UCS-2. Но смысла это не меняет.
Кстати, для тех, кому религия не позволяет хранить ядро и initram в корне UEFI раздела, а делать костыли с systemd, cron'ом или хуком mkinitcpio для синхронизации ядра при его обновлении не хочется, есть еще один способ.
Можно хранить ядро в ESP\EFI\arch, как описано в вики и спецификации UEFI, и монтировать этот путь на /boot через mount --bind.
elsonador
Ну дык ядро и встроенной поддержки FAT не имеет. Как оно будет грузить initramfs?
Грузить initramfs будет не само ядро, а встроенное в образ ядра EFI-приложение, которое пользуется для доступа к диску и ФС не драйверами ядра, а драйверами UEFI. Это же приложение передаст ядру параметры.
Вторая машина завелась. Слэши строго обратные, иначе не работает.
Правильно, в статье тоже написано, что слэши строго обратные, потому что их будет читать EFI-приложение, а там синтаксис дос-образный.
Начиная с версии ядра 3.8.0 можно использовать как прямые, так и обратные слэши.
farwayer
Начиная с версии ядра 3.8.0 можно использовать как прямые, так и обратные слэши.

Путь до ядра считывает UEFI.
elsonador
Путь до ядра считывает UEFI.
Да, но efibootmngr у меня сам вставляет нужный слэш, как бы он не был написан. Возможно, в старых версиях этого не происходило.
у меня ESP расположена на флешке, и монтирую её в папку /boot. удобно и просто. не каких лишних телодвижений
$ ls /boot/
initramfs-linux-ck-fallback.img  initramfs-linux-ck.img  vmlinuz-linux-ck
 
Зарегистрироваться или войдите чтобы оставить сообщение.