tl:dr – Kernel headers for 5.3.0 have changed so modules for older Nvidia cards no longer build. Downgrade to the last known good kernel (e.g. 5.0.0-37-generic) and you should be good.

So, I woke up this morning (blues riff), extra early in order to bash out some client work before heading to the gym. I turned on my computer and was greeted by the sight of my login screen, low res, and only on one monitor.

Nothing with computers, it seems, is going to be easy.

I remembered that I had done an apt-get upgrade the previous night, and this has in the past knocked the Nvidia drivers out of whack, so I reinstalled the drivers for my card apt-get remove nvidia-driver-390; apt-get install nvidia-driver-390 and restarted.

No joy.

Fine, I’ll install the official drivers from the Nvidia binary. Never failed before.

Bang. Wouldn’t build.

Ok. Time to dig a little deeper.

I went back to the distro drivers, and this time removed them completely; apt-get remove nvidia-driver-390 --purge; apt-get autoremove; apt-get install nvidia-driver-390.

Still no joy.

However, picking apart the build logs, and we have our first clue. A bunch of build errors to do with the Nvidia modules. Seems that the drivers were not able to build against the current kernel.

Looking at my /boot/ I can see that a new kernel (5.3.0) was installed as part of the upgrade. It looks like the kernel headers have been changed about, and this has broken older drivers.

So, there are two possible solutions – use a newer version of the Nvidia drivers (which isn’t possible for me since I have a pretty old GForce card installed), or roll back to the previous kernel.

First, remove the 5.3.0 kernel: apt-get remove linux-image-5.3.0-26; apt-get remove linux-headers-5.3.0-26

You’ll get a warning if you’re currently running this kernel, don’t worry, we’ll sort that out now.

Make sure you’ve got the working kernel installed apt-get install linux-image-5.0.0-37 linux-headers-5.0.0-37

Now, make sure grub boots this module. Edit /etc/default/grub and change GRUB_DEFAULT to GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 5.0.0-37-generic" (or whatever the particulars of your last working kernel was – ls -larth /boot to show the history).

Update your boot, update-grub

Reboot, and then log in to the console, and reinstall your Nvidia drivers: apt-get remove nvidia-driver-390 --purge; apt-get autoremove; apt-get install nvidia-driver-390

All being well, the Nvidia drivers should build this time. Reboot one last time, and you’re good!

Hope this helps.

UPDATE Jan 21

If you are running Focal or later, you may find that this stops working, and reinstalling the drivers as above doesn’t resolve the problem. This is because the 5.0.0-37 headers have been removed from the repo.

The solution I found was to install the headers (generic, and all) from the Bionic (18.04 LTS) repo.

I had a spare 5 minutes before my next appointment, so I have converted the Known LTI plugin to be easily installable via Composer.

This has been requested by a number of people in order to make it easier to install on Known 1.0 and above, so… happy Christmas I guess!

So, now you should be able to grab it on your Known install by simply declaring it as a requirement:

composer require idno/lti

Have fun!

» Visit the project on Github...

I recently had to help someone who was having trouble setting up a Known site on their Reclaim hosting account. I hit a few gotchas along the way, so I’m jotting them down here with hopes that it helps others.

Installing Known

I live in the console, so after setting up the domain and location via cpanel, I logged in and installed the Known source:

cd ~/mydomain.com;
git https://github.com/idno/known.git . ;
composer install

Resolving 500 error

When visiting the domain, I was confronted with a 500 error.

Digging in the logs, it looked like I was falling foul of some security setting, and the files were being created with group write. So, we need to reset those.

find . -type f | xargs -i{} chmod 644 {}

While we’re at it you’ll want to make your uploads directory writable by the web server.

Set up your database and configure Known

Create a database, database user and password via cpanel.

Because I also was hitting a weird redirect error, I opted to configure known by hand.

Create a file in ~/mydomain.com/configuration/ called config.ini

If this file, put the following information:

database = 'MySQL'
dbname = 'yourdatabase'
dbpass = 'yourpassword'
dbuser = 'yourdbuser'
dbhost = 'localhost'

filesystem = 'local'
uploadpath = '/path/to/mydomain.com/Uploads/'

Make sure you remember the trailing ‘/’ on the upload path.

Hope this helps!