LinuxForum.Fans
Тема

Dkms

Автор: megabaks 25 сообщений 6862 просмотров
#243550

живёт тут код
что делает:

  • создаёт базу сторонних модулей и пакетов, которым они принадлежат
  • база пересоздаётся при каждом завершении работы, если база установленных пакетов ( /var/db/pkg ) обновлялась позже базы dkms ( /var/lib/portage/dkms_db )
  • при загрузке проверяется наличие всех модулей для текущего ядра и их версии - если модуля нет или его версия не соответствует таковой модуля из базы пакетов, то пакет, которому принадлежит модуль, пересобирается, с предварительным eselect-ом текущего ядра
  • если сборка пакета завершилась ошибкой, то имя пакета пишется в лог ( /var/log/dkms_failed-`uname-r` )
  • при следующей загрузке и удачной_проверке/удачной_сборке лог для текущего ядра удаляется

Кто что думает?
//код ужасен, знаю :3

#243621

megabaks может разжуешь, а то немного не въеду, да и подожди, с наскоку так... хотя сразу говорю - не кодер ни разу. :)

#243625

спрашивай вопросы - получай ответы :)
а код...там башизмы есть, да
ну и проверка на проверке проверкой погоняет

#243627

А, таки там инит + скрипт. Блин попозже с сабайона слезу попробую.
не так сначала.

#243628

нет там демона

text
[ root@desktop ] megabaks # /etc/init.d/dkms restart
 * WARNING: you are stopping a boot service
 * Caching service dependencies ...                                                                                                                      [ ok ]
 * Stopping dkms ...
Database: updating                                                                                                                                       [ ok ]
 * Starting dkms ...
vboxdrv.ko                                                                                                                                               [ ok ]
vboxpci.ko                                                                                                                                               [ ok ]
vboxnetadp.ko                                                                                                                                            [ ok ]
vboxnetflt.ko                                                                                                                                            [ ok ]
nvidia.ko                                                                                                                                                [ ok ]
[ root@desktop ] megabaks # ps aux | grep dkms
root     14350  0.0  0.0   5916   864 pts/4    R<+  18:37   0:00 grep --colour=auto dkms
[ root@desktop ] megabaks # 

пока писал изменил :3
инит-скрипт - это просто всё

#243630
"megabaks" написал:
нет там демона

не так сказал, подразумевал инит+скрипт.
=
это насколько я понял, создать базу, потом к примеру хлопнуть пару модулей, и при загрузке должен собрать, так?

#243632

типа того
или: обновил ядро, ребутнулся, а модули не пересобрал, вот оно-то этим и займётся
ну и просто как обновлялка модулей под текущее ядро может служить
можно и руками в консолях запускать

#243635

обязательно опробую, интересная задумка ;)

#243637

надумаешь - у меня в оверлее как dkms-gentoo валяется

#243891
"megabaks" написал:
создаёт базу сторонних модулей и пакетов, которым они принадлежат

Подробней тут, - базу модулей - то что в /lib/modules/_kernel_ver
Базу пакетов? имеется ввиду то, что в system & world?
=
Упс

text
$/etc/init.d/dkms start
 * Caching service dependencies ...                                                                                                    [ ok ]
 * Starting dkms ...
dkms_db not found!
you need run:
dkms-gentoo --db                                                                                                                       [ !! ]
 * ERROR: dkms failed to start
#243956

ну написано же - запусти

text
dkms-gentoo --db

база модулей - это /var/lib/portage/dkms_db
в ней модули из базы пакетов (/var/db/pkg), т.е. из всех установленных пакетов
кстати, по поводу базы - при установке ебилда же написано

text
Now you need run 'dkms-gentoo --db'
#243994

megabaks, так цель только за модулями следить?

#244140

да, а за чем же ещё должен следить dkms? o_O

#244404

Это что-то вроде "emerge @module-rebuild" в portage-2.2?

#244408

Короче все работает. :) кроме твоего оверлея.

"megabaks" написал:
надумаешь - у меня в оверлее как dkms-gentoo валяется
text
$layman -a stuff 
 * Adding overlay,...
 * Running Git... # /usr/bin/git clone https://github.com/megabaks/stuff.git /var/lib/layman/stuff
Cloning into '/var/lib/layman/stuff'...
error: Problem with the SSL CA cert (path? access rights?) while accessing https://github.com/megabaks/stuff.git/info/refs
fatal: HTTP request failed
 * Failure result returned from Git
 * Adding repository "stuff" failed!

* CLI: Errors occured processing action add * Adding repository "stuff" failed!

Не первый день лежит.

#244416
"newzenon" написал:
Короче все работает. кроме твоего оверлея.

УМВР

text
alexander@goblin /tmp $ sudo layman -a stuff
* Running... # /usr/bin/git clone https://github.com/megabaks/stuff.git /var/lib/layman/stuff
Cloning into /var/lib/layman/stuff...
remote: Counting objects: 7914, done.
remote: Compressing objects: 100% (3449/3449), done.
remote: Total 7914 (delta 3985), reused 7849 (delta 3920)
Receiving objects: 100% (7914/7914), 1.95 MiB | 39 KiB/s, done.
Resolving deltas: 100% (3985/3985), done.
* Successfully added overlay "stuff".

megabaks, и всё же, меня давно терзает вопрос, нафига оно надо? в автозагрузку добавлять что ли? так ИМХО не лучшая идея...

#244421
"Fat-Zer" написал:
УМВР
text
$layman -a x11                                                                                                                        ~zen

* Adding overlay,... * Running Git... # /usr/bin/git clone git://git.overlays.gentoo.org/proj/x11 /var/lib/layman/x11 Cloning into '/var/lib/layman/x11'... remote: Counting objects: 13202, done. remote: Compressing objects: 100% (8014/8014), done. remote: Total 13202 (delta 6340), reused 10648 (delta 5038) Receiving objects: 100% (13202/13202), 2.15 MiB | 1.37 MiB/s, done. Resolving deltas: 100% (6340/6340), done. * Successfully added overlay(s) x11.

NG$layman -a stuff ~zen

* Adding overlay,... * Running Git... # /usr/bin/git clone https://github.com/megabaks/stuff.git /var/lib/layman/stuff Cloning into '/var/lib/layman/stuff'... error: Problem with the SSL CA cert (path? access rights?) while accessing https://github.com/megabaks/stuff.git/info/refs fatal: HTTP request failed * Failure result returned from Git * Adding repository "stuff" failed!

* CLI: Errors occured processing action add * Adding repository "stuff" failed!

ЧЯДНТ?

#244435
"newzenon" написал:
ЧЯДНТ?

может старый app-misc/ca-certificates ?

#244457

по поводу оверлея - мне гитхаб не первый день мозг трахает - коммиты проходят по желанию левой пятки правой ноги
потому проблема может быть и в этом тоже

#244459

megabaks, и всё же, меня давно терзает вопрос, нафига оно надо? в автозагрузку добавлять что ли? так ИМХО не лучшая идея...

я же написал - для автоматической сборки/обновления сторонних модулей для текущего ядра
автозагрузка? о_О
достаточно добавить в boot уровень и всё
в памяти оно висеть не будет, отрабатывает очень быстро, зато делает ненужными некоторые телодвижения
мне вот лень помнить какие пакеты пересобрать надо при обновлении ядра
мне так же лень запускать module-rebuild
так же лень одно из вышеперечисленного делать при апгрейде/откате пакета

Войдите или зарегистрируйтесь, чтобы ответить.