Что такое испорченное ядро в Linux?

Xdotool позволяет, Вы программно (или вручную) моделируете ввод с клавиатуры и действие мыши. http://manpages.ubuntu.com/manpages/natty/man1/xdotool.1.html

102
03.06.2018, 19:47
2 ответа
[1121081] Когда ядро испорчено, это означает, что [1121532] оно находится в состоянии, которое не поддерживается сообществом [1121533]. Большинство разработчиков ядра игнорируют сообщения об ошибках, связанных с испорченными ядрами, и члены сообщества могут попросить вас исправить это состояние до того, как они смогут приступить к диагностике проблем, связанных с ядром. Кроме того, некоторые функции отладки и вызовы API могут быть отключены, когда ядро запятнано.

В большинстве случаев с проприетарными драйверами можно безопасно игнорировать условие taint[1121535], но некоторые сценарии, вызывающие запятнание ядра, могут указывать на серьёзные системные проблемы.

Функция предназначена для выявления условий, которые могут затруднить правильное решение проблемы с ядром. Например, загрузка проприетарного модуля может сделать вывод отладки ядра ненадежным, потому что разработчики ядра не имеют доступа к исходным текстам модуля и, следовательно, не могут определить, что модуль мог сделать с ядром. Аналогичным образом, если ядро ранее испытывало состояние ошибки или если произошла серьезная аппаратная ошибка, отладочная информация, генерируемая ядром, может быть ненадежной. Ядро может быть испорчено по любой из нескольких причин

, включая (но не ограничиваясь) следующими:

if [ -n "$SSH_CLIENT" ]; then
    PS1="Via ssh: "
else
    PS1="Local: "
fi
Использование проприетарных (или не совместимых с GPL) модулей ядра - это самая распространенная причина загрязнения ядра и обычно является результатом загрузки проприетарных видео драйверов NVIDIA или AMD

Использование [1121710]ступенчатых[1121711] драйверов, которые являются частью исходного кода ядра, но не полностью протестированы

Использование [1121712]внедеревочных[1121713] модулей, не входящих в исходный код ядра Linux

Насильственная загрузка или выгрузка модуля ядра (например, принудительная вставка модуля, не собранного для текущей версии ядра)

Использование SMP (многопроцессорного) ядра на некоторых неподдерживаемых однопроцессорных процессорах, в основном старые процессоры AMD Athlon

net rpc shutdown -r -I <IP> -U <username>
, переопределяющие DSDT [1121714]ACPI[1121715], иногда требовалось исправлять ошибки управления питанием (подробнее см. [1121716] здесь[1121717])

  • Некоторые критические условия ошибок, такие как [1121718]исключения проверки машины[1121719] и [1121720]oopses ядра Некоторые серьезные ошибки в системной прошивке (BIOS, UEFI), которые ядро должно работать вокруг

  • Каждое из этих условий представлено определенным флагом в ядре. [1121554]Некоторые производители Linux, например, SUSE, [1121722]добавляют дополнительные флаги taint для указания таких условий, как загрузка модуля, который не поддерживается производителем.

  • Дополнительная информация доступна в документации к ядру [1121556][1121557]. Перечисленные там флаги taint (с _ дублером для 'пустого')

G|P[1121725] : G если все загруженные модули имеют лицензию GPL или совместимую, то в противном случае был загружен несвободный модуль. Модули без MODULE_LICENSE или с MODULE_LICENSE, который не признан insmod совместимым с GPL, считаются несвободными.

F|_[1121727] : если какой-либо модуль был принудительно загружен "insmod -f", в противном случае, если все модули были загружены нормально.[12125]S|_[1121729] : если опс происходил на ядре SMP, работающем на оборудовании, которое не было сертифицировано как безопасное для работы с многопроцессорными системами. В настоящее время это происходит только на разных Athlon'ах, которые не поддерживают SMP.[12126]R|_[1121731] : если модуль был принудительно выгружен [1121732]rmmod -f[1121733] , в противном случае, если все модули были выгружены нормально.[12127]M|_[1121735] : если какой-либо процессор сообщил об [1121736]исключении проверки машины[1121737], в противном случае исключений проверки машины не было.[12128]B|_[1121739] : если функция освобождения страницы нашла ссылку на плохую страницу или неожиданные флаги страницы.[12129]U|_[1121741] : если пользователь или пользовательское приложение специально запросило установку флага Tainted.[12130]D|_[1121743] : если ядро умерло недавно, т.е. было [1121744]OOPS[1121745] или BUG.[12131]A|_[1121747] : если таблица ACPI была переопределена.[12132]W|_[1121749] : если предупреждение было выдано ядром ранее (хотя некоторые предупреждения могут устанавливать более специфические флаги taint. )[12133]C|_[1121751] : если загружен инсценировочный драйвер.[12134]I|_[1121753] : если ядро работает вокруг серьезной ошибки в прошивке платформы (BIOS или аналогичной).[12135]O|_[1121755] : если загружен модуль, собранный извне ("вне дерева"). [12136]E|_[1121757] : если в ядро загружен неподписанный модуль, поддерживающий сигнатуру модуля.[12137]L|_[1121759] : если в системе ранее была произведена мягкая блокировка.[12138]K|_[1121761] : если ядро было исправлено вживую. [12139]

130
27.01.2020, 19:30

Загрузка проприетарного или несовместимого с -GPL -модуля или неподписанного модуля установит флаг «испорченности» в работающем ядре.

Чтобы проверить состояние ядра в журналах ядра:

journalctl -k | grep taint

Для проверки поврежденного состояния ядра во время выполнения:

cat /proc/sys/kernel/tainted      // if 0 then kernel is not tainted, else it is.

Чтобы проверить состояние ядра в сообщении о панике ядра в строке, начинающейся с «ЦП :»

«Не испорчено :», если ядро ​​не было испорчено во время события kp; если это так, то будет напечатано «Tainted :».

Ссылка:Документация ядра Linux по испорченным ядрам .

2
20.08.2020, 19:31

Теги

Похожие вопросы