GNU/Linux >> Znalost Linux >  >> Linux

Linux – poskvrněné jádro v Linuxu?

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.
Související:Linux – Jak spustit příkaz na pozadí se zpožděním?
Linux
  1. Linux – Kernel IP Forwarding?

  2. Volání funkce uživatelského prostoru z modulu jádra Linuxu

  3. Co je to poskvrněné jádro v Linuxu?

  1. Linux – Kernel:Podpora jmenných prostorů?

  2. Linux – Jak zjistit, který modul poškozuje jádro?

  3. Linux – Jak správně znovu načíst modul jádra?

  1. Průvodce pro začátečníky ke konfiguraci modulu jádra v Linuxu

  2. změny parametrů modulu jádra (pomocí /sys/module)

  3. Jak kódovat modul jádra Linuxu?