Коли ядро забруднене, це означає, що воно знаходиться в стані, який не підтримується спільнотою . Більшість розробників ядра проігнорує звіти про помилки, пов’язані із заплямованими ядрами, і члени спільноти можуть попросити виправити умову забарвлення, перш ніж вони зможуть продовжити діагностику проблем, пов’язаних з ядром. Крім того, деякі функції налагодження та виклики API можуть бути відключені, коли ядро забруднено.
У більшості випадків, пов’язаних із власними драйверами, ви можете сміливо ігнорувати стан загрози , але деякі сценарії, які спричиняють пошкодження ядра, можуть свідчити про серйозні системні проблеми.
Ця функція призначена для визначення умов, які можуть ускладнити правильне усунення проблеми з ядром. Наприклад, завантаження власного модуля може зробити висновок налагодження ядра ненадійним, оскільки розробники ядра не мають доступу до вихідного коду модуля і тому не можуть визначити, що модуль може зробити з ядром. Так само, якщо ядро раніше відчувало помилку або якщо сталася серйозна помилка апаратного забезпечення, інформація про налагодження, згенерована ядром, може бути не достовірною.
Ядро може пошкодитися з будь-якої з кількох причин , включаючи (але не обмежуючись ними) наступну:
- Використання фірмового (або не сумісного з GPL) модуля ядра - це найпоширеніша причина забруднених ядер і зазвичай є результатом завантаження фірмових NVIDIA або AMD-драйверів відео
- Використання драйверів постановки , які є частиною вихідного коду ядра, але не повністю перевірені
- Використання деревних модулів, які не входять до вихідного коду ядра Linux
- Примусове завантаження або вивантаження модуля ядра (наприклад, примусове вставлення модуля, не вбудованого для поточної версії ядра)
- Використання ядра SMP (багатопроцесорного) для певних непідтримуваних однопроцесорних процесорів, насамперед старих процесорів AMD Athlon
- Перевизначення ACPI DSDT, іноді необхідне для виправлення помилок управління живленням (детальніше див. Тут )
- Деякі критичні умови помилки, такі як винятки машинної перевірки та відключення ядра
- Певні серйозні помилки в прошивці системи (BIOS, UEFI), над якою має працювати ядро
Кожна з цих умов представлена певним прапором у ядрі. Деякі постачальники Linux, такі як SUSE, додають додаткові прапорці забарвлення, щоб вказати такі умови, як завантаження модуля, який не підтримується постачальником.
Більш детальна інформація доступна в документації на ядро . Перелічені там прапори неповторності (з _ stand-in для 'blank')
- G | P : G, якщо всі завантажені модулі мають GPL або сумісну ліцензію, інакше завантажений власний модуль. Модулі без MODULE_LICENSE або з MODULE_LICENSE, які insmod не визнається сумісними з GPL, вважаються власницькими.
- F | _ : якщо будь-який модуль був силою, завантажений "insmod -f" в іншому випадку, якщо всі модулі завантажені нормально.
- S | _ : якщо ой стався на ядрі SMP, що працює на апаратному забезпеченні, яке не сертифіковане як безпечне для запуску багатопроцесорного пристрою. В даний час це відбувається лише у різних атлонів, які не здатні до SMP.
- R | _ : якщо модуль був вивантажений силою
rmmod -f
, в іншому випадку, якщо всі модулі були завантажені нормально.
- M | _ : якщо будь-який процесор повідомив про виключення з машини , в іншому випадку не сталося виключень машинної перевірки.
- B | _ : якщо функція випуску сторінки знайшла неправильну посилання на сторінку або якісь несподівані прапори сторінки.
- U | _ : якщо користувач або користувальницька програма спеціально просили встановити прапор Порізаний.
- D | _ : якщо ядро загинуло недавно, тобто був OOPS або BUG.
- A | _ : якщо таблицю ACPI було замінено
- W | _ : якщо попередньо було видано попередження ядром (Хоча деякі попередження можуть встановлювати більш конкретні прапорці відтінку).
- C | _ : якщо завантажений драйвер постановки.
- I | _ : якщо ядро працює навколо серйозної помилки в прошивці платформи (BIOS або подібного).
- O | _ : якщо завантажений зовнішній ("поза деревом") модуль.
- E | _ : якщо непідписаний модуль був завантажений у підпис підтримуючого модуля ядра.
- L | _ : якщо раніше в системі відбулося м'яке блокування.
- K | _ : якщо ядро було зафіксовано в реальному часі.