VBox kernel modules don't build

Dear Opensuse Gurus: This is the first time I’ve run into this on this HP laptop (It’s been updated from 42.2 -> 15.0 -> 15.1). It seems to be complaining about a missing makefile. I tried an earlier version of VBox also, and it also complained in the same way, so I don’t think it’s a bug in the 6.1.4 installer. (I want to install Tumbleweed in a VM to begin playing with it.)

Thank You Very Much,
PattiM :o

EDIT: Yast reports no secure EFI boot…

linux-lhkc:/home/patti/Desktop/ISOs # ./VirtualBox-6.1.4-136177-Linux_amd64.run
Verifying archive integrity... All good.
Uncompressing VirtualBox for Linux installation.............
VirtualBox Version 6.1.4 r136177 (2020-02-18T17:26:04Z) installer
Installing VirtualBox to /opt/VirtualBox
Python found: python, installing bindings...
Created symlink /etc/systemd/system/multi-user.target.wants/vboxdrv.service → /usr/lib/systemd/system/vboxdrv.service.
Created symlink /etc/systemd/system/multi-user.target.wants/vboxballoonctrl-service.service → /usr/lib/systemd/system/vboxballoonctrl-service.service.
Created symlink /etc/systemd/system/multi-user.target.wants/vboxautostart-service.service → /usr/lib/systemd/system/vboxautostart-service.service.
Created symlink /etc/systemd/system/multi-user.target.wants/vboxweb-service.service → /usr/lib/systemd/system/vboxweb-service.service.
vboxdrv.sh: failed: Look at /var/log/vbox-setup.log to find out what went wrong.

There were problems setting up VirtualBox.  To re-start the set-up process, run
  /sbin/vboxconfig
as root.  If your system is using EFI Secure Boot you may need to sign the
kernel modules (vboxdrv, vboxnetflt, vboxnetadp, vboxpci) before you can load
them. Please see your Linux system's documentation for more information.

VirtualBox has been installed successfully.

You will find useful information about using VirtualBox in the user manual
  /opt/VirtualBox/UserManual.pdf
and in the user FAQ
  http://www.virtualbox.org/wiki/User_FAQ

We hope that you enjoy using VirtualBox.

The installation log file is at /var/log/vbox-install.log.
linux-lhkc:/home/patti/Desktop/ISOs #

inux-lhkc:/home/patti/Desktop/ISOs # cat /var/log/vbox-install.log

VirtualBox 6.1.4 r136177 installer, built 2020-02-18T17:26:04Z.

Testing system setup...
Installing VirtualBox to /opt/VirtualBox

vboxdrv.sh: Stopping VirtualBox services.
vboxdrv.sh: Starting VirtualBox services.
vboxdrv.sh: Building VirtualBox kernel modules.
linux-lhkc:/home/patti/Desktop/ISOs # cat /var/log/vbox-setup.log
Building the main VirtualBox module.
Error building the module:
make V=1 CONFIG_MODULE_SIG= CONFIG_MODULE_SIG_ALL= -C /lib/modules/4.12.14-lp151.28.36-default/build M=/tmp/vbox.0 SRCROOT=/tmp/vbox.0 -j8 modules
make[1]: warning: -jN forced in submake: disabling jobserver mode.
make -C ../../../linux-4.12.14-lp151.28.36 O=/usr/src/linux-4.12.14-lp151.28.36-obj/x86_64/default/. modules
make -C /usr/src/linux-4.12.14-lp151.28.36-obj/x86_64/default KBUILD_SRC=/usr/src/linux-4.12.14-lp151.28.36 \
-f /usr/src/linux-4.12.14-lp151.28.36/Makefile modules
/usr/src/linux-4.12.14-lp151.28.36/Makefile:651: arch/amd64/Makefile: No such file or directory
make[3]: *** No rule to make target 'arch/amd64/Makefile'.  Stop.
make[2]: *** [Makefile:152: sub-make] Error 2
make[1]: *** [Makefile:24: __sub-make] Error 2
make: *** [/tmp/vbox.0/Makefile-footer.gmk:114: vboxdrv] Error 2
linux-lhkc:/home/patti/Desktop/ISOs # 

Why not the rpm?
https://download.virtualbox.org/virtualbox/6.1.4/

Thanks for the reply. I tried the RPM first (it worked on the last couple of updates) but it gave the same issue - the kernel modules weren’t installed/built - which seems very odd since I’m guessing the RPM already had them built into it. You can see why I’m stumped by this one. One time before (for version 6.0 under LEAP 15.0) the RPM didn’t work for some reason, but the .run file did. Here’s the output of the RPM-install attempt. Yast reports successful install, but when I start a VBox virtual machine:


The VirtualBox Linux kernel driver is either not loaded or not set up correctly. Please try setting it up again by executing

'/sbin/vboxconfig'

as root.

If your system has EFI Secure Boot enabled you may also need to sign the kernel modules (vboxdrv, vboxnetflt, vboxnetadp, vboxpci) before you can load them. Please see your Linux system's documentation for more information.

where: suplibOsInit what: 3 VERR_VM_DRIVER_NOT_INSTALLED (-1908) - The support driver is not installed. On linux, open returned ENOENT. 


then…

linux-lhkc:/opt/VirtualBox # /sbin/vboxconfig
Created symlink /etc/systemd/system/multi-user.target.wants/vboxdrv.service → /usr/lib/systemd/system/vboxdrv.service.
Created symlink /etc/systemd/system/multi-user.target.wants/vboxballoonctrl-service.service → /usr/lib/systemd/system/vboxballoonctrl-service.service.
Created symlink /etc/systemd/system/multi-user.target.wants/vboxautostart-service.service → /usr/lib/systemd/system/vboxautostart-service.service.
Created symlink /etc/systemd/system/multi-user.target.wants/vboxweb-service.service → /usr/lib/systemd/system/vboxweb-service.service.
vboxdrv.sh: Stopping VirtualBox services.
vboxdrv.sh: Starting VirtualBox services.
vboxdrv.sh: Building VirtualBox kernel modules.
vboxdrv.sh: failed: Look at /var/log/vbox-setup.log to find out what went wrong.

There were problems setting up VirtualBox.  To re-start the set-up process, run
  /sbin/vboxconfig
as root.  If your system is using EFI Secure Boot you may need to sign the
kernel modules (vboxdrv, vboxnetflt, vboxnetadp, vboxpci) before you can load
them. Please see your Linux system's documentation for more information.
linux-lhkc:/opt/VirtualBox # 
linux-lhkc:/opt/VirtualBox # /sbin/vboxconfig
Created symlink /etc/systemd/system/multi-user.target.wants/vboxdrv.service → /usr/lib/systemd/system/vboxdrv.service.
Created symlink /etc/systemd/system/multi-user.target.wants/vboxballoonctrl-service.service → /usr/lib/systemd/system/vboxballoonctrl-service.service.
Created symlink /etc/systemd/system/multi-user.target.wants/vboxautostart-service.service → /usr/lib/systemd/system/vboxautostart-service.service.
Created symlink /etc/systemd/system/multi-user.target.wants/vboxweb-service.service → /usr/lib/systemd/system/vboxweb-service.service.
vboxdrv.sh: Stopping VirtualBox services.
vboxdrv.sh: Starting VirtualBox services.
vboxdrv.sh: Building VirtualBox kernel modules.
vboxdrv.sh: failed: Look at /var/log/vbox-setup.log to find out what went wrong.

There were problems setting up VirtualBox.  To re-start the set-up process, run
  /sbin/vboxconfig
as root.  If your system is using EFI Secure Boot you may need to sign the
kernel modules (vboxdrv, vboxnetflt, vboxnetadp, vboxpci) before you can load
them. Please see your Linux system's documentation for more information.
linux-lhkc:/opt/VirtualBox #  

linux-lhkc:/opt/VirtualBox # cat /var/log/vbox-setup.log
Building the main VirtualBox module.
Error building the module:
make V=1 CONFIG_MODULE_SIG= CONFIG_MODULE_SIG_ALL= -C /lib/modules/4.12.14-lp151.28.36-default/build M=/tmp/vbox.0 SRCROOT=/tmp/vbox.0 -j8 modules
make[1]: warning: -jN forced in submake: disabling jobserver mode.
make -C ../../../linux-4.12.14-lp151.28.36 O=/usr/src/linux-4.12.14-lp151.28.36-obj/x86_64/default/. modules
make -C /usr/src/linux-4.12.14-lp151.28.36-obj/x86_64/default KBUILD_SRC=/usr/src/linux-4.12.14-lp151.28.36 \
-f /usr/src/linux-4.12.14-lp151.28.36/Makefile modules
/usr/src/linux-4.12.14-lp151.28.36/Makefile:651: arch/x64/Makefile: No such file or directory
make[3]: *** No rule to make target 'arch/x64/Makefile'.  Stop.
make[2]: *** [Makefile:152: sub-make] Error 2
make[1]: *** [Makefile:24: __sub-make] Error 2
make: *** [/tmp/vbox.0/Makefile-footer.gmk:114: vboxdrv] Error 2
linux-lhkc:/opt/VirtualBox # 

…which is the same set of errors as using the .run install method.

patti@linux-lhkc:~> cat /etc/os-release
NAME=“openSUSE Leap”
VERSION=“15.1”
ID=“opensuse-leap”
ID_LIKE=“suse opensuse”
VERSION_ID=“15.1”
PRETTY_NAME=“openSUSE Leap 15.1”
ANSI_COLOR=“0;32”
CPE_NAME=“cpe:/o:opensuse:leap:15.1”
BUG_REPORT_URL=“https://bugs.opensuse.org
HOME_URL=“https://www.opensuse.org/
patti@linux-lhkc:~>
patti@linux-lhkc:~> hostnamectl
<snip!>
Operating System: openSUSE Leap 15.1
CPE OS Name: cpe:/o:opensuse:leap:15.1
Kernel: Linux 4.12.14-lp151.28.36-default
Architecture: x86-64
patti@linux-lhkc:~>

You always need to clarify whether to are building kernel modules when installing in the HostOS or in a Guest.

Since you mentioned a both a binary ending in".run" and a UEFI boot, I’m assuming you’re talking about a Guest.

  1. You shouldn’t be installing a Guest using UEFI unless you have special reason to do so. A Guest boot has nothing to do with the HostOS boot.
  2. If you’re building Guest kernel modules which are only optional(required for Guest Additions), then you should have make,gcc and your kernel headers installed, and execute the Linux Guest Additions from the Guest Additions ISO.

TSU

Oops, sorry TSU - I’m trying to install VirtualBox in the Host machine. The test for Secure Boot was in the Host machine.

Until my workhorse machine is rebuilt in a week or so, there’s not much I can help, but for now…

Your problem is not so much that your HostOS is running UEFI but that you are also configured for Secure Boot. So, that’s your first option, you can simply disable Secure Boot and your problem goes away.

Online VBox info which refers you to your distro

https://www.virtualbox.org/manual/ch02.html

openSUSE hasn’t documented what needs to be done very well, I found only general info that likely applies about signing an entire kernel, nothing about specifically signing kernel modules

https://doc.opensuse.org/documentation/leap/reference/html/book.opensuse.reference/cha-uefi.html

I find it interesting this is apparently a possible complication building kernel modules but I can’t remember anyone posting about this before. I may learn something new here because I can’t even think of a reason why kernel modules would need to be signed, although I would expect that if the initrd.

TSU

If YaST is reporting you’re not configured for Secure Boot, inspect your UEFI settings directly to verify.

TSU

You do not need Oracle’s files to get Virtualbox 6.1.2.

OpenSUSE has a Virtual repo with the latest that are OpenSUSE 15.1 ready

Add this to /etc/zypp/repos.d as repo-virtual.repo

[repo-virtualization]
name=openSUSE-Leap-15.1-Virtualization
enabled=1
autorefresh=1
baseurl=https://download.opensuse.org/repositories/Virtualization/openSUSE_Leap_15.1/
path=/
type=rpm-md
keeppackages=0

you need to run “sudo zypper ref” and select a to allow your machine to use this repo - you need this repo in any OpenSUSE 15.1 guests that you have to allow the guest stuff to work properly unless you want to install from the CD image.

if you have installed any OpenSUSE VirtualBox from the repo’s you will need to run “sudo zypper in --allow-vendor-change” then run the following addvbext to add the extensions - then you have to reboot to have it in the kernel.

To add the virtualbox extension I have this script - you have to run it as root with no VirtualBox running.
I call mine addvbext

vbv=`/usr/bin/VBoxManage --version | tr "r" "_"`
vbn=`yum list installed | grep Virtual`
vbwc=`echo $vbn | grep -c $vbv`
if  ! -d "/tmpx" ]
then 
echo make tmpx
mkdir /tmpx
chmod 777 /tmpx
fi
echo update VirtualBox
VBOX_VERSION=`/usr/bin/VBoxManage --version | awk -Fr {'print $1'}`
VBOX_EXT_VERSION=`/usr/bin/VBoxManage --version | awk -Fr {'print $1'}`
# echo Virtualbox version installed is $VBOX_VERSION and $VBOX_EXT_VERSION
VBOX_EXT=`echo Oracle_VM_VirtualBox_Extension_Pack-${VBOX_EXT_VERSION}.vbox-extpack`
# echo File is $VBOX_EXT
cd /tmp
/usr/bin/wget http://download.virtualbox.org/virtualbox/$VBOX_VERSION/$VBOX_EXT
/usr/bin/VBoxManage extpack install $VBOX_EXT
rm -f $VBOX_EXT

Thanks for the instructions. I had previously tried the Opensuse repo version of VirtualBox on a couple of occasions but couldn’t get the full functionality that the Oracle file versions supplied. Mostly it was video and file sharing IIRC. Also the Opensuse repo version of VB had many files and it was unclear what was needed. As I recall, I was unable to “Insert Guest Tools CD” (which I normally do from the VB host machine, then it shows up on the guest machine) which is necessary in order to have the guest fully functional. I didn’t know about the virtualization repo.

I’m concerned that there’s something wrong with my machine if it won’t build the host kernel modules. That’s very odd. I know Fortran/c++/etc. build things correctly, and the kernel headers are present (libux-glibc-devel).

But I’ll try your instructions! Thank You!
PattiM:D

EDIT: There’s still a large array of 6.1.2 VB files there, even ignoring the debug/devel files. It looks like a guest tools file is there, but it isn’t automatically selected - so not required? Separate VNC/C11/webserv files, too. Why are those broken out from the rpm in repo version is confusing.

…separate X11 and guest X11… Are those what’s required to get resizing screen and “seamless view?” Are both needed or just one? Confusing…
What is needed to get “standard” VirtualBox features (as gotten from the Oracle distro)?
I’ve never heard of “guest kernel modules” before although I’ve used VB for a very long time.
These choices are where I’ve gotten confused every time I’ve tried to use the repo version(s) of VirtualBox.
I guess Oracle just gives you everything no questions asked.

Hi TSU - I checked BIOS and “UEFI hybrid with CSM” is in operation. Gparted shows an “EFI system partition” present.

I was able to build the kernel modules several months ago when I was running LEAP 15.0 (and 42.x before that) and didn’t change the BIOS when I installed 15.1. I had some trouble installing 15.1 and I think that’s when I had to create /boot/efi. Do you think that’s the culprit?

Thes rpms are used inside a Host:

linux64:~ # LANG=EN zypper se -si virtualbox
Loading repository data...
Reading installed packages...

S  | Name                   | Type    | Version                       | Arch   | Repository       
---+------------------------+---------+-------------------------------+--------+------------------
il | virtualbox             | package | 6.1.2-lp151.516.7             | x86_64 | (System Packages)
i+ | virtualbox-kmp-default | package | 6.1.2_k5.5.6_1.g4a830b1-523.5 | x86_64 | Sauerland-kernel 
il | virtualbox-qt          | package | 6.1.2-lp151.516.7             | x86_64 | (System Packages)

virtualbox: the core package
virtualbox-qt : the GUI
virtualbox-kmp-default : the kernel modules inside the host

Guest rpms are used when openSUSE is running as guest inside Virtualbox…
So no need to install the Virtaulbox-Guest-CD.

But this is not helping with you error.
So please post:

zypper se -si kernel make gcc
uname -a

OK - installing VirtualBox from the “virtualization” repo seemed to work the first time. This is what I installed (they seemed like they might be needed):
Virtualbox
Virtualbox guest tools
Virtualbox guest X11
Virtualbox VNC

these were auto-selected:
Virtualbox qt
Virtualbox kmp

When I started it up, my existing Win7 VM reported it wanted to update guest tools, but couldn’t find them - so it offered to download/install from Oracle, which it did successfully. I created and installed an opensuse Tumbleweed machine and it seemed to have everything it needed to do fullscreen/seamless modes. So I’m up and running on that. Thank you very much. Does anyone have any ideas to troubleshoot why the kernel modules might not have built?

Add the packman repo to fix the video stuff - the OpenSUSE will not include anything that might be in violation of copyright anywhere. Packman for OpenSUSE has all the missing parts to show videos.

This also go in /etc/zypp/repos.d as packman.repo

[Packman]
name=Packman 15.1 Repository
enabled=1
autorefresh=1
baseurl=https://ftp.gwdg.de/pub/linux/misc/packman/suse/openSUSE_Leap_15.1
type=rpm-md
keeppackages=0

Packman’s vlc is much improved over the OpenSUSE version.

after you get VirtualBox running you might want to disable the virtualization repo or you will get daily updates that might break something.

Although prob not critical, any VBox packages that have “guest” in the name should not be installed in the HostOS.

Otherwise your post sounds successful.

TSU

Although this @OP secure boot kernel module signing issue was resolved by installing VBox from the OSS,

If anyone runs into this issue again because they’re installing VBox from the Oracle website, the following may be tried to sign the kernel modules (untested)

https://gist.github.com/reillysiemens/ac6bea1e6c7684d62f544bd79b2182a4

TSU