Uefi bios на русском языке. BIOS UEFI — новая технология

Новые компьютеры используют прошивку UEFI вместо традиционного BIOS. Обе эти прошивки являются низкоуровневым программным обеспечением, которое запускается при загрузке ПК перед загрузкой операционной системы, но UEFI - более современное решение, поддерживающее большие жесткие диски, более быстрое время загрузки, больше функций безопасности и удобные графические и мышиные курсоры.

Мы видели, что более новые ПК, которые поставляются с UEFI, по-прежнему называются «BIOS», чтобы не запутать людей, привыкших к традиционному компьютеру. Даже если ваш компьютер использует термин «BIOS», современные ПК, которые вы покупаете сегодня, почти наверняка поставляются с прошивкой UEFI вместо BIOS.

Что такое BIOS?


BIOS - это сокращение от базовой системы ввода-вывода. Это низкоуровневое программное обеспечение, которое находится в чипе на материнской плате вашего компьютера. BIOS загружается при запуске компьютера, он отвечает за пробуждение компонентов вашего компьютера, обеспечивает правильную работу, а затем запускает загрузчик, который загружает Windows или любую другую установленную вами операционную систему.

Вы можете настроить различные параметры на экране настройки BIOS. Здесь находятся такие параметры, как аппаратная конфигурация вашего компьютера, системное время и порядок загрузки. Вы можете получить доступ к этому экрану, нажав на конкретную клавишу - разную на разных компьютерах, но часто Esc, F2, F10 или Delete - во время загрузки компьютера. Когда вы сохраняете настройку, она сохраняется в памяти самой материнской платы. Когда вы загружаете компьютер, BIOS конфигурирует ваш компьютер с сохраненными настройками.

Перед загрузкой операционной системы BIOS проходит через POST или самотестирование при включении питания. Он проверяет правильность конфигурации вашего оборудования и правильную работу. Если что-то не так, вы увидите сообщение об ошибке или услышите загадочную серию звуковых кодов. Вам нужно будет узнать, что означают разные последовательности звуковых сигналов в руководстве к компьютеру.

Когда компьютер загружается, после завершения POST-BIOS он ищет главную загрузочную запись (MBR), хранящуюся на загрузочном устройстве, и использует ее для запуска загрузчика.

Вы также можете увидеть акроним CMOS, который расшифровывается как Complementary Metal-Oxide-Semiconductor. Это относится к аккумуляторной памяти, в которой BIOS хранит различные настройки на материнской плате. Это на самом деле не точное определение, поскольку этот метод был заменен флэш-памятью (также называемой EEPROM) в современных системах.

Почему BIOS устарел

BIOS существует уже давно и не сильно развился. Даже компьютеры MS-DOS, выпущенные в 1980-х годах, имели BIOS!

Конечно, с течением времени BIOS эволюционировал и улучшался. Были разработаны некоторые расширения, включая ACPI, расширенный интерфейс настройки и питания. Это позволяет BIOS более легко настраивать устройства и выполнять расширенные функции управления питанием, например, «сна». Но BIOS не улучшался почти столько же, сколько другие технологии ПК со времен MS-DOS.

Традиционный BIOS по-прежнему имеет серьезные ограничения. Он может загружаться только с дисков объемом 2,1 ТБ или менее. Сейчас стали распространяться накопители на 3 ТБ, и компьютер с BIOS не может с них загрузиться. Это ограничение связано с тем, как работает основная загрузочная запись BIOS.

BIOS должен работать в режиме 16-разрядного процессора и иметь только 1 МБ пространства. У него возникают проблемы с инициализацией сразу нескольких устройств, что приводит к замедлению процесса загрузки при инициализации всех аппаратных интерфейсов и устройств на современном ПК.

BIOS нуждается в замене в течение длительного времени. Intel приступила к работе над спецификацией Extensible Firmware Interface (EFI) еще в 1998 году. Apple выбрала EFI, когда в 2006 году она переключилась на архитектуру Intel на своих Маках, но другие производители ПК не последовали этому примеру.

В 2007 году производители Intel, AMD, Microsoft и ПК согласовали новую спецификацию Unified Extensible Firmware Interface (UEFI). Это общепромышленный стандарт, управляемый сообществом унифицированных расширенных интерфейсов микропрограмм, и не только Intel. Поддержка UEFI появилась в Windows с Windows Vista Service Pack 1 и Windows 7. Подавляющее большинство компьютеров, которые вы можете купить сегодня, теперь используют UEFI, а не традиционный BIOS.

Как UEFI заменяет и улучшает BIOS


UEFI заменяет традиционный BIOS на ПК. Невозможно перейти с BIOS на UEFI на существующем ПК. Вам нужно купить новое оборудование, которое поддерживает и включает UEFI, как это делают большинство новых компьютеров. Большинство реализаций UEFI обеспечивают эмуляцию BIOS, поэтому вы можете выбрать установку и загрузку старых операционных систем, которые ожидают BIOS вместо UEFI, поэтому они обратно совместимы.

Этот новый стандарт позволяет избежать ограничений BIOS. Прошивка UEFI может загружаться с дисков объемом 2,2 ТБ или больше - фактически теоретический предел составляет 9,4 Зеттабайт. Это примерно в три раза превышает расчетный размер всех данных в Интернете. Это потому, что UEFI использует схему разделения GPT вместо MBR. Он также загружается более стандартизированным способом, запускает исполняемые файлы EFI, а не запускает код из главной загрузочной записи диска.

UEFI может работать в 32-разрядном или 64-разрядном режиме и имеет большее адресное пространство, чем BIOS, что означает, что процесс загрузки выполняется быстрее. Это также означает, что экраны настройки UEFI могут быть более гладкими, чем экраны настроек BIOS, включая поддержку графики и курсора мыши. Однако это не является обязательным. Многие ПК по-прежнему поставляются с интерфейсными настройками текстового режима UEFI, которые выглядят и работают как старый экран настройки BIOS.

UEFI упакован с другими функциями. Он поддерживает Secure Boot, что означает, что операционная система может быть проверена на достоверность, чтобы гарантировать, что вредоносное ПО не повлияло на процесс загрузки. Он может поддерживать сетевые функции прямо в самой прошивке UEFI, которая может помочь в удаленной диагностике и настройке. В традиционном BIOS вы должны сидеть перед физическим компьютером, чтобы его настроить.

Это не просто замена BIOS. UEFI - это, по сути, крошечная операционная система, которая работает поверх прошивки ПК, и она может сделать намного больше, чем BIOS. Она может храниться во флэш-памяти материнской платы или загружаться с жесткого диска или сетевого ресурса при загрузке.

Различные ПК с UEFI будут иметь разные интерфейсы и функции. Это все зависит от производителя ПК, но основы будут одинаковыми на каждом ПК.

Как получить доступ к настройкам UEFI на современных ПК

Если вы обычный пользователь ПК, переход на компьютер с UEFI не будет заметным изменением. Ваш новый компьютер будет загружаться и завершаться быстрее, чем это было бы с BIOS, и вы можете использовать диски размером 2.2 ТБ и более.

Если вам нужно получить доступ к настройкам нижнего уровня, может быть небольшая разница. Вам может потребоваться открыть экран настроек UEFI через меню опций загрузки Windows, а не нажатием на клавишу во время запуска вашего компьютера. Теперь, когда ПК загружается так быстро, производители ПК не хотят замедлять процесс загрузки, ожиданием нажатия клавиши. Тем не менее, мы также видели ПК с UEFI, которые позволяют вам получить доступ к BIOS таким же образом, нажав клавишу во время процесса загрузки.

Хотя UEFI - это большое обновление, оно в значительной степени находится на заднем плане. Большинство пользователей ПК никогда не заметят (или не обратят внимания) на то, что их новые ПК используют UEFI вместо традиционного BIOS. Но они будут работать лучше и поддерживать более современное оборудование и функции.

1. Что такое UEFI?
UEFI (Unified Extensible Firmware Interface) представляет собой замену BIOS, который лучше соответствует требованиям современного разнообразного «железа». По своей сути, UEFI является интерфейсом, который отвечает за предзагрузочное окружение операционной системы.

2. В чем преимущества UEFI перед BIOS?

  • Поддержка носителей объемом >2Тб
  • Более простая подготовка загрузочных носителей, отсутствие необходимости в записи разных загрузочных секторов
  • Наличие собственного менеджера загрузки. Теперь необязательно заводить многоуровневую чехарду загрузчиков, чтобы организовать мультизагрузочную среду, в EFI NVRAM штатно хранятся все записи о имеющихся загрузчиках, и переключение между загружаемыми ОС осуществляется так же, как и между загрузочными носителями.
  • Более защищенная среда загрузки
  • Графический режим конфигурации UEFI, с поддержкой графики и мыши

3. Можно ли обновить мой BIOS на UEFI?
Не совсем. UEFI нельзя прошить вместо BIOS, поскольку он занимает гораздо больше памяти. Но существует такая штука, как DUET. Это загружаемая из BIOS посредством отдельного загрузочного раздела среда UEFI, которая может быть полезна, если вы собираетесь использовать диски объемом >2Тб на своем старом железе с BIOS.

4. Можно ли из UEFI загружаться, как раньше, через загрузочные секторы и MBR-диски?
Да, если в конфигурации UEFI включена поддержка Legacy Boot

5. Что такое GPT?
GUID Partition Table, GPT - стандарт формата размещения таблиц разделов на жестком диске. Он является частью интерфейса EFI. EFI использует GPT там, где BIOS использует MBR.

6. В чем преимущества GPT перед MBR?

  • Поддержка носителей объемом >2.2Тб
  • Отсутствие ограничения на 4 основных раздела, и как следствие-отсутствие необходимости в логических разделах
  • Повышенная безопасность-GPT хранит резервную копию таблицы разделов в конце диска, поэтому в случае неполадок существует возможность восстановления разметки при помощи запасной таблицы.
  • Защита от повреждения устаревшими программами посредством Protective MBR
  • Существует возможность использования старых загрузочных секторов.

7. Где в GPT хранятся аналоги загрузочных секторов?
EFI использует для хранения загрузчиков папку EFI/boot, находящуюся в корне раздела FAT32. По умолчанию должен загружаться файл /EFI/boot/bootx64.efi
Если загружаемый диск размечен в стиле MBR, то наличие файловой системы FAT32 на первом разделе (если их несколько) и файла с загрузчиком, лежащего по дефолтному пути, являются единственными условиями загрузки с этого носителя (CD/DVD тоже поддерживаются). В случае, если диск размечен в стиле GPT, раздел необязательно должен быть первым, но у него должен присутствовать флаг boot (проверить и выставить можно через gparted)

8. Возможно ли сконвертировать диск из MBR в GPT и обратно без потери данных?
Да. Для этого потребуется загрузочный диск/флешка с Gparted. После загрузки с загрузочного носителя откроется окно gparted, в котором в верхнем правом углу будет отображен рабочий диск (обычно это /dev/sda). Необходимо запомнить имя диска, который вы хотите сконвертировать, открыть терминал, и набрать там sudo gdisk /dev/sda где вместо sda, при необходимости, нужно подставить имя вашего диска. Затем нужно ввести команду w и подтвердить запись таблицы GPT на диск. Все, диск преобразован в таблицу GPT. Для обратной конвертации в MBR необходимо таким же образом открыть gdisk для вашего диска, и последовательно набрать команду r, затем g, после чего подтвердить запись новой таблицы при помощи команды w.

9. Что такое UEFI Shell?
Это среда работы с окружением EFI (терминалоподобная), позволяющая на ходу запускать efi-совместимые загрузчики, выполнять простейшие операции с файлами, а также оперировать встроенным менеджером загрузки.

10. Как редактировать/удалить/добавить пункты загрузки в загрузочное меню UEFI?
Качаем UEFI Shell, копируем его в файл /EFI/boot/bootx64.efi на FAT32 флешку, и загружаемся с нее. После удачной загрузки шелла должно появиться приглашение командной строки
Shell>
Выше приглашения должен отобразиться список имеющихся подключенных дисков (fs0:, fs1:, BLK0, и тому подобное). Чтобы еще раз вызвать этот список в случае необходимости, воспользуйтесь командой
map fs*
Из полного имени диска можно почерпнуть некоторую информацию о диске. Например:
PciRoot(0x0)/Pci(0x1,0x1)/Ata(0x0)/HD(1,MBR,0x27212721,0x3F,0x13FA6D9)
отсюда
Ata(0x0)-интерфейс подключения диска, а также порт контроллера
HD-это жесткий диск
1-количество разделов на диске
MBR-схема разметки

Найдя таким образом необходимый диск, нужно перейти в него
fs0:
затем при помощи старых добрых досовских команд dir и cd нужно нащупать и перейти в каталог с загрузочными efi-файлами. Обычно это /EFI/boot/. Затем, находясь в этом каталоге, можно, введя имя файла загрузчика, сразу же загрузиться в него. Чтобы добавить нужный файл в список загрузочных записей, желательно сначала считать уже имеющиеся записи при помощи команды
bcfg boot dump
Затем, чтобы добавить загрузочный файл в этот список, нужно ввести
bcfg boot add N filename.efi «label»
Где N-порядковый номер записи (если на ее месте что-то было-этот пункт перезапишется)
filename.efi-имя файла с загрузчиком
label-имя, под которым эта запись будет отображаться в списке
Можно снова просмотреть список загрузочных записей через
bcfg boot dump
и убедиться, что все на месте. Можно перезагружаться и проверять.
Для удаления записи из списка используется команда
bcfg boot rm N
где N-номер записи

11. Что такое Secure Boot?
Спецификация Secure Boot разработана Microsoft в рамках проекта UEFI и позволяет защитить загрузочную среду от вмешательства в загрузочные файлы путем контроля подписей загружаемых файлов на предмет их соответствия белому списку ключей, зашитых в uefi как доверенные. «Побочным эффектом» такой защиты от руткитов является невозможность установки ОС, отличной от Windows 8 (на данный момент только она поддерживает Secure Boot), а также исключает возможность запуска с старых mbr дисков и загрузочных CD-дисков/флешек.

12. Как отключить Secure Boot?


13. Как сделать UEFI-совместимую флешку с дистрибутивом ОС?
В большинстве случае все очень просто:

  1. Отформатируйте флешку в файловую систему FAT32
  2. Скопируйте на нее все содержимое iso-образа дистрибутива

Но в случае с ОС Windows Vista/7 понадобится предварительно подготовить дистрибутив, т.к. они изначально не содержат EFI-файлов в нужных местах. Сразу небольшая оговорка–windows поддерживает работу с uefi только в 64-битных редакциях.

14. Как узнать, что загрузочная флешка сделана правильно, и будет грузиться в UEFI-режиме?
Если все сделано правильно, то в списке загрузочных носителей должно появиться два устройства с одинаковым именем, но разными префиксами, UEFI: и USB: . Через первый осуществляется загрузка в UEFI режиме, через второй-Legacy загрузка из загрузочного сектора.

15. Что такое Fast Boot Mode?
Режим быстрой загрузки, при котором управление практически сразу передаётся операционной системе, ещё до готовности к работе оборудования, инициализацию которого проводит сама ОС. Fast Boot исключает задержки, вызванные двойной инициализацией устройств. В «классическом» режиме после получения управления операционная система инициализирует повторно уже ранее инициализированные BIOS устройства. С учётом того, что инициализация некоторых типов устройств является достаточно длительным процессом, выигрыш в скорости очевиден. При включении Fast Boot управление передаётся системе раньше, чем производится инициализация USB, что приводит к недоступности USB-накопителей и клавиатуры до старта установленной на диск системы. Так как Microsoft предъявляет достаточно жёсткие требования ко времени, в которое должна уложиться прошивка при включенном режиме Fast Boot, а инициализация USB-устройств может занимать секунды, к моменту старта системы USB-устройства остаются неинициализированными. В этом случае проявляется обратная сторона медали — пользователь компьютера с USB-клавиатурой не может прервать процесс начальной загрузки и инициировать установку другой системы, так как клавиатура остаётся нерабочей до момента запуска ОС. Более того, инициализация чипа i8042 тоже требует времени и на некоторых ноутбуках производители прошивки оставляют неинициализированными встроенную клавиатуру с интерфейсом PS/2.

Спецификация UEFI (Unified Extensible Firmware Interface, Унифицированный расширяемый микропрограммный интерфейс, унифицированный расширяемый интерфейс прошивки или расширяемый аппаратный интерфейс), ранее известная как Extensible Firmware Interface (EFI ), определяет интерфейс между операционной системой и микрокодом (микропрограммами), управляющим оборудованием. Другими словами, UEFI это интерфейс, который располагается “поверх” аппаратных компонентов компьютера, которые, в свою очередь, функционируют на собственных прошивках (микрокодах).

В самом названии UEFI определение "расширяемый интерфейс" говорит о том, что это модульная система, которая может функционально легко расширяться и модернизироваться.

Для большего понимания, UEFI по сравнению с BIOS - это, грубо говоря, новый тип или следующее поколение прошивки, и оно уже не ограничено только лишь персональными компьютерами архитектуры x86 (IBM PC), но и претендует на всеплатформенный стандарт. Однако, в отличии от BIOS, UEFI базируется на принципиально новой топологии кода, которая называется "драйверность".

  • Основное назначение EFI - замена устаревающей (теряющей актуальность) технологии BIOS и связанных с ней ограничений.
  • Основная цель разработки UEFI заключается в стандартизации взаимодействия операционной системы с микропрограммами платформы в ходе процесса загрузки. В классическом BIOS основным механизмом взаимодействия с аппаратурой на этапе загрузки были программные прерывания и порты ввода-вывода, однако современные системы в состоянии обеспечить более эффективное выполнение операций ввода-вывода между оборудованием и программным обеспечением.
  • Основная задача EFI - корректно инициализировать оборудование и передать управление загрузчику операционной системы. В этом плане задача не сильно то и отличается от задачи традиционного BIOS, но алгоритмы принципиально другие.

UEFI можно смело назвать самостоятельной миниатюрной операционной системой, которая представляет собой интерфейс между основной пользовательской операционной системой, функционирующей на компьютере и микрокодом оборудования.

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

Старый-добрый BIOS

Основные принципы функционирования BIOS (базовой системы ввода-вывода) для персональных компьютеров были определены еще в конце 70х годов прошлого века. На протяжении довольно большого промежутка времени, прошедшего с той поры, компьютерная отрасль интенсивно развивалась, это приводило к тому, что на определенных этапах возможностей BIOS было недостаточно, поскольку выпускаемые производителями устройства имели на борту новые технологии, часто не совместимые с текущими версиями BIOS. Что бы уйти от подобных проблем, разработчикам приходилось порой довольно существенно модифицировать код BIOS, однако целый ряд ограничений так и остался неизменным до настоящего времени. И, если первоначально архитектура BIOS была достаточно простой, то по прошествии времени, она усложнялась, адаптируясь под все новые и новые технологии, поэтому, к определенному моменту она стала напоминать нагромождение различного рода устаревшего и плохо взаимодействующего между собой кода. Ограничения, которые и по сей день можно встретить в коде BIOS, объясняются необходимостью сохранять совместимость с базовыми функциями, необходимыми для функционирования старого ПО. Всё это привело к тому, что BIOS, по сути, стал самым устаревшим компонентом современных ПК. На данный момент BIOS мало удовлетворяет требованиям новейшего оборудования и имеет следующие недостатки:

  1. 16-битный код, реальный режим. BIOS написан на языке ассемблера и функционирует на 16-битном коде в реальном режиме (real mode) процессора со свойственными ему ограничениями, самое существенное из которых - ограничение адресного пространства памяти объемом 1 Мегабайт.
  2. Отсутствие доступа к 64-битному железу. BIOS не способна напрямую взаимодействовать с 64-битным оборудованием, доминирующим на рынке в настоящее время.
  3. Отсутствие единого стандарта. Для BIOS отсутствует единая спецификация - каждый производитель предлагает собственный вариации реализации.
  4. Сложность разработки. Проблема заключается в том, что практически для каждой очередной модели системной платы производителем разрабатывается собственная версия BIOS, в которой реализуются уникальные технические особенности данного устройства: взаимодействие с модулями чипсета, периферийного оборудования и прч. Разработку BIOS можно разделить на два этапа. На первом этапе создается базовая версия микропрограммы, в которой реализуются те функции, которые не зависят от специфики оборудования. Разработчики подобного кода хорошо известны, это такие компании как American Megatrends (AMIBIOS), Phoenix Technologies (+ приобретенная ею легендарная Award Software (AwardBIOS)) и некоторые другие. На втором этапе к разработке BIOS подключаются программисты производителя материнской платы. Тут уже базовая сборка модифицируется под специфику каждой конкретной модели платы, учитываются ее особенности. После выхода системной платы на рынок, работа над прошивкой продолжается, регулярно выпускаются обновления, в которых исправляются ошибки, добавляется поддержка нового оборудования (например, процессоров) и, иногда даже расширяются функциональные возможности прошивки.

Все эти, а так же некоторые другие, недостатки традиционной модели BIOS и привели к тому, что коалиция производителей аппаратуры и ПО начала работать над созданием спецификации UEFI. Начиная, по собственным наблюдениям, где-то с 2010 года, спецификация UEFI начала массово внедряться во все вновь выпускаемые материнские платы ведущих производителей, поэтому на данный момент найти новый компьютер с традиционным BIOS практически невозможно. Однако, сильно огорчаться из-за этого не стоит, поскольку многие производители в своих системных платах сохраняют совместимость с функционалом традиционных BIOS. К примеру, очень важным моментом является поддержка традиционного режима загрузки при помощи MBR. С этой целью был разработан UEFI-модуль режима эмуляции BIOS, который носит название Compatibility Support Module (CSM). Правда, я так полагаю, со временем все меньше и меньше производителей будут поддерживать в своих прошивках данный режим.

Преимущества UEFI

Тут я хотел бы определить достоинства интерфейса UEFI:

  1. Поддержка носителей информации (дисков) большого объема. Поддержкой больших дисков UEFI обязан новому стандарту таблиц разделов под названием GPT (GUID Partition Table). Традиционный способ загрузки в BIOS использовал загрузочный сектор Master Boot Record (MBR), содержащий в себе таблицу разделов, которая описывала размещение разделов (партиций) диска. У записей таблицы разделов в MBR имеется один существенный недостаток: номер первого сектора начала раздела в формате LBA (смещение 08h от начала записи о разделе), имеет разрядность всего-лишь 4 байта (32 бита), соответственно, адресовать возможно только 4 миллиарда секторов. А это, при "классическом" размере сектора в 512 байт, всего-лишь ~2 терабайта дискового пространства. UEFI же, при помощи GPT, дает возможность адресовать диски объемом до 18 экзабайт.
  2. Прямая поддержка файловых систем и таблиц разделов. UEFI имеет модули поддержки файловых систем и таблиц разделов, то есть умеет работать как с таблицами разделов, так и с файловыми системами напрямую. Спецификация подразумевает обеспечение поддержки таблицы разделов GPT, файловых системам FAT12 , FAT16 , FAT32 на жестких дисках и файловой системы ISO9660 на CD/DVD дисках. Это избавляет нас от необходимости писать код начальной загрузки (по аналогии с MBR), который будет по цепочке грузить загрузчики различных стадий.
  3. Отсутствие других традиционных ограничений MBR. Например больше не требуется втискивать код начальной загрузки в миниатюрный сектор размером в 512 байт. Можно сосредоточиться на написании единого модуля загрузки, который будет совмещать в себе все необходимые стадии.
  4. Независимые от платформы драйвера оборудования. UEFI имеет доступ к аппаратному обеспечению компьютера посредством платформо-независимых драйверов. Производителю устройства достаточно написать всего-лишь одну версию драйвера для всех платформ (x86, ARM, Itanium, Alpha), а это значительно упрощает разработку и ускоряет процесс выявления ошибок. Спецификация UEFI описывает взаимодействие драйверов UEFI с операционной системой, таким образом, в случае, когда в ОС отсутствует драйвер, к примеру, видеокарты, а в UEFI он присутствует, загружен и функционирует, то ОС имеет возможность выводить данные на монитор посредством стандартных интерфейсов UEFI.
  5. Поддержка стека протоколов TCP: IPv4/IPv6. Позволяет использовать богатые сетевые возможности непосредственно из интерфейса UEFI. Теперь можно разрабатывать различные загрузки по http/ftp протоколам, тут же на ум приходит загрузка с указанием URL, по которому лежит обычный EFI-модуль, либо полноценный ISO-образ. Стало возможным обойти уже успевшую стать единственно-возможным вариантом, загрузку по сети с использованием PXE/TFTP. Некоторые, особенно продвинутые реализации, могут реализовать поддержку PXE через IPv6.
  6. Поддержка традиционной модели BIOS. UEFI не нужен классический BIOS, однако многие производители встраивают код эмуляции BIOS с целью поддержки работоспособности старых операционных систем. Называется этот модуль - модулем поддержки совместимости Compatibility Support Module (CSM). CSM включает 16-битный модуль (CSM16), реализуемый изготовителем BIOS, и слой, связывающий CSM16 с инструментарием (интерфейсом и оборудованием). Совместимость подразумевает поддержку загрузки посредством MBR и поддержку на уровне кода программных прерываний (int 10h - видеосервис, int 13h - сервис работы с диском, int 15h - сервисные функции, int 16h - сервис клавиатуры, int 18h - ROM-BASIC сервис, int 19h - сервис начальной загрузки (bootstrap loader)). Поэтому те ОС и ПО, которым для работы как воздух необходим был старый-добрый BIOS, свободно могут работать и на машинах с UEFI.
  7. Интуитивно-понятный интерфейс UEFI. Так называемая “простота управления”. Достаточно спорный момент, невозможно однозначно отнести его к плюсу или минусу. Утверждается, что управление BIOS было не интуитивно, представляя собой плохо документированный, аскетичный текстовый интерфейс, разобраться в котором мог только подкованный в компьютерных технологиях пользователь. В противовес этому, во многих оболочках UEFI поддерживаются графический интерфейс, манипулятор “мышь”, которые в большинстве BIOS просто не реализованы. Однако, если мне не изменяет память, я еще в 90х годах наблюдал попытки реализации поддержки мыши в BIOS от (кажется) Phoenix. Сам интерфейс может быть графическим, по мнению некоторых - более дружелюбным и интуитивным для большинства, но может быть и традиционным, то есть схожим с классическим текстовым, тут все зависит от предпочтений разработчика и позиционирования оборудования. Имеется возможность поддержки нескольких языков.
  8. Скорость работы UEFI. Утверждается, что код UEFI выполняется быстрее кода традиционного BIOS (хотя и написан на C), за счет того, что целиком написан “с нуля”, без необходимости "волочить" за собой обоз устаревшего кода поддержки различного нестандартного железа и разнообразных логических анахронизмов.
  9. Скорость загрузки ОС. Утверждается, что с UEFI загрузка происходит существенно быстрее. Достигается это за счет распараллеливания инициализации устройств, в противоположность BIOS, который инициализировал оборудование последовательно, а так же уменьшения времени запуска по причине отсутствия необходимости искать загрузчик методом перебора всех устройств (загрузчик указывается в UEFI и вызывается непосредственно). Склонен поверить, поскольку подтвердить либо опровергнуть на данный момент не могу. Однако, если измерить сколько времени уходит на моей старой машинке на Celeron 450/GA-G31M-ES2L с SSD с момента включения и до появления окна авторизации оптимизированной Windows XP, то получится всего 23 секунды. Вероятно, для определенных категорий устройств этого будет недостаточно.
  10. UEFI - мини ОС. Можно, конечно же, обозвать UEFI миниатюрной операционной системой, и это, от части, будет справедливо, но корректнее считать её виртуальной платформой, которая предоставляет интерфейсы к оборудованию. Можно работать только в консоли, а можно написать и полноценный графический интерфейс. UEFI, при наличии модулей необходимого функционала, может, к примеру, помочь разобраться в проблемах загрузки основной ОС, или выполнить другие сервисные функции.
  11. Дополнительные программные модули. Непосредственно до загрузки операционной системы с носителя UEFI позволяет запускать собственные UEFI-модули и драйвера широкого назначения: по работе с сетью, диском (архивация/бэкап/антивирус), конфигурацией параметров, тестированию оборудования. Очевидно, что с популяризацией стандарта список UEFI-приложений будет только расширяться. Уже сейчас можно даже написать полноценную игру, разработать собственную консоль для сервисных нужд в виде отдельного UEFI-модуля (пример: shell.efi), интернет-браузер, обеспечить работу с медиаданными (просмотр фильмов, прослушивание музыки), организовать резервное копирование дисков.
  12. UEFI содержит встроенный менеджер загрузок. То есть, реализует собственный загрузчик кода ОС, который очень функционален и может выступать аналогом знакомых нам по не столь далекому прошлому мультизагрузчиков нескольких операционных систем.
  13. Размер блока ввода-вывода. В UEFI при чтении используется особый размер блока EFI ввода-вывода, позволяющий читать по 1Мб данных (в BIOS ограничение – 64Кб).
  14. Безопасность. Якобы UEFI защищена от вредоносного кода этапа загрузки. Утверждается, что вредоносный код не может загрузить себя до загрузки операционной системы, перехватив тем самым управление. Это достигается и за счет подписывания всего подряд в самой прошивке, так и за счет существования безопасной процедуры загрузки под названием “Secure Boot”.
  15. Простота масштабирования функционала. Прошивка UEFI может легко расширяться - достаточно вставить поддерживаемый накопитель (к примеру USB-флешку). После этого с внешнего устройства можно подключить дополнительные драйверы, приложения UEFI. Если подумать, тем самым открываются прекрасные возможности расширения функционала, которые нельзя было получить с помощью традиционного BIOS, поскольку он был ограничен исключительно зашитым в ROM кодом. В UEFI же можно "подсунуть" драйвер новой железки непосредственно еще на стадии работы UEFI, то есть до начала загрузки операционной системы, и получить доступ к функционалу этого устройства.
  16. Код UEFI функционирует в 32-/64-битном режиме. Со всеми вытекающими.. преимуществами. Если быть уж совсем честным, то всё же UEFI использует реальный режим в самом начале для выполнения некоторых задач инициализации платформы, однако очень быстро уходит в защищенный/длинный режим.
  17. Поддержка альтернативных средств ввода. UEFI обеспечивает поддержку альтернативных средств ввода данных, таких как виртуальные клавиатуры и сенсорные дисплеи. Это достаточно актуально в нашу эпоху различных мобильных гаджетов.

Недостатки UEFI

А теперь хотелось бы осветить недостатки технологии UEFI:

  1. Усложнение архитектуры. Все преимущества EFI не являются настолько уж значимыми перед основным её недостатком - усложнением структуры кода. Значительное увеличение объема кода, его логическое усложнение никак не способствуют облегчению разработки, скорее даже наоборот. А ведь до и параллельно с UEFI, альтернативой устаревшей модели BIOS были открытые реализации, к примеру OpenBIOS, которые были отвергнуты.
  2. Secure Boot. Тут разработчики операционных систем решили сразу несколько проблем: частично проблему пиратства, исключив обход активации путем внедрения активаторов в этапы загрузки, проблему вредоносного кода (вирусов) стадии загрузки и проблему сохраняющих популярность устаревших операционных систем, с которых ну никак не хотят уходить пользователи:) В действительности вышло так, что в отдельных особенно умных устройствах, из-за наличия не отключаемой опции "Secure Boot", зачастую невозможно установить никаких ОС кроме систем линейки Windows версии 8+, поскольку сертифицированные загрузчики на данный момент имеют лишь последние. Согласитесь, смахивает на довольно топорный способ борьбы со скупыми пользователями и конкурентами, хотя сама Microsoft всячески отрицает подобную ситуацию. Одним словом, технология способна доставить массу неудобств, хорошо хоть у большинства вендоров эта опция (пока еще) отключается в настройках.
  3. Невозможность установки старых ОС (в некоторых случаях). Невозможно установить старые системы при отсутствии режима совместимости (CSM).
  4. Отступление от стандарта. Каждый производитель аппаратных компонентов по своему усмотрению модифицирует UEFI, тем самым создавая для пользователя дополнительные трудности, фактически возвращая нас в хаос BIOS? Например, на различных устройствах менеджер загрузки может быть реализован по-разному, при этом иметь достаточно существенные отступления от рекомендаций спецификации UEFI. На практике, иногда попадались забагованные UEFI, которые игнорировали параметры списка загрузки NVRAM и просто грузили код из \EFI\Microsoft\Boot\bootmgfw.efi или EFI/BOOT/bootx64.efi . Или менеджер загрузки в одних реализациях может содержать комбинированный список из MBR и GPT устройств, в других же разные списки загрузки, что вводит некоторую сумятицу.
  5. Внедрение средств контроля контента. Стандарт UEFI предусматривает наличие неких драйверов, которые будут перехватывать вызовы операционной системы, таким образом можно реализовать DRM (Digital Restrictions Management, технические средства защиты авторских прав). Суть алгоритма следующая: человеку, у которого все работает, предлагается за его же счет установить такое программное обеспечение или оборудование, чтобы часть функций в его работающих системах воспроизведения цифрового контента (компьютеры, мультимедиа-плееры и др.) более не работала привычным образом. Существуют небезосновательные опасения, что создание UEFI - это завуалированный способ введения в ПК нежелательных для конечного пользователя функций.
  6. Возможность внедрения нежелательных модулей. Невозможно гарантировать, что операционная система на 100% контролирует компьютер, если она загружается с помощью UEFI!

Алгоритм работы UEFI

В процессе разработки UEFI, разработчика, с самого начала, были установлены жесткие рамки для каждого процесса, участвующего в ходе выполнения. Первые три фазы (SEC, PEI, DXE) подготавливают платформу для загрузчика ОС, четвертая фаза (BDS) непосредственно производит загрузку загрузчика ОС. Давайте попробуем разобрать алгоритм работы UEFI и подробнее рассмотреть все его фазы.

  • Фаза SEC. (Security, Безопасность). Фаза безопасности. Все должно быть подписано и проверено иначе не будет запущено!
    • Очистка CPU кэша.
    • Запуск главной процедуры инициализации в ROM.
    • Переход в защищенный режим работы процессора.
    • Инициализируются MTRR (диапазонные регистры типа памяти) для BSP.
    • Запуск патчей микрокода для всех установленных процессоров.
    • Начальная работа с BSP/AP. BSP = Board Support Package. AP = Application Processor. Каждое ядро может быть представлено как BSP + AP. Всем AP рассылается IIPI (Init Inter-processor Interrupt), затем SIPI (Start-up Inter-processor Interrupt).
    • Передача данных и управления в фазу PEI.
  • Фаза PEI. (Pre-EFI Initialization, Пред-EFI Инициализация). Подготовка платформы (памяти и обнаруженных устройств) для главной процедуры инициализации системы в фазе DXE.
    • Перенос данных из ROM в кеш.
    • Инициализация CRTM (Core Root for Trust of Measurement). Это набор инструкций, который запускается платформой в ходе выполнения RTM-операций.
    • Загружается диспетчер PEI. Диспетчер загружает серию модулей (PEIM), которые варьируются в зависимости от платформы. Эти модули завершают оставшиеся задачи PEI. Стадия завершается, когда все модули загружены.
    • PEIM: Загружаются и запускаются модули инициализации процессоров. (пример: модуль кеша процессора, модуль выбора частоты процессора). Инициализируются процессоры.
    • PEIM: Встроенные интерфейсы платформы инициализируются (SMBus). Инициализируются MCH (Memory Controller Hub), ICH (I/O Controller Hub).
    • PEIM: инициализация памяти. Инициализация основной памяти и перенос в нее данных из кэша.
    • Проверка режима S3. Нет - передача управления в фазу DXE. Да - восстановление исходного состояния процессора и всех устройств и переход к ОС.
  • Фаза DXE. (Driver eXecution Environment, Среда загрузки драйверов). Загрузка компонентов этой фазы базируется на ресурсах, которые были инициализированы в фазе PEI. Фаза окончательной инициализации всех устройств. Запуск служб UEFI: Boot Services, Runtime Services и DXE Services.
    • Загружается ядро DXE. Создается инфраструктура DXE: создаются необходимые структуры данных, база данных хендлов. Включает основные интерфейсы DXE. Запускает ряд сервисов: сервисы этапа загрузки (Boot Services), сервисы этапа выпонения (Runtime Services), сервисы фазы DXE (DXE Services).
    • Запуск диспетчера DXE. Посредством переданного из PEI списка Hand-off Block структур (HOB list) определяет доступные Firmware Volume (FV, структурированная база данных исполняемых модулей DXE: драйверов и приложений) и ищет в них драйвера, запускает их, соблюдая зависимости. В этот момент производится активация остальных компонентов, причем одновременно нескольких. Диспетчер грузит все доступные драйвера со всех доступных носителей.
    • Загрузка драйвера SMM Init. Инициирует подфазу. SMM (System management mode) - один из привилегированных режимов исполнения кода x86-процессора, в котором процессор переключается на независимое адресное пространство, сохраняет контекст текущей задачи, затем выполняет необходимый код, затем возвращается в основной режим. Зачем нам SMM? А потому что в этом режиме можно сделать с системой все что угодно и не зависимо от ОС. Код SMM может исполняться и после окончания фазы DXE.
    • Запускается UEFI Boot Manager. Это происходит после запуска всех драйверов. Управление передается в фазу BDS.
  • Фаза BDS. (Boot Device Selection, Выбор устройства загрузки). Реализует политику загрузки платформы. Основная задача - подключить устройства, необходимые для загрузки, выбрать (вручную или автоматически) устройство загрузки и загрузиться с него. Зачастую выполняет рекурсивный поиск по всем доступным FV и пытается найти доступный для загрузки контент.
    • Инициализируются консольные устройства, описываемые переменными окружения ConOut (ConsoleOutHandle), ConIn (ConsoleInHandle), StdErr (StandardErrorHandle).
    • Загружаются UEFI-драйвера устройств, перечисленные в переменной окружения DriverOrder (содержащей опций Driver#### в порядке загрузки).
    • Загружается UEFI-приложение с устройства загрузки Boot#### . Списки устройств содержатся в переменной окружения BootOrder в порядке очередности загрузки.
    • Если не смогли выполнить что-либо из вышеперечисленного, то вызываем диспетчер DXE для проверки обеспечения зависимостей дополнительных драйверов с момента последнего вызова диспетчера. После чего управление опять возвращается в фазу BDS.

Алгоритм работы UEFI Boot Manager

Концепция загрузки UEFI существенно отличается от аналогичной в BIOS. Если вспомнить BIOS, то за загрузку там отвечал код начального загрузчика int 19h (bootstrap loader), задача которого состояла лишь в том, чтобы загрузить главную загрузочную запись (MBR) с устройства загрузки в память и передать ей управление. В UEFI всё несколько интереснее, она содержит свой собственный полноценный встроенный загрузчик, который носит название UEFI Boot Manager (Менеджер загрузки UEFI или просто Boot Manager), имеющий куда более богатый функционал.

UEFI Boot Manager - стандартный типовой модуль UEFI.

Boot Manager реализует довольно широкий набор функций, в число которых входит загрузка таких UEFI-образов, как: UEFI-загрузчиков ОС первой стадии, UEFI-драйверов, UEFI-приложений. Загрузка может производиться из любого UEFI-образа, размещенного на любой поддерживаемой UEFI файловой системе, располагающейся на любом поддерживаемом платформой физическом носителе информации. UEFI Boot Manager имеет свою собственную конфигурацию, параметры которой в виде ряда переменных располагаются в общей NVRAM (Non-volatile RAM).

EFI NVRAM - общая область памяти, предназначенная для хранения параметров конфигурации UEFI, доступная для использования разработчикам прошивки, производителям оборудования, разработчикам операционных систем и пользователям.

Параметры UEFI хранятся в NVRAM в виде переменных, которые классически представлены парой "название параметра" = "значение". Эти переменные содержат большое количество параметров, которые относятся к разным функциональным частям UEFI, то есть, помимо параметров UEFI Boot Manager"а, NVRAM хранит и многие другие параметры UEFI. Однако, в контексте данной главы нас интересуют лишь переменные, относящиеся к UEFI Boot Manager. Это, в первую очередь, переменная BootOrder , которая указывает на переменные дескрипторов загрузки с именами Boot#### . Каждый элемент Boot#### представляет собой указатель на физическое устройство и (опционально) может описывать даже файл, представляющий собой образ UEFI, который должен с этого физического устройства грузиться.

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

Вот так, примерно, я представляю себе алгоритм перебора носителей в процессе работы UEFI:

Как мы видим, UEFI Boot Manager парсит BootOrder , то есть загружает путь устройства каждого элемента Boot#### в порядке, заданном в переменной BootOrder и пытается выполнить загрузку с указанного устройства. В случае ошибки менеджер загрузки переходит к следующему элементу. Кроме этого, формируется так называемый список загрузки. Этот список актуален для интерфейса настроек UEFI и выглядит как привычное стандартное меню загрузки (Boot Menu). UEFI Boot List формируется на основе переменной BootOrder и используется для внесения пользователем изменений в очередность и конфигурацию устройств загрузки.
А как же формируется сам BootOrder ? А очень просто, например в процессе установки операционной системы Windows, инсталлятор создает раздел ESP (в случае его отсутствия) на установочном диске, форматирует данный раздел в файловую систему FAT, затем помещает свой загрузчик (для Windows 7+ это файл bootmgfw.efi ) и некоторые другие файлы по пути \EFI\Microsoft\Boot\ . По окончании установки ОС, инсталлятор Windows создает переменную в EFI NVRAM с именем Boot#### (где #### - шестнадцатеричный номер), ссылающуюся на менеджер загрузки Windows с именем bootmgfw.efi . Затем, правит переменную BootOrder ?

Требования к загрузочным носителям UEFI

Спецификация UEFI, наряду с прочим, описывает и определенные требования к правилам размещения разделов и загрузчиков на носителях. И для различных классов устройств, как мы увидим далее, они существенно отличаются.

Требования для жестких дисков

Каждый загрузочный жесткий диск должен содержать специальный раздел EFI System Partition (ESP). В разделе ESP должна соблюдаться предопределенная стандартом иерархия директорий (структура): в корне раздела ESP должна размещаться директория /EFI . В папке /EFI , в свою очередь, должны располагаться подкаталоги вендоров операционных систем, производителей оборудования, общего инструментария и драйверов:

\EFI \<директория вендора ОС 1> <файл-загрузчик-ОС1>.efi \<директория вендора ОС 2> <файл-загрузчик-ОС2>.efi . . . \<директория вендора ОС N> <файл-загрузчик-ОСN>.efi \<директория производителя оборудования (OEM)> .efi \<директория BIOS вендора> <приложение-BIOS-вендора>.efi \<директория вендора стороннего ПО> <стороннее-приложение>.efi \BOOT BOOT{тип_архитектуры}.efi

\<директория вендора ОС 1>

<файл-загрузчик-ОС1>.efi

\<директория вендора ОС 2>

Реестре поддиректорий .

Вендоры, директории которых не описаны в поддиректории вендоров и которые не имеют собственных поддиректорий в папке /EFI , зачастую размещают свой загрузчик как "загрузчик по-умолчанию". К примеру, для x64 систем по пути: /EFI/Boot/bootx64.efi .

Файл загрузчика (boot loader) является типовым UEFI-приложением, имеет формат PE32+ и содержит код начальной стадии загрузки операционной системы, то есть начинает процесс загрузки ОС. Его цель - подготовить структуры данных, загрузить ядро ОС в память и передать ему управление.
В спецификации описана поддиректория /EFI/Boot . Данная поддиректория используется как расположение "по умолчанию", то есть в ситуации, когда по каким-либо причинам в NVRAM сбивается (не настроен) какой-либо загрузчик. Для подобного случая в данной директории располагается так называемый "загрузчик по-умолчанию" (fallback boot loader), который имеет стандартизованное наименование BOOT{тип_архитектуры}.efi

Некоторые старые реализации UEFI были "забагованы", они попросту игнорировали список загрузки в NVRAM и грузили напрямую модули либо /EFI/BOOT/bootx64.efi . Другие же, не менее "прямые" варианты UEFI не поддерживали меню загрузки и тоже всегда загружали /EFI/Boot/bootx64.efi либо /EFI/Microsoft/Boot/bootmgfw.efi в зависимости от своих таинственных предпочтений.

Загрузка в Legacy-режиме

UEFI не запускает никакого кода из классического MBR, вне зависимости от того, присутствует сектор на установленных в системе носителях или нет. Исключение составляют версии UEFI с реализацией поддержки "режима совместимости". В следствии этого, для традиционной (legacy) загрузки операционных систем, совместимых со стандартом разметки MBR, в UEFI предусмотрены специальные модули, которые могут быть (по усмотрению вендора) включены в прошивку. Узнать поддерживает ли конкретно Ваша UEFI-прошивка "режим совместимости" можно поискав в интерфейсе UEFI такие параметры как Legacy , Legacy CSM , Launch CSM , CSM Boot , CSM OS , Запуск CSM или CSM Support . Надо отметить что в подавляющем большинстве прошивок данный режим присутствует, что сильно упрощает жизнь пользователей, купивших новые ноутбуки или материнские платы, но так и не изменивших своих привычек в использовании "старых" операционных системам от MS:)
Логично предположить, что в случае наличие CSM модуля, код прошивки при загрузке в традиционном режиме должен максимально приближаться к аналогичным функциональным особенностям традиционных BIOS, попросту эмулируя ключевые технологии. Давайте посмотрим, какие действия производит модуль поддержки совместимости (CSM) UEFI при загрузке в традиционном режиме.
Приведу здесь пока лишь абстрактно-условный алгоритм загрузки в режиме Legacy/Compatibility Support Module (CSM):

  1. Требуется ли загрузка в традиционном (legacy) режиме? Если нет, то уходим на обычную цепочку UEFI Boot.
  2. Загружаем модуль Legacy Driver.
  3. Загружаем модуль Legacy BIOS.
  4. Требуется ли поддержка традиционных функций видео-BIOS (реализация функций прерывания int 10h)? Да - загружаем.
  5. Требуется ли поддержка остальных традиционных расширений BIOS (int 13h..)? Да - загружаем.
  6. Загружаем традиционную (legacy) ОС? Нет - уходим на нормальную загрузку UEFI.
  7. Формируем SMBIOS структуры.
  8. Формируем структуры Legacy Device.
  9. Формируем структуру прерывания int 15h, структуру BBS (BIOS Boot Specification) API.
  10. Формируем ACPI RSD PTR.
  11. Загружаем совместимый SMM код.
  12. Загружаем код из MBR и передаем ему управление.

Мультизагрузка в UEFI

С самого начала массового распространения персональных компьютеров, время от времени вставала задача развертывания нескольких операционных систем на одном ПК, в котором мог размещаться один или несколько физических носителей. Не так давно ситуацию существенно изменило открытие технологии виртуализации, но полностью проблему это не сняло. В классическом своём понимании, применительно к станциям, загружающимся по традиционному способу PC/AT BIOS с использованием классической разметки MBR, мультизагрузка представляла собой сторонний код в главном загрузочном секторе (MBR), который загружает так называемый менеджер загрузки (мультизагрузчик), хранящий настройки для каждой установленной на компьютере операционной системы и предоставляющий меню выбора загрузки той или иной ОС. Если говорить про наше время, то есть про мультизагрузку применительно к носителя, разбитым уже при помощи GPT разметки, то теперь многое изменилось. Как мы уже отмечали, UEFI напрямую умеет работать с GPT-дисками, поэтому задача по установке нескольких операционных систем существенно упрощается. Теперь все функции мультизагрузчика берет на себя встроенный UEFI Boot Manager, принципы функционирования которого мы описали выше. Инсталлятору ОС достаточно лишь сделать то, с чем он и так прекрасно справляется: разместить загрузчик на специальный раздел ESP в "свою" иерархию директорий, после чего этот загрузчик становится "видимым" в настройках UEFI. Помимо установщика ОС, теперь и сам пользователь при помощи настроек (графического/текстового интерфейса UEFI) может вручную добавить загрузчик, находящийся на любом подключенном и видимом системой физическом носителе. Все эти добавленные различными способами загрузчики становятся доступными через Меню загрузки, которое пользователь может настраивать/вызывать непосредственно во время работы UEFI, то есть на начальной стадии загрузки ПК. Другими словами, мультизагрузка в UEFI просто вопрос запуска UEFI-приложений (загрузчиков конкретных ОС), размещающихся на подключенных носителях на специальном разделе ESP в иерархии директорий с корнем в /EFI .

Extensible Firmware Interface

Extensible Firmware Interface (EFI) - интерфейс между операционной системой и микропрограммами, управляющими низкоуровневыми функциями оборудования, его основное предназначение: корректно инициализировать оборудование при включении системы и передать управление загрузчику операционной системы . EFI предназначен для замены BIOS - интерфейса, который традиционно используется всеми IBM PC-совместимыми персональными компьютерами. Первая спецификация EFI была разработана Intel , позднее от первого названия отказались и последняя версия стандарта носит название Unified Extensible Firmware Interface (UEFI). В настоящее время разработкой UEFI занимается Unified EFI Forum.

История

Изначально EFI создавалась для первых систем Intel-HP Itanium в начале 2000-х годов. Ограничения PC-BIOS (16-битный исполняемый код, адресуемая память 1 Мбайт, аппаратные ограничения IBM PC/AT и т. д.) были очевидно недопустимы в больших серверных платформах, для использования в которых планировался Itanium. Изначально назывался - Intel Boot Initiative (Загрузочная Инициатива Intel ), позже было переименовано в EFI.

Спецификация EFI 1.02 была выпущена Intel 12 декабря 2000 года. (Версия 1.01 имела проблемы в юридическом плане, связанные с торговой маркой, и была быстро изъята).

Спецификация EFI 1.10 была выпущена 1 декабря 2002 года. Она включала модель драйвера EFI, а также несколько незначительных улучшений по сравнению с версией 1.02.

В 2005 году Intel внесла эту спецификацию в UEFI Forum, который теперь ответственен за развитие и продвижение EFI. EFI был переименован в Unified EFI (UEFI), чтобы отразить это изменение, при этом большая часть документации использует оба термина.

UEFI Forum выпустил спецификацию 2.1 UEFI 7 января 2007 года. Она добавила и улучшила криптографию, установление подлинности сети и архитектуру пользовательского интерфейса.

Текущая спецификация UEFI версии 2.3.1 была представлена в апреле 2011 года.

Интерфейс, определённый спецификацией EFI, включает таблицы данных, содержащие информацию о платформе, загрузочные и runtime-сервисы, которые доступны для загрузчика операционной системы (ОС) и самой ОС. Некоторые существующие расширения BIOS, типа ACPI и SMBIOS , также присутствуют в EFI, поскольку не требуют 16-разрядного runtime-интерфейса.

Сервисы

EFI определяет «загрузочные сервисы», которые включают поддержку текстовой и графической консоли на различных устройствах, шин, блоков и файловых сервисов, и runtime-сервисы, например дата, время и энергонезависимая память.

Драйверы устройств

В дополнение к стандартным, архитектурно-зависимым драйверам устройств, спецификация EFI предусматривает независимую от платформы среду драйверов, названную EFI Byte Code (EBC). От системного встраиваемого ПО (firmware) спецификацией UEFI требуется иметь интерпретатор для любых образов EBC, которые загружены или могут быть загружены в среду. В этом смысле EBC подобен Open Firmware , независимому от аппаратных средств встраиваемому ПО, используемому в компьютерах Apple Macintosh и Sun Microsystems SPARC .

Некоторые архитектурно-зависимые (non-EBC) типы драйверов EFI могут иметь интерфейсы для использования ОС. Это позволяет ОС использовать EFI для базовой поддержки графики и сети до загрузки драйверов, определённых в ОС.

Менеджер загрузки

Менеджер загрузки EFI используется для выбора и загрузки ОС, исключая потребность в специализированном механизме загрузки (загрузчик ОС является приложением EFI).

Поддержка дисков

В дополнение к стандартной схеме разметки дисков - Master boot record (MBR), EFI имеет поддержку GUID Partition Table (GPT), которая свободна от характерных для MBR ограничений. Спецификация EFI не включает описание для файловых систем, однако реализации EFI обычно поддерживают FAT32 как файловую систему.

Оболочка EFI

Сообщество EFI создало открытую среду оболочки (shell environment). Пользователь для выполнения некоторых операций может загрузить оболочку EFI (EFI shell) вместо того, чтобы загружать ОС. Оболочка - приложение EFI; она может постоянно находиться в ПЗУ платформы или на устройстве, драйверы для которого находятся в ПЗУ.

Оболочка может использоваться для выполнения других приложений EFI, таких как настройка, установка ОС, диагностика, утилиты конфигурации и обновления прошивок. Она также может использоваться, чтобы проиграть CD или DVD-носители не загружая ОС, при условии, что приложения EFI поддерживают эти возможности. Команды оболочки EFI также позволяют копировать или перемещать файлы и каталоги в поддерживаемых файловых системах, загружать и выгружать драйверы. Также оболочкой может использоваться полный TCP/IP-стек.

Оболочка EFI поддерживает сценарии в виде файлов.nsh , аналогичных пакетным файлам в DOS .

Названия команд оболочки часто наследуются от интерпретаторов командной строки (COMMAND.COM или Unix shell). Оболочка EFI может рассматриваться как функциональная замена интерпретатора командной строки и текстового интерфейса BIOS.

Расширения

Расширения EFI могут быть загружены с практически любого энергонезависимого устройства хранения данных, присоединённого к компьютеру. Например, OEM-производитель может продать систему с разделом EFI на жёстком диске, который добавил бы дополнительные функции к встраиваемому ПО EFI, размещённому в ПЗУ системной платы.

Реализация

Intel Platform Innovation Framework для EFI

Intel Platform Innovation Framework для EFI («инновационный инструментарий Intel») - ряд спецификаций, разработанных Intel совместно с EFI. Если EFI определяет интерфейс между ОС и firmware, то инструментарий определяет структуры, используемые для создания встраиваемого ПО на более низком уровне, чем интерфейс между ОС и firmware.

В частности, инструментарий включает все шаги, необходимые для инициализации компьютера после включения. Эти внутренние возможности встраиваемого ПО не определены как часть спецификации EFI, но включены в спецификацию инициализации платформы (Platform Initialization Specification), разработанную UEFI. Инструментарий был проверен на платформах XScale, Itanium и IA-32 .

Совместимость с ОС для платформы x86, требующими для работы интерфейса «legacy BIOS», достигается с помощью модуля поддержки совместимости (CSM). CSM включает 16-битную программу (CSM16), реализуемую изготовителем BIOS , и слой, связывающий CSM16 с инструментарием.

Intel разработал эталонную реализацию для инструментария под кодовым названием «Tiano». Tiano - полная, legacy-free реализация встраиваемого ПО, обеспечивающая поддержку EFI. Tiano не включает 16-битную часть CSM, но обеспечивает интерфейсы, требуемые для дополнений, реализуемых производителями BIOS. Intel не предоставляет полную реализацию Tiano для конечных пользователей.

Часть Tiano была выпущена в виде исходных текстов TianoCore проекта как EFI Developer Kit (EDK). Эта реализация включает EFI и некоторый код инициализации аппаратных средств, но не раскрывает полностью особенностей непосредственно встраиваемого ПО. Несколько лицензий использовались для этого кода, включая BSD license и Eclipse Public License .

Продукты, основанные на EFI, UEFI и спецификациях инструментария, доступны через независимых производителей BIOS, например, American Megatrends (AMI) и Insyde Software. Некоторые реализации производителей полностью основаны на Tiano, в то время как другие, соответствуют спецификациям, но не основываются на эталонной реализации Intel.

Платформы, использующие EFI или инструментарий

Все системы Itanium или Itanium 2, которые выпускаются с EFI-совместимым встраиваемым ПО, должны соответствовать спецификации DIG64.

5 апреля 2006 года Apple выпустила пакет Boot Camp , который позволяет создать диск с драйверами Windows XP, а также содержит неразрушающий инструмент разметки дисков, позволяющий установить Windows XP совместно с Mac OS X. Также было выпущено обновление встраиваемого ПО, которое добавило поддержку BIOS для данной реализации EFI. Последующие модели Macintosh были выпущены с обновлённым встраиваемым ПО. Теперь все современные компьютеры Macintosh могут загружать BIOS -совместимые ОС, такие как Windows XP, Vista и Windows 7.

Большое количество системных плат фирмы Intel выпускается с встраиваемым ПО на основе инструментария (например, DP35DP). Так, в течение 2005 было выпущено более одного миллиона систем Intel. Новые мобильные телефоны, настольные компьютеры и серверы, использующие инструментарий, начали производить в 2006 году. Например, все системные платы, которые построены на наборе системной логики Intel 945, используют инструментарий. Однако производимое встраиваемое ПО обычно не включает поддержку EFI и ограничено поддержкой BIOS.

С 2005 года EFI начал применяться в не-ПК архитектурах, таких, как встраиваемые системы на ядре XScale.

EDK включает цель NT32, которая позволяет встраиваемому ПО EFI и приложениям EFI выполняться в приложениях Windows.

В 2008 году компания MSI выпустила линейку системных плат на чипсете Intel P45 с поддержкой EFI,

Операционные системы

Графические возможности

EFI поддерживает графические меню и некоторые возможности, например, осуществленные Aptio или Great Wall UEFI.

Критика

EFI критиковался за то, что он привёл к усложнению системы, не давая существенных преимуществ , из-за отказа от альтернативных реализаций BIOS с полностью открытыми исходными текстами - OpenBIOS и coreboot .

В сентябре 2011 года Matthew Garrett предупредил о том, что условия сертификации компьютеров как совместимых с Microsoft Windows 8, могут привести к появлению компьютеров, на которые невозможно будет установить какую‐либо другую операционную систему. Microsoft заявила, что поставщики могут реализовать возможность добавления других подписей, и позже сделала это обязательным требованием сертификации, однако для устройств на ARM (ранее речь могла идти о мобильных устройствах с ОС Windows Phone , но как раз в те дни Qualcomm объявила о планах выпуска субноутбуков с поддержкой Windows 8) требование противоположное: отключение «безопасной загрузки» (и, соответственно, установка других ОС) должно быть невозможным.

Отличия в процессе загрузки BIOS и UEFI

При разработке UEFI участники форума с самого начала установили четкие рамки для каждого процесса. Процедуру загрузки (PI, Platform Initialization - инициализация платформы)материнской платы, основанной на UEFI, также можно разделить на несколько этапов. Первым из них, следующим непосредственно за включением компьютера,является Pre-EFI Initialization (PEI): система загружает модули инициализации процессора, памяти и чипсета и выполняет их. Затем осуществляется переход в окружение исполнения драйверов (DXE). В этот момент производится активация остальных компонентов, причем одновременно нескольких.

В UEFI можно интегрировать большое количество драйверов, не привязанных к определенной системе. Это значит, что производителям достаточно написать всего одну версию драйвера для всех платформ. Благодаря инициализации драйверов на этом раннем этапе запуска можно получить доступ к сетевой плате, в том числе функциям загрузки по сети или удаленного обслуживания. Кроме того, при активной графической подсистеме можно наслаждаться привлекательно оформленным меню UEFI.

Наибольший выигрыш во времени запуска достигается благодаря тому, что отпадает необходимость в поиске загрузчика на всех устройствах: загрузочный диск назначается в UEFI на этапе установки ОС. Ускорение старта системы не единственное достоинство UEFI. В отдельном EFI-разделе можно хранить множество приложений. Так, еще до загрузки самой ОС можно запустить программу диагностики, антивирусное ПО или утилиту управления системой.

Давно назревший переход на платформу UEFI постоянно откладывался. Теперь это в прошлом, и во многом - благодаря жестким дискам емкостью 3 Тбайт, которые уже доступны в продаже. BIOS ПК, используя классическую MBR винчестера, способна получать доступ только к 2 32 секторам размером 512 байт, то есть максимум к 2 Тбайт (2,2 ТБ) дискового пространства. Seagate использует секторы большего размера с целью сделать всю емкость доступной хотя бы после старта Windows. При этом компьютер на основе BIOS не сможет загрузиться с такого диска. UEFI же работает с таблицей разделов GUID (GPT, GUID Partition Table), в которой размер адреса составляет 64 бита, и поддерживает до 2 64 секторов, то есть способен обращаться к девяти зеттабайтам (9 млрд. терабайт).

Еще одна особенность UEFI - Безопасный протокол загрузки. Он позволяет установить один или несколько подписанных ключей в прошивку системы. После включения, “безопасной загрузки” UEFI предотвращает загрузку исполняемых файлов или драйверов, если они не подписаны одним из заранее установленных ключей. Другой набор ключей (Pkek) позволяет поддерживать связь между ОС и прошивкой. ОС вместе с набором ключей соответствия Pkek, которые организует связь с установлеными в прошивку ключами, может добавлять дополнительные ключи в так называемый “белый список” в прошивке. Естественно, помимо этого она может добавить ключи в “черный список”. Бинарники, которые отметились в черном списке ключей, естественно не будут срабатывать при загрузке.

Windows 8 совместно с UEFI 2.3.1 закрывают дыру в безопасности текущей схемы BIOS, которая позволяет любому загрузчику, в том числе содержащему руткит, загружаться раньше операционной системы. В отличие от BIOS, UEFI будет позволять загружаться только подтверждённым загрузчикам ОС в случае, если разрешена безопасная загрузка. Это означает, что вредоносное ПО в загрузчиках находиться больше не сможет. Microsoft утверждала, что возможность отключить безопасную загрузку UEFI у пользователей все же будет, если поставщики материнских плат реализуют эту функцию. Это позволит устанавливать на персональные компьютеры GNU/Linux и любые другие операционные системы, включая старые Windows. Но здесь уже начинает страдать защита и к тому же Windows 8 работать уже не будет. Позже эта возможность была запрещена для мобильных устройств.

См. также

Примечания

  1. Dong Wei. Beyond BIOS (foreword). Intel Press, 2006. ISBN 978-0-9743649-0-2
  2. Информация о Unified EFI Forum
  3. Информация о драйвере FAT для EFI (требует регистрации)
  4. Информация об оболочке EFI
  5. Intel Platform Innovation Framework для EFI на сайте Intel
  6. Universal Binary Programming Guidelines, Second Edition: Extensible Firmware Interface (EFI) Apple Computer
  7. Framework Overview Intel
  8. Information about EFI on Intel boards
  9. Overview of the Intel Platform Innovation Framework
  10. HP Printers
  11. http://fr.msi.com/img/NEWS/P45-Leaflet_back.pdf
  12. EFI version of Grub (Debian Linux) - Retrieved on 1 May 2008.
  13. x86 EFI boot stub
  14. Образы ядра Linux и первоначального системного окружения должны или располагаться на системном разделе EFI, или данная реализация EFI должна быть способна прочесть их с используемой данной инсталляцией Linux файловой системы
  15. Microsoft Pre-OS Video
  16. Extensible Firmware Interface Microsoft Windows Server TechCenter
  17. Microsoft bombshell: no EFI support for Vista
  18. Mary Jo Foley. Vista SP1 beta 1 to launch in mid-July . ZDNet (8 июля 2007). Архивировано из первоисточника 2 марта 2012. Проверено 20 июля 2007.
  19. Intel shows PC booting Windows with UEFI firmware

BIOS – хорошо известный термин в рядах владельцев компьютеров, который используется уже на протяжении многих лет. Осенью 2017 года Intel сообщила о своих планах полностью отказаться от BIOS на всех своих платформах до 2020 года. Вместо BIOS теперь будет использоваться только UEFI, что может навести многих на логичный вопрос: чем UEFI лучше BIOS и какая вообще между ними разница?

Чип BIOS на материнской плате Gigabyte.

UEFI и BIOS относятся к разряду так называемого «низкоуровневого» программного обеспечения, которое стартует еще до того, как компьютер начнет загружать операционную систему. UEFI - это более современное решение и оно поддерживает большое количество удобных функций, полезных на современных компьютерах. Часто бывает так, что производители называют UEFI на своих компьютерах традиционным словом “BIOS”, чтобы не заплутать пользователя. Все же между UEFI и BIOS большая разница, а современные компьютеры в основном комплектуются именно UEFI.

Что такое BIOS

BIOS – это сокращенно “Basic Input -Out System ” или "базовая система ввода-вывода" . Она живет на специальном чипе внутри материнской платы (на фото выше) и не зависит от того, установлен ли в компьютер жесткий диск. При включении компьютера первым делом включается BIOS. Эта система ответственна за «пробуждение» хардверных компонентов вашего компьютера, проверку их нормального функционирования, активацию загрузчика и дальнейшего старта операционной системы.

Старый как мир BIOS.

Пользователь может настроить большое количество различных параметров внутри BIOS. Конфигурация компонентов, системное время, порядок загрузки и так далее. Зайти в BIOS можно при помощи специальной клавиши во время включения ПК. У разных компьютеров она может быть разной. К примеру, Esc, F2, F10 или Delete. Производитель сам решает, какую выбирать. После изменения настроек все параметры записываются в саму материнскую плату .

BIOS также отвечает за процесс под названием POST – “Power -On Self -Test или "проверка при включении" . POST проверяет пригодность конфигурации компьютера и исправность хардверных компонентов. Если что-то идет не так, на экране отображается соответствующая ошибка или же компьютер начинает издавать ряд определенных звуков (также существует понятие POST-кодов и в некоторых материнских платах даже установлен соответствующий дисплей для их отображения). Интенсивность этих звуков зависит от типа ошибки, и чтобы их расшифровать, надо обратиться на сайт производителя или к руководству пользователя.

После завершения POST BIOS ищет Master Boot Record (MBR) или "главную загрузочную запись", которая сохранена на носителе компьютера. Затем инициализируется загрузчик (бутлоадер) и стартует операционная система. В BIOS также часто используется термин CMOS, что расшифровывается как «Complementary Metal -Oxide Semiconductor » или "вспомогательный металл-оксидный полупроводник ". Это обозначение специальной памяти, которая питается от встроенной в материнскую плату батарейки. Память хранит в себе различные настройки BIOS и часто для сброса параметров БИОС советуют извлечь батарейку из материнской платы. В современных компьютерах на смену CMOS пришла флеш-память (EEPROM).

Почему BIOS устарел

BIOS – это очень старая система, которая существовала еще в 1980 году (а разработана была и того раньше), на момент запуска MS-DOS. Конечно, со временем BIOS развивалась и улучшалась, но концепция и основные принципы работы остались прежними. Развитие BIOS фактически нулевое, если сравнивать его с развитием компьютеров и технологий в целом.

Традиционный BIOS имеет много серьезных ограничений. К примеру, он может запустить систему только из раздела объемом не больше 2.1 Тб (максимум 4 раздела) или меньше. В современных реалиях пользователи покупают очень емкие накопители, объем которых часто превышает 4 и даже 8 Тб. BIOS не сможет работать с таковыми носителями. Это обусловлено тем, как работает MBR (главная загрузочная запись использует 32-битные элементы). Кроме того, BIOS работает в 16-битном режиме (так как был разработано еще в 70-х годах) и имеет всего лишь 1 Мб адресуемого пространства для операции. У BIOS также проблемы с инициализацией большого количества компонентов за раз, что приводит к замедленному старту компьютера.

BIOS нуждается в замене уже на протяжении большого периода времени. Intel начала разработку EFI (Extensible Firmware Interface) еще в 1998 году и Apple перешла на использование EFI в 2006 году, когда состоялся переход на архитектуру Intel. В 2007 году Intel, AMD, Microsoft и различные производители компьютеров одобрили спецификацию UEFI – "Unified Extensible Firmware Interface " или "объединенный расширяемый интерфейс встроенного программного обеспечения ". Windows получила поддержку UEFI в Windows Vista SP1 и Windows 7. Сегодня почти все компьютеры используют UEFI вместо BIOS.

Чем UEFI лучше БИОС

UEFI устанавливается вместо BIOS на различных ПК, которые вы можете найти в магазинах электроники. Сразу же надо отметить, что пользователь не может перейти с BIOS на UEFI на существующем железе. Для этого надо приобретать новое железо, которое поддерживает UEFI. Подавляющее большинство UEFI-компьютеров включают в себя BIOS-эмуляцию (зачастую это называется Legacy BIOS) , чтобы пользователь мог установить и загрузить старую операционную систему, для работы которой нужен BIOS. Иными словами, UEFI обратно совместима.

Куда более современный и дружелюбный к пользователю интерфейс UEFI.

Новый стандарт избавился от неприятных ограничений BIOS. Компьютер с UEFI может загружаться с накопителей объемом больше 2.2 Тб. Теоретически, максимальный объем носителя для UEFI составляет 9.4 Зтб (9.4 триллиона гигабайт). Это очень много. Вся суть в том, что UEFI использует схему GPT с 64-битными элементами..

UEFI запускается в 32 и 64-битном режимах, а также имеет больше памяти для работы. Это в свою очередь конвертируется в ускоренную загрузку процессора, и удобство использования. UEFI-системы зачастую имеют красивые интерфейсы с поддержкой ввода с мыши (на скриншоте выше). Есть также и ряд других преимуществ. К примеру, UEFI поддерживает Secure Boot. Это специальная процедура, которая проверяет загружаемую операционную систему и убеждается в том, что во время ее загрузки вредоносное или просто сторонеее программное обеспечение не будет вмешиваться. Также в UEFI есть поддержка различных сетевых функций, что полезно при решении технических проблем с компьютером. В традиционном BIOS пользователь должен иметь физический доступ к компьютеру, тогда как в UEFI есть возможность удаленного доступа для конфигурации.

В целом UEFI – это такая маленькая операционная система. Она может храниться на флеш-памяти материнской платы или же ее можно загрузить из жесткого / сетевого диска. Разные компьютеры с разными UEFI имеют не менее разные интерфейсы и возможности. Все зависит от предпочтений производителя вашего компьютера.

UEFI стало большим обновлением для современных компьютеров, но подавляющее большинство пользователей вряд ли заметит какую-то существенную разницу. Да и многих этот вопрос не интересует вообще. Все же надо понимать, что приход UEFI вместо BIOS стал исключительно положительным эволюционным изменением в мире современных компьютеров, пусть даже все его прелести и новшества остаются спрятанными глубоко в материнской плате компьютера. Сейчас индустрия все еще находится в переходном состоянии от BIOS к UEFI, поэтому все прелести нового стандарта раскроются в ближайшем будущем. Чтобы ускорить этот процесс, Intel решила полностью отказаться от BIOS до 2020 года и это хорошо.

Статьи по теме: