Как вы упомянули, успешно выполнив «перекомпиляцию всего ядра», вы готовы к работе без повторной перекомпиляции всего ядра.
Большинство пользователей не в состоянии сделать модуль только для компиляции только потому, что не все необходимые источники библиотеки заголовков доступны. Полная компиляция ядра означает наличие другого необходимого файла lib.
Теперь, что вам нужно сделать, это выдать:
sudo make prepare
только после выдачи
sudo make config
или же
sudo make oldconfig
Позвольте мне дать вам пошаговую команду (грязным способом, к вашему сведению :)
>cd /usr/src/linux-source-X.XX.X
>sudo cp /usr/src/linux-headers-`uname -r`/Module.symvers .
>sudo cp /boot/config-X.xx.x-xx-YYYY .config
Вышеуказанные шаги одинаковы для компиляции полного ядра или модуля только мак. Теперь, если вам нужно создать модуль ТОЛЬКО, пусть ваша команда make «подготовит» себя с необходимым изменением автоматически связанных файлов lib/config для модулей на цели, которые нужно сделать. Попробуйте две команды ниже:
>sudo make -C /usr/src/linux-headers-`uname -r`/ prepare
>sudo make -C /usr/src/linux-headers-`uname -r`/ M=/usr/src/linux-source-X.xx.X/drivers/directory/of/modules/you/compiling/only prepare modules
Насколько я помню, я добавил переключатель 'M', заставив make скомпилировать модули для директории с исходным указанием, перед тем, как 'подготовить' необходимые файлы lib/header.
Надеюсь, что в этот момент все сделано правильно, и сделайте выход без каких-либо ошибок. Теперь у вас уже есть готовый к установке your_module.ko на пути к модулю вашей системы.
Пытаться:
>sudo make -C /usr/src/linux-headers-`uname -r`/ M=/usr/src/linux-source-X.xx.X/drivers/directory/of/modules/you/compiling/only modules_install
или же
sudo make -C /usr /src /linux-headers- uname -r
/ M = /usr /src /linux-source-X.xx.X / drivers / directory / of / modules / вы / компилируете / только устанавливаете
>depmod -a
Надеюсь, ваш модуль теперь готов к
>modeprob your_mod
команда
Если вы внимательно посмотрите на ваше сообщение об ошибке, созданное командой make только в одном модуле компиляции, вы получите информацию об ошибке эфира в файле синтаксиса исходного кода / lib миссии или о том, что оно не выполнит другую ошибку, такую как отсутствующие модули зависимости / источник.
Удачной компиляции :)