1

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

  • создаёт базу сторонних модулей и пакетов, которым они принадлежат

  • база пересоздаётся при каждом завершении работы, если база установленных пакетов ( /var/db/pkg ) обновлялась позже базы dkms ( /var/lib/portage/dkms_db )

  • при загрузке проверяется наличие всех модулей для текущего ядра и их версии - если модуля нет или его версия не соответствует таковой модуля из базы пакетов, то пакет, которому принадлежит модуль, пересобирается, с предварительным eselect-ом текущего ядра

  • если сборка пакета завершилась ошибкой, то имя пакета пишется в лог ( /var/log/dkms_failed-`uname-r` )

  • при следующей загрузке и удачной_проверке/удачной_сборке лог для текущего ядра удаляется

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

2

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

История показывает, что во всем новом обычно кроется какой-то подвох.
Классическая ошибка, которую совершают проектировщики
абсолютно надежных систем, - недооценка изобретательности клинических идиотов.

3 (04.04.2012 18:30:19 отредактировано megabaks)

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

4 (04.04.2012 18:41:13 отредактировано zenon)

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

История показывает, что во всем новом обычно кроется какой-то подвох.
Классическая ошибка, которую совершают проектировщики
абсолютно надежных систем, - недооценка изобретательности клинических идиотов.

5 (04.04.2012 18:43:30 отредактировано megabaks)

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

[ 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
инит-скрипт - это просто всё

6

megabaks пишет:

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

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

История показывает, что во всем новом обычно кроется какой-то подвох.
Классическая ошибка, которую совершают проектировщики
абсолютно надежных систем, - недооценка изобретательности клинических идиотов.

7

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

8 (04.04.2012 18:57:02 отредактировано zenon)

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

История показывает, что во всем новом обычно кроется какой-то подвох.
Классическая ошибка, которую совершают проектировщики
абсолютно надежных систем, - недооценка изобретательности клинических идиотов.

9

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

10 (05.04.2012 23:06:05 отредактировано zenon)

megabaks пишет:

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

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

$/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
История показывает, что во всем новом обычно кроется какой-то подвох.
Классическая ошибка, которую совершают проектировщики
абсолютно надежных систем, - недооценка изобретательности клинических идиотов.

11 (06.04.2012 09:07:02 отредактировано megabaks)

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

dkms-gentoo --db

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

Now you need run 'dkms-gentoo --db'

12

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

История показывает, что во всем новом обычно кроется какой-то подвох.
Классическая ошибка, которую совершают проектировщики
абсолютно надежных систем, - недооценка изобретательности клинических идиотов.

13

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

14

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

15

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

megabaks пишет:

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

$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!

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

История показывает, что во всем новом обычно кроется какой-то подвох.
Классическая ошибка, которую совершают проектировщики
абсолютно надежных систем, - недооценка изобретательности клинических идиотов.

16

newzenon пишет:

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

УМВР

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, и всё же, меня давно терзает вопрос, нафига оно надо? в автозагрузку добавлять что ли? так ИМХО не лучшая идея...

95% процентов проблем находятся между клавиатурой и стулом.

17

Fat-Zer пишет:

УМВР

$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!

ЧЯДНТ?

История показывает, что во всем новом обычно кроется какой-то подвох.
Классическая ошибка, которую совершают проектировщики
абсолютно надежных систем, - недооценка изобретательности клинических идиотов.

18

newzenon пишет:

ЧЯДНТ?

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

95% процентов проблем находятся между клавиатурой и стулом.

19

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

20

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

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

21

liaonau пишет:

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

нет же, [тут мат]!
осмотри описание и подумай - что общего между ними
и результат их работы, и кол-во телодвижений на каждую версию ядра

22

megabaks пишет:

я же написал - для автоматической сборки/обновления сторонних модулей для текущего ядра
автозагрузка? о_О

нет... нафиг оно надо при каждой загрузке? если на ответственном сервере, то
а) не надо всякий мусор на boot пихать
б) а если какой-то модуль жизненно важен и он не соберётся?
на десктопе ядра так часто не собираются и нафига этот костыль тогда нужен при каждой загрузке? хлама в системе мало?

я бы понял ещё при make modules_install они бы все собирались... ну или при каком-нить другом стандартном этапе сборки... а так какой-то онанизм на init-скриптах вместо того, чтобы одну команду ввести. ИМХО.

[оффтоп]
ЗЫ: а как свой оверлей в леймен добавить?

95% процентов проблем находятся между клавиатурой и стулом.

23

ох...
мусор? - ты уверен?
если не соберётся, то ничего не будет с твоим уже собранным модулем
хлам? ты начинаешь хамить
при make modules_install... сделай алиас, добавив dkms-gentoo --check
добавить - http://gpo.zugaina.org/Overlays

If you want to add your overlay to this site, you have to add it in layman first. Send a mail to overlays@gentoo.org to do so.

и вообще - я тебя заставляю чтоль?
//какие-то дерзкие модеры тут...

24

megabaks пишет:

мусор? - ты уверен?

да, всё что не критически важное в boot'е быть не должно.

megabaks пишет:

и вообще - я тебя заставляю чтоль?

дык сами спросили, кто - что думает...

megabaks пишет:

при make modules_install... сделай алиас, добавив dkms-gentoo --check

дык тогда и на module-rebuild rebuild можно алиас сделать... зачем костыли плодить...

megabaks пишет:

//какие-то дерзкие модеры тут...

час поздний.... с недосыпа у каждого бывает... пойду ка я это исправлять...

[оффтоп]

megabaks пишет:

If you want to add your overlay to this site, you have to add it in layman first. Send a mail to overlays@gentoo.org to do so.

всё оказывается так просто... а критерии у них какие-то есть на этот счёт?

95% процентов проблем находятся между клавиатурой и стулом.

25 (08.04.2012 01:36:34 отредактировано megabaks)

зачем костыли плодить...

затем, что эти костыли не заставляют делать руками лишние телодвижения + не собирать те модули, которые в этом не нуждаются
ты же не пересобираешь мир при каждом обновлении, верно!? bx

всё оказывается так просто... а критерии у них какие-то есть на этот счёт?

ну...я никаких критериев не нашёл
могут добавить, могут и не добавить
могут ответить типа "не проходит QA", могут вообще промолчать
ну и ждать можно пару недель запросто