Почему kexts загружается Boot Loader, а не после того, как Kernel получает контроль

Я очень новичок в Хакинтоше и сейчас изучаю процесс загрузки.

Насколько я знаю:

  • бинарный код efi - это "байт-код", который запускает прошивка UEFI
  • kexts - это драйвер устройства режима ядра, который соответствует машинному коду, загружается ядром и работает в режиме ядра вместе с ядром.
  • Внедрение kexts похоже на динамическую загрузку библиотеки, но в режиме ядра

Мой вопрос, почему есть некоторые отношения с загрузчиком, такие как хамелеон / клевер и kexts? Kexts должен загружаться ядром, а не загрузчиком, верно?

Я вижу вещь здесь. http://cloverboot.weebly.com/kexts.html?bcsi_scan_50b5cc4d2c82cc03=bG/X91Fwptz2CvnL0WdFPvjdTdWsAAAAioMalg==&bcsi_scan_filename=kexts.html

Скажем, Хакинтошу нужен FakeSMC.kext. Но это не дело загрузчика. Что нужно сделать загрузчику, это поместить код инициализации ядра Mac OS в память и передать ему управление. И должно быть, ядро ​​Mac OS загружает этот FakeSMC.kext.

Не так ли?

1 ответ

Во-первых, в прошлом на ПК были только устаревшие версии BIOS и не было EFI, но Apple никогда не использовала устаревшие версии BIOS, только EFI.

Но это изменилось, поскольку теперь большинство современных ПК имеют встроенный UEFI, поэтому нет необходимости эмулировать EFI.

Есть два способа загрузить OS X на hackintosh с устаревшими BIOS. Первый - это Хамелеон, а второй - Клевер.

Клевер и Хамелеон загружают OS X по-разному.

Clover использует модифицированную версию DUET EFI (реализация EFI с открытым исходным кодом поверх устаревших BIOS) или, если компьютер имеет собственный UEFI, встроенный в клевер, использует это. Clover также использует загрузчик по умолчанию в разделе OS X, расположенном по адресу /System/Library/CoreServices/boot.efi, для загрузки OS X. boot.efi загружает kexts и передает управление ядру, как на реальном mac.

Chameleon имеет собственную встроенную реализацию EFI, которая заставляет ядро ​​думать, что оно работает на EFI Mac. Но этого поддельного EFI недостаточно для загрузки boot.efi, поэтому у Chameleon есть собственный загрузчик. Хамелеон загружает кексы сам, а затем передает управление ядру.

Оба загрузчика имеют встроенные ACPI-таблицы, спуфинг SMBIOS, Device ID и т. Д.

FakeSMC - это эмулятор, имитирующий контроллер управления системой, установленный на реальном Mac, который содержит ключ для расшифровки защищенных двоичных файлов Apple.

Chameleon загружает FakeSMC и другие кексы самостоятельно как отдельный или часть кеша ядра, и если вы используете Clover, то же самое происходит с помощью boot.efi.

Примечание: у Clover есть функция, о которой вы, вероятно, говорите, которая внедряет кексты на лету, которые создают впечатление, что они загружаются Clover, но на самом деле они становятся частью кеша ядра.

Другие вопросы по тегам