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

Опрос

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

.-.
._refit
._tools

каждый по 4.1 кб.
Напомню, у меня макбук мид-2013г. При загрузке белый экран, потом рефит, потом он грузит Arch. Хочется же избавиться и от рефита, и от белого экрана.
.-.
Mac OS X        	2╟Б
ATTR; иЪБ≤9≤9com.apple.quarantine0002;520f6a63;Safari;DA38F353-CACC-40EB-A152-CF95C4FBB69F
This resource fork intentionally left blank   
ЪЪ
._refit

Mac OS X        	2╟Б
ATTR; иЪБ≤9≤9com.apple.quarantine0002;520f6a63;Safari;DA38F353-CACC-40EB-A152-CF95C4FBB69F
This resource fork intentionally left blank   
ЪЪ

._tools
Mac OS X        	2╟Б
ATTR; иЪБ≤9≤9com.apple.quarantine0002;520f6a63;Safari;DA38F353-CACC-40EB-A152-CF95C4FBB69F
This resource fork intentionally left blank   
ЪЪ

Что-то здесь не то - одна строка не может весить 4кб. Содержание файлов одинаковое.
есть еще следы маковского буткампа Volumes/BOOTCAMP/

/EFI/.fseventsd/fseventsd-uuid, содержащий одну строку
E2B20960-D1F7-40DB-B44E-DFEA2F4BE5C0

Понятно, что и в тех трех файлах, и в этом указаны UID, не соответствующие текущим - оно и понятно, все, кроме ефи-раздела неоднократно форматировались с момента сноса мак-оси.
сам диск нарезан на 3 раздела -

sda 8:0 0 233,8G 0 disk
├─sda1 8:1 0 200M 0 part /run/media/memfis/EFI
├─sda2 8:2 0 8,9G 0 part /
└─sda3 8:3 0 224,7G 0 part
└─sda3_crypt 254:0 0 224,7G 0 crypt /home
efi
/ 9585e918-991a-4041-a2c1-1f3ee338bccc
шифрованный
Какие будут гипотезы?
elsonador
Пойдёт.

А не пошло. Методика эксперимента -
1. mount /dev/sda1 /mnt
2. mkdir /mnt/EFI/rez
3. cp /boot/vmlinuz-linux /mnt/EFI/rez/grubx64.efi
4. cp /boot/*.img /mnt/EFI/rez/
5. reboot

Что видим? Рефит нам показывает возможность загрузки с rez и того, что было. При загрузке с rez действительно начинает загрузку ядра с последующим кернелпаник по теме отсутствия vfs.

Выводы - экспериментировать можно, это вполне безопасно. Рефит сам сканирует директории и предлагает варинты. Собственно и сам рефит представляет собой файл refit.efi и если удалось бы запустить ядро, то я бы двинулся дальше, заменив и рефит ядром.
Автор, а автор? Ты сам-то свою инструкцию пробовал? Я краем уха слышал, что UEFI does not support loading a separate initramfs. Перевод нужен?

Но на всякий случай проверено: не заводится, да, собственно, и не должно. initramfs требуется внедрить в ядро, которое и надо загружать. Иначе - привет загрузчик, ядро умеет грузить только себя.
elsonador
UEFI does not support loading a separate initramfs.
Как-то убого получается... Это точно?

initramfs требуется внедрить в ядро, которое и надо загружать.
Не совсем. Требуется вкомпилить в ядро нужные для доступа к ФС модули, как это делается, к примеру, в Slackware по-умолчанию. В этом случае никакого initramfs уже не нужно.

ядро умеет грузить только себя.
Не умеет ядро грузить себя :)
Ядро умеет стартовать init, Но для этого ему нужен доступ к корневой ФС, и если нужные для этого доступа модули не вкомпилены заранее, роль корневой ФС ложится на initramfs, который, разумеется, должен быть УЖЕ в памяти.

Иначе - привет загрузчик
Ну да, выходит так. Я не в курсе, как грузятся фряха, макось и другие, но насколько я помню форточки, там процесс загрузки ещё более впечатляющ – загрузчик читает не только ФС, он читает реестр, и загружает из файлов по списку не только ядро, но и все начально необходимые драйверы. Так что если UEFI не научили читать реестр, с загрузкой форточек БЕЗ загрузчика он уж точно не справится.
Natrio
Как-то убого получается... Это точно?
Более чем Хотя там же приводится вариант
echo 'root=UUID=34073059-bdf0-4b4a-9d85-16f3afdb0932 ro rootfstype=ext4 add_efi_memmap initrd=\EFI\gentoo\initramfs-gentoo.img' | iconv -f ascii -t ucs2 | efibootmgr -c -g -d /dev/sdb -p 1 -L "Gentoo" -l '\EFI\gentoo\vmlinuz-gentoo.efi' -@ -
Я проверю и его.

Natrio
Требуется вкомпилить в ядро нужные для доступа к ФС модули, как это делается, к примеру, в Slackware по-умолчанию. В этом случае никакого initramfs уже не нужно.
Не знаю, что точно должно быть собрано в ядро. Метод тыка не подходит, каждый день ядра не компилирую, собранное по инструкции не работает.
efibootmgr -c -d /dev/sda -p 1 -l '\vmlinuz-linux' -L "Arch Linux" -u "root=UUID=087e1626-ccc5-468a-ab8d-ca02f8f04d14 ro rootfstype=ext4 add_efi_memmap initrd=\initramfs-linux.img"
Пункт загрузки создался.
Не работает, в принципе и не должно.
Утверждают, что собранное с поддержкой EFI ядро (ядро Арч уже собрано так) выступает при EFI-загрузке как EFI-приложение, и потому МОЖЕТ САМО загрузить initrd, если его ПРАВИЛЬНО прописать в параметрах, которые всё таки можно ему передать, если делать это правильно :)

Вот статья: http://habrahabr.ru/post/197438/ , ищите по слову initrd
 
Зарегистрироваться или войдите чтобы оставить сообщение.