LINUX.ORG.RU

аля dkms для Gentoo

 ,


0

1

есть ли это в этих ваших гентах?
гуголь не колется, eix тоже, zugaina лежит
сижу от нефиг делать пилю - но не велик ли я придумал?
module-rebuild не предлагать - это совсем не то

★★★★

Ответ на: комментарий от sdio

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

megabaks ★★★★
() автор топика
Ответ на: комментарий от megabaks

а оно надо? вот в Генте нет дкмс, а в Федоре, скажем, есть. Ну и вопрос на мильон тугриков - в каком из этих дистров постоянные проблемы с отваливающимися out-of-tree модулями? не в последнюю очередь с одним известным блобом...

anonymous
()
Ответ на: комментарий от madcore

в ленивой
чтобы не нужно было при смене ядра вспоминать какие пакеты надо пересобрать, чтобы потом всё завелось
i.e. блоб-невидии, вирт-коробка и прочее-прочее-прочее

megabaks ★★★★
() автор топика
Ответ на: комментарий от anonymous

мне надо
мне лень вспоминать и руками пересобирать пакеты с ядерными модулями
про отваливается - это проблема федоры

megabaks ★★★★
() автор топика

Спасибо, megabaks.
Кстати, почему бы не добавить это в основное дерево gentoo? Есть какие-то проблемы?

blackst0ne ★★★★★
()
Ответ на: комментарий от megabaks

мне лень вспоминать и руками пересобирать пакеты с ядерными модулями

update-modules, не? или modules-update.

anonymous
()
Ответ на: комментарий от anonymous

Но dkms, конечно, удобнее, он сам при установке нового ядра пересобирает модули, а запустить module-rebuild можно и забыть.

anonymous
()
Ответ на: комментарий от anonymous

вот об этом и речь
+ тот же module-rebuild пересобирает *все* модули, а не только те, что нажно пересобирать

megabaks ★★★★
() автор топика
Ответ на: комментарий от qnikst

расскажи что оно делает?
при каких условиях оно это делает?
с каких пор появилось хотя бы в ~arch?

megabaks ★★★★
() автор топика
Ответ на: комментарий от megabaks

насколько я знаю пересобирает пакеты у которых есть файлы ставящиеся в /lib/modules (щас может и ещё что добавили)

http://blogs.gentoo.org/zmedico/2008/07/31/live_rebuild_package_set/

в portage-2.2 точно есть. (вобще если честно вижу мало смысла в portage<2.2 :()

qnikst ★★★★★
()
Ответ на: комментарий от qnikst

т.е. это аналог module-rebuild, но в виде сета
т.е,:

1. надо запускать вручную
2. пересобирает *все* модули
3. в ~arch даже нет

мой же велик:
1. пересобирает *сам*, без моего вмешательства
2. пересобирает только те модули, которые *необходимо* собрать, а не все

итог - 2.2 и module-rebuild не нужны

я не альфа-тестер и не вижу смысла ставить 2.2 портаж, тем более что весь его функционал доступен и в 2.1 + набор инструментов

megabaks ★★★★
() автор топика
Ответ на: комментарий от megabaks

2. пересобирает только те модули, которые *необходимо* собрать, а не все

т.е. он проверяет изменились ли интерфейсы к данному модулю в ядре?

итог - 2.2 и module-rebuild не нужны

до этого места логика в твоём посте была.

я не альфа-тестер и не вижу смысла ставить 2.2 портаж, тем более что весь его функционал доступен и в 2.1 + набор инструментов

4.2 хотя бы доп сеты и маски и оверлеи в package.*

В общем-то вопрос был в отличиях велосипеда от @module-rebuild, а не в твоей оценке нужности той или иной сущности, спасибо что ответил, хотя и нафлеймил.

qnikst ★★★★★
()
Ответ на: комментарий от qnikst

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

megabaks ★★★★
() автор топика
Ответ на: комментарий от megabaks

я спрашивал об отличиях «велосипеда» от пересборки emerge @module-rebuild. Т.к. мне было интересно может ли быть данный велосипед полезен мне. Пользуйся тем, что тебе больше нравится и пили это наздоровье, опенсорс же, но не удивляйся если спросят банальный вопрос о том, в чём отличие, это ни разу не наезд.

qnikst ★★★★★
()
Ответ на: комментарий от anonymous

О каких таких проблемах мусье изволил высказаться?

carasin ★★★★★
()
Ответ на: комментарий от qnikst

я тебе по-моему ответил в чём разница
автомат vs руки
необходимое vs все
вот и все отличия

megabaks ★★★★
() автор топика
Ответ на: комментарий от megabaks

Ещё такой случай не забудь:
Обновился блоб нвидии. Модуль в ядре остался от старой версии блоба. Надо пересобрать модуль от новой версии.

carasin ★★★★★
()
Ответ на: комментарий от carasin

жесть, ты бы хоть писал понятней - не с первого раза вкурил
и то хз, правильно ли
т.е. с ядром 1 обновили блоб
загружаемся с ядром 2, а для него старый модуль ---> пересобрать
так?

megabaks ★★★★
() автор топика
Ответ на: комментарий от megabaks

Да.

Кстати, можешь ещё глянуть на федоравский akmods (правда, не уверен, что оно не прибито гвоздями к RPM). Разница между ним и DKMS в том, что DKMS не генерит сами пакеты, а akmods создаёт kmod-bla-bla-bla-<kernel_version>-<blob_version>.rpm.

carasin ★★★★★
()
Ответ на: комментарий от carasin

оверхед такие пакеты
можно проще:
1. смотрим время изменения модуля, например

ls -l --time-style=+%s /lib/modules/3.2.4-pf/video/nvidia.ko
-rw-r--r-- 1 root 0 12504235 1333090010 /lib/modules/3.2.4-pf/video/nvidia.ko
получаем юниксовое время
2. парсим лог emerge на предмет установки пакета
если время установки пакета больше ---> пересобираем

megabaks ★★★★
() автор топика
Ответ на: комментарий от megabaks

Кстати, а если время сбилось (ну, батарейка там в мамке села или ещё какая напасть)?

Может, всё же какую-нибудь базу сделать, в которой написано в каком ядре модуль от какой версии стоИт. Не надо всяких SQL,— просто текстовый файлик.

carasin ★★★★★
()
Ответ на: комментарий от carasin

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

megabaks ★★★★
() автор топика
Ответ на: комментарий от carasin

если время сбилось, то при монтировании фс ты получишь МПХ по лбу, т.к. «фс смонтирована в будущем» :3

megabaks ★★★★
() автор топика
Ответ на: комментарий от megabaks

Во времена ещё F12 на одной подопытной машине всё время сбивалось время как раз из-за севшей батарейки, но машина успешно загружалась.

carasin ★★★★★
()
Ответ на: комментарий от megabaks

А, ну да. Но если сбой был в прошлом...

Короче, сложно это как-то — нахрапом, да без необходимых знаний, тем более в «неродной» системе.

Но моё предчувствие подсказывает, что через текстовый файл проще как-то.

carasin ★★★★★
()
Ответ на: комментарий от carasin

А что бы ей не загружаться? У меня тоже всё загружалось без батарейки,
только fsck каждый раз запускался, проверял диски.

anonymous
()
Ответ на: комментарий от anonymous

Ну да, примерно так. Я, правда, нюансов всех не помню. Помню, что [тогда ещё будущая] жена звонила мне (а я в командировке) с жалобами о сбивающемся времени, но машина загружалась, и мадемуазель спокойненько делала в OO.o свой диплом.

carasin ★★★★★
()
Ответ на: комментарий от carasin

загружаться-то оно будет
но мат должен привлечь внимаение

megabaks ★★★★
() автор топика
Ответ на: комментарий от carasin

думаю, не нужно это
пока получилось такое

#!/bin/bash

. /etc/init.d/functions.sh
case ${1} in

check ) check(){
  if [ -f "/var/lib/portage/dkms_db" ];then
	while read PKG MOD MT;do
	  MOD_FILE="/lib/modules/`uname -r`/${MOD}"
	  if [ -f "${MOD_FILE}" ];then
		if (( "${MT}" > "$(stat -c %Y ${MOD_FILE})" ));then
		  FAILED+=" ${PKG}" 
		  echo "${MOD#*/}" && eend 1
		else
		  echo "${MOD#*/}" && eend 0
		fi
	  else
		FAILED+=" ${PKG}" 
		echo "${MOD#*/}" && eend 1
	  fi
	done < /var/lib/portage/dkms_db
	if [ -n "${FAILED}" ];then
	  eselect kernel set linux-`uname -r`
	  emerge -1 $(echo -e "${FAILED// /\n}" | sort -u) && rm -f /var/tmp/dkms_failed || touch /var/tmp/dkms_failed
	fi
  else
	echo -e "dkms_db not found!\nyou need run:\ndkms-gentoo db" && return 1
  fi
  return 0
 }
check;;

db ) db_rebuild(){
  DB="/var/db/pkg/"
  TARGETS="$(grep "/lib/modules/.*.ko\>" ${DB}*/*/CONTENTS)"

  while read line;do
	MODULE="$(awk '{print $2}' <<< ${line})"
	KO="${MODULE#/*/*/*/}"
	PKG_FULL="${line%/CONTENTS*}"
	PACKAGE="${PKG_FULL#${DB}}"
	MTIME="${line##* }"
	ALL_MODULES+=">=${PACKAGE} ${KO} ${MTIME}\n"
  done <<< "${TARGETS}"

  echo -e "${ALL_MODULES%\\n}" | column -t > /var/lib/portage/dkms_db
  }
db_rebuild;;

esac

megabaks ★★★★
() автор топика
Ответ на: комментарий от megabaks

Кстати, совет:

Мне, конечно, всё равно, но для других коментарии были бы не лишними.

carasin ★★★★★
()
Ответ на: комментарий от carasin

работает - «пофиксил» базу и получил

vboxdrv.ko                                                                                                                                               [ !! ]
vboxpci.ko                                                                                                                                               [ ok ]
vboxnetadp.ko                                                                                                                                            [ ok ]
vboxnetflt.ko                                                                                                                                            [ !! ]
nvidia.ko                                                                                                                                                [ ok ]
вместо
vboxdrv.ko                                                                                                                                               [ ok ]
vboxpci.ko                                                                                                                                               [ ok ]
vboxnetadp.ko                                                                                                                                            [ ok ]
vboxnetflt.ko                                                                                                                                            [ ok ]
nvidia.ko                                                                                                                                                [ ok ]

megabaks ★★★★
() автор топика
Ответ на: комментарий от carasin

надо ещё одну проверку делать - на версии
иначе для каждого ядра будет пересобираться
точнее не ещё одну, а другую

megabaks ★★★★
() автор топика
Ответ на: комментарий от megabaks

Понятно.

Кстати, этот скрипт умеет генерить модули для не текущего ядра?
Например, в akmods'е есть ключ --kernels <kernel_version> (<kernel_version> — в формате выхлопа `uname -r`) для генерирования модулей/пакетов для ядра <kernel_version>.

carasin ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.