Czasami mój system przechodzi w stan, w którym w niektórych jądrach brakuje modułu lub dwóch, ponieważ DKMS jakoś zapomniał skompilować te moduły dla tego jądra. Zamiast spędzać czas na diagnozowaniu problemu, byłoby miło, gdyby istniało jedno polecenie, które mógłbym uruchomić, aby po prostu odbudować każdy moduł kontrolowany przez dkms dla każdego zainstalowanego jądra. Czy istnieje takie polecenie?
kernel
kernel-modules
dkms
Ryan Thompson
źródło
źródło
Odpowiedzi:
Wymyśliłem skorupkę z jedną wkładką, aby to zrobić:
Działa to, ponieważ nazwy katalogów w
/var/lib/initramfs-tools
są dokładnie tymi nazwami wersji jądra, które należy przekazać,dkms_autoinstaller
aby nakazać przebudowę wszystkich modułów dla tych wersji jądra. Zauważ, że jeśli odinstalowałeś niektóre stare jądra, ich katalogi mogą nadal leżeć i powodować zgłaszanie błędów, ale to nie jest problem, ponieważdkms_autoinstaller
nic nie zrobi dla tych wersji jądra, które nie są zainstalowane.źródło
dkms status
do nowego jądra, korzystając z poniższych dla określonych modułów, które chciałem od „/ usr / src”. Parametry należy zmienić zgodnie z potrzebami dla opcji -c, -m, -v. Oto przykład modułu nvidia-384-384.90:ls /var/lib/initramfs-tools | \ sudo xargs -n1 /usr/sbin/dkms install -c /usr/src/nvidia-384-384.90/dkms.conf -m nvidia -v 384-384.90 -k
Nie wygląda na to, że
dkms
polecenie to pozwala. Stworzyłem mały skrypt Pythona, który powinien robić, co chcesz. Można umieścić aliasu w~/.bashrc
LikeOczywiście najpierw musisz go wykonać. Oto kod:
Testowałem to tutaj, wydaje się działać dobrze:
Jeśli chcesz także zainstalować moduły, wymienić build z zainstalowania w przedostatnim wierszu.
źródło
Łącząc odpowiedzi @htorque i @Ryan Thompson, oto moja (jako root) jedna linijka:
źródło
Powyższe nie działa na wszystkich wariantach, może to być nieco bardziej pomocne w tych przypadkach ...
źródło
dkms status
idkms_autoinstaller
nie działa w Ubuntu 16.x. Tak zrobi jakiś skrypt powłoki. Ten skrypt zakłada, że masz*-dkms
zainstalowany odpowiedni pakiet deb ibash
jest twoją powłoką.źródło