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 100% complete.

Linux ファームウェアは、特定のハードウェアデバイスの一部または全体を機能させるために必要なファームウェアバイナリブロブを含み、Linux カーネルとまとめて頒布されているパッケージです。ハードウェア製造元の中には、ファームウェア自身をビルドするために必要なソースコードをリリースしていないところもあるため、これらのバイナリブロブはふつうはプロプライエタリです。

AMDNVIDIA による現代的なグラフィックカードはほぼ確実に、ハードウェアを正しく動作させるためにバイナリブロブがロードされていることを要求します。

Broxton (Skylake ベースのマイクロアーキテクチャ) 以降、Intel CPU は追加の低電力アイドル状態 (DMC)、多様な並列グラフィックスエンジン上でのワークロードスケジューリング (GuC)、そして一部のメディア機能の負荷を CPU から GPU に退避させる (HuC) ために、バイナリブロブを必要とします。[1]

さらに、現代的な Intel Wi-Fi チップセットはほとんど必ずブロブを必要とします。[2]

インストール

セキュリティ上の理由から、実行中のカーネルにファームウェアをホットロードするのは避けられています。systemd のような現代的な init システムでは、ユーザ空間からファームウェアをロードすることはとてもおすすめできません。

カーネル

Linux カーネル内に特定のデバイスのためのファームウェアサポートを組み込む場合は、いくつか考慮すべき重要なオプションがあります:

警告
GPL の条項下では、ファームウェアファイルをバイナリカーネルイメージに含めることはできません。そのようなイメージが頒布された場合、GPL 違反につながるおそれがあります。sys-kernel/linux-firmware に由来するファームウェアファイルを含むカーネルを頒布する前に、法律家に相談するのが賢明です。

v4.18 より前のカーネル

バージョン 4.18 より前にリリースされたカーネルでは:

CONFIG_FIRMWARE_IN_KERNEL (非推奨)
このオプションはバージョン v4.16 現在削除されています。[3]以前は EXTRA_FIRMWARE で指定されたファームウェアブロブをカーネルに組み込むには、request_firmware() 関数がユーザ空間に抜けて呼び出しを行う必要なしにブロブを見つけるために、このオプションを有効化する必要がありました。古いカーネルではこれを有効化する必要があります。
カーネル Linux ファームウェアのサポートを有効化する
Device Drivers  --->
  Generic Driver Options  --->
    -*- Userspace firmware loading support
    [*]   Include in-kernel firmware blobs in kernel binary
    (/lib/firmware) Firmware blobs root directory

v4.18 以降のカーネル

4.18 以降のカーネルでは:

Firmware loading facility (CONFIG_FW_LOADER)
このオプションは、in-tree モジュールはどれもユーザ空間ファームウェアロードのサポートを必要としないが、out-of-tree でビルドされたモジュールは必要とする、という場合のために提供されています。
Build named firmware blobs into the kernel binary (CONFIG_EXTRA_FIRMWARE)
このオプションは文字列で、カーネルに組み込むファームウェアファイルの名前を、スペース区切りで受け取ります。そうすると、これらのファイルは実行時にカーネルからアクセスできるようになるでしょう。
カーネル Linux ファームウェアのサポートを有効化する
Device Drivers  --->
  Generic Driver Options  --->
    Firmware loader --->
       -*- Firmware loading facility
       () Build named firmware blobs into the kernel binary
       (/lib/firmware) Firmware blobs root directory

USE フラグ

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

compress-xz Compress firmware using xz (app-arch/xz-utils) before installation
compress-zstd Compress firmware using zstd (app-arch/zstd) before installation
initramfs Create and install initramfs for early microcode loading in /boot (only AMD for now)
redistributable Install also non-free (but redistributable) firmware files
savedconfig Allows individual selection of firmware files
unknown-license Install firmware files whose license is unknown

emerge

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

選択可能: savedconfig

sys-kernel/linux-firmware を emerge すると、設定ファイルが /etc/portage/savedconfig/sys-kernel/linux-firmware-ddmmyyyy に作成されます。このファイルを編集して、不要な行をコメントアウトまたは削除することができます。ファイルを編集したら保存して、sys-kernel/linux-firmwaresavedconfig USE フラグ付きで再 emerge してください:

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

選択可能: 圧縮

カーネル内に搭載されるファームウェアは、容量効率と読み込み速度向上 (展開処理時間を犠牲にして) を達成するために、圧縮することができます。さらなる情報については CONFIG_FW_LOADER_COMPRESS カーネルシンボルを参照してください。

CONFIG_FW_LOADER_COMPRESS_XZ シンボルによって xz 圧縮がサポートされています。整合性チェックタイプは、無しか、crc32 (xz コマンドに -C crc32 オプションを渡す) のみ対応していることに注意してください。

バージョン 5.19 現在、CONFIG_FW_LOADER_COMPRESS_ZSTD シンボルによって zstd 圧縮がサポートされています。[4]

トラブルシューティング

ロードされているファームウェアを検索する

どのファームウェアがロードされているか判断するには dmesg を利用できます:

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 — オペレーティングシステムの中核
  • IwlwifiIntel の現行の無線チップのための無線ドライバです。
  • Microcode — describes various ways to update a CPU's microcode in Gentoo.
  • AMDGPU — Vega GPU および Raven Ridge GPU のための、Display Core (DC) フレームワークを利用した、次世代ファミリのオープンソースグラフィックスドライバです。しかしながら、GCN1.0+ ベースの比較的新しい AMD/ATI Radeon グラフィックスカード、具体的には Southern Islands、Sea Islands、Volcanic Islands、および Arctic Islands チップセットも処理することができます。
  • Intel — Intel 810 により始まった Intel GMA オンボードグラフィックスカードおよび Intel Arc ディスクリートグラッフィクスカードのための、オープンソースのグラフィックスドライバです。

外部資料

参照