[info=4254eefd364fcbe4d183fa7ec73c1d01ef533d78663821c4b237e9d50bc30d10]

OBS-URL: https://build.opensuse.org/package/show/Virtualization/virtualbox?expand=0&rev=757
This commit is contained in:
OBS User unknown 2025-01-03 00:26:49 +00:00 committed by Git OBS Bridge
commit 4302f9f03e
61 changed files with 12265 additions and 0 deletions

25
.gitattributes vendored Normal file
View File

@ -0,0 +1,25 @@
## Default LFS
*.7z filter=lfs diff=lfs merge=lfs -text
*.bsp filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.gem filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.jar filter=lfs diff=lfs merge=lfs -text
*.lz filter=lfs diff=lfs merge=lfs -text
*.lzma filter=lfs diff=lfs merge=lfs -text
*.obscpio filter=lfs diff=lfs merge=lfs -text
*.oxt filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.rpm filter=lfs diff=lfs merge=lfs -text
*.tbz filter=lfs diff=lfs merge=lfs -text
*.tbz2 filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.txz filter=lfs diff=lfs merge=lfs -text
*.whl filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text
## Specific LFS patterns
VirtualBox-7.1.4-patched.tpxz filter=lfs diff=lfs merge=lfs -text

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
.osc

39
README.autostart Normal file
View File

@ -0,0 +1,39 @@
Prerequisites
=============
Users, that want to use the VirtualBox autostart feature, have to be
members of the vboxusers group.
E.g.:
sudo usermod -aG vboxusers USERNAME
Preparation
===========
For each autostart user, add a section in /etc/vbox/autostart.cfg:
USERNAME = {
allow = true
}
Users work
==========
The *first* time a user configures autostart, the command:
VBoxManage setproperty autostartdbpath /etc/vbox/autostart.d
needs to be run.
Note: The autostart options are stored in the /etc/vbox file, and in the
VM itself. If moving a VM, these options may need to be set again.
Prepare a VM to start automatically:
VBoxManage modifyvm <uuid|vmname> --autostart-enabled on
Choose a shut down mode:
VBoxManage modifyvm <uuid|vmname> --autostop-type <disabled|savestate|poweroff|acpishutdown>
Restart the vboxdrv service to start the VMs in question
sudo service vboxdrv restart
To turn off autostart for a VM
VBoxManage modifyvm <uuid|vmname> --autostart-enabled off

128
README.build Normal file
View File

@ -0,0 +1,128 @@
Instructions for building the VirtualBox project
Although it is possible to modify a project at the openSUSE Build System (OBS),
I have found it to be more convenient to use the various osc commands to create a
local copy, edit it on my own computer to fix any problems, and then push the result
to OBS.
You will need a login account at OBS. This account is also used to login at openSUSE's
bugzilla, etc. Those credentials are also used by osc whose package must also be
installed.
A. Create a new sub-project:
1. Branch the package:
The sources for Tumbleweed and the Leap releases have been merges, thus
development work can be concentrates on TW. To branch VB for Tumbleweed,
osc branch Virtualization virtualbox
2. Checkout the package using the "osc co" command listed
B. For the first time, test Build the project:
1. Use "osc build" to build. This step is rather compute intensive and
takes about an hour on my Toshiba laptop with a dual-core Intel Core i7 CPU
with hyper-threading, 12 GB RAM, and an SSD. This build will create all the
VirtualBox packages except the kernel modules. To build them use "osc build -M kmp",
which takes a lot less time. The split was made to reduce the load on OBS.
Now, a kernel change only requires rebuild of the modules, not the entire package.
2. The build results are stored in the /var/tmp/build-root tree. These files
can occupy a lot of disc space, particularly when one builds several flavors.
To keep from running out of space on the / partition, I mount /var/tmp on
a separate partition. In general, about 25 GB is required for each flavor,
thus the disk usabe can approach 100 GB. If you have plenty of headroom in /,
you can skip this separate partition.
3. Special flavors:
When a new kernel is released, there may be several API changes that affect
builds of the kernel modules used by VirtualBox. In Factory, the project that
contains the latest kernels is "Kernel-HEAD-standard". To run a test build with
this kernel, use the command " osc build --alternative-project Kernel:HEAD standard".
Note: The syntax of this step has changed throughout the years. If it fails, ask
how to do it on the openSUSE Factory mailing list at opensuse-factory@opensuse.org.
When switching between kernel projects, use of the "--clean" switch is advised,
otherwise strange "missing library" messages will result.
4. On occasion, there may be breakage in the build when there is an update of
python or Qt. Use the "--alternative-project=<xxx>" switch to force usage of
the revised component. You will need to ask at factory@lists.opensuse.org to
get the proper profect name.
C. Steps to take with a new release:
1. When Oracle releases a new version, you will need to download the new tarball
from https://download.virtualbox.org/virtualbox/. While downloading the file, I
also get the new UserManual.pdf. I use the wget utility, but the browser could
be used.
2. openSUSE makes some changes to the tarballi, which are done with the command
bash ./virtualbox-patch-source.sh <name of tarball just downloaded>
This script unpacks the tar file, removes Windows and Mac host code from the file,
and recreates the tar file with "patched" in its name. Any further modifications
are made by patches that are applied during the build process. Do NOT make any
further changes to the tar file.
3. Edit the "Version" line near the start of virtualbox.spec to select the new version.
4. Use "osc rm <old_tarball-name>" and "osc add <new_tarball_name>" to get the
new file into osc. The local build will work without these changes, but the remote
operations with OBS will fail.
5. VirtualBox at openSUSE is a multi-build package consisting of virtualbox-kmp and
the rest of virtualbox. The former builds in about 20% of the time needed for the
latter, thus it is best to start with the kmp part.
6. The usual problems are as follows:
a. Fixing for kernel API changes are incorporated in a new release, thus our patch
is obsolete.
b. Oracle has revised their code such that one of the patches needed by openSUSE
fails to apply.
c. There are kernel API changes that break the building of the kmp part of VB.
5. When fixing kernel API changes, keep in mind that Oracle will be 2-3 months behind
your needs; however, they will eventually include the necessary changes in their
distribution. If you find something that you do not know how to fix, you could file
a bug tracker at https://www.virtualbox.org/wiki/Bugtracker. Note that previous
reports have gotten the response "We do not support kernel X.Y" - a really helpful
response. To be able to back out your changes, create a new patch file for the
updates. An OBS or osc build will unpack the "patched" tarball and apply the patches.
To help in the creation of such patches, it is my practice to untar the tarball and
use quilt to create the necessary patch, refresh it, and then copy it back into the
main directory. At that point it can be added into the spec file. The utility
wiggle is useful in fixing patches that will not apply.
6. Once the kmp modules, and the main part of VirtualBox are building correctly with
osc, use 'osc status' to indicate the file changes. Anything with a "?" as its status
is a new file that needs to be resolved. If these files are not added to the project,
they will not be uploaded to OBS. You should also remove any files made obsolete
because Oracle caught up with kernel API changes. At this point, the new release
should be tested by adding the directory
/var/tmp/build-root/.../home/abuild/rpmbuild/RPMS/x86_64
to the list of repositories, and updating virtualbox from that new repository. These
packages will not be signed, thus you will get a warning that can be ignored. Be sure
to install virtualbox-host-source, as well as kernel-default-devel and kernel-devel
for the kernel you are running. After loading the updated packages, then run
'sudo /lib/sbin/vboxconfig' to build and install the kernel modules.
7. The new code can now be tested. Usually, the tests will not show any problems;
however, there was a version where Windows 7 failed to boot because of a virtual
BIOS change. With kernel 5.18, there was a major bug where the FPU was not being
saved. The symptoms ranged from application crashes in a Linux VM to a full virtual
machine crash in a Windows 10 VM. The patch for this problem was provided by Oracle,
only a few days before kernel 5.18.1 was released and added to Tumbleweed. Obviously,
both Windows and Linux systems should be tested to ensure that screen resizing,
bidirectional clipboard, and shared folders work with no crashes.
8. Once the new release is tested and 'osc status' is clean, it is time to update the
changes file using the 'osc vc' command. I copy and paste the changes listed in
the Oracle release notes to the new entry and add references to any bugzilla entries.
In this section, it is essential that you list files that are deleted or added. It is
not necessary to mention the tarball change - it is implied.
9. Now it is time to send the new material to OBS using the 'osc ci' command. The
material in the new section usually appears as the commit message. If not, copy it
from the .changes file. Committing new material will trigger builds at OBS. The
status of them can be seen with the 'osc r' command. Once the builds are successful,
they should be submitted using the 'osc sr' for Tumbleweed. One peculiarity of the
factory releases is that they require a review, even for your own changes. A few
minutes after an osc sr command, you will need to log into OBS and check your
tasks for “Outgoing Requests”. From there, you will be able to submit a review.
10. After VirtualBox is completed for Tumbleweed, and building OK on the various Leap
versions at OBS, you can branch the various Leap versions with the command
osc branch openSUSE:Leap:15.X:Update virtualbox
It is not necessary to check out the code as creating the directory that will
be used. If it already exists on your system, delete all files in that directory.
Then copy all the files from the Tumbleweed source into the Leap directory. To
syncronize your system wuth OBS, do an "osc update". At this point, you will
need to repeat the "osc rm" and "osc add" steps to update the version of the
tarball. After that, make sure that "osc status" is clean. At that point, update
the package at OBS with "osc ci". When "osc r" shows that the build has completed,
use "osc mr" to submit it to the project. For the update projects, no review by
the maintainer is requied.
11. When a new Leap release is in a pre-release state, updated VB releases can be
sent to that project from OBS.

3
UserManual.pdf Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:cd25f171445f6037e69d3ed1e194aebfd08006c8dd343d3481f6f65526992803
size 4600713

View File

@ -0,0 +1,23 @@
Index: VirtualBox-7.0.14/src/VBox/Additions/x11/Installer/98vboxadd-xclient
===================================================================
--- VirtualBox-7.0.14.orig/src/VBox/Additions/x11/Installer/98vboxadd-xclient
+++ VirtualBox-7.0.14/src/VBox/Additions/x11/Installer/98vboxadd-xclient
@@ -31,15 +31,9 @@ for i in $HOME/.vboxclient-*.pid; do
test -w $i || rm -f $i
done
-if ! test -c /dev/vboxguest 2>/dev/null; then
- # Do not start if the kernel module is not present.
- # Execute notify-send in the back-ground to avoid racing with sddm,
- # as notify-send may wait for sddm to start while it waits for us to exit.
- notify-send "VBoxClient: the VirtualBox kernel service is not running. Exiting." &
-elif test -z "${SSH_CONNECTION}"; then
- # This script can also be triggered by a connection over SSH, which is not
- # what we had in mind, so we do not start VBoxClient in that case. We do
- # not use "exit" here as this script is "source"d, not executed.
+# Do not start if the kernel module is not present; or if this script is
+# triggered by a connection over SSH.
+if [ -c /dev/vboxguest -a -z "${SSH_CONNECTION}" ]; then
/usr/bin/VBoxClient --clipboard
/usr/bin/VBoxClient --checkhostversion
/usr/bin/VBoxClient --seamless

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:bd2fe03a82514f7c7e2673cbdcd8496ace2bee5925c54dca92f1a6d74fdc09dc
size 150630796

21
VirtualBox.appdata.xml Normal file
View File

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<component type="desktop">
<id>virtualbox.desktop</id>
<metadata_license>CC0-1.0</metadata_license>
<project_license>GPL-2.0-or-later</project_license>
<name>VirtualBox</name>
<summary>Virtual Machine client</summary>
<description>
<p>
VirtualBox is a powerful x86 and AMD64/Intel64 virtualization product for enterprise as well as home use.
</p>
</description>
<url type="homepage">https://www.virtualbox.org/</url>
<url type="bugtracker">https://www.virtualbox.org/wiki/Bugtracker</url>
<url type="help">https://www.virtualbox.org/manual</url>
<screenshots>
<screenshot type="default">
<image>https://www.virtualbox.org/attachment/wiki/Screenshots/OpenSuse13.2_on_Windows_7.png</image>
</screenshot>
</screenshots>
</component>

11
_constraints Normal file
View File

@ -0,0 +1,11 @@
<?xml version="1.0"?>
<constraints>
<hardware>
<physicalmemory>
<size unit="M">8000</size>
</physicalmemory>
<disk>
<size unit="G">9</size>
</disk>
</hardware>
</constraints>

3
_multibuild Normal file
View File

@ -0,0 +1,3 @@
<multibuild>
<flavor>kmp</flavor>
</multibuild>

4
_scmsync.obsinfo Normal file
View File

@ -0,0 +1,4 @@
mtime: 1735863933
commit: 4254eefd364fcbe4d183fa7ec73c1d01ef533d78663821c4b237e9d50bc30d10
url: https://src.opensuse.org/jengelh/virtualbox
revision: master

5
_service Normal file
View File

@ -0,0 +1,5 @@
<services>
<service name="refresh_patches" mode="disabled">
<param name="changesgenerate">enable</param>
</service>
</services>

3
build.specials.obscpio Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:516d85b66b78675cc0aa0e29b35710dd791fdaa4d4d5c9596b4a3b7ae3d01e48
size 256

108
cxx17.patch Normal file
View File

@ -0,0 +1,108 @@
From: Jan Engelhardt <ej@inai.de>
Date: 2024-09-20 22:48:58.758026690 +0200
The code uses <filesystem>, so ensure we always use -std=c++17 at the
very least.
Prior to C++17, noexcept cannot be part of a type alias, and so is
not part of the function signature, and so is not part of the ABI.
In C++17, noexcept is significant. There is a compile error because
the FNCONSUMER alias as defined in a .h file does not match the
function body in a .cpp file.
The def file is also wrong, but no one at virtualbox.org noticed for
some reason, even though the def mismatch also caused a link/build
failure in its own right.
To resolve the mismatch between .cpp/.h, the function signature is
augmented by RT_NOEXCEPT, based upon the function head being the
authoritative source as to whether something was meant to be noexcept
or not.
In turn, adding RT_NOEXCEPT causes a change in the ABI of VBoxRT.so.
The closed-source VirtualBox extension pack does not expect that and
is unable to load [LD_BIND_NOW=1]. To resolve _that_, we add extra
symbol aliases.
---
Config.kmk | 3 +++
include/iprt/cpp/restclient.h | 12 ++++++++++--
src/VBox/Runtime/VBox/VBoxRTImp-gcc.def | 2 +-
src/VBox/Runtime/common/rest/rest-binary.cpp | 9 +++++++++
4 files changed, 23 insertions(+), 3 deletions(-)
Index: VirtualBox-7.1.0/Config.kmk
===================================================================
--- VirtualBox-7.1.0.orig/Config.kmk
+++ VirtualBox-7.1.0/Config.kmk
@@ -3093,6 +3093,9 @@ ifeq ($(KBUILD_TARGET),darwin)
endif
endif
endif
+ifndef VBOX_GCC_std
+ VBOX_GCC_std := -std=c++17
+endif
#
# Check for incompatible rpath combinations.
Index: VirtualBox-7.1.0/include/iprt/cpp/restclient.h
===================================================================
--- VirtualBox-7.1.0.orig/include/iprt/cpp/restclient.h
+++ VirtualBox-7.1.0/include/iprt/cpp/restclient.h
@@ -130,7 +130,11 @@ public:
* is the sum of the previously returned @a *pcbActual values.
*/
typedef DECLCALLBACKTYPE(int, FNPRODUCER,(RTCRestBinaryParameter *a_pThis, void *a_pvDst, size_t a_cbDst,
- uint64_t a_offContent, size_t *a_pcbActual)) /*RT_NOEXCEPT*/;
+ uint64_t a_offContent, size_t *a_pcbActual))
+#if defined(__cplusplus) && __cplusplus >= 201700L
+RT_NOEXCEPT
+#endif
+;
/** Pointer to a byte producer callback. */
typedef FNPRODUCER *PFNPRODUCER;
@@ -268,7 +272,11 @@ public:
* is the sum of the previous @a a_cbSrc values.
*/
typedef DECLCALLBACKTYPE(int, FNCONSUMER,(RTCRestBinaryResponse *a_pThis, const void *a_pvSrc, size_t a_cbSrc,
- uint32_t a_uHttpStatus, uint64_t a_offContent, uint64_t a_cbContent)) /*RT_NOEXCEPT*/;
+ uint32_t a_uHttpStatus, uint64_t a_offContent, uint64_t a_cbContent))
+#if defined(__cplusplus) && __cplusplus >= 201700L
+RT_NOEXCEPT
+#endif
+;
/** Pointer to a byte consumer callback. */
typedef FNCONSUMER *PFNCONSUMER;
Index: VirtualBox-7.1.0/src/VBox/Runtime/VBox/VBoxRTImp-gcc.def
===================================================================
--- VirtualBox-7.1.0.orig/src/VBox/Runtime/VBox/VBoxRTImp-gcc.def
+++ VirtualBox-7.1.0/src/VBox/Runtime/VBox/VBoxRTImp-gcc.def
@@ -379,7 +379,7 @@ EXPORTS
_ZN22RTCRestBinaryParameter16xmitHttpCallbackEP14RTHTTPINTERNALPvmyPmS2_ ; int64=llong
_ZN22RTCRestBinaryParameter19setProducerCallbackEPFiPS_PvmmPmES1_m ; before-noexcept int64=long
_ZN22RTCRestBinaryParameter19setProducerCallbackEPFiPS_PvmyPmES1_y ; before-noexcept int64=llong
- _ZN22RTCRestBinaryParameter19setProducerCallbackEPDoFiPS_PvmyPmES1_m ; after-noexcept int64=long
+ _ZN22RTCRestBinaryParameter19setProducerCallbackEPDoFiPS_PvmmPmES1_m ; after-noexcept int64=long
_ZN22RTCRestBinaryParameter19setProducerCallbackEPDoFiPS_PvmyPmES1_y ; after-noexcept int64=llong
_ZN22RTCRestBinaryParameterC1Ev
_ZN22RTCRestBinaryParameterC2Ev
Index: VirtualBox-7.1.0/src/VBox/Runtime/common/rest/rest-binary.cpp
===================================================================
--- VirtualBox-7.1.0.orig/src/VBox/Runtime/common/rest/rest-binary.cpp
+++ VirtualBox-7.1.0/src/VBox/Runtime/common/rest/rest-binary.cpp
@@ -706,3 +706,12 @@ void RTCRestBinaryResponse::receiveCompl
AssertRC(rc);
}
+// extpack was built with wrong -std=, add a redirect
+extern "C" void DECLEXPORT_CLASS __attribute__((weak,
+alias("_ZN21RTCRestBinaryResponse19setConsumerCallbackEPDoFiPS_PKvmjmmEPv"))) // T symbol that exists
+ _ZN21RTCRestBinaryResponse19setConsumerCallbackEPFiPS_PKvmjmmEPv( // W symbol to make
+ RTCRestBinaryResponse::PFNCONSUMER, void *);
+extern "C" void DECLEXPORT_CLASS __attribute__((weak,
+alias("_ZN22RTCRestBinaryParameter19setProducerCallbackEPDoFiPS_PvmmPmES1_m"))) // T
+ _ZN22RTCRestBinaryParameter19setProducerCallbackEPFiPS_PvmmPmES1_m( // W
+ RTCRestBinaryParameter::PFNPRODUCER, void *, uint64_t);

View File

@ -0,0 +1,24 @@
Index: VirtualBox-7.0.14/src/VBox/Frontends/VirtualBox/src/widgets/UIPopupBox.cpp
===================================================================
--- VirtualBox-7.0.14.orig/src/VBox/Frontends/VirtualBox/src/widgets/UIPopupBox.cpp
+++ VirtualBox-7.0.14/src/VBox/Frontends/VirtualBox/src/widgets/UIPopupBox.cpp
@@ -28,6 +28,7 @@
/* Qt includes: */
#include <QApplication>
#include <QLabel>
+#include <QPainterPath>
#include <QPaintEvent>
#include <QStyle>
#include <QVBoxLayout>
Index: VirtualBox-7.0.14/src/VBox/Frontends/VirtualBox/src/widgets/UIPopupBox.h
===================================================================
--- VirtualBox-7.0.14.orig/src/VBox/Frontends/VirtualBox/src/widgets/UIPopupBox.h
+++ VirtualBox-7.0.14/src/VBox/Frontends/VirtualBox/src/widgets/UIPopupBox.h
@@ -47,7 +47,6 @@ class QIcon;
class QLabel;
class QMouseEvent;
class QObject;
-class QPainterPath;
class QPaintEvent;
class QResizeEvent;
class QString;

View File

@ -0,0 +1,28 @@
Index: VirtualBox-7.0.14/src/VBox/HostDrivers/Support/SUPDrvGip.cpp
===================================================================
--- VirtualBox-7.0.14.orig/src/VBox/HostDrivers/Support/SUPDrvGip.cpp
+++ VirtualBox-7.0.14/src/VBox/HostDrivers/Support/SUPDrvGip.cpp
@@ -4537,9 +4537,11 @@ static int supdrvTscDeltaThreadWait(PSUP
*/
static void supdrvTscDeltaThreadStartMeasurement(PSUPDRVDEVEXT pDevExt, bool fForceAll)
{
+ if (!pDevExt || ! pDevExt->hTscDeltaSpinlock)
+ return;
+ RTSpinlockAcquire(pDevExt->hTscDeltaSpinlock);
if (pDevExt->hTscDeltaThread != NIL_RTTHREAD)
{
- RTSpinlockAcquire(pDevExt->hTscDeltaSpinlock);
if ( pDevExt->enmTscDeltaThreadState == kTscDeltaThreadState_Listening
|| pDevExt->enmTscDeltaThreadState == kTscDeltaThreadState_Measuring)
{
@@ -4550,9 +4552,9 @@ static void supdrvTscDeltaThreadStartMea
else if ( pDevExt->enmTscDeltaThreadState == kTscDeltaThreadState_WaitAndMeasure
&& fForceAll)
pDevExt->fTscThreadRecomputeAllDeltas = true;
- RTSpinlockRelease(pDevExt->hTscDeltaSpinlock);
RTThreadUserSignal(pDevExt->hTscDeltaThread);
}
+ RTSpinlockRelease(pDevExt->hTscDeltaSpinlock);
}

View File

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

13
fix_for_leap15.5.patch Normal file
View File

@ -0,0 +1,13 @@
Index: VirtualBox-7.0.20/src/VBox/Frontends/VBoxSDL/VBoxSDL.cpp
===================================================================
--- VirtualBox-7.0.20.orig/src/VBox/Frontends/VBoxSDL/VBoxSDL.cpp
+++ VirtualBox-7.0.20/src/VBox/Frontends/VBoxSDL/VBoxSDL.cpp
@@ -710,7 +710,7 @@ static const char *keyModToStr(unsigned
RT_CASE_RET_STR(KMOD_NUM);
RT_CASE_RET_STR(KMOD_CAPS);
RT_CASE_RET_STR(KMOD_MODE);
- RT_CASE_RET_STR(KMOD_SCROLL);
+ RT_CASE_RET_STR(KMOD_RESERVED);
default:
break;
}

92
fix_sdl_build.patch Normal file
View File

@ -0,0 +1,92 @@
Index: VirtualBox-7.0.20/configure
===================================================================
--- VirtualBox-7.0.20.orig/configure
+++ VirtualBox-7.0.20/configure
@@ -1186,21 +1186,19 @@ check_sdl()
fail
fi
else
- if which_wrapper sdl-config > /dev/null; then
- FLGSDL=`sdl-config --cflags`
+ FLGSDL="-I/usr/include/SDL2 -D_GNU_SOURCE=1 -D_REENTRANT"
INCSDL=`strip_I "$FLGSDL"`
- LIBSDL=`sdl-config --libs`
+ LIBSDL="-L/usr/lib64 -LSDL2"
LIBSDLMAIN="-lSDLmain"
FLDSDL=
foundsdl=1
- fi
fi
[ "$OS" = "linux" -o "$OS" = "darwin" -o "$OS" = "solaris" ] && LIBSDLMAIN=""
if [ -n "$foundsdl" ]; then
cat > $ODIR.tmp_src.cc << EOF
#include <cstdio>
#include <SDL.h>
-#include <SDL_main.h>
+//#include <SDL_main.h>
#undef main
extern "C" int main(int argc, char** argv)
{
@@ -1216,7 +1214,7 @@ extern "C" int main(int argc, char** arg
}
EOF
[ -n "$INCSDL" ] && I_INCSDL=`prefix_I "$INCSDL"`
- if test_compile "$LIBSDL $LIBSDLMAIN $I_INCSDL $FLDSDL" SDL SDL; then
+ if test_compile "$LIBSDL $LIBSDLMAIN $I_INCSDL $FLDSDL" SDL2 SDL2; then
if test_execute; then
cnf_append "LIB_SDK_LIBSDL_SDL" "`strip_l "$LIBSDL"`"
cnf_append "SDK_LIBSDL_LIBPATH" "`strip_L "$LIBSDL"`"
@@ -3010,11 +3008,8 @@ if [ $ONLY_ADDITIONS -eq 0 ]; then
[ $WITH_LIBLZMA -eq 1 ] && check_liblzma
[ "$OS" != "darwin" ] && check_png
[ $OSE -eq 0 -a "$OS" = "linux" ] && check_pam
- if [ $WITH_SDL -eq 1 ]; then
- check_sdl
- else
- cnf_append "VBOX_WITH_VBOXSDL" ""
- fi
+ check_sdl
+ cnf_append "VBOX_WITH_VBOXSDL" "1"
[ $WITH_SDL_TTF -eq 1 -a $OSE -eq 0 ] && check_sdl_ttf
[ $WITH_X11 -eq 1 ] && check_x
# TODO check for xcomposite-dev (X11/extensions/Xcomposite.h, additions only)
Index: VirtualBox-7.0.20/src/VBox/Frontends/VBoxSDL/Makefile.kmk
===================================================================
--- VirtualBox-7.0.20.orig/src/VBox/Frontends/VBoxSDL/Makefile.kmk
+++ VirtualBox-7.0.20/src/VBox/Frontends/VBoxSDL/Makefile.kmk
@@ -51,7 +51,7 @@ if !defined(VBOX_WITH_HARDENING) || "$(K
PROGRAMS += VBoxSDL
endif
VBoxSDL_TEMPLATE := $(if $(VBOX_WITH_HARDENING),VBoxMainClientDll,VBoxMainClientExe)
- VBoxSDL_SDKS = LIBSDL2
+ VBoxSDL_SDKS = LIBSDL
VBoxSDL_SOURCES = \
VBoxSDL.cpp \
Framebuffer.cpp \
@@ -81,7 +81,7 @@ if !defined(VBOX_WITH_HARDENING) || "$(K
endif
ifn1of ($(KBUILD_TARGET), solaris) # Probably wrong with SDL2
VBoxSDL_LIBS = \
- $(LIB_SDK_LIBSDL2_SDLMAIN)
+ $(LIB_SDK_LIBSDL_SDLMAIN)
endif
if1of ($(KBUILD_TARGET), freebsd linux netbsd openbsd solaris) # X11
VBoxSDL_LIBS += \
@@ -121,7 +121,7 @@ if !defined(VBOX_WITH_HARDENING) || "$(K
if 0
PROGRAMS += tstSDL
tstSDL_TEMPLATE = VBoxR3TstExe
- tstSDL_SDKS = LIBSDL2
+ tstSDL_SDKS = LIBSDL
tstSDL_INST = $(INST_TESTCASE)
tstSDL_SOURCES = \
VBoxSDLTest.cpp
@@ -138,7 +138,7 @@ if !defined(VBOX_WITH_HARDENING) || "$(K
$(LIB_RUNTIME)
ifn1of ($(KBUILD_TARGET), solaris)
tstSDL_LIBS += \
- $(LIB_SDK_LIBSDL2_SDLMAIN)
+ $(LIB_SDK_LIBSDL_SDLMAIN)
endif
ifdef VBOX_OPENGL

7
fix_usb_rules.sh Normal file
View File

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

18
fixes_for_gcc13.patch Normal file
View File

@ -0,0 +1,18 @@
---
src/VBox/Additions/x11/x11include/XFree86-4.3/Xserver/misc.h | 3 +++
1 file changed, 3 insertions(+)
Index: VirtualBox-7.1.0/src/VBox/Additions/x11/x11include/XFree86-4.3/Xserver/misc.h
===================================================================
--- VirtualBox-7.1.0.orig/src/VBox/Additions/x11/x11include/XFree86-4.3/Xserver/misc.h
+++ VirtualBox-7.1.0/src/VBox/Additions/x11/x11include/XFree86-4.3/Xserver/misc.h
@@ -66,6 +66,9 @@ TORTIOUS ACTION, ARISING OUT OF OR IN CO
OF THIS SOFTWARE.
******************************************************************/
+
+#define __STDC_HOSTED__ 1
+
/* $Xorg: misc.h,v 1.5 2001/02/09 02:05:15 xorgcvs Exp $ */
#ifndef MISC_H
#define MISC_H 1

110
fixes_for_leap15.6.patch Normal file
View File

@ -0,0 +1,110 @@
Index: VirtualBox-7.0.14/src/VBox/Runtime/r0drv/linux/memobj-r0drv-linux.c
===================================================================
--- VirtualBox-7.0.14.orig/src/VBox/Runtime/r0drv/linux/memobj-r0drv-linux.c
+++ VirtualBox-7.0.14/src/VBox/Runtime/r0drv/linux/memobj-r0drv-linux.c
@@ -1292,9 +1292,6 @@ DECLHIDDEN(int) rtR0MemObjNativeLockUser
IPRT_LINUX_SAVE_EFL_AC();
const int cPages = cb >> PAGE_SHIFT;
struct task_struct *pTask = rtR0ProcessToLinuxTask(R0Process);
-# if GET_USER_PAGES_API < KERNEL_VERSION(6, 5, 0)
- struct vm_area_struct **papVMAs;
-# endif
PRTR0MEMOBJLNX pMemLnx;
int rc = VERR_NO_MEMORY;
int const fWrite = fAccess & RTMEM_PROT_WRITE ? 1 : 0;
@@ -1318,11 +1315,6 @@ DECLHIDDEN(int) rtR0MemObjNativeLockUser
return VERR_NO_MEMORY;
}
-# if GET_USER_PAGES_API < KERNEL_VERSION(6, 5, 0)
- papVMAs = (struct vm_area_struct **)RTMemAlloc(sizeof(*papVMAs) * cPages);
- if (papVMAs)
- {
-# endif
LNX_MM_DOWN_READ(pTask->mm);
/*
@@ -1342,9 +1334,6 @@ DECLHIDDEN(int) rtR0MemObjNativeLockUser
fWrite, /* force write access. */
# endif
&pMemLnx->apPages[0] /* Page array. */
-# if GET_USER_PAGES_API < KERNEL_VERSION(6, 5, 0) && !RTLNX_SUSE_MAJ_PREREQ(15, 6)
- , papVMAs /* vmas */
-# endif
);
/*
* Actually this should not happen at the moment as call this function
@@ -1367,12 +1356,7 @@ DECLHIDDEN(int) rtR0MemObjNativeLockUser
fWrite, /* force write access. */
# endif
&pMemLnx->apPages[0] /* Page array. */
-# if GET_USER_PAGES_API < KERNEL_VERSION(6, 5, 0)
- , papVMAs /* vmas */
-# endif
-# if GET_USER_PAGES_API >= KERNEL_VERSION(4, 10, 0)
- , NULL /* locked */
-# endif
+ , NULL, NULL
);
#else /* GET_USER_PAGES_API < KERNEL_VERSION(4, 6, 0) */
rc = get_user_pages(pTask, /* Task for fault accounting. */
@@ -1389,9 +1373,6 @@ DECLHIDDEN(int) rtR0MemObjNativeLockUser
fWrite, /* force write access. */
# endif
&pMemLnx->apPages[0] /* Page array. */
-# if GET_USER_PAGES_API < KERNEL_VERSION(6, 5, 0) && && !defined(OPENSUSE_156)
- , papVMAs /* vmas */
-# endif
);
#endif /* GET_USER_PAGES_API < KERNEL_VERSION(4, 6, 0) */
if (rc == cPages)
@@ -1415,21 +1396,10 @@ DECLHIDDEN(int) rtR0MemObjNativeLockUser
while (rc-- > 0)
{
flush_dcache_page(pMemLnx->apPages[rc]);
-# if GET_USER_PAGES_API < KERNEL_VERSION(6, 5, 0)
-# if RTLNX_VER_MIN(6,3,0)
- vm_flags_set(papVMAs[rc], VM_DONTCOPY | VM_LOCKED);
-# else
- papVMAs[rc]->vm_flags |= VM_DONTCOPY | VM_LOCKED;
-# endif
-# endif
}
LNX_MM_UP_READ(pTask->mm);
-# if GET_USER_PAGES_API < KERNEL_VERSION(6, 5, 0)
- RTMemFree(papVMAs);
-# endif
-
pMemLnx->Core.u.Lock.R0Process = R0Process;
pMemLnx->cPages = cPages;
Assert(!pMemLnx->fMappedToRing0);
@@ -1457,11 +1427,6 @@ DECLHIDDEN(int) rtR0MemObjNativeLockUser
rc = VERR_LOCK_FAILED;
-# if GET_USER_PAGES_API < KERNEL_VERSION(6, 5, 0)
- RTMemFree(papVMAs);
- }
-# endif
-
rtR0MemObjDelete(&pMemLnx->Core);
IPRT_LINUX_RESTORE_EFL_AC();
return rc;
Index: VirtualBox-7.0.14/src/VBox/Additions/linux/sharedfolders/regops.c
===================================================================
--- VirtualBox-7.0.14.orig/src/VBox/Additions/linux/sharedfolders/regops.c
+++ VirtualBox-7.0.14/src/VBox/Additions/linux/sharedfolders/regops.c
@@ -270,11 +270,7 @@ static ssize_t vbsf_iov_iter_get_pages(s
size_t cPagesLocked;
down_read(&pTask->mm->mmap_sem);
-#if defined(OPENSUSE_156)
cPagesLocked = get_user_pages(pTask, pTask->mm, uPtrFrom, cPages);
-#else
- cPagesLocked = get_user_pages(pTask, pTask->mm, uPtrFrom, cPages, iter->v_write, 1 /*force*/, papPages, NULL);
-#endif
up_read(&pTask->mm->mmap_sem);
if (cPagesLocked == cPages) {
size_t cbRet = (cPages << PAGE_SHIFT) - offPg0;

107
fixes_for_vboxconfig.patch Normal file
View File

@ -0,0 +1,107 @@
Index: VirtualBox-7.0.14/src/VBox/Frontends/VirtualBox/nls/VirtualBox_lt.ts
===================================================================
--- VirtualBox-7.0.14.orig/src/VBox/Frontends/VirtualBox/nls/VirtualBox_lt.ts
+++ VirtualBox-7.0.14/src/VBox/Frontends/VirtualBox/nls/VirtualBox_lt.ts
@@ -92,19 +92,19 @@
<translation type="vanished">VirtualBox Linux branduolio modulis (vboxdrv) arba nėra įkeltas, arba nepakanka leidimų dirbti su /dev/vboxdrv. Iš naujo įdiekite branduolio modulį root teisėmis įvykdydami &lt;br/&gt;&lt;br/&gt;&lt;font color=blue&gt;&apos;/sbin/rcvboxdrv setup&apos;&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;. Jei įmanoma pirma turite įsidiegti DKMS paketą. Šis paketas seka Linux branduolio pakeitimus ir, jei reikia, perkompiliuoja vboxdrv branduolio modulį.</translation>
</message>
<message>
- <source>The VirtualBox Linux kernel driver (vboxdrv) is either not loaded or there is a permission problem with /dev/vboxdrv. Please reinstall the kernel module by executing&lt;br/&gt;&lt;br/&gt; &lt;font color=blue&gt;&apos;/sbin/vboxconfig&apos;&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;as root.</source>
- <translation type="vanished">VirtualBox Linux branduolio tvarkyklė (vboxdrv) neįkelta arba /dev/vboxdrv turi bėdų su leidimais. Iš naujo įdiekite branduolio modulį įvykdydami &lt;br/&gt;&lt;br/&gt; &lt;font color=blue&gt;/sbin/vboxconfig&lt;/font&gt;&lt;br/&gt;&lt;br/&gt; administratoriaus (root) teisėmis.</translation>
+ <source>The VirtualBox Linux kernel driver (vboxdrv) is either not loaded or there is a permission problem with /dev/vboxdrv. Please reinstall the kernel module by executing&lt;br/&gt;&lt;br/&gt; &lt;font color=blue&gt;&apos;/usr/sbin/vboxconfig&apos;&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;as root.</source>
+ <translation type="vanished">VirtualBox Linux branduolio tvarkyklė (vboxdrv) neįkelta arba /dev/vboxdrv turi bėdų su leidimais. Iš naujo įdiekite branduolio modulį įvykdydami &lt;br/&gt;&lt;br/&gt; &lt;font color=blue&gt;/usr/sbin/vboxconfig&lt;/font&gt;&lt;br/&gt;&lt;br/&gt; administratoriaus (root) teisėmis.</translation>
</message>
<message>
- <source>The VirtualBox kernel modules do not match this version of VirtualBox. The installation of VirtualBox was apparently not successful. Executing&lt;br/&gt;&lt;br/&gt; &lt;font color=blue&gt;&apos;/sbin/vboxconfig&apos;&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;may correct this. Make sure that you do not mix the OSE version and the PUEL version of VirtualBox.</source>
- <translation type="vanished">VirtualBox branduolio modulis neatitinka VirtualBox versijos. Panašu, kad VirtualBox diegimas nebuvo sėkmingas. Pataisyti gali pavykti įvykdžius&lt;br/&gt;&lt;br/&gt; &lt;font color=blue&gt;/sbin/vboxconfig&lt;/font&gt;&lt;br/&gt;&lt;br/&gt; Įsitikinkite, ar nemaišote VirtualBox OSE ir PUEL versijų.</translation>
+ <source>The VirtualBox kernel modules do not match this version of VirtualBox. The installation of VirtualBox was apparently not successful. Executing&lt;br/&gt;&lt;br/&gt; &lt;font color=blue&gt;&apos;/usr/sbin/vboxconfig&apos;&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;may correct this. Make sure that you do not mix the OSE version and the PUEL version of VirtualBox.</source>
+ <translation type="vanished">VirtualBox branduolio modulis neatitinka VirtualBox versijos. Panašu, kad VirtualBox diegimas nebuvo sėkmingas. Pataisyti gali pavykti įvykdžius&lt;br/&gt;&lt;br/&gt; &lt;font color=blue&gt;/usr/sbin/vboxconfig&lt;/font&gt;&lt;br/&gt;&lt;br/&gt; Įsitikinkite, ar nemaišote VirtualBox OSE ir PUEL versijų.</translation>
</message>
<message>
- <source>The VirtualBox Linux kernel driver is either not loaded or not set up correctly. Please try setting it up again by executing&lt;br/&gt;&lt;br/&gt; &lt;font color=blue&gt;&apos;/sbin/vboxconfig&apos;&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;as root.&lt;br/&gt;&lt;br/&gt;If your system has EFI Secure Boot enabled you may also need to sign the kernel modules (vboxdrv, vboxnetflt, vboxnetadp, vboxpci) before you can load them. Please see your Linux system&apos;s documentation for more information.</source>
+ <source>The VirtualBox Linux kernel driver is either not loaded or not set up correctly. Please try setting it up again by executing&lt;br/&gt;&lt;br/&gt; &lt;font color=blue&gt;&apos;/usr/sbin/vboxconfig&apos;&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;as root.&lt;br/&gt;&lt;br/&gt;If your system has EFI Secure Boot enabled you may also need to sign the kernel modules (vboxdrv, vboxnetflt, vboxnetadp, vboxpci) before you can load them. Please see your Linux system&apos;s documentation for more information.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>The VirtualBox kernel modules do not match this version of VirtualBox. The installation of VirtualBox was apparently not successful. Executing&lt;br/&gt;&lt;br/&gt; &lt;font color=blue&gt;&apos;/sbin/vboxconfig&apos;&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;may correct this. Make sure that you are not mixing builds of VirtualBox from different sources.</source>
+ <source>The VirtualBox kernel modules do not match this version of VirtualBox. The installation of VirtualBox was apparently not successful. Executing&lt;br/&gt;&lt;br/&gt; &lt;font color=blue&gt;&apos;/usr/sbin/vboxconfig&apos;&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;may correct this. Make sure that you are not mixing builds of VirtualBox from different sources.</source>
<translation type="unfinished"></translation>
</message>
</context>
Index: VirtualBox-7.0.14/src/VBox/Frontends/VirtualBox/nls/VirtualBox_tr.ts
===================================================================
--- VirtualBox-7.0.14.orig/src/VBox/Frontends/VirtualBox/nls/VirtualBox_tr.ts
+++ VirtualBox-7.0.14/src/VBox/Frontends/VirtualBox/nls/VirtualBox_tr.ts
@@ -148,20 +148,20 @@
<translation type="obsolete">Kare Boyutu: %1x%2, Kare Oranı: %3fps, Bit Oranı: %4kbps</translation>
</message>
<message>
- <source>The VirtualBox Linux kernel driver (vboxdrv) is either not loaded or there is a permission problem with /dev/vboxdrv. Please reinstall the kernel module by executing&lt;br/&gt;&lt;br/&gt; &lt;font color=blue&gt;&apos;/sbin/vboxconfig&apos;&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;as root.</source>
- <translation type="vanished">VirtualBox Linux çekirdek sürücüsü (vboxdrv) ya yüklenmedi ya da /dev/vboxdrv ile ilgili izin sorunu var. Lütfen root kullanıcısı olarak &lt;br/&gt;&lt;br/&gt; &lt;font color=blue&gt;&apos;/sbin/vboxconfig&apos;&lt;/font&gt;&lt;br/&gt;&lt;br/&gt; dosyasını çalıştırarak çekirdek modülünü yeniden yükleyin.</translation>
+ <source>The VirtualBox Linux kernel driver (vboxdrv) is either not loaded or there is a permission problem with /dev/vboxdrv. Please reinstall the kernel module by executing&lt;br/&gt;&lt;br/&gt; &lt;font color=blue&gt;&apos;/usr/sbin/vboxconfig&apos;&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;as root.</source>
+ <translation type="vanished">VirtualBox Linux çekirdek sürücüsü (vboxdrv) ya yüklenmedi ya da /dev/vboxdrv ile ilgili izin sorunu var. Lütfen root kullanıcısı olarak &lt;br/&gt;&lt;br/&gt; &lt;font color=blue&gt;&apos;/usr/sbin/vboxconfig&apos;&lt;/font&gt;&lt;br/&gt;&lt;br/&gt; dosyasını çalıştırarak çekirdek modülünü yeniden yükleyin.</translation>
</message>
<message>
- <source>The VirtualBox kernel modules do not match this version of VirtualBox. The installation of VirtualBox was apparently not successful. Executing&lt;br/&gt;&lt;br/&gt; &lt;font color=blue&gt;&apos;/sbin/vboxconfig&apos;&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;may correct this. Make sure that you do not mix the OSE version and the PUEL version of VirtualBox.</source>
- <translation type="vanished">VirtualBox çekirdek modülleri VirtualBox&apos;ın bu sürümüyle uyuşmuyor. VirtualBox&apos;ın kurulumu görünüşe göre başarılı olmadı. &lt;br/&gt;&lt;br/&gt; &lt;font color=blue&gt;&apos;/sbin/vboxconfig&apos;&lt;/font&gt;&lt;br/&gt;&lt;br/&gt; dosyasını çalıştırmak bunu düzeltebilir. VirtualBox&apos;ın OSE ve PUEL sürümlerini karıştırmadığınızdan emin olun.</translation>
+ <source>The VirtualBox kernel modules do not match this version of VirtualBox. The installation of VirtualBox was apparently not successful. Executing&lt;br/&gt;&lt;br/&gt; &lt;font color=blue&gt;&apos;/usr/sbin/vboxconfig&apos;&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;may correct this. Make sure that you do not mix the OSE version and the PUEL version of VirtualBox.</source>
+ <translation type="vanished">VirtualBox çekirdek modülleri VirtualBox&apos;ın bu sürümüyle uyuşmuyor. VirtualBox&apos;ın kurulumu görünüşe göre başarılı olmadı. &lt;br/&gt;&lt;br/&gt; &lt;font color=blue&gt;&apos;/usr/sbin/vboxconfig&apos;&lt;/font&gt;&lt;br/&gt;&lt;br/&gt; dosyasını çalıştırmak bunu düzeltebilir. VirtualBox&apos;ın OSE ve PUEL sürümlerini karıştırmadığınızdan emin olun.</translation>
</message>
<message>
- <source>The VirtualBox Linux kernel driver is either not loaded or not set up correctly. Please try setting it up again by executing&lt;br/&gt;&lt;br/&gt; &lt;font color=blue&gt;&apos;/sbin/vboxconfig&apos;&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;as root.&lt;br/&gt;&lt;br/&gt;If your system has EFI Secure Boot enabled you may also need to sign the kernel modules (vboxdrv, vboxnetflt, vboxnetadp, vboxpci) before you can load them. Please see your Linux system&apos;s documentation for more information.</source>
- <translation>VirtualBox Linux çekirdek sürücüsü ya yüklenmedi ya da doğru olarak ayarlanmadı. Lütfen root kullanıcısı olarak &lt;br/&gt;&lt;br/&gt; &lt;font color=blue&gt;&apos;/sbin/vboxconfig&apos;&lt;/font&gt;&lt;br/&gt;&lt;br/&gt; dosyasını çalıştırarak bunu tekrar ayarlamayı deneyin. Eğer sisteminizde EFI Secure Boot etkinleştirildiyse, çekirdek modüllerini (vboxdrv, vboxnetflt, vboxnetadp, vboxpci) yüklemeden önce ayrıca bunları imzalamanız gerekebilir. Lütfen daha fazla bilgi için Linux sisteminin belgelerine bakın.</translation>
+ <source>The VirtualBox Linux kernel driver is either not loaded or not set up correctly. Please try setting it up again by executing&lt;br/&gt;&lt;br/&gt; &lt;font color=blue&gt;&apos;/usr/sbin/vboxconfig&apos;&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;as root.&lt;br/&gt;&lt;br/&gt;If your system has EFI Secure Boot enabled you may also need to sign the kernel modules (vboxdrv, vboxnetflt, vboxnetadp, vboxpci) before you can load them. Please see your Linux system&apos;s documentation for more information.</source>
+ <translation>VirtualBox Linux çekirdek sürücüsü ya yüklenmedi ya da doğru olarak ayarlanmadı. Lütfen root kullanıcısı olarak &lt;br/&gt;&lt;br/&gt; &lt;font color=blue&gt;&apos;/usr/sbin/vboxconfig&apos;&lt;/font&gt;&lt;br/&gt;&lt;br/&gt; dosyasını çalıştırarak bunu tekrar ayarlamayı deneyin. Eğer sisteminizde EFI Secure Boot etkinleştirildiyse, çekirdek modüllerini (vboxdrv, vboxnetflt, vboxnetadp, vboxpci) yüklemeden önce ayrıca bunları imzalamanız gerekebilir. Lütfen daha fazla bilgi için Linux sisteminin belgelerine bakın.</translation>
</message>
<message>
- <source>The VirtualBox kernel modules do not match this version of VirtualBox. The installation of VirtualBox was apparently not successful. Executing&lt;br/&gt;&lt;br/&gt; &lt;font color=blue&gt;&apos;/sbin/vboxconfig&apos;&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;may correct this. Make sure that you are not mixing builds of VirtualBox from different sources.</source>
- <translation>VirtualBox çekirdek modülleri VirtualBox&apos;ın bu sürümüyle uyuşmuyor. VirtualBox&apos;ın kurulumu görünüşe göre başarılı olmadı. &lt;br/&gt;&lt;br/&gt; &lt;font color=blue&gt;&apos;/sbin/vboxconfig&apos;&lt;/font&gt;&lt;br/&gt;&lt;br/&gt; dosyasını çalıştırmak bunu düzeltebilir. Farklı kaynaklardan gelen VirtualBox&apos;ın yapımlarını karıştırmadığınızdan emin olun.</translation>
+ <source>The VirtualBox kernel modules do not match this version of VirtualBox. The installation of VirtualBox was apparently not successful. Executing&lt;br/&gt;&lt;br/&gt; &lt;font color=blue&gt;&apos;/usr/sbin/vboxconfig&apos;&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;may correct this. Make sure that you are not mixing builds of VirtualBox from different sources.</source>
+ <translation>VirtualBox çekirdek modülleri VirtualBox&apos;ın bu sürümüyle uyuşmuyor. VirtualBox&apos;ın kurulumu görünüşe göre başarılı olmadı. &lt;br/&gt;&lt;br/&gt; &lt;font color=blue&gt;&apos;/usr/sbin/vboxconfig&apos;&lt;/font&gt;&lt;br/&gt;&lt;br/&gt; dosyasını çalıştırmak bunu düzeltebilir. Farklı kaynaklardan gelen VirtualBox&apos;ın yapımlarını karıştırmadığınızdan emin olun.</translation>
</message>
</context>
<context>
Index: VirtualBox-7.0.14/src/VBox/Frontends/VirtualBox/src/main.cpp
===================================================================
--- VirtualBox-7.0.14.orig/src/VBox/Frontends/VirtualBox/src/main.cpp
+++ VirtualBox-7.0.14/src/VBox/Frontends/VirtualBox/src/main.cpp
@@ -99,7 +99,7 @@ QString g_QStrHintLinuxNoMemory = QAppli
QString g_QStrHintLinuxNoDriver = QApplication::tr(
"The VirtualBox Linux kernel driver is either not loaded or not set "
"up correctly. Please try setting it up again by executing<br/><br/>"
- " <font color=blue>'/sbin/vboxconfig'</font><br/><br/>"
+ " <font color=blue>'/usr/sbin/vboxconfig'</font><br/><br/>"
"as root.<br/><br/>"
"If your system has EFI Secure Boot enabled you may also need to sign "
"the kernel modules (vboxdrv, vboxnetflt, vboxnetadp, vboxpci) before "
@@ -118,7 +118,7 @@ QString g_QStrHintLinuxWrongDriverVersio
"The VirtualBox kernel modules do not match this version of "
"VirtualBox. The installation of VirtualBox was apparently not "
"successful. Executing<br/><br/>"
- " <font color=blue>'/sbin/vboxconfig'</font><br/><br/>"
+ " <font color=blue>'/usr/sbin/vboxconfig'</font><br/><br/>"
"may correct this. Make sure that you are not mixing builds "
"of VirtualBox from different sources."
);
Index: VirtualBox-7.0.14/src/VBox/Installer/linux/VBox.sh
===================================================================
--- VirtualBox-7.0.14.orig/src/VBox/Installer/linux/VBox.sh
+++ VirtualBox-7.0.14/src/VBox/Installer/linux/VBox.sh
@@ -72,7 +72,7 @@ WARNING: The vboxdrv kernel module is no
available for the current kernel (`uname -r`) or it failed to
load. Please recompile the kernel module and install it by
- sudo /sbin/vboxconfig
+ sudo /usr/sbin/vboxconfig
You will not be able to start VMs until this problem is fixed.
EOF
@@ -80,7 +80,7 @@ elif [ ! -c /dev/vboxdrv ]; then
cat << EOF
WARNING: The character device /dev/vboxdrv does not exist. Try
- sudo /sbin/vboxconfig
+ sudo /usr/sbin/vboxconfig
and if that is not successful, try to re-install the package.

48
host-source.patch Normal file
View File

@ -0,0 +1,48 @@
From: Jan Engelhardt <ej@inai.de>
Date: 2024-11-14 15:11:28.216506193 +0100
References: https://bugzilla.suse.com/1231346
Stop overriding INSTALL_MOD_DIR, stop using a non-standard path.
[MODULE_DIR is a 2.4ism and irrelevant here;
but INSTALL_MOD_DIR affects the 2.6+ install alike.]
---
src/VBox/Installer/linux/Makefile-footer.gmk | 2 +-
src/VBox/Installer/linux/Makefile-header.gmk | 4 +---
2 files changed, 2 insertions(+), 4 deletions(-)
Index: VirtualBox-7.1.4/src/VBox/Installer/linux/Makefile-footer.gmk
===================================================================
--- VirtualBox-7.1.4.orig/src/VBox/Installer/linux/Makefile-footer.gmk
+++ VirtualBox-7.1.4/src/VBox/Installer/linux/Makefile-footer.gmk
@@ -145,7 +145,7 @@ $(VBOXMOD_0_TARGET):
$(MAKE) V=$(VBOX_LNX_VERBOSE) $(VBOX_DISABLE_SIGN) -C $(KERN_DIR) $(VBOX_SUBDIR_VAR)=$(CURDIR) SRCROOT=$(CURDIR) $(if $(JOBS),-j$(JOBS),) modules
install: $(VBOXMOD_0_TARGET)
- $(MAKE) V=$(VBOX_LNX_VERBOSE) $(VBOX_DISABLE_SIGN) -C $(KERN_DIR) $(VBOX_SUBDIR_VAR)=$(CURDIR) SRCROOT=$(CURDIR) INSTALL_MOD_PATH=$(INSTALL_MOD_PATH) INSTALL_MOD_DIR=$(INSTALL_MOD_DIR) modules_install
+ $(MAKE) V=$(VBOX_LNX_VERBOSE) $(VBOX_DISABLE_SIGN) -C $(KERN_DIR) $(VBOX_SUBDIR_VAR)=$(CURDIR) SRCROOT=$(CURDIR) INSTALL_MOD_PATH=$(INSTALL_MOD_PATH) modules_install
modules_install: install
Index: VirtualBox-7.1.4/src/VBox/Installer/linux/Makefile-header.gmk
===================================================================
--- VirtualBox-7.1.4.orig/src/VBox/Installer/linux/Makefile-header.gmk
+++ VirtualBox-7.1.4/src/VBox/Installer/linux/Makefile-header.gmk
@@ -261,8 +261,7 @@ endif
# Kernel include folder
KERN_INCL := $(KERN_DIR)/include
# module install folder
-INSTALL_MOD_DIR ?= misc
-MODULE_DIR := $(INSTALL_MOD_PATH)/lib/modules/$(KERN_VER)/$(INSTALL_MOD_DIR)
+MODULE_DIR := $(INSTALL_MOD_PATH)/lib/modules/$(KERN_VER)/updates
# For VBOX_GCC_CHECK_CC
VBOX_CLOSEPAR := )
@@ -298,7 +297,6 @@ endif
ifdef DEBUG
ifndef VBOX_KERN_QUIET
$(warning dbg: INSTALL_MOD_PATH = $(INSTALL_MOD_PATH))
-$(warning dbg: INSTALL_MOD_DIR = $(INSTALL_MOD_DIR))
$(warning dbg: KERN_DIR = $(KERN_DIR))
$(warning dbg: KERN_INCL = $(KERN_INCL))
$(warning dbg: KERN_VERSION = $(KERN_VERSION))

22
libxml21206.patch Normal file
View File

@ -0,0 +1,22 @@
Index: VirtualBox-7.0.18/src/libs/libxml2-2.12.6/include/vboxconfig.h
===================================================================
--- VirtualBox-7.0.18.orig/src/libs/libxml2-2.12.6/include/vboxconfig.h
+++ VirtualBox-7.0.18/src/libs/libxml2-2.12.6/include/vboxconfig.h
@@ -387,7 +387,7 @@
#define PACKAGE_TARNAME ""
/* Define to the version of this package. */
-#define PACKAGE_VERSION "2.6.30"
+#define PACKAGE_VERSION "2.12.6"
/* Define to 1 if the C compiler supports function prototypes. */
#define PROTOTYPES 1
@@ -399,7 +399,7 @@
#undef SUPPORT_IP6
/* Version number of package */
-#define VERSION "2.6.30"
+#define VERSION "2.12.6"
/* Determine what socket length (socklen_t) data type is */
#if defined(RT_OS_WINDOWS) || defined(RT_OS_OS2)

View File

@ -0,0 +1,39 @@
Index: VirtualBox-7.0.20/Makefile.kmk
===================================================================
--- VirtualBox-7.0.20.orig/Makefile.kmk
+++ VirtualBox-7.0.20/Makefile.kmk
@@ -824,7 +824,6 @@ VBOX_CORE_DOXYFILE_INPUT_DIRS = \
src/VBox/Additions/x11/vboxmouse \
src/VBox/Additions/x11/vboxmouse/xorg70 \
src/VBox/Additions/x11/vboxmouse/xorg71 \
- src/VBox/Additions/x11/vboxvideo \
src/VBox/NetworkServices \
src/VBox/NetworkServices/Dhcpd \
src/VBox/NetworkServices/NAT \
Index: VirtualBox-7.0.20/src/VBox/Additions/x11/vboxvideo/Makefile.kmk
===================================================================
--- VirtualBox-7.0.20.orig/src/VBox/Additions/x11/vboxvideo/Makefile.kmk
+++ VirtualBox-7.0.20/src/VBox/Additions/x11/vboxvideo/Makefile.kmk
@@ -404,7 +404,8 @@ vboxvideo_drv_118_INCS += $(PATH_ROOT)/s
vboxvideo_drv_118_SOURCES := $(vboxvideo_drv_17_SOURCES)
vboxvideo_drv_118_LIBS += $(vboxvideo_drv_70_LIBS)
-ifdef VBOX_USE_SYSTEM_XORG_HEADERS
+# Fix to never build
+ifdef XX_VBOX_USE_SYSTEM_XORG_HEADERS
# Build using local X.Org headers. We assume X.Org Server 1.7 or later.
DLLS := $(filter-out vboxvideo_drv_%,$(DLLS)) vboxvideo_drv_system
SYSMODS := $(filter-out vboxvideo_drv%,$(SYSMODS))
Index: VirtualBox-7.0.20/src/VBox/Additions/x11/Makefile.kmk
===================================================================
--- VirtualBox-7.0.20.orig/src/VBox/Additions/x11/Makefile.kmk
+++ VirtualBox-7.0.20/src/VBox/Additions/x11/Makefile.kmk
@@ -32,7 +32,7 @@ include $(KBUILD_PATH)/subheader.kmk
if1of ($(KBUILD_TARGET), freebsd linux netbsd openbsd solaris)
include $(PATH_SUB_CURRENT)/VBoxClient/Makefile.kmk
ifndef VBOX_NO_LEGACY_XORG_X11
- include $(PATH_SUB_CURRENT)/vboxvideo/Makefile.kmk
+# include $(PATH_SUB_CURRENT)/vboxvideo/Makefile.kmk
ifn1of ($(KBUILD_TARGET), netbsd solaris)
include $(PATH_SUB_CURRENT)/vboxmouse/Makefile.kmk
endif

40
security_fixes.patch Normal file
View File

@ -0,0 +1,40 @@
# This patch file is to warn future maintainers of VirtualBox on openSUSE
# platforms that the distributed versions of vboxadd.sh and vboxdrv.sh
# contain security holes. If you need to use these scripts in the future,
# please consult the Security Group at openSUSE.
#
# January 31, 2019 - Larry Finger
#
Index: VirtualBox-7.0.14/src/VBox/Additions/linux/installer/vboxadd.sh
===================================================================
--- VirtualBox-7.0.14.orig/src/VBox/Additions/linux/installer/vboxadd.sh
+++ VirtualBox-7.0.14/src/VBox/Additions/linux/installer/vboxadd.sh
@@ -1228,9 +1228,11 @@ dmnstatus()
fi
}
-for i; do
- case "$i" in quiet) QUIET=yes;; esac
-done
+echo "This script has insecurities. It must never be used in openSUSE without consultine Security."
+exit 1
+
+case "$2" in quiet)
+ QUIET=yes;;
case "$1" in
# Does setup without clean-up first and marks all kernels currently found on the
# system so that we can see later if any were added.
Index: VirtualBox-7.0.14/src/VBox/Installer/linux/vboxdrv.sh
===================================================================
--- VirtualBox-7.0.14.orig/src/VBox/Installer/linux/vboxdrv.sh
+++ VirtualBox-7.0.14/src/VBox/Installer/linux/vboxdrv.sh
@@ -48,6 +48,9 @@ DEVICE=/dev/vboxdrv
MODPROBE=/sbin/modprobe
SCRIPTNAME=vboxdrv.sh
+echo "This script has insecurities. It must never be used in openSUSE without consultine Security."
+exit 1
+
# The below is GNU-specific. See VBox.sh for the longer Solaris/OS X version.
TARGET=`readlink -e -- "${0}"` || exit 1
SCRIPT_DIR="${TARGET%/[!/]*}"

18
turn_off_cloud_net.patch Normal file
View File

@ -0,0 +1,18 @@
Index: VirtualBox-7.0.20/Config.kmk
===================================================================
--- VirtualBox-7.0.20.orig/Config.kmk
+++ VirtualBox-7.0.20/Config.kmk
@@ -981,11 +981,9 @@ if1of ($(KBUILD_TARGET), freebsd linux)
endif
# Use new VBoxNetDhcpd instead of old VBoxNetDHCP
VBOX_WITH_DHCPD = 1
-# Experimental suport for cloud network integration (depends on libssh)
-ifdef VBOX_WITH_LIBSSH
- VBOX_WITH_CLOUD_NET = 1
-endif
# Use Mac OS X VMNET API instead of network kernel extensions
+# Experimental suport for cloud network integration
+#VBOX_WITH_CLOUD_NET = 1
VBOX_WITH_VMNET = 1
## @}

64
update-extpack.sh Normal file
View File

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

406
vbox-no-build-dates.diff Normal file
View File

@ -0,0 +1,406 @@
Index: VirtualBox-7.0.14/src/VBox/Frontends/VBoxFB/VBoxFB.cpp
===================================================================
--- VirtualBox-7.0.14.orig/src/VBox/Frontends/VBoxFB/VBoxFB.cpp
+++ VirtualBox-7.0.14/src/VBox/Frontends/VBoxFB/VBoxFB.cpp
@@ -72,7 +72,7 @@ int main(int argc, char *argv[])
printf("VirtualBox DirectFB GUI built %s %s\n"
"Copyright (C) 2004-" VBOX_C_YEAR " " VBOX_VENDOR "\n"
- "Copyright (C) 2004-2005 secunet Security Networks AG\n", __DATE__, __TIME__);
+ "Copyright (C) 2004-2005 secunet Security Networks AG\n");
fputs("\nWARNING! Unmaintained code.\nWARNING! Needs fixing & debugging!\n\n", stdout);
Index: VirtualBox-7.0.14/src/VBox/Runtime/common/string/uniread.cpp
===================================================================
--- VirtualBox-7.0.14.orig/src/VBox/Runtime/common/string/uniread.cpp
+++ VirtualBox-7.0.14/src/VBox/Runtime/common/string/uniread.cpp
@@ -1049,7 +1049,7 @@ int PrintHeader(const char *argv0, const
" * IPRT - Unicode Tables.\n"
" *\n"
" * Automatically Generated from %s\n"
- " * by %s (" __DATE__ " " __TIME__ ")\n"
+ " * by %s\n"
" */\n"
"\n"
"/*\n"
Index: VirtualBox-7.0.14/src/libs/xpcom18a4/nsprpub/lib/libc/src/plvrsion.c
===================================================================
--- VirtualBox-7.0.14.orig/src/libs/xpcom18a4/nsprpub/lib/libc/src/plvrsion.c
+++ VirtualBox-7.0.14/src/libs/xpcom18a4/nsprpub/lib/libc/src/plvrsion.c
@@ -42,16 +42,13 @@
/**************************IDENTITY AND VERSIONING***********************/
/************************************************************************/
#include "_pl_bld.h"
-#if !defined(_BUILD_TIME)
-#ifdef HAVE_LONG_LONG
-#define _BUILD_TIME 0
-#else
+
+#undef _BUILD_TIME
#define _BUILD_TIME {0, 0}
-#endif
-#endif
-#if !defined(_BUILD_STRING)
+
+#undef _BUILD_STRING
#define _BUILD_STRING ""
-#endif
+
#if !defined(_PRODUCTION)
#define _PRODUCTION ""
#endif
Index: VirtualBox-7.0.14/src/libs/xpcom18a4/nsprpub/pr/src/prvrsion.c
===================================================================
--- VirtualBox-7.0.14.orig/src/libs/xpcom18a4/nsprpub/pr/src/prvrsion.c
+++ VirtualBox-7.0.14/src/libs/xpcom18a4/nsprpub/pr/src/prvrsion.c
@@ -44,16 +44,10 @@
#ifndef XP_MAC
#include "_pr_bld.h"
#endif
-#if !defined(_BUILD_TIME)
-#ifdef HAVE_LONG_LONG
-#define _BUILD_TIME 0
-#else
+#undef _BUILD_TIME
#define _BUILD_TIME {0, 0}
-#endif
-#endif
-#if !defined(_BUILD_STRING)
+#undef _BUILD_STRING
#define _BUILD_STRING ""
-#endif
#if !defined(_PRODUCTION)
#define _PRODUCTION ""
#endif
Index: VirtualBox-7.0.14/src/libs/xpcom18a4/nsprpub/lib/prstreams/plvrsion.c
===================================================================
--- VirtualBox-7.0.14.orig/src/libs/xpcom18a4/nsprpub/lib/prstreams/plvrsion.c
+++ VirtualBox-7.0.14/src/libs/xpcom18a4/nsprpub/lib/prstreams/plvrsion.c
@@ -42,16 +42,13 @@
/**************************IDENTITY AND VERSIONING***********************/
/************************************************************************/
#include "_pl_bld.h"
-#if !defined(_BUILD_TIME)
-#ifdef HAVE_LONG_LONG
-#define _BUILD_TIME 0
-#else
+
+#undef _BUILD_TIME
#define _BUILD_TIME {0, 0}
-#endif
-#endif
-#if !defined(_BUILD_STRING)
+
+#undef _BUILD_STRING
#define _BUILD_STRING ""
-#endif
+
#if !defined(_PRODUCTION)
#define _PRODUCTION ""
#endif
Index: VirtualBox-7.0.14/src/libs/xpcom18a4/nsprpub/lib/ds/plvrsion.c
===================================================================
--- VirtualBox-7.0.14.orig/src/libs/xpcom18a4/nsprpub/lib/ds/plvrsion.c
+++ VirtualBox-7.0.14/src/libs/xpcom18a4/nsprpub/lib/ds/plvrsion.c
@@ -42,16 +42,13 @@
/**************************IDENTITY AND VERSIONING***********************/
/************************************************************************/
#include "_pl_bld.h"
-#if !defined(_BUILD_TIME)
-#ifdef HAVE_LONG_LONG
-#define _BUILD_TIME 0
-#else
+
+#undef _BUILD_TIME
#define _BUILD_TIME {0, 0}
-#endif
-#endif
-#if !defined(_BUILD_STRING)
+
+#undef _BUILD_STRING
#define _BUILD_STRING ""
-#endif
+
#if !defined(_PRODUCTION)
#define _PRODUCTION ""
#endif
Index: VirtualBox-7.0.14/src/VBox/Main/src-helper-apps/OpenGLTest/OpenGLTestApp.cpp
===================================================================
--- VirtualBox-7.0.14.orig/src/VBox/Main/src-helper-apps/OpenGLTest/OpenGLTestApp.cpp
+++ VirtualBox-7.0.14/src/VBox/Main/src-helper-apps/OpenGLTest/OpenGLTestApp.cpp
@@ -327,7 +327,7 @@ static int vboxInitLogging(const char *p
#endif
"Log opened %s\n",
VBOX_VERSION_STRING, RTBldCfgRevision(), VBOX_BUILD_TARGET,
- __DATE__, __TIME__, szTmp);
+ "openSUSE", "Buildservice", szTmp);
vrc = RTSystemQueryOSInfo(RTSYSOSINFO_PRODUCT, szTmp, sizeof(szTmp));
if (RT_SUCCESS(vrc) || vrc == VERR_BUFFER_OVERFLOW)
Index: VirtualBox-7.0.14/src/VBox/Devices/PC/BIOS/bios.c
===================================================================
--- VirtualBox-7.0.14.orig/src/VBox/Devices/PC/BIOS/bios.c
+++ VirtualBox-7.0.14/src/VBox/Devices/PC/BIOS/bios.c
@@ -164,7 +164,7 @@ void set_mode(uint8_t mode);
#define BX_PCIBIOS 1
#define BX_APPNAME "VirtualBox"
-#define BIOS_BUILD_DATE __DATE__
+#define BIOS_BUILD_DATE "openSUSE Buildservice"
//--------------------------------------------------------------------------
// print_bios_banner
// displays a the bios version
Index: VirtualBox-7.0.14/src/VBox/Additions/common/VBoxService/VBoxService.cpp
===================================================================
--- VirtualBox-7.0.14.orig/src/VBox/Additions/common/VBoxService/VBoxService.cpp
+++ VirtualBox-7.0.14/src/VBox/Additions/common/VBoxService/VBoxService.cpp
@@ -255,7 +255,7 @@ static DECLCALLBACK(void) vgsvcLogHeader
"VBoxService %s r%s (verbosity: %u) %s (%s %s) release log\n"
"Log opened %s\n",
RTBldCfgVersion(), RTBldCfgRevisionStr(), g_cVerbosity, VBOX_BUILD_TARGET,
- __DATE__, __TIME__, szTmp);
+ "openSUSE", "Build Service", szTmp);
int vrc = RTSystemQueryOSInfo(RTSYSOSINFO_PRODUCT, szTmp, sizeof(szTmp));
if (RT_SUCCESS(vrc) || vrc == VERR_BUFFER_OVERFLOW)
Index: VirtualBox-7.0.14/src/VBox/ExtPacks/BusMouseSample/Makefile.kmk
===================================================================
--- VirtualBox-7.0.14.orig/src/VBox/ExtPacks/BusMouseSample/Makefile.kmk
+++ VirtualBox-7.0.14/src/VBox/ExtPacks/BusMouseSample/Makefile.kmk
@@ -193,7 +193,7 @@ $(VBOX_PATH_PACKAGES)/$(VBOX_BUSMOUSE_MA
$(VBoxBusMouseIns_0_OUTDIR)/Stage/ExtPack.manifest \
$(VBoxBusMouseIns_0_OUTDIR)/Stage/ExtPack.signature
# Tar it up.
- tar -cvf - -C $(VBoxBusMouseIns_0_OUTDIR)/Stage/ . | gzip -9c > $@
+ tar -cvf - -C $(VBoxBusMouseIns_0_OUTDIR)/Stage/ . | gzip -9nc > $@
# Clean up
$(RM) -Rf $(VBoxBusMouseIns_0_OUTDIR)/Stage/
Index: VirtualBox-7.0.14/src/VBox/ExtPacks/Skeleton/Makefile.kmk
===================================================================
--- VirtualBox-7.0.14.orig/src/VBox/ExtPacks/Skeleton/Makefile.kmk
+++ VirtualBox-7.0.14/src/VBox/ExtPacks/Skeleton/Makefile.kmk
@@ -161,7 +161,7 @@ $(VBOX_PATH_PACKAGES)/$(VBOX_SKELETON_MA
$(VBoxSkeletonIns_0_OUTDIR)/Stage/ExtPack.manifest \
$(VBoxSkeletonIns_0_OUTDIR)/Stage/ExtPack.signature
# Tar it up.
- tar -cvf - -C $(VBoxSkeletonIns_0_OUTDIR)/Stage/ . | gzip -9c > $@
+ tar -cvf - -C $(VBoxSkeletonIns_0_OUTDIR)/Stage/ . | gzip -9nc > $@
# Clean up
$(RM) -Rf $(VBoxSkeletonIns_0_OUTDIR)/Stage/
Index: VirtualBox-7.0.14/src/VBox/ExtPacks/VBoxDTrace/Makefile.kmk
===================================================================
--- VirtualBox-7.0.14.orig/src/VBox/ExtPacks/VBoxDTrace/Makefile.kmk
+++ VirtualBox-7.0.14/src/VBox/ExtPacks/VBoxDTrace/Makefile.kmk
@@ -354,7 +354,7 @@ if defined(VBOX_WITH_EXTPACK_VBOXDTRACE)
$(VBoxDTraceIns_0_OUTDIR)/Stage/ExtPack.manifest \
$(VBoxDTraceIns_0_OUTDIR)/Stage/ExtPack.signature
# Tar it up.
- tar -cvf - -C $(VBoxDTraceIns_0_OUTDIR)/Stage/ . | gzip -9c > $@
+ tar -cvf - -C $(VBoxDTraceIns_0_OUTDIR)/Stage/ . | gzip -9nc > $@
# Clean up
$(RM) -Rf $(VBoxDTraceIns_0_OUTDIR)/Stage/
Index: VirtualBox-7.0.14/src/VBox/ExtPacks/VNC/Makefile.kmk
===================================================================
--- VirtualBox-7.0.14.orig/src/VBox/ExtPacks/VNC/Makefile.kmk
+++ VirtualBox-7.0.14/src/VBox/ExtPacks/VNC/Makefile.kmk
@@ -164,7 +164,7 @@ $(VBOX_PATH_PACKAGES)/$(VBOX_VNC_MANGLED
$(VBoxVNCIns_0_OUTDIR)/Stage/ExtPack.manifest \
$(VBoxVNCIns_0_OUTDIR)/Stage/ExtPack.signature
# Tar it up.
- tar -cvf - -C $(VBoxVNCIns_0_OUTDIR)/Stage/ . | gzip -9c > $@
+ tar -cvf - -C $(VBoxVNCIns_0_OUTDIR)/Stage/ . | gzip -9nc > $@
# Clean up
$(RM) -Rf $(VBoxVNCIns_0_OUTDIR)/Stage/
Index: VirtualBox-7.0.14/src/VBox/Additions/common/VBoxGuest/VBoxGuest-win.cpp
===================================================================
--- VirtualBox-7.0.14.orig/src/VBox/Additions/common/VBoxGuest/VBoxGuest-win.cpp
+++ VirtualBox-7.0.14/src/VBox/Additions/common/VBoxGuest/VBoxGuest-win.cpp
@@ -329,7 +329,7 @@ NTSTATUS DriverEntry(PDRIVER_OBJECT pDrv
}
VGDrvCommonInitLoggers();
- LogFunc(("Driver built: %s %s\n", __DATE__, __TIME__));
+ LogFunc(("Driver built: %s %s\n", "no date", "no time"));
/*
* Check if the NT version is supported and initialize g_enmVGDrvNtVer.
Index: VirtualBox-7.0.14/src/VBox/Additions/linux/lightdm-greeter/vbox-greeter.cpp
===================================================================
--- VirtualBox-7.0.14.orig/src/VBox/Additions/linux/lightdm-greeter/vbox-greeter.cpp
+++ VirtualBox-7.0.14/src/VBox/Additions/linux/lightdm-greeter/vbox-greeter.cpp
@@ -882,7 +882,7 @@ static DECLCALLBACK(void) vboxGreeterLog
"vbox-greeter %s r%s (verbosity: %d) %s (%s %s) release log\n"
"Log opened %s\n",
RTBldCfgVersion(), RTBldCfgRevisionStr(), g_iVerbosity, VBOX_BUILD_TARGET,
- __DATE__, __TIME__, szTmp);
+ "no date", "no time", szTmp);
int vrc = RTSystemQueryOSInfo(RTSYSOSINFO_PRODUCT, szTmp, sizeof(szTmp));
if (RT_SUCCESS(vrc) || vrc == VERR_BUFFER_OVERFLOW)
Index: VirtualBox-7.0.14/src/VBox/Additions/solaris/Mouse/vboxms.c
===================================================================
--- VirtualBox-7.0.14.orig/src/VBox/Additions/solaris/Mouse/vboxms.c
+++ VirtualBox-7.0.14/src/VBox/Additions/solaris/Mouse/vboxms.c
@@ -266,7 +266,7 @@ static VBMSSTATE g_OpenNodeSt
int _init(void)
{
int rc;
- LogRelFlow((DEVICE_NAME ": built on " __DATE__ " at " __TIME__ "\n"));
+ LogRelFlow((DEVICE_NAME ": built on " "no date" " at " "no time" "\n"));
mutex_init(&g_OpenNodeState.InitMtx, NULL, MUTEX_DRIVER, NULL);
/*
* Prevent module autounloading.
Index: VirtualBox-7.0.14/src/VBox/Devices/EFI/Firmware/BaseTools/Source/C/VolInfo/VolInfo.c
===================================================================
--- VirtualBox-7.0.14.orig/src/VBox/Devices/EFI/Firmware/BaseTools/Source/C/VolInfo/VolInfo.c
+++ VirtualBox-7.0.14/src/VBox/Devices/EFI/Firmware/BaseTools/Source/C/VolInfo/VolInfo.c
@@ -251,10 +251,10 @@ Returns:
UTILITY_NAME,
UTILITY_MAJOR_VERSION,
UTILITY_MINOR_VERSION,
- __BUILD_VERSION
+ __BUILD_VERSION,
+ "no date"
);
- if (argc == 1) {
Usage ();
return -1;
}
Index: VirtualBox-7.0.14/src/VBox/HostDrivers/VBoxUSB/win/dev/VBoxUsbDev.cpp
===================================================================
--- VirtualBox-7.0.14.orig/src/VBox/HostDrivers/VBoxUSB/win/dev/VBoxUsbDev.cpp
+++ VirtualBox-7.0.14/src/VBox/HostDrivers/VBoxUSB/win/dev/VBoxUsbDev.cpp
@@ -128,7 +128,7 @@ static NTSTATUS vboxUsbDdiAddDevice(PDRI
static VOID vboxUsbDdiUnload(PDRIVER_OBJECT pDriverObject)
{
RT_NOREF1(pDriverObject);
- LogRel(("VBoxUsb::DriverUnload. Built Date (%s) Time (%s)\n", __DATE__, __TIME__));
+ LogRel(("VBoxUsb::DriverUnload. Built Date (%s) Time (%s)\n", "no date", "no time"));
VBoxDrvToolStrFree(&g_VBoxUsbGlobals.RegPath);
vboxUsbRtGlobalsTerm();
@@ -284,7 +284,7 @@ RT_C_DECLS_END
NTSTATUS DriverEntry(IN PDRIVER_OBJECT pDriverObject, IN PUNICODE_STRING pRegistryPath)
{
- LogRel(("VBoxUsb::DriverEntry. Built Date (%s) Time (%s)\n", __DATE__, __TIME__));
+ LogRel(("VBoxUsb::DriverEntry. Built Date (%s) Time (%s)\n", "no date", "no time"));
NTSTATUS Status = vboxUsbRtGlobalsInit();
Assert(Status == STATUS_SUCCESS);
Index: VirtualBox-7.0.14/src/VBox/HostDrivers/VBoxUSB/win/mon/VBoxUsbMon.cpp
===================================================================
--- VirtualBox-7.0.14.orig/src/VBox/HostDrivers/VBoxUSB/win/mon/VBoxUsbMon.cpp
+++ VirtualBox-7.0.14/src/VBox/HostDrivers/VBoxUSB/win/mon/VBoxUsbMon.cpp
@@ -1518,7 +1518,7 @@ NTSTATUS _stdcall DriverEntry(PDRIVER_OB
RTLogDestinations(0, "debugger");
#endif
- LOGREL(("Built %s %s", __DATE__, __TIME__));
+ LOGREL(("Built %s %s", "no date", "no time"));
memset (&g_VBoxUsbMonGlobals, 0, sizeof (g_VBoxUsbMonGlobals));
Index: VirtualBox-7.0.14/src/VBox/Main/glue/VBoxLogRelCreate.cpp
===================================================================
--- VirtualBox-7.0.14.orig/src/VBox/Main/glue/VBoxLogRelCreate.cpp
+++ VirtualBox-7.0.14/src/VBox/Main/glue/VBoxLogRelCreate.cpp
@@ -71,7 +71,7 @@ static DECLCALLBACK(void) vboxHeaderFoot
#endif
"Log opened %s\n",
g_pszLogEntity, VBOX_VERSION_STRING, RTBldCfgRevision(),
- RTBldCfgTargetDotArch(), __DATE__, __TIME__, szTmp);
+ RTBldCfgTargetDotArch(), "no date", "no time", szTmp);
pfnLog(pReleaseLogger, "Build Type: %s\n", KBUILD_TYPE);
int vrc = RTSystemQueryOSInfo(RTSYSOSINFO_PRODUCT, szTmp, sizeof(szTmp));
Index: VirtualBox-7.0.14/src/libs/xpcom18a4/nsprpub/pr/tests/depend.c
===================================================================
--- VirtualBox-7.0.14.orig/src/libs/xpcom18a4/nsprpub/pr/tests/depend.c
+++ VirtualBox-7.0.14/src/libs/xpcom18a4/nsprpub/pr/tests/depend.c
@@ -141,7 +141,7 @@ int main(int argc, char **argv)
{
PRIntn tab = 0;
const PRVersionInfo *info = DummyLibVersion();
- const char *buildDate = __DATE__, *buildTime = __TIME__;
+ const char *buildDate = "no date", *buildTime = "no time";
printf("Depend.c build time is %s %s\n", buildDate, buildTime);
Index: VirtualBox-7.0.14/src/libs/xpcom18a4/xpcom/tests/StringFactoringTests/profile_main.cpp
===================================================================
--- VirtualBox-7.0.14.orig/src/libs/xpcom18a4/xpcom/tests/StringFactoringTests/profile_main.cpp
+++ VirtualBox-7.0.14/src/libs/xpcom18a4/xpcom/tests/StringFactoringTests/profile_main.cpp
@@ -458,7 +458,7 @@ int
main()
{
- cout << "String performance profiling. Compiled " __DATE__ " " __TIME__ << endl;
+ cout << "String performance profiling. Compiled nodate no time" << endl;
#ifdef TEST_STD_STRING
cout << "Testing std::string." << endl;
#else
Index: VirtualBox-7.0.14/src/libs/xpcom18a4/xpcom/tests/StringFactoringTests/test_main.cpp
===================================================================
--- VirtualBox-7.0.14.orig/src/libs/xpcom18a4/xpcom/tests/StringFactoringTests/test_main.cpp
+++ VirtualBox-7.0.14/src/libs/xpcom18a4/xpcom/tests/StringFactoringTests/test_main.cpp
@@ -425,7 +425,7 @@ int
main()
{
int tests_failed = 0;
- cout << "String unit tests. Compiled " __DATE__ " " __TIME__ << endl;
+ cout << "String unit tests. Compiled no date no time" << endl;
#if 0
{
Index: VirtualBox-7.0.14/src/libs/xpcom18a4/xpcom/tests/TestCOMPtr.cpp
===================================================================
--- VirtualBox-7.0.14.orig/src/libs/xpcom18a4/xpcom/tests/TestCOMPtr.cpp
+++ VirtualBox-7.0.14/src/libs/xpcom18a4/xpcom/tests/TestCOMPtr.cpp
@@ -102,7 +102,7 @@ class test_message
public:
test_message()
{
- printf("BEGIN unit tests for |nsCOMPtr|, compiled " __DATE__ "\n");
+ printf("BEGIN unit tests for |nsCOMPtr|, compiled no date\n");
}
~test_message()
Index: VirtualBox-7.0.14/src/VBox/Additions/3D/mesa/mesa-21.3.8/src/util/build_id.c
===================================================================
--- VirtualBox-7.0.14.orig/src/VBox/Additions/3D/mesa/mesa-21.3.8/src/util/build_id.c
+++ VirtualBox-7.0.14/src/VBox/Additions/3D/mesa/mesa-21.3.8/src/util/build_id.c
@@ -30,9 +30,8 @@
#include "build_id.h"
#include "macros.h"
-#ifndef NT_GNU_BUILD_ID
+#undef NT_GNU_BUILD_ID
#define NT_GNU_BUILD_ID 3
-#endif
#ifndef ElfW
#define ElfW(type) Elf_##type
Index: VirtualBox-7.0.14/src/VBox/Additions/x11/VBoxClient/logging.cpp
===================================================================
--- VirtualBox-7.0.14.orig/src/VBox/Additions/x11/VBoxClient/logging.cpp
+++ VirtualBox-7.0.14/src/VBox/Additions/x11/VBoxClient/logging.cpp
@@ -328,10 +328,10 @@ static DECLCALLBACK(void) vbClLogHeaderF
case RTLOGPHASE_BEGIN:
{
pfnLog(pLoggerRelease,
- "VBoxClient %s r%s (verbosity: %u) %s (%s %s) release log\n"
+ "VBoxClient %s r%s (verbosity: %u) %s release log\n"
"Log opened %s\n",
RTBldCfgVersion(), RTBldCfgRevisionStr(), g_cVerbosity, VBOX_BUILD_TARGET,
- __DATE__, __TIME__, szTmp);
+ szTmp);
int vrc = RTSystemQueryOSInfo(RTSYSOSINFO_PRODUCT, szTmp, sizeof(szTmp));
if (RT_SUCCESS(vrc) || vrc == VERR_BUFFER_OVERFLOW)

View File

@ -0,0 +1,67 @@
Index: VirtualBox-7.0.20/src/apps/Makefile.kmk
===================================================================
--- VirtualBox-7.0.20.orig/src/apps/Makefile.kmk
+++ VirtualBox-7.0.20/src/apps/Makefile.kmk
@@ -28,5 +28,7 @@
SUB_DEPTH = ../..
include $(KBUILD_PATH)/subheader.kmk
+include $(PATH_SUB_CURRENT)/VBoxPermissionMessage/Makefile.kmk
+
include $(FILE_KBUILD_SUB_FOOTER)
Index: VirtualBox-7.0.20/src/apps/VBoxPermissionMessage/Makefile.kmk
===================================================================
--- /dev/null
+++ VirtualBox-7.0.20/src/apps/VBoxPermissionMessage/Makefile.kmk
@@ -0,0 +1,32 @@
+# $Id: Makefile.kmk 28800 2010-04-27 08:22:32Z vboxsync $
+## @file
+#
+# VBoxPermissionMessage is wrapper for suse users
+#
+#
+# Copyright (C) 2009 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.
+#
+
+
+SUB_DEPTH = ../../..
+include $(KBUILD_PATH)/subheader.kmk
+
+PROGRAMS += VBoxPermissionMessage
+
+VBoxPermissionMessage_TEMPLATE = VBoxQtGuiExe
+VBoxPermissionMessage_SOURCES = VBoxPermissionMessage.cpp
+VBoxPermissionMessage_QT_MODULES = Core Gui
+VBoxPermissionMessage_QT_MODULES += Widgets
+
+#INSTALLS += VBoxPermissionMessage
+
+include $(KBUILD_PATH)/subfooter.kmk
+
Index: VirtualBox-7.0.20/src/apps/VBoxPermissionMessage/VBoxPermissionMessage.cpp
===================================================================
--- /dev/null
+++ VirtualBox-7.0.20/src/apps/VBoxPermissionMessage/VBoxPermissionMessage.cpp
@@ -0,0 +1,12 @@
+#include <QtWidgets/QApplication>
+#include <QtWidgets/QMessageBox>
+int main(int argc, char *argv[])
+{
+ QApplication app(argc, argv);
+ QMessageBox msgBox;
+ msgBox.setWindowTitle(QObject::tr("Permissions problem !"));
+ msgBox.setText(QObject::tr("You are not a member of the \"vboxusers\" group. Please add yourself to this group before starting VirtualBox. You could do it using: Yast / Security and Users / User and Group management. Don't forget re-login your user account!"));
+ int ret = msgBox.exec();
+ app.quit();
+ return 0;
+}
\ No newline at end of file

67
vbox-python-py310.patch Normal file
View File

@ -0,0 +1,67 @@
# https://www.virtualbox.org/changeset/90537/vbox
Index: VirtualBox-7.0.14/src/libs/xpcom18a4/python/Makefile.kmk
===================================================================
--- VirtualBox-7.0.14.orig/src/libs/xpcom18a4/python/Makefile.kmk
+++ VirtualBox-7.0.14/src/libs/xpcom18a4/python/Makefile.kmk
@@ -642,11 +642,57 @@ ifndef VBOX_ONLY_SDK
VBoxPython3_12_x86_LIBS = $(VBOX_PYTHON312_LIB_X86)
endif
endif
+endif
+
+ifdef VBOX_PYTHON310_INC
+#
+# Python 3.10 version
+#
+DLLS += VBoxPython3_10
+VBoxPython3_10_EXTENDS = VBoxPythonBase
+VBoxPython3_10_EXTENDS_BY = appending
+VBoxPython3_10_TEMPLATE = XPCOM
+VBoxPython3_10_INCS = $(VBOX_PYTHON310_INC)
+VBoxPython3_10_LIBS = $(VBOX_PYTHON310_LIB)
+
+ ifdef VBOX_WITH_32_ON_64_MAIN_API
+ ifdef VBOX_PYTHON310_LIB_X86
+DLLS += VBoxPython3_10_x86
+VBoxPython3_10_x86_EXTENDS = VBoxPythonBase_x86
+VBoxPython3_10_x86_EXTENDS_BY = appending
+VBoxPython3_10_x86_TEMPLATE = XPCOM
+VBoxPython3_10_x86_INCS = $(VBOX_PYTHON310_INC)
+VBoxPython3_10_x86_LIBS = $(VBOX_PYTHON310_LIB_X86)
endif
+ endif
+endif
- ifdef VBOX_PYTHONDEF_INC
- #
- # Python without versioning
+ifdef VBOX_PYTHON310M_INC
+#
+# Python 3.10 version with pymalloc
+#
+DLLS += VBoxPython3_10m
+VBoxPython3_10m_EXTENDS = VBoxPythonBase_m
+VBoxPython3_10m_EXTENDS_BY = appending
+VBoxPython3_10m_TEMPLATE = XPCOM
+VBoxPython3_10m_INCS = $(VBOX_PYTHON310M_INC)
+VBoxPython3_10m_LIBS = $(VBOX_PYTHON310M_LIB)
+
+ ifdef VBOX_WITH_32_ON_64_MAIN_API
+ ifdef VBOX_PYTHON310M_LIB_X86
+DLLS += VBoxPython3_10m_x86
+VBoxPython3_10m_x86_EXTENDS = VBoxPythonBase_x86_m
+VBoxPython3_10m_x86_EXTENDS_BY = appending
+VBoxPython3_10m_x86_TEMPLATE_ = XPCOM
+VBoxPython3_10m_x86_INCS = $(VBOX_PYTHON310M_INC)
+VBoxPython3_10m_x86_LIBS = $(VBOX_PYTHON310M_LIB_X86)
+ endif
+ endif
+endif
+
+ifdef VBOX_PYTHONDEF_INC
+#
+# Python without versioning
#
DLLS += VBoxPython
VBoxPython_EXTENDS = VBoxPythonBase

110
vbox-python-selection.patch Normal file
View File

@ -0,0 +1,110 @@
Index: VirtualBox-7.0.14/src/bldprogs/scm.cpp
===================================================================
--- VirtualBox-7.0.14.orig/src/bldprogs/scm.cpp
+++ VirtualBox-7.0.14/src/bldprogs/scm.cpp
@@ -2367,7 +2367,7 @@ static int scmProcessFileInner(PSCMRWSTA
pszTreatAs = "shell";
else if ( (cchFirst >= 15 && strncmp(pchFirst, "/usr/bin/python", 15) == 0)
|| (cchFirst >= 19 && strncmp(pchFirst, "/usr/bin/env python", 19) == 0) )
- pszTreatAs = "python";
+ pszTreatAs = "python3";
else if ( (cchFirst >= 13 && strncmp(pchFirst, "/usr/bin/perl", 13) == 0)
|| (cchFirst >= 17 && strncmp(pchFirst, "/usr/bin/env perl", 17) == 0) )
pszTreatAs = "perl";
Index: VirtualBox-7.0.14/src/VBox/Installer/linux/rpm/VirtualBox.tmpl.spec
===================================================================
--- VirtualBox-7.0.14.orig/src/VBox/Installer/linux/rpm/VirtualBox.tmpl.spec
+++ VirtualBox-7.0.14/src/VBox/Installer/linux/rpm/VirtualBox.tmpl.spec
@@ -32,6 +32,9 @@
%define VBOXDOCDIR %{_defaultdocdir}/%NAME%
%global __requires_exclude_from ^/usr/lib/virtualbox/VBoxPython.*$|^/usr/lib/python.*$|^.*\\.py$
%{!?python_sitelib: %define python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")}
+# SUSE defines these in python-rpm-macros, not necessarily available here
+%{!?__python3:%{_bindir}/python3}}
+%{!?python3_sitelib: %define python_sitelib python3 -c "import sysconfig as s; print(s.get_paths().get('purelib'))"}
Summary: Oracle VM VirtualBox
Name: %NAME%
Index: VirtualBox-7.0.14/src/libs/xpcom18a4/python/src/ErrorUtils.cpp
===================================================================
--- VirtualBox-7.0.14.orig/src/libs/xpcom18a4/python/src/ErrorUtils.cpp
+++ VirtualBox-7.0.14/src/libs/xpcom18a4/python/src/ErrorUtils.cpp
@@ -438,7 +438,9 @@ char *PyTraceback_AsString(PyObject *exc
{ // a temp scope so I can use temp locals.
#if PY_MAJOR_VERSION <= 2
- char *tempResult = PyString_AsString(obResult);
+ char *tempResult = (char *)PyString_AsString(obResult);
+#elif PY_MINOR_VERSION <= 6
+ char *tempResult = (char *)PyUnicode_AsUTF8(obResult);
#else
/* PyUnicode_AsUTF8() is const char * as of Python 3.7, char * earlier. */
const char *tempResult = (const char *)PyUnicode_AsUTF8(obResult);
Index: VirtualBox-7.0.14/src/libs/xpcom18a4/python/src/PyGBase.cpp
===================================================================
--- VirtualBox-7.0.14.orig/src/libs/xpcom18a4/python/src/PyGBase.cpp
+++ VirtualBox-7.0.14/src/libs/xpcom18a4/python/src/PyGBase.cpp
@@ -183,7 +183,11 @@ PyG_Base::~PyG_Base()
// Get the correct interface pointer for this object given the IID.
void *PyG_Base::ThisAsIID( const nsIID &iid )
{
- if (this==NULL) return NULL;
+#if PY_MINOR_VERSION <= 6
+ if (!this) return NULL;
+#else
+ if (!this) return NULL;
+#endif
if (iid.Equals(NS_GET_IID(nsISupports)))
return (nsISupports *)(nsIInternalPython *)this;
if (iid.Equals(NS_GET_IID(nsISupportsWeakReference)))
Index: VirtualBox-7.0.14/src/libs/xpcom18a4/python/gen_python_deps.py
===================================================================
--- VirtualBox-7.0.14.orig/src/libs/xpcom18a4/python/gen_python_deps.py
+++ VirtualBox-7.0.14/src/libs/xpcom18a4/python/gen_python_deps.py
@@ -96,7 +96,7 @@ def main(argv):
else:
multi = 1
- if multi == 0:
+ if not multi:
prefixes = ["/usr"]
versions = [str(sys.version_info[0])+'.'+str(sys.version_info[1]),
str(sys.version_info[0])+'.'+str(sys.version_info[1])+'m']
@@ -124,24 +124,25 @@ def main(argv):
continue
for p in prefixes:
c = checkPair(p, v, dllpre, dllsuff, bitness_magic)
- if c is not None:
+ if c:
known[v] = c
break
- keys = list(known.keys())
- # we want default to be the lowest versioned Python
- keys.sort()
- d = None
# We need separator other than newline, to sneak through $(shell)
sep = "|"
- for k in keys:
- if d is None:
- d = k
- vers = k.replace('.', '').upper()
- print_vars(vers, known[k], sep, bitness_magic)
- if d is not None:
- print_vars("DEF", known[d], sep, bitness_magic)
+
+ if not known:
+ # this type of problem should be detected in configure
+ # print_vars("DEF", defaultpaths, sep, bitness_magic)
+ pass
else:
print(argv[0] + ": No Python development package found!", file=sys.stderr)
+ if multi:
+ for ver, paths in known.items():
+ print_vars(ver.replace('.', '').upper(), paths, sep, bitness_magic)
+ else:
+ ver = versions[0]
+ paths = known[ver]
+ print_vars(ver.replace('.', ''), paths, sep, bitness_magic)
if __name__ == '__main__':
main(sys.argv)

13
vbox-smc-napa.diff Normal file
View File

@ -0,0 +1,13 @@
Index: VirtualBox-7.0.14/src/VBox/Devices/PC/vbox.dsl
===================================================================
--- VirtualBox-7.0.14.orig/src/VBox/Devices/PC/vbox.dsl
+++ VirtualBox-7.0.14/src/VBox/Devices/PC/vbox.dsl
@@ -1225,7 +1225,7 @@ DefinitionBlock ("DSDT.aml", "DSDT", 2,
Device (SMC)
{
Name (_HID, EisaId ("APP0001"))
- Name (_CID, "smc-napa")
+ Name (_CID, "smcnapa")
Method (_STA, 0, NotSerialized)
{

70
vbox-suid-warning.diff Normal file
View File

@ -0,0 +1,70 @@
Index: VirtualBox-7.0.20/src/apps/Makefile.kmk
===================================================================
--- VirtualBox-7.0.20.orig/src/apps/Makefile.kmk
+++ VirtualBox-7.0.20/src/apps/Makefile.kmk
@@ -30,5 +30,7 @@ include $(KBUILD_PATH)/subheader.kmk
include $(PATH_SUB_CURRENT)/VBoxPermissionMessage/Makefile.kmk
+include $(PATH_SUB_CURRENT)/VBoxSUIDMessage/Makefile.kmk
+
include $(FILE_KBUILD_SUB_FOOTER)
Index: VirtualBox-7.0.20/src/apps/VBoxSUIDMessage/Makefile.kmk
===================================================================
--- /dev/null
+++ VirtualBox-7.0.20/src/apps/VBoxSUIDMessage/Makefile.kmk
@@ -0,0 +1,33 @@
+# $Id: Makefile.kmk 28800 2010-04-27 08:22:32Z vboxsync $
+## @file
+#
+# VBoxSUIDMessage is wrapper for suse users
+#
+#
+# Copyright (C) 2009 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.
+#
+
+
+SUB_DEPTH = ../../..
+include $(KBUILD_PATH)/subheader.kmk
+
+PROGRAMS += VBoxSUIDMessage
+
+VBoxSUIDMessage_TEMPLATE = VBoxQtGuiExe
+VBoxSUIDMessage_SOURCES = VBoxSUIDMessage.cpp
+VBoxSUIDMessage_QT_MODULES = Core Gui
+VBoxSUIDMessage_QT_MODULES += Widgets
+
+#INSTALLS += VBoxSUIDMessage
+
+include $(KBUILD_PATH)/subfooter.kmk
+
+
Index: VirtualBox-7.0.20/src/apps/VBoxSUIDMessage/VBoxSUIDMessage.cpp
===================================================================
--- /dev/null
+++ VirtualBox-7.0.20/src/apps/VBoxSUIDMessage/VBoxSUIDMessage.cpp
@@ -0,0 +1,15 @@
+#include <QtWidgets/QApplication>
+#include <QtWidgets/QMessageBox>
+int main(int argc, char *argv[])
+{
+ QApplication app(argc, argv);
+ QMessageBox msgBox;
+ msgBox.setWindowTitle(QObject::tr("File Permissions problem !"));
+ msgBox.setText(QObject::tr("File VirtualBoxVM must be SUID, but the file permissions are wrong.\n\n"
+ "To fix this problem, please run\n"
+ "sudo chmod 4750 /usr/lib/virtualbox/VirtualBoxVM\n\n"
+ "Until this is done, Virtual Machines cannot run."));
+ msgBox.exec();
+ app.quit();
+ return 0;
+}

77
vbox-usb-warning.diff Normal file
View File

@ -0,0 +1,77 @@
Index: VirtualBox-7.0.20/src/apps/Makefile.kmk
===================================================================
--- VirtualBox-7.0.20.orig/src/apps/Makefile.kmk
+++ VirtualBox-7.0.20/src/apps/Makefile.kmk
@@ -32,5 +32,7 @@ include $(PATH_SUB_CURRENT)/VBoxPermissi
include $(PATH_SUB_CURRENT)/VBoxSUIDMessage/Makefile.kmk
+include $(PATH_SUB_CURRENT)/VBoxUSB_DevRules/Makefile.kmk
+
include $(FILE_KBUILD_SUB_FOOTER)
Index: VirtualBox-7.0.20/src/apps/VBoxUSB_DevRules/Makefile.kmk
===================================================================
--- /dev/null
+++ VirtualBox-7.0.20/src/apps/VBoxUSB_DevRules/Makefile.kmk
@@ -0,0 +1,30 @@
+# $Id: Makefile.kmk 28800 2010-04-27 08:22:32Z vboxsync $
+## @file
+#
+# VBoxUSB_DevRules is wrapper for suse users
+#
+# 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.
+#
+
+
+SUB_DEPTH = ../../..
+include $(KBUILD_PATH)/subheader.kmk
+
+PROGRAMS += VBoxUSB_DevRules
+
+VBoxUSB_DevRules_TEMPLATE = VBoxQtGuiExe
+VBoxUSB_DevRules_SOURCES = VBoxUSB_DevRules.cpp
+VBoxUSB_DevRules_QT_MODULES = Core Gui
+VBoxUSB_DevRules_QT_MODULES += Widgets
+
+#INSTALLS += VBoxUSB_DevRules
+
+include $(KBUILD_PATH)/subfooter.kmk
+
+
Index: VirtualBox-7.0.20/src/apps/VBoxUSB_DevRules/VBoxUSB_DevRules.cpp
===================================================================
--- /dev/null
+++ VirtualBox-7.0.20/src/apps/VBoxUSB_DevRules/VBoxUSB_DevRules.cpp
@@ -0,0 +1,25 @@
+#include <QtWidgets/QApplication>
+#include <QtWidgets/QMessageBox>
+#include <QtWidgets/QPushButton>+
+int main(int argc, char *argv[])
+{
+ QApplication app(argc, argv);
+ QMessageBox msgBox;
+ QPushButton *myYesButton = msgBox.addButton("Enable", QMessageBox::YesRole);
+ QPushButton *myNoButton = msgBox.addButton("Disable", QMessageBox::NoRole);
+ msgBox.setWindowTitle(QObject::tr("USB Rules and Permissions !"));
+ msgBox.setText(QObject::tr("USB passthrough requires read/write access to USB devices. "
+ "As a result, it opens a security hole.\n\n"
+ "Nonetheless, this feature is extremely useful and it may be worth the security risk. "
+ "Thus the code defaults to enabling it.\n\nIf you agree that the risk is acceptable, then click 'Enable'.\n"
+ "You should not be asked this question again when VB is updated. If you later change your mind, run 'rm ~/.config/virtualbox/*'\n\n"
+ "If you wish to disable USB passthrough to plug the security hole, then click 'Disable'. "
+ "You will be asked for the system password, and /etc/udev/rules.d/60-vboxdrv.rules will be changed.\n\n"
+ "These changes may not be preserved through VB updates, thus this screen may be displayed again at that time."));
+ msgBox.exec();
+ app.quit();
+ if (msgBox.clickedButton() == myYesButton)
+ return 0;
+ return 1;
+}
+

View File

@ -0,0 +1,213 @@
Index: VirtualBox-7.0.20/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
@@ -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-Stop: 0 1 6
# X-Start-Before: display-manager
# X-Service-Type: oneshot
# Description: VirtualBox Linux Additions kernel modules
+# Short-Description: VirtualBox Linux Additions kernel modules
### END INIT INFO
## @todo This file duplicates a lot of script with vboxdrv.sh. When making
@@ -266,12 +269,6 @@ do_vboxguest_non_udev()
fail "Cannot create device $dev with major $maj and minor $min"
}
fi
- chown $owner:$group $dev 2>/dev/null || {
- rm -f $dev 2>/dev/null
- rm -f $userdev 2>/dev/null
- rmmod vboxguest 2>/dev/null
- fail "Cannot change owner $owner:$group for device $dev"
- }
if [ ! -c $userdev ]; then
maj=10
@@ -282,12 +279,6 @@ do_vboxguest_non_udev()
rmmod vboxguest 2>/dev/null
fail "Cannot create device $userdev with major $maj and minor $min"
}
- chown $owner:$group $userdev 2>/dev/null || {
- rm -f $dev 2>/dev/null
- rm -f $userdev 2>/dev/null
- rmmod vboxguest 2>/dev/null
- fail "Cannot change owner $owner:$group for device $userdev"
- }
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.
+ 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
# 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`
- test -z "${myerr}" || log "${myerr}"
-
- return 0
+ succ_msg
}
# cleanup_script
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
depmod
# Remove old module sources
@@ -924,12 +911,13 @@ cleanup()
fi
# Clean-up X11-related bits
- "${INSTALL_DIR}/init/vboxadd-x11" cleanup
+ #/sbin/rcvboxadd-x11 cleanup
# 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
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

View File

@ -0,0 +1,72 @@
---
src/VBox/Installer/linux/vboxdrv.sh | 42 ++++++------------------------------
1 file changed, 7 insertions(+), 35 deletions(-)
Index: VirtualBox-7.1.0/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
@@ -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-Stop: 0 1 6
-# Short-Description: VirtualBox Linux kernel module
+# Short-Description: VirtualBox Linux module
+# Description: VirtualBox Linux kernel module
### 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
fi
fi
# ensure permissions
- if ! chown :"${GROUP}" $DEVICE 2>/dev/null; then
- rmmod vboxpci 2>/dev/null
- rmmod vboxnetadp 2>/dev/null
- rmmod vboxnetflt 2>/dev/null
- rmmod vboxdrv 2>/dev/null
- failure "Cannot change group ${GROUP} for device $DEVICE"
- fi
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()
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" \
- --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
- if test -e "$MODULE_SRC/vboxpci"; then
- log "Building the PCI pass-through module."
- if ! myerr=`$BUILDINTMP \
- --use-module-symvers /tmp/vboxdrv-Module.symvers \
- --module-source "$MODULE_SRC/vboxpci" \
- --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
- fi
- rm -f /etc/vbox/module_not_compiled
- depmod -a
- sync
- succ_msg "VirtualBox kernel modules built"
+
+ /usr/sbin/vboxconfig
# Sign kernel modules if kernel configuration requires it.
if test "$(kernel_requires_module_signature)" = "1"; then

20
vboxadd-service.service Normal file
View File

@ -0,0 +1,20 @@
[Unit]
SourcePath=/etc/init.d/vboxadd-service
Description=Start/Stop VirtualBox Guest Linux module
After=remote-fs.target
Wants=remote-fs.target
[Service]
Type=simple
Restart=no
TimeoutSec=5min
IgnoreSIGPIPE=no
KillMode=process
GuessMainPID=no
RemainAfterExit=yes
SuccessExitStatus=5 6
ExecStart=/usr/lib/virtualbox/vboxadd-service start
ExecStop=/usr/lib/virtualbox/vboxadd-service stop
[Install]
WantedBy=multi-user.target

View File

@ -0,0 +1,20 @@
[Unit]
SourcePath=/usr/lib/virtualbox/vboxautostart-service.sh
Description=
Before=runlevel2.target runlevel3.target runlevel4.target runlevel5.target shutdown.target
After=vboxdrv.service
Conflicts=shutdown.target
[Service]
Type=forking
Restart=no
TimeoutSec=5min
IgnoreSIGPIPE=no
KillMode=process
GuessMainPID=no
RemainAfterExit=yes
ExecStart=/usr/lib/virtualbox/vboxautostart-service.sh start
ExecStop=/usr/lib/virtualbox/vboxautostart-service.sh stop
[Install]
WantedBy=multi-user.target

174
vboxautostart-service.sh Normal file
View File

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

14
vboxclient.desktop Normal file
View File

@ -0,0 +1,14 @@
[Desktop Entry]
Type=Application
Version=1.0
Name=vboxclient
Name[C]=vboxclient
Comment[C]=VirtualBox User Session Services
Comment=VirtualBox User Session Services
Comment[it]=Servizi di sessione utente di VirtualBox
Comment[pl]=Usługi sesji użytkownika VirtualBox
Exec=/etc/X11/xinit/xinitrc.d/98vboxadd-xclient
X-GNOME-Autostart-enabled=true
X-KDE-autostart-after=panel
X-Desktop-File-Install-Version=0.26

13
vboxclient.service Normal file
View File

@ -0,0 +1,13 @@
[Unit]
Description=VirtualBox guest VMSVGA resize client
ConditionVirtualization=|oracle
[Service]
Type=simple
ExecCondition=sh -c '[ "$XDG_SESSION_TYPE" = "wayland" ] || exit -1'
ExecStart=/usr/bin/VBoxDRMClient
Restart=on-failure
[Install]
WantedBy=multi-user.target

60
vboxconfig.sh Normal file
View File

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

20
vboxdrv.service Normal file
View File

@ -0,0 +1,20 @@
[Unit]
SourcePath=/usr/lib/virtualbox/vboxdrv.sh
Description=VirtualBox Linux kernel module
Before=runlevel2.target runlevel3.target runlevel5.target shutdown.target
After=
Conflicts=shutdown.target
[Service]
Type=forking
Restart=no
TimeoutSec=5min
IgnoreSIGPIPE=no
KillMode=process
GuessMainPID=no
RemainAfterExit=yes
ExecStart=/usr/lib/virtualbox/vboxdrv.sh start
ExecStop=/usr/lib/virtualbox/vboxdrv.sh stop
[Install]
WantedBy=multi-user.target

375
vboxdrv.sh Normal file
View File

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

62
vboxguestconfig.sh Normal file
View File

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

9
vboxservice.service Normal file
View File

@ -0,0 +1,9 @@
[Unit]
Description=VirtualBox guest services
ConditionVirtualization=|oracle
[Service]
Type=simple
ExecStartPre=-/usr/sbin/modprobe vboxguest
ExecStart=/usr/sbin/VBoxService -f
Restart=on-failure

20
vboxweb-service.service Normal file
View File

@ -0,0 +1,20 @@
[Unit]
SourcePath=/usr/lib/virtualbox/vboxweb-service.sh
Description=
Before=runlevel2.target runlevel3.target runlevel4.target runlevel5.target shutdown.target
After=vboxdrv.service
Conflicts=shutdown.target
[Service]
Type=forking
Restart=no
TimeoutSec=5min
IgnoreSIGPIPE=no
KillMode=process
GuessMainPID=no
RemainAfterExit=yes
ExecStart=/usr/lib/virtualbox/vboxweb-service.sh start
ExecStop=/usr/lib/virtualbox/vboxweb-service.sh stop
[Install]
WantedBy=multi-user.target

229
vboxweb-service.sh Normal file
View File

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

View File

@ -0,0 +1,7 @@
KERNEL=="vboxdrv", NAME="vboxdrv", OWNER="root", GROUP="vboxusers", MODE="0660"
KERNEL=="vboxdrvu", NAME="vboxdrvu", OWNER="root", GROUP="vboxusers", MODE="0660"
KERNEL=="vboxnetctl", NAME="vboxnetctl", OWNER="root", GROUP="vboxusers", MODE="0660"
SUBSYSTEM=="usb_device", ACTION=="add", RUN+="/usr/lib/virtualbox/VBoxCreateUSBNode.sh $major $minor $attr{bDeviceClass}"
SUBSYSTEM=="usb", ACTION=="add", ENV{DEVTYPE}=="usb_device", RUN+="/usr/lib/virtualbox/VBoxCreateUSBNode.sh $major $minor $attr{bDeviceClass}"
SUBSYSTEM=="usb_device", ACTION=="remove", RUN+="/usr/lib/virtualbox/VBoxCreateUSBNode.sh --remove $major $minor"
SUBSYSTEM=="usb", ACTION=="remove", ENV{DEVTYPE}=="usb_device", RUN+="/usr/lib/virtualbox/VBoxCreateUSBNode.sh --remove $major $minor"

View File

@ -0,0 +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"
ACTION=="add|change", SUBSYSTEM=="drm", KERNEL=="card[0-9]", SUBSYSTEMS=="pci", ATTRS{vendor}=="0x15ad", ATTRS{device}=="0x0405", TAG+="systemd", ENV{SYSTEMD_WANTS}="vboxclient.service"

View File

@ -0,0 +1,14 @@
VBOX_WITH_TESTCASES =
VBOX_WITH_TESTSUITE =
VBOX_WITH_ORIGIN :=
VBOX_WITH_REGISTRATION_REQUEST =
VBOX_WITH_UPDATE_REQUEST =
VBOX_WITH_INSTALLER = 1
VBOX_WITH_LINUX_ADDITIONS = 1
VBOX_WITH_X11_ADDITIONS = 1
VBOX_PATH_APP_PRIVATE_ARCH := /usr/lib/virtualbox
VBOX_PATH_SHARED_LIBS := $(VBOX_PATH_APP_PRIVATE_ARCH)
VBOX_WITH_RUNPATH := $(VBOX_PATH_APP_PRIVATE_ARCH)
VBOX_PATH_APP_PRIVATE = /usr/share/virtualbox
VBOX_PATH_APP_DOCS := /usr/share/doc/packages/virtualbox
VBOX_WITH_REGISTRATION_REQUEST =

View File

@ -0,0 +1,17 @@
# /etc/default/virtualbox
#
# -------------------------------------------------------------------------------------------------
# Autostart
# -------------------------------------------------------------------------------------------------
VBOXAUTOSTART_DB=/etc/vbox
VBOXAUTOSTART_CONFIG=/etc/vbox/autostart.cfg
# -------------------------------------------------------------------------------------------------
# By default, vboxdrv creates a file /etc/udev/rules.d/60-vboxdrv.rules every time, it is started,
# that allows full control of this hosts usb devices in virtual machines (given, you allow accessing
# them with the GUI).
# In order to control this ability yourself, copy the generated /etc/udev/rules.d/60-vboxdrv.rules
# file to another name and modify to your needs, e.g. comment out all lines beginning with SUBSYSTEM,
# which will make this hosts usb devices inaccessible AND enable the next line.
#INSTALL_NO_UDEV=1

3
virtualbox-kmp-preamble Normal file
View File

@ -0,0 +1,3 @@
Requires: kernel-%1
Enhances: kernel-%1
Supplements: (virtualbox-guest-tools and kernel-%1)

View File

@ -0,0 +1,62 @@
#!/bin/bash
if [ -z "$1" ]; then
echo "You need to pass the filename VirtualBox-x.y.z.tar.bz2 as first argument."
exit 1
fi
REMOVE_DIRS=(
src/VBox/Additions/WINNT
src/VBox/Additions/os2
src/VBox/Runtime/r3/darwin
src/VBox/Runtime/r0drv/darwin
src/VBox/Runtime/darwin
kBuild/bin
kBuild/msgstyles
kBuild/tools
kBuild/sdks
tools/darwin.x86
tools/darwin.amd64
tools/freebsd.x86
tools/os2.x86
tools/solaris.x86
tools/solaris.amd64
tools/win.amd64
tools/win.x86
tools/linux.x86
tools/linux.amd64
)
set -o errexit
CMDNAME=${0##*/}
SOURCEDIR=${0%$CMDNAME}
BASENAME=${1%.tar.bz2}
trap "rm -rf \"$BASENAME-patched.tar\" \"$BASENAME-patched.tar.bz2\"" ERR
for (( N=0 ; N<${#REMOVE_DIRS[@]} ; N++ )) ; do
#REMOVE_DIRS[N]="$BASENAME/${REMOVE_DIRS[N]}"
# use a wildcard because VirtualBox-1.6.0-OSE != VirtualBox-1.6.0_OSE
REMOVE_DIRS[N]="*/${REMOVE_DIRS[N]}"
done
cd "$SOURCEDIR" >/dev/null
if ! test -f "$BASENAME.tar.bz2" ; then
exit 0
fi
if test -f "$BASENAME-patched.tar.bz2" ; then
if test "$BASENAME.tar.bz2" -ot "$BASENAME-patched.tar.bz2" ; then
if test $CMDNAME -ot "$BASENAME-patched.tar.bz2" ; then
exit 0
fi
fi
fi
cp -a "$BASENAME.tar.bz2" "$BASENAME-patched.tar.bz2"
bunzip2 "$BASENAME-patched.tar.bz2"
tar --wildcards --delete -f "$BASENAME-patched.tar" "${REMOVE_DIRS[@]}"
pixz -9 "$BASENAME-patched.tar"

4
virtualbox-rpmlintrc Normal file
View File

@ -0,0 +1,4 @@
addFilter("incoherent-init-script-name vboxdrv")
addFilter("incoherent-init-script-name vboxadd")
addFilter("xorg-x11-driver-virtualbox-ose.* shlib-policy-missing-suffix")
addFilter("executable-stack")

View File

@ -0,0 +1,27 @@
Index: VirtualBox-7.0.14/src/VBox/Main/Makefile.kmk
===================================================================
--- VirtualBox-7.0.14.orig/src/VBox/Main/Makefile.kmk
+++ VirtualBox-7.0.14/src/VBox/Main/Makefile.kmk
@@ -1895,7 +1895,7 @@ $(VBoxAPIWrap_0_OUTDIR)/VBoxAPI.d.ts \
$(QUIET)$(VBOX_XSLTPROC) --stringparam KBUILD_HOST $(KBUILD_HOST) \
--stringparam generating "dtrace-probes" \
-o "$@" $(VBoxAPIWrap_VBOX_XSLT) $(VBOX_XIDL_FILE)
- $(QUIET)$(SED) -e '' -o "$@.tmp" \
+ $(QUIET)$(SED) -e '' --output "$@.tmp" \
"$(VBOX_PATH_MAIN_SRC)/src-all/VBoxAPI-start$(if-expr "$(VBOX_HOST_DTRACE_VERSION)" == "dtrace: Sun D 1.6.2",-alternative,).d" \
"$@" \
"$(VBOX_PATH_MAIN_SRC)/src-all/VBoxAPI-end$(if-expr "$(VBOX_HOST_DTRACE_VERSION)" == "dtrace: Sun D 1.6.2",-alternative,).d"
Index: VirtualBox-7.0.14/src/VBox/Devices/Makefile.kmk
===================================================================
--- VirtualBox-7.0.14.orig/src/VBox/Devices/Makefile.kmk
+++ VirtualBox-7.0.14/src/VBox/Devices/Makefile.kmk
@@ -989,8 +989,7 @@ if !defined(VBOX_ONLY_EXTPACKS) && "$(in
$(call MSG_TOOL,iasl,VBoxDD,$<,$@)
$(QUIET)$(RM) -f $@ $@.tmp $@.pre
$(QUIET)$(TOOL_$(VBOX_GCC_TOOL)_CC) -E -P -x c -o $@.pre $<
- $(QUIET)$(SED) -e "s/<NL>/\n/g" \
- --output $@.pre1 $@.pre
+ $(QUIET)$(SED) -e "s/<NL>/\n/g" $@.pre > $@.pre1
$(QUIET)$(VBOX_IASLCMD) -tc -vs -p $@ $@.pre1
$(QUIET)$(MV) -f $@ $@.tmp
$(QUIET)$(SED) -e "s/AmlCode\|vboxssdt_cpuhotplug_aml_code/AmlCodeSsdtCpuHotPlug/g" \

70
virtualbox-wrapper.sh Normal file
View File

@ -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 "$@"

7900
virtualbox.changes Normal file

File diff suppressed because it is too large Load Diff

1026
virtualbox.spec Normal file

File diff suppressed because it is too large Load Diff