Ocasionalmente, meu sistema entra em um estado em que alguns kernels estão faltando um ou dois módulos, porque o DKMS de alguma forma esqueceu de compilar esses módulos para esse kernel. Em vez de gastar algum tempo diagnosticando o problema, seria bom se houvesse um único comando que eu pudesse executar que apenas restaurasse todos os módulos controlados por dkms para cada kernel instalado. Existe esse comando?
kernel
kernel-modules
dkms
Ryan C. Thompson
fonte
fonte
Respostas:
Eu descobri uma linha de shell para fazer isso:
Isso funciona porque os nomes dos diretórios
/var/lib/initramfs-tools
são exatamente os nomes da versão do kernel para os quais você precisa passardkms_autoinstaller
para solicitar a reconstrução de todos os módulos dessas versões do kernel. Observe que se você desinstalou alguns kernels antigos, seus diretórios ainda podem estar por aí e causar alguns erros a serem relatados, mas isso não é um problema, porquedkms_autoinstaller
simplesmente não fará nada pelas versões do kernel que não estão instaladas.fonte
dkms status
no novo kernel usando o seguinte por módulos específicos que eu queria em "/ usr / src". Os parâmetros precisam ser alterados conforme necessário para -c, -m, -v. Aqui está um exemplo para o 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
Não parece que o
dkms
comando permite que você faça isso. Criei um pequeno script Python que deve fazer o que você deseja. Você pode colocar um alias no seu~/.bashrc
likeClaro que você precisaria torná-lo executável primeiro. Aqui está o código:
Testei aqui, parece funcionar muito bem:
Se você também deseja instalar os módulos, substitua build por install na segunda última linha.
fonte
Combinando as respostas de @htorque e @Ryan Thompson, aqui está a minha linha (como root):
fonte
As opções acima não funcionam em todas as variantes; isso pode ser um pouco mais útil nesses casos ...
fonte
dkms status
edkms_autoinstaller
não funciona no ubuntu 16.x. Então, algum script shell fará. Este script assumiu que você possui o*-dkms
pacote deb instalado apropriado ebash
é o seu shell.fonte