커널 바이너리에 커널 내 펌웨어 Blob 포함

커널 바이너리에 커널 내 펌웨어 Blob 포함

나는 Debian Stretch에서 내 커널(4.4.x)을 컴파일하고 있는데, 사용자 공간에서 로드할 필요가 없도록 내 라데온 그래픽 카드용 펌웨어를 커널에 포함시키고 싶습니다.

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

젠투 위키라데온 기사커널 바이너리에 펌웨어를 포함하는 방법을 설명합니다. 이 문서에는 각 GPU 모델에 필요한 펌웨어 바이너리가 나열된 표도 포함되어 있습니다. 당신을 위한파이어프로 W2100(Erlan 칩셋) 이 표에는 다음 펌웨어 바이너리가 나열되어 있습니다.

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

이 방법은 젠투 위키의 테이블에서 사용되는 데이터를 수집하는 데 사용되는 것 같습니다.

빌드 중 커널 이미지에 포함될 펌웨어는 다음을 사용하여 구성됩니다.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
    

관련 정보