Za určitých podmínek se může linuxové jádro pošpinit . Například nahrání proprietárního ovladače videa do jádra pokazí jádro. Tento stav může být viditelný v systémových protokolech, chybových zprávách jádra (jejda a panika) a prostřednictvím nástrojů, jako je lsmod
a zůstane, dokud nebude systém restartován.
Co to znamená? Ovlivňuje to mou schopnost používat systém a jak by to mohlo ovlivnit možnosti podpory?
Přijatá odpověď:
Když je jádro poskvrněné, znamená to, že je ve stavu, který není podporován komunitou . Většina vývojářů jádra bude ignorovat hlášení o chybách týkajících se poskvrněných jader a členové komunity vás mohou požádat, abyste opravili podmínku pošpinění, než budou moci pokračovat v diagnostice problémů souvisejících s jádrem. Kromě toho mohou být některé funkce ladění a volání API deaktivovány, když je jádro narušeno.
Ve většině případů, kdy se jedná o proprietární ovladače, můžete stav znečištění bezpečně ignorovat , ale některé scénáře, které způsobují poškození jádra, mohou naznačovat vážné systémové problémy.
Tato funkce je určena k identifikaci podmínek, které mohou ztížit správné řešení problémů s jádrem. Například načtení proprietárního modulu může způsobit, že výstup ladění jádra bude nespolehlivý, protože vývojáři jádra nemají přístup ke zdrojovému kódu modulu, a proto nemohou určit, co modul mohl s jádrem udělat. Podobně, pokud jádro dříve zaznamenalo chybový stav nebo pokud došlo k závažné hardwarové chybě, ladicí informace generované jádrem nemusí být spolehlivé.
Jádro může být znečištěné z několika důvodů , včetně (mimo jiné) následujících:
- Použití proprietárního (nebo nekompatibilního s GPL) modulu jádra – to je nejčastější příčina poskvrněných jader a obvykle je výsledkem načtení proprietárních ovladačů videa NVIDIA nebo AMD
- Použití stagingu ovladače, které jsou součástí zdrojového kódu jádra, ale nejsou plně testovány
- Použití mimo strom moduly, které nejsou součástí zdrojového kódu linuxového jádra
- Nucené načtení nebo vyjmutí modulu jádra (jako je násilné vložení modulu, který není sestaven pro aktuální verzi jádra)
- Použití SMP (multiprocesorového) jádra na určitých nepodporovaných jednoprocesorových CPU, především na starších procesorech AMD Athlon
- Přepsání ACPI DSDT, někdy nutné k opravě chyb správy napájení (podrobnosti viz zde)
- Určité kritické chybové stavy, jako jsou výjimky z kontroly počítače a chyby jádra
- Určité závažné chyby v systémovém firmwaru (BIOS, UEFI), které musí jádro obejít
Každá z těchto podmínek je v jádře reprezentována určitým příznakem. Někteří dodavatelé Linuxu, jako je SUSE, přidávají další příznaky znečištění k označení podmínek, jako je načtení modulu, který není podporován dodavatelem.
Další informace jsou k dispozici v dokumentaci jádra. Jsou zde uvedeny příznaky znečištění (s _ zástupným znakem „prázdné“)
- G|P :G pokud všechny načtené moduly mají licenci GPL nebo kompatibilní, jinak byl nahrán proprietární modul. Moduly bez MODULE_LICENSE nebo s MODULE_LICENSE, které insmod nerozpozná jako kompatibilní s GPL, jsou považovány za proprietární.
- F|_ :pokud byl některý modul vynuceně načten pomocí „insmod -f“, jinak pokud byly všechny moduly načteny normálně.
- S|_ :pokud se chybička vyskytla u jádra SMP běžícího na hardwaru, který nebyl certifikován jako bezpečný pro víceprocesorový provoz. V současnosti k tomu dochází pouze na různých Athlonech, které nejsou schopné SMP.
- R|_ :pokud byl modul vynucen pomocí
rmmod -f
, jinak pokud byly všechny moduly uvolněny normálně. - M|_ :pokud některý procesor ohlásil výjimku kontroly stroje,
jinak se žádné výjimky kontroly stroje nevyskytly. - B|_ :pokud funkce uvolnění stránky nalezla špatný odkaz na stránku nebo nějaké neočekávané příznaky stránky.
- U|_ :pokud uživatel nebo uživatelská aplikace konkrétně požadovala nastavení příznaku Tainted.
- D|_ :pokud jádro nedávno zemřelo, tj. došlo k chybě OOPS nebo BUG.
- A|_ :pokud byla tabulka ACPI přepsána.
- W|_ :pokud jádro již dříve vydalo varování (Některá varování však mohou nastavit konkrétnější příznaky znečištění.)
- C|_ :pokud byl načten pracovní ovladač.
- Já|_ :pokud jádro řeší závažnou chybu ve firmwaru platformy (BIOS nebo podobný).
- O|_ :pokud byl nahrán externě vytvořený modul („mimo strom“).
- E|_ :pokud byl do jádra podporujícího podpis modulu načten nepodepsaný modul.
- L|_ :pokud v systému dříve došlo k měkkému zablokování.
- K|_ :pokud bylo jádro opraveno.