Kadang-kadang, sistem saya masuk ke keadaan di mana beberapa kernel kehilangan satu atau dua modul, karena DKMS entah bagaimana lupa untuk mengkompilasi modul-modul untuk kernel itu. Daripada menghabiskan waktu mendiagnosis masalah, alangkah baiknya jika ada satu perintah yang dapat saya jalankan yang hanya akan membangun kembali setiap modul yang dikendalikan dkms untuk setiap kernel yang diinstal. Apakah ada perintah seperti itu?
kernel
kernel-modules
dkms
Ryan C. Thompson
sumber
sumber
Jawaban:
Saya menemukan shell one-liner untuk melakukannya:
Ini berfungsi karena nama-nama direktori di dalamnya
/var/lib/initramfs-tools
adalah nama-nama versi kernel yang harus Anda lewatidkms_autoinstaller
untuk mengatakannya untuk membangun kembali semua modul untuk versi-versi kernel tersebut. Perhatikan bahwa jika Anda telah menghapus beberapa kernel lama, direktori mereka mungkin masih ada dan menyebabkan beberapa kesalahan dilaporkan, tetapi ini bukan masalah karenadkms_autoinstaller
hanya akan melakukan apa-apa untuk versi kernel yang tidak diinstal.sumber
dkms status
ke kernel baru menggunakan modul-modul berikut yang saya inginkan dari "/ usr / src". Parameter perlu diubah sesuai kebutuhan untuk -c, -m, -v. Berikut ini adalah contoh untuk modul 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
Tidak terlihat seperti
dkms
perintah yang memungkinkan Anda melakukan itu. Saya membuat skrip Python kecil yang harus melakukan apa yang Anda inginkan. Anda dapat memasukkan alias di~/.bashrc
sukaTentu saja Anda harus membuatnya dapat dieksekusi terlebih dahulu. Ini kodenya:
Mengujinya di sini, tampaknya berfungsi dengan baik:
Jika Anda juga ingin menginstal modul, ganti build dengan install di baris terakhir kedua.
sumber
Menggabungkan jawaban @htorque dan @Ryan Thompson, inilah one-liner (sebagai root) saya:
sumber
Di atas tidak bekerja pada semua varian, ini mungkin sedikit lebih membantu dalam kasus-kasus ...
sumber
dkms status
dandkms_autoinstaller
tidak berfungsi di ubuntu 16.x. Jadi beberapa skrip shell akan dilakukan. Script ini mengasumsikan Anda memiliki*-dkms
paket deb yang tepat diinstal, danbash
shell Anda.sumber
Edit skrip oleh @htorque. Gunakan jika Anda ingin kekuatan membangun kembali (dan menginstal) modul yang sudah dibangun. Beralih ke python3,
subprocess.run()
membutuhkan Python 3.5+.sumber