готовых портов 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
Комментариев нет :
Отправить комментарий