Took me a long time to solve this issue. Had this problem with vBox across 2 distros (Ubuntu and Arch).
I had dkms and all the modules already installed and compiled into my kernel, yet I still got a module related error message when I tried to run a vBox virtual machine.
If your vBox GUI starts without a hitch but get an error telling you to install the VBoxDrv kernel module (or any other modules) when you try to run a virtual machine, your problems are not related to installing the modules into your kernel but activating them in modprobe which the module installation script fails to do.
To load a module manually (such as
vboxdrv), open a terminal prompt and put in:
sudo modprobe vboxdrv
if your error message is telling you that your missing another module, be sure to activate it as well.
If you Virtual Machine runs after that without giving you an error message, you've found the solution. Then you can activate the vboxdrv module permanently by going to
/etc/modules-load.d/ (or whatever
.d directory your modprobe uses) and making a .conf file within it (such as
vbox.conf). In the .conf file, put in the names of the vbox kernel modules you want to add, such as:
vboxdrv and optionally
vboxpci. If you don't know what they do, see the excerpt below that I took out of vBox's wiki. Save the .conf file and reboot
From Vbox's wiki:
vboxnetflt are both needed when you intend to use the "Host-only networking" feature. More precisely,
vboxnetadp is needed to create the host interface in the VirtualBox global preferences, and
vboxnetflt is needed to launch a virtual machine using that network interface.
vboxpci is needed when your virtual machine needs to pass through a PCI device on your host.
Note: If the VirtualBox kernel modules were loaded in the kernel while you updated the modules, you need to reload them manually to use the new updated version. To do it, run
vboxreload as root.