insmod работает в 6.5 ОС, но не в 7.3 ОС - показывает, что проверка модуля не удалась: - PullRequest
0 голосов
/ 02 октября 2018

Я столкнулся с проблемой при переносе пользовательского драйвера pci в ядре 3.10 (ОС 7.3).Ядро падает при выполнении доступа ioctl или любого доступа к драйверу.Сомневаюсь, происходит ли сбой из-за приведенного ниже сообщения:

Предупреждение: - [629.090891] _pcie: загрузка модуля из дерева портит ядро.[629.090921] pcie: сбой проверки модуля: отсутствует подпись и / или требуемый ключ - портится ядро.

Но я не сталкиваюсь с этим предупреждением / ошибкой при портировании одного и того же драйвера в RHEL OS 6.5.

Очистит ли это предупреждение отключение подписи модуля ядра в linux 7.3 и загрузка собственной ОС?Или есть в любом случае сбросить предупреждение без перекомпиляции ОС.

1 Ответ

0 голосов
/ 08 октября 2018

Само цитируемое сообщение не является причиной сбоя.«Изъятие ядра» - это уведомление для разработчиков ядра о том, что пользователь загрузил модуль, который не происходит из среды, дружественной для разработчиков ядра.Некоторые люди считают это веской причиной не поддерживать таких пользователей и / или настройки.

Причина сбоя заключается в том, что внутреннее ядро ​​ABI (двоичные интерфейсы) не стабильно, оно меняется между версиями (и даже междуразные конфигурации одной и той же версии).Ядро имеет некоторую защиту от загрузки несовместимых с двоичным кодом модулей, но это часто отключается и / или может быть обойдено.И как только двоичный несовместимый модуль попадает внутрь ядра, попытка его выполнения часто приводит к сбоям и другому неправильному поведению: модуль был скомпилирован для другого ABI и, таким образом, код внутри модуля пытается получить доступ к полям структуры с неправильными смещениями, вызвать функции с параметрами в неправильных регистрах ии т. д.

Чтобы избежать сбоя, модуль должен быть хотя бы перекомпилирован с ядром, на котором вы работаете.Хотя это может не сработать в случае изменения не только в ABI, но и в API.В последнем случае требуется перенос источника модуля на обновленный API.

...