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 システムでは、ユーザ空間からファームウェアをロードすることはとてもおすすめできません。

カーネル

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

Linux カーネル内に特定のデバイスのためのファームウェアサポートを組み込む場合は、いくつか考慮すべき重要なオプションがあります (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
       # Optional: Enable compressed firmware support
       [*]   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

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 カーネルシンボルを参照してください。

sys-kernel/linux-firmware は、適切な USE フラグを介して、xz または zstd (Linux カーネル 5.19 以降[3]) 圧縮をサポートしています。これらの圧縮フォーマットをサポートするためには、カーネル設定で CONFIG_FW_LOADER_COMPRESS_XZCONFIG_FW_LOADER_COMPRESS_ZSTD のオプションを含めるべきです。

トラブルシューティング

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

どのファームウェアがロードされているか判断するには 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 — AMD Radeon およびその他の GPU のためのオープンソースグラフィックスドライバです。
  • Intel — Intel 810 により始まった Intel GMA オンボードグラフィックスカードおよび Intel Arc ディスクリートグラッフィクスカードのための、オープンソースのグラフィックスドライバです。

外部資料

参照