Что такое vmlinuz.efi?

5

Да, я знаю, что это ядро;)

Я видел этот файл, когда просматривал 64-битный ISO от 13.04. Я работаю над их ремикшированием на свою флешку. Тем не менее, я хочу, чтобы мой ремикс имел обновленное ядро ​​по сравнению с CD. Это означает, что мне нужно будет сделать vmlinux.efi.

Конечно, чтобы иметь возможность сделать это, я должен знать, что это такое.

Это просто обычное старое 64-битное ядро? Это, пожалуй, заглушка EFI?

Абонентский патч не имеет смысла, поскольку он загружен из GRUB в EFI и даже не расположен в EFI / BOOT. Может быть, это просто проверка будущего, если это заглушка EFI? В статье, которую я нашел в сообществе wiki, сказано что-то вроде строк «это называется vmlinuz.efi», потому что это 64-разрядный. Это тоже кажется немного странным. Я имею в виду, что это помогает различать, но лучшее имя могло бы быть выбрано, если это не загрузочный EFI.

Одна вещь, которую я нахожу странной, заключается в том, что Isolinux и GRUB загружают ее так же, как если бы это было просто ядро ​​... поэтому его фактическая цель немного загадочна. Можно ли загрузочные заглушки EFI загружаться как обычные ядра?

Ну, дело в том, что я не могу найти дискуссию о том, почему это имя было выбрано и что именно. Итак, здесь надеемся, что кто-то здесь знает, что это такое и как он работает.

EDIT:

Информация / MD5 всех ядер с компакт-дисков Ubuntu, Kubuntu, Xubuntu и Lubuntu:

DISTRO: lubuntu
vmlinuz: Linux kernel x86 boot executable bzImage, version 3.8.0-19-generic ([email protected]) #29-Ubuntu SMP Wed Apr 17 18, RO-rootFS, swap_dev 0x5, Normal VGA
deacc3c3a21beb4913c43a00bb6d5e01  vmlinuz
DISTRO: kubuntu
vmlinuz: Linux kernel x86 boot executable bzImage, version 3.8.0-19-generic ([email protected]) #29-Ubuntu SMP Wed Apr 17 18, RO-rootFS, swap_dev 0x5, Normal VGA
deacc3c3a21beb4913c43a00bb6d5e01  vmlinuz
DISTRO: xubuntu
vmlinuz: Linux kernel x86 boot executable bzImage, version 3.8.0-19-generic ([email protected]) #29-Ubuntu SMP Wed Apr 17 18, RO-rootFS, swap_dev 0x5, Normal VGA
deacc3c3a21beb4913c43a00bb6d5e01  vmlinuz
DISTRO: ubuntu
vmlinuz.efi: Linux kernel x86 boot executable bzImage, version 3.8.0-19-generic ([email protected]) #29-Ubuntu SMP Wed Apr 17 18, RO-rootFS, swap_dev 0x5, Normal VGA
1919b5acd184538ecb978f6361f98bf1  vmlinuz.efi

Один из Ubuntu ISO явно отличается. Я начинаю думать, что это должно быть загрузочное ядро ​​EFI, но все равно ничего не найдено, чтобы подтвердить или опровергнуть его.

    
задан Chuck R 09.08.2013 в 12:58
источник

1 ответ

5

Загрузочный загрузчик EFI представляет собой компонент ядра, а не отдельную программу. Когда загрузочный загрузчик EFI включен в ядро, этот файл ядра выглядит как обычная программа EFI для EFI, но он по-прежнему является нормальным ядром, которое может быть загружено обычными загрузчиками Linux - GRUB, LILO, ELILO, SYSLINUX, и т. д. Штук EFI доступен с ядра 3.3.0 и AFAIK, все ядра Ubuntu, созданные с тех пор, включили эту функцию.

Нет закона, который гласит, что ядра с загрузчиками EFI должны иметь имена файлов, которые заканчиваются на .efi . Фактически, ядра, установленные на жестком диске, не имеют расширения .efi filename; это кажется уникальным для ядра на установочном диске, по крайней мере, в Ubuntu. Однако оболочка EFI не запускает программу, если она не имеет расширения .efi . Таким образом, давая ядру, имя файла предоставляет одно средство восстановления и тестирования для продвинутых пользователей, которые в противном случае могли бы быть недоступны для них, а именно, вручную запустить ядро ​​из оболочки EFI. Я не могу быть уверен, но я подозреваю, что разработчики Ubuntu теперь именовали свои ядра таким образом, чтобы предоставить это средство резервного копирования для запуска ядра или, возможно, просто означать, что он содержит поддержку EFI stub. OTOH, в 32-разрядном ядре установочного диска Ubuntu отсутствует расширение .efi , но включает поддержку EFI stub. Мое подозрение в том, что разработчики Ubuntu просто не назову их ядра последовательно.

Можно запустить приложение EFI (например, ядро ​​Linux с поддержкой EFI stub) из любого места на диске. Подкаталог «casper» не является местом, где обычно загружаются загрузчики, но может запускать программы EFI.

Какой бы источник вы ни читали, говоря, что 64-битное ядро ​​имеет расширение .efi , потому что это 64-битное ядро ​​неправильно. На практике 32-разрядная версия Ubuntu имеет ядро, которому не хватает этого расширения, поэтому в мире Ubuntu существует корреляция, но нет причинно-следственной связи. В Linux, как правило, расширение .efi делает not указание на 64-битное ядро ​​- есть много 64-разрядных ядер, которые не имеют этого расширения, и это может быть желательно назвать 32-битное ядро ​​с этим расширением на 32-разрядном компьютере на базе UEFI (хотя Ubuntu этого не делает). Это расширение имени файла просто идентифицирует приложение EFI, которое может быть 32-разрядным (x86 / IA-32), 64-разрядным (x86-64 / AMD64) или некоторой другой архитектурой (ARM или Itanium).

    
ответ дан Rod Smith 09.08.2013 в 17:17
источник