Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package virtualbox for openSUSE:Leap:16.0 
checked in at 2026-09-28 11:45:30
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Leap:16.0/virtualbox (Old)
 and      /work/SRC/openSUSE:Leap:16.0/.virtualbox.new.383539 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "virtualbox"

Mon Sep 28 11:45:30 2026 rev:2 rq: version:7.2.20

Changes:
--------
--- /work/SRC/openSUSE:Leap:16.0/virtualbox/virtualbox.changes  2026-04-21 
17:51:56.523577089 +0200
+++ /work/SRC/openSUSE:Leap:16.0/.virtualbox.new.383539/virtualbox.changes      
2026-09-28 11:45:35.671603827 +0200
@@ -1,0 +2,164 @@
+Fri Sep 25 12:05:22 UTC 2026 - Jan Engelhardt <[email protected]>
+
+- Add Requires(post) as needed
+
+-------------------------------------------------------------------
+Tue Sep 22 23:21:45 UTC 2026 - Jan Engelhardt <[email protected]>
+
+- Update to release 7.2.20
+  * Fixed a regression on Windows hosts causing VMs to fail with
+    VERR_SUP_VP_FOUND_EXEC_MEMORY.
+
+-------------------------------------------------------------------
+Wed Sep 16 07:02:25 UTC 2026 - Jan Engelhardt <[email protected]>
+
+- Update to release 7.2.18
+  * Storage: Fixed data corruption in VDI differencing images after
+    writing full blocks of zeroes and reopening the image.
+  * Graphics: Fixed a VM process crash that could occur on Linux
+    hosts with 3D acceleration enabled.
+  * Shared Clipboard: Fixed the first character being removed from
+    filenames when copying files located directly in a filesystem
+    root.
+  * Linux 7.3-rc support.
+- Drop kernel-7.3.patch (merged)
+
+-------------------------------------------------------------------
+Sat Sep  5 04:28:27 UTC 2026 - Jiri Slaby <[email protected]>
+
+- add Leap-16.1.patch (bsc#1274769)
+
+-------------------------------------------------------------------
+Wed Sep  2 04:43:02 UTC 2026 - Jiri Slaby <[email protected]>
+
+- add kernel-7.3.patch to fix build against kernel 7.3.
+
+-------------------------------------------------------------------
+Wed Aug 19 07:46:39 UTC 2026 - Jan Engelhardt <[email protected]>
+
+- Update to release 7.2.16
+  * GUI: Updated Catalan translations
+  * GUI: Fixed OVF import warning visibility
+  * GUI: Added graceful handling of inaccessible VMs
+  * Graphics: VMSVGA 3D performance improvements
+  * Video Recording: Fixed a hang when stopping recording after a
+    large number of display updates
+  * Host: OpenSSL 4.0 build fixes
+  * Linux Host: Support for FRED
+  * Linux Host and Guest: Improvements in shared clipboard handling
+    in Wayland
+
+-------------------------------------------------------------------
+Thu Aug 13 08:45:55 UTC 2026 - Robert Frohl <[email protected]>
+
+- Fix kmp build against kernel-longterm 6.18.44+, where the
+  EXPORT_SYMBOL for drm_fb_helper_alloc_info() was removed:
+    adding kernel-longterm_6-18-44.patch
+
+-------------------------------------------------------------------
+Wed Jul 22 15:34:10 UTC 2026 - Jan Engelhardt <[email protected]>
+
+- Update to release 7.2.14
+  * VMM: Avoided querying/setting xcr0 for CPUs without xsave
+    feature when using Windows Hyper-V as the virtualization engine
+  * Linux Host: Added initial support for kernel 7.2
+  * Linux Guest: Fixed support for updated RHEL 9.8 and 9.9 kernels
+  * UEFI: Fixed possible bug check and reboot of Windows 11 when
+    updating Secure Boot DBX entries
+- Drop 0001-7.2-Backported-r174461-Linux-vboxdrv-Add-initial-sup.patch,
+  0002-7.2-Backported-r174462-Linux-vboxnetadp-Add-initial-.patch
+  (merged)
+
+-------------------------------------------------------------------
+Tue Jul 14 05:17:52 UTC 2026 - Jiri Slaby <[email protected]>
+
+- support for kernel 7.2
+  * 0001-7.2-Backported-r174461-Linux-vboxdrv-Add-initial-sup.patch
+  * 0002-7.2-Backported-r174462-Linux-vboxnetadp-Add-initial-.patch
+
+-------------------------------------------------------------------
+Wed Jul  1 16:00:02 UTC 2026 - Jan Engelhardt <[email protected]>
+
+- Update to release 7.2.12
+  * Fixed a Linux host kernel panic when kvm.enable_virt_at_load=0.
+  * Windows Guest: Added DX11 performance improvements and fixes.
+
+-------------------------------------------------------------------
+Wed Jul  1 15:32:05 UTC 2026 - Matej Cepl <[email protected]>
+
+- Switch off Python bindings completely, as we are not providing
+  Python 3.11 packages for Factory anymore (bsc#1268789).
+
+-------------------------------------------------------------------
+Wed Jul  1 13:02:27 UTC 2026 - Jan Engelhardt <[email protected]>
+
+- Undo 0666 mode change to virtualbox-60-vboxguest.rules
+  [boo#1270013]
+
+-------------------------------------------------------------------
+Wed Jun 17 19:57:59 UTC 2026 - Jan Engelhardt <[email protected]>
+
+- User note: Transitioning between virtualbox 7.2.8-or-earlier and
+  7.2.10-or-newer requires reloading kvm.ko to avoid a kernel panic.
+  Alternatively, reboot the system.
+- Update to release 7.2.10
+  * VMM: Fixed issue when CentOS 10 VM was not booting with to the
+    message "Fatal glibc error: CPU does not support x86-64-v3".
+  * Devices/EFI: Fixed booting issue when ARM VM had less than 1024
+    MiB of RAM assigned.
+  * Storage: Fixed issue when VIRTIO-SCSI device was not recognized
+    as SSD device by guest system.
+  * Network: Fixed issue in E1000 emulation code which triggered
+    debug log creation.
+  * Network: Fixed issue in E1000 emulation code which prevented
+    OS/2 guest from booting.
+  * Linux Host: Fixed issue when VMs could not be started due to
+    kernel oops.
+  * Linux Host and Guest: Fixed issue when kernel modules were
+    failing to build with openSUSE 16.0 kernel.
+  * Linux Host and Guest: Added initial support for kernel 7.1.
+  * Linux Host and Guest: Added extra fixes for RHEL 9.8 kernel.
+  * Linux Host and Guest: Added possibility to build source code
+    using NASM instead of YASM as the assembler.
+  * Linux Guest Additions: Added initial support for Extended Data
+    Control Protocol for clipboard sharing with Plasma on Wayland
+    guests.
+  * Linux Guest Additions: Added extra fixes for preventing
+    vboxvideo kernel module build with kernel version 7.0 and
+    newer.
+  * OS/2 Guest Additions: Fixed issue when Shared Folders automount
+    and clipboard sharing stopped working.
+- Delete 0001-7.2-Backported-r173880-Linux-vboxdrv-Add-initial-sup.patch
+  (obsolete),
+  0001-7.2-Backported-r173857-Additions-Linux-vboxsf-Add-in.patch
+  (merged)
+
+-------------------------------------------------------------------
+Thu Jun 11 07:27:32 UTC 2026 - Jiri Slaby <[email protected]>
+
+- support kernel 7.1 (bsc#1268088)
+  * 0001-7.2-Backported-r173880-Linux-vboxdrv-Add-initial-sup.patch
+  * 0001-7.2-Backported-r173857-Additions-Linux-vboxsf-Add-in.patch
+
+-------------------------------------------------------------------
+Sun Apr 26 12:52:13 UTC 2026 - Jan Engelhardt <[email protected]>
+
+- Update to release 7.2.8
+  * VMM: Fixed issue which caused a Guru Meditation with
+    VERR_IEM_IPE_4 if the guest was trying to execute the wrong
+    hypercall instruction but injected a UD exception instead
+  * Fixed crash on FreeBSD 16.0 shutdown with multiple devices
+    attached to LSI Logic SAS controller
+  * Added support for Linux 6.19, 7.0
+  * Added support for guest time accounting
+  * Deprecated the vboxvideo kernel module for guest kernels
+    7.0 and newer
+- Delete kernel-6.19.patch, leap16.1-kmp-fixes.patch
+  (unapplicable)
+
+-------------------------------------------------------------------
+Thu Apr 16 11:08:46 UTC 2026 - Max Lin <[email protected]>
+
+- Tweak the build conditions according to %suse_version=1610 change
+
+-------------------------------------------------------------------

Old:
----
  VirtualBox-7.2.6-patched.tpxz
  _service
  kernel-6.19.patch
  leap16.1-kmp-fixes.patch

New:
----
  Leap-16.1.patch
  VirtualBox-7.2.20-patched.tpxz
  fix_usb_rules.sh
  kernel-longterm_6-18-44.patch
  update-extpack.sh
  vboxautostart-service.sh
  vboxconfig.sh
  vboxdrv.sh
  vboxguestconfig.sh
  vboxweb-service.sh
  virtualbox-patch-source.sh
  virtualbox-wrapper.sh

----------(Old B)----------
  Old:    7.0 and newer
- Delete kernel-6.19.patch, leap16.1-kmp-fixes.patch
  (unapplicable)
  Old:    7.0 and newer
- Delete kernel-6.19.patch, leap16.1-kmp-fixes.patch
  (unapplicable)
----------(Old E)----------

----------(New B)----------
  New:
- add Leap-16.1.patch (bsc#1274769)
  New:  EXPORT_SYMBOL for drm_fb_helper_alloc_info() was removed:
    adding kernel-longterm_6-18-44.patch
----------(New E)----------

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ virtualbox.spec ++++++
--- /var/tmp/diff_new_pack.cFrpmL/_old  2026-09-28 11:45:36.673645307 +0200
+++ /var/tmp/diff_new_pack.cFrpmL/_new  2026-09-28 11:45:36.676645431 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package virtualbox
 #
-# Copyright (c) 2025 SUSE LLC
+# Copyright (c) 2026 SUSE LLC and contributors
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -15,11 +15,12 @@
 # Please submit bugfixes or comments via https://bugs.opensuse.org/
 #
 
+
 %if "@BUILD_FLAVOR@" == "kmp"
        # macros for virtualbox-kmp
        %define main_package 0
        %define kmp_package 1
-       %if 0%{?suse_version} > 1600
+       %if 0%{?suse_version} >= 1699
                %define kmp_longterm 1
        %endif
        %define name_suffix kmp
@@ -54,12 +55,12 @@
 %endif
 
 # If you want to disable building Python parts, just set this to %%nil
-%if 0%{?suse_version} == 1600
-       # Leap 16.0 has python3.13, currently not supported
+%if 0%{?suse_version} >= 1600 && 0%{?suse_version} < 1699
+       # Leap 16.x has python3.13 or above, currently not supported
        %global mypython %nil
 %else
-       # Using python3.11 for Factory, current version doesn't support 
python3.13
-       %global mypython python311
+       # We are not providing 3.11 in Factory any more
+       %global mypython %nil
 %endif
 
 %if "%mypython" != ""
@@ -68,8 +69,7 @@
 %endif
 
 Name:           virtualbox%{?dash}%{?name_suffix}
-Version:        7.2.6
-%define rversion 7.2.6
+Version:        7.2.20
 Release:        0
 Summary:        %{package_summary}
 License:        GPL-3.0-only
@@ -79,12 +79,8 @@
 Group:          System/Emulators/PC
 %endif
 URL:            https://www.virtualbox.org/
-#
-# so you don't need to repack virtualbox by hand, just add new release of 
VirtualBox-x.x.x.tar.bz2 and line below with
-# script virtualbox-patch-source.sh will do the job :)
-# WARNING: This is not a comment, but the real command to repack source
-#%%(bash %%{_sourcedir}/virtualbox-patch-source.sh 
VirtualBox-%%{version}.tar.bz2)
-#Source:        
https://download.virtualbox.org/virtualbox/7.1.8/VirtualBox-7.1.8.tar.bz2
+# Replenish by running ./virtualbox-patch-source.sh 
VirtualBox-%%{version}.tar.bz2
+#Source:        
https://download.virtualbox.org/virtualbox/7.2.18/VirtualBox-7.2.18.tar.bz2
 Source0:        VirtualBox-%{version}-patched.tpxz
 Source1:        UserManual.pdf
 Source3:        virtualbox-60-vboxguest.rules
@@ -133,9 +129,8 @@
 Patch11:        cxx17.patch
 Patch12:        host-source.patch
 Patch20:        gentoo-C23.patch
-Patch21:        kernel-6.19.patch
-# Patch for Leap 16.1
-Patch30:        leap16.1-kmp-fixes.patch
+Patch30:        kernel-longterm_6-18-44.patch
+Patch32:        Leap-16.1.patch
 #
 # Common BuildRequires for both virtualbox and virtualbox-kmp
 BuildRequires:  %{kernel_module_package_buildreqs}
@@ -178,10 +173,10 @@
 BuildRequires:  lzfse
 BuildRequires:  lzfse-devel
 %if "%mypython" != ""
-BuildRequires:  python-rpm-macros
 BuildRequires:  %{mypython}-devel
-BuildRequires:  %{mypython}-setuptools
 BuildRequires:  %{mypython}-pip
+BuildRequires:  %{mypython}-setuptools
+BuildRequires:  python-rpm-macros
 %endif
 BuildRequires:  qt6-tools-linguist
 BuildRequires:  rpm
@@ -239,6 +234,7 @@
 BuildRequires:  pkgconfig(xrandr)
 Requires:       %{name}-kmp = %{version}
 Requires(pre):  %fillup_prereq
+Requires(post): %_bindir/grep
 Requires(post): permissions
 Requires(verify): permissions
 Conflicts:      %{name}-qt < %{version}
@@ -407,6 +403,7 @@
 %package vnc
 Summary:        VNC desktop sharing
 Group:          System/Emulators/PC
+Requires(post): %_bindir/tar
 Requires:       %{name} = %{version}
 
 %description vnc
@@ -423,7 +420,7 @@
 %endif
 
 %prep
-%autosetup -n VirtualBox-%{rversion} -p1
+%autosetup -n VirtualBox-%version -p1
 
 ### Documents for virtualbox main package ###
 %if %{main_package}
@@ -563,7 +560,7 @@
 echo "entering VNC extension install section"
 cd out/linux.*/release/packages/
 mkdir -p "%{buildroot}%{_datadir}/virtualbox/extensions/"
-install -D -m 644 VNC-*.vbox-extpack 
"%{buildroot}%{_datadir}/virtualbox/extensions/VNC-%{rversion}.vbox-extpack"
+install -D -m 644 VNC-*.vbox-extpack 
"%buildroot/%_datadir/virtualbox/extensions/VNC-%version.vbox-extpack"
 cd -
 
 echo "entering virtualbox(-qt) install section"
@@ -600,7 +597,8 @@
 # Workaround kvm.ko usurping VMX.
 # (Linux kernel commit b4886fab6fb620b96ad7eeefb9801c42dfa91741 is the culprit.
 # See also https://lore.kernel.org/kvm/[email protected]/T/ )
-echo options kvm enable_virt_at_load=0 
>"%buildroot/%_modprobedir/50-virtualbox.conf"
+# This workaround only functions up to and including vbox-7.2.8.
+# echo options kvm enable_virt_at_load=0 
>"%buildroot/%_modprobedir/50-virtualbox.conf"
 
 # install kmp src
 mkdir -p %{buildroot}%{_usrsrc}/kernel-modules/virtualbox
@@ -700,9 +698,7 @@
 
 install -Dm0644 vbox.conf %{buildroot}%{_sysusersdir}/vbox.conf
 install -Dm0644 vbox-guest-tools.conf 
%{buildroot}%{_sysusersdir}/vbox-guest-tools.conf
-%fdupes %{buildroot}/%{_vbox_instdir}
-%fdupes %{buildroot}/%{_datadir}/virtualbox/nls
-%fdupes %{buildroot}/%{_datadir}/pixmaps/virtualbox
+%fdupes %{buildroot}/%{_vbox_instdir} %{buildroot}/%{_datadir}/virtualbox/nls 
%{buildroot}/%{_datadir}/pixmaps/virtualbox
 
 %pre -f vbox.pre
 %service_add_pre vboxdrv.service vboxautostart-service.service
@@ -715,10 +711,7 @@
 
 %post
 #setup our sysconfig file /etc/sysconfig/vbox
-%set_permissions %{_vbox_instdir}/VBoxNetNAT
-%set_permissions %{_vbox_instdir}/VBoxNetDHCP
-%set_permissions %{_vbox_instdir}/VBoxNetAdpCtl
-%set_permissions %{_vbox_instdir}/VBoxHeadless
+%set_permissions %{_vbox_instdir}/VBoxNetNAT %{_vbox_instdir}/VBoxNetDHCP 
%{_vbox_instdir}/VBoxNetAdpCtl %{_vbox_instdir}/VBoxHeadless
 %service_add_post vboxdrv.service vboxautostart-service.service
 # add new autostart stuff to the existing default config, if missing
 grep -q VBOXAUTOSTART %{_sysconfdir}/default/virtualbox || {
@@ -738,20 +731,21 @@
        [ "$user" = "*" ] && break
        mv %{_sysconfdir}/vbox/user.start %{_sysconfdir}/vbox/autostart.d/.
 done
+# Make sure the old 50-virtualbox.conf is evicted from initrds
+%{?regenerate_initrd_post}
+
+%posttrans
+%{?regenerate_initrd_posttrans}
+echo INFO: Transitioning between virtualbox 7.2.8-or-earlier and 
7.2.10-or-newer requires reloading kvm.ko to avoid a kernel panic. 
Alternatively, reboot the system.
 
 %post qt
-%set_permissions %{_vbox_instdir}/VirtualBoxVM
-%set_permissions %{_vbox_instdir}/VBoxSDL
+%set_permissions %{_vbox_instdir}/VirtualBoxVM %{_vbox_instdir}/VBoxSDL
 
 %verifyscript
-%verify_permissions -e %{_vbox_instdir}/VBoxNetNAT
-%verify_permissions -e %{_vbox_instdir}/VBoxNetDHCP
-%verify_permissions -e %{_vbox_instdir}/VBoxNetAdpCtl
-%verify_permissions -e %{_vbox_instdir}/VBoxHeadless
+%verify_permissions -e %{_vbox_instdir}/VBoxNetNAT -e 
%{_vbox_instdir}/VBoxNetDHCP -e %{_vbox_instdir}/VBoxNetAdpCtl -e 
%{_vbox_instdir}/VBoxHeadless
 
 %verifyscript qt
-%verify_permissions -e %{_vbox_instdir}/VirtualBoxVM
-%verify_permissions -e %{_vbox_instdir}/VBoxSDL
+%verify_permissions -e %{_vbox_instdir}/VirtualBoxVM -e 
%{_vbox_instdir}/VBoxSDL
 
 %post guest-tools
 %service_add_post vboxadd-service.service vboxclient.service 
vboxservice.service
@@ -760,9 +754,9 @@
 %service_add_post vboxweb-service.service
 
 %post vnc
-EXTPACK="%{_datadir}/virtualbox/extensions/VNC-%{rversion}.vbox-extpack"
+EXTPACK="%_datadir/virtualbox/extensions/VNC-%version.vbox-extpack"
 ACCEPT="$(tar --to-stdout -xf "${EXTPACK}" ./ExtPack-license.txt | sha256sum | 
head --bytes=64)"
-VBoxManage extpack install --replace "${EXTPACK}" --accept-license="${ACCEPT}" 
> /dev/null
+VBoxManage extpack install --replace "${EXTPACK}" --accept-license="${ACCEPT}" 
</dev/null >/dev/null
 
 %preun
 %service_del_preun vboxautostart-service.service vboxdrv.service
@@ -971,7 +965,7 @@
 %files vnc
 %license COPYING
 %dir %{_datadir}/virtualbox/extensions
-%{_datadir}/virtualbox/extensions/VNC-%{rversion}.vbox-extpack
+%_datadir/virtualbox/extensions/VNC-%version.vbox-extpack
 
 # main_package
 %endif

++++++ Leap-16.1.patch ++++++
>From cb25e3b0a23327a1d8c39ca7fd089150604ecf02 Mon Sep 17 00:00:00 2001
From: Jiri Slaby <[email protected]>
Date: Sat, 5 Sep 2026 06:23:56 +0200
Subject: [PATCH] Support openSUSE Leap 16.1
References: bsc#1274769
Patch-mainline: Submitted https://github.com/VirtualBox/virtualbox/issues/854

The kernel in openSUSE Leap 16.1 is defined as SLFO 1.3.

1) Define a new macro RTLNX_SUSE_SLFO_MAJ_PREREQ() for SLFO.
2) Use it over the code, because the kernel adopted many features, but
   is still at version 6.12.

Signed-off-by: Jiri Slaby <[email protected]>
---
 include/iprt/linux/version.h                        | 7 +++++++
 src/VBox/Additions/linux/drm/vbox_drv.c             | 8 ++++----
 src/VBox/Additions/linux/drm/vbox_drv.h             | 8 ++++++++
 src/VBox/Additions/linux/drm/vbox_fb.c              | 4 ++--
 src/VBox/Additions/linux/drm/vbox_main.c            | 4 ++--
 src/VBox/Additions/linux/drm/vbox_mode.c            | 2 +-
 src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c   | 2 +-
 src/VBox/Runtime/r0drv/linux/initterm-r0drv-linux.c | 8 ++++----
 src/VBox/Runtime/r0drv/linux/memobj-r0drv-linux.c   | 6 +++---
 src/VBox/Runtime/r0drv/linux/the-linux-kernel.h     | 3 ++-
 10 files changed, 34 insertions(+), 18 deletions(-)

diff --git a/include/iprt/linux/version.h b/include/iprt/linux/version.h
index 27f414b00e0f..a40ea2e5ebe6 100644
--- a/include/iprt/linux/version.h
+++ b/include/iprt/linux/version.h
@@ -133,6 +133,13 @@
 # define RTLNX_SUSE_MAJ_PREREQ(a_iMajor, a_iMinor) (0)
 #endif
 
+/** @def RTLNX_SUSE_SLFO_MAJ_PREREQ
+ * Require a minimum minor release number for the given SUSE SLFO release.
+ * @param a_iMajor      CONFIG_SUSE_VERSION must _equal_ this.
+ * @param a_iMinor      CONFIG_SUSE_PATCHLEVEL must be greater or equal to 
this.
+ */
+#define RTLNX_SUSE_SLFO_MAJ_PREREQ(a_iMajor, a_iMinor) 
(IS_ENABLED(CONFIG_SUSE_PRODUCT_SLFO) && RTLNX_SUSE_MAJ_PREREQ(a_iMajor, 
a_iMinor))
+
 /** @def RTLNX_SUSE_ADLP_MAJ_LNX_PREREQ
  * Require a minimum minor release number for the given SUSE release.
  *
diff --git a/src/VBox/Additions/linux/drm/vbox_drv.c 
b/src/VBox/Additions/linux/drm/vbox_drv.c
index 5679e97091ff..24dd0244d813 100644
--- a/src/VBox/Additions/linux/drm/vbox_drv.c
+++ b/src/VBox/Additions/linux/drm/vbox_drv.c
@@ -43,14 +43,14 @@
 # include <drm/drm_probe_helper.h>
 #endif
 
-#if RTLNX_VER_MIN(6,13,0) && defined(CONFIG_APERTURE_HELPERS) || 
RTLNX_RHEL_RANGE(9,7, 9,99) || RTLNX_RHEL_RANGE(10,1, 10,99)
+#if RTLNX_VER_MIN(6,13,0) && defined(CONFIG_APERTURE_HELPERS) || 
RTLNX_RHEL_RANGE(9,7, 9,99) || RTLNX_RHEL_RANGE(10,1, 10,99) || 
RTLNX_SUSE_SLFO_MAJ_PREREQ(1,3)
 # include <linux/aperture.h>
 #endif
 
 #if RTLNX_VER_RANGE(5,14,0, 6,13,0) || RTLNX_RHEL_RANGE(8,6, 8,99)
 /** RHEL 9.7 is based on 5.14, however this header is not available
  * there due to backports from newer kernels. Same for RHEL 10.X (based on 
6.12) */
-# if !RTLNX_RHEL_RANGE(9,7, 9,99) && !RTLNX_RHEL_RANGE(10,1, 10,99)
+# if !RTLNX_RHEL_RANGE(9,7, 9,99) && !RTLNX_RHEL_RANGE(10,1, 10,99) && 
!RTLNX_SUSE_SLFO_MAJ_PREREQ(1,3)
 #  include <drm/drm_aperture.h>
 # endif
 #endif
@@ -102,7 +102,7 @@ static int vbox_pci_probe(struct pci_dev *pdev, const 
struct pci_device_id *ent)
        }
 #endif
 
-# if RTLNX_VER_MIN(6,13,0) && defined(CONFIG_APERTURE_HELPERS) || 
RTLNX_RHEL_RANGE(9,7, 9,99) || RTLNX_RHEL_RANGE(10,1, 10,99)
+# if RTLNX_VER_MIN(6,13,0) && defined(CONFIG_APERTURE_HELPERS) || 
RTLNX_RHEL_RANGE(9,7, 9,99) || RTLNX_RHEL_RANGE(10,1, 10,99) || 
RTLNX_SUSE_SLFO_MAJ_PREREQ(1,3)
        ret = aperture_remove_conflicting_pci_devices(pdev, driver.name);
 # elif RTLNX_VER_RANGE(5,14,0, 6,13,0) || RTLNX_RHEL_RANGE(8,6, 8,99)
 #  if RTLNX_VER_MIN(5,15,0) || RTLNX_RHEL_RANGE(8,7, 8,99) || 
RTLNX_RHEL_MIN(9,1) || RTLNX_SUSE_MAJ_PREREQ(15,4)
@@ -399,7 +399,7 @@ static struct drm_driver driver = {
 #endif
        .name = DRIVER_NAME,
        .desc = DRIVER_DESC,
-#if RTLNX_VER_MAX(6,14,0) && !RTLNX_RHEL_RANGE(9,7, 9,99) && 
!RTLNX_RHEL_RANGE(10,1, 10,99)
+#if RTLNX_VER_MAX(6,14,0) && !RTLNX_RHEL_RANGE(9,7, 9,99) && 
!RTLNX_RHEL_RANGE(10,1, 10,99) && !RTLNX_SUSE_SLFO_MAJ_PREREQ(1,3)
        .date = DRIVER_DATE,
 #endif
 #if RTLNX_VER_MIN(6,15,0) || RTLNX_RHEL_RANGE(9,7, 9,99) || 
RTLNX_RHEL_RANGE(10,1, 10,99)
diff --git a/src/VBox/Additions/linux/drm/vbox_drv.h 
b/src/VBox/Additions/linux/drm/vbox_drv.h
index 9f47a5e3aac0..ffdecbe2bb47 100644
--- a/src/VBox/Additions/linux/drm/vbox_drv.h
+++ b/src/VBox/Additions/linux/drm/vbox_drv.h
@@ -123,6 +123,14 @@
 #else
 # define RTLNX_SUSE_MAJ_PREREQ(a_iMajor, a_iMinor) (0)
 #endif
+
+/** @def RTLNX_SUSE_SLFO_MAJ_PREREQ
+ * Require a minimum minor release number for the given SUSE SLFO release.
+ * @param a_iMajor      CONFIG_SUSE_VERSION must _equal_ this.
+ * @param a_iMinor      CONFIG_SUSE_PATCHLEVEL must be greater or equal to 
this.
+ */
+#define RTLNX_SUSE_SLFO_MAJ_PREREQ(a_iMajor, a_iMinor) 
(IS_ENABLED(CONFIG_SUSE_PRODUCT_SLFO) && RTLNX_SUSE_MAJ_PREREQ(a_iMajor, 
a_iMinor))
+
 /* iprt/linux/version.h copy - end */
 
 #if RTLNX_VER_MAX(4,5,0)
diff --git a/src/VBox/Additions/linux/drm/vbox_fb.c 
b/src/VBox/Additions/linux/drm/vbox_fb.c
index 16970bed2ee1..b29b39c81313 100644
--- a/src/VBox/Additions/linux/drm/vbox_fb.c
+++ b/src/VBox/Additions/linux/drm/vbox_fb.c
@@ -420,7 +420,7 @@ int vboxfb_create(struct drm_fb_helper *helper,
        return 0;
 }
 
-#if RTLNX_VER_MAX(6,15,0) && !RTLNX_RHEL_RANGE(9,7, 9,99) && 
!RTLNX_RHEL_RANGE(10,1, 10,99)
+#if RTLNX_VER_MAX(6,15,0) && !RTLNX_RHEL_RANGE(9,7, 9,99) && 
!RTLNX_RHEL_RANGE(10,1, 10,99) && !RTLNX_SUSE_SLFO_MAJ_PREREQ(1,3)
 static struct drm_fb_helper_funcs vbox_fb_helper_funcs = {
        .fb_probe = vboxfb_create,
 };
@@ -493,7 +493,7 @@ int vbox_fbdev_init(struct drm_device *dev)
        vbox->fbdev = fbdev;
        spin_lock_init(&fbdev->dirty_lock);
 
-#if RTLNX_VER_MIN(6,15,0) || RTLNX_RHEL_RANGE(9,7, 9,99) || 
RTLNX_RHEL_RANGE(10,1, 10,99)
+#if RTLNX_VER_MIN(6,15,0) || RTLNX_RHEL_RANGE(9,7, 9,99) || 
RTLNX_RHEL_RANGE(10,1, 10,99) || RTLNX_SUSE_SLFO_MAJ_PREREQ(1,3)
        drm_fb_helper_prepare(dev, &fbdev->helper, 32, NULL);
 #elif RTLNX_VER_MIN(6,3,0) || RTLNX_RHEL_RANGE(8,9, 8,99) || 
RTLNX_RHEL_RANGE(9,3, 9,99)
        drm_fb_helper_prepare(dev, &fbdev->helper, 32, &vbox_fb_helper_funcs);
diff --git a/src/VBox/Additions/linux/drm/vbox_main.c 
b/src/VBox/Additions/linux/drm/vbox_main.c
index 1fa4d139cc40..747d0224a6d1 100644
--- a/src/VBox/Additions/linux/drm/vbox_main.c
+++ b/src/VBox/Additions/linux/drm/vbox_main.c
@@ -180,7 +180,7 @@ int vbox_framebuffer_init(struct drm_device *dev,
 {
        int ret;
 
-#if RTLNX_VER_MIN(6,17,0) || RTLNX_RHEL_RANGE(9,8, 9,99) || 
RTLNX_RHEL_RANGE(10,2, 10,99)
+#if RTLNX_VER_MIN(6,17,0) || RTLNX_RHEL_RANGE(9,8, 9,99) || 
RTLNX_RHEL_RANGE(10,2, 10,99) || RTLNX_SUSE_SLFO_MAJ_PREREQ(1,3)
        const struct drm_format_info *format = drm_get_format_info(dev, 
mode_cmd->pixel_format, 0);
        drm_helper_mode_fill_fb_struct(dev, &vbox_fb->base, format, mode_cmd);
 #elif RTLNX_VER_MIN(4,11,0) || RTLNX_RHEL_MAJ_PREREQ(7,5)
@@ -201,7 +201,7 @@ int vbox_framebuffer_init(struct drm_device *dev,
 static struct drm_framebuffer *vbox_user_framebuffer_create(
                struct drm_device *dev,
                struct drm_file *filp,
-#if RTLNX_VER_MIN(6,17,0) || RTLNX_RHEL_RANGE(9,8, 9,99) || 
RTLNX_RHEL_RANGE(10,2, 10,99)
+#if RTLNX_VER_MIN(6,17,0) || RTLNX_RHEL_RANGE(9,8, 9,99) || 
RTLNX_RHEL_RANGE(10,2, 10,99) || RTLNX_SUSE_SLFO_MAJ_PREREQ(1,3)
                const struct drm_format_info *info,
 #endif
 #if RTLNX_VER_MIN(4,5,0) || RTLNX_RHEL_MAJ_PREREQ(7,3)
diff --git a/src/VBox/Additions/linux/drm/vbox_mode.c 
b/src/VBox/Additions/linux/drm/vbox_mode.c
index e18c50be611c..bd40181c5f78 100644
--- a/src/VBox/Additions/linux/drm/vbox_mode.c
+++ b/src/VBox/Additions/linux/drm/vbox_mode.c
@@ -660,7 +660,7 @@ static int vbox_get_modes(struct drm_connector *connector)
     return num_modes;
 }
 
-#if RTLNX_VER_MIN(6,15,0) || RTLNX_RHEL_RANGE(9,7, 9,99) || 
RTLNX_RHEL_RANGE(10,1, 10,99)
+#if RTLNX_VER_MIN(6,15,0) || RTLNX_RHEL_RANGE(9,7, 9,99) || 
RTLNX_RHEL_RANGE(10,1, 10,99) || RTLNX_SUSE_SLFO_MAJ_PREREQ(1,3)
 static enum drm_mode_status vbox_mode_valid(struct drm_connector *connector, 
const struct drm_display_mode *mode)
 #elif RTLNX_VER_MIN(3,14,0) || RTLNX_RHEL_MAJ_PREREQ(7,1)
 static enum drm_mode_status vbox_mode_valid(struct drm_connector *connector, 
struct drm_display_mode *mode)
diff --git a/src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c 
b/src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c
index 01d6b33aed30..8693f4a14ea7 100644
--- a/src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c
+++ b/src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c
@@ -250,7 +250,7 @@ static struct file_system_type                  
g_SupDrvLnxFsType =
 static __typeof__(switch_fpu_return)           *g_pfnSwitchFpuReturn;
 #endif
 
-#if RTLNX_VER_MIN(6,19,0) && (defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86))
+#if (RTLNX_VER_MIN(6,19,0) || RTLNX_SUSE_SLFO_MAJ_PREREQ(1,3)) && 
(defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86))
 # define SUPDRV_LINUX_DYNAMIC_CR4_FUNCTIONS
 /** Function pointer to cr4_update_irqsoff(). */
 static __typeof__(cr4_update_irqsoff)           *g_pfnCr4UpdateIrqsoff;
diff --git a/src/VBox/Runtime/r0drv/linux/initterm-r0drv-linux.c 
b/src/VBox/Runtime/r0drv/linux/initterm-r0drv-linux.c
index 88f49f816c9e..ef60fc6d7e3b 100644
--- a/src/VBox/Runtime/r0drv/linux/initterm-r0drv-linux.c
+++ b/src/VBox/Runtime/r0drv/linux/initterm-r0drv-linux.c
@@ -72,7 +72,7 @@ bool g_fLnxIsCetSupported = false;
 /** Whether CET is enabled. */
 bool g_fLnxIsCetEnabled  = false;
 
-#if RTLNX_VER_MIN(6,19,0) && (defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86))
+#ifdef LINUX_DYNAMIC_FLUSH_TLB_ALL
 /** Pointer to __flush_tlb_all kernel symbol. */
 __typeof__(__flush_tlb_all) *g_pfnLinuxFlushTlbAll;
 #endif
@@ -179,7 +179,7 @@ DECLHIDDEN(int) rtR0InitNative(void)
             g_pLnxInitMm = (struct mm_struct 
*)RTR0DbgKrnlInfoGetSymbol(hKrnlInfo, NULL,  "init_mm");
             //printk("rtR0InitNative: g_pLnxInitMm=%#lx\n", (unsigned 
long)g_pLnxInitMm);
             printk(KERN_INFO "rtR0InitNative: g_pLnxInitMm=%p\n", 
g_pLnxInitMm);
-# if RTLNX_VER_MIN(6,19,0) && (defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86))
+# ifdef LINUX_DYNAMIC_FLUSH_TLB_ALL
             g_pfnLinuxFlushTlbAll = 
(__typeof__(g_pfnLinuxFlushTlbAll))RTR0DbgKrnlInfoGetFunction(hKrnlInfo, NULL,
                                                                                
                    "__flush_tlb_all");
 # endif
@@ -188,7 +188,7 @@ DECLHIDDEN(int) rtR0InitNative(void)
         else
             printk(KERN_WARNING "rtR0InitNative: RTR0DbgKrnlInfoOpen failed: 
%d\n", rc2);
 
-# if RTLNX_VER_MIN(6,19,0) && (defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86))
+# ifdef LINUX_DYNAMIC_FLUSH_TLB_ALL
         if (!RT_VALID_PTR(g_pfnLinuxFlushTlbAll))
             g_pfnLinuxFlushTlbAll = 
(__typeof__(g_pfnLinuxFlushTlbAll))__symbol_get("__flush_tlb_all");
         if (!RT_VALID_PTR(g_pfnLinuxFlushTlbAll))
@@ -215,7 +215,7 @@ DECLHIDDEN(void) rtR0TermNative(void)
     g_prtR0LnxWorkQueue = NULL;
 #endif
 
-#if RTLNX_VER_MIN(6,19,0) && (defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86))
+#ifdef LINUX_DYNAMIC_FLUSH_TLB_ALL
     /* Don't bother putting __flush_tlb_all, it's in kernel text and we
        probably got it via kallsyms anyway. */
     g_pfnLinuxFlushTlbAll = NULL;
diff --git a/src/VBox/Runtime/r0drv/linux/memobj-r0drv-linux.c 
b/src/VBox/Runtime/r0drv/linux/memobj-r0drv-linux.c
index 05549cbc9f4b..c533709dfd73 100644
--- a/src/VBox/Runtime/r0drv/linux/memobj-r0drv-linux.c
+++ b/src/VBox/Runtime/r0drv/linux/memobj-r0drv-linux.c
@@ -47,7 +47,7 @@
 #include <iprt/mem.h>
 #include <iprt/process.h>
 #include <iprt/string.h>
-#if RTLNX_VER_MIN(6,19,0) && (defined(RT_ARCH_X86) || defined(RT_ARCH_AMD64))
+#ifdef LINUX_DYNAMIC_FLUSH_TLB_ALL
 # include <iprt/mp.h>
 # include <iprt/asm-amd64-x86.h>
 # ifndef X86_CPUID_FEATURE_EDX_PGE /* can't include iprt/x86.h here */
@@ -2260,7 +2260,7 @@ DECLHIDDEN(int) 
rtR0MemObjNativeMapUser(PPRTR0MEMOBJINTERNAL ppMem, RTR0MEMOBJ p
 /*
  * Wrapper around __flush_tlb_all and fallback code for 4.19+.
  */
-# if RTLNX_VER_MIN(6,19,0)
+# ifdef LINUX_DYNAMIC_FLUSH_TLB_ALL
 
 static DECLCALLBACK(void) rtR0MemObjLinuxFlushTlbAllOnEach(RTCPUID idCpu, void 
*pvUser1, void *pvUser2)
 {
@@ -2290,7 +2290,7 @@ static DECLCALLBACK(void) 
rtR0MemObjLinuxFlushTlbAllOnEachInvPcid(RTCPUID idCpu,
 
 static void rtR0MemObjLinuxFlushTlbAll(void)
 {
-# if RTLNX_VER_MIN(6,19,0)
+# ifdef LINUX_DYNAMIC_FLUSH_TLB_ALL
     if (RT_LIKELY(RT_VALID_PTR(g_pfnLinuxFlushTlbAll)))
         RTLNX_CET_UNSAFE_CALL(g_pfnLinuxFlushTlbAll, g_pfnLinuxFlushTlbAll());
     else
diff --git a/src/VBox/Runtime/r0drv/linux/the-linux-kernel.h 
b/src/VBox/Runtime/r0drv/linux/the-linux-kernel.h
index 18c50e0da30c..c942f2796808 100644
--- a/src/VBox/Runtime/r0drv/linux/the-linux-kernel.h
+++ b/src/VBox/Runtime/r0drv/linux/the-linux-kernel.h
@@ -512,7 +512,8 @@ RTDECL(struct page *) rtR0MemObjLinuxVirtToPage(void *pv);
 
 
 extern struct mm_struct *g_pLnxInitMm;
-#if RTLNX_VER_MIN(6,19,0) && (defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86))
+#if (RTLNX_VER_MIN(6,19,0) || RTLNX_SUSE_SLFO_MAJ_PREREQ(1,3)) && 
(defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86))
+#define LINUX_DYNAMIC_FLUSH_TLB_ALL 1
 extern void (*g_pfnLinuxFlushTlbAll)(void);
 #endif
 
-- 
2.55.0


++++++ _scmsync.obsinfo ++++++
--- /var/tmp/diff_new_pack.cFrpmL/_old  2026-09-28 11:45:36.843652344 +0200
+++ /var/tmp/diff_new_pack.cFrpmL/_new  2026-09-28 11:45:36.847652510 +0200
@@ -1,7 +1,7 @@
-mtime: 1776329216
-commit: 8d7e4315116e8015e302ea09cda655234145bae469a2a6cce8a5f95bb36a50b5
+mtime: 1790586220
+commit: 560d9defc2c4e19ace9894d4db935f52ddd9cacd7feb7c60534c632eadf09431
 url: https://src.opensuse.org/pool/virtualbox
-revision: 8d7e4315116e8015e302ea09cda655234145bae469a2a6cce8a5f95bb36a50b5
+revision: 560d9defc2c4e19ace9894d4db935f52ddd9cacd7feb7c60534c632eadf09431
 trackingbranch: Leap-16.0
 projectscmsync: https://src.opensuse.org/openSUSE/Leap
 

++++++ build.specials.obscpio ++++++

++++++ build.specials.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/.gitignore new/.gitignore
--- old/.gitignore      1970-01-01 01:00:00.000000000 +0100
+++ new/.gitignore      2026-09-28 11:03:40.000000000 +0200
@@ -0,0 +1 @@
+.osc
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fix_usb_rules.sh new/fix_usb_rules.sh
--- old/fix_usb_rules.sh        1970-01-01 01:00:00.000000000 +0100
+++ new/fix_usb_rules.sh        2026-09-28 11:03:40.000000000 +0200
@@ -0,0 +1,7 @@
+#!/bin/bash
+# script to disable USB passthru in /etc/udev/rules.d/60-vboxdrv.rules
+# if already disabled, clear the comment character
+sed -i 's/#SUBSYSTEM==\"usb/SUBSYSTEM==\"usb/' 
/usr/lib/udev/rules.d/60-vboxdrv.rules
+# now comment the usb lines
+sed -i 's/SUBSYSTEM==\"usb/#SUBSYSTEM==\"usb/' 
/usr/lib/udev/rules.d/60-vboxdrv.rules
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/update-extpack.sh new/update-extpack.sh
--- old/update-extpack.sh       1970-01-01 01:00:00.000000000 +0100
+++ new/update-extpack.sh       2026-09-28 11:03:40.000000000 +0200
@@ -0,0 +1,64 @@
+#!/bin/bash
+
+# Script to update extpack
+# The idea for this method and the original code came from Larry Len Rainey.
+#
+# This implementation by Larry Finger
+
+# Define some symbols and determine the current version of VB
+
+VBOXMANAGE=/usr/bin/VBoxManage
+AWK=/usr/bin/awk
+GREP=/usr/bin/grep
+WGET=/usr/bin/wget
+VBOX_VERSION=`$VBOXMANAGE --version | $AWK -F_ {'print $1'}`
+
+# Define a symbol for the name of the extpack matching the VB version
+VBOX_EXT=`echo 
Oracle_VM_VirtualBox_Extension_Pack-${VBOX_VERSION}.vbox-extpack`
+
+# Full path to extpack license file
+LICENSE_PATH="/usr/lib/virtualbox/ExtensionPacks/Oracle_VM_VirtualBox_Extension_Pack/ExtPack-license.rtf"
+
+# Determine the installed version of extpack, if any.
+EXTPACK_CURRENT=`$VBOXMANAGE list extpacks | $GREP -A1 "Oracle VM VirtualBox 
Extension Pack" | $GREP Version | $AWK -F\  {'print $2'}`
+
+# The extpacks are licensed under a Personal Use and Evaluation License
+# At some point, the user must agree to the conditions of that license.
+# If no extpack is installed on this system, then there is no agreement,
+# thus this script cannot install the extpack.
+#
+# This situation applies to new installations that could conform to the 
license,
+# but more importantly, it handles commercial setups that have not purchased
+# the necessary license.
+# Check if extpack is currently installed. If not exit
+if [ -z $EXTPACK_CURRENT ]; then
+       exit 0
+fi
+#
+# An extpack has been installed on this system. Now we need to check if
+# it was issued under the current version of the license.
+
+#Note to maintainers: The "version 11" in the next command must be changed
+# manually when Oracle revises the license.
+
+LICENSE_CHECK=`$GREP "version 11" $LICENSE_PATH | $AWK -F\  {'print $2'}`
+if [ -z $LICENSE_CHECK ]; then
+# New license version does not match the current installation.
+# The user will need to agree to the new version, thus we do nothing here.
+       exit 0
+fi
+if [ $VBOX_VERSION == $EXTPACK_CURRENT ]; then
+# The extpack currently installed matches - we are done
+       exit 0
+fi
+
+# A new version of extpack is needed - switch to directory that can be 
written, and download it
+pushd ~ > /dev/null 2>&1
+$WGET https://download.virtualbox.org/virtualbox/$VBOX_VERSION/$VBOX_EXT > 
/dev/null 2>&1
+
+# Now install it
+echo Y | $VBOXMANAGE extpack install --replace $VBOX_EXT > /dev/null 2>&1
+
+# Clean up by deleting downloaded file and restoring the original working 
directory
+rm -f $VBOX_EXT
+popd ~ > /dev/null 2>&1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vboxautostart-service.sh new/vboxautostart-service.sh
--- old/vboxautostart-service.sh        1970-01-01 01:00:00.000000000 +0100
+++ new/vboxautostart-service.sh        2026-09-28 11:03:40.000000000 +0200
@@ -0,0 +1,174 @@
+#!/bin/sh
+# $Id: vboxautostart-service.sh 143795 2021-04-15 11:42:37Z vgalitsy $
+## @file
+# VirtualBox autostart service init script.
+#
+
+#
+# Copyright (C) 2012-2020 Oracle Corporation
+#
+# This file is part of VirtualBox Open Source Edition (OSE), as
+# available from http://www.virtualbox.org. This file is free software;
+# you can redistribute it and/or modify it under the terms of the GNU
+# General Public License (GPL) as published by the Free Software
+# Foundation, in version 2 as it comes in the "COPYING" file of the
+# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+#
+
+# chkconfig: 345 35 65
+# description: VirtualBox autostart service
+#
+### BEGIN INIT INFO
+# Provides:       vboxautostart-service
+# Required-Start: vboxdrv
+# Required-Stop:  vboxdrv
+# Default-Start:  2 3 4 5
+# Default-Stop:   0 1 6
+# Description:    VirtualBox autostart service
+### END INIT INFO
+
+PATH=$PATH:/bin:/sbin:/usr/sbin
+SCRIPTNAME=vboxautostart-service.sh
+
+[ -f /etc/debian_release -a -f /lib/lsb/init-functions ] || NOLSB=yes
+[ -f /etc/vbox/vbox.cfg ] && . /etc/vbox/vbox.cfg
+
+if [ -n "$INSTALL_DIR" ]; then
+    binary="$INSTALL_DIR/VBoxAutostart"
+else
+    binary="/usr/lib/virtualbox/VBoxAutostart"
+fi
+
+# silently exit if the package was uninstalled but not purged,
+# applies to Debian packages only (but shouldn't hurt elsewhere)
+[ ! -f /etc/debian_release -o -x $binary ] || exit 0
+
+[ -r /etc/default/virtualbox ] && . /etc/default/virtualbox
+
+# Preamble for Gentoo
+if [ "`which $0`" = "/sbin/rc" ]; then
+    shift
+fi
+
+begin_msg()
+{
+    test -n "${2}" && echo "${SCRIPTNAME}: ${1}."
+    logger -t "${SCRIPTNAME}" "${1}."
+}
+
+succ_msg()
+{
+    logger -t "${SCRIPTNAME}" "${1}."
+}
+
+fail_msg()
+{
+    echo "${SCRIPTNAME}: failed: ${1}." >&2
+    logger -t "${SCRIPTNAME}" "failed: ${1}."
+}
+
+start_daemon() {
+    usr="$1"
+    shift
+    su - $usr -c "$*"
+}
+
+if which start-stop-daemon >/dev/null 2>&1; then
+    start_daemon() {
+        usr="$1"
+        shift
+        bin="$1"
+        shift
+        start-stop-daemon --chuid $usr --start --exec $bin -- $@
+    }
+fi
+
+vboxdrvrunning() {
+    lsmod | grep -q "vboxdrv[^_-]"
+}
+
+valid_db_entry() {
+
+    entry="$1"
+    [ -z "$entry" ] && return 1
+
+    user="$2"
+    [ -z "$user" ] && return 1
+
+    user_name=$(id -n -u "$user" 2>/dev/null)
+    [ -z "$user_name" ] && return 1
+
+    user_id=$(id -u "$user" 2>/dev/null)
+
+    # Verify that @user identifies a user *by name* (i.e. not a numeric id).
+    # Careful, all numeric user names are legal.
+    if [ "$user_id" = "$user" ] && [ "$user_name" != "$user" ]; then
+        return 1
+    fi
+
+    # Verify whether file name is the same as file owner name.
+    [ -z "$(find "$entry" -user "$user" -type f 2>/dev/null)" ] && return 1
+
+    return 0
+}
+
+start() {
+    [ -z "$VBOXAUTOSTART_DB" ] && exit 0
+    [ -z "$VBOXAUTOSTART_CONFIG" ] && exit 0
+    begin_msg "Starting VirtualBox VMs configured for autostart" console;
+    vboxdrvrunning || {
+        fail_msg "VirtualBox kernel module not loaded!"
+        exit 0
+    }
+    PARAMS="--background --start --config $VBOXAUTOSTART_CONFIG"
+
+    # prevent inheriting this setting to VBoxSVC
+    unset VBOX_RELEASE_LOG_DEST
+
+    for entry in "$VBOXAUTOSTART_DB"/*.start
+    do
+        user=$(basename "$entry" .start)
+        [ "$user" = "*" ] && break
+        valid_db_entry "$entry" "$user" || continue
+
+        start_daemon "$user" "$binary" $PARAMS > /dev/null 2>&1
+    done
+
+    return $RETVAL
+}
+
+stop() {
+    [ -z "$VBOXAUTOSTART_DB" ] && exit 0
+    [ -z "$VBOXAUTOSTART_CONFIG" ] && exit 0
+
+    PARAMS="--stop --config $VBOXAUTOSTART_CONFIG"
+
+    # prevent inheriting this setting to VBoxSVC
+    unset VBOX_RELEASE_LOG_DEST
+
+    for entry in "$VBOXAUTOSTART_DB"/*.stop
+    do
+        user=$(basename "$entry" .stop)
+        [ "$user" = "*" ] && break
+        valid_db_entry "$entry" "$user" || continue
+
+        start_daemon "$user" "$binary" $PARAMS > /dev/null 2>&1
+    done
+
+    return $RETVAL
+}
+
+case "$1" in
+start)
+    start
+    ;;
+stop)
+    stop
+    ;;
+*)
+    echo "Usage: $0 {start|stop}"
+    exit 1
+esac
+
+exit $RETVAL
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vboxconfig.sh new/vboxconfig.sh
--- old/vboxconfig.sh   1970-01-01 01:00:00.000000000 +0100
+++ new/vboxconfig.sh   2026-09-28 11:03:40.000000000 +0200
@@ -0,0 +1,60 @@
+#!/bin/bash
+#
+# Script to build VirtualBox host kernel modules
+# Copyright C 2017 by Larry Finger
+#
+# This script is part of the openSUSE VirtualBox package
+#
+SOURCE="/usr/src/kernel-modules/virtualbox/src"
+LOGFILE="/var/log/virtualbox.log"
+INCLUDE="/lib/modules/`uname -r`/build/include"
+#
+# Test if vboxdrv module loaded. If it is, skip everything else
+loaded=$(lsmod | grep vboxdrv)
+if [ -n "$loaded" ] ; then
+       echo "Kernel modules are loaded, unload them via"
+       echo "systemctl stop vboxdrv.service if you wish to rebuild them."
+       echo "Quitting .."
+       exit 1
+fi
+#
+# Check if virtualbox-host-source is installed, quit if not
+if ! rpm -qf "$SOURCE/Makefile" &>/dev/null ; then
+       echo "Sources for building host modules are not present,"
+       echo "Use 'sudo zypper install virtualbox-host-source kernel-devel 
kernel-default-devel' to install them. Quitting .."
+       exit 1
+fi
+#
+# Check if virtualbox-host-source version matches virtualbox version
+if [ "$(rpm -q virtualbox virtualbox-host-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 "This situation is probably not fatal, thus we will try to 
continue .."
+fi
+# Prerequisites are available, start build
+pushd $SOURCE > /dev/null 2>&1
+echo "Building kernel modules..."
+make clean &>/dev/null
+make > $LOGFILE 2>&1
+if [ "$?" -ne 0 ] ; then
+       echo ""
+       echo "Build of VirtualBox host kernel modules failed."
+       echo "Look at $LOGFILE to find reasons."
+       popd > /dev/null 2>&1
+       exit 1
+else
+echo "Kernel modules built correctly. They will now be installed."
+fi
+make install >> $LOGFILE 2>&1
+if [ "$?" -ne 0 ] ; then
+       echo ""
+       echo "Installation of VirtualBox host kernel modules failed."
+       echo "Look at $LOGFILE to find reasons."
+       popd > /dev/null 2>&1
+       exit 1
+fi
+depmod -a
+modprobe -av vboxnetflt vboxnetadp
+popd > /dev/null 2>&1
+echo "Kernel modules are installed and loaded."
+exit 0
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vboxdrv.sh new/vboxdrv.sh
--- old/vboxdrv.sh      1970-01-01 01:00:00.000000000 +0100
+++ new/vboxdrv.sh      2026-09-28 11:03:40.000000000 +0200
@@ -0,0 +1,375 @@
+#! /bin/sh
+# Oracle VM VirtualBox
+# Linux kernel module init script
+
+#
+# Copyright (C) 2006-2015 Oracle Corporation
+#
+# This file is part of VirtualBox Open Source Edition (OSE), as
+# available from http://www.virtualbox.org. This file is free software;
+# you can redistribute it and/or modify it under the terms of the GNU
+# General Public License (GPL) as published by the Free Software
+# Foundation, in version 2 as it comes in the "COPYING" file of the
+# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+#
+
+# chkconfig: 345 20 80
+# description: VirtualBox Linux kernel module
+#
+### BEGIN INIT INFO
+# Provides:       vboxdrv
+# Required-Start: $syslog $remote_fs
+# Required-Stop:  $syslog $remote_fs
+# Default-Start:  2 3 5
+# Default-Stop:   0 1 6
+# Short-Description: VirtualBox Linux module
+# Description: VirtualBox Linux kernel module
+### END INIT INFO
+
+PATH=/usr/sbin:/usr/bin:$PATH
+DEVICE=/dev/vboxdrv
+LOG="/var/log/vbox-install.log"
+MODPROBE=/usr/sbin/modprobe
+SCRIPTNAME=vboxdrv.sh
+INSTALL_DIR=/usr/lib/virtualbox
+
+# The below is GNU-specific.  See VBox.sh for the longer Solaris/OS X version.
+TARGET=`readlink -e -- "${0}"` || exit 1
+SCRIPT_DIR="${TARGET%/[!/]*}"
+
+if $MODPROBE -c | grep -q '^allow_unsupported_modules  *0'; then
+  MODPROBE="$MODPROBE --allow-unsupported-modules"
+fi
+
+[ -f /etc/vbox/vbox.cfg ] && . /etc/vbox/vbox.cfg
+export BUILD_TYPE
+export USERNAME
+export USER=$USERNAME
+
+VIRTUALBOX="${INSTALL_DIR}/VirtualBox"
+VBOXMANAGE="${INSTALL_DIR}/VBoxManage"
+BUILDINTMP="${MODULE_SRC}/build_in_tmp"
+if test -u "${VBOXMANAGE}"; then
+    GROUP=root
+    DEVICE_MODE=0600
+else
+    GROUP=vboxusers
+    DEVICE_MODE=0660
+fi
+
+[ -r /etc/default/virtualbox ] && . /etc/default/virtualbox
+
+begin_msg()
+{
+    test -n "${2}" && echo "${SCRIPTNAME}: ${1}."
+    logger -t "${SCRIPTNAME}" "${1}."
+}
+
+succ_msg()
+{
+    logger -t "${SCRIPTNAME}" "${1}."
+}
+
+fail_msg()
+{
+    echo "${SCRIPTNAME}: failed: ${1}." >&2
+    logger -t "${SCRIPTNAME}" "failed: ${1}."
+}
+
+failure()
+{
+    fail_msg "$1"
+    exit 1
+}
+
+running()
+{
+    lsmod | grep -q "$1[^_-]"
+}
+
+## Output the vboxdrv part of our udev rule.  This is redirected to the right 
file.
+udev_write_vboxdrv() {
+    VBOXDRV_GRP="$1"
+    VBOXDRV_MODE="$2"
+
+    echo "KERNEL==\"vboxdrv\", NAME=\"vboxdrv\", OWNER=\"root\", 
GROUP=\"$VBOXDRV_GRP\", MODE=\"$VBOXDRV_MODE\""
+    echo "KERNEL==\"vboxdrvu\", NAME=\"vboxdrvu\", OWNER=\"root\", 
GROUP=\"$VBOXDRV_GRP\", MODE=\"0660\""
+    echo "KERNEL==\"vboxnetctl\", NAME=\"vboxnetctl\", OWNER=\"root\", 
GROUP=\"$VBOXDRV_GRP\", MODE=\"$VBOXDRV_MODE\""
+}
+
+## Output the USB part of our udev rule.  This is redirected to the right file.
+udev_write_usb() {
+    INSTALLATION_DIR="$1"
+    USB_GROUP="$2"
+
+    echo "SUBSYSTEM==\"usb_device\", ACTION==\"add\", 
RUN+=\"$INSTALLATION_DIR/VBoxCreateUSBNode.sh \$major \$minor 
\$attr{bDeviceClass}${USB_GROUP}\""
+    echo "SUBSYSTEM==\"usb\", ACTION==\"add\", ENV{DEVTYPE}==\"usb_device\", 
RUN+=\"$INSTALLATION_DIR/VBoxCreateUSBNode.sh \$major \$minor 
\$attr{bDeviceClass}${USB_GROUP}\""
+    echo "SUBSYSTEM==\"usb_device\", ACTION==\"remove\", 
RUN+=\"$INSTALLATION_DIR/VBoxCreateUSBNode.sh --remove \$major \$minor\""
+    echo "SUBSYSTEM==\"usb\", ACTION==\"remove\", 
ENV{DEVTYPE}==\"usb_device\", RUN+=\"$INSTALLATION_DIR/VBoxCreateUSBNode.sh 
--remove \$major \$minor\""
+}
+
+## Generate our udev rule file.  This takes a change in udev rule syntax in
+## version 55 into account.  It only creates rules for USB for udev versions
+## recent enough to support USB device nodes.
+generate_udev_rule() {
+    VBOXDRV_GRP="$1"      # The group owning the vboxdrv device
+    VBOXDRV_MODE="$2"     # The access mode for the vboxdrv device
+    INSTALLATION_DIR="$3" # The directory VirtualBox is installed in
+    USB_GROUP="$4"        # The group that has permission to access USB devices
+    NO_INSTALL="$5"       # Set this to "1" to remove but not re-install rules
+
+    # Extra space!
+    case "$USB_GROUP" in ?*) USB_GROUP=" $USB_GROUP" ;; esac
+    case "$NO_INSTALL" in "1") return ;; esac
+    udev_write_vboxdrv "$VBOXDRV_GRP" "$VBOXDRV_MODE"
+    udev_write_usb "$INSTALLATION_DIR" "$USB_GROUP"
+}
+
+## Install udev rule (disable with INSTALL_NO_UDEV=1 in
+## /etc/default/virtualbox).
+install_udev() {
+    VBOXDRV_GRP="$1"      # The group owning the vboxdrv device
+    VBOXDRV_MODE="$2"     # The access mode for the vboxdrv device
+    INSTALLATION_DIR="$3" # The directory VirtualBox is installed in
+    USB_GROUP="$4"        # The group that has permission to access USB devices
+    NO_INSTALL="$5"       # Set this to "1" to remove but not re-install rules
+
+    if test -d /etc/udev/rules.d; then
+        generate_udev_rule "$VBOXDRV_GRP" "$VBOXDRV_MODE" "$INSTALLATION_DIR" \
+                           "$USB_GROUP" "$NO_INSTALL"
+    fi
+    # Remove old udev description file
+    rm -f /etc/udev/rules.d/10-vboxdrv.rules 2> /dev/null
+}
+
+## Create a usb device node for a given sysfs path to a USB device.
+install_create_usb_node_for_sysfs() {
+    path="$1"           # sysfs path for the device
+    usb_createnode="$2" # Path to the USB device node creation script
+    usb_group="$3"      # The group to give ownership of the node to
+    if test -r "${path}/dev"; then
+        dev="`cat "${path}/dev" 2> /dev/null`"
+        major="`expr "$dev" : '\(.*\):' 2> /dev/null`"
+        minor="`expr "$dev" : '.*:\(.*\)' 2> /dev/null`"
+        class="`cat ${path}/bDeviceClass 2> /dev/null`"
+        sh "${usb_createnode}" "$major" "$minor" "$class" \
+              "${usb_group}" 2>/dev/null
+    fi
+}
+
+udev_rule_file=/etc/udev/rules.d/60-vboxdrv.rules
+sysfs_usb_devices="/sys/bus/usb/devices/*"
+
+## Install udev rules and create device nodes for usb access
+setup_usb() {
+    VBOXDRV_GRP="$1"      # The group that should own /dev/vboxdrv
+    VBOXDRV_MODE="$2"     # The mode to be used for /dev/vboxdrv
+    INSTALLATION_DIR="$3" # The directory VirtualBox is installed in
+    USB_GROUP="$4"        # The group that should own the /dev/vboxusb device
+                          # nodes unless INSTALL_NO_GROUP=1 in
+                          # /etc/default/virtualbox.  Optional.
+    usb_createnode="$INSTALLATION_DIR/VBoxCreateUSBNode.sh"
+    # install udev rule (disable with INSTALL_NO_UDEV=1 in
+    # /etc/default/virtualbox)
+    if [ "$INSTALL_NO_GROUP" != "1" ]; then
+        usb_group=$USB_GROUP
+        vboxdrv_group=$VBOXDRV_GRP
+    else
+        usb_group=root
+        vboxdrv_group=root
+    fi
+    install_udev "${vboxdrv_group}" "$VBOXDRV_MODE" \
+                 "$INSTALLATION_DIR" "${usb_group}" \
+                 "$INSTALL_NO_UDEV" > ${udev_rule_file}
+    # Build our device tree
+    for i in ${sysfs_usb_devices}; do  # This line intentionally without 
quotes.
+        install_create_usb_node_for_sysfs "$i" "${usb_createnode}" \
+                                          "${usb_group}"
+    done
+}
+
+cleanup_usb()
+{
+    # Remove udev description file
+    rm -f /etc/udev/rules.d/60-vboxdrv.rules
+    rm -f /etc/udev/rules.d/10-vboxdrv.rules
+
+    # Remove our USB device tree
+    rm -rf /dev/vboxusb
+}
+
+start_drv()
+{
+    begin_msg "Starting VirtualBox services" console
+    if [ -d /proc/xen ]; then
+        failure "Running VirtualBox in a Xen environment is not supported"
+    fi
+    if ! running vboxdrv; then
+        if ! rm -f $DEVICE; then
+            failure "Cannot remove $DEVICE"
+        fi
+        if ! $MODPROBE vboxdrv > /dev/null 2>&1; then
+            /usr/sbin/vboxconfig
+            if ! $MODPROBE vboxdrv > /dev/null 2>&1; then
+                failure "modprobe vboxdrv failed. Please use 'dmesg' to find 
out why"
+            fi
+        fi
+        sleep .2
+    fi
+    # ensure the character special exists
+    if [ ! -c $DEVICE ]; then
+        MAJOR=`sed -n 's;\([0-9]\+\) vboxdrv$;\1;p' /proc/devices`
+        if [ ! -z "$MAJOR" ]; then
+            MINOR=0
+        else
+            MINOR=`sed -n 's;\([0-9]\+\) vboxdrv$;\1;p' /proc/extra`
+            if [ ! -z "$MINOR" ]; then
+                MAJOR=10
+            fi
+        fi
+        if [ -z "$MAJOR" ]; then
+            rmmod vboxdrv 2>/dev/null
+            failure "Cannot locate the VirtualBox device"
+        fi
+        if ! mknod -m 0660 $DEVICE c $MAJOR $MINOR 2>/dev/null; then
+            rmmod vboxdrv 2>/dev/null
+            failure "Cannot create device $DEVICE with major $MAJOR and minor 
$MINOR"
+        fi
+    fi
+    # ensure permissions
+    if ! $MODPROBE vboxnetflt > /dev/null 2>&1; then
+        failure "modprobe vboxnetflt failed. Please use 'dmesg' to find out 
why"
+    fi
+    if ! $MODPROBE vboxnetadp > /dev/null 2>&1; then
+        failure "modprobe vboxnetadp failed. Please use 'dmesg' to find out 
why"
+    fi
+    # Create the /dev/vboxusb directory if the host supports that method
+    # of USB access.  The USB code checks for the existance of that path.
+    if grep -q usb_device /proc/devices; then
+        mkdir -p -m 0750 /dev/vboxusb 2>/dev/null
+        chown root:vboxusers /dev/vboxusb 2>/dev/null
+    fi
+    succ_msg "VirtualBox services started"
+}
+
+stop_drv()
+{
+    begin_msg "Stopping VirtualBox services" console
+
+    if running vboxnetadp; then
+        if ! rmmod vboxnetadp 2>/dev/null; then
+            failure "Cannot unload module vboxnetadp"
+        fi
+    fi
+    if running vboxdrv; then
+        if running vboxnetflt; then
+            if ! rmmod vboxnetflt 2>/dev/null; then
+                failure "Cannot unload module vboxnetflt"
+            fi
+        fi
+        if ! rmmod vboxdrv 2>/dev/null; then
+            failure "Cannot unload module vboxdrv"
+        fi
+        if ! rm -f $DEVICE; then
+            failure "Cannot unlink $DEVICE"
+        fi
+    fi
+    succ_msg "VirtualBox services stopped"
+}
+
+cleanup_vb()
+{
+    for i in /lib/modules/*; do
+        # We could just do "rm -f", but we only want to try deleting folders if
+        # we are sure they were ours, i.e. they had our modules in beforehand.
+        if    test -e "${i}/extra/vboxdrv.ko" \
+           || test -e "${i}/extra/vboxnetadp.ko" \
+           || test -e "${i}/extra/vboxnetflt.ko"; then
+            rm -f "${i}/extra/vboxdrv.ko" "${i}/extra/vboxnetadp.ko" \
+                  "${i}/extra/vboxnetflt.ko"
+            # Remove the kernel version folder if it was empty except for us.
+            test   "`echo ${i}/extra/* ${i}/extra/.?* ${i}/* ${i}/.?*`" \
+                 = "${i}/extra/* ${i}/extra/.. ${i}/extra ${i}/.." &&
+                rmdir "${i}/extra" "${i}"  # We used to leave empty folders.
+            version=`expr "${i}" : "/lib/modules/\(.*\)"`
+            depmod -a "${version}"
+        fi
+    done
+}
+
+# setup_script
+setup_vb()
+{
+#   Try to build the host kernel modules in case prepackaging has failed
+    /usr/sbin/vboxconfig
+}
+
+dmnstatus()
+{
+    if running vboxdrv; then
+        str="vboxdrv"
+        if running vboxnetflt; then
+            str="$str, vboxnetflt"
+            if running vboxnetadp; then
+                str="$str, vboxnetadp"
+            fi
+        fi
+        echo "VirtualBox kernel modules ($str) are loaded."
+        for i in $SHUTDOWN_USERS; do
+            # don't create the ipcd directory with wrong permissions!
+            if [ -d /tmp/.vbox-$i-ipc ]; then
+                export VBOX_IPC_SOCKETID="$i"
+                VMS=`$VBOXMANAGE --nologo list runningvms | sed -e 
's/^".*".*{\(.*\)}/\1/' 2>/dev/null`
+                if [ -n "$VMS" ]; then
+                    echo "The following VMs are currently running:"
+                    for v in $VMS; do
+                       echo "  $v"
+                    done
+                fi
+            fi
+        done
+    else
+        echo "VirtualBox kernel module is not loaded."
+    fi
+}
+
+case "$1" in
+start)
+    start_drv
+    ;;
+stop)
+    stop_drv
+    ;;
+restart)
+    "$0" stop && "$0" start
+    ;;
+setup)
+    # Create udev rule and USB device nodes.
+    ## todo Wouldn't it make more sense to install the rule to /lib/udev?  This
+    ## is not a user-created configuration file after all.
+    ## todo Do we need a udev rule to create /dev/vboxdrv[u] at all?  We have
+    ## working fall-back code here anyway, and the "right" code is more complex
+    ## than the fall-back.  Unnecessary duplication?
+    stop_drv && cleanup_vb
+    setup_usb "$GROUP" "$DEVICE_MODE" "$INSTALL_DIR"
+    setup_vb && start_drv
+    ;;
+cleanup)
+    stop_drv && cleanup_vb
+    cleanup_usb
+    ;;
+force-reload)
+    "$0" stop
+    "$0" start
+    ;;
+status)
+    dmnstatus
+    ;;
+*)
+    echo "Usage: $0 {start|stop|stop_vms|restart|force-reload|status}"
+    exit 1
+esac
+
+exit 0
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vboxguestconfig.sh new/vboxguestconfig.sh
--- old/vboxguestconfig.sh      1970-01-01 01:00:00.000000000 +0100
+++ new/vboxguestconfig.sh      2026-09-28 11:03:40.000000000 +0200
@@ -0,0 +1,62 @@
+#!/bin/bash
+#
+# Script to build VirtualBox guest kernel modules
+# Copyright C 2017 by Larry Finger
+#
+# This script is part of the openSUSE VirtualBox package
+#
+SOURCE="/usr/src/kernel-modules/"
+LOGFILE="/var/log/virtualbox.log"
+INCLUDE="/lib/modules/`uname -r`/build/include"
+#
+# Test if vboxguest module loaded. If it is, skip everything else
+loaded=$(lsmod | grep vboxguest)
+if [ -n "$loaded" ] ; then
+        echo "Kernel modules available. but we will continue..."
+fi
+#
+# Check if virtualbox-guest-source is installed, quit if not
+if ! rpm -qf "$SOURCE/additions/guest_src.tar.bz2" &>/dev/null ; then
+        echo "Sources for building guest modules are not present,"
+        echo "Use 'sudo zypper install virtualbox-guest-source' to install 
them. Quitting .."
+        exit 1
+fi
+# unpack source
+pushd $SOURCE > /dev/null 2>&1
+tar jxf additions/guest_src.tar.bz2 > /dev/null 2>&1
+popd > /dev/null 2>&1
+#
+# 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
+        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 .."
+fi
+# Prerequisites are available, start build
+pushd $SOURCE/additions/src > /dev/null 2>&1
+echo "Building kernel modules..."
+make > $LOGFILE 2>&1
+if [ "$?" -ne 0 ] ; then
+        echo ""
+        echo "Build of VirtualBox guest kernel modules failed."
+        echo "Look at $LOGFILE to find reasons."
+        popd > /dev/null 2>&1
+        exit 1
+else
+echo "Kernel modules built correctly. They will now be installed."
+fi
+make install >> $LOGFILE 2>&1
+if [ "$?" -ne 0 ] ; then
+        echo ""
+        echo "Installation of VirtualBox guest kernel modules failed."
+        echo "Look at $LOGFILE to find reasons."
+        popd > /dev/null 2>&1
+        exit 1
+fi
+depmod -a
+modprobe -av vboxguest vboxvideo
+cd ../..
+rm -rf additions
+popd > /dev/null 2>&1
+echo "Kernel modules are installed and loaded."
+exit 0
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vboxweb-service.sh new/vboxweb-service.sh
--- old/vboxweb-service.sh      1970-01-01 01:00:00.000000000 +0100
+++ new/vboxweb-service.sh      2026-09-28 11:03:40.000000000 +0200
@@ -0,0 +1,229 @@
+#!/bin/sh
+# $Id: vboxweb-service.sh 127855 2019-01-01 01:45:53Z bird $
+## @file
+# VirtualBox web service API daemon init script.
+#
+
+#
+# Copyright (C) 2006-2019 Oracle Corporation
+#
+# This file is part of VirtualBox Open Source Edition (OSE), as
+# available from http://www.virtualbox.org. This file is free software;
+# you can redistribute it and/or modify it under the terms of the GNU
+# General Public License (GPL) as published by the Free Software
+# Foundation, in version 2 as it comes in the "COPYING" file of the
+# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+#
+
+# chkconfig: 345 35 65
+# description: VirtualBox web service API
+#
+### BEGIN INIT INFO
+# Provides:       vboxweb-service
+# Required-Start: vboxdrv
+# Required-Stop:  vboxdrv
+# Default-Start:  2 3 4 5
+# Default-Stop:   0 1 6
+# Description:    VirtualBox web service API
+### END INIT INFO
+
+PATH=$PATH:/bin:/sbin:/usr/sbin
+SCRIPTNAME=vboxweb-service.sh
+
+[ -f /etc/vbox/vbox.cfg ] && . /etc/vbox/vbox.cfg
+
+if [ -n "$INSTALL_DIR" ]; then
+    binary="$INSTALL_DIR/vboxwebsrv"
+    vboxmanage="$INSTALL_DIR/VBoxManage"
+else
+    binary="/usr/lib/virtualbox/vboxwebsrv"
+    vboxmanage="/usr/lib/virtualbox/VBoxManage"
+fi
+
+# silently exit if the package was uninstalled but not purged,
+# applies to Debian packages only (but shouldn't hurt elsewhere)
+[ ! -f /etc/debian_release -o -x $binary ] || exit 0
+
+[ -r /etc/default/virtualbox ] && . /etc/default/virtualbox
+
+PIDFILE="/var/run/${SCRIPTNAME}"
+
+# Preamble for Gentoo
+if [ "`which $0`" = "/sbin/rc" ]; then
+    shift
+fi
+
+begin_msg()
+{
+    test -n "${2}" && echo "${SCRIPTNAME}: ${1}."
+    logger -t "${SCRIPTNAME}" "${1}."
+}
+
+succ_msg()
+{
+    logger -t "${SCRIPTNAME}" "${1}."
+}
+
+fail_msg()
+{
+    echo "${SCRIPTNAME}: failed: ${1}." >&2
+    logger -t "${SCRIPTNAME}" "failed: ${1}."
+}
+
+start_daemon() {
+    usr="$1"
+    shift
+    su - $usr -c "$*"
+}
+
+killproc() {
+    killall $1
+    rm -f $PIDFILE
+}
+
+if which start-stop-daemon >/dev/null 2>&1; then
+    start_daemon() {
+        usr="$1"
+        shift
+        bin="$1"
+        shift
+        start-stop-daemon --background --chuid $usr --start --exec $bin -- $@
+    }
+
+    killproc() {
+        start-stop-daemon --stop --exec $@
+    }
+fi
+
+vboxdrvrunning() {
+    lsmod | grep vboxdrv
+}
+
+check_single_user() {
+    if [ -n "$2" ]; then
+        fail_msg "VBOXWEB_USER must not contain multiple users!"
+        exit 1
+    fi
+}
+
+start() {
+    if ! test -f $PIDFILE; then
+        [ -z "$VBOXWEB_USER" ] && exit 0
+        begin_msg "Starting VirtualBox web service" console;
+        check_single_user $VBOXWEB_USER
+       temp=$(lsmod | grep vboxdrv)
+       echo $temp
+       if [ -z "$temp" ]; then
+            fail_msg "VirtualBox kernel module not loaded!"
+            exit 1
+       fi
+        PARAMS="--background"
+        [ -n "$VBOXWEB_HOST" ]           && PARAMS="$PARAMS -H $VBOXWEB_HOST"
+        [ -n "$VBOXWEB_PORT" ]           && PARAMS="$PARAMS -p $VBOXWEB_PORT"
+        [ -n "$VBOXWEB_SSL_KEYFILE" ]    && PARAMS="$PARAMS -s -K 
$VBOXWEB_SSL_KEYFILE"
+        [ -n "$VBOXWEB_SSL_PASSWORDFILE" ] && PARAMS="$PARAMS -a 
$VBOXWEB_SSL_PASSWORDFILE"
+        [ -n "$VBOXWEB_SSL_CACERT" ]     && PARAMS="$PARAMS -c 
$VBOXWEB_SSL_CACERT"
+        [ -n "$VBOXWEB_SSL_CAPATH" ]     && PARAMS="$PARAMS -C 
$VBOXWEB_SSL_CAPATH"
+        [ -n "$VBOXWEB_SSL_DHFILE" ]     && PARAMS="$PARAMS -D 
$VBOXWEB_SSL_DHFILE"
+        [ -n "$VBOXWEB_SSL_RANDFILE" ]   && PARAMS="$PARAMS -r 
$VBOXWEB_SSL_RANDFILE"
+        [ -n "$VBOXWEB_TIMEOUT" ]        && PARAMS="$PARAMS -t 
$VBOXWEB_TIMEOUT"
+        [ -n "$VBOXWEB_CHECK_INTERVAL" ] && PARAMS="$PARAMS -i 
$VBOXWEB_CHECK_INTERVAL"
+        [ -n "$VBOXWEB_THREADS" ]        && PARAMS="$PARAMS -T 
$VBOXWEB_THREADS"
+        [ -n "$VBOXWEB_KEEPALIVE" ]      && PARAMS="$PARAMS -k 
$VBOXWEB_KEEPALIVE"
+        [ -n "$VBOXWEB_AUTHENTICATION" ] && PARAMS="$PARAMS -A 
$VBOXWEB_AUTHENTICATION"
+        [ -n "$VBOXWEB_LOGFILE" ]        && PARAMS="$PARAMS -F 
$VBOXWEB_LOGFILE"
+        [ -n "$VBOXWEB_ROTATE" ]         && PARAMS="$PARAMS -R $VBOXWEB_ROTATE"
+        [ -n "$VBOXWEB_LOGSIZE" ]        && PARAMS="$PARAMS -S 
$VBOXWEB_LOGSIZE"
+        [ -n "$VBOXWEB_LOGINTERVAL" ]    && PARAMS="$PARAMS -I 
$VBOXWEB_LOGINTERVAL"
+        # set authentication method + password hash
+        if [ -n "$VBOXWEB_AUTH_LIBRARY" ]; then
+            su - "$VBOXWEB_USER" -c "$vboxmanage setproperty websrvauthlibrary 
\"$VBOXWEB_AUTH_LIBRARY\""
+            if [ $? -ne 0 ]; then
+                fail_msg "Error $? setting webservice authentication library 
to $VBOXWEB_AUTH_LIBRARY"
+            fi
+        fi
+        if [ -n "$VBOXWEB_AUTH_PWHASH" ]; then
+            su - "$VBOXWEB_USER" -c "$vboxmanage setextradata global 
\"VBoxAuthSimple/users/$VBOXWEB_USER\" \"$VBOXWEB_AUTH_PWHASH\""
+            if [ $? -ne 0 ]; then
+                fail_msg "Error $? setting webservice password hash"
+            fi
+        fi
+        # prevent inheriting this setting to VBoxSVC
+        unset VBOX_RELEASE_LOG_DEST
+        start_daemon $VBOXWEB_USER $binary $PARAMS > /dev/null 2>&1
+        # ugly: wait until the final process has forked
+        sleep .1
+        PID=`pidof $binary 2>/dev/null`
+        if [ -n "$PID" ]; then
+            echo "$PID" > $PIDFILE
+            RETVAL=0
+           firewall-cmd --permanent --new-service=vboxweb
+           firewall-cmd --permanent --service=vboxweb 
--set-description="service to remotely manage VirtualBox"
+           firewall-cmd --permanent --add-port=18083/tcp --zone=internal 
--service=vboxweb
+           firewall-cmd --permanent --set-short="vboxweb" --service=vboxweb
+            succ_msg "VirtualBox web service started"
+        else
+            RETVAL=1
+            fail_msg "VirtualBox web service failed to start"
+        fi
+    fi
+    return $RETVAL
+}
+
+stop() {
+    if test -f $PIDFILE; then
+        begin_msg "Stopping VirtualBox web service" console;
+        killproc $binary
+        RETVAL=$?
+        # Be careful: wait 1 second, making sure that everything is cleaned up.
+        sleep 1
+        if ! pidof $binary > /dev/null 2>&1; then
+            rm -f $PIDFILE
+            succ_msg "VirtualBox web service stopped"
+        else
+            fail_msg "VirtualBox web service failed to stop"
+        fi
+    fi
+    return $RETVAL
+}
+
+restart() {
+    stop && start
+}
+
+status() {
+    echo -n "Checking for VBox Web Service"
+    if [ -f $PIDFILE ]; then
+        echo " ...running"
+    else
+        echo " ...not running"
+    fi
+}
+
+case "$1" in
+start)
+    start
+    ;;
+stop)
+    stop
+    ;;
+restart)
+    restart
+    ;;
+force-reload)
+    restart
+    ;;
+status)
+    status
+    ;;
+setup)
+    ;;
+cleanup)
+    ;;
+*)
+    echo "Usage: $0 {start|stop|restart|status}"
+    exit 1
+esac
+
+exit $RETVAL
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/virtualbox-patch-source.sh 
new/virtualbox-patch-source.sh
--- old/virtualbox-patch-source.sh      1970-01-01 01:00:00.000000000 +0100
+++ new/virtualbox-patch-source.sh      2026-09-28 11:03:40.000000000 +0200
@@ -0,0 +1,61 @@
+#!/bin/bash -ex
+
+if [ -z "$1" ]; then
+       echo "You need to pass the filename VirtualBox-x.y.z.tar.bz2 as first 
argument."
+       exit 1
+fi
+
+REMOVE_DIRS=( 
+src/VBox/Additions/os2 
+src/VBox/Runtime/r3/darwin
+src/VBox/Runtime/r0drv/darwin
+src/VBox/Runtime/darwin
+kBuild/bin
+kBuild/msgstyles
+kBuild/tools
+kBuild/sdks
+tools/darwin.x86
+tools/darwin.amd64
+tools/freebsd.x86
+tools/os2.x86
+tools/solaris.x86
+tools/solaris.amd64
+tools/win.amd64
+tools/win.x86
+tools/linux.x86
+tools/linux.amd64
+)
+
+set -o errexit
+
+CMDNAME=${0##*/}
+SOURCEDIR=${0%$CMDNAME}
+
+BASENAME=${1%.tar.bz2}
+
+trap "rm -rf  \"$BASENAME-patched.tar\" \"$BASENAME-patched.tar.bz2\"" ERR
+
+for (( N=0 ; N<${#REMOVE_DIRS[@]} ; N++ )) ; do
+    #REMOVE_DIRS[N]="$BASENAME/${REMOVE_DIRS[N]}"
+    # use a wildcard because VirtualBox-1.6.0-OSE != VirtualBox-1.6.0_OSE
+    REMOVE_DIRS[N]="*/${REMOVE_DIRS[N]}"
+done
+
+cd "$SOURCEDIR" >/dev/null
+
+if ! test -f "$BASENAME.tar.bz2" ; then
+    exit 0
+fi
+
+if test -f "$BASENAME-patched.tar.bz2" ; then
+    if test "$BASENAME.tar.bz2" -ot "$BASENAME-patched.tar.bz2" ; then
+       if test $CMDNAME -ot "$BASENAME-patched.tar.bz2" ; then
+           exit 0
+       fi
+    fi
+fi
+
+cp -a "$BASENAME.tar.bz2" "$BASENAME-patched.tar.bz2"
+bunzip2 "$BASENAME-patched.tar.bz2"
+tar --wildcards --delete -f "$BASENAME-patched.tar" "${REMOVE_DIRS[@]}"
+pixz -9 "$BASENAME-patched.tar"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/virtualbox-wrapper.sh new/virtualbox-wrapper.sh
--- old/virtualbox-wrapper.sh   1970-01-01 01:00:00.000000000 +0100
+++ new/virtualbox-wrapper.sh   2026-09-28 11:03:40.000000000 +0200
@@ -0,0 +1,70 @@
+#!/bin/bash
+export QT_NO_KDE_INTEGRATION=1
+
+# make certain that the user/group combination is valid
+/usr/bin/id -nG | grep -v -e "root" -e "vboxusers" >/dev/null && 
/usr/lib/virtualbox/VBoxPermissionMessage && exit
+#
+# Handle the issue regarding USB passthru
+# The following conditions apply:
+# 1. If ~/.config/VirtualBox/enable exists, the user accepts the security risk.
+# 2. If ~/.config/VirtualBox/disable exists, the user does not accept the 
risk. That file will contain the inode of 
/usr/lib/udev/rules.d/60-vboxdrv.rules.
+#    When that changes, the VBoxUSB_DevRules will again be displayed as that 
means that VB has been reloaded. 
+#
+devrules()
+{
+    /usr/lib/virtualbox/VBoxUSB_DevRules
+    if [ $? -eq 0 ] ; then
+       # User accepts the risk
+       touch ~/.config/VirtualBox/enable
+       rm -f ~/.config/VirtualBox/disable
+    else
+       # User declines the risk - save the inode
+       echo "" > ~/.config/VirtualBox/disable
+       rm -f ~/.config/VirtualBox/enable
+    fi
+}
+
+# Start of main routine
+#
+# Ensure that ~/.config/VirtualBox exists
+mkdir -p ~/.config/VirtualBox
+# Get the inode for /usr/lib/udev/rules.d/60-vboxdrv.rules
+INODE=$(stat /usr/lib/udev/rules.d/60-vboxdrv.rules | grep Inode | cut -d' ' 
-f3)
+if [ ! -f ~/.config/VirtualBox/enable ] && [ ! -f ~/.config/VirtualBox/disable 
] ; then
+       # Neither file exists - find what the user wants
+       devrules
+fi
+# Get the original Inode if it exists
+if [ -f ~/.config/VirtualBox/disable ] ; then
+    read LINE < ~/.config/VirtualBox/disable
+else
+    LINE=" "
+fi
+# If user originally declined, make certain that 
/usr/lib/udev/rules.d/60-vboxdrv.rules has not been changed
+if [ -f ~/.config/VirtualBox/disable ] && [ "$LINE" != "$INODE" ] && [ "$LINE" 
!= "" ] ; then
+    # disable is selected and the Inode has changed - ask again
+    devrules
+fi
+if [ -f ~/.config/VirtualBox/disable ] ; then
+    echo $INODE > ~/.config/VirtualBox/disable
+    if [ "$LINE" != "$INODE" ] ; then
+       if [ -f /usr/bin/kdesu ] ; then
+           kdesu /usr/sbin/vbox-fix-usb-rules.sh
+       fi
+       if [ -f /usr/bin/gnomesu ] ; then
+           gnomesu /usr/sbin/vbox-fix-usb-rules.sh
+       fi
+    fi
+fi
+# Check if extpack needs to be updated
+/usr/bin/update-extpack.sh
+# Check that /usr/lib/virtualbox/VirtualBoxVM has SUID permissions
+PERM=$(ls -l /usr/lib/virtualbox/VirtualBoxVM | grep rwsr)
+if [ -z "$PERM" ]
+then
+    logger  -s "Wrong permissions for VirtualBoxVM - use 'sudo chmod 4711 
/usr/lib/virtualbox/VirtualBoxVM' to fix"
+    /usr/lib/virtualbox/VBoxSUIDMessage
+    exit 1
+fi
+# Now run the VB GUI
+LD_LIBRARY_PATH="/usr/lib/virtualbox${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}" 
exec /usr/lib/virtualbox/VirtualBoxQt "$@"

++++++ fix_usb_rules.sh ++++++
#!/bin/bash
# script to disable USB passthru in /etc/udev/rules.d/60-vboxdrv.rules
# if already disabled, clear the comment character
sed -i 's/#SUBSYSTEM==\"usb/SUBSYSTEM==\"usb/' 
/usr/lib/udev/rules.d/60-vboxdrv.rules
# now comment the usb lines
sed -i 's/SUBSYSTEM==\"usb/#SUBSYSTEM==\"usb/' 
/usr/lib/udev/rules.d/60-vboxdrv.rules


++++++ kernel-longterm_6-18-44.patch ++++++
Author: Robert Frohl <[email protected]>
Date: Thu Aug 13 10:47:01 2026 +0200

Make building virtualbox-kmp-longterm possible again
under openSUSE with kernel-longterm >= 6.18.44.

References: https://github.com/VirtualBox/virtualbox/issues/812

---
 src/VBox/Additions/linux/drm/vbox_fb.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Index: VirtualBox-7.2.18/src/VBox/Additions/linux/drm/vbox_fb.c
===================================================================
--- VirtualBox-7.2.18.orig/src/VBox/Additions/linux/drm/vbox_fb.c
+++ VirtualBox-7.2.18/src/VBox/Additions/linux/drm/vbox_fb.c
@@ -335,7 +335,7 @@ int vboxfb_create(struct drm_fb_helper *
                return ret;
        }
 
-#if RTLNX_VER_MIN(6,19,0) || RTLNX_VER_RANGE(6,12,103, 6,13,0) || 
RTLNX_RHEL_RANGE(9,9, 9,99)
+#if RTLNX_VER_MIN(6,18,44) || RTLNX_VER_RANGE(6,12,103, 6,13,0) || 
RTLNX_RHEL_RANGE(9,9, 9,99)
        info = helper->info;
 #elif RTLNX_VER_MIN(6,2,0) || RTLNX_RHEL_RANGE(8,9, 8,99) || 
RTLNX_RHEL_RANGE(9,3, 9,99)
        info = drm_fb_helper_alloc_info(helper);

++++++ update-extpack.sh ++++++
#!/bin/bash

# Script to update extpack
# The idea for this method and the original code came from Larry Len Rainey.
#
# This implementation by Larry Finger

# Define some symbols and determine the current version of VB

VBOXMANAGE=/usr/bin/VBoxManage
AWK=/usr/bin/awk
GREP=/usr/bin/grep
WGET=/usr/bin/wget
VBOX_VERSION=`$VBOXMANAGE --version | $AWK -F_ {'print $1'}`

# Define a symbol for the name of the extpack matching the VB version
VBOX_EXT=`echo Oracle_VM_VirtualBox_Extension_Pack-${VBOX_VERSION}.vbox-extpack`

# Full path to extpack license file
LICENSE_PATH="/usr/lib/virtualbox/ExtensionPacks/Oracle_VM_VirtualBox_Extension_Pack/ExtPack-license.rtf"

# Determine the installed version of extpack, if any.
EXTPACK_CURRENT=`$VBOXMANAGE list extpacks | $GREP -A1 "Oracle VM VirtualBox 
Extension Pack" | $GREP Version | $AWK -F\  {'print $2'}`

# The extpacks are licensed under a Personal Use and Evaluation License
# At some point, the user must agree to the conditions of that license.
# If no extpack is installed on this system, then there is no agreement,
# thus this script cannot install the extpack.
#
# This situation applies to new installations that could conform to the license,
# but more importantly, it handles commercial setups that have not purchased
# the necessary license.
# Check if extpack is currently installed. If not exit
if [ -z $EXTPACK_CURRENT ]; then
        exit 0
fi
#
# An extpack has been installed on this system. Now we need to check if
# it was issued under the current version of the license.

#Note to maintainers: The "version 11" in the next command must be changed
# manually when Oracle revises the license.

LICENSE_CHECK=`$GREP "version 11" $LICENSE_PATH | $AWK -F\  {'print $2'}`
if [ -z $LICENSE_CHECK ]; then
# New license version does not match the current installation.
# The user will need to agree to the new version, thus we do nothing here.
        exit 0
fi
if [ $VBOX_VERSION == $EXTPACK_CURRENT ]; then
# The extpack currently installed matches - we are done
        exit 0
fi

# A new version of extpack is needed - switch to directory that can be written, 
and download it
pushd ~ > /dev/null 2>&1
$WGET https://download.virtualbox.org/virtualbox/$VBOX_VERSION/$VBOX_EXT > 
/dev/null 2>&1

# Now install it
echo Y | $VBOXMANAGE extpack install --replace $VBOX_EXT > /dev/null 2>&1

# Clean up by deleting downloaded file and restoring the original working 
directory
rm -f $VBOX_EXT
popd ~ > /dev/null 2>&1

++++++ vbox-vboxadd-init-script.diff ++++++
--- /var/tmp/diff_new_pack.cFrpmL/_old  2026-09-28 11:45:37.121663853 +0200
+++ /var/tmp/diff_new_pack.cFrpmL/_new  2026-09-28 11:45:37.124663977 +0200
@@ -1,15 +1,18 @@
-Index: VirtualBox-7.0.20/src/VBox/Additions/linux/installer/vboxadd.sh
+---
+ src/VBox/Additions/linux/installer/vboxadd.sh |   30 
++++++++++----------------
+ 1 file changed, 12 insertions(+), 18 deletions(-)
+
+Index: VirtualBox-7.2.8/src/VBox/Additions/linux/installer/vboxadd.sh
 ===================================================================
---- VirtualBox-7.0.20.orig/src/VBox/Additions/linux/installer/vboxadd.sh
-+++ VirtualBox-7.0.20/src/VBox/Additions/linux/installer/vboxadd.sh
+--- VirtualBox-7.2.8.orig/src/VBox/Additions/linux/installer/vboxadd.sh
++++ VirtualBox-7.2.8/src/VBox/Additions/linux/installer/vboxadd.sh
 @@ -36,11 +36,14 @@
  # Provides:       vboxadd
  # Required-Start:
  # Required-Stop:
--# Default-Start:  2 3 4 5
 +# Should-Start:   $remote_fs
 +# Should-Stop:    $remote_fs
-+# Default-Start:  2 3 5
+ # Default-Start:  2 3 4 5
  # Default-Stop:   0 1 6
  # X-Start-Before: display-manager
  # X-Service-Type: oneshot
@@ -18,7 +21,7 @@
  ### END INIT INFO
  
  ## @todo This file duplicates a lot of script with vboxdrv.sh.  When making
-@@ -266,12 +269,6 @@ do_vboxguest_non_udev()
+@@ -239,12 +242,6 @@ do_vboxguest_non_udev()
              fail "Cannot create device $dev with major $maj and minor $min"
          }
      fi
@@ -31,7 +34,7 @@
  
      if [ ! -c $userdev ]; then
          maj=10
-@@ -282,12 +279,6 @@ do_vboxguest_non_udev()
+@@ -255,12 +252,6 @@ do_vboxguest_non_udev()
                  rmmod vboxguest 2>/dev/null
                  fail "Cannot create device $userdev with major $maj and minor 
$min"
              }
@@ -44,57 +47,17 @@
          fi
      fi
  }
-@@ -351,7 +342,7 @@ cleanup_modules()
-         done
-         if test -z "${keep}"; then
-             rm -rf /lib/modules/"${KERN_VER}"
--            rm -f /boot/initrd.img-"${KERN_VER}"
-+        rm -f /boot/initrd.img-"${KERN_VER}"
-         fi
-     done
-     for i in ${OLDMODULES}; do
-@@ -660,9 +651,9 @@ create_udev_rule()
-         udevcontrol reload_rules >/dev/null 2>&1 || true
-     fi
- }
--
--create_module_rebuild_script()
--{
-+    # And an rc file to re-build the kernel modules and re-set-up the X 
server.
+@@ -658,6 +649,9 @@ create_udev_rule()
+ 
+ create_module_rebuild_script()
+ {
++    # And a rc file to re-build the kernel modules and re-set-up the X server.
 +    ln -sf "$lib_path/$PACKAGE/vboxadd" /sbin/rcvboxadd
 +    #ln -sf "$lib_path/$PACKAGE/vboxadd-x11" /sbin/rcvboxadd-x11
      # And a post-installation script for rebuilding modules when a new kernel
      # is installed.
      mkdir -p /etc/kernel/postinst.d /etc/kernel/prerm.d
-@@ -875,18 +866,17 @@ setup()
- already available for kernel $TARGET_VER and do not require to be rebuilt."
-         else
-             info "Building the VirtualBox Guest Additions kernel modules.  
This may take a while."
--            info "To build modules for other installed kernels, run"
--            info "  /sbin/rcvboxadd quicksetup <version>"
--            info "or"
--            info "  /sbin/rcvboxadd quicksetup all"
--            if test -d /lib/modules/"$TARGET_VER"/build; then
--                setup_modules "$TARGET_VER"
--                depmod
--            else
--                info "Kernel headers not found for target kernel $TARGET_VER. 
\
-+        info "To build modules for other installed kernels, run"
-+        info "  /sbin/rcvboxadd quicksetup <version>"
-+        info "or"
-+        info "  /sbin/rcvboxadd quicksetup all"
-+        if test -d /lib/modules/"$TARGET_VER"/build; then
-+            setup_modules "$TARGET_VER"
-+            depmod
-+        else
-+            info "Kernel headers not found for target kernel $TARGET_VER. \
- Please install them and execute
-   /sbin/rcvboxadd setup"
--            fi
-         fi
-     fi
-     create_vbox_user
-@@ -904,17 +894,14 @@ Please install them and execute
+@@ -899,15 +893,13 @@ Please install them and execute
      # Put the X.Org driver in place.  This is harmless if it is not needed.
      # Also set up the OpenGL library.
      myerr=`"${INSTALL_DIR}/init/vboxadd-x11" setup 2>&1`
@@ -108,14 +71,11 @@
  cleanup()
  {
 -    if test -z "${INSTALL_NO_MODULE_BUILDS}"; then
--        # Delete old versions of VBox modules.
--        cleanup_modules
-+    # Delete old versions of VBox modules.
-+    cleanup_modules
++    if false; then
+         # Delete old versions of VBox modules.
+         cleanup_modules
          depmod
- 
-         # Remove old module sources
-@@ -924,12 +911,13 @@ cleanup()
+@@ -924,10 +916,12 @@ cleanup()
      fi
  
      # Clean-up X11-related bits
@@ -124,91 +84,10 @@
  
      # Remove other files
 -    if test -z "${INSTALL_NO_MODULE_BUILDS}"; then
--        rm -f /etc/kernel/postinst.d/vboxadd /etc/kernel/prerm.d/vboxadd
--        rmdir -p /etc/kernel/postinst.d /etc/kernel/prerm.d 2>/dev/null || 
true
-+    rm /sbin/rcvboxadd 2>/dev/null
-+    #rm /sbin/rcvboxadd-x11 2>/dev/null
-+    rm -f /etc/kernel/postinst.d/vboxadd /etc/kernel/prerm.d/vboxadd
-+    rmdir -p /etc/kernel/postinst.d /etc/kernel/prerm.d 2>/dev/null || true
++    if false; then
++        rm /sbin/rcvboxadd 2>/dev/null
++        #rm /sbin/rcvboxadd-x11 2>/dev/null
+         rm -f /etc/kernel/postinst.d/vboxadd /etc/kernel/prerm.d/vboxadd
+         rmdir -p /etc/kernel/postinst.d /etc/kernel/prerm.d 2>/dev/null || 
true
      fi
-     rm -f /sbin/mount.vboxsf 2>/dev/null
-     rm -f /etc/udev/rules.d/60-vboxadd.rules 2>/dev/null
-Index: VirtualBox-7.0.20/src/VBox/Additions/linux/installer/vboxadd-service.sh
-===================================================================
---- 
VirtualBox-7.0.20.orig/src/VBox/Additions/linux/installer/vboxadd-service.sh
-+++ VirtualBox-7.0.20/src/VBox/Additions/linux/installer/vboxadd-service.sh
-@@ -36,7 +36,7 @@
- # Provides:       vboxadd-service
- # Required-Start: vboxadd
- # Required-Stop:  vboxadd
--# Default-Start:  2 3 4 5
-+# Default-Start:  2 3 5
- # Default-Stop:   0 1 6
- # X-Conflicts-With: systemd-timesyncd.service
- # Description:    VirtualBox Additions Service
-Index: VirtualBox-7.0.20/src/VBox/Installer/linux/vboxautostart-service.sh
-===================================================================
---- VirtualBox-7.0.20.orig/src/VBox/Installer/linux/vboxautostart-service.sh
-+++ VirtualBox-7.0.20/src/VBox/Installer/linux/vboxautostart-service.sh
-@@ -33,7 +33,7 @@
- # Provides:       vboxautostart-service
- # Required-Start: vboxdrv
- # Required-Stop:  vboxdrv
--# Default-Start:  2 3 4 5
-+# Default-Start:  2 3 5
- # Default-Stop:   0 1 6
- # Description:    VirtualBox autostart service
- ### END INIT INFO
-Index: VirtualBox-7.0.20/src/VBox/Installer/linux/vboxballoonctrl-service.sh
-===================================================================
---- VirtualBox-7.0.20.orig/src/VBox/Installer/linux/vboxballoonctrl-service.sh
-+++ VirtualBox-7.0.20/src/VBox/Installer/linux/vboxballoonctrl-service.sh
-@@ -33,7 +33,7 @@
- # Provides:       vboxballoonctrl-service
- # Required-Start: vboxdrv
- # Required-Stop:  vboxdrv
--# Default-Start:  2 3 4 5
-+# Default-Start:  2 3 5
- # Default-Stop:   0 1 6
- # Description:    VirtualBox watchdog daemon
- ### END INIT INFO
-Index: 
VirtualBox-7.0.20/src/VBox/ValidationKit/testboxscript/linux/testboxscript-service.sh
-===================================================================
---- 
VirtualBox-7.0.20.orig/src/VBox/ValidationKit/testboxscript/linux/testboxscript-service.sh
-+++ 
VirtualBox-7.0.20/src/VBox/ValidationKit/testboxscript/linux/testboxscript-service.sh
-@@ -41,7 +41,7 @@
- # Provides:       testboxscript-service
- # Required-Start: $network
- # Required-Stop:
--# Default-Start:  2 3 4 5
-+# Default-Start:  2 3 5
- # Default-Stop:   0 1 6
- # Description:    TestBoxScript service
- ### END INIT INFO
-Index: 
VirtualBox-7.0.20/src/VBox/ValidationKit/utils/TestExecServ/linux/vboxtxs-nat.sh
-===================================================================
---- 
VirtualBox-7.0.20.orig/src/VBox/ValidationKit/utils/TestExecServ/linux/vboxtxs-nat.sh
-+++ 
VirtualBox-7.0.20/src/VBox/ValidationKit/utils/TestExecServ/linux/vboxtxs-nat.sh
-@@ -41,7 +41,7 @@
- # Provides:       vboxtxs
- # Required-Start: $network
- # Required-Stop:
--# Default-Start:  2 3 4 5
-+# Default-Start:  2 3 5
- # Default-Stop:   0 1 6
- # Description:    VirtualBox Test Execution Service
- ### END INIT INFO
-Index: 
VirtualBox-7.0.20/src/VBox/ValidationKit/utils/TestExecServ/linux/vboxtxs.sh
-===================================================================
---- 
VirtualBox-7.0.20.orig/src/VBox/ValidationKit/utils/TestExecServ/linux/vboxtxs.sh
-+++ 
VirtualBox-7.0.20/src/VBox/ValidationKit/utils/TestExecServ/linux/vboxtxs.sh
-@@ -41,7 +41,7 @@
- # Provides:       vboxtxs
- # Required-Start: $network
- # Required-Stop:
--# Default-Start:  2 3 4 5
-+# Default-Start:  2 3 5
- # Default-Stop:   0 1 6
- # Description:    VirtualBox Test Execution Service
- ### END INIT INFO
 

++++++ vbox-vboxdrv-init-script.diff ++++++
--- /var/tmp/diff_new_pack.cFrpmL/_old  2026-09-28 11:45:37.135664432 +0200
+++ /var/tmp/diff_new_pack.cFrpmL/_new  2026-09-28 11:45:37.138664557 +0200
@@ -1,21 +1,20 @@
 ---
- src/VBox/Installer/linux/vboxdrv.sh |   42 
++++++------------------------------
- 1 file changed, 7 insertions(+), 35 deletions(-)
+ src/VBox/Installer/linux/vboxdrv.sh |   52 
++++--------------------------------
+ 1 file changed, 6 insertions(+), 46 deletions(-)
 
-Index: VirtualBox-7.1.0/src/VBox/Installer/linux/vboxdrv.sh
+Index: VirtualBox-7.2.8/src/VBox/Installer/linux/vboxdrv.sh
 ===================================================================
---- VirtualBox-7.1.0.orig/src/VBox/Installer/linux/vboxdrv.sh
-+++ VirtualBox-7.1.0/src/VBox/Installer/linux/vboxdrv.sh
+--- VirtualBox-7.2.8.orig/src/VBox/Installer/linux/vboxdrv.sh
++++ VirtualBox-7.2.8/src/VBox/Installer/linux/vboxdrv.sh
 @@ -29,11 +29,12 @@
  #
  ### BEGIN INIT INFO
  # Provides:       vboxdrv
 -# Required-Start: $syslog
 -# Required-Stop:
--# Default-Start:  2 3 4 5
 +# Required-Start: $syslog $remote_fs
 +# Required-Stop:  $syslog $remote_fs
-+# Default-Start:  2 3 5
+ # Default-Start:  2 3 4 5
  # Default-Stop:   0 1 6
 -# Short-Description: VirtualBox Linux kernel module
 +# Short-Description: VirtualBox Linux module
@@ -23,7 +22,7 @@
  ### END INIT INFO
  
  ## @todo This file duplicates a lot of script with vboxadd.sh.  When making
-@@ -571,13 +572,6 @@ See the documentation for your Linux dis
+@@ -573,13 +574,6 @@ See the documentation for your Linux dis
          fi
      fi
      # ensure permissions
@@ -37,14 +36,25 @@
      if ! $MODPROBE vboxnetflt > /dev/null 2>&1; then
          failure "modprobe vboxnetflt failed. Please use 'dmesg' to find out 
why"
      fi
-@@ -736,30 +730,8 @@ setup()
+@@ -730,42 +724,8 @@ setup()
          module_build_log "$myerr"
          failure "Look at $LOG to find out what went wrong"
      fi
+-    log "Building the net filter module."
+-    if ! myerr=`$BUILDINTMP \
+-        --use-module-symvers /tmp/vboxdrv-Module.symvers \
+-        --module-source "$MODULE_SRC/vboxnetflt" \
+-        --skip-depmod \
+-        --no-print-directory install 2>&1`; then
+-        log "Error building the module:"
+-        module_build_log "$myerr"
+-        failure "Look at $LOG to find out what went wrong"
+-    fi
 -    log "Building the net adapter module."
 -    if ! myerr=`$BUILDINTMP \
 -        --use-module-symvers /tmp/vboxdrv-Module.symvers \
 -        --module-source "$MODULE_SRC/vboxnetadp" \
+-        --skip-depmod \
 -        --no-print-directory install 2>&1`; then
 -        log "Error building the module:"
 -        module_build_log "$myerr"
@@ -55,6 +65,7 @@
 -        if ! myerr=`$BUILDINTMP \
 -            --use-module-symvers /tmp/vboxdrv-Module.symvers \
 -            --module-source "$MODULE_SRC/vboxpci" \
+-            --skip-depmod \
 -            --no-print-directory install 2>&1`; then
 -            log "Error building the module:"
 -            module_build_log "$myerr"

++++++ vboxautostart-service.sh ++++++
#!/bin/sh
# $Id: vboxautostart-service.sh 143795 2021-04-15 11:42:37Z vgalitsy $
## @file
# VirtualBox autostart service init script.
#

#
# Copyright (C) 2012-2020 Oracle Corporation
#
# This file is part of VirtualBox Open Source Edition (OSE), as
# available from http://www.virtualbox.org. This file is free software;
# you can redistribute it and/or modify it under the terms of the GNU
# General Public License (GPL) as published by the Free Software
# Foundation, in version 2 as it comes in the "COPYING" file of the
# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
#

# chkconfig: 345 35 65
# description: VirtualBox autostart service
#
### BEGIN INIT INFO
# Provides:       vboxautostart-service
# Required-Start: vboxdrv
# Required-Stop:  vboxdrv
# Default-Start:  2 3 4 5
# Default-Stop:   0 1 6
# Description:    VirtualBox autostart service
### END INIT INFO

PATH=$PATH:/bin:/sbin:/usr/sbin
SCRIPTNAME=vboxautostart-service.sh

[ -f /etc/debian_release -a -f /lib/lsb/init-functions ] || NOLSB=yes
[ -f /etc/vbox/vbox.cfg ] && . /etc/vbox/vbox.cfg

if [ -n "$INSTALL_DIR" ]; then
    binary="$INSTALL_DIR/VBoxAutostart"
else
    binary="/usr/lib/virtualbox/VBoxAutostart"
fi

# silently exit if the package was uninstalled but not purged,
# applies to Debian packages only (but shouldn't hurt elsewhere)
[ ! -f /etc/debian_release -o -x $binary ] || exit 0

[ -r /etc/default/virtualbox ] && . /etc/default/virtualbox

# Preamble for Gentoo
if [ "`which $0`" = "/sbin/rc" ]; then
    shift
fi

begin_msg()
{
    test -n "${2}" && echo "${SCRIPTNAME}: ${1}."
    logger -t "${SCRIPTNAME}" "${1}."
}

succ_msg()
{
    logger -t "${SCRIPTNAME}" "${1}."
}

fail_msg()
{
    echo "${SCRIPTNAME}: failed: ${1}." >&2
    logger -t "${SCRIPTNAME}" "failed: ${1}."
}

start_daemon() {
    usr="$1"
    shift
    su - $usr -c "$*"
}

if which start-stop-daemon >/dev/null 2>&1; then
    start_daemon() {
        usr="$1"
        shift
        bin="$1"
        shift
        start-stop-daemon --chuid $usr --start --exec $bin -- $@
    }
fi

vboxdrvrunning() {
    lsmod | grep -q "vboxdrv[^_-]"
}

valid_db_entry() {

    entry="$1"
    [ -z "$entry" ] && return 1

    user="$2"
    [ -z "$user" ] && return 1

    user_name=$(id -n -u "$user" 2>/dev/null)
    [ -z "$user_name" ] && return 1

    user_id=$(id -u "$user" 2>/dev/null)

    # Verify that @user identifies a user *by name* (i.e. not a numeric id).
    # Careful, all numeric user names are legal.
    if [ "$user_id" = "$user" ] && [ "$user_name" != "$user" ]; then
        return 1
    fi

    # Verify whether file name is the same as file owner name.
    [ -z "$(find "$entry" -user "$user" -type f 2>/dev/null)" ] && return 1

    return 0
}

start() {
    [ -z "$VBOXAUTOSTART_DB" ] && exit 0
    [ -z "$VBOXAUTOSTART_CONFIG" ] && exit 0
    begin_msg "Starting VirtualBox VMs configured for autostart" console;
    vboxdrvrunning || {
        fail_msg "VirtualBox kernel module not loaded!"
        exit 0
    }
    PARAMS="--background --start --config $VBOXAUTOSTART_CONFIG"

    # prevent inheriting this setting to VBoxSVC
    unset VBOX_RELEASE_LOG_DEST

    for entry in "$VBOXAUTOSTART_DB"/*.start
    do
        user=$(basename "$entry" .start)
        [ "$user" = "*" ] && break
        valid_db_entry "$entry" "$user" || continue

        start_daemon "$user" "$binary" $PARAMS > /dev/null 2>&1
    done

    return $RETVAL
}

stop() {
    [ -z "$VBOXAUTOSTART_DB" ] && exit 0
    [ -z "$VBOXAUTOSTART_CONFIG" ] && exit 0

    PARAMS="--stop --config $VBOXAUTOSTART_CONFIG"

    # prevent inheriting this setting to VBoxSVC
    unset VBOX_RELEASE_LOG_DEST

    for entry in "$VBOXAUTOSTART_DB"/*.stop
    do
        user=$(basename "$entry" .stop)
        [ "$user" = "*" ] && break
        valid_db_entry "$entry" "$user" || continue

        start_daemon "$user" "$binary" $PARAMS > /dev/null 2>&1
    done

    return $RETVAL
}

case "$1" in
start)
    start
    ;;
stop)
    stop
    ;;
*)
    echo "Usage: $0 {start|stop}"
    exit 1
esac

exit $RETVAL

++++++ vboxconfig.sh ++++++
#!/bin/bash
#
# Script to build VirtualBox host kernel modules
# Copyright C 2017 by Larry Finger
#
# This script is part of the openSUSE VirtualBox package
#
SOURCE="/usr/src/kernel-modules/virtualbox/src"
LOGFILE="/var/log/virtualbox.log"
INCLUDE="/lib/modules/`uname -r`/build/include"
#
# Test if vboxdrv module loaded. If it is, skip everything else
loaded=$(lsmod | grep vboxdrv)
if [ -n "$loaded" ] ; then
        echo "Kernel modules are loaded, unload them via"
        echo "systemctl stop vboxdrv.service if you wish to rebuild them."
        echo "Quitting .."
        exit 1
fi
#
# Check if virtualbox-host-source is installed, quit if not
if ! rpm -qf "$SOURCE/Makefile" &>/dev/null ; then
        echo "Sources for building host modules are not present,"
        echo "Use 'sudo zypper install virtualbox-host-source kernel-devel 
kernel-default-devel' to install them. Quitting .."
        exit 1
fi
#
# Check if virtualbox-host-source version matches virtualbox version
if [ "$(rpm -q virtualbox virtualbox-host-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 "This situation is probably not fatal, thus we will try to 
continue .."
fi
# Prerequisites are available, start build
pushd $SOURCE > /dev/null 2>&1
echo "Building kernel modules..."
make clean &>/dev/null
make > $LOGFILE 2>&1
if [ "$?" -ne 0 ] ; then
        echo ""
        echo "Build of VirtualBox host kernel modules failed."
        echo "Look at $LOGFILE to find reasons."
        popd > /dev/null 2>&1
        exit 1
else
echo "Kernel modules built correctly. They will now be installed."
fi
make install >> $LOGFILE 2>&1
if [ "$?" -ne 0 ] ; then
        echo ""
        echo "Installation of VirtualBox host kernel modules failed."
        echo "Look at $LOGFILE to find reasons."
        popd > /dev/null 2>&1
        exit 1
fi
depmod -a
modprobe -av vboxnetflt vboxnetadp
popd > /dev/null 2>&1
echo "Kernel modules are installed and loaded."
exit 0


++++++ vboxdrv.sh ++++++
#! /bin/sh
# Oracle VM VirtualBox
# Linux kernel module init script

#
# Copyright (C) 2006-2015 Oracle Corporation
#
# This file is part of VirtualBox Open Source Edition (OSE), as
# available from http://www.virtualbox.org. This file is free software;
# you can redistribute it and/or modify it under the terms of the GNU
# General Public License (GPL) as published by the Free Software
# Foundation, in version 2 as it comes in the "COPYING" file of the
# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
#

# chkconfig: 345 20 80
# description: VirtualBox Linux kernel module
#
### BEGIN INIT INFO
# Provides:       vboxdrv
# Required-Start: $syslog $remote_fs
# Required-Stop:  $syslog $remote_fs
# Default-Start:  2 3 5
# Default-Stop:   0 1 6
# Short-Description: VirtualBox Linux module
# Description: VirtualBox Linux kernel module
### END INIT INFO

PATH=/usr/sbin:/usr/bin:$PATH
DEVICE=/dev/vboxdrv
LOG="/var/log/vbox-install.log"
MODPROBE=/usr/sbin/modprobe
SCRIPTNAME=vboxdrv.sh
INSTALL_DIR=/usr/lib/virtualbox

# The below is GNU-specific.  See VBox.sh for the longer Solaris/OS X version.
TARGET=`readlink -e -- "${0}"` || exit 1
SCRIPT_DIR="${TARGET%/[!/]*}"

if $MODPROBE -c | grep -q '^allow_unsupported_modules  *0'; then
  MODPROBE="$MODPROBE --allow-unsupported-modules"
fi

[ -f /etc/vbox/vbox.cfg ] && . /etc/vbox/vbox.cfg
export BUILD_TYPE
export USERNAME
export USER=$USERNAME

VIRTUALBOX="${INSTALL_DIR}/VirtualBox"
VBOXMANAGE="${INSTALL_DIR}/VBoxManage"
BUILDINTMP="${MODULE_SRC}/build_in_tmp"
if test -u "${VBOXMANAGE}"; then
    GROUP=root
    DEVICE_MODE=0600
else
    GROUP=vboxusers
    DEVICE_MODE=0660
fi

[ -r /etc/default/virtualbox ] && . /etc/default/virtualbox

begin_msg()
{
    test -n "${2}" && echo "${SCRIPTNAME}: ${1}."
    logger -t "${SCRIPTNAME}" "${1}."
}

succ_msg()
{
    logger -t "${SCRIPTNAME}" "${1}."
}

fail_msg()
{
    echo "${SCRIPTNAME}: failed: ${1}." >&2
    logger -t "${SCRIPTNAME}" "failed: ${1}."
}

failure()
{
    fail_msg "$1"
    exit 1
}

running()
{
    lsmod | grep -q "$1[^_-]"
}

## Output the vboxdrv part of our udev rule.  This is redirected to the right 
file.
udev_write_vboxdrv() {
    VBOXDRV_GRP="$1"
    VBOXDRV_MODE="$2"

    echo "KERNEL==\"vboxdrv\", NAME=\"vboxdrv\", OWNER=\"root\", 
GROUP=\"$VBOXDRV_GRP\", MODE=\"$VBOXDRV_MODE\""
    echo "KERNEL==\"vboxdrvu\", NAME=\"vboxdrvu\", OWNER=\"root\", 
GROUP=\"$VBOXDRV_GRP\", MODE=\"0660\""
    echo "KERNEL==\"vboxnetctl\", NAME=\"vboxnetctl\", OWNER=\"root\", 
GROUP=\"$VBOXDRV_GRP\", MODE=\"$VBOXDRV_MODE\""
}

## Output the USB part of our udev rule.  This is redirected to the right file.
udev_write_usb() {
    INSTALLATION_DIR="$1"
    USB_GROUP="$2"

    echo "SUBSYSTEM==\"usb_device\", ACTION==\"add\", 
RUN+=\"$INSTALLATION_DIR/VBoxCreateUSBNode.sh \$major \$minor 
\$attr{bDeviceClass}${USB_GROUP}\""
    echo "SUBSYSTEM==\"usb\", ACTION==\"add\", ENV{DEVTYPE}==\"usb_device\", 
RUN+=\"$INSTALLATION_DIR/VBoxCreateUSBNode.sh \$major \$minor 
\$attr{bDeviceClass}${USB_GROUP}\""
    echo "SUBSYSTEM==\"usb_device\", ACTION==\"remove\", 
RUN+=\"$INSTALLATION_DIR/VBoxCreateUSBNode.sh --remove \$major \$minor\""
    echo "SUBSYSTEM==\"usb\", ACTION==\"remove\", ENV{DEVTYPE}==\"usb_device\", 
RUN+=\"$INSTALLATION_DIR/VBoxCreateUSBNode.sh --remove \$major \$minor\""
}

## Generate our udev rule file.  This takes a change in udev rule syntax in
## version 55 into account.  It only creates rules for USB for udev versions
## recent enough to support USB device nodes.
generate_udev_rule() {
    VBOXDRV_GRP="$1"      # The group owning the vboxdrv device
    VBOXDRV_MODE="$2"     # The access mode for the vboxdrv device
    INSTALLATION_DIR="$3" # The directory VirtualBox is installed in
    USB_GROUP="$4"        # The group that has permission to access USB devices
    NO_INSTALL="$5"       # Set this to "1" to remove but not re-install rules

    # Extra space!
    case "$USB_GROUP" in ?*) USB_GROUP=" $USB_GROUP" ;; esac
    case "$NO_INSTALL" in "1") return ;; esac
    udev_write_vboxdrv "$VBOXDRV_GRP" "$VBOXDRV_MODE"
    udev_write_usb "$INSTALLATION_DIR" "$USB_GROUP"
}

## Install udev rule (disable with INSTALL_NO_UDEV=1 in
## /etc/default/virtualbox).
install_udev() {
    VBOXDRV_GRP="$1"      # The group owning the vboxdrv device
    VBOXDRV_MODE="$2"     # The access mode for the vboxdrv device
    INSTALLATION_DIR="$3" # The directory VirtualBox is installed in
    USB_GROUP="$4"        # The group that has permission to access USB devices
    NO_INSTALL="$5"       # Set this to "1" to remove but not re-install rules

    if test -d /etc/udev/rules.d; then
        generate_udev_rule "$VBOXDRV_GRP" "$VBOXDRV_MODE" "$INSTALLATION_DIR" \
                           "$USB_GROUP" "$NO_INSTALL"
    fi
    # Remove old udev description file
    rm -f /etc/udev/rules.d/10-vboxdrv.rules 2> /dev/null
}

## Create a usb device node for a given sysfs path to a USB device.
install_create_usb_node_for_sysfs() {
    path="$1"           # sysfs path for the device
    usb_createnode="$2" # Path to the USB device node creation script
    usb_group="$3"      # The group to give ownership of the node to
    if test -r "${path}/dev"; then
        dev="`cat "${path}/dev" 2> /dev/null`"
        major="`expr "$dev" : '\(.*\):' 2> /dev/null`"
        minor="`expr "$dev" : '.*:\(.*\)' 2> /dev/null`"
        class="`cat ${path}/bDeviceClass 2> /dev/null`"
        sh "${usb_createnode}" "$major" "$minor" "$class" \
              "${usb_group}" 2>/dev/null
    fi
}

udev_rule_file=/etc/udev/rules.d/60-vboxdrv.rules
sysfs_usb_devices="/sys/bus/usb/devices/*"

## Install udev rules and create device nodes for usb access
setup_usb() {
    VBOXDRV_GRP="$1"      # The group that should own /dev/vboxdrv
    VBOXDRV_MODE="$2"     # The mode to be used for /dev/vboxdrv
    INSTALLATION_DIR="$3" # The directory VirtualBox is installed in
    USB_GROUP="$4"        # The group that should own the /dev/vboxusb device
                          # nodes unless INSTALL_NO_GROUP=1 in
                          # /etc/default/virtualbox.  Optional.
    usb_createnode="$INSTALLATION_DIR/VBoxCreateUSBNode.sh"
    # install udev rule (disable with INSTALL_NO_UDEV=1 in
    # /etc/default/virtualbox)
    if [ "$INSTALL_NO_GROUP" != "1" ]; then
        usb_group=$USB_GROUP
        vboxdrv_group=$VBOXDRV_GRP
    else
        usb_group=root
        vboxdrv_group=root
    fi
    install_udev "${vboxdrv_group}" "$VBOXDRV_MODE" \
                 "$INSTALLATION_DIR" "${usb_group}" \
                 "$INSTALL_NO_UDEV" > ${udev_rule_file}
    # Build our device tree
    for i in ${sysfs_usb_devices}; do  # This line intentionally without quotes.
        install_create_usb_node_for_sysfs "$i" "${usb_createnode}" \
                                          "${usb_group}"
    done
}

cleanup_usb()
{
    # Remove udev description file
    rm -f /etc/udev/rules.d/60-vboxdrv.rules
    rm -f /etc/udev/rules.d/10-vboxdrv.rules

    # Remove our USB device tree
    rm -rf /dev/vboxusb
}

start_drv()
{
    begin_msg "Starting VirtualBox services" console
    if [ -d /proc/xen ]; then
        failure "Running VirtualBox in a Xen environment is not supported"
    fi
    if ! running vboxdrv; then
        if ! rm -f $DEVICE; then
            failure "Cannot remove $DEVICE"
        fi
        if ! $MODPROBE vboxdrv > /dev/null 2>&1; then
            /usr/sbin/vboxconfig
            if ! $MODPROBE vboxdrv > /dev/null 2>&1; then
                failure "modprobe vboxdrv failed. Please use 'dmesg' to find 
out why"
            fi
        fi
        sleep .2
    fi
    # ensure the character special exists
    if [ ! -c $DEVICE ]; then
        MAJOR=`sed -n 's;\([0-9]\+\) vboxdrv$;\1;p' /proc/devices`
        if [ ! -z "$MAJOR" ]; then
            MINOR=0
        else
            MINOR=`sed -n 's;\([0-9]\+\) vboxdrv$;\1;p' /proc/extra`
            if [ ! -z "$MINOR" ]; then
                MAJOR=10
            fi
        fi
        if [ -z "$MAJOR" ]; then
            rmmod vboxdrv 2>/dev/null
            failure "Cannot locate the VirtualBox device"
        fi
        if ! mknod -m 0660 $DEVICE c $MAJOR $MINOR 2>/dev/null; then
            rmmod vboxdrv 2>/dev/null
            failure "Cannot create device $DEVICE with major $MAJOR and minor 
$MINOR"
        fi
    fi
    # ensure permissions
    if ! $MODPROBE vboxnetflt > /dev/null 2>&1; then
        failure "modprobe vboxnetflt failed. Please use 'dmesg' to find out why"
    fi
    if ! $MODPROBE vboxnetadp > /dev/null 2>&1; then
        failure "modprobe vboxnetadp failed. Please use 'dmesg' to find out why"
    fi
    # Create the /dev/vboxusb directory if the host supports that method
    # of USB access.  The USB code checks for the existance of that path.
    if grep -q usb_device /proc/devices; then
        mkdir -p -m 0750 /dev/vboxusb 2>/dev/null
        chown root:vboxusers /dev/vboxusb 2>/dev/null
    fi
    succ_msg "VirtualBox services started"
}

stop_drv()
{
    begin_msg "Stopping VirtualBox services" console

    if running vboxnetadp; then
        if ! rmmod vboxnetadp 2>/dev/null; then
            failure "Cannot unload module vboxnetadp"
        fi
    fi
    if running vboxdrv; then
        if running vboxnetflt; then
            if ! rmmod vboxnetflt 2>/dev/null; then
                failure "Cannot unload module vboxnetflt"
            fi
        fi
        if ! rmmod vboxdrv 2>/dev/null; then
            failure "Cannot unload module vboxdrv"
        fi
        if ! rm -f $DEVICE; then
            failure "Cannot unlink $DEVICE"
        fi
    fi
    succ_msg "VirtualBox services stopped"
}

cleanup_vb()
{
    for i in /lib/modules/*; do
        # We could just do "rm -f", but we only want to try deleting folders if
        # we are sure they were ours, i.e. they had our modules in beforehand.
        if    test -e "${i}/extra/vboxdrv.ko" \
           || test -e "${i}/extra/vboxnetadp.ko" \
           || test -e "${i}/extra/vboxnetflt.ko"; then
            rm -f "${i}/extra/vboxdrv.ko" "${i}/extra/vboxnetadp.ko" \
                  "${i}/extra/vboxnetflt.ko"
            # Remove the kernel version folder if it was empty except for us.
            test   "`echo ${i}/extra/* ${i}/extra/.?* ${i}/* ${i}/.?*`" \
                 = "${i}/extra/* ${i}/extra/.. ${i}/extra ${i}/.." &&
                rmdir "${i}/extra" "${i}"  # We used to leave empty folders.
            version=`expr "${i}" : "/lib/modules/\(.*\)"`
            depmod -a "${version}"
        fi
    done
}

# setup_script
setup_vb()
{
#   Try to build the host kernel modules in case prepackaging has failed
    /usr/sbin/vboxconfig
}

dmnstatus()
{
    if running vboxdrv; then
        str="vboxdrv"
        if running vboxnetflt; then
            str="$str, vboxnetflt"
            if running vboxnetadp; then
                str="$str, vboxnetadp"
            fi
        fi
        echo "VirtualBox kernel modules ($str) are loaded."
        for i in $SHUTDOWN_USERS; do
            # don't create the ipcd directory with wrong permissions!
            if [ -d /tmp/.vbox-$i-ipc ]; then
                export VBOX_IPC_SOCKETID="$i"
                VMS=`$VBOXMANAGE --nologo list runningvms | sed -e 
's/^".*".*{\(.*\)}/\1/' 2>/dev/null`
                if [ -n "$VMS" ]; then
                    echo "The following VMs are currently running:"
                    for v in $VMS; do
                       echo "  $v"
                    done
                fi
            fi
        done
    else
        echo "VirtualBox kernel module is not loaded."
    fi
}

case "$1" in
start)
    start_drv
    ;;
stop)
    stop_drv
    ;;
restart)
    "$0" stop && "$0" start
    ;;
setup)
    # Create udev rule and USB device nodes.
    ## todo Wouldn't it make more sense to install the rule to /lib/udev?  This
    ## is not a user-created configuration file after all.
    ## todo Do we need a udev rule to create /dev/vboxdrv[u] at all?  We have
    ## working fall-back code here anyway, and the "right" code is more complex
    ## than the fall-back.  Unnecessary duplication?
    stop_drv && cleanup_vb
    setup_usb "$GROUP" "$DEVICE_MODE" "$INSTALL_DIR"
    setup_vb && start_drv
    ;;
cleanup)
    stop_drv && cleanup_vb
    cleanup_usb
    ;;
force-reload)
    "$0" stop
    "$0" start
    ;;
status)
    dmnstatus
    ;;
*)
    echo "Usage: $0 {start|stop|stop_vms|restart|force-reload|status}"
    exit 1
esac

exit 0


++++++ vboxguestconfig.sh ++++++
#!/bin/bash
#
# Script to build VirtualBox guest kernel modules
# Copyright C 2017 by Larry Finger
#
# This script is part of the openSUSE VirtualBox package
#
SOURCE="/usr/src/kernel-modules/"
LOGFILE="/var/log/virtualbox.log"
INCLUDE="/lib/modules/`uname -r`/build/include"
#
# Test if vboxguest module loaded. If it is, skip everything else
loaded=$(lsmod | grep vboxguest)
if [ -n "$loaded" ] ; then
        echo "Kernel modules available. but we will continue..."
fi
#
# Check if virtualbox-guest-source is installed, quit if not
if ! rpm -qf "$SOURCE/additions/guest_src.tar.bz2" &>/dev/null ; then
        echo "Sources for building guest modules are not present,"
        echo "Use 'sudo zypper install virtualbox-guest-source' to install 
them. Quitting .."
        exit 1
fi
# unpack source
pushd $SOURCE > /dev/null 2>&1
tar jxf additions/guest_src.tar.bz2 > /dev/null 2>&1
popd > /dev/null 2>&1
#
# 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
        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 .."
fi
# Prerequisites are available, start build
pushd $SOURCE/additions/src > /dev/null 2>&1
echo "Building kernel modules..."
make > $LOGFILE 2>&1
if [ "$?" -ne 0 ] ; then
        echo ""
        echo "Build of VirtualBox guest kernel modules failed."
        echo "Look at $LOGFILE to find reasons."
        popd > /dev/null 2>&1
        exit 1
else
echo "Kernel modules built correctly. They will now be installed."
fi
make install >> $LOGFILE 2>&1
if [ "$?" -ne 0 ] ; then
        echo ""
        echo "Installation of VirtualBox guest kernel modules failed."
        echo "Look at $LOGFILE to find reasons."
        popd > /dev/null 2>&1
        exit 1
fi
depmod -a
modprobe -av vboxguest vboxvideo
cd ../..
rm -rf additions
popd > /dev/null 2>&1
echo "Kernel modules are installed and loaded."
exit 0


++++++ vboxweb-service.sh ++++++
#!/bin/sh
# $Id: vboxweb-service.sh 127855 2019-01-01 01:45:53Z bird $
## @file
# VirtualBox web service API daemon init script.
#

#
# Copyright (C) 2006-2019 Oracle Corporation
#
# This file is part of VirtualBox Open Source Edition (OSE), as
# available from http://www.virtualbox.org. This file is free software;
# you can redistribute it and/or modify it under the terms of the GNU
# General Public License (GPL) as published by the Free Software
# Foundation, in version 2 as it comes in the "COPYING" file of the
# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
#

# chkconfig: 345 35 65
# description: VirtualBox web service API
#
### BEGIN INIT INFO
# Provides:       vboxweb-service
# Required-Start: vboxdrv
# Required-Stop:  vboxdrv
# Default-Start:  2 3 4 5
# Default-Stop:   0 1 6
# Description:    VirtualBox web service API
### END INIT INFO

PATH=$PATH:/bin:/sbin:/usr/sbin
SCRIPTNAME=vboxweb-service.sh

[ -f /etc/vbox/vbox.cfg ] && . /etc/vbox/vbox.cfg

if [ -n "$INSTALL_DIR" ]; then
    binary="$INSTALL_DIR/vboxwebsrv"
    vboxmanage="$INSTALL_DIR/VBoxManage"
else
    binary="/usr/lib/virtualbox/vboxwebsrv"
    vboxmanage="/usr/lib/virtualbox/VBoxManage"
fi

# silently exit if the package was uninstalled but not purged,
# applies to Debian packages only (but shouldn't hurt elsewhere)
[ ! -f /etc/debian_release -o -x $binary ] || exit 0

[ -r /etc/default/virtualbox ] && . /etc/default/virtualbox

PIDFILE="/var/run/${SCRIPTNAME}"

# Preamble for Gentoo
if [ "`which $0`" = "/sbin/rc" ]; then
    shift
fi

begin_msg()
{
    test -n "${2}" && echo "${SCRIPTNAME}: ${1}."
    logger -t "${SCRIPTNAME}" "${1}."
}

succ_msg()
{
    logger -t "${SCRIPTNAME}" "${1}."
}

fail_msg()
{
    echo "${SCRIPTNAME}: failed: ${1}." >&2
    logger -t "${SCRIPTNAME}" "failed: ${1}."
}

start_daemon() {
    usr="$1"
    shift
    su - $usr -c "$*"
}

killproc() {
    killall $1
    rm -f $PIDFILE
}

if which start-stop-daemon >/dev/null 2>&1; then
    start_daemon() {
        usr="$1"
        shift
        bin="$1"
        shift
        start-stop-daemon --background --chuid $usr --start --exec $bin -- $@
    }

    killproc() {
        start-stop-daemon --stop --exec $@
    }
fi

vboxdrvrunning() {
    lsmod | grep vboxdrv
}

check_single_user() {
    if [ -n "$2" ]; then
        fail_msg "VBOXWEB_USER must not contain multiple users!"
        exit 1
    fi
}

start() {
    if ! test -f $PIDFILE; then
        [ -z "$VBOXWEB_USER" ] && exit 0
        begin_msg "Starting VirtualBox web service" console;
        check_single_user $VBOXWEB_USER
        temp=$(lsmod | grep vboxdrv)
        echo $temp
        if [ -z "$temp" ]; then
            fail_msg "VirtualBox kernel module not loaded!"
            exit 1
        fi
        PARAMS="--background"
        [ -n "$VBOXWEB_HOST" ]           && PARAMS="$PARAMS -H $VBOXWEB_HOST"
        [ -n "$VBOXWEB_PORT" ]           && PARAMS="$PARAMS -p $VBOXWEB_PORT"
        [ -n "$VBOXWEB_SSL_KEYFILE" ]    && PARAMS="$PARAMS -s -K 
$VBOXWEB_SSL_KEYFILE"
        [ -n "$VBOXWEB_SSL_PASSWORDFILE" ] && PARAMS="$PARAMS -a 
$VBOXWEB_SSL_PASSWORDFILE"
        [ -n "$VBOXWEB_SSL_CACERT" ]     && PARAMS="$PARAMS -c 
$VBOXWEB_SSL_CACERT"
        [ -n "$VBOXWEB_SSL_CAPATH" ]     && PARAMS="$PARAMS -C 
$VBOXWEB_SSL_CAPATH"
        [ -n "$VBOXWEB_SSL_DHFILE" ]     && PARAMS="$PARAMS -D 
$VBOXWEB_SSL_DHFILE"
        [ -n "$VBOXWEB_SSL_RANDFILE" ]   && PARAMS="$PARAMS -r 
$VBOXWEB_SSL_RANDFILE"
        [ -n "$VBOXWEB_TIMEOUT" ]        && PARAMS="$PARAMS -t $VBOXWEB_TIMEOUT"
        [ -n "$VBOXWEB_CHECK_INTERVAL" ] && PARAMS="$PARAMS -i 
$VBOXWEB_CHECK_INTERVAL"
        [ -n "$VBOXWEB_THREADS" ]        && PARAMS="$PARAMS -T $VBOXWEB_THREADS"
        [ -n "$VBOXWEB_KEEPALIVE" ]      && PARAMS="$PARAMS -k 
$VBOXWEB_KEEPALIVE"
        [ -n "$VBOXWEB_AUTHENTICATION" ] && PARAMS="$PARAMS -A 
$VBOXWEB_AUTHENTICATION"
        [ -n "$VBOXWEB_LOGFILE" ]        && PARAMS="$PARAMS -F $VBOXWEB_LOGFILE"
        [ -n "$VBOXWEB_ROTATE" ]         && PARAMS="$PARAMS -R $VBOXWEB_ROTATE"
        [ -n "$VBOXWEB_LOGSIZE" ]        && PARAMS="$PARAMS -S $VBOXWEB_LOGSIZE"
        [ -n "$VBOXWEB_LOGINTERVAL" ]    && PARAMS="$PARAMS -I 
$VBOXWEB_LOGINTERVAL"
        # set authentication method + password hash
        if [ -n "$VBOXWEB_AUTH_LIBRARY" ]; then
            su - "$VBOXWEB_USER" -c "$vboxmanage setproperty websrvauthlibrary 
\"$VBOXWEB_AUTH_LIBRARY\""
            if [ $? -ne 0 ]; then
                fail_msg "Error $? setting webservice authentication library to 
$VBOXWEB_AUTH_LIBRARY"
            fi
        fi
        if [ -n "$VBOXWEB_AUTH_PWHASH" ]; then
            su - "$VBOXWEB_USER" -c "$vboxmanage setextradata global 
\"VBoxAuthSimple/users/$VBOXWEB_USER\" \"$VBOXWEB_AUTH_PWHASH\""
            if [ $? -ne 0 ]; then
                fail_msg "Error $? setting webservice password hash"
            fi
        fi
        # prevent inheriting this setting to VBoxSVC
        unset VBOX_RELEASE_LOG_DEST
        start_daemon $VBOXWEB_USER $binary $PARAMS > /dev/null 2>&1
        # ugly: wait until the final process has forked
        sleep .1
        PID=`pidof $binary 2>/dev/null`
        if [ -n "$PID" ]; then
            echo "$PID" > $PIDFILE
            RETVAL=0
            firewall-cmd --permanent --new-service=vboxweb
            firewall-cmd --permanent --service=vboxweb 
--set-description="service to remotely manage VirtualBox"
            firewall-cmd --permanent --add-port=18083/tcp --zone=internal 
--service=vboxweb
            firewall-cmd --permanent --set-short="vboxweb" --service=vboxweb
            succ_msg "VirtualBox web service started"
        else
            RETVAL=1
            fail_msg "VirtualBox web service failed to start"
        fi
    fi
    return $RETVAL
}

stop() {
    if test -f $PIDFILE; then
        begin_msg "Stopping VirtualBox web service" console;
        killproc $binary
        RETVAL=$?
        # Be careful: wait 1 second, making sure that everything is cleaned up.
        sleep 1
        if ! pidof $binary > /dev/null 2>&1; then
            rm -f $PIDFILE
            succ_msg "VirtualBox web service stopped"
        else
            fail_msg "VirtualBox web service failed to stop"
        fi
    fi
    return $RETVAL
}

restart() {
    stop && start
}

status() {
    echo -n "Checking for VBox Web Service"
    if [ -f $PIDFILE ]; then
        echo " ...running"
    else
        echo " ...not running"
    fi
}

case "$1" in
start)
    start
    ;;
stop)
    stop
    ;;
restart)
    restart
    ;;
force-reload)
    restart
    ;;
status)
    status
    ;;
setup)
    ;;
cleanup)
    ;;
*)
    echo "Usage: $0 {start|stop|restart|status}"
    exit 1
esac

exit $RETVAL


++++++ virtualbox-patch-source.sh ++++++
#!/bin/bash -ex

if [ -z "$1" ]; then
        echo "You need to pass the filename VirtualBox-x.y.z.tar.bz2 as first 
argument."
        exit 1
fi

REMOVE_DIRS=( 
src/VBox/Additions/os2 
src/VBox/Runtime/r3/darwin
src/VBox/Runtime/r0drv/darwin
src/VBox/Runtime/darwin
kBuild/bin
kBuild/msgstyles
kBuild/tools
kBuild/sdks
tools/darwin.x86
tools/darwin.amd64
tools/freebsd.x86
tools/os2.x86
tools/solaris.x86
tools/solaris.amd64
tools/win.amd64
tools/win.x86
tools/linux.x86
tools/linux.amd64
)

set -o errexit

CMDNAME=${0##*/}
SOURCEDIR=${0%$CMDNAME}

BASENAME=${1%.tar.bz2}

trap "rm -rf  \"$BASENAME-patched.tar\" \"$BASENAME-patched.tar.bz2\"" ERR

for (( N=0 ; N<${#REMOVE_DIRS[@]} ; N++ )) ; do
    #REMOVE_DIRS[N]="$BASENAME/${REMOVE_DIRS[N]}"
    # use a wildcard because VirtualBox-1.6.0-OSE != VirtualBox-1.6.0_OSE
    REMOVE_DIRS[N]="*/${REMOVE_DIRS[N]}"
done

cd "$SOURCEDIR" >/dev/null

if ! test -f "$BASENAME.tar.bz2" ; then
    exit 0
fi

if test -f "$BASENAME-patched.tar.bz2" ; then
    if test "$BASENAME.tar.bz2" -ot "$BASENAME-patched.tar.bz2" ; then
        if test $CMDNAME -ot "$BASENAME-patched.tar.bz2" ; then
            exit 0
        fi
    fi
fi

cp -a "$BASENAME.tar.bz2" "$BASENAME-patched.tar.bz2"
bunzip2 "$BASENAME-patched.tar.bz2"
tar --wildcards --delete -f "$BASENAME-patched.tar" "${REMOVE_DIRS[@]}"
pixz -9 "$BASENAME-patched.tar"

++++++ virtualbox-wrapper.sh ++++++
#!/bin/bash
export QT_NO_KDE_INTEGRATION=1

# make certain that the user/group combination is valid
/usr/bin/id -nG | grep -v -e "root" -e "vboxusers" >/dev/null && 
/usr/lib/virtualbox/VBoxPermissionMessage && exit
#
# Handle the issue regarding USB passthru
# The following conditions apply:
# 1. If ~/.config/VirtualBox/enable exists, the user accepts the security risk.
# 2. If ~/.config/VirtualBox/disable exists, the user does not accept the risk. 
That file will contain the inode of /usr/lib/udev/rules.d/60-vboxdrv.rules.
#    When that changes, the VBoxUSB_DevRules will again be displayed as that 
means that VB has been reloaded. 
#
devrules()
{
    /usr/lib/virtualbox/VBoxUSB_DevRules
    if [ $? -eq 0 ] ; then
        # User accepts the risk
        touch ~/.config/VirtualBox/enable
        rm -f ~/.config/VirtualBox/disable
    else
        # User declines the risk - save the inode
        echo "" > ~/.config/VirtualBox/disable
        rm -f ~/.config/VirtualBox/enable
    fi
}

# Start of main routine
#
# Ensure that ~/.config/VirtualBox exists
mkdir -p ~/.config/VirtualBox
# Get the inode for /usr/lib/udev/rules.d/60-vboxdrv.rules
INODE=$(stat /usr/lib/udev/rules.d/60-vboxdrv.rules | grep Inode | cut -d' ' 
-f3)
if [ ! -f ~/.config/VirtualBox/enable ] && [ ! -f ~/.config/VirtualBox/disable 
] ; then
        # Neither file exists - find what the user wants
        devrules
fi
# Get the original Inode if it exists
if [ -f ~/.config/VirtualBox/disable ] ; then
    read LINE < ~/.config/VirtualBox/disable
else
    LINE=" "
fi
# If user originally declined, make certain that 
/usr/lib/udev/rules.d/60-vboxdrv.rules has not been changed
if [ -f ~/.config/VirtualBox/disable ] && [ "$LINE" != "$INODE" ] && [ "$LINE" 
!= "" ] ; then
    # disable is selected and the Inode has changed - ask again
    devrules
fi
if [ -f ~/.config/VirtualBox/disable ] ; then
    echo $INODE > ~/.config/VirtualBox/disable
    if [ "$LINE" != "$INODE" ] ; then
        if [ -f /usr/bin/kdesu ] ; then
            kdesu /usr/sbin/vbox-fix-usb-rules.sh
        fi
        if [ -f /usr/bin/gnomesu ] ; then
            gnomesu /usr/sbin/vbox-fix-usb-rules.sh
        fi
    fi
fi
# Check if extpack needs to be updated
/usr/bin/update-extpack.sh
# Check that /usr/lib/virtualbox/VirtualBoxVM has SUID permissions
PERM=$(ls -l /usr/lib/virtualbox/VirtualBoxVM | grep rwsr)
if [ -z "$PERM" ]
then
    logger  -s "Wrong permissions for VirtualBoxVM - use 'sudo chmod 4711 
/usr/lib/virtualbox/VirtualBoxVM' to fix"
    /usr/lib/virtualbox/VBoxSUIDMessage
    exit 1
fi
# Now run the VB GUI
LD_LIBRARY_PATH="/usr/lib/virtualbox${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}" exec 
/usr/lib/virtualbox/VirtualBoxQt "$@"

Reply via email to