Ocasionalmente, mi sistema entra en un estado en el que a algunos núcleos les falta uno o dos módulos, porque DKMS de alguna manera olvidó compilar esos módulos para ese núcleo. En lugar de pasar tiempo diagnosticando el problema, sería bueno si hubiera un solo comando que pudiera ejecutar que simplemente reconstruyera cada módulo controlado por dkms para cada núcleo instalado. ¿Hay tal comando?
kernel
kernel-modules
dkms
Ryan C. Thompson
fuente
fuente
Respuestas:
Descubrí una concha de una línea para hacerlo:
Esto funciona porque los nombres de los directorios
/var/lib/initramfs-tools
son exactamente los nombres de las versiones del núcleo a los que debe pasardkms_autoinstaller
para indicar que reconstruya todos los módulos para esas versiones del núcleo. Tenga en cuenta que si ha desinstalado algunos núcleos antiguos, es posible que sus directorios todavía estén por ahí y provoquen que se informen algunos errores, pero esto no es un problema porquedkms_autoinstaller
simplemente no hará nada para las versiones de kernel que no están instaladas.fuente
dkms status
para el nuevo kernel usando los siguientes módulos específicos que quería de "/ usr / src". Los parámetros deben cambiarse según sea necesario para -c, -m, -v. Aquí hay un ejemplo para el módulo 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
No parece que el
dkms
comando te permita hacer eso. Creé un pequeño script de Python que debería hacer lo que quieras. Puedes poner un alias en tu me~/.bashrc
gustaPor supuesto, primero deberías hacer que sea ejecutable. Aquí está el código:
Probado aquí, parece funcionar bien:
Si también desea instalar los módulos, reemplace build con install en la segunda última línea.
fuente
Combinando las respuestas de @htorque y @Ryan Thompson, aquí está mi (como root) una frase:
fuente
Lo anterior no funciona en todas las variantes, esto podría ser un poco más útil en esos casos ...
fuente
dkms status
ydkms_autoinstaller
no funciona en ubuntu 16.x. Entonces, algún script de shell servirá. Esta secuencia de comandos supone que tiene*-dkms
instalado el paquete deb adecuado ybash
es su shell.fuente
Una edición del script por @htorque. Utilizarlo en caso de que quiera una fuerza de reconstruir (e instalar) de módulos ya construidas. Cambiado a python3,
subprocess.run()
requiere Python 3.5+.fuente