Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Включение своего драйвера в ядро  (Прочитано 2072 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ⓓ ⓔ ⓡ SysMan

  • Автор темы
  • Новичок
  • *
  • Сообщений: 37
  • S|T|A|R|L|E|T
    • Просмотр профиля
    • OpenVMS forever!
Включение своего драйвера в ядро
« : 30 Января 2018, 18:08:10 »
ДД, коллеги!

 Пришла задача включить свои драйверы (блочного устройства) в текущее ядро (установленное на ПК), да так, что бы при обновлении ядра мои драйверы включались "автоматом".

 Как я понимаю сначала надо куда-то скопировать сырсняки собственно тела драйвера, затем каким-то образом включить в конфиг или в Makefile? Сейчас всё делается "руками", хотелось бы действовать согласно "штатной процедуре".
 Есть какие-то инструкции пошаговых действий ?
OpenVMS bigot, C progger, sys/net BMF.

Оффлайн archuser

  • Активист
  • *
  • Сообщений: 686
    • Просмотр профиля
Re: Включение своего драйвера в ядро
« Ответ #1 : 30 Января 2018, 18:19:01 »
dkms?

Оффлайн ALiEN175

  • Администратор
  • Старожил
  • *
  • Сообщений: 6398
  • Vamos a Bailar
    • Просмотр профиля
Re: Включение своего драйвера в ядро
« Ответ #2 : 30 Января 2018, 18:46:01 »
возможно, будет полезно прочитать: https://habrahabr.ru/post/117654/
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн AlexBKost

  • Старожил
  • *
  • Сообщений: 3728
  • Kubuntu 12.04, 16.04, 18.04, 20.04, 22.04, 23.10
    • Просмотр профиля
Re: Включение своего драйвера в ядро
« Ответ #3 : 30 Января 2018, 22:37:27 »
Нет, дружище dr.SysMan, ничего не получится, пока модуль драйвера не будет включен в ядро - только вручную доведется драйвер собирать. Это не флуд, как кое-то может расценить, ибо я уже прошел такое на Pinnacle 340e. Плохо, что ты не удосужился озвучить своё блочное устройство.
Я странен, а не странен кто ж? (С)

Оффлайн Sly_tom_cat

  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 12130
  • Xubuntu 22.04
    • Просмотр профиля
    • Github
Re: Включение своего драйвера в ядро
« Ответ #4 : 31 Января 2018, 01:14:50 »
Ну вот пере-собираются же модули виртуалбокса и другие на автомате при установке нового ядра. Надо смотреть кернел триггеры в /etc/kernel/.
Там есть обычно postinst.d и postrm.d - вот если туда добавить (симлинками) скрипты сборки и "разборки", то можно модуль и автоматом заставить пере-собираться при установке нового ядра.

... и да, велосипед изобретать - не надо его уже изобрели - называется dkms....
« Последнее редактирование: 31 Января 2018, 01:17:58 от Sly_tom_cat »
Индикатор для Yandex-Disk: https://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: https://help.ubuntu.ru/wiki/uefiboot

Оффлайн ⓓ ⓔ ⓡ SysMan

  • Автор темы
  • Новичок
  • *
  • Сообщений: 37
  • S|T|A|R|L|E|T
    • Просмотр профиля
    • OpenVMS forever!
Re: Включение своего драйвера в ядро
« Ответ #5 : 31 Января 2018, 12:38:20 »
DKMS - ок. Сейчас изучу. Спасибо.

DKMS - штатная фича любого линукс-набора или опциональный пакет, доставляемый по желанию владельца системы ?


Пользователь добавил сообщение 31 Января 2018, 14:10:59:
Ну вот пере-собираются же модули виртуалбокса и другие на автомате при установке нового ядра. Надо смотреть кернел триггеры в /etc/kernel/.
Там есть обычно postinst.d и postrm.d - вот если туда добавить (симлинками) скрипты сборки и "разборки", то можно модуль и автоматом заставить пере-собираться при установке нового ядра.
Таки спасибо. Я таки глянул туда, и вуа-ля для VBOX Guest additions, стало быть:

root@sysman:/etc/kernel/postinst.d# cat vboxadd
#!/bin/sh
test -d "/lib/modules/${1}/build" || exit 0
KERN_DIR="/lib/modules/${1}/build" MODULE_DIR="/lib/modules/${1}/misc" /sbin/rcvboxadd quicksetup
exit 0
root@sysman:/etc/kernel/postinst.d#

и вот ещё:

root@sysman:/etc/kernel/prerm.d# cat vboxadd
#!/bin/sh
for i in vboxguest vboxadd vboxsf vboxvfs vboxvideo; do rm -f /lib/modules/"${1}"/misc/"${i}".ko; done
rmdir -p /lib/modules/"$1"/misc 2>/dev/null
exit 0
root@sysman:/etc/kernel/prerm.d#

Правильно полагать, что скрипт vboxadd будет автоматически запущен при обновлении ядра системы ?
« Последнее редактирование: 31 Января 2018, 14:10:59 от dr.SysMan »
OpenVMS bigot, C progger, sys/net BMF.

Оффлайн Sly_tom_cat

  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 12130
  • Xubuntu 22.04
    • Просмотр профиля
    • Github
Re: Включение своего драйвера в ядро
« Ответ #6 : 31 Января 2018, 15:41:43 »
DKMS - штатная фича любого линукс-набора или опциональный пакет, доставляемый по желанию владельца системы ?
Ну почти штатная, найти дистрибутив где оно не стоит "изкаробки" - довольно трудно...

Правильно полагать, что скрипт vboxadd будет автоматически запущен при обновлении ядра системы ?
Все скрипты которые слинкованы в /etc/kernel/postinst.d всегда вызываются после установки нового ядра (параметром передается версия нового ядра).
Все скрипты которые слинкованы в /etc/kernel/prerm.d всегда вызываются перед сносом ядра (параметром передается версия сносимого ядра).
Индикатор для Yandex-Disk: https://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: https://help.ubuntu.ru/wiki/uefiboot

Оффлайн ⓓ ⓔ ⓡ SysMan

  • Автор темы
  • Новичок
  • *
  • Сообщений: 37
  • S|T|A|R|L|E|T
    • Просмотр профиля
    • OpenVMS forever!
Re: Включение своего драйвера в ядро
« Ответ #7 : 31 Января 2018, 16:16:44 »
DKMS - штатная фича любого линукс-набора или опциональный пакет, доставляемый по желанию владельца системы ?
Ну почти штатная, найти дистрибутив где оно не стоит "изкаробки" - довольно трудно...

Правильно полагать, что скрипт vboxadd будет автоматически запущен при обновлении ядра системы ?
Все скрипты которые слинкованы в /etc/kernel/postinst.d всегда вызываются после установки нового ядра (параметром передается версия нового ядра).
Все скрипты которые слинкованы в /etc/kernel/prerm.d всегда вызываются перед сносом ядра (параметром передается версия сносимого ядра).

Отлично! Спасибо!
OpenVMS bigot, C progger, sys/net BMF.

 

Страница сгенерирована за 0.041 секунд. Запросов: 23.