Прошивка Linux что это такое

Обновлено: 01.07.2024

Позиция Linux-разработчика/инженера по прошивке использует навыки разработки программного обеспечения для разработки, внедрения и тестирования программного обеспечения на уровне ОС Linux, а также встроенного ПО, используемого в устройствах, связанных с системами домашней автоматизации/управления и безопасности. Работа предполагает работу с кодом ядра и охватывает различные протоколы. Работа также включает в себя разработку тестовых сценариев для лабораторных испытаний и проверки. Основное внимание будет уделяться разработке и поддержке новых и существующих продуктов для домашней автоматизации/систем управления и безопасности.

Обязанности:

  • Разрабатывать, отлаживать и поддерживать встроенное ПО для микропроцессоров на базе ARM.
  • Оперативно реагируйте на меняющиеся потребности в конструкции встроенного ПО, например вносите изменения для добавления или изменения функций как новых, так и существующих продуктов.
  • Разработка, изменение и отладка драйверов и ядра Linux.
  • Напишите тестовые сценарии для проверки функциональности кода в лабораторной среде.

Требования:

  • Должен обладать хорошими навыками программирования на C, особенно для встраиваемых устройств.
  • Должен хорошо разбираться в разработке ядра Linux.
  • Должен хорошо разбираться в разработке кода для микропроцессоров. Предпочтение отдается тем, кто знаком с Broadcom BCM2837, AllWinner H5 и Freescale iMX6.
  • Опыт написания кода для домашних систем безопасности.
  • Опыт разработки и отладки драйверов для периферийных устройств и систем микроконтроллеров (например, I2C, SPI, UART, USB, Ethernet и т. д.).
  • Опыт программирования приложений на уровне ОС Linux.
  • Опыт работы с uBoot, ядром Linux и утилитами командной строки Linux bash.
  • Опыт работы с загрузчиками.
  • Опыт работы с Z-Wave.
  • Степень бакалавра в области электротехники/вычислительной техники или информатики.
  • 5–10 лет опыта разработки встраиваемого программного обеспечения.

Желаемые навыки:

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

Мы ищем людей, которые преуспевают в динамичной, предприимчивой, ориентированной на технологии культуре и настойчиво добиваются результатов.

  • Эта должность находится в нашем корпоративном офисе в Сарасоте, Флорида.
  • Конкурентоспособная заработная плата и 401 тыс.
  • Быстро развивающаяся среда с возможностями продвижения.
  • Возможность присоединиться к команде по продажам и развитию бизнеса, которая продемонстрировала успешный маркетинг решений для домашней автоматизации для 5 из 10 ведущих строительных компаний.
  • Мы предлагаем нашим сотрудникам полный социальный пакет, включая: медицинское обслуживание, стоматологию, зрение, страхование по инвалидности, оплачиваемый отпуск и отпуск.

Клэр Контролз, ООО. является работодателем с равными возможностями и стремится к разнообразию рабочей силы.

Микропрограмма Linux – это пакет, распространяемый вместе с ядром Linux, который содержит двоичные двоичные объекты микропрограммы, необходимые для частичной или полной функциональности определенных аппаратных устройств. Эти бинарные BLOB-объекты обычно являются собственностью, поскольку некоторые производители оборудования не выпускают исходный код, необходимый для сборки самого встроенного ПО.

Современные видеокарты AMD и NVIDIA почти наверняка требуют загрузки двоичных BLOB-объектов для правильной работы оборудования.

Начиная с Broxton (микроархитектура на основе Skylake) процессорам Intel требуются двоичные BLOB-объекты для дополнительных состояний простоя с низким энергопотреблением (DMC), планирования графической нагрузки на различных графических параллельных ядрах (GuC) и разгрузки некоторых мультимедийных функций из ЦП на ГП (HuC). [1]

Кроме того, для современных наборов микросхем Intel Wi-Fi почти всегда требуются большие двоичные объекты. [2]

Содержание

Установка

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

Ядро

Важно учитывать несколько параметров ядра при встраивании поддержки встроенного ПО для определенных устройств в ядро ​​Linux:

Предупреждение
Включение файлов встроенного ПО в двоичные образы ядра, недоступные в соответствии с условиями GPL, может привести к нарушению GPL, если образ будет распространяться. Целесообразно проконсультироваться с юристом, прежде чем распространять образы, содержащие файлы прошивки из sys-kernel/linux-firmware.

Для ядер до версии 4.18:

CONFIG_FIRMWARE_IN_KERNEL (УСТАРЕЛО) Обратите внимание, что этот параметр был удален, начиная с версии 4.16 и выше.[3] Включение этой опции ранее было необходимо для сборки каждого требуемого большого двоичного объекта встроенного ПО, указанного в EXTRA_FIRMWARE, непосредственно в ядре, где функция request_firmware() найдет их без обращения к пользовательскому пространству. В старых ядрах необходимо включить его.

Для ядер, начиная с 4.18:

Средство загрузки встроенного ПО ( CONFIG_FW_LOADER ) Этот параметр предоставляется в случае, когда ни один из модулей в дереве не требует поддержки загрузки встроенного ПО в пользовательском пространстве, но модуль, созданный вне дерева, требует. Встроить именованные большие двоичные объекты встроенного ПО в двоичный файл ядра ( CONFIG_EXTRA_FIRMWARE ). Этот параметр представляет собой строку и принимает (разделенные пробелами) имена файлов встроенного ПО, которые должны быть встроены в ядро. Затем эти файлы будут доступны ядру во время выполнения.

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

Где взять прошивку?

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

  • Пакет linux-image (содержащий ядро ​​Linux и лицензионную прошивку)
  • Пакет linux-firmware (который содержит другие лицензионные прошивки)
  • Пакет linux-firmware-nonfree в мультивселенной (который содержит встроенное ПО, для которого отсутствуют лицензии на повторное распространение)
  • Отдельный пакет драйверов
  • В другом месте (диск с драйверами, вложение электронной почты, веб-сайт)

Обратите внимание, что пакет linux-firmware-nonfree не установлен по умолчанию.

Файлы прошивки помещаются в /lib/firmware. Если вы заглянете внутрь своей установки Ubuntu, вы увидите сотни файлов прошивки, которые были установлены этими пакетами.

Как используется прошивка?

  1. Драйвер запрашивает файл прошивки "ar9170.fw"
  2. Ядро отправляет событие udev с запросом прошивки
  3. Программа udev запускает скрипт, который загружает данные из файла прошивки в специальный файл, созданный ядром
  4. Ядро считывает данные микропрограммы из созданного им специального файла и передает данные драйверу.
  5. Затем драйвер делает все необходимое для загрузки микропрограммы в устройство.

Если все пойдет хорошо, вы должны увидеть что-то вроде следующего в вашем /var/log/syslog:

Если возникла проблема, вы можете увидеть примерно следующее:

К счастью, процесс загрузки прошивки несложно наблюдать в действии. Используя следующие шаги отладки, мы можем определить, какой шаг в процессе дает сбой.

Начальный этап

Во-первых, убедитесь, что файл микропрограммы присутствует. Если у вас отсутствует файл прошивки, попробуйте найти его копию в Интернете. Если вы найдете его, рассмотрите возможность регистрации ошибки в linux-firmware, если прошивка имеет лицензию на повторное распространение, или в linux-firmware-nonfree в противном случае.

Если файл присутствует, проверьте, не пуст ли он, используя 'ls -l':

Размер файла — это число, указанное после имени пользователя и группы (в данном случае — root и root). Оно должно быть ненулевым. На этом этапе вы можете поискать в Интернете хэш файла md5sum и сравнить его с этим файлом, но маловероятно, что файл поврежден. Если прошивка повреждена, вы, скорее всего, увидите сообщение об ошибке от драйвера, в котором говорится, что прошивка недействительна или ее все равно не удалось загрузить.

На данный момент мы убедились, что файл встроенного ПО существует, но не был загружен. Нам нужно выяснить, какие из шагов 2-4, упомянутых выше, терпят неудачу. Начнем с шага 2.

Событие ядра отправлено в Udev

На втором этапе ядро ​​отправляет событие в подсистему udev. К счастью, есть удобный инструмент, который мы можем использовать для мониторинга этих сообщений о событиях: udevadm. Начните с выгруженного драйвера. Затем выполните:

Теперь загрузите драйвер. Иногда загрузка одного драйвера вызывает запрос на прошивку. В других случаях, как и в случае с драйвером e100, вам нужно будет что-то сделать, чтобы инициировать запрос прошивки.В случае драйвера e100 прошивка запрашивается после того, как пользователь попытается активировать интерфейс Ethernet, выполнив команду «ip link set eth0 up».

После того как вы инициировали запрос прошивки, вы должны увидеть событие udev, которое выглядит следующим образом:

Если вы не видите события с этими тремя элементами, значит, запрос ядра не распространяется на udev. На этом этапе вам следует сообщить об ошибке в пакете udev. Если вы видите это событие, перейдите к следующему шагу.

Udev отправляет прошивку в ядро

9.10 (Karmic Koala) и более ранние версии:

10.04 (Lucid Lynx) и более поздние версии:

Это правило указывает udev запускать программу прошивки, которую можно найти в /lib/udev/, всякий раз, когда она видит событие с ACTION=add и SUBSYSTEM=firmware. В 9.10 и более ранних версиях программа микропрограммы будет передавать остальную информацию о событии udev в виде переменных среды. В версии 10.04 и более поздних в качестве параметров будут передаваться имя файла микропрограммы и путь к устройству.

Мы можем наблюдать, как udev обрабатывает событие, включив дополнительное ведение журнала:

Когда вы инициируете запрос на прошивку, udev записывает свои действия с этим событием в /var/log/syslog. Например, вы должны увидеть что-то вроде:

Если вы не видите, как запускается файл firmware.sh, скорее всего, у вас возникли проблемы с правилами udev. Проверьте наличие пользовательских правил udev в файле /etc/udev/rules.d. Любые файлы в этом каталоге переопределяют файлы с тем же именем в /lib/udev/rules.d. Правила в /etc/udev/rules.d также могут препятствовать правильному выполнению правила микропрограммы. Если у вас возникли проблемы на этом этапе, вам следует обратиться за помощью к сообществу. Если вы считаете, что обнаружили проблему в udev, не стесняйтесь сообщать об ошибке.

После того, как вы отладили выполнение udev, вы должны вернуть вывод журнала на нормальный уровень:

Ядро считывает прошивку

Если сценарий firmware.sh был запущен udev, все обнаруженные ошибки должны отображаться в вашем файле /var/log/syslog. Если вы видите здесь какие-либо ошибки, они могут быть вызваны скриптом firmware.sh (который является частью udev) или ядром. Если вы видите следующую ошибку:

вы должны открыть ошибку ядра. Если вы видите какую-либо другую ошибку, вы должны открыть ошибку в udev.

Ядро передает прошивку драйверу

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

Ядро/Прошивка (последним удаленным пользователем khadgaray 11.12.2013, 08:01:04)

На некоторых недавно выпущенных ПК может быть необходимо или желательно загрузить прошивку, чтобы заставить их работать наилучшим образом. Существует каталог /lib/firmware , в котором ядро ​​или драйверы ядра ищут образы прошивки.

Чтобы получить прошивку, либо укажите в браузере один из указанных выше репозиториев, а затем загрузите необходимые элементы, либо установите git-2.35.1 и клонируйте этот репозиторий.

Для некоторых других прошивок, особенно для микрокода Intel и некоторых устройств Wi-Fi, необходимая прошивка недоступна в указанном выше репозитории. Некоторые из них будут рассмотрены ниже, но иногда необходим поиск нужной прошивки в Интернете.

Файлы прошивки обычно называют большими двоичными объектами, поскольку вы не можете определить, что они будут делать. Обратите внимание, что прошивка распространяется под различными лицензиями, которые не разрешают дизассемблирование или обратный инжиниринг.

Прошивки для ПК делятся на четыре категории:

Обновления ЦП для устранения ошибок, обычно называемых микрокодом.

Прошивки для видеоконтроллеров. На компьютерах с архитектурой x86 это требуется для устройств ATI (чипы Radeon и AMDGPU) и может быть полезно для графических процессоров Intel (Skylake и более поздние версии) и Nvidia (Kepler и более поздние версии).

Всем устройствам ATI Radeon и AMGPU требуется прошивка, чтобы иметь возможность использовать KMS (настройка режима ядра — предпочтительный вариант), а также для Xorg. Для старых чипов Radeon (до R600) прошивка все еще находится в исходниках ядра.

Для графических процессоров Nvidia начиная с Kepler и выше требуется подписанная прошивка, иначе драйвер nouveau не сможет обеспечить аппаратное ускорение. Теперь Nvidia выпустила прошивку вплоть до Turing (большинство, а может быть, и все графические процессоры GTX16xx и RTX20xx) для linux-прошивки, и ядра из linux-5.6 должны ее поддерживать, хотя для поддержки Mesa может потребоваться версия для разработчиков, пока не будет выпущена Mesa-20.2. Обратите внимание, что более быстрые часы, чем по умолчанию, не поддерживаются выпущенной прошивкой.

Обновления прошивки для проводных сетевых портов. В основном они работают и без обновлений, но, возможно, с обновленной прошивкой они будут работать лучше. Для некоторых современных ноутбуков прошивка как для проводной сети Ethernet (например, rtl_nic), так и для устройств Bluetooth (например,qca) требуется, прежде чем можно будет использовать проводную сеть.

Прошивки для других устройств, таких как Wi-Fi. Эти устройства не требуются для загрузки ПК, но для их использования требуется прошивка.

[Примечание]

Хотя для загрузки большого двоичного объекта микропрограммы не требуется, следующие инструменты могут быть полезны для определения, получения или подготовки необходимой микропрограммы для ее загрузки в систему: cpio-2.13, git-2.35.1, pciutils-3.7. .0 и Wget-1.21.3

Обновления микрокода для ЦП

Как правило, микрокод может быть загружен BIOS или UEFI, и его можно обновить путем обновления до более новой версии. В Linux вы также можете загрузить микрокод из ядра, если вы используете процессор семейства AMD 10h или более поздней версии (впервые представленный в конце 2007 г.) или процессор Intel 1998 г. и более поздней версии (Pentium4, Core и т. д.), если обновленный микрокод имеет был освобожден. Эти обновления действуют только до тех пор, пока компьютер не будет выключен, поэтому их необходимо применять при каждой загрузке.

Intel предоставляет обновления своего микрокода для процессоров Skylake и более поздних версий по мере выявления новых уязвимостей, а в прошлом предоставляла обновления для процессоров, начиная с SandyBridge, хотя они больше не поддерживаются для новых исправлений. Новые версии прошивки AMD появляются редко и обычно применяются только к нескольким моделям, хотя производители материнских плат получают дополнительные обновления, которые могут обновлять микрокод вместе с изменениями для поддержки новых процессоров и более быстрой памяти.

Существует два способа загрузки микрокода: "ранний" и "поздний". Ранняя загрузка происходит до запуска пользовательского пространства, поздняя загрузка происходит после запуска пользовательского пространства. Неудивительно, что ранняя загрузка предпочтительнее (см., например, пояснительный комментарий в коммите ядра, указанный в x86/microcode: Ранняя загрузка микрокода на LWN). Действительно, необходимо обойти одну конкретную ошибку в ранних процессорах Intel Haswell с TSX. включено. (См. Инструкции Intel по отключению TSX: ошибки, обнаруженные в Haswell, Haswell-E/EP, Broadwell-Y .) Без этого обновления glibc может работать неправильно в нестандартных ситуациях.

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

Чтобы подтвердить, какой у вас процессор(ы) (если их больше одного, они будут идентичными), посмотрите в /proc/cpuinfo.

Если вы создаете initrd для обновления встроенного ПО для разных машин, как это сделал бы дистрибутив, перейдите к пункту «Ранняя загрузка микрокода» и сопоставьте все большие двоичные объекты Intel с GenuineIntel.bin или сопоставьте все большие двоичные объекты AMD с AuthenticAMD. мусорное ведро Это приводит к увеличению размера initrd — для всех машин Intel в обновлении 20200609 размер составляет 3,0 МБ по сравнению с обычным размером 24 КБ для одной машины.

Микрокод Intel для процессора

Раньше Intel не предоставляла сведений о том, версии каких BLOB-объектов были изменены, но теперь это подробно описано в примечаниях к выпуску.

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

Преобразование семейства процессоров, модели и степпинга в пары шестнадцатеричных цифр. Для Skylake i3 6100 (описываемого как ЦП Intel(R) Core(TM) i3-6100) соответствующими значениями являются семейство процессоров 6, модель 94, шаг 3, поэтому в этом случае требуется идентификация 06-5e-03. Взгляд на капли покажет, что для этого процессора есть один (хотя для более старых проблем он, возможно, уже был применен BIOS). Если для вашей системы существует большой двоичный объект, проверьте, будет ли он применяться, скопировав его (заменив идентификатором вашего ЦП) туда, где его сможет найти ядро:

Теперь, когда микрокод Intel подготовлен, используйте следующие параметры при настройке ядра для загрузки микрокода Intel:

После того, как вы успешно загрузили новую систему, принудительно выполните позднюю загрузку с помощью команды:

Затем используйте следующую команду, чтобы узнать, было ли что-либо загружено: (Примечание: даты создания микрокода могут быть на несколько месяцев раньше даты его выпуска.)

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

Если микрокод не обновлялся, новый микрокод для процессора этой системы отсутствует. Если он обновился, теперь вы можете перейти к разделу «Ранняя загрузка микрокода».

Микрокод AMD для процессора

При настройке ядра используйте следующие параметры для загрузки микрокода AMD:

После того, как вы успешно загрузили новую систему, принудительно выполните позднюю загрузку с помощью команды:

Затем используйте следующую команду, чтобы узнать, было ли что-то загружено:

Этот исторический пример со старого Athlon(tm) II X2 показывает, что он был обновлен. В то время все ЦП все еще сообщались в сведениях о микрокоде на машинах AMD (текущая позиция для машин AMD, где доступен более новый микрокод, неизвестна):

Если микрокод не обновлялся, новый микрокод для процессора этой системы отсутствует. Если он обновился, теперь вы можете перейти к разделу «Ранняя загрузка микрокода».

Ранняя загрузка микрокода

Если вы установили, что для вашей системы доступен обновленный микрокод, пришло время подготовить его к ранней загрузке. Для этого требуется дополнительный пакет cpio-2.13 и создание initrd, который нужно будет добавить в grub.cfg.

Неважно, где вы подготовите initrd, и как только он заработает, вы можете применить тот же самый initrd к более поздним системам LFS или более новым ядрам на той же машине, по крайней мере, до тех пор, пока не будет выпущен какой-либо новый микрокод. Используйте следующие команды:

Для компьютера AMD используйте следующую команду (замените ее именем контейнера для семейства ваших процессоров):

Или для компьютера Intel скопируйте соответствующий большой двоичный объект с помощью этой команды:

Теперь подготовьте initrd:

Теперь вам нужно добавить новую запись в /boot/grub/grub.cfg, и здесь вы должны добавить новую строку после строки linux внутри строфы. Если /boot является отдельной точкой монтирования:

или это, если это не так:

Если вы уже загружаетесь с помощью initrd (см. раздел «Об initramfs»), вам следует снова запустить mkinitramfs после помещения соответствующего большого двоичного объекта или контейнера в /lib/firmware, как описано выше. В качестве альтернативы вы можете иметь оба initrd в одной строке, например, initrd /microcode.img /other-initrd.img (адаптируйте это, как указано выше, если /boot не является отдельной точкой монтирования).

Теперь вы можете перезагрузиться с добавленным initrd, а затем использовать ту же команду, чтобы проверить, сработала ли ранняя загрузка:

Если вы выполнили обновление для устранения уязвимостей, вы можете просмотреть /sys/devices/system/cpu/vulnerabilities/, чтобы узнать, что теперь сообщается.

Места и время, когда происходит ранняя загрузка, сильно различаются на компьютерах AMD и Intel. Сначала старый пример интела (Skylake) с ранней загрузкой:

Исторический пример AMD:

Прошивки для видеокарт

Прошивки для видеочипов ATI (R600 и выше)

Эти инструкции НЕ относятся к старым моделям Radeon до семейства R600. Для них прошивка находится в каталоге ядра /lib/firmware/. Они также не применяются, если вы намерены избежать графических настроек, таких как Xorg, и согласны использовать дисплей 80x25 по умолчанию, а не кадровый буфер.

Ранним устройствам Radeon требовалась только одна прошивка размером 2 КБ. Для последних устройств требуется несколько разных больших двоичных объектов, и некоторые из них намного больше. Общий размер каталога прошивки Radeon составляет более 500 КБ — в большой современной системе вы, вероятно, можете сэкономить место, но по-прежнему излишне устанавливать все неиспользуемые файлы каждый раз, когда вы собираете систему.

Лучше установить pciutils-3.7.0, а затем использовать lspci, чтобы определить, какой контроллер VGA установлен.

С этой информацией посетите страницу RadeonFeature вики-сайта Xorg для кольца декодера, чтобы узнать инженерные и маркетинговые названия, чтобы идентифицировать семейство (вам может понадобиться знать это для драйвера Xorg в BLFS — Южные острова и морские острова используют драйвер radeonsi). ) и конкретной модели.

Теперь, когда вы знаете, какой контроллер вы используете, обратитесь к странице Radeon в вики Gentoo, где есть таблица со списком необходимых микропрограмм для различных наборов микросхем. Обратите внимание, что чипы Southern Islands и Sea Islands используют другую прошивку для ядра 3.17 и более поздних версий по сравнению с более ранними ядрами. Определите и загрузите необходимые большие двоичные объекты, а затем установите их:

На самом деле существует два способа установки этой прошивки. BLFS, в разделе «Конфигурация ядра для дополнительной прошивки» раздела Xorg ATI Driver-19.1.0 приводится пример компиляции прошивки в ядро, которое загружается немного быстрее, но использует больше памяти ядра. Здесь мы будем использовать альтернативный метод превращения драйвера Radeon в модуль. В конфигурации вашего ядра установите следующее:

Загрузка нескольких больших двоичных объектов из /lib/firmware занимает заметное время, в течение которого экран будет пустым. Если вы не включите логотип кадрового буфера пингвина или измените размер консоли, используя более крупный шрифт, это, вероятно, не имеет значения. При желании вы можете немного сократить время, если будете следовать альтернативному методу указания 'y' для CONFIG_DRM_RADEON, описанному в BLFS по ссылке выше — вы должны указать каждый необходимый блоб radeon, если вы это сделаете.

Прошивка видеочипов Nvidia

Во-первых, необходимо активировать драйвер ядра Nvidia:

Прошивка для сетевых интерфейсов

Ядру нравится загружать встроенное ПО для некоторых сетевых драйверов, особенно из каталога Realtek (каталог /lib/linux-firmware/rtl_nic/), но обычно они работают без него. Таким образом, вы можете загрузить ядро, проверить dmesg на наличие сообщений об этой отсутствующей прошивке и, если необходимо, загрузить прошивку и положить ее в указанный каталог в /lib/firmware, чтобы она была найдена при последующих загрузках. Обратите внимание, что с текущими ядрами это работает независимо от того, скомпилирован ли драйвер или собран как модуль, нет необходимости встраивать эту прошивку в ядро. Вот пример, когда драйвер R8169 был скомпилирован, но прошивка не была доступна. После того, как прошивка была предоставлена, она не упоминалась при последующих загрузках.

Прошивка для других устройств

Чтобы определить правильную прошивку, обычно требуется установить pciutils-3.7.0, а затем использовать lspci для идентификации устройства. Затем вам следует поискать в Интернете, какой модуль он использует, какую прошивку и где взять прошивку — не все из них есть в linux-прошивке.

Если возможно, вам следует начать с проводного подключения при первой загрузке системы LFS. Чтобы использовать беспроводное соединение, вам необходимо использовать сетевые инструменты, такие как Wireless Tools-29 и wpa_supplicant-2.10.

Встроенное ПО также может потребоваться для других устройств, таких как некоторые контроллеры SCSI, адаптеры Bluetooth или телерекордеры. Применяются те же принципы.

В этом руководстве показано, как Clear Linux* OS справляется с загрузкой прошивки и микрокода.

Обзор¶

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

Прошивка обычно не поставляется с исходным кодом. Вместо этого встроенное ПО предоставляется в виде двоичных двоичных объектов, которые лицензируются для бесплатного или платного использования.

В ОС Clear Linux прошивка загружается во время инициализации устройства, что обычно происходит во время загрузки.

Встроенная прошивка¶

Если микропрограмма для вашего устройства включена в исходную версию, для ее автоматического обнаружения и загрузки не требуется никаких действий.

Clear Linux OS упаковывает эти двоичные файлы прошивки в пакеты linux-firmware и автоматически включает их в ядро.

Вы можете дважды проверить, установлен ли пакет встроенного ПО для Linux, с помощью следующих команд:

Дополнительная загрузка прошивки¶

Некоторые производители аппаратного обеспечения устройств имеют лицензию, ограничивающую распространение встроенного ПО. Это означает, что Clear Linux OS не может распространять эти микропрограммы, и вы должны получить их вручную у производителя или из другого источника.

Вы можете поместить дополнительную прошивку в /etc/firmware. Clear Linux OS считывает этот каталог для дополнительных файлов микропрограммы в сочетании с типичным путем /lib/firmware, чтобы обеспечить дизайн без сохранения состояния.

Создайте каталог /etc/firmware

Получите дополнительный двоичный файл микропрограммы из надежного источника.

Скопируйте файлы прошивки, включая все подкаталоги, в /etc/firmware. Для правильной загрузки важно поместить файлы прошивки в ожидаемый путь.

Загрузка микрокода ЦП¶

Микрокод — это низкоуровневый код для процессоров, загружаемых в процессе загрузки, который содержит обновления стабильности и безопасности.

Обновления микрокода можно обновить с помощью прошивки материнской платы, однако это не всегда возможно или происходит несвоевременно. Загрузчик микрокода Linux, включенный в ядро ​​Linux, обеспечивает большую гибкость и более частые обновления.

Clear Linux OS использует механизм ранней загрузки, описанный в задокументированном загрузчике микрокода Linux, с помощью которого микрокод ЦП загружается как можно раньше в процессе загрузки с использованием начального RAM-диска (initrd).

Устранение неполадок¶

Посмотрите на вывод sudo dmesg, чтобы увидеть инициализацию устройства и ожидаемые пути прошивки

© © Корпорация Intel, 2022 г. Все права защищены. Последнее обновление: 09 февраля 2022 г.

Читайте также: