在内核二进制文件中包含内核内固件 blob

在内核二进制文件中包含内核内固件 blob

我正在 Debian Stretch 上编译我自己的内核 (4.4.x),并且我想将我的 radeon 显卡的固件包含在内核中,这样就不需要从用户空间加载。

CONFIG_FIRMWARE_IN_KERNEL
CONFIG_EXTRA_FIRMWARE

我已将固件文件安装到/lib/firmware/

apt-get install firmware-amd-graphics

如何找出我的特定图形卡需要包含哪些固件文件?

VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Oland GL [FirePro W2100]

我假设我需要以下一些固件文件:

/lib/firmware/radeon/oland_*.bin

但哪些?

一般来说,找出特定硬件/驱动程序需要哪些固件文件的过程是什么?

答案1

Gentoo 维基Radeon 文章描述如何将固件包含到内核二进制文件中。本文还包括一个表格,列出了每个 GPU 型号所需的固件二进制文件。为您FirePro W2100(厄兰芯片组) 该表列出了以下固件二进制文件:

radeon/oland_ce.bin radeon/oland_mc.bin radeon/oland_me.bin
radeon/oland_pfp.bin radeon/oland_rlc.bin radeon/oland_smc.bin 
radeon/TAHITI_uvd.bin

dmesg| grep "direct-loading firmware"检查系统上使用的内核日志应该会告诉您自动加载了哪些固件:

radeon 0000:01:00.0: firmware: direct-loading firmware radeon/OLAND_pfp.bin
radeon 0000:01:00.0: firmware: direct-loading firmware radeon/OLAND_me.bin
radeon 0000:01:00.0: firmware: direct-loading firmware radeon/OLAND_ce.bin
radeon 0000:01:00.0: firmware: direct-loading firmware radeon/OLAND_rlc.bin
radeon 0000:01:00.0: firmware: direct-loading firmware radeon/OLAND_mc2.bin
radeon 0000:01:00.0: firmware: direct-loading firmware radeon/OLAND_smc.bin
radeon 0000:01:00.0: firmware: direct-loading firmware radeon/TAHITI_uvd.bin

我想这个方法是用来收集 gentoo wiki 中的表所用的数据的。

在构建期间要包含在内核映像中的固件是使用配置的CONFIG_EXTRA_FIRMWARE选项。构建系统查找额外固件的目录是使用CONFIG_EXTRA_FIRMWARE_DIR选项配置的。

如何包含固件二进制文件,步骤如下:

  1. 您需要将 radon 驱动程序(和直接渲染管理器)直接构建到内核中,而不是作为模块。需要从文件系统加载模块。

  2. 配置CONFIG_EXTRA_FIRMWARE_DIR/lib/firmware,位置分布将二进制映像安装到。这样您就不需要复制固件二进制文件。

  3. 列出 中的固件文件CONFIG_EXTRA_FIRMWARE,多个文件用空格分隔。

使用菜单配置

  1. 直接将 radeon 驱动程序构建到内核。

    Device Drivers  --->
        Graphics support  --->
            <*> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)  --->
            <*> AMD GPU 
    
  2. 包括固件

    Device Drivers  --->
        Generic Driver Options  --->
            [*] Include in-kernel firmware blobs in kernel binary
                (radeon/... radeon/...)
                (/lib/firmware) Firmware blobs root directory
    

相关内容