`Error! Could not locate dkms.conf file`
This is usually caused by modules in /var/lib/dkms
that don't have a dkms.conf
file within their source subdirectories - dkms
expects this file, so will report an error if it's missing, and then may miss out on compiling some valid modules.
To find the offending module, run this short script (thanks to Lekensteyn):
for i in /var/lib/dkms/*/[^k]*/source; do [ -e "$i" ] || echo "$i";done
That will output any dkms module directories; you can then decide whether to uninstall the package that created them, or if they've been manually installed or renamed, to move them somewhere else or remove them.
I've been getting that on kernel upgrades for a while, with the result that not all of my dkms
drivers get updated on kernel-upgrades.
Firstly I was able to workaround the problem by reconfiguring any packages that used dkms
to force them to be recompiled for the current kernel - eg it was my AMD video drivers that failed (package == fglrx
):
sudo dpkg-reconfigure fglrx
That would at least get the drivers configured for the current version.
Finally I found this bug, which includes some steps you can use to diagnose: https://bugs.launchpad.net/ubuntu/+source/dkms/+bug/830915
dkms status
ls -R /var/lib/dkms
Basically what they're doing is looking around for anything that is surprising, or unexpected - eg packages you have uninstalled - or software you have manually installed on an earlier ubuntu version and may not work with the newer version. Particularly check the date-stamp on the directories which might show you particularly old packages could be from manually installed packages.
ls -l /var/lib/dkms
In my case I had an old version of the fglrx
install I had used to diagnose some problems a year ago and had simply re-named it. Deleting this old cruft made the problem go away.
If there's junk delete it (or move it out of that directory) - if there's a manually installed package there, consider updating it, or uninstalling it and using the maintained version.