Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package virtualbox for openSUSE:Factory 
checked in at 2025-10-23 18:31:37
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/virtualbox (Old)
 and      /work/SRC/openSUSE:Factory/.virtualbox.new.1980 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "virtualbox"

Thu Oct 23 18:31:37 2025 rev:298 rq:1313066 version:7.2.4

Changes:
--------
--- /work/SRC/openSUSE:Factory/virtualbox/virtualbox.changes    2025-09-12 
21:09:39.931569882 +0200
+++ /work/SRC/openSUSE:Factory/.virtualbox.new.1980/virtualbox.changes  
2025-10-23 18:31:50.496078918 +0200
@@ -1,0 +2,24 @@
+Wed Oct 22 10:52:35 UTC 2025 - Jan Engelhardt <[email protected]>
+
+- Update to release 7.2.4
+  * GUI: Fixed VBox Manager crash when some VM has a lot of
+    snapshots.
+  * GUI: Fixed VBox Manager crash while attempting to show error
+    notifications too early.
+  * GUI: Fixed VBox Manager freeze on Linux hosts at startup or
+    while attempting to add a VM.
+  * Network: Added a new experimental type of e1000 adapter.
+    (82583V). It requires the ICH9 chipset, since MSIs are not
+    supported by PIIX3.
+  * USB Webcam: The virtual USB webcam is now part of the open
+    source base package.
+  * GUI: Fixed VirtualBox VM Manager crash when host was resuming
+    from sleep.
+  * Support for Linux 6.18
+
+-------------------------------------------------------------------
+Tue Sep 30 09:31:18 UTC 2025 - Jan Engelhardt <[email protected]>
+
+- Drop logic for building and installing on pre-Leap 15.
+
+-------------------------------------------------------------------

Old:
----
  VirtualBox-7.2.0-patched.tpxz
  fix_usb_rules.sh
  update-extpack.sh
  vboxautostart-service.sh
  vboxconfig.sh
  vboxdrv.sh
  vboxguestconfig.sh
  vboxweb-service.sh
  virtualbox-patch-source.sh
  virtualbox-wrapper.sh

New:
----
  VirtualBox-7.2.4-patched.tpxz

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

Other differences:
------------------
++++++ virtualbox.spec ++++++
--- /var/tmp/diff_new_pack.bt2zBk/_old  2025-10-23 18:31:52.596168703 +0200
+++ /var/tmp/diff_new_pack.bt2zBk/_new  2025-10-23 18:31:52.600168875 +0200
@@ -15,7 +15,6 @@
 # Please submit bugfixes or comments via https://bugs.opensuse.org/
 #
 
-
 %if "@BUILD_FLAVOR@" == "kmp"
        # macros for virtualbox-kmp
        %define main_package 0
@@ -56,21 +55,21 @@
 
 # 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
-%global mypython %nil
+       # Leap 16.0 has python3.13, currently not supported
+       %global mypython %nil
 %else
-# Using python3.11 for Factory, current version doesn't support python3.13
-%global mypython python311
+       # Using python3.11 for Factory, current version doesn't support 
python3.13
+       %global mypython python311
 %endif
 
 %if "%mypython" != ""
-%global __mypython %{expand:%%__%{mypython}}
-%global mypython_sitelib %{expand:%%%{mypython}_sitelib}
+       %global __mypython %{expand:%%__%{mypython}}
+       %global mypython_sitelib %{expand:%%%{mypython}_sitelib}
 %endif
 
 Name:           virtualbox%{?dash}%{?name_suffix}
-Version:        7.2.0
-%define rversion 7.2.0
+Version:        7.2.4
+%define rversion 7.2.4
 Release:        0
 Summary:        %{package_summary}
 License:        GPL-3.0-or-later
@@ -165,7 +164,7 @@
 %if 0%{?sle_version} != 120300
 Source2:        VirtualBox.appdata.xml
 %endif
-### Requirements for virtualbox main package ###
+
 %if %{main_package}
 BuildRequires:  dmidecode
 BuildRequires:  e2fsprogs-devel
@@ -190,7 +189,7 @@
 BuildRequires:  update-desktop-files
 BuildRequires:  which
 BuildRequires:  xorg-x11-server
-BuildRequires:  pkgconfig(Qt6Core)
+BuildRequires:  pkgconfig(Qt6Core) >= 6.8
 BuildRequires:  pkgconfig(Qt6DBus)
 BuildRequires:  pkgconfig(Qt6Gui)
 BuildRequires:  pkgconfig(Qt6Help)
@@ -245,19 +244,12 @@
 Conflicts:      %{name}-websrv < %{version}
 Conflicts:      %{name}-websrv > %{version}
 Recommends:     %{name}-gui = %{version}
-# package i4l-vbox from source package i4l-base shares the directory /etc/vbox
-# with us, but with different owner.
-Conflicts:      i4l-vbox
 #rename from ose version:
 Provides:       %{name}-ose = %{version}
 Obsoletes:      %{name}-ose < %{version}
 %{?systemd_ordering}
 %{?sysusers_requires}
-%if 0%{?suse_version} > 1325
 BuildRequires:  libboost_headers-devel
-%else
-BuildRequires:  boost-devel
-%endif
 %ifarch amd64 x86_64 ia32e em64t
 %if 0%{?suse_version} && 0%{?suse_version} >= 1600
 BuildRequires:  gcc-32bit
@@ -271,12 +263,8 @@
 BuildRequires:  xorg-x11-libXmu-devel-32bit
 BuildRequires:  xorg-x11-libXt-devel-32bit
 %endif
-%if ! 0%{?suse_version} > 1325
-Requires(pre):  net-tools-deprecated
-%endif
-# end of main_package
 %endif
-### Requirements for virtualbox-kmp ###
+
 %if %{kmp_package}
 BuildRequires:  alsa-devel
 BuildRequires:  libiptc-devel
@@ -285,9 +273,8 @@
 Requires:       ca-certificates
 Requires:       openSUSE-signkey-cert
 %kernel_module_package -p %{SOURCE7} -n virtualbox -x kdump um xen pae xenpae 
pv
-# end of kmp_package
 %endif
-### Description and subpackages of virtualbox main package ###
+
 %if %{main_package}
 %description
 VirtualBox is a hosted hypervisor for x86 computers. It supports the
@@ -338,9 +325,6 @@
 Obsoletes:      %{name}-ose-guest-tools < %{version}
 Obsoletes:      virtualbox-guest-x11 < %{version}
 Obsoletes:      xorg-x11-driver-virtualbox-ose < %{version}
-%if ! 0%{?suse_version} > 1325
-Requires(pre):  net-tools-deprecated
-%endif
 %{?sysusers_requires}
 
 %description guest-tools
@@ -567,19 +551,17 @@
 install -m 755 src/VBox/Additions/x11/Installer/98vboxadd-xclient 
%{buildroot}%{_sysconfdir}/X11/xinit/xinitrc.d/
 install -d %{buildroot}%{_sysconfdir}/xdg/autostart/
 install -m 644 %{SOURCE25} 
%{buildroot}%{_sysconfdir}/xdg/autostart/vboxclient.desktop
-%if 0%{?suse_version} > 1320 || 0%{?sle_version} == 120300
 install -d -m 755 %{buildroot}/media
-%endif
 
 echo "entering VNC extension install section"
-pushd out/linux.*/release/packages/
+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"
-popd
+cd -
 
 echo "entering virtualbox(-qt) install section"
 # copy the main files to %%{_vbox_instdir}
-pushd out/linux.*/release/bin
+cd out/linux.*/release/bin
 cp -a VBoxManage VBoxHeadless VBoxSDL VBoxNetNAT VBoxAutostart VBoxVolInfo \
        VBoxBalloonCtrl webtest VBoxDTrace VBoxDbg.so \
        VBoxDxVk.so UICommon.so vboximg-mount %{buildroot}%{_vbox_instdir}
@@ -619,7 +601,7 @@
 tar -jcf %{buildroot}%{_usrsrc}/kernel-modules/additions/guest_src.tar.bz2 
additions/src
 cp -a src %{buildroot}%{_usrsrc}/kernel-modules/virtualbox
 install -m 644 %{SOURCE11}                     
%{buildroot}%{_udevrulesdir}/60-vboxdrv.rules
-popd
+cd -
 
 # install desktop file
 install -m 644 out/linux.*/release/bin/virtualbox.desktop 
%{buildroot}%{_datadir}/applications/%{name}.desktop
@@ -674,9 +656,9 @@
 
 %if "%mypython" != ""
 echo "entering python-virtualbox install section"
-pushd out/linux.*/release/bin/sdk/installer/python
+cd out/linux.*/release/bin/sdk/installer/python
 VBOX_INSTALL_PATH=%{_vbox_instdir} %{__mypython} vboxapisetup.py install 
--prefix=%{_prefix} --root=%{buildroot}
-popd
+cd -
 install -d -m 755 %{buildroot}%{_vbox_instdir}/sdk/bindings/xpcom
 cp -r out/linux.*/release/bin/sdk/bindings/xpcom/python 
%{buildroot}%{_vbox_instdir}/sdk/bindings/xpcom
 %py3_compile %{buildroot}%{_vbox_instdir}/sdk/bindings/xpcom/python
@@ -685,29 +667,29 @@
 echo "entering virtualbox-devel install section"
 cp -r out/linux.*/release/bin/sdk/bindings/auth 
%{buildroot}%{_vbox_instdir}/sdk/bindings
 
-pushd out/linux.*/release/bin/sdk/bindings/xpcom
+cd out/linux.*/release/bin/sdk/bindings/xpcom
 cp -r include %{buildroot}%{_vbox_instdir}/sdk/bindings/xpcom
 cp -r idl %{buildroot}%{_vbox_instdir}/sdk/bindings/xpcom
 cp -r samples %{buildroot}%{_vbox_instdir}/sdk/bindings/xpcom
-popd
+cd -
 
 cp out/linux.*/release/bin/sdk/bindings/VirtualBox.xidl 
%{buildroot}%{_vbox_instdir}/sdk/bindings
 
 echo "entering virtualbox-websrv install section"
-pushd out/linux.*/release/bin
+cd out/linux.*/release/bin
 install -m 755 vboxwebsrv %{buildroot}%{_vbox_instdir}
 install -m 755 webtest %{buildroot}%{_vbox_instdir}
-popd
+cd -
 ln -sf %{_unitdir}/vboxweb-service.service 
%{buildroot}%{_unitdir}/multi-user.target.wants/vboxweb-service.service
 
 echo "entering virtualbox-guest-desktop-icons install section"
 install -d -m 755      %{buildroot}%{_datadir}/pixmaps/virtualbox
 
-pushd src/VBox/Frontends/VirtualBox/images
+cd src/VBox/Frontends/VirtualBox/images
 for icon in os_*.png; do
   install -m 644 "$icon" %{buildroot}%{_datadir}/pixmaps/virtualbox/"$icon";
 done
-popd
+cd -
 
 install -Dm0644 vbox.conf %{buildroot}%{_sysusersdir}/vbox.conf
 install -Dm0644 vbox-guest-tools.conf 
%{buildroot}%{_sysusersdir}/vbox-guest-tools.conf
@@ -725,7 +707,6 @@
 %service_add_pre vboxweb-service.service
 
 %post
-/sbin/ldconfig
 #setup our sysconfig file /etc/sysconfig/vbox
 %set_permissions %{_vbox_instdir}/VBoxNetNAT
 %set_permissions %{_vbox_instdir}/VBoxNetDHCP
@@ -789,7 +770,6 @@
 %service_del_preun vboxweb-service.service
 
 %postun
-/sbin/ldconfig
 # immediately restarting virtualbox may not work. As such wait for the next 
reboot to restart
 %if ! %{defined service_del_postun_without_restart}
 export DISABLE_RESTART_ON_UPDATE=yes
@@ -938,9 +918,7 @@
 %dir %{_sysconfdir}/xdg
 %dir %{_sysconfdir}/xdg/autostart
 %{_sysconfdir}/xdg/autostart/vboxclient.desktop
-%if 0%{?suse_version} > 1320 || 0%{?sle_version} == 120300
 %dir /media
-%endif
 
 %if "%mypython" != ""
 %files -n %{mypython}-%{name}

++++++ _scmsync.obsinfo ++++++
--- /var/tmp/diff_new_pack.bt2zBk/_old  2025-10-23 18:31:52.716173834 +0200
+++ /var/tmp/diff_new_pack.bt2zBk/_new  2025-10-23 18:31:52.720174005 +0200
@@ -1,5 +1,5 @@
-mtime: 1757603031
-commit: b5ad9bc3c60d0e462bd32c8d61108f213de32192e2adc10cd1b1c859dc0e4323
+mtime: 1761144152
+commit: 1c99f0ba17c8791a10198dbfb03912ae42f5ee31fa2ac3b4f8fc9541af4e9043
 url: https://src.opensuse.org/jengelh/virtualbox
 revision: master
 

++++++ build.specials.obscpio ++++++
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        2025-10-22 16:42:43.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       2025-10-22 16:42:43.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        2025-10-22 16:42:43.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   2025-10-22 16:42:43.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      2025-10-22 16:42:43.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      2025-10-22 16:42:43.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      2025-10-22 16:42:43.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      2025-10-22 16:42:43.000000000 +0200
@@ -0,0 +1,62 @@
+#!/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/WINNT 
+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   2025-10-22 16:42:43.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 "$@"

++++++ 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      2025-10-22 16:42:43.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        2025-10-22 16:42:43.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       2025-10-22 16:42:43.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        2025-10-22 16:42:43.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   2025-10-22 16:42:43.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      2025-10-22 16:42:43.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      2025-10-22 16:42:43.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      2025-10-22 16:42:43.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      2025-10-22 16:42:43.000000000 +0200
@@ -0,0 +1,62 @@
+#!/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/WINNT 
+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   2025-10-22 16:42:43.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 "$@"

Reply via email to