Ошибка при использовании insmod "Не удалось вставить модуль hello_world.ko: Недопустимый формат модуля"

Я пытаюсь сделать модуль ядра hello_world, используя C и Bash на малине Pi.

Я успешно использовал команду make для создания файла hello_world.ko.

Однако, когда я пытаюсь использовать команду insmod hello_world.ko, я получаю следующую ошибку:

Ошибка: не удалось вставить модуль hello_world.ko: Неверный формат модуля

Я попытался выполнить шаги, описанные на форуме малины Pi, но мне не повезло.

Я думаю, что это может быть связано с несоответствием версии между моим ядром и заголовками Linux. Какую роль эти заголовки играют в этом процессе и как мне получить версии, соответствующие моему ядру?

Ответ 1

Файлы заголовков определяют интерфейсы между вашими модулями и ядром, а также интерфейсы между пользовательским пространством и ядром. Если существует несоответствие между версией ядра и файлами заголовков, ваш модуль не будет работать, как вы ожидали. Ваши текущие файлы заголовков обычно доступны в вашем репозитории. Вы можете проверить текущее ядро:

     uname -r

после этого проверьте свое репо для заголовков linux:

    sudo apt-cache search linux-headers

и установите их.