Я пытаюсь добавить драйвер для конкретного оборудования при запуске.
Файл модуля находится по адресу /lib/modules/4.4.0-66-generic/kernel/drivers/misc/
. Также я пробовал /lib/modules/4.4.0-66-generic/kernel/drivers/misc/
.
Модуль успешно загружен командой:
$ sudo insmod /lib/modules/4.4.0-66-generic/kernel/drivers/misc/tmk1553b.ko d0=1 t0="MRTAI" nrt=8 misc=1
Но не смог загрузить модуль при запуске.
Конфигурация:
ОС: Ubuntu 16.04.2
$ uname -a Linux dmitry-ws2 4.4.0-66-generic #87-Ubuntu SMP Fri Mar 3 15:29:05 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
$ cat /etc/modules # /etc/modules: kernel modules to load at boot time. # # This file contains the names of kernel modules that should be loaded # at boot time, one per line. Lines beginning with "#" are ignored. tmk1553b d0=1 t0="MRTAI" nrt=8 misc=1
Сделал команду:
$ depmod
После перезагрузки компьютера или сервиса systemd-load-module module tmk1553b
не отображается в списке загруженных модулей ядра.
Результаты диагностики Failed to find module "tmk1553b ..."
ошибка.
$ sudo systemctl restart systemd-modules-load.service Job for systemd-modules-load.service failed because the control process exited with error code. See "systemctl status systemd-modules-load.service" and "journalctl -xe" for details.
$ systemctl status systemd-modules-load.service ● systemd-modules-load.service - Load Kernel Modules Loaded: loaded (/lib/systemd/system/systemd-modules-load.service; static; vendor preset: enabled) Active: failed (Result: exit-code) since Чт 2017-03-30 11:22:17 MSK; 25s ago Docs: man:systemd-modules-load.service(8) man:modules-load.d(5) Process: 3971 ExecStart=/lib/systemd/systemd-modules-load (code=exited, status=1/FAILURE) Main PID: 3971 (code=exited, status=1/FAILURE) мар 30 11:22:17 dmitry-ws2 systemd[1]: Stopped Load Kernel Modules. мар 30 11:22:17 dmitry-ws2 systemd[1]: Starting Load Kernel Modules... мар 30 11:22:17 dmitry-ws2 systemd[1]: systemd-modules-load.service: Main process exited, code=exited, status=1/FAILURE мар 30 11:22:17 dmitry-ws2 systemd[1]: Failed to start Load Kernel Modules. мар 30 11:22:17 dmitry-ws2 systemd[1]: systemd-modules-load.service: Unit entered failed state. мар 30 11:22:17 dmitry-ws2 systemd[1]: systemd-modules-load.service: Failed with result 'exit-code'.
$ journalctl -xe мар 30 11:22:17 dmitry-ws2 sudo[3968]: dmitry : TTY=pts/1 ; PWD=XXX; USER=root ; COMMAND=/bin/systemctl restart systemd-modules-load.service мар 30 11:22:17 dmitry-ws2 sudo[3968]: pam_unix(sudo:session): session opened for user root by dmitry(uid=0) мар 30 11:22:17 dmitry-ws2 systemd[1]: Stopped Load Kernel Modules. -- Subject: Завершена остановка юнита systemd-modules-load.service. -- Defined-By: systemd -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel -- -- Процесс остановки юнита systemd-modules-load.service был завершен. мар 30 11:22:17 dmitry-ws2 systemd[1]: Starting Load Kernel Modules... -- Subject: Начинается запуск юнита systemd-modules-load.service -- Defined-By: systemd -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel -- -- Начат процесс запуска юнита systemd-modules-load.service. мар 30 11:22:17 dmitry-ws2 systemd-modules-load[3971]: Failed to find module 'tmk1553b d0="1" t0="MRTAI" nrt=8 misc=1' мар 30 11:22:17 dmitry-ws2 systemd[1]: systemd-modules-load.service: Main process exited, code=exited, status=1/FAILURE мар 30 11:22:17 dmitry-ws2 systemd[1]: Failed to start Load Kernel Modules. -- Subject: Ошибка юнита systemd-modules-load.service -- Defined-By: systemd -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel -- -- Произошел сбой юнита systemd-modules-load.service. -- -- Результат: failed.
Что не так?
ОБНОВЛЕНИЕ 1:
$ cat /lib/modules/4.4.0-66-generic/modules.dep | grep tmk1553b kernel/drivers/misc/tmk1553b.ko:
modprobe
команда успешно возвращается
$ sudo modprobe tmk1553b d0=1 t0="MRTAI" nrt=8 misc=1
ОБНОВЛЕНИЕ 2:
Действия, которые я сделал во время установки драйвера:
$ cp tmk1553b.ko /lib/modules/`uname -r`/kernel/drivers/misc/ $ echo tmk1553b d0=1 t0="MRTAI" nrt=8 misc=1 >> /etc/modules $ depmod $ reboot
Эта последовательность хорошо работает в Ubuntu 14.04, но не работает в Ubuntu 16.04.2.
Исследования показали, что systemd не может загружать модули с опциями. Решение сработало для меня:
/etc/modules
/etc/modprobe.d/options-tmk1553b.conf
$ cat /etc/modules tmk1553b $ cat /etc/modprobe.d/options-tmk1553b.conf options tmk1553b d0=1 t0="MRTAI" nrt=8 misc=1
Похоже, это обычное поведение для дистрибутивов Linux с systemd
система инициализации
Для успешной загрузки во время загрузки ваш модуль должен быть загружен с помощью modprobe
вместо того insmod
. Вы можете попробовать использовать:
modprobe tmk1553b d0=1 t0="MRTAI" nrt=8 misc=1
Бег sudo depmod
необходимо после установки модуля по пути /lib/modules/$(uname -r)
. Вы можете подтвердить это, посмотрев файл своего модуля в файле:
/lib/modules/$(uname -r)/modules.dep