1
0
forked from pool/virtualbox

Accepting request 719647 from home:lwfinger:branches:Virtualization

- Merge host kmp and guest kmp into a single kmp. The existence of two different kernel module
  packages is believed to be the reason that it is possible for a new kernel not to include
  the necessary kernel modules (boo#1142955).
  Files "virtualbox-host-kmp-files" and "virtualbox-guest-kmp-files" are deleted.
  File "virtualbox-kmp-files" is added.
  Files "virtualbox-host-preamble" and virtualbox-guest-preamble" are deleted.
  File "virtualbox-kmp-preamble" is added.
  File "fix_conflict_between_host_and_guest.patch" is added.

- Script vboxdrv.sh, which is called from the systemd service file, incorrectly called a routine
  that does not exist when the kernel modules were not available. This call is changed to /sbin/vboxconfig
  that will build the modules if the requisite packages are available. If that is not true, the
  systemctl status vboxdrv will list the command needed to load the missing packages. This change
  address part of boo#1142995.

OBS-URL: https://build.opensuse.org/request/show/719647
OBS-URL: https://build.opensuse.org/package/show/Virtualization/virtualbox?expand=0&rev=498
This commit is contained in:
Larry Finger 2019-07-30 19:54:24 +00:00 committed by Git OBS Bridge
parent 9c5c5083fa
commit 06c8f73ab1
10 changed files with 74 additions and 67 deletions

View File

@ -0,0 +1,13 @@
Index: VirtualBox-6.0.10/src/VBox/Additions/common/VBoxGuest/VBoxGuest-haiku.c
===================================================================
--- VirtualBox-6.0.10.orig/src/VBox/Additions/common/VBoxGuest/VBoxGuest-haiku.c
+++ VirtualBox-6.0.10/src/VBox/Additions/common/VBoxGuest/VBoxGuest-haiku.c
@@ -130,7 +130,7 @@ static struct vboxguest_module_info g_VB
RTMemAllocExTag,
RTMemContAlloc,
RTMemContFree,
- RTMemFreeEx,
+ RTMemFreeExG,
RTMpIsCpuPossible,
RTMpNotificationDeregister,
RTMpNotificationRegister,

View File

@ -210,7 +210,7 @@ start_drv()
failure "Cannot remove $DEVICE" failure "Cannot remove $DEVICE"
fi fi
if ! $MODPROBE vboxdrv > /dev/null 2>&1; then if ! $MODPROBE vboxdrv > /dev/null 2>&1; then
setup /sbin/vboxconfig
if ! $MODPROBE vboxdrv > /dev/null 2>&1; then if ! $MODPROBE vboxdrv > /dev/null 2>&1; then
failure "modprobe vboxdrv failed. Please use 'dmesg' to find out why" failure "modprobe vboxdrv failed. Please use 'dmesg' to find out why"
fi fi

View File

@ -9,8 +9,8 @@ SOURCE="/usr/src/kernel-modules/"
LOGFILE="/var/log/virtualbox.log" LOGFILE="/var/log/virtualbox.log"
INCLUDE="/lib/modules/`uname -r`/build/include" INCLUDE="/lib/modules/`uname -r`/build/include"
# #
# Test if vboxsf module loaded. If it is, skip everything else # Test if vboxguest module loaded. If it is, skip everything else
loaded=$(lsmod | grep vboxsf) loaded=$(lsmod | grep vboxguest)
if [ -n "$loaded" ] ; then if [ -n "$loaded" ] ; then
echo "Kernel modules available. but we will continue..." echo "Kernel modules available. but we will continue..."
fi fi
@ -28,7 +28,7 @@ popd > /dev/null 2>&1
# #
# Check if virtualbox-guest-source version matches virtualbox version # Check if virtualbox-guest-source version matches virtualbox version
if [ "$(rpm -q virtualbox virtualbox-guest-source --queryformat='%{version}-%{release}\n' 2>/dev/null | sort -u | wc -l)" -ne "1" ] ; then if [ "$(rpm -q virtualbox virtualbox-guest-source --queryformat='%{version}-%{release}\n' 2>/dev/null | sort -u | wc -l)" -ne "1" ] ; then
echo "virtualbox-host-source package version doesn't match the version of virtualbox package." echo "virtualbox-guest-source package version doesn't match the version of virtualbox package."
echo "This situation is probably not fatal, thus we will try to continue .." echo "This situation is probably not fatal, thus we will try to continue .."
fi fi
# Prerequisites are available, start build # Prerequisites are available, start build
@ -53,7 +53,7 @@ if [ "$?" -ne 0 ] ; then
exit 1 exit 1
fi fi
depmod -a depmod -a
modprobe -av vboxguest vboxvideo vboxsf modprobe -av vboxsf vboxguest vboxvideo
cd ../.. cd ../..
rm -rf additions rm -rf additions
popd > /dev/null 2>&1 popd > /dev/null 2>&1

View File

@ -1,8 +0,0 @@
%defattr (-,root,root)
%dir /lib/modules/%2-%1/
%dir /lib/modules/%2-%1/extra
/lib/modules/%2-%1/extra/vboxsf.ko
/lib/modules/%2-%1/extra/vboxguest.ko
%if 0%{?suse_version} >= 1500
/lib/modules/%2-%1/extra/vboxvideo.ko
%endif

View File

@ -1,8 +0,0 @@
Requires: kernel-%1
Provides: virtualbox-guest-kmp = %version
#rename from ose version:
Provides: virtualbox-ose-guest-kmp-%1 = %version
Obsoletes: virtualbox-ose-guest-kmp-%1 < %version
#host (vboxdrv) and guest (vboxguest) kmp exports the same symbol (RTMemFreeEx)
#which break loading modules using modprobe (bnc#661740)
Conflicts: virtualbox-host-kmp

View File

@ -1,8 +0,0 @@
Requires: kernel-%1
Provides: virtualbox-host-kmp = %version
#rename from ose version:
Provides: virtualbox-ose-host-kmp-%1 = %version
Obsoletes: virtualbox-ose-host-kmp-%1 < %version
#host (vboxdrv) and guest (vboxguest) kmp exports the same symbol (RTMemFreeEx)
#which break loading modules using modprobe (bnc#661740)
Conflicts: virtualbox-guest-kmp

View File

@ -5,3 +5,6 @@
/lib/modules/%2-%1/extra/vboxnetadp.ko /lib/modules/%2-%1/extra/vboxnetadp.ko
/lib/modules/%2-%1/extra/vboxnetflt.ko /lib/modules/%2-%1/extra/vboxnetflt.ko
/lib/modules/%2-%1/extra/vboxpci.ko /lib/modules/%2-%1/extra/vboxpci.ko
/lib/modules/%2-%1/extra/vboxsf.ko
/lib/modules/%2-%1/extra/vboxvideo.ko
/lib/modules/%2-%1/extra/vboxguest.ko

3
virtualbox-kmp-preamble Normal file
View File

@ -0,0 +1,3 @@
Requires: kernel-%1
Provides: virtualbox-kmp = %version

View File

@ -1,3 +1,24 @@
-------------------------------------------------------------------
Mon Jul 29 06:40:41 UTC 2019 - Larry Finger <Larry.Finger@gmail.com>
- Merge host kmp and guest kmp into a single kmp. The existence of two different kernel module
packages is believed to be the reason that it is possible for a new kernel not to include
the necessary kernel modules (boo#1142955).
Files "virtualbox-host-kmp-files" and "virtualbox-guest-kmp-files" are deleted.
File "virtualbox-kmp-files" is added.
Files "virtualbox-host-preamble" and virtualbox-guest-preamble" are deleted.
File "virtualbox-kmp-preamble" is added.
File "fix_conflict_between_host_and_guest.patch" is added.
-------------------------------------------------------------------
Sat Jul 27 01:53:12 UTC 2019 - Larry Finger <Larry.Finger@gmail.com>
- Script vboxdrv.sh, which is called from the systemd service file, incorrectly called a routine
that does not exist when the kernel modules were not available. This call is changed to /sbin/vboxconfig
that will build the modules if the requisite packages are available. If that is not true, the
systemctl status vboxdrv will list the command needed to load the missing packages. This change
address part of boo#1142995.
------------------------------------------------------------------- -------------------------------------------------------------------
Thu Jul 18 11:48:00 UTC 2019 - Larry Finger <Larry.Finger@gmail.com> Thu Jul 18 11:48:00 UTC 2019 - Larry Finger <Larry.Finger@gmail.com>

View File

@ -62,10 +62,8 @@ Source0: VirtualBox-%{version}-patched.tar.bz2
Source1: UserManual.pdf Source1: UserManual.pdf
Source3: %{name}-60-vboxguest.rules Source3: %{name}-60-vboxguest.rules
Source4: %{name}-default.virtualbox Source4: %{name}-default.virtualbox
Source5: %{name}-host-kmp-files Source5: %{name}-kmp-files
Source6: %{name}-guest-kmp-files Source7: %{name}-kmp-preamble
Source7: %{name}-host-preamble
Source8: %{name}-guest-preamble
Source9: %{name}-wrapper.sh Source9: %{name}-wrapper.sh
Source10: %{name}-LocalConfig.kmk Source10: %{name}-LocalConfig.kmk
Source11: %{name}-60-vboxdrv.rules Source11: %{name}-60-vboxdrv.rules
@ -119,6 +117,8 @@ Patch108: virtualbox-snpritnf-buffer-overflow.patch
Patch109: vbox-usb-warning.diff Patch109: vbox-usb-warning.diff
# Patch to ensure that VirtualBoxVM is SUID # Patch to ensure that VirtualBoxVM is SUID
Patch110: vbox-suid-warning.diff Patch110: vbox-suid-warning.diff
# Fix symbol conflict between host and guest kmp
Patch111: fix_conflict_between_host_and_guest.patch
# Fix change in kernel API for ttm_bo_move_memcpy() # Fix change in kernel API for ttm_bo_move_memcpy()
Patch112: modify_for_4_8_bo_move.patch Patch112: modify_for_4_8_bo_move.patch
# Remove all mention of _smp_mflags # Remove all mention of _smp_mflags
@ -218,7 +218,7 @@ BuildRequires: pkgconfig(xineramaproto)
BuildRequires: pkgconfig(xmu) BuildRequires: pkgconfig(xmu)
BuildRequires: pkgconfig(xproto) BuildRequires: pkgconfig(xproto)
BuildRequires: pkgconfig(xrandr) BuildRequires: pkgconfig(xrandr)
Requires: %{name}-host-kmp = %{version} Requires: %{name}-kmp = %{version}
Requires(post): sysvinit(syslog) Requires(post): sysvinit(syslog)
Requires(pre): permissions Requires(pre): permissions
%if ! 0%{?suse_version} > 1325 %if ! 0%{?suse_version} > 1325
@ -283,30 +283,22 @@ Obsoletes: %{name}-vboxwebsrv
The VirtualBox web server is used to control headless VMs using a browser. The VirtualBox web server is used to control headless VMs using a browser.
######################################### #########################################
%package host-KMP %package kmp
Summary: Host kernel module for VirtualBox Summary: Kernel modules for VirtualBox
Group: System/Emulators/PC Group: System/Emulators/PC
%kernel_module_package -t %{_builddir}/virtualbox-kmp-template -p %{SOURCE7} -n %{name}-host -f %{SOURCE5} -x kdump um xen pae xenpae pv %kernel_module_package -t %{_builddir}/virtualbox-kmp-template -p %{SOURCE7} -n %{name} -f %{SOURCE5} -x kdump um xen pae xenpae pv
Requires: %{kernel_module_package_buildreqs} Requires: %{kernel_module_package_buildreqs}
Obsoletes: %{name}-guest-kmp
Obsoletes: %{name}-host-kmp
%description host-KMP %description kmp
This package contains the kernel-modules that VirtualBox uses to create virtual machines. This package contains the kernel-modules that VirtualBox uses to create or run virtual machines.
##########################################
%package guest-KMP
Summary: Guest kernel modules for VirtualBox
Group: System/Emulators/PC
%kernel_module_package -t %{_builddir}/virtualbox-kmp-template -p %{SOURCE8} -n %{name}-guest -f %{SOURCE6} -x kdump um xen pae xenpae pv
Requires: %{kernel_module_package_buildreqs}
%description guest-KMP
This package contains the VB kernel-modules for Linux guest virtual machines.
########################################## ##########################################
%package guest-x11 %package guest-x11
Summary: VirtualBox X11 drivers for mouse and video Summary: VirtualBox X11 drivers for mouse and video
Group: System/X11/Servers/XF86_4 Group: System/X11/Servers/XF86_4
Requires: %{name}-guest-kmp = %{version} Requires: %{name}-kmp = %{version}
Supplements: modalias(xorg-x11-server:pci:v000080EEd0000BEEFsv*sd*bc*sc*i*) Supplements: modalias(xorg-x11-server:pci:v000080EEd0000BEEFsv*sd*bc*sc*i*)
#rename from xorg-x11-driver-virtualbox-ose: #rename from xorg-x11-driver-virtualbox-ose:
Provides: xorg-x11-driver-virtualbox-ose = %{version} Provides: xorg-x11-driver-virtualbox-ose = %{version}
@ -319,7 +311,7 @@ This package contains X11 guest utilities and X11 guest mouse and video drivers
%package guest-tools %package guest-tools
Summary: VirtualBox guest tools Summary: VirtualBox guest tools
Group: System/Emulators/PC Group: System/Emulators/PC
Requires: %{name}-guest-kmp = %{version} Requires: %{name}-kmp = %{version}
Supplements: modalias(pci:v000080EEd0000BEEFsv*sd*bc*sc*i*) Supplements: modalias(pci:v000080EEd0000BEEFsv*sd*bc*sc*i*)
#rename from "ose" version: #rename from "ose" version:
Provides: %{name}-ose-guest-tools = %{version} Provides: %{name}-ose-guest-tools = %{version}
@ -390,7 +382,7 @@ BuildArch: noarch
%description guest-source %description guest-source
Source files for %{name} guest kernel modules Source files for %{name} guest kernel modules
These can be built for custom kernels using These can be built for custom kernels using
cd %{_prefix}/src/kernel-modules/virtualbox/guest ; make ; make install sudo /sbin/vboxguestconfig
########################################### ###########################################
%package guest-desktop-icons %package guest-desktop-icons
@ -435,6 +427,7 @@ as an "extpack" for VirtualBox. The implementation is licensed under GPL.
%patch108 -p1 %patch108 -p1
%patch109 -p1 %patch109 -p1
%patch110 -p1 %patch110 -p1
%patch111 -p1
%patch112 -p1 %patch112 -p1
%patch113 -p1 %patch113 -p1
%patch115 -p1 %patch115 -p1
@ -536,15 +529,15 @@ install -D -m 644 "COPYING" "%{buildroot}%{_datadir}/licenses/LICENSE.vnc"
# #
# build kernel modules for guest and host (check novel-kmp package as example) # build kernel modules for guest and host (check novel-kmp package as example)
# host modules : vboxdrv,vboxnetflt,vboxnetadp,vboxpci # host modules : vboxdrv,vboxnetflt,vboxnetadp,vboxpci
# guest modules : vboxguest,vboxsf vboxvideo (for Leap 15.1) # guest modules : vboxguest,vboxsf vboxvideo (for Leap 15.1 and older)
echo "build kernel modules" echo "build kernel modules"
%if 0%{?suse_version} >= 1500 #%if 0%{?suse_version} < 1550
for vbox_module in out/linux.*/release/bin/src/vbox{drv,netflt,netadp,pci} \ for vbox_module in out/linux.*/release/bin/src/vbox{drv,netflt,netadp,pci} \
out/linux.*/release/bin/additions/src/vbox{guest,sf,video}; do out/linux.*/release/bin/additions/src/vbox{guest,sf,video}; do
%else #%else
for vbox_module in out/linux.*/release/bin/src/vbox{drv,netflt,netadp,pci} \ #for vbox_module in out/linux.*/release/bin/src/vbox{drv,netflt,netadp,pci} \
out/linux.*/release/bin/additions/src/vbox{guest,sf}; do # out/linux.*/release/bin/additions/src/vbox{guest,sf}; do
%endif #%endif
#get the module name from path #get the module name from path
module_name=$(basename "$vbox_module") module_name=$(basename "$vbox_module")
@ -568,7 +561,7 @@ for vbox_module in out/linux.*/release/bin/src/vbox{drv,netflt,netadp,pci} \
fi fi
# copy vboxguest (for guest) module symbols which are used by vboxsf and vboxvideo km's: # copy vboxguest (for guest) module symbols which are used by vboxsf and vboxvideo km's:
if [ "$module_name" = "vboxsf" -o \ if [ "$module_name" = "vboxsf" -o \
"$module_name" = "vboxvideo" ] ; then "$module_name" = "vboxvideo" ] ; then
cp $PWD/modules_build_dir/$flavor/vboxguest/Module.symvers \ cp $PWD/modules_build_dir/$flavor/vboxguest/Module.symvers \
$PWD/modules_build_dir/$flavor/$module_name $PWD/modules_build_dir/$flavor/$module_name
fi fi
@ -603,7 +596,7 @@ install -d -m 755 %{buildroot}%{_udevrulesdir}
install -d -m 755 %{buildroot}%{_sysconfdir}/X11/xinit/xinitrc.d install -d -m 755 %{buildroot}%{_sysconfdir}/X11/xinit/xinitrc.d
#################################################################################### ####################################################################################
echo "entering virtualbox-kmp-guest and virtualbox-kmp-host install section" echo "entering virtualbox-kmp install section"
#################################################################################### ####################################################################################
export INSTALL_MOD_PATH=%{buildroot} export INSTALL_MOD_PATH=%{buildroot}
export INSTALL_MOD_DIR=extra export INSTALL_MOD_DIR=extra
@ -611,11 +604,11 @@ export INSTALL_MOD_DIR=extra
export INITRD_IN_POSTTRANS=1 export INITRD_IN_POSTTRANS=1
export KMP_NEEDS_MKINITRD=0 export KMP_NEEDS_MKINITRD=0
#to install modules we use here similar steps like in build phase, go through all the modules : #to install modules we use here similar steps like in build phase, go through all the modules :
%if 0%{?suse_version} >= 1500 #%if 0%{?suse_version} < 1550
for module_name in vbox{drv,netflt,pci,netadp,guest,sf,video} for module_name in vbox{drv,netflt,pci,netadp,guest,sf,video}
%else #%else
for module_name in vbox{drv,netflt,pci,netadp,guest,sf} #for module_name in vbox{drv,netflt,pci,netadp,guest,sf}
%endif #%endif
do do
#and through the all flavors #and through the all flavors
for flavor in %{flavors_to_build}; do for flavor in %{flavors_to_build}; do
@ -816,7 +809,7 @@ getent group vboxusers >/dev/null || groupadd -r vboxusers
# Add groups for seamless mode and shared folders: # Add groups for seamless mode and shared folders:
getent group vboxguest >/dev/null || groupadd -r vboxguest getent group vboxguest >/dev/null || groupadd -r vboxguest
getent group vboxsf >/dev/null || groupadd -r vboxsf getent group vboxsf >/dev/null || groupadd -r vboxsf
%if 0%{?suse_version} >= 1500 %if 0%{?suse_version} <= 1500
getent group vboxvideo >/dev/null || groupadd -r vboxvideo getent group vboxvideo >/dev/null || groupadd -r vboxvideo
%endif %endif
%service_add_pre vboxadd-service.service %service_add_pre vboxadd-service.service
@ -1031,8 +1024,6 @@ export DISABLE_RESTART_ON_UPDATE=yes
%{_bindir}/VBoxClient %{_bindir}/VBoxClient
%{_libdir}/VBoxOGL*.so %{_libdir}/VBoxOGL*.so
%{_libdir}/VBoxEGL*.so %{_libdir}/VBoxEGL*.so
#%%{_libdir}/xorg/modules/drivers/vboxvideo_drv.so
#%%{_libdir}/dri/vboxvideo_dri.so
%{_sysconfdir}/X11/xinit/xinitrc.d/vboxadd-xclient.sh %{_sysconfdir}/X11/xinit/xinitrc.d/vboxadd-xclient.sh
%files guest-tools %files guest-tools