Альтернатива BIOS
АрхивПлатформаBasic Input Output System (BIOS) является обязательной составной частью любого компьютера уже не один десяток лет. Может, пора найти ему достойную замену?
Что такое BIOS? По сути это небольшая микросхема (иногда их две), которая располагается на материнской плате. Внутри неё находится специальная микропрограмма. Её наличие характерно для подавляющего большинства компьютеров. Для чего вообще нужен BIOS? Его главной задачей является поиск и инициализация оборудования сразу же после включения компьютера. Заодно проводится небольшое тестирование устройств (POST – Power-On Self Test) и задаются их основные параметры работы. После этого ищется основной загрузчик операционной системы и дальнейшее управление передаётся ему. Кроме всего прочего, каждый BIOS предоставляет интерфейсы для базового взаимодействия с экраном и клавиатурой. В дальнейшем были добавлены функции управления питанием устройств — подсистема APM, которая вскоре была заменена на ACPI. В совсем ранних BIOS зачастую был встроен интерпретатор языка Basic, что позволяло во многих случаях вообще обойтись без загрузки полноценной ОС.
В IBM PC-совместимых машинах BIOS изначально исполнял роль посредника между операционной системой и железом. Вся работа с компонентами компьютера происходила исключительно через него. Во времена MS-DOS всё так и было. Но потом операционные системы стали "умнее" и при запуске самостоятельно определяли всё имеющееся оборудование, а затем загружали все необходимые драйвера. Получается, что одна и та же работа выполняется дважды — BIOS’ом, а потом операционкой. В результате заметно увеличивается время запуска. Проблема ещё в том, что сам по себе BIOS работает не с оперативной памятью, а загружается из ПЗУ. Быстрым этот процесс не назовёшь. Но самый главный недостаток BIOS — его 16-разрядность. Не стоит напоминать, что эра 16-разрядных десктопных процессоров и ОС закончилась довольно давно и сейчас более-менее быстрыми темпами идёт переход на 64-разрядность.
Одна из легенд гласит, что изначально BIOS создавался только в качестве временного решения. На деле получилось с точностью до наоборот. Почему же до сих пор практически везде применяется устаревшая технология? Производители чипсетов BIOS объясняют это осточертевшей мантрой о "заботе о пользователе", то бишь беспроблемном обеспечении совместимости. Однако даже если кому-то взбредёт в голову устанавливать на современный PC какую-нибудь Windows 3.11, то сделать это всё равно вряд ли удастся. Да и сама мысль о таком действе заставляет усомниться в адекватности экспериментатора, если только это не вынужденная мера.
Впервые об альтернативе задумались более 15 лет назад. Уже тогда возможностей BIOS для построения быстрых серверов стало не хватать. Инициатором нового проекта, который был назван OpenFirmware (он же OpenBoot), стала компания Sun. Чуть позже присоединились IBM, Apple и другие более мелкие компании. Спецификации OpenFirmware описываются в международном стандарте IEEE 1275-1994. Одной из ключевых особенностей является платформонезависимость драйверов, которые пишутся на диалекте языка Forth. Более того, драйвер для каждого конкретного OpenFirmware-совместимого устройства уже находится внутри него самого! При инициализации оно самостоятельно проводит диагностику, выставляет необходимые параметры и загружает собственный драйвер. В дальнейшем с этим устройством может работать любая OpenFirmware-совместимая ОС. Представьте себе, какое бы счастье испытали рядовые пользователи, если бы вендоры x86-оборудования и некий софтверный гигант из Редмонда перешли в своё время на OpenFirmware. Никаких проблем с драйверами - поставил свежую ОС и у тебя сразу же всё работает! Эх, мечты-мечты...
OpenFirmware-железо создаётся в основном для серверных платформ, но до недавнего времени оно активно использовалось в продукции Apple — все PowerPC-машины компании поддерживали этот стандарт. Проект OLPC XO-1 также использует OpenFirmware. Многие популярные UNIX-подобные ОС имеют встроенную поддержку данного стандарта — MacOS, *BSD, Linux, Solaris. На данный момент существует множество реализаций OpenFirmware, как проприетарных, так и с открытым исходным кодом (OpenBIOS). Среди возможностей хотелось бы отметить графический интерфейс для настройки компьютера, быструю загрузку и возможность восстановления данных без загрузки основной ОС. Функционал напрямую зависит от конкретной реализации.
В середине 90-х к выводу о несостоятельности классического BIOS для серверных платформ пришли Intel и HP, когда проектировали первые продукты на базе Itanium. Была разработана программа Intel Boot Initiative, которая позже была переименована в EFI, а затем отпущена в свободное плавание под именем UEFI. Extensible Firmware Interface (наращиваемый программно-аппаратный интерфейс) должен служить прослойкой между железом компьютера и ПО, заменяя, по сути, обычный BIOS. Но - с некоторыми ключевыми изменениями. Архитектура EFI подразумевает создание таблиц с информацией о платформе и ряда сервисов, которые обеспечивают работу устройств и множество других функций. За счёт них возможна работа без загрузки полноценной ОС. Собственно EFI находится в ПЗУ на материнской плате компьютера, но дополнительные сервисы, драйверы, расширения и программы могут быть загружены с другого носителя информации (чаще всего - со специального раздела на винчестере). Драйверы могут также располагаться в ПЗУ или где-либо ещё и разделяются на платформозависимые и независимые (аналогично с OpenFirmware). Зачастую они могут быть загружены ещё до старта ОС (после старта управление передаётся ей) и обеспечивают работу с клавиатурой, мышью, сетью, видеокартой, да и вообще со всеми устройствами, которые изначально распаяны на материнской плате. Для конечного пользователя это даёт полностью графический интерфейс для настройки компьютера, возможность автообновления прошивки из Сети, способность запускать некоторые программы. В последнем случае наиболее актуальными смотрятся различные программы для системного обслуживания машины: восстановления данных, разбивки дисков, антивирусного сканирования. И всё это без загрузки "взрослой" операционки!
Ещё одним важным нововведением является переход в разбивке диска от сильно устаревшей схемы MBR к современной GPT. Это вызывает проблемы при установке старых ОС (например, Windows XP). Некоторая обратная совместимость со старым BIOS всё же есть — часть функций, которые не требуют 16-разрядного кода, реализованы и в EFI. В некоторых случаях возможна эмуляции классического BIOS, но не в полном объёме.
Начиная где-то с 2005 года Intel выпускает материнские платы, которые совместимы с EFI (но это не значит, что собственно EFI там есть). А Apple опять оказалась впереди планеты всей — во всех Intel-based компьютерах используется EFI. Это, кстати говоря, приводит к проблемам при установке MacOS X на обычные x86-машины и необходимости создания утилиты BootCamp для инсталляции Windows на Маки. Любопытно, что первый компьютер для обычных пользователей на базе EFI от Insyde H2O был выпущен аж в 2003 году компанией Gateway, но дальше этого дело не пошло. Только недавно появилось несколько материнских плат от MSI и Gigabyte, в которых BIOS окончательно был убран и заменён на EFI. С операционками ситуация похожа на OpenFirmware: MacOS X 10.4-10.5 полностью поддерживает EFI, для прочих UNIX-систем требуется только специальный загрузчик (ELILO, EGRUB etc.), а вот Windows опять отстаёт — поддержка была внедрена только с SP1 для Vista (хотя и были специальные версии 2000/XP для Itanium). Работает EFI на x86-железе и в некоторых встраиваемых системах (например, в некоторых принтерах от HP).
Последний проект, о котором нельзя не сказать, называется coreboot (в девичестве LinuxBIOS). Его разработка была начата в 1999 году в недрах Лос-Аламосской национальной лаборатории. Coreboot также призван устранить недостатки BIOS, но реализуется это иным путём, чем в EFI и OpenFirmware. Основная идея заключается в как можно более быстрой передаче управления ядру операционки после запуска компьютера. Таким образом coreboot объединяет в себе функции BIOS и загрузчика ОС. За счёт этого оборудование опрашивается и инициализируется только один раз, и делается это очень быстро. В случае загрузки Linux (для которого изначально и создавался весь проект) появляется возможность сделать очень компактную и быструю графическую оболочку для работы без основной ОС. Ярчайшим примером такой оболочки является повсеместно внедряемый в последнее время SplashTop Linux, который является модификацией coreboot. В SplashTop вы получаете базовый функционал буквально через несколько секунд после запуска машины: работа в Интернете, прослушивание музыки, просмотр фото и т.п. Зачастую только это и требуется. Правда, в системах со SplashTop, как правило, классический BIOS всё же есть, но я бы назвал это просто переходным этапом.
Проблем совместимости coreboot и других ОС нет — он способен загрузить практически что угодно и откуда угодно. Но разработка проекта сопряжена с определёнными трудностями — coreboot надо адаптировать под каждую конкретную модель материнской платы и её наборы микросхем, а их в мире много. [В некоторых случаях даже была необходимость браться за паяльник!] Но проект не останавливается, а продолжает своё развитие. Coreboot работает на платформах PowerPC и x86.
Помимо вышеперечисленных альтернатив BIOS есть множество других, но они часто носят узкоспециализированный характер и обычному пользователю не особенно интересны. Их все объединяет 32-х или 64-разрядность, высокая скорость загрузки, возможность более-менее комфортной настройки и диагностики компьютера etc. Пока что вендоры не особенно спешат внедрять новые технологии, так как бешеного спроса на них нет. Да и поддержка того же EFI в самой популярной ОС в мире появилась совсем недавно. Может хоть это даст толчок к развитию? Производители BIOS вроде бы тоже не прочь перейти на новый этап и даже разрабатывают тестовые альтернативные прошивки. Но нет спроса — нет и предложения. Нам же остаётся только мечтать об избавлении от этого рудимента, оставшегося от предков наших компьютеров — первых персоналок IBM PC.