LXF147:coreboot
Материал из Linuxformat
|
|
|
Что за штука… сoreboot?
- Думаете, ваш компьютер вполне свободен? BIOS-то наверняка проприетарная. Джонатан Робертс вникает в проект, намеренный исправить дело.
- Coreboot, говорите? Это про загрузку компьютера?
- Вы совершенно правы. В частности, coreboot должен заменить устаревшие проприетарные BIOS, работающие на большинстве ПК, на современную альтернативу с открытым исходным кодом.
- Минутку, а что такое BIOS?
- Аббревиатура разворачивается так: Basic Input/Output System (то есть «базовая система ввода-вывода»). Это крохотная программа, которая хранится на микросхеме и вступает в работу сразу при включении питания. Система знакома каждому, кто хоть раз загружал компьютер: обычно это первый экран после «представления» видеокарты, как правило, с логотипом производителя.
- Да уж, мне всегда кажется, что он там год маячит...
- Ну, BIOS выполняет много работы, а на это требуется время.
- Во-первых, базовая система выполняет несколько тестов: в частности, выясняет объем доступной памяти, инициализирует и регистрирует доступные устройства, а затем формирует среду для работы операционной системы.
- Выполнив базовую настройку, BIOS определяет загрузочное устройство и передает управление ему.
- Как все сложно! Но если эта штука сидит на большинстве существующих ПК, значит, работает хорошо? Зачем тогда ее заменять?
- Действительно, работает, но к BIOS есть по меньшей мере три серьезных вопроса, требующие безотлагательного рассмотрения.
- Каковы же эти вопросы?
- Начнем с проблемы дублирования усилий. Большая часть инициализации устройств, выполняемой BIOS, была включена для поддержки устаревших операционных систем типа DOS. В них не хватало драйверов, и BIOS инициализировала для них оборудование и служила связующим звеном.
- Но ведь в современных ОС драйверы есть?
- Да. Операционные системы типа Windows, Linux и Mac OS поставляются с собственными драйверами. В результате по окончании работы BIOS весь процесс повторяется заново.
- Эффективности тут явно мало, и поскольку современные ОС гораздо лучше поддерживают аппаратуру и загружают драйвера с большим умом, имеет смысл передать эту задачу на уровень операционной системы.
- Выходит, это из-за BIOS мой компьютер тормозит?
- Да. Для рядового пользователя это вроде и не вопрос – но представьте себе компьютерный кластер, где на каждую систему приходится по 128 ГБ ОЗУ и десяток сетевых портов. Здесь тестирование аппаратуры в BIOS займет немало времени.
- Ну, здесь-то не помешало бы исправить положение, но ситуация все же не выглядит безнадежной. Что еще можно улучшить?
- Как я уже упоминал, BIOS большинства ПК очень стары. Поэтому сегодня практически никто не знаком с их внутренней «кухней» и диагностическими средствами (кроме, конечно, Майка: его собственная ОС постоянно общается с BIOS).
- Ой, так если у меня слетит BIOS, мне и подсказки никто не даст?
- Вот именно, и лишь немногие вообще знают, с чего тут начать. То же самое произойдет, если понадобится расширить поддержку BIOS на какое-нибудь экзотическое устройство. BIOS написаны на языке ассемблера 8086, и расширения тоже надо писать на этом языке. Майку-то хорошо, но у большинства современных программистов в ассемблере опыта мало. Так что добавление поддержки нового оборудования может обернуться кошмаром.
- Да, причина серьезная. А в чем последняя проблема?
- Вероятно, последняя проблема серьезнее всех, но это зависит от вашей параноидальности. Проприетарная BIOS, которой комплектуется большинство современных систем, по определению получает неограниченный контроль над оборудованием компьютера в процессе загрузки.
- Логично предположить, что, сдав дела операционной системе, BIOS уходит на покой. Как бы не так! BIOS продолжает работать, то есть сохраняет доступ к дискам и хранящимся на них данным и ко всем сетевым подключениям. Неконтролируемый двоичный код, написанный неизвестно кем – для поборников безопасности это страшно.
- Ужас! И вот этот самый coreboot все исправит? Но как?
- Да, исправит. Сперва планировали просто залить Linux на микросхему – туда, где обычно гнездится BIOS. Это устранило бы все названные проблемы: ведь Linux знакома многим людям, драйверы грузились бы только раз, а проверить открытый код мог бы каждый.
- Поскольку планировалось заменить BIOS на Linux, проект назвали LinuxBIOS.
- «Сперва» планировали? Выходит, случился облом?
- Увы... Хотя Linux могла сделать значительную часть работы (загрузить драйверы и т. п.), оказалось, что устройства, еще не подключенные к электропитанию, она считает аннулированными.
- К тому же выяснилось, что на некоторых системах Linux не в состоянии готовить к работе многоядерные процессоры и память. Поэтому команде coreboot пришлось писать специальный код, чтобы он настраивал аппаратуру на самом низшем уровне, а затем передавал управление Linux.
- Ага, я понял... этот код составляет ядро [core] процесса загрузки [boot], от которого танцует остальное. Вот его и назвали coreboot.
- Совершенно точно.
- Но если пришлось переписывать код, не пропадут ли преимущества, которые планировались благодаря LinuxBIOS?
- Не думаю. Начнем с того, что coreboot почти целиком написан на C и почти не содержит ассемблера. Язык С весьма популярен, поэтому модифицировать и совершенствовать код сможет масса программистов. Кроме того, исходный код coreboot открытый, и бесконтрольных участков двоичной абракадабры в системе уже не будет.
- А коли работа по подготовке среды для Linux проводится минимальная, не будет и дублирования усилий.
- Данная концепция неожиданно принесла и ряд побочных выгод.
- Это каких же?
- Закончив работу, coreboot попросту запускает «полезную нагрузку». Полезная нагрузка – это другой экземпляр программного обеспечения, хранящийся на одном чипе с coreboot и выполняющий особую функцию.
- Таковым может быть ядро Linux (хотя объем современных чипов пока не дает такой возможности). А может быть и загрузчик типа Grub или SeaBIOS. Такой загрузчик вызовет хоть Windows, хоть Linux – любую операционную систему – с жесткого диска. Или это может быть одна из служебных программ, или игра... список можно продолжать до бесконечности.
- Да, классная штука этот coreboot
- быстрый, безопасный, универсальный. Можно ли его попробовать?
- Можно, если у вас есть поддерживаемая аппаратура. Раньше ее список был не слишком велик, но недавно фирма AMD объявила, что все ее изделия будут выпускаться с поддержкой coreboot по умолчанию.
- Чтобы узнать о coreboot побольше, выяснить, с чего начать, и просмотреть список поддерживаемой аппаратуры, посетите сайт проекта www.coreboot.org. Но помните, что замена BIOS – процесс непростой, и любая ошибка может загубить компьютер. Будьте осторожны и, прежде чем приступать, досконально изучите предмет.