How can I install Nvidia drivers on Ubuntu 18.04 with secure boot?

Solution 1:

My steps to make it work with secure boot were as follows:

When I was installing Ubuntu 18.04.1, when I reached the "updates and other software stage" in the installation, there was an option to set a password for secure boot, so I went ahead and enabled the check box and entered a new password for secure boot.

Later on after the installation, when I wanted to install Nvidia drivers, I did the following:

Standard Ubuntu procedure:

sudo apt-get update
sudo apt-get upgrade
  1. Add the Official Nvidia PPA to Ubuntu

    sudo add-apt-repository ppa:graphics-drivers/ppa
    
  2. Update and upgrade again

    sudo apt-get update
    sudo apt-get upgrade
    
  3. I checked which was the recommended driver for my GPU via the command:

    ubuntu-drivers devices
    
  4. I opened "Software & Updates" and clicked the "Additional Drivers" tab, I then chose the recommended driver and clicked "Apply Changes", while the driver was installing somewhere in the middle it prompted me for secure boot password, that it when I entered the password I set up when I was installing Ubuntu, after it finished applying I restarted my device, when it was rebooting a blue menu appeared asking to press any key, I pressed then a menu labeled as "Perform MOK Management" appeared, there were the following four options:

    1. Continue boot
    2. Enroll Key
    3. Enroll Key from Disk
    4. Enroll Key from Hash

I chose option number 2, then I continued to boot, it finally worked, I went to Ubuntu settings->Details and my Graphic Card name was shown correctly.

Solution 2:

Been battling this a little bit recently, and the other answer is valid, but there is a simpler solution that probably works:

sudo apt install linux-headers-generic
sudo apt reinstall nvidia-dkms-495

(replace 495 with which ever driver version you are using)

Secureboot compatible drivers are built by DKMS, but the driver packages don't have a kernel header dependency, but they require them to build the kernel modules.