#linux-kernel #linux-device-driver #kernel-module #device-driver
#linux-ядро #linux-device-driver #kernel-module #драйвер устройства
Вопрос:
Я изменил драйвер устройства nvme по умолчанию в соответствии с моим проектом, и я пытаюсь автоматически загрузить модифицированный драйвер nvme (mnvme) во время загрузки, но безуспешно.
Я отредактировал файл /lib/modules/{kernel-version}/modules.alias, чтобы включить «mnvme» вместо «nvme», но «nvme» по умолчанию продолжает загружаться.
Я также вижу mnvme: ошибка проверки модуля: отсутствует подпись и / или требуемый ключ — заражение ядра в сообщениях ядра.
Примечание: я могу вручную удалить «nvme» и загрузить «mnvme», используя команды rmmod и insmod соответственно. Я бы предпочел делать это автоматически во время загрузки
Спасибо, Бала.
Комментарии:
1. Существует специальная папка, вызываемая
extra
under/lib/modules/$KVER/kernel
. Он содержит модули, которые переопределяют существующие.
Ответ №1:
Для автоматической загрузки вашего модуля:
-
Скопируйте все файлы .ko, связанные с вашим модулем, в соответствующее расположение в разделе
/lib/modules/{kernel-version}/kernel/
, например, в разделе/lib/modules/4.1.19-v7 /kernel/drivers/nvme/
для драйвера nvme. -
Выполнить
depmod -a
. Это должно обновить информацию, требуемую,modprobe
которая используется для автоматической загрузки модифицированного модуля. Полезным ресурсом для загрузки модулей ядра является раздел 1.2 «Как модули попадают в ядро?» этого руководства http://www.tldp.org/LDP/lkmpg/2.6/lkmpg.pdf . -
Если вы изменили какие-либо заголовки, которые вам нужны в пользовательском пространстве, обязательно обновите соответствующий файл заголовка в разделе
/usr/include
.
Чтобы избежать сообщения о заражении, зафиксируйте внесенные вами изменения, например git commit -sam "...."
.