EFI: драйверы устройств EBC

27 сентября 2009 - 18:20

300px-Efi-simple_svg.png
Начну с того, что все мы прекрасно знаем, что такое БИОС. После включения компьютера BIOS тестирует оборудование, потом загружает операционную систему, отдавая «власть» над компьютером ей. Операционная система Windows включает в себя многие драйвера устройств ПК разных поколений, а недостающие необходимо устанавливать с дисков, идущих с комплекте с материнской платой, видеокартой и другими устройствами.

Но с компьютерами Мас дело обстоит гораздо проще — установил систему и работаешь, все драйвера уже установлены. Появляется вопрос: в дистрибутивах Mac OS имеется строгое количество драйверов (кекстов) для установки и работы системы, но компьютеры Мас постоянно совершенствуются, меняется конфигурация (чипсет,видеокарты,процессор), тем не менее система приобретенная 2-3 года назад прекрасно работает на новых компьютерах Мас. Почему?

Дело в том, что в отличие от BIOS в EFI присутствует независимая среда драйверов — EFI Byte Code (EBC). Она имеет вид образа, для считывания которого присутствует специальный интерпретатор. Также существуют архитектурно-зависимые (non-EBC) типы драйверов EFI, которые могут иметь интерфейсы для использования операционной системой для базовой поддержки графики и сети, до загрузки драйверов, определённых в операционной системе. Исходя из этого каждая определенная модель компьютера Мас имеет в EFI вшитые драйвера устройств именно для данного Мас. Благодаря этому даже на самую последнюю модель Мас можно установить уже устаревший Tiger и он будет работать.

Когда встает вопрос о установке Mac OS X на ПК, то первым делом стало ясно, что нужно эмулировать EFI, а также создать загрузчик, новые кексты для Mac OS. Операционную систему Tiger ломали, создавая сборки и о установке Retail не могло быть и речи, а для Leopard Retail был создан Boot-132 и, позже, Chameleon.
Загрузчик Chameleon
Chameleon имеет встроенный эмулятор PC-EFI, он со временем стал понимать DSDT.aml (файл с описанием дерева устройств, вложенный в корень раздела с Mac), сам же является загрузчиком плюс имеет собственную папку Extra/Extensions (фактически замена EBC), куда можно вложить «левые», патченные кексты, чтобы их не затронуло новое обновление Mac OS.

Это удобно при установке и работы с Retail. По такому принципу работает и Boot-132. Но, к сожалению, если драйвера в Extra/Extensions используются для Leopard Retail, то при их замене на кексты для Snow Leopard Retail, первый уже не сможет работать. Chameleon для работы с двумя системами пока не придуман.
EFiX
Устройство EFiX также является загрузчиком, имеет свой EBC, в котором вложены кексты для устройств ПК, при этом никаких изменений на разделе с Mac OS делает — отсутствуют PC-EFI, DSDT.aml, загрузчик. Система Mac OS стоит «чистая», как на компьютерах Mac. EFiX работает самостоятельно без вмешательств со стороны. Сейчас компанией идет разработка прошивки для поддержки Snow Leopard и решается вопрос о поддержке двух систем.