Russian Fedora

cообщество русскоязычных участников
международного проекта Fedora

Обновление firmware на материнской плате

Это архивная статья

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

В рамках проекта Coreboot энтузиастами ведется работа по разработке утилиты flashrom, которая позволяет обновлять firmware. Разработчики добились удивительных результатов при минимуме или полном отсутствии помощи от производителей. Мы используем их утилиту в реальных системах, и она работает прекрасно (если материнская плата в списке поддерживаемых). Однако хотелось бы заполучить стандартный механизм обновлений в Linux, независимый от хотелок конкретного производителя, и не требующий перезагрузок в DOS. Для начала Peter Jones, официальный представитель Red Hat в рабочей группе по UEFI, начал работу по реализации вскоре выходящего стандарта UEFI 2.5 в Linux. В этой версии будет предусмотрен механизм для штатного обновления прошивки. UEFI, конечно, становится все сложнее и сложнее, но видимо производителям оборудования так комфортнее - предоставлять стандартный API к сложному firmware вместо документации и исходников к простому и малофункциональному BIOS.

Peter, пользуясь своим положением, сумел достать оборудование, и он с другим нашим коллегой, Richard Hughes, начал работу над стандартным средством обновления. Peter быстро набросал прототип утилиты fwupd для обновления из консоли, а Richard разработал демон для GNOME с тем же названием, о чем он рассказал в своем блоге.

Вероятно, проекты будут как-то унифицированы. GNOME-утилита будет либо устанавливать rpm-пакет с обновлением, либо проверять некоторый web-интерфейс, откуда она будет получать информацию о доступности обновлений и уведомлять пользователя через стандартную систему уведомлений. Сейчас наши парни работают вместе с инженерами Microsoft над полностью системно-независимым стандартом для обновлений. Вероятно впервые Linux будет не вторичной платформой, а полноправным участником стандартного процесса, если вспоминать архитектурные железячные решения.

Самое интересное, что механизм теоретически позволяет обновлять не только системное firmware, но и прошивки на подключаемом оборудовании.

Richard, как proof-of-concept, начал работу над возможностью обновления своего ColorHug с помощью этого API.

Работа наших коллег поможет и другим дистрибутивам. Т.к. GNOME, это система по умолчанию в Ubuntu (они ее кое-как спрятали за единственный самодельный компонент - Unity), то и пользователи этого дистрибутива рано или поздно получат возможность производить надежное обновление системы. Как и обычно, наши улучшения придут туда с небольшим, на год или два, опозданием.

Интереснее выглядила бы перспектива для Coreboot. К сожалению, складывается впечатление, возможно неверное, что разработчики Coreboot долгое время были против UEFI по политическим причинам. Пару лет назад какая-то начальная поддержка UEFI была даже включена в дерево, но затем ее удалили, и текущее состояние дел нам неизвестно. Проект испытывает сильное влияние Google, который активно использует его в своих хромбуках, а в других областях IT мы заметили, что Google не очень заинтересован в поддержке сторонних стандартов, предпочитая делать по-своему, вплоть до создания новых языков программирования. Тем не менее, нужно отметить, что роль Google в проекте очень положительная - они не только наняли многих разработчиков Coreboot, но и продолжают включать в него новый функционал (например, поддержку AArch64, которую продолжают улучшать), и коммьюнити жаловаться не на что. В конце концов, кому надо, тот пусть и пишет патчи.

В отличие от огромного Google, наши коллеги продолжают работать над ПО, использующим возможности UEFI. Мы, таким образом, заходим с другой стороны - через создание нужного нам открытого стандарта, которому будут подчиняться другие заинтересованные лица и организации, и который мы и будем использовать. Недавно, например, в systemd был добавлен gummiboot, и добавлена возможность перезагружаться в режим настройки UEFI.

Насчет настройки - интересно, что почти аналогичную функциональность реализовал Rich WM Jones в своем микрофреймворке.

Его подход таков - вы создаете миниатюрное UEFI-приложение, которое запускается при загрузке системы и настраивает переменные. Потом можно еще раз перезагрузиться, с уже измененными параметрами.

Кстати, недавно gummiboot был исправлен для работы на AArch64.

Самое время, учитывая, что Gigabyte с минуты на минуту начнет выпуск AArch64-оборудования, да и говорят, что Samsung может купить AMD, которые, как вы помните, переходят на ARM

Комментарии