bios с открытым исходным кодом
В Intel разработали «убийцу BIOS» с открытым исходным кодом
Компания Intel пообещала положить конец использованию BIOS ещё в прошлом году — и наконец, опубликовала свой проект под названием Slim Bootloader. Он предназначен для инициализации железа и загрузки операционных систем при использовании с потребительскими PC, серверами и устройствами интернета вещей. Ключевые особенности загрузчика — небольшой размер и высокая скорость работы.
Разработчики сообщают, что Slim Bootloader, распространяемый по лицензии BSD, уже способен загружать операционные системы, включая Windows, и поддерживает обновление прошивки, а также умеет проверять новое программное обеспечение на работоспособность и целостность. Кроме того, в него встроен инструмент проверки компонентов по цифровой подписи и командная строка, через которую можно проводить настройку и диагностику.
В настоящее время загрузчик умеет работать лишь с платформами, построенными на базе Apollo Lake — поддерживаются платы UP Squared, система Intel Leaf Hill, миникомпьютеры MinnowBoard 3 и загрузка виртуальных машин QEMU. Однако энтузиастами уже создаются различные открытые компоненты для прошивок UEFI, поэтому совместимость с другими аппаратными решениями — лишь вопрос времени.
О том, как в Intel собираются использовать новую разработку, компания не сообщает. Будет ли Slim Bootloader открытой альтернативой UEFI, или же его установка станет обязательной для всех производителей материнских плат — пока неизвестно.
Для системного администратора
—>
Notice: Undefined variable: t in /var/www/user97185/data/www/system-administrators.info/yandex-ad.php on line 15
Notice: Undefined variable: r in /var/www/user97185/data/www/system-administrators.info/yandex-ad.php on line 15
Рекомендую: Фриланс-биржа | Кэшбэк-сервис | Интернет-бухгалтерия
Открытые системы BIOS для Linux
Во многих системах приличная часть времени загрузки идет на обеспечение унаследованной поддержки для MS-DOS. В различных проектах, включая LinuxBIOS и Open Firmware, проприетарный BIOS пытаются заменить на рационализированные фрагменты кода, способные делать только то, что необходимо, чтобы ядро Linux загрузилось и заработало. Эта статья дает краткий обзор данной темы.
Хоть и может показаться вполне естественным, что PC гудит при включении, на самом деле, есть фрагмент кода, который заставляет его делать это. Этот фрагмент встроен в загрузчик. В большинстве PC он называется BIOS. (Слово является акронимом basic input/output system (базовая система ввода/вывода)). BIOS обеспечивает поддержку основного оборудования, которую ранние операционные системы x86 использовали для доступа к дискам, мониторам и почти ко всему остальному.
Одно из первых действий, которое делает BIOS — проведение различных проверок включения: идентификация (и, возможно, тестирование) доступной памяти, определение тактовой частоты и так далее. Если проверка прошла удачно, компьютер гудит один раз. Этот процесс называют power-on self test (внутренний тест при включении) или POST. Англоязычные компьютерные фанаты обычно используют этот термин в качестве глагола: “That machine won’t even POST, so we should swap the memory.” (Эта машина даже не проходит тест BIOS (POST), так что надо поменять память.)
Типовая диагностика включает в себя звуковые коды (которые меняются от производителя к производителю) или диагностические коды, которые могут быть записаны по особому адресу. Некоторые съемные платы позволяют легко получить доступ ним; стандартно диагностические коды записываются в порт 80. Некоторые производители продают съемные платы, которые показывают в шестнадцатеричном формате последний байт, записанный в порт 80. Если вы проводите серьезную отладку, то захотите иметь что-то вроде этого, а возможно, и какое-то более универсальное средство, например, PC Weasel, записывающий последние несколько (256) кодов POST, которые вы затем с удовольствием прочитаете. Разумеется, точное значение этих кодов меняется от BIOS’а к BIOS’у, и только некоторые производители документируют их. К счастью, разработчики открытых исходных кодов делают это хорошо.
Что BIOS когда-либо сделал для нас?
Такая операционная система как MS-DOS может загружать дополнительные драйверы устройств, например CD-ROM’а, но требует, чтобы все драйверы оборудования были загружены при запуске системы. Стандартный интерфейс, предусмотренный для этих драйверов, поддерживается BIOS’ом и из-за этого BIOS должен исследовать устройства, идентифицировать и, возможно, инициализировать их для использования.
Точно так же BIOS отвечает за инициализацию памяти. Не все операционные системы требуют, чтобы память была инициализирована, но ранние DOS обычно требовали, и даже сегодня большинство BIOS’ов, возможно, делают это ради совместимости. Только один этот процесс может быть очень долгим и многие современные системы частично или полностью отключают его. В то же время, BIOS попытается определить количество доступной памяти. В числе прочих действий, совершаемых при загрузке, может быть инициализация и включение кэша процессора, настройка двойных CPU, построение таблицы информации о процессорах, создание списка устройств PCI, присоединенных к системе, и даже запуск аппаратных загрузчиков, предоставленных этими устройствами, которые могут загружать дополнительные драйверы.
Так что сделать надо много. Так много, что, я допускаю, выполнение POST и последующая инициализация драйверов может потребовать целой минуты или больше. BIOS может выполнять различные опросы оборудования в поисках загрузочных устройств, а в некоторых системах даже попытаться выполнить сетевую загрузку через Ethernet. Я думаю, что одна система тратит около пяти секунд, инициализируя сетевые загрузочные параметры, даже если сетевая загрузка отключена. Досадно!
Последнее по порядку, но не по важности — BIOS делает изрядное количество работы по инициализации. Что-то, но не все, оказывается полезным вне зависимости от того, что вы собираетесь загрузить. Назначение запросов прерывания (IRQ) устройствам — возможно и правда, полезный сервис, так как оно позволяет ОС просто брать список устройств и начинать работу, не программируя их. У многих устройств есть конфигурационные регистры, в которые BIOS может записывать подходящие или правильные значения на основании установок, располагающихся в системной памяти, доступной для записи. (Вообще, эта память называется CMOS, хотя не строго обязательно, что она на самом деле реализована с помощью данной технологии.)
Что происходит после того как BIOS сделает это все? Он где-то (чаще на диске) находит блок кода и выполняет его, как правило, загружая операционную систему. Если операционная система DOS или что-то в этом роде, вся эта работа по установке означает, что вы незамедлительно получите свое приглашение командной строки.
Двойная работа
Но у Linux, или BSD, или Windows есть свои собственные драйверы. Так что дальше операционная система прочитывает список прилагающихся устройств PCI и начинает загружать эти драйверы. Работа, проделанная BIOS’ом, по большей части игнорируется; операционная система, раз уж загружает драйвер SCSI, сама изучит шину SCSI. BIOS только предоставляет информацию, ничего больше, а значительная ее часть не используется. Все, что действительно требовалось от BIOS‘а, — это загрузить первую порцию кода (под названием начальный загрузчик (bootstrap loader) или bootloader) и дать возможность машине работать.
Итак, на довольно сильно нагруженной машине вам приходится ждать, пока каждое устройство будет проверено дважды. Часто аппаратный загрузчик для контроллера SCSI тратит довольно много времени, чтобы просмотреть устройства. Хуже то, что во время работы аппаратного загрузчика больше ничего не происходит. В противоположность этому, современная операционная система может загрузить драйвер SCSI, инициировать сброс шины, затем продолжить загрузку других драйверов и другую работу, перед тем как вернуться к проверке устройств. Словом, сканирование, которое делает ОС, быстрее, чем то, которое проводит BIOS.
Точная разница в скоростях зависит от операционной системы. Однако мы знаем, что в Linux сканирование при загрузке может проходить очень и очень быстро. А это значит, что BIOS не только занимает почти половину времени от включения питания до загрузки последнего драйвера; он, вероятно, тратит значительно больше. Это становится особенно заметным, когда менее существенные модули ядра (такие как звуковые драйверы) могут быть загружены позже, возможно, после загрузки более критичных вещей (таких как Web-сервисы).
Все, что мы хотим, — это получить способ загрузить ядро, не дожидаясь, пока BIOS сделает множество установок, которые ядро и само сделает, причем гораздо быстрее, лучше и, может быть, надежнее.
Поместите ядро во флэш
Есть очевидная проблема, которая появляется, когда мы удаляем все драйверы устройств из BIOS‘а: если BIOS не загружает их, как он сможет прочитать ядро? Простое решение — использовать все место, освобожденное после удаления драйверов, для хранения минимального ядра. Все, что этому ядру потребуется для загрузки, это драйвер для диска, на котором содержатся другие, загружаемые модули. После начала работы ядра они могут быть загружены динамически.
Размер современных микросхем flash-памяти BIOS’а делает эту альтернативу удивительно жизнеспособной. Во многих системах есть один или два мегабайта flash-памяти, доступной для BIOS’а. Иногда BIOS в самом деле такой большой. В других случаях памяти оказывается больше, чем надо, просто потому, что “оптом было дешевле”. В достаточной степени разобранное и сжатое ядро может легко поместиться в таком пространстве, а у Linux’овых загрузчиков есть большой опыт в создании крошечных декомпрессоров для распаковки сжатых ядер.
Такое решение, возможно, не лучшее для людей, делающих активную разработку ядра, но для системы, в которой вы хотите ускорить возможную загрузку, это может быть хорошим выбором. Проект LinuxBIOS работает над этим решением и он, должно быть, больше всего подойдет для тех, кто использует сервера и встроенные системы.
Open Firmware
Основной источник происхождения встроенных загрузчиков, который разработан не под MS-DOS, — это Open Firmware. Изначально использовавшийся компаниями Sun и Apple, этот открытый стандарт для встроенного загрузчика разработан с меньшим вниманием к системам в стиле DOS и большим интересом к таким системам, как первоначальный Mac OS, Mac OS X или Solaris, которые сами работают с драйверами. Серьезное преимущество Open Firmware — это то, что он “однажды появившись, работает везде”: устройства с аппаратным загрузчиком для Open Firmware будут работать хорошо в любой системе Open Firmware с шиной, в которую его можно вставить. Загвоздка в том, что у очень немногих устройств, созданных для x86 PC есть встроенные загрузчики Open Firmware. Тем не менее, если вы можете найти такое устройство, это может стать хорошим выбором; это, разумеется, требует, чтобы вы могли определить свои аппаратные средства и стандартизовать отдельные компоненты.
Open Firmware — наверное наиболее дружественный к крутым программистам виджет. Он не делает упор на быстрой загрузке, как например, LinuxBIOS, но в общем, гораздо быстрее, чем традиционный PC BIOS, и чрезвычайно дружелюбен к пользователям, которые ищут способы для настройки своих машин. Мир станет прекраснее, если производители x86 начнут использовать Open Firmware по умолчанию.
Другие пути создания свободного BIOS’а
Даже BIOS, который просто пытается повторить основные функции более традиционного BIOS’а, зачастую может сделать какие-то вещи более быстрыми и открытыми. Например, можно отрегулировать время, которое тратится на проверку устройств, если вы знаете, что в данной системе нет устройств, на проверку которых требуется от 5 до 10 секунд.
Одна важная вещь, которую свободный BIOS умеет делать, — это быть немного более гибким в разработке загрузчиков. К примеру, проект OpenBIOS использовался в сочетании с LinuxBIOS, из которого был взят низко-уровневый код и ядром OpenBIOS Forth в качестве полезной нагрузки, чтобы улучшить систему до Open Firmware. Большая часть самой тяжелой работы в системах x86 — создание крошечного блока кода, который загружает настоящий загрузчик; более гибкий BIOS мог бы делать эту работу и это решило бы проблему.
Обратите внимание, что хотя LinuxBIOS первоначально предназначался для Linux, он используется для загрузки других систем; например, в конце 2002 под LinuxBIOS успешно был загружен Windows 2000. Более общие достижения в расширении совместимости и поддержки происходят постоянно, но идея ухода от зависимости от проприетарного программного обеспечения для загрузки систем остается одной из самых важных.
Есть несколько довольно специализированных, но не свободных, программ BIOS. К примеру, оборудование Soekris Engineering, которое поставляется с BIOS’ом под названием comBIOS, который гораздо проще и меньше, чем стандартный BIOS, и значительно быстрее загружается.
Много внимания и никакой документации
Когда люди бьются с компьютерными проблемами, один из наиболее общих советов, который они получают, — обновить BIOS. Почему? Теоретически BIOS не используется после загрузки системы. Но на самом деле работа по инициализации, проделанная BIOS’ом, может оказаться решающей. Например, в одной х86-ой системе, которую я использовал, контроллер шины CardBus был непригоден, потому что в нем должно было быть запрограммировано IRQ; в обновленном BIOS’е это было исправлено. Теоретически в операционной системе, возможно, мог бы быть специальный код распознавания конкретно этой модели контроллера шины CardBus и программирования в него IRQ, но производителю платы проще написать код, правильно программирующий контроллер, специально для этой конкретной платы.
Традиционно считается, что в системах с открытыми исходными кодами больше шансов отловить ошибки. Однако в случае с BIOS’ом это не так очевидно. В конце концов, у создателей оборудования может быть дополнительная информация, которой не имеют разработчики BIOS’ов общего назначения. Свободно распространяемый BIOS общего назначения должен уметь выполняться на дюжине плат; с другой стороны, производитель может сделать допущения, не беспокоясь о том, что программа будет делать на другом оборудовании.
Переломный момент, вероятно, наступит, когда производители материнских плат решат использовать BIOS с открытым кодом вместо того, чтобы быть связанным с одним из главных коммерческих предложений. Я не знаю, когда это произойдет и произойдет ли вообще, но было бы неплохо увидеть BIOS с лучшей поддержкой и документацией.
Использование всего этого
Для большинства пользователей все это непрактично. Опасность некорректно запрограммированного чипа BIOS достаточно серьезна: ваш компьютер вообще не будет работать, пока чип не будет перепрограммирован, а поскольку компьютер не может загрузиться, чтобы запрограммировать чип, вам потребуется специальное оборудование. Не все, но некоторые системы имеют две микросхемы flash-памяти и позволяют с одной из них загружаться, а затем программировать вторую. Так что для большинства людей эксперименты с созданием альтернативного BIOS’а будут вероятно несколько рискованными. Тем не менее, если вы обнаружите в запасе старый компьютер, который не побоитесь испортить, и который поддерживается одним из свободно распространяемых BIOS’ов, будет забавно рискнуть. Люди увлеченные нашли бы это заманчивым.
На сегодняшний день от этой технологии скорее выиграют люди, работающие на группах серверов или встроенных системах. Если для вас имеет значение, как долго происходит перезагрузка, то это серьезный стимул вложиться в работу и время, чтобы получить что-то, что будет работать на оборудовании, которое вы используете. К тому же, ни один внедренный проект разработки не порадует так, как если вы сделаете что-то сумасшедшее и неподдерживаемое.
В конце концов эта технология даст производителям большую возможность выбора. У производителей встраиваемых систем есть больше вариантов для выбора встроенного загрузчика, и увеличение их количества поможет нам уйти от скромного набора проприетарных BIOS’ов к более открытому и конкурентному рынку.
Автор: Питер Сибах (Peter Seebach)
Этот пост September 16, 2007 at 8:21 pm опубликовал smolokhov в категории Bios, Linux. Желающие могут оформить RSS подписку на комменты. Both comments and trackbacks are currently closed.
Защита информации замена BIOS на Coreboot
Пара вступительных слов
Приветствую! Электронщики 80lvl вряд ли найдут здесь нечто новое, но надеюсь сподвигну средне продвинутого пользователя на устранение серьезной дыры в безопасности. Скромно замечу, что на русском языке не нашел ничего подобного и настолько подробного.
Речь пойдет про устранение закладок которые таит в себе современное железо, которые нельзя обойти просто используя открытую операционную систему. Обсуждение было в отдельной теме на форуме, вот еще неполный список возможных угроз. Конечно можно купить ноутбук без Intel ME, но помимо него в заводском BIOS остается иной закрытый код вида «незнамочо». Много лет назад до этого додумались хорошие люди и разработали свободные альтернативы BIOS: Coreboot и Libreboot.
«Рыночек порешал», в продаже есть проошитые ноутбуки. Однако, по множеству причин это лучше делать самому. От «зачем кормить барыг» и все равно когда выйдет обновление придется изучать процесс чтобы перешивать самостоятельно. До например, вы не можете идти на почту и банковской карты у вас тоже нет. Также, если в вас дух исследоваталя и экспериментатора сильнее сиюминутной потребительской страсти, предлагаю к ознакомлению и повторению эту статью.
Подбор компонентов
Все необходимое у вас либо уже есть, либо свободно продается в местных магазинах крупных городов. Нам понадобятся:
1. Ваш нынешний ноутбук или ПК
2. Программатор CH341A с проводом-прищепкой-SOIC8
Во многих мануалах используются Raspberry, но с программатором процесс на мой взгляд обстоит намного проще. Провод с прищепкой может быть дешевый китайский (как на фото ниже) или модные Pomona, разницы при редком использовании нет, берите какой найдете.
3. Малая крестовая отвертка и пластиковая карточка (например любая скидочная) для разборки ноутбука.
(опционально: тюбик термопасты, кисточка смахнуть пыль внутри, еще пригодится лупа если зрение не очень. Также если вы привыкли к такому подходу или если делаете устройство для кого-то, то пара нитриловых перчаток)
4. Прямые руки, внимательность, запас терпения и времени
5. Устройство, которое мы будем прошивать — я выбрал ноутбук. Для удобства далее он иногда будет именоваться «ноутбук-пациент»
Большой Брат позаботился о нас настолько, что заменить проприетарный BIOS и заодно отключить Intel ME можно на очень небольшом списке устройств.
Примерный список подходящих ноутбуков выглядит так:
Coreboot: Lenovo ThinkPad X201, X220, X230, T420, T430 (полный список устройств здесь)
Libreboot: Lenovo ThinkPad X60, X60s, X60 Tablet, X200, X200 Tablet, R400, T400, T500, Apple MacBook 1.1 и 2.1, Asus Chromebook C201 (полный список устройств здесь)
(не все устройства из списков и железо в них поддерживаются полностью, подробнее узнаете там же по ссылкам)
Разница между ними следующая:
Coreboot — свободная альтернатива BIOS с открытым исходным кодом, лишь некоторые небольшие участки кода берутся из заводского BIOS («блобы», степень их опасности и подробности здесь).
Libreboot — тоже самое, но без этих блобов, т. е. только полностью открытый код и чуть более простой процесс прошивки. Минус в том, что железо которое он поддерживает менее производительное и его сложнее найти в приемлимом состоянии. Еще он не поддерживает Windows, если вам вдруг это важно.
По итогу полученные профиты от перепрошивки:
Изначально я хотел именно Libreboot, но не нашел подходящей для него модели в приличном состоянии. Я искал с живучей батареей и, на всякий случай, с процессором который не поддерживает Intel vPro (проверить — вбить модель в этот поиск), попался под руку Lenovo ThinkPad X230. Для него подойдет Coreboot и после прошивания останутся несколько блобов и будет возможность запуска Windows (с внешнего диска, например) если выбрать SeaBIOS. Именно на примере X230+Coreboot будет описано данное руководство. Когда-нибудь и этот ноутбук придется менять и я дополню статью таким же опытом уже с Libreboot, будем надеяться у меня будет такая возможность.
Подготовка компонентов
1. Ваш нынешний ноутбук или ПК
Я использовал live образ Debian 9, возможно подойдут и другие дистрибутивы, проверяйте сами. Открываем терминал.
(Напоминаю для новичков, что команду нужно копировать после значка «$» и затем вставлять в терминал).
1) Устанавливаем необходимые пакеты:
2) Создаем 2 папки:
3) Готовим Coreboot:
2. Программатор CH341A с проводом-прищепкой-SOIC8
bios
Смотрим Видео по работе с программатором (тысячи их там же), самое важное соблюдать нумерацию, все 1 (они же — единицы, они же — ключи) подключать между собой. То есть:
Красный провод идущий к прищепке это 1.
Площадка к которой крепится провод также содержит нумерацию и красный провод должен быть соединен к 1 на площадке.
Затем, смотрим на программатор (USB разъем смотрит влево): на программаторе снизу справа есть выбор 25XX или 24XX, справа вверху — будет 1, как указано в подсказке там же), поднимаем лапку вверх и площадку устанавливаем в левую часть, надежно вставили и опустили лапку вниз. Смотрите видео если вдруг непонятно.
Также 1 это ключ (выемка или углубление) чипа на материнской плате ноутбука (в который зашит BIOS), соответственно 1 к 1 т. е. красный провод прищепки должен соединяться к ножке рядом с этой выемкой.
И последнее что важно помнить, сначала убеждаемся, что на устройстве которое мы собрались прошить нет питания (отсоединена внешняя батарея, зарядка, внутренняя батарейка), потом подключаем прищепку к чипу, только после этого вставляем программатор в USB-разъем текущего ноутбука или ПК. Отключение в обратном порядке — вытаскиваем программатор, затем снимаем прищепку.
3. Ноутбук-пациент для прошивки
1) Первым делом обновляем заводской BIOS до последней официальной версии.
(необязательно, но на всякий случай я это сделал: настройки BIOS сбросил на заводские и разрешил прошивку)
2) (опционально) Если хотите сделать апгрейд железа лучше всего для начала протестировать работу новых компонентов на заводском BIOS. И только после этого приступать к прошивке Coreboot.
3) Отсоединяем зарядку и батарею, после этого (опционально: одеваем перчатки) приступаем к разборке ноутбука:
Видео по разборке (тысячи их)
Официальные мануалы:
User Guide
Hardware Maintenance Manual (ниже указаны страницы по оглавлению)
4) Разобрав ноутбук-пациент выкидываем из него лишние детали (не во всех исполнениях все это есть):
WLAN — с. 68 — все встроенные варианты Wi-Fi адаптеров этого ноутбука требуют проприетарные драйвера, они будут работать на том же Tails (привет «параноикам») так как там полно блобов для поддержки различного оборудования, но не заработают на чистом Debian. Заменить их на адаптеры использующие свободные драйвера и поддерживающие смену MAC адреса, это или адаптеры фирмы Atheros (AR9285, AR9382 и т. п.), или USB-адаптеры (различных размеров и функционала на любой вкус).
WWAN — с. 70
Bluetooth — с. 74
Сканер отпечатков пальца — расположен рядом с тачпадом, откручивается элементарно или просто отсоединяется шлейф.
Микрофоны — с. 88 — их два, находятся на планке вместе со светодиодами. Удаляются вместе с планкой.
Камера — с. 86
(опционально: удаляем кисточкой пыль, меняем термопасту)
5) Отсоединяем внутреннюю батарейку (с. 65).
mni chip
6) Находим чипы в которых записан текущий BIOS. Их два, находятся примерно под тачпадом. Выглядят вот так:
Верхний на 4 МБ, нижний на 8 МБ. Считывать и прошивать будем оба.
7) Считайте своими глазами (опционально: с помощью лупы, а если чипы заляпаны аккуратно протрите их тканью) и запишите где-нибудь буквы и цифры которые указаны на этих чипах, например «MX25L3206E» и «MX25L6406E», они нам понадобятся на следующем этапе.
Процесс прошивки
Многие команды терминала взяты отсюда. Видеопроцесс прошивки через Raspberry.
1. Делаем backup ВЕРХНЕГО чипа заводской прошивки
Присоединяем прищепку к верхнему чипу. Помним, что красным проводом к выемке на чипе и все остальное о чем сказано выше. Как только соединение выглядит надежно вставляем программатор в порт нынешнего ноутбука или ПК. Выглядеть это будет примерно так:
(отличие будет только в способе крепления прищепки к программатору)
1) Идем в папку:
2) Читаем (пока только читаем) ВЕРХНИЙ чип:
3) Вывод должен быть таким:
(Если вывод другой, значит вы что-то сделали не так, скорее всего нужно отсоединить программатор и проверить соединение прищепки к чипу. Потом снова повторить чтение).
Смотрим какое обозначение мы считали своими глазами с чипа, выбираем его группу из этого списка («MX25L3205(A)», «MX25L3205D/MX25L3208D», «MX25L3206E/MX25L3208E», «MX25L3273E») и эту группу дальше вставляем вместо моей.
4) Делаем ПЕРВЫЙ дамп ВЕРХНЕГО чипа:
5) Делаем ВТОРОЙ дамп ВЕРХНЕГО чипа:
6) Сверяем контрольные суммы дампов:
Если суммы совпадают значит считали верно и идем к следующему шагу, если нет — начинаем все заново.
7) Вытаскиваем программатор, снимаем прищепку и переходим к следующему шагу
2. Делаем backup НИЖНЕГО чипа заводской прошивки
1) Читаем (пока только читаем) НИЖНИЙ чип:
2) Вывод должен быть таким:
(Если вывод другой, значит вы что-то сделали не так, скорее всего нужно отсоединить программатор и проверить соединение прищепки к чипу. Потом снова повторить чтение).
Смотрим какое обозначение мы считали своими глазами с чипа, выбираем его группу из этого списка («MX25L6405», «MX25L6405D», «MX25L6406E/MX25L6408E», «MX25L6436E/MX25L6445E/MX25L6465E/MX25L6473E») и эту группу дальше вставляем вместо моей.
3) Делаем ПЕРВЫЙ дамп НИЖНЕГО чипа:
4) Делаем ВТОРОЙ дамп НИЖНЕГО чипа:
5) Сверяем контрольные суммы дампов:
Если суммы совпадают значит считали верно.
6) Вытаскиваем программатор, снимаем прищепку и переходим к следующему шагу
3. Сохраняем всю папку /bios-backup в надежное место, на случай если дальше что-то пойдет не так
4. Готовим прошивку Coreboot
1) Соединяем 2 дампа в один файл:
2) Берем блобы из заводского BIOS для дальнейшего использования:
3) Компилируем нашу новую прошивку:
3.1) Выполняем команду:
3.2) Устанавливаем следующие настройки, сохраняем и выходим:
3.3) Выполняем команду:
4.2) Записываем в него и сохраняем:
4.3) Выполняем команды:
4.4) Проверим добавление:
Должна появиться строка «bootorder» ближе к концу списка.
5. Прошиваем Coreboot
ВЕРХНИЙ ЧИП:
1) Читаем (пока только читаем) ВЕРХНИЙ чип:
2) Если он не считался — проверяем соединение и т. д., если считался — прошиваем:
3) Вывод должен быть таким:
4) Вытаскиваем программатор, снимаем прищепку и переходим к следующему шагу
НИЖНИЙ ЧИП:
1) Читаем (пока только читаем) НИЖНИЙ чип:
2) Если он не считался — проверяем соединение и т. д., если считался — прошиваем:
3) Вывод должен быть таким:
4) Вытаскиваем программатор, снимаем прищепку и переходим к следующему шагу
При последующих перепрошивках (в рамках Coreboot) нижний чип повторно прошивать не нужно, он остается без изменений. Также после первой прошивки чипы можно будет прошить без программатора, напрямую из системы, как в точности это делать пока не разбирался.
Проверка и дополнительные настройки
1) Соединяем клавиатуру, ОЗУ, батарею и проверяем включение ноутбука.
2) Теперь, дабы узнать це зрада чи перемога?» статус Intel ME, на прошитом ноутбуке-пациенте загружаемся в Debian (так как в моем примере live образ, то нужно снова установить необходимые пакеты и скачать код).
Выполняем следующие команды:
И сверяем вывод с этой таблицей:
Если результат такой же как в первой колонке («Stock firmware») — ровняйте руки и начинайте процесс прошивки заново. Значения как в 3 и 4 колонках — Intel ME отключен.
3) Можно заодно проверить наличие и работу Intel AMT:
В случае успеха должно выдать:
4) Если проверки пройдены успешно — отключаем ноутбук и полностью его собираем.
5) (опционально) Если часто работаете от сети и хотите как можно дольше сохранять ресурс батареи установите пороги зарядки батареи: зарядка начнется ниже 40% и продлится до 70%:
Как задать иные пороги смотрим здесь. При отсоединении батареи эти настройки перестанут работать и нужно выполнять их заново или писать скрипт на автовыполнение.
6) (опционально) При включении ноутбука можно нажать клавишу Esc и выбрать цифрой «Payload [nvramcui]», в нем есть немного настроек, я применил такие:
Для сохранения и выхода нажать F1.
7) Прежний Debian установленный на другом ноутбуке или свежеустановленный на этом ноутбуке (проверял дважды) — отказывается запускаться, нужно загрузить его с другого ноутбука и выполнить в терминале:
Если у вас есть более элегантное решение без использования другого ноутбука, пожалуйста, поделитесь им.
8) (опционально) Если вместо SeaBIOS выбрали GRUB, можно установить дистрибутив с полнодисковым шифрованием включая раздел /boot.
Послесловие
Дописав я прошил снова заводской BIOS из снятых дампов и повторил снова уже по этой статье чтобы убедиться в ее работоспособности. Прошивка и проверка прошли успешно.
Критика и поправки строго приветствуются, наверняка можно сделать команды изящнее или я где-то ошибся в определениях, я только учусь.
Готов к тапкам в мой огород и к вашим вопросам.
Защита информации замена BIOS на Coreboot : 3 комментария
Пытался обновить BIOS на своем X230 на Coreboot по вашей инструкции.
Дошел до шага 3.3) Выполняем команду: make и получаю слудующую ошибку:
Можете подсказать в чем может быть проблема?
Дополнительную информацию при необходимости всю предоставлю.
Пути все правильные делал все по инструкции.
С наилучшими пожеланиями
Алексей
Здравствуйте!Какой дистрибутив линукса используете?
Все делал под Ubuntu 18.04.
Можете дать электронную почту для контакта, то мне не приходит оповещение о том что вы ответили, просто случайно зашел посмотреть.
Спасибо.
С наилучшими пожеланиями
Алексей
Добавить комментарий Отменить ответ
Для отправки комментария вам необходимо авторизоваться.