GNU/Linux >> Znalost Linux >  >> Linux

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

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ů týkajících se proprietárních ovladačů 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 zavedení 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) modulu jádra – to je nejčastější příčina poskvrněných jader a obvykle je dů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 poskvrny (s _ záskokem pro '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 pomocí "insmod -f", jinak pokud byly všechny moduly načteny normálně.
  • S|_ :pokud se chybička vyskytla na SMP jádře běžícím na hardwaru, který nebyl certifikován jako bezpečný pro multiprocesorový provoz. V současné době k tomu dochází pouze na různých Athlonech, které nejsou schopné SMP.
  • R|_ :pokud byl modul nuceně uvolněn do 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 načten externě vytvořený modul („mimo strom“).
  • E|_ :pokud byl nepodepsaný modul načten do jádra podporujícího podpis modulu.
  • L|_ :pokud v systému dříve došlo k měkkému zablokování.
  • K|_ :pokud bylo jádro opraveno.

Linux
  1. Co dělá jádro Linux Server základním?

  2. Jaký je rozdíl mezi module_init a init_module v modulu jádra Linuxu?

  3. Co to znamená, když se řekne linuxové jádro je preemptivní?

  1. Co znamená EXPORT_SYMBOL v kódu jádra Linuxu?

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

  3. Je možné vyvinout modul linuxového jádra v CLion?

  1. Co je uživatel Linuxu?

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

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