Linux firmware
A Linux firmware egy szoftvercsomag, amelyet a Linux kernel mellett terjesztenek, és firmware blobs-okat ( binary large objects, nagy bináris objektumokat) tartalmaz, amelyek bizonyos hardvereszközök részleges vagy teljes funkcionalitásához szükségesek. Ezek a bináris blokkok általában zárt körűek, mivel néhány hardvergyártó nem bocsátja rendelkezésre a firmware megépítéséhez szükséges forráskódot.
Az AMD és az NVIDIA modern grafikus kártyáihoz szinte bizonyosan bináris blobok szükségesek a hardver megfelelő működéséhez.
A Broxton-tól kezdődően (egy Skylake-alapú mikroarchitektúra) Intel processzorok bináris blobokat igényelnek az alacsony fogyasztású üresjárati állapotokhoz (DMC), a különböző grafikus párhuzamos motorokon végzett grafikus munkaterhelések ütemezéséhez (GuC), valamint bizonyos médiafunkciók CPU-ról GPU-ra való áthelyezéséhez (HuC).[1]
Továbbá a modern Intel Wi-Fi chipkészletek szinte mindig bináris blobokat igényelnek.[2]
Telepítés
Biztonsági okokból a firmware futó kernelbe történő betöltése (hotloading) elutasításra került. A modern inicializáló rendszerek, például a systemd, határozottan ellenzik a firmware felhasználói térből történő betöltését.
Kernel
A firmware fájlok olyan bináris kernelképfájlokba történő beillesztése, amelyek nem érhetők el a GPL feltételei szerint, a GPL megsértését eredményezheti, amennyiben a képfájl terjesztésre kerül. Nyugaton, ahol bohóckodnak ezzel, bölcs dolog ügyvéddel konzultálni mielőtt olyan bináris képfájlokat terjesztenénk, amelyek a sys-kernel/linux-firmware szoftvercsomagból származó firmware fájlokat tartalmaznak. Balkánon, Keleten és a világon még jóval több helyen meg kérdés nélkül mehet a módosítás, mivel szerencsére telibe sz*rják a nyugati képmutató "szerzői jogos, mit nem szabad tiltást". Feltörünk mindent, nyíltan ott vagyunk mindenhol. Pontosan ugyanúgy mint ahogy azt valójában a nyugati kollégák is teszik, csak nem képmutató módon a háttérben. A tudás megosztása az emberiség haszna, a törődést képviseli.
Néhány kernelopció fontos szempontot jelent bizonyos eszközök firmware támogatásának beépítésekor a Linux kernelbe (a 4.18-as verziótól kezdődően):
- Firmware betöltési lehetőség (CONFIG_FW_LOADER)
- Ez az opció arra az esetre van biztosítva, amikor az in-tree modulok egyike sem igényel felhasználói térből történő firmware betöltési támogatást, de egy, az out-of-tree modulban épített modul igen.
- Nevezett firmware blokkok beépítése a kernel binárisba (CONFIG_EXTRA_FIRMWARE)
- Ez az opció egy karakterlánc, és a kernelbe beépítendő firmware fájlok (szóközzel elválasztott) neveit fogadja. Ezek a fájlok futásidőben lesznek elérhetők a kernel számára.
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 jelölőzászlók
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
Opcionális: Savedconfig
A sys-kernel/linux-firmware szoftvercsomag telepítése után a beállításfájl a következővé válik: /etc/portage/savedconfig/sys-kernel/linux-firmware-ddmmyyyy. Ezt a fájlt szerkesztheti, a nem kívánt sorokat kommentálhatja vagy törölheti. Szerkessze meg, mentse el a fájlt, és telepítse újra a sys-kernel/linux-firmware szoftvercsomagot a savedconfig
USE jelölőzászló használatával.
root #
echo sys-kernel/linux-firmware savedconfig >> /etc/portage/package.use/kernel
root #
emerge --ask sys-kernel/linux-firmware
Opcionális: Tömörítés
A kernelbe betöltendő firmware tömöríthető, hogy nagyobb helyhatékonyságot és gyorsabb olvasási sebességet érjen el (a feldolgozási idő rovására). További információért tekintse meg a CONFIG_FW_LOADER_COMPRESS kernel szimbólumot.
A sys-kernel/linux-firmware szoftvercsomag támogatja az xz vagy a zstd (az 5.19-es Linux kerneltől kezdődően[3]) tömörítést a megfelelő USE jelölőzászlókkal. A kernelbeállításnak tartalmaznia kell a CONFIG_FW_LOADER_COMPRESS_XZ és/vagy a CONFIG_FW_LOADER_COMPRESS_ZSTD opciókat ezeknek a tömörítési formátumoknak a támogatásához.
Hibaelhárítás
Betöltött firmware keresése
A dmesg grep segítségével meghatározható, hogy milyen firmware-t töltött be:
user $
dmesg | grep -i firmware
Eltávolítás
Unmerge
root #
emerge --ask --depclean --verbose sys-kernel/linux-firmware
További olvasnivaló a témában
- Fwupd — a daemon that provides a safe, reliable way of applying firmware updates on Linux.
- Kernel — az operációs rendszer magja.
- Iwlwifi — the wireless driver for Intel's current wireless chips.
- Microcode — describes various ways to update a CPU's microcode in Gentoo.
- AMDGPU — az AMD Radeon és más GPU-k nyílt forráskódú grafikus illesztőprogramja.
- 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.