готовых портов dkms не нашёл
потому запилил вот такое:
#!/bin/bash . /etc/init.d/functions.sh case ${1} in check ) check(){ if [ -f "/var/lib/portage/dkms_db" ];then while read PKG MOD;do if [ -f "/lib/modules/`uname -r`/${MOD}" ];then echo "${MOD#*/}" && eend 0 else FAILED+=" ${PKG}" echo -e "${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="$( cut -d\: -f1 <<< ${line} )" PACKAGE="$(sed -e "s|${DB}||" -e 's|/CONTENTS||' <<< "${PKG_FULL}")" ALL_MODULES+=">=${PACKAGE} ${KO}\n" done <<< "${TARGETS}" echo -e "${ALL_MODULES%\\n}" | column -t > /var/lib/portage/dkms_db } db_rebuild;; esacну и инит-скрипт для openrc
#!/sbin/runscript # Copyright 1999-2012 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: $ depend() { need localmount net before xdm keyword -timeout } start() { ebegin "Starting dkms" dkms-gentoo check eend $? } stop() { ebegin "Stopping dkms" if [ -f '/var/tmp/dkms_failed' ];then eend 0 else dkms-gentoo db fi eend $? }теперь эти самы модули сами пересобираются при перезагрузке после смены ядра
точнее пакеты с этими модулями
при завершении работы создаётся база таких модулей, если при предыдущей загрузке сборка недостающих моделей не завершилась ошибкой
запилил в свой оверлей (stuff) как sys-apps/dkms-gentoo
Комментариев нет :
Отправить комментарий