Gelegentlich gerät mein System in einen Zustand, in dem einigen Kerneln ein oder zwei Module fehlen, weil die DKMS irgendwie vergessen hat, diese Module für diesen Kernel zu kompilieren. Anstatt Zeit damit zu verbringen, das Problem zu diagnostizieren, wäre es schön, wenn es einen einzigen Befehl gäbe, den ich ausführen könnte, um einfach jedes dkms-gesteuerte Modul für jeden installierten Kernel neu zu erstellen . Gibt es so einen Befehl?
kernel
kernel-modules
dkms
Ryan Thompson
quelle
quelle
Antworten:
Ich habe einen Shell-One-Liner dafür gefunden:
Dies funktioniert, da die Namen der Verzeichnisse
/var/lib/initramfs-tools
genau die Namen der Kernelversionen sind, die Sie übergeben müssen, umdkms_autoinstaller
anzugeben, dass alle Module für diese Kernelversionen neu erstellt werden sollen. Beachten Sie, dass, wenn Sie einige alte Kernel deinstalliert haben, deren Verzeichnisse möglicherweise immer noch herumliegen und Fehler melden. Dies ist jedoch kein Problem, dadkms_autoinstaller
dies für die nicht installierten Kernelversionen nichts bewirkt .quelle
dkms status
, mit den folgenden spezifischen Modulen, die ich von "/ usr / src" wollte, auf dem neuen Kernel installieren . Die Parameter müssen nach Bedarf für -c, -m, -v geändert werden. Hier ist ein Beispiel für das nvidia-384-384.90-Modul: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
Sieht nicht so aus, als ob der
dkms
Befehl dies zulässt. Ich habe ein kleines Python-Skript erstellt, das tun soll, was Sie wollen. Sie können einen Alias in Ihr~/.bashrc
Like einfügenNatürlich müssen Sie es zuerst ausführbar machen. Hier ist der Code:
Hier getestet, scheint gut zu funktionieren:
Wenn Sie auch die Module installieren möchten, ersetzen Sie build durch install in der vorletzten Zeile.
quelle
Hier ist mein (als Root) Einzeiler, der die Antworten von @htorque und @Ryan Thompson kombiniert:
quelle
Die obigen Einstellungen funktionieren nicht bei allen Varianten, dies könnte in diesen Fällen etwas hilfreicher sein ...
quelle
dkms status
unddkms_autoinstaller
funktioniert nicht in Ubuntu 16.x. Also genügt ein Shell-Skript. Dieses Skript setzt voraus, dass Sie das richtige*-dkms
Deb-Paket installiert haben undbash
es Ihre Shell ist.quelle