
Мне предоставили минимальную установку Linux от поставщика. Из ответа на предыдущий вопрос я узнал, что можно собрать ядро с поддержкой модулей или без нее. У меня есть устройство CANBUS, которое мне нужно подключить, и которое поставляется с драйверами в виде файлов .ko. Я хотел бы иметь возможность установить их с помощью предоставленных скриптов установки, но сначала мне нужно узнать, было ли мое ядро собрано с поддержкой модулей — возможно ли это определить из командной строки??
При запуске lsmod
он ничего не возвращает, поэтому я знаю, что на данный момент там нет файлов .ko, но означает ли это, что ядро не позволит мне установить файл .ko?
решение1
Если у вас есть /proc
файловая система, файл /proc/modules
существует тогда и только тогда, когда ядро скомпилировано с поддержкой модулей. Если файл существует, но пуст, ваше ядро поддерживает модули, но в данный момент ни один из них не загружен. Если файл не существует, ваше ядро не может загрузить ни один модуль.
Технически возможно иметь поддержку загружаемого модуля без /proc
. Вы можете проверить наличие системных вызовов init_module
и delete_module
в двоичном файле ядра. Это может быть нелегко, если у вас есть только сжатый двоичный файл (например, vmlinuz
или uImage
). СмотритеКак распаковать vmlinuz в vmlinux?для vmlinuz
. После того, как вам удалось распаковать большую часть ядра, найдите строку sys_init_module
.
Обратите внимание, что если модули поддерживаются, вам в любом случае понадобятся дополнительные файлы для компиляции собственных модулей:заголовки ядра. Это заголовочные файлы C ( *.h
), некоторые из которых генерируются при компиляции ядра (поэтому вы не можете просто взять их из исходного кода ядра). СмотритеЧто содержит дерево исходников ядра? Связано ли это с заголовками ядра Linux?
решение2
Большинство дистрибутивов хранят текстовый файл с конфигурацией ядра где-то. В системе Debian вы найдете его в /boot/config-<kernel_version>
.
Затем вы можете просто запустить grep
этот файл:
grep CONFIG_MODULES /boot/config-<kernel_version>