Прошивка Linux

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Linux firmware and the translation is 84% complete.
Other languages:

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

Современным видеокартам AMD и NVIDIA почти всегда требуются загрузка двоичного кода для корректного функционирования.

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

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

Установка

For security reasons, hotloading firmware into a running kernel has been shunned upon. Modern init systems such as systemd have strongly discouraged loading firmware from userspace.

Ядро

Предупреждение
Including firmware files into binary kernel images that are not available under the terms of the GPL, may result in a violation of the GPL if the image is distributed. It is wise to consult a lawyer before distributing images that contain firmware files from sys-kernel/linux-firmware.

A few kernel options are important to consider when building in firmware support for certain devices in the Linux kernel (for kernels beginning with 4.18):

Firmware loading facility (CONFIG_FW_LOADER)
This option is provided for the case where none of the in-tree modules require userspace firmware loading support, but a module built out-of-tree does.
Build named firmware blobs into the kernel binary (CONFIG_EXTRA_FIRMWARE)
This option is a string and takes the (space-separated) names of firmware files to be built into the kernel. These files will then be accessible to the kernel at runtime.
ЯДРО Включение поддержки прошивок в Linux
Device Drivers  --->
  Generic Driver Options  --->
    Firmware loader --->
       -*- Firmware loading facility
       ()    Build named firmware blobs into the kernel binary
       # Необязательно: Включение поддержки сжатых прошивок
       [*]   Enable compressed firmware support
       [*]     Enable XZ-compressed firmware support
       [*]     Enable ZSTD-compressed firmware support

USE-флаги

USE flags for sys-kernel/linux-firmware Linux firmware files

+initramfs Create and install initramfs for early microcode loading in /boot (only AMD for now)
+redistributable Install also non-free (but redistributable) firmware files
bindist Flag to enable or disable options for prebuilt (GRP) packages (eg. due to licensing issues)
compress-xz Compress firmware using xz (app-arch/xz-utils) before installation
compress-zstd Compress firmware using zstd (app-arch/zstd) before installation
deduplicate Create symlinks for all firmware that is duplicate using rdfind
dist-kernel Enable subslot rebuilds on Distribution Kernel upgrades
savedconfig Allows individual selection of firmware files
unknown-license Install firmware files whose license is unknown

Установка

root #emerge --ask sys-kernel/linux-firmware

Необязательно: savedconfig

After emerging sys-kernel/linux-firmware, the configuration file is made into /etc/portage/savedconfig/sys-kernel/linux-firmware-ddmmyyyy. This file can be edited and the unwanted lines be commented out or deleted. Edit and save the file and re-emerge sys-kernel/linux-firmware with the savedconfig USE flag:

root #echo sys-kernel/linux-firmware savedconfig >> /etc/portage/package.use/kernel
root #emerge --ask sys-kernel/linux-firmware

Необязательно: Сжатие

Загружаемую в ядро прошивку можно сжимать для экономии места и более быстрой скорости чтения (ценой дополнительных вычислений). См. описание параметра ядра CONFIG_FW_LOADER_COMPRESS для дополнительной информации.

sys-kernel/linux-firmware поддерживает либо xz, либо zstd (начиная с ядра Linux 5.19[3]) сжатие через соответствующие USE-флаги. Конфигурация ядра должна содержать параметры CONFIG_FW_LOADER_COMPRESS_XZ и/или CONFIG_FW_LOADER_COMPRESS_ZSTD для поддержки этих форматов сжатия.

Устранение проблем

Поиск загруженной прошивки

dmesg can be grepped to determine what firmware has been loaded:

user $dmesg | grep -i firmware

Удаление

Unmerge

root #emerge --ask --depclean --verbose sys-kernel/linux-firmware

Смотрите также

  • Fwupd — a daemon that provides a safe, reliable way of applying firmware updates on Linux.
  • Kernel — основным компонентом операционной системы.
  • Iwlwifi — драйвер для современных беспроводных чипов Intel.
  • Microcode — describes various ways to update a CPU's microcode in Gentoo.
  • AMDGPU — the open source graphics drivers for AMD Radeon and other GPUs.
  • Intel — the open source graphics driver for Intel GMA on-board graphics cards and Intel iGPU and Intel Arc dedicated graphics cards, starting with the Intel 810.

Внешние ресурсы

Ссылки