Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package virtualbox for openSUSE:Factory 
checked in at 2026-06-15 19:39:47
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/virtualbox (Old)
 and      /work/SRC/openSUSE:Factory/.virtualbox.new.1981 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "virtualbox"

Mon Jun 15 19:39:47 2026 rev:308 rq:1359115 version:7.2.8

Changes:
--------
--- /work/SRC/openSUSE:Factory/virtualbox/virtualbox.changes    2026-04-16 
17:25:43.312349650 +0200
+++ /work/SRC/openSUSE:Factory/.virtualbox.new.1981/virtualbox.changes  
2026-06-15 19:41:10.137694484 +0200
@@ -1,0 +2,23 @@
+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)
+
+-------------------------------------------------------------------

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

New:
----
  0001-7.2-Backported-r173857-Additions-Linux-vboxsf-Add-in.patch
  0001-7.2-Backported-r173880-Linux-vboxdrv-Add-initial-sup.patch
  VirtualBox-7.2.8-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

----------(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:  * 0001-7.2-Backported-r173880-Linux-vboxdrv-Add-initial-sup.patch
  * 0001-7.2-Backported-r173857-Additions-Linux-vboxsf-Add-in.patch
  New:- 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
----------(New E)----------

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

Other differences:
------------------
++++++ virtualbox.spec ++++++
--- /var/tmp/diff_new_pack.XLBHTC/_old  2026-06-15 19:41:16.097944240 +0200
+++ /var/tmp/diff_new_pack.XLBHTC/_new  2026-06-15 19:41:16.109944743 +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,6 +15,7 @@
 # Please submit bugfixes or comments via https://bugs.opensuse.org/
 #
 
+
 %if "@BUILD_FLAVOR@" == "kmp"
        # macros for virtualbox-kmp
        %define main_package 0
@@ -68,8 +69,8 @@
 %endif
 
 Name:           virtualbox%{?dash}%{?name_suffix}
-Version:        7.2.6
-%define rversion 7.2.6
+Version:        7.2.8
+%define rversion 7.2.8
 Release:        0
 Summary:        %{package_summary}
 License:        GPL-3.0-only
@@ -132,10 +133,9 @@
 Patch10:        fix_for_leap15.5.patch
 Patch11:        cxx17.patch
 Patch12:        host-source.patch
+Patch13:        0001-7.2-Backported-r173880-Linux-vboxdrv-Add-initial-sup.patch
+Patch14:        0001-7.2-Backported-r173857-Additions-Linux-vboxsf-Add-in.patch
 Patch20:        gentoo-C23.patch
-Patch21:        kernel-6.19.patch
-# Patch for Leap 16.1
-Patch30:        leap16.1-kmp-fixes.patch
 #
 # Common BuildRequires for both virtualbox and virtualbox-kmp
 BuildRequires:  %{kernel_module_package_buildreqs}
@@ -178,10 +178,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

++++++ 0001-7.2-Backported-r173857-Additions-Linux-vboxsf-Add-in.patch ++++++
From: Vadim Galitsyn <[email protected]>
Date: Wed, 6 May 2026 09:33:39 +0000
Subject: 7.2: Backported r173857: Additions: Linux: vboxsf: Add intial support
 for kernel 7.1, bugref:11093.
References: bsc#1268088
Git-repo: https://github.com/VirtualBox/virtualbox
Git-commit: 6df936a242020b486766b8567197139506893fed
Patch-mainline: yes, refs/heads/VBox-7.2

svn:sync-xref-src-repo-rev: r173893
Signed-off-by: Jiri Slaby <[email protected]>
---
 src/VBox/Additions/linux/sharedfolders/regops.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/VBox/Additions/linux/sharedfolders/regops.c 
b/src/VBox/Additions/linux/sharedfolders/regops.c
index 55bd04acede4..dc47f1beb9b8 100644
--- a/src/VBox/Additions/linux/sharedfolders/regops.c
+++ b/src/VBox/Additions/linux/sharedfolders/regops.c
@@ -3257,7 +3257,9 @@ static loff_t vbsf_reg_llseek(struct file *file, loff_t 
off, int whence)
  || (defined(CONFIG_SUSE_KERNEL) && RTLNX_VER_MIN(3,0,101) /** @todo figure 
when exactly */)
 static int vbsf_reg_fsync(struct file *file, loff_t start, loff_t end, int 
datasync)
 {
-# if RTLNX_VER_MIN(3,16,0)
+# if RTLNX_VER_MIN(7,1,0)
+    return simple_fsync_noflush(file, start, end, datasync);
+# elif RTLNX_VER_MIN(3,16,0)
     return __generic_file_fsync(file, start, end, datasync);
 # else
     return generic_file_fsync(file, start, end, datasync);
-- 
2.54.0


++++++ 0001-7.2-Backported-r173880-Linux-vboxdrv-Add-initial-sup.patch ++++++
From: Vadim Galitsyn <[email protected]>
Date: Wed, 6 May 2026 09:34:17 +0000
Subject: 7.2: Backported r173880: Linux: vboxdrv: Add initial support for
 kernel 7.1, bugref:11093.
References: bsc#1268088
Git-repo: https://github.com/VirtualBox/virtualbox
Git-commit: 60849e9d3b7619e50f6edd72133324c238a7c6e1
Patch-mainline: yes, refs/heads/VBox-7.2

svn:sync-xref-src-repo-rev: r173894
Signed-off-by: Jiri Slaby <[email protected]>
---
 src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c 
b/src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c
index a028446eb846..bb96fc8d6f62 100644
--- a/src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c
+++ b/src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c
@@ -80,7 +80,7 @@
 # include <iprt/asm-amd64-x86.h>
 #endif
 
-#if RTLNX_VER_MIN(6,16,0) && defined(CONFIG_MODULES) && 
defined(CONFIG_KVM_GENERIC_HARDWARE_ENABLING) && defined(VBOX_WITH_HOST_VMX)
+#if RTLNX_VER_RANGE(6,16,0, 7,1,0) && defined(CONFIG_MODULES) && 
defined(CONFIG_KVM_GENERIC_HARDWARE_ENABLING) && defined(VBOX_WITH_HOST_VMX)
 # if defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86)
 #  include <linux/kvm_host.h>
 #  define SUPDRV_LINUX_HAS_KVM_HWVIRT_API
-- 
2.54.0


++++++ _scmsync.obsinfo ++++++
--- /var/tmp/diff_new_pack.XLBHTC/_old  2026-06-15 19:41:16.525962175 +0200
+++ /var/tmp/diff_new_pack.XLBHTC/_new  2026-06-15 19:41:16.533962510 +0200
@@ -1,5 +1,5 @@
-mtime: 1776337858
-commit: a1c639e275fb2923a7c707e99fdb41725529e9e41828f95536a4df7ec6074c3e
+mtime: 1781163089
+commit: 348643f0d41bd8556a53fec8291d1a300b81b25410d2f4423190c242b5bc280e
 url: https://src.opensuse.org/jengelh/virtualbox
 revision: master
 

++++++ 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-06-11 09:31:29.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-06-11 09:31:29.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-06-11 09:31:29.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-06-11 09:31:29.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-06-11 09:31:29.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-06-11 09:31:29.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-06-11 09:31:29.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-06-11 09:31:29.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-06-11 09:31:29.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-06-11 09:31:29.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


++++++ 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.XLBHTC/_old  2026-06-15 19:41:16.893977597 +0200
+++ /var/tmp/diff_new_pack.XLBHTC/_new  2026-06-15 19:41:16.897977764 +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.XLBHTC/_old  2026-06-15 19:41:16.925978937 +0200
+++ /var/tmp/diff_new_pack.XLBHTC/_new  2026-06-15 19:41:16.929979106 +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-60-vboxguest.rules ++++++
--- /var/tmp/diff_new_pack.XLBHTC/_old  2026-06-15 19:41:17.189990001 +0200
+++ /var/tmp/diff_new_pack.XLBHTC/_new  2026-06-15 19:41:17.205990671 +0200
@@ -1,4 +1,4 @@
 KERNEL=="vboxguest", NAME="vboxguest", OWNER="root", MODE="0660" 
ENV{ID_INPUT}="1", ENV{ID_INPUT_MOUSE}="1"
-KERNEL=="vboxuser", NAME="vboxuser", OWNER="root", MODE="0660", TAG+="uaccess"
+KERNEL=="vboxuser", NAME="vboxuser", OWNER="root", MODE="0666", TAG+="uaccess"
 ACTION=="add|change", SUBSYSTEM=="drm", KERNEL=="card[0-9]", 
SUBSYSTEMS=="pci", ATTRS{vendor}=="0x15ad", ATTRS{device}=="0x0405", 
TAG+="systemd", ENV{SYSTEMD_WANTS}="vboxclient.service"
 


++++++ 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