farwayer |
|
Темы:
12
Сообщения:
181
Участник с: 30 апреля 2010
|
elsonadorДа, но efibootmngr у меня сам вставляет нужный слэш, как бы он не был написан. Возможно, в старых версиях этого не происходило. |
farwayer |
|
Темы:
12
Сообщения:
181
Участник с: 30 апреля 2010
|
Начиная с версии ядра 3.8.0 можно использовать как прямые, так и обратные слэши. |
farwayer |
|
Темы:
12
Сообщения:
181
Участник с: 30 апреля 2010
|
Кстати, для тех, кому религия не позволяет хранить ядро и initram в корне UEFI раздела, а делать костыли с systemd, cron'ом или хуком mkinitcpio для синхронизации ядра при его обновлении не хочется, есть еще один способ. Можно хранить ядро в ESP\EFI\arch, как описано в вики и спецификации UEFI, и монтировать этот путь на /boot через mount --bind. |
farwayer |
|
Темы:
12
Сообщения:
181
Участник с: 30 апреля 2010
|
elsonadorДа, верно. Но подгрузкой initramfs занимается EFI STUB, который почти наверняка делает это через функции EFI_FILE_PROTOCOL в UEFI, такие как Open() и Read(). По крайней мере, я бы делал именно так. Таким образом, если в UEFI добавить драйвер чтения ext4, то загружать initram можно было бы даже с другого раздела с этой ФС. Но такой способ EFI STUB не поддерживает - initram должен находиться на разделе UEFI. Да и смысла оставлять initram на другом разделе, если ядро на разделе UEFI, нет. elsonadorПрошу прощения, там на самом деле не UTF-16, а его предшественник - UCS-2. Но смысла это не меняет.farwayerА вдруг не должно? |
farwayer |
|
Темы:
12
Сообщения:
181
Участник с: 30 апреля 2010
|
elsonadorНет, это полет моей больной фантазии %) elsonadorЧто, простите? 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Как раз про это и заметка. |
farwayer |
|
Темы:
12
Сообщения:
181
Участник с: 30 апреля 2010
|
На хабре вышла довольно подробная статья про загрузку через EFI Boot Stub. |
farwayer |
|
Темы:
12
Сообщения:
181
Участник с: 30 апреля 2010
|
Первым пунктом же https://wiki.archlinux.org/index.php/Openbox_Themes_and_Apps#Application_launchers ... |
farwayer |
|
Темы:
12
Сообщения:
181
Участник с: 30 апреля 2010
|
Прошу прощения, что некропощу в своей же теме, но есть дельный совет: никогда не подрубайте холодильник к тому же удлинителю, что и комп! :) |
farwayer |
|
Темы:
12
Сообщения:
181
Участник с: 30 апреля 2010
|
NatrioЕсли выключена обратная совместимость с BIOS - то да. У меня -3 секунды к загрузке. Но вообще это зависит от материнки и конкретной реализации UEFI. Ускорение достигается как раз за счет быстрой инициализации устройств. NatrioЭто от недосыпа было... Когда перечитывал, понял, какую фигню написал :) cucullusА незачем. Просто новый комп настраивал и решил поковырять. Чуть быстрее загружаться стал. Минус один пакет в системе (syslinux). cucullusВижу, ни у одного меня свободный график ;) Присоединился бы, но предпочитаю это дело real2real xD |
farwayer |
|
Темы:
12
Сообщения:
181
Участник с: 30 апреля 2010
|
*Предполагается, что ты знаком с основами UEFI и принципом загрузки ОС через него. Это не мануал, а кратко скомпонованные факты. Если не знаешь, как сделать GPT таблицу разделов или отформатировать EFI раздел - кури вики. *В заметке не будет пространных размышлений о плюсах и минусах UEFI - думайте сами, решайте сами, иметь или не иметь (с). Итак, приступим. Что нам нужно, для того, чтобы загрузиться через UEFI (кроме совместимой материнки)?
Описывать я буду как раз 3 способ. Что нам советует вики для 2 и 3 случая? Только не спеши повторять!
Объединяет эти 3 способа только то, что они - костыли! Это не наш метод, бро! Ты ведь не следовали этим советам, правда? ;) А что, если сгрузить ядро в корень ESP раздела и монтировать его как /boot, прописав его в BootXXXX запись не как \EFI\arch\vmlinuz-arch.efi, а \vmlinuz-linux? Тогда при обновлении ядра, оно автоматически сгрузиться на ESP раздел, без каких-либо танцев с бубном. А будет ли это работать? Спека по UEFI (12.3.1.3 Directory Structure) говорит, что бинарники должны располагаться в \EFI\${VENDOR}, иначе возможны коллизии имен. Но мы-то сами знаем, что и где у нас лежит на ESP разделе! Как-нибудь уж сами разберемся с коллизиями, чай не маленькие дети. Тест на 2 материнках от разных производителей (Asus P8Z77-I DELUXE и Gigabyte B75-N) показал, что способ вполне себе рабочий. В самом деле: нафик UEFI проверять путь на валидность? Если кто-то его прописал - значит попробуем загрузить! Итак, план действий:
UPD: На хабре вышла довольно подробная статья про загрузку через EFI Boot Stub. UPD2: Кстати, для тех, кому религия не позволяет хранить ядро и initram в корне UEFI раздела, а делать костыли с systemd, cron'ом или хуком mkinitcpio для синхронизации ядра при его обновлении не хочется, есть еще один способ. Можно хранить ядро в ESP\EFI\arch, как описано в вики и спецификации UEFI, и монтировать этот путь на /boot через mount --bind. |