1
0
forked from pool/virtualbox

Accepting request 888128 from home:lwfinger:branches:Virtualization

- Version bump to (released April 20 2021 by Oracle)
  This is a maintenance release. The following items were fixed and/or added:
  VMM: Fixed extremely poor VM performance depending on the timing of various actions (regression in 6.1.0)
  VMM: Fixed guest OS hanging under certain circumstances when Hyper-V is present (bug #20141)
  VMM: Fixed Guru Meditation error when using a nested hypervisor under certain circumstances (bug #20175)
  VMM: Fixed a SMAP related host panic affecting Solaris 11.4 systems with Intel Haswell CPUs or later (bug #16068)
  OCI: Add cloud-init support for export to OCI and for OCI instance creation
  GUI: Fixed "Delete all files" leaving behind Logs/VBoxUI.log (bug #20235)
  Audio: Multiple fixes and enhancements
  Audio: Fixed detection of duplex audio devices on macOS (5.0 regression; bug #20171)
  Network: Fixed link status reporting for "not attached" adapters
  Network: Fixed connectivity issues with e1000 in OS/2 guests (6.1.18 regression; bug #20148)
  Network: Fixed VxWorks e1000 driver compatibility issue (bug #20182)
  Network: Fixed GUI checks for port forwarding rules rejecting IPv6 with "Nat Network" (bug #14847)
  DHCP: Don't crash in the presence of fixed address assignments (bug #20128)
  Serial: Fixed possible VM hang when using the a serial port in disconnected mode (bug #19854)
  Webcam: Fixed interoperability with v4l2loopback and fixed a crash under certain circumstances (bug #20176)
  NVMe: Fixed sporadic Windows VM hang or reboot on high CPU load
  VBoxManage: Allow changing network adapter attachment of a saved VM with "modifyvm"
  vboximg-mount: Fix for argument processing to honor the '--root' option (6.0 regression; bug #20073)
  Linux host and guest: Support kernel versions 5.11 (bug #20198) and 5.12
  Linux host: Maximum MTU size increased to 16110 for host-only adapters on Linux kernels 4.10+ (bug #19122)
  Linux Guest Additions: Fix vboxvideo module compilation for kernel version 5.10.x
  Linux Guest Additions: Fixed kernel module build for RHEL 8.4 beta and CentOS Stream (bug #20289)
  File "fixes-for-5.11.patch" is deleted. The issue is fixed upstream.
  File "vboxautostart.sh" is replaced by "vboxautostart-service.sh"
  File "vboxautostart.service" is replaced by "vboxautostart-service.service"
  Fixes boo#1183329 "virtualbox 6.1.18 crashes when it runs nested VM"
  Fixes boo#1183125 "Leap 15.3 installation in Virtualbox without VBox integration"
  Fixes CVE-2021-2264 and boo#1184542. The directory for the <user>.start files for
    autostarting VMs is moved from /etc/vbox to /etc/vbox/autostart.d. In addition, the autostart
    service is hardened (by Oracle).

OBS-URL: https://build.opensuse.org/request/show/888128
OBS-URL: https://build.opensuse.org/package/show/Virtualization/virtualbox?expand=0&rev=597
This commit is contained in:
Larry Finger 2021-04-24 13:48:44 +00:00 committed by Git OBS Bridge
parent ebaeb4f44b
commit 221b12cb3b
14 changed files with 497 additions and 321 deletions

View File

@ -20,17 +20,20 @@ Users work
========== ==========
The *first* time a user configures autostart, the command: The *first* time a user configures autostart, the command:
VBoxManage setproperty autostartdbpath /etc/vbox VBoxManage setproperty autostartdbpath /etc/vbox/autostart.d
needs to be run. needs to be run.
Note: The autostart options are stored in the /etc/vbox file, and in the 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. VM itself. If moving a VM, these options may need to be set again.
Prepare a VM to start automatically: Prepare a VM to start automatically:
VBoxManage modifyvm <uuid|vmname> --autostart-enabled <on|off> VBoxManage modifyvm <uuid|vmname> --autostart-enabled on
Choose a shut down mode: Choose a shut down mode:
VBoxManage modifyvm <uuid|vmname> --autostop-type <disabled|savestate|poweroff|acpishutdown> VBoxManage modifyvm <uuid|vmname> --autostop-type <disabled|savestate|poweroff|acpishutdown>
Restart the vboxdrv service to start the VMs in question Restart the vboxdrv service to start the VMs in question
sudo service vboxdrv restart sudo service vboxdrv restart
To turn off autostart for a VM
VBoxManage modifyvm <uuid|vmname> --autostart-enabled off

View File

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:50cf78dc97e9ce7227f6aa1966b5478ff50abad85485626dc603bb5e98808664 oid sha256:66b7dd9f1d5b53b6273d883e16b3776d9a168279383bfba5db479f99effa89b4
size 4969463 size 4972709

View File

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

View File

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

View File

@ -1,14 +0,0 @@
Index: VirtualBox-6.1.16/src/VBox/HostDrivers/VBoxNetFlt/linux/VBoxNetFlt-linux.c
===================================================================
--- VirtualBox-6.1.16.orig/src/VBox/HostDrivers/VBoxNetFlt/linux/VBoxNetFlt-linux.c
+++ VirtualBox-6.1.16/src/VBox/HostDrivers/VBoxNetFlt/linux/VBoxNetFlt-linux.c
@@ -342,6 +342,9 @@ typedef struct ethtool_ops OVR_OPSTYPE;
# else /* RTLNX_VER_MIN(2,6,29) */
+#if RTLNX_VER_MIN(5,11,0)
+# include <linux/ethtool.h>
+#endif
typedef struct net_device_ops OVR_OPSTYPE;
# define OVR_OPS netdev_ops
# define OVR_XMIT pOrgOps->ndo_start_xmit

View File

@ -1,8 +1,8 @@
Index: VirtualBox-6.1.16/src/VBox/HostDrivers/VBoxNetFlt/linux/VBoxNetFlt-linux.c Index: VirtualBox-6.1.20/src/VBox/HostDrivers/VBoxNetFlt/linux/VBoxNetFlt-linux.c
=================================================================== ===================================================================
--- VirtualBox-6.1.16.orig/src/VBox/HostDrivers/VBoxNetFlt/linux/VBoxNetFlt-linux.c --- VirtualBox-6.1.20.orig/src/VBox/HostDrivers/VBoxNetFlt/linux/VBoxNetFlt-linux.c
+++ VirtualBox-6.1.16/src/VBox/HostDrivers/VBoxNetFlt/linux/VBoxNetFlt-linux.c +++ VirtualBox-6.1.20/src/VBox/HostDrivers/VBoxNetFlt/linux/VBoxNetFlt-linux.c
@@ -73,6 +73,10 @@ @@ -76,6 +76,10 @@
#define VBOXNETFLT_OS_SPECFIC 1 #define VBOXNETFLT_OS_SPECFIC 1
#include "../VBoxNetFltInternal.h" #include "../VBoxNetFltInternal.h"
@ -13,10 +13,10 @@ Index: VirtualBox-6.1.16/src/VBox/HostDrivers/VBoxNetFlt/linux/VBoxNetFlt-linux.
typedef struct VBOXNETFLTNOTIFIER { typedef struct VBOXNETFLTNOTIFIER {
struct notifier_block Notifier; struct notifier_block Notifier;
PVBOXNETFLTINS pThis; PVBOXNETFLTINS pThis;
Index: VirtualBox-6.1.16/src/VBox/Additions/linux/drm/vbox_drv.c Index: VirtualBox-6.1.20/src/VBox/Additions/linux/drm/vbox_drv.c
=================================================================== ===================================================================
--- VirtualBox-6.1.16.orig/src/VBox/Additions/linux/drm/vbox_drv.c --- VirtualBox-6.1.20.orig/src/VBox/Additions/linux/drm/vbox_drv.c
+++ VirtualBox-6.1.16/src/VBox/Additions/linux/drm/vbox_drv.c +++ VirtualBox-6.1.20/src/VBox/Additions/linux/drm/vbox_drv.c
@@ -310,12 +310,15 @@ static void vbox_master_drop(struct drm_ @@ -310,12 +310,15 @@ static void vbox_master_drop(struct drm_
} }
@ -34,13 +34,13 @@ Index: VirtualBox-6.1.16/src/VBox/Additions/linux/drm/vbox_drv.c
- DRIVER_PRIME, - DRIVER_PRIME,
+ DRIVER_MODESET | DRIVER_GEM | DRIVER_HAVE_IRQ, + DRIVER_MODESET | DRIVER_GEM | DRIVER_HAVE_IRQ,
#else /* >= 5.4.0 && RHEL >= 8.3 */ #else /* >= 5.4.0 && RHEL >= 8.3 */
.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_HAVE_IRQ, .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_HAVE_IRQ,
#endif /* < 5.4.0 */ #endif /* < 5.4.0 */
Index: VirtualBox-6.1.16/src/VBox/Additions/linux/drm/vbox_main.c Index: VirtualBox-6.1.20/src/VBox/Additions/linux/drm/vbox_main.c
=================================================================== ===================================================================
--- VirtualBox-6.1.16.orig/src/VBox/Additions/linux/drm/vbox_main.c --- VirtualBox-6.1.20.orig/src/VBox/Additions/linux/drm/vbox_main.c
+++ VirtualBox-6.1.16/src/VBox/Additions/linux/drm/vbox_main.c +++ VirtualBox-6.1.20/src/VBox/Additions/linux/drm/vbox_main.c
@@ -638,8 +638,12 @@ static inline u64 vbox_bo_mmap_offset(st @@ -640,8 +640,12 @@ static inline u64 vbox_bo_mmap_offset(st
#elif RTLNX_VER_MAX(3,12,0) && !RTLNX_RHEL_MAJ_PREREQ(7,0) #elif RTLNX_VER_MAX(3,12,0) && !RTLNX_RHEL_MAJ_PREREQ(7,0)
return bo->bo.addr_space_offset; return bo->bo.addr_space_offset;
#else #else
@ -53,10 +53,10 @@ Index: VirtualBox-6.1.16/src/VBox/Additions/linux/drm/vbox_main.c
} }
int int
Index: VirtualBox-6.1.16/include/iprt/cdefs.h Index: VirtualBox-6.1.20/include/iprt/cdefs.h
=================================================================== ===================================================================
--- VirtualBox-6.1.16.orig/include/iprt/cdefs.h --- VirtualBox-6.1.20.orig/include/iprt/cdefs.h
+++ VirtualBox-6.1.16/include/iprt/cdefs.h +++ VirtualBox-6.1.20/include/iprt/cdefs.h
@@ -1173,14 +1173,15 @@ @@ -1173,14 +1173,15 @@
* Tell the compiler that we're falling through to the next case in a switch. * Tell the compiler that we're falling through to the next case in a switch.
* @sa RT_FALL_THRU */ * @sa RT_FALL_THRU */

View File

@ -1,8 +1,8 @@
Index: VirtualBox-6.1.18/src/VBox/Additions/linux/drm/vbox_drv.c Index: VirtualBox-6.1.20/src/VBox/Additions/linux/drm/vbox_drv.c
=================================================================== ===================================================================
--- VirtualBox-6.1.18.orig/src/VBox/Additions/linux/drm/vbox_drv.c --- VirtualBox-6.1.20.orig/src/VBox/Additions/linux/drm/vbox_drv.c
+++ VirtualBox-6.1.18/src/VBox/Additions/linux/drm/vbox_drv.c +++ VirtualBox-6.1.20/src/VBox/Additions/linux/drm/vbox_drv.c
@@ -331,7 +331,9 @@ static struct drm_driver driver = { @@ -330,7 +330,9 @@ static struct drm_driver driver = {
.master_drop = vbox_master_drop, .master_drop = vbox_master_drop,
#if RTLNX_VER_MIN(3,18,0) || RTLNX_RHEL_MAJ_PREREQ(7,2) #if RTLNX_VER_MIN(3,18,0) || RTLNX_RHEL_MAJ_PREREQ(7,2)
# if RTLNX_VER_MAX(4,14,0) && !RTLNX_RHEL_MAJ_PREREQ(7,5) && !RTLNX_SUSE_MAJ_PREREQ(15,1) && !RTLNX_SUSE_MAJ_PREREQ(12,5) # if RTLNX_VER_MAX(4,14,0) && !RTLNX_RHEL_MAJ_PREREQ(7,5) && !RTLNX_SUSE_MAJ_PREREQ(15,1) && !RTLNX_SUSE_MAJ_PREREQ(12,5)
@ -12,10 +12,10 @@ Index: VirtualBox-6.1.18/src/VBox/Additions/linux/drm/vbox_drv.c
# endif # endif
#endif #endif
Index: VirtualBox-6.1.18/src/VBox/Additions/linux/drm/vbox_main.c Index: VirtualBox-6.1.20/src/VBox/Additions/linux/drm/vbox_main.c
=================================================================== ===================================================================
--- VirtualBox-6.1.18.orig/src/VBox/Additions/linux/drm/vbox_main.c --- VirtualBox-6.1.20.orig/src/VBox/Additions/linux/drm/vbox_main.c
+++ VirtualBox-6.1.18/src/VBox/Additions/linux/drm/vbox_main.c +++ VirtualBox-6.1.20/src/VBox/Additions/linux/drm/vbox_main.c
@@ -618,11 +618,13 @@ int vbox_dumb_destroy(struct drm_file *f @@ -618,11 +618,13 @@ int vbox_dumb_destroy(struct drm_file *f
#endif #endif
@ -30,11 +30,11 @@ Index: VirtualBox-6.1.18/src/VBox/Additions/linux/drm/vbox_main.c
void vbox_gem_free_object(struct drm_gem_object *obj) void vbox_gem_free_object(struct drm_gem_object *obj)
{ {
Index: VirtualBox-6.1.18/src/VBox/Additions/linux/drm/vbox_ttm.c Index: VirtualBox-6.1.20/src/VBox/Additions/linux/drm/vbox_ttm.c
=================================================================== ===================================================================
--- VirtualBox-6.1.18.orig/src/VBox/Additions/linux/drm/vbox_ttm.c --- VirtualBox-6.1.20.orig/src/VBox/Additions/linux/drm/vbox_ttm.c
+++ VirtualBox-6.1.18/src/VBox/Additions/linux/drm/vbox_ttm.c +++ VirtualBox-6.1.20/src/VBox/Additions/linux/drm/vbox_ttm.c
@@ -256,7 +256,7 @@ static struct ttm_backend_func vbox_tt_b @@ -271,7 +271,7 @@ static struct ttm_backend_func vbox_tt_b
}; };
#endif #endif
@ -43,16 +43,16 @@ Index: VirtualBox-6.1.18/src/VBox/Additions/linux/drm/vbox_ttm.c
static struct ttm_tt *vbox_ttm_tt_create(struct ttm_bo_device *bdev, static struct ttm_tt *vbox_ttm_tt_create(struct ttm_bo_device *bdev,
unsigned long size, unsigned long size,
u32 page_flags, u32 page_flags,
@@ -275,7 +275,7 @@ static struct ttm_tt *vbox_ttm_tt_create @@ -290,7 +290,7 @@ static struct ttm_tt *vbox_ttm_tt_create
#if RTLNX_VER_MAX(5,10,0) #if RTLNX_VER_MAX(5,10,0)
tt->func = &vbox_tt_backend_func; tt->func = &vbox_tt_backend_func;
#endif #endif
-#if RTLNX_VER_MAX(4,17,0) && !RTLNX_RHEL_MAJ_PREREQ(7,6) && !RTLNX_SUSE_MAJ_PREREQ(15,1) && !RTLNX_SUSE_MAJ_PREREQ(12,5) -#if RTLNX_VER_MAX(4,17,0) && !RTLNX_RHEL_MAJ_PREREQ(7,6) && !RTLNX_SUSE_MAJ_PREREQ(15,1) && !RTLNX_SUSE_MAJ_PREREQ(12,5)
+#if RTLNX_VER_MAX(4,17,0) && !RTLNX_RHEL_MAJ_PREREQ(7,6) && !RTLNX_SUSE_MAJ_PREREQ(15,1) && !RTLNX_SUSE_MAJ_PREREQ(12,5) && !defined(SUSE_SLE12) +#if RTLNX_VER_MAX(4,17,0) && !RTLNX_RHEL_MAJ_PREREQ(7,6) && !RTLNX_SUSE_MAJ_PREREQ(15,1) && !RTLNX_SUSE_MAJ_PREREQ(12,5) && !defined(SUSE_SLE12)
if (ttm_tt_init(tt, bdev, size, page_flags, dummy_read_page)) { if (ttm_tt_init(tt, bdev, size, page_flags, dummy_read_page)) {
#else #elif RTLNX_VER_MAX(5,11,0)
if (ttm_tt_init(tt, bo, page_flags)) { if (ttm_tt_init(tt, bo, page_flags)) {
@@ -288,7 +288,7 @@ static struct ttm_tt *vbox_ttm_tt_create @@ -305,7 +305,7 @@ static struct ttm_tt *vbox_ttm_tt_create
} }
#if RTLNX_VER_MAX(4,17,0) #if RTLNX_VER_MAX(4,17,0)
@ -61,7 +61,7 @@ Index: VirtualBox-6.1.18/src/VBox/Additions/linux/drm/vbox_ttm.c
static int vbox_ttm_tt_populate(struct ttm_tt *ttm) static int vbox_ttm_tt_populate(struct ttm_tt *ttm)
{ {
return ttm_pool_populate(ttm); return ttm_pool_populate(ttm);
@@ -327,7 +327,7 @@ static struct ttm_bo_driver vbox_bo_driv @@ -353,7 +353,7 @@ static struct ttm_bo_driver vbox_bo_driv
.io_mem_reserve = &vbox_ttm_io_mem_reserve, .io_mem_reserve = &vbox_ttm_io_mem_reserve,
.io_mem_free = &vbox_ttm_io_mem_free, .io_mem_free = &vbox_ttm_io_mem_free,
#if RTLNX_VER_MIN(4,12,0) || RTLNX_RHEL_MAJ_PREREQ(7,5) #if RTLNX_VER_MIN(4,12,0) || RTLNX_RHEL_MAJ_PREREQ(7,5)
@ -70,7 +70,7 @@ Index: VirtualBox-6.1.18/src/VBox/Additions/linux/drm/vbox_ttm.c
.io_mem_pfn = ttm_bo_default_io_mem_pfn, .io_mem_pfn = ttm_bo_default_io_mem_pfn,
# endif # endif
#endif #endif
@@ -500,7 +500,7 @@ int vbox_bo_create(struct drm_device *de @@ -556,7 +556,7 @@ int vbox_bo_create(struct drm_device *de
ret = ttm_bo_init(&vbox->ttm.bdev, &vboxbo->bo, size, ret = ttm_bo_init(&vbox->ttm.bdev, &vboxbo->bo, size,
ttm_bo_type_device, &vboxbo->placement, ttm_bo_type_device, &vboxbo->placement,
@ -79,7 +79,7 @@ Index: VirtualBox-6.1.18/src/VBox/Additions/linux/drm/vbox_ttm.c
align >> PAGE_SHIFT, false, NULL, acc_size, align >> PAGE_SHIFT, false, NULL, acc_size,
#else #else
align >> PAGE_SHIFT, false, acc_size, align >> PAGE_SHIFT, false, acc_size,
@@ -533,7 +533,7 @@ static inline u64 vbox_bo_gpu_offset(str @@ -589,7 +589,7 @@ static inline u64 vbox_bo_gpu_offset(str
int vbox_bo_pin(struct vbox_bo *bo, u32 mem_type, u64 *gpu_addr) int vbox_bo_pin(struct vbox_bo *bo, u32 mem_type, u64 *gpu_addr)
{ {
@ -87,56 +87,56 @@ Index: VirtualBox-6.1.18/src/VBox/Additions/linux/drm/vbox_ttm.c
+#if RTLNX_VER_MIN(4,16,0) || RTLNX_RHEL_MAJ_PREREQ(7,6) || RTLNX_SUSE_MAJ_PREREQ(15,1) || RTLNX_SUSE_MAJ_PREREQ(12,5) || defined(SUSE_SLE12) +#if RTLNX_VER_MIN(4,16,0) || RTLNX_RHEL_MAJ_PREREQ(7,6) || RTLNX_SUSE_MAJ_PREREQ(15,1) || RTLNX_SUSE_MAJ_PREREQ(12,5) || defined(SUSE_SLE12)
struct ttm_operation_ctx ctx = { false, false }; struct ttm_operation_ctx ctx = { false, false };
#endif #endif
int i, ret; int ret;
@@ -551,7 +551,7 @@ int vbox_bo_pin(struct vbox_bo *bo, u32 @@ -612,7 +612,7 @@ int vbox_bo_pin(struct vbox_bo *bo, u32
for (i = 0; i < bo->placement.num_placement; i++)
PLACEMENT_FLAGS(bo->placements[i]) |= TTM_PL_FLAG_NO_EVICT; PLACEMENT_FLAGS(bo->placements[i]) |= TTM_PL_FLAG_NO_EVICT;
#endif
-#if RTLNX_VER_MAX(4,16,0) && !RTLNX_RHEL_MAJ_PREREQ(7,6) && !RTLNX_SUSE_MAJ_PREREQ(15,1) && !RTLNX_SUSE_MAJ_PREREQ(12,5) -#if RTLNX_VER_MAX(4,16,0) && !RTLNX_RHEL_MAJ_PREREQ(7,6) && !RTLNX_SUSE_MAJ_PREREQ(15,1) && !RTLNX_SUSE_MAJ_PREREQ(12,5)
+#if RTLNX_VER_MAX(4,16,0) && !RTLNX_RHEL_MAJ_PREREQ(7,6) && !RTLNX_SUSE_MAJ_PREREQ(15,1) && !RTLNX_SUSE_MAJ_PREREQ(12,5) && !defined(SUSE_SLE12) +#if RTLNX_VER_MAX(4,16,0) && !RTLNX_RHEL_MAJ_PREREQ(7,6) && !RTLNX_SUSE_MAJ_PREREQ(15,1) && !RTLNX_SUSE_MAJ_PREREQ(12,5) && !defined(SUSE_SLE12)
ret = ttm_bo_validate(&bo->bo, &bo->placement, false, false); ret = ttm_bo_validate(&bo->bo, &bo->placement, false, false);
#else #else
ret = ttm_bo_validate(&bo->bo, &bo->placement, &ctx); ret = ttm_bo_validate(&bo->bo, &bo->placement, &ctx);
@@ -569,7 +569,7 @@ int vbox_bo_pin(struct vbox_bo *bo, u32 @@ -634,7 +634,7 @@ int vbox_bo_pin(struct vbox_bo *bo, u32
int vbox_bo_unpin(struct vbox_bo *bo) int vbox_bo_unpin(struct vbox_bo *bo)
{ {
-#if RTLNX_VER_MIN(4,16,0) || RTLNX_RHEL_MAJ_PREREQ(7,6) || RTLNX_SUSE_MAJ_PREREQ(15,1) || RTLNX_SUSE_MAJ_PREREQ(12,5) -#if RTLNX_VER_MIN(4,16,0) || RTLNX_RHEL_MAJ_PREREQ(7,6) || RTLNX_SUSE_MAJ_PREREQ(15,1) || RTLNX_SUSE_MAJ_PREREQ(12,5)
+#if RTLNX_VER_MIN(4,16,0) || RTLNX_RHEL_MAJ_PREREQ(7,6) || RTLNX_SUSE_MAJ_PREREQ(15,1) || RTLNX_SUSE_MAJ_PREREQ(12,5) || defined(SUSE_SLE12) +#if RTLNX_VER_MIN(4,16,0) || RTLNX_RHEL_MAJ_PREREQ(7,6) || RTLNX_SUSE_MAJ_PREREQ(15,1) || RTLNX_SUSE_MAJ_PREREQ(12,5) || defined(SUSE_SLE12)
# if RTLNX_VER_MAX(5,11,0)
struct ttm_operation_ctx ctx = { false, false }; struct ttm_operation_ctx ctx = { false, false };
#endif # endif
int i, ret; @@ -657,7 +657,7 @@ int vbox_bo_unpin(struct vbox_bo *bo)
@@ -585,7 +585,7 @@ int vbox_bo_unpin(struct vbox_bo *bo)
for (i = 0; i < bo->placement.num_placement; i++)
PLACEMENT_FLAGS(bo->placements[i]) &= ~TTM_PL_FLAG_NO_EVICT; PLACEMENT_FLAGS(bo->placements[i]) &= ~TTM_PL_FLAG_NO_EVICT;
#endif
-#if RTLNX_VER_MAX(4,16,0) && !RTLNX_RHEL_MAJ_PREREQ(7,6) && !RTLNX_SUSE_MAJ_PREREQ(15,1) && !RTLNX_SUSE_MAJ_PREREQ(12,5) -#if RTLNX_VER_MAX(4,16,0) && !RTLNX_RHEL_MAJ_PREREQ(7,6) && !RTLNX_SUSE_MAJ_PREREQ(15,1) && !RTLNX_SUSE_MAJ_PREREQ(12,5)
+#if RTLNX_VER_MAX(4,16,0) && !RTLNX_RHEL_MAJ_PREREQ(7,6) && !RTLNX_SUSE_MAJ_PREREQ(15,1) && !RTLNX_SUSE_MAJ_PREREQ(12,5) && !defined(SUSE_SLE12) +#if RTLNX_VER_MAX(4,16,0) && !RTLNX_RHEL_MAJ_PREREQ(7,6) && !RTLNX_SUSE_MAJ_PREREQ(15,1) && !RTLNX_SUSE_MAJ_PREREQ(12,5) && !defined(SUSE_SLE12)
ret = ttm_bo_validate(&bo->bo, &bo->placement, false, false); ret = ttm_bo_validate(&bo->bo, &bo->placement, false, false);
#else #elif RTLNX_VER_MAX(5,11,0)
ret = ttm_bo_validate(&bo->bo, &bo->placement, &ctx); ret = ttm_bo_validate(&bo->bo, &bo->placement, &ctx);
@@ -603,7 +603,7 @@ int vbox_bo_unpin(struct vbox_bo *bo) @@ -680,7 +680,7 @@ int vbox_bo_unpin(struct vbox_bo *bo)
*/ */
int vbox_bo_push_sysram(struct vbox_bo *bo) int vbox_bo_push_sysram(struct vbox_bo *bo)
{ {
-#if RTLNX_VER_MIN(4,16,0) || RTLNX_RHEL_MAJ_PREREQ(7,6) || RTLNX_SUSE_MAJ_PREREQ(15,1) || RTLNX_SUSE_MAJ_PREREQ(12,5) -# if RTLNX_VER_MIN(4,16,0) || RTLNX_RHEL_MAJ_PREREQ(7,6) || RTLNX_SUSE_MAJ_PREREQ(15,1) || RTLNX_SUSE_MAJ_PREREQ(12,5)
+#if RTLNX_VER_MIN(4,16,0) || RTLNX_RHEL_MAJ_PREREQ(7,6) || RTLNX_SUSE_MAJ_PREREQ(15,1) || RTLNX_SUSE_MAJ_PREREQ(12,5) || defined(SUSE_SLE12) +# if RTLNX_VER_MIN(4,16,0) || RTLNX_RHEL_MAJ_PREREQ(7,6) || RTLNX_SUSE_MAJ_PREREQ(15,1) || RTLNX_SUSE_MAJ_PREREQ(12,5) || defined(SUSE_SLE12)
struct ttm_operation_ctx ctx = { false, false }; struct ttm_operation_ctx ctx = { false, false };
#endif # endif
int i, ret; int i, ret;
@@ -624,7 +624,7 @@ int vbox_bo_push_sysram(struct vbox_bo * @@ -701,7 +701,7 @@ int vbox_bo_push_sysram(struct vbox_bo *
for (i = 0; i < bo->placement.num_placement; i++) for (i = 0; i < bo->placement.num_placement; i++)
PLACEMENT_FLAGS(bo->placements[i]) |= TTM_PL_FLAG_NO_EVICT; PLACEMENT_FLAGS(bo->placements[i]) |= TTM_PL_FLAG_NO_EVICT;
-#if RTLNX_VER_MAX(4,16,0) && !RTLNX_RHEL_MAJ_PREREQ(7,6) && !RTLNX_SUSE_MAJ_PREREQ(15,1) && !RTLNX_SUSE_MAJ_PREREQ(12,5) -# if RTLNX_VER_MAX(4,16,0) && !RTLNX_RHEL_MAJ_PREREQ(7,6) && !RTLNX_SUSE_MAJ_PREREQ(15,1) && !RTLNX_SUSE_MAJ_PREREQ(12,5)
+#if RTLNX_VER_MAX(4,16,0) && !RTLNX_RHEL_MAJ_PREREQ(7,6) && !RTLNX_SUSE_MAJ_PREREQ(15,1) && !RTLNX_SUSE_MAJ_PREREQ(12,5) && !defined(SUSE_SLE12) +# if RTLNX_VER_MAX(4,16,0) && !RTLNX_RHEL_MAJ_PREREQ(7,6) && !RTLNX_SUSE_MAJ_PREREQ(15,1) && !RTLNX_SUSE_MAJ_PREREQ(12,5) && !defined(SUSE_SLE12)
ret = ttm_bo_validate(&bo->bo, &bo->placement, false, false); ret = ttm_bo_validate(&bo->bo, &bo->placement, false, false);
#else # else
ret = ttm_bo_validate(&bo->bo, &bo->placement, &ctx); ret = ttm_bo_validate(&bo->bo, &bo->placement, &ctx);
Index: VirtualBox-6.1.18/src/VBox/Additions/linux/drm/vbox_drv.h Index: VirtualBox-6.1.20/src/VBox/Additions/linux/drm/vbox_drv.h
=================================================================== ===================================================================
--- VirtualBox-6.1.18.orig/src/VBox/Additions/linux/drm/vbox_drv.h --- VirtualBox-6.1.20.orig/src/VBox/Additions/linux/drm/vbox_drv.h
+++ VirtualBox-6.1.18/src/VBox/Additions/linux/drm/vbox_drv.h +++ VirtualBox-6.1.20/src/VBox/Additions/linux/drm/vbox_drv.h
@@ -87,6 +87,9 @@ @@ -87,6 +87,9 @@
#else #else
# define RTLNX_RHEL_MAX(a_iMajor, a_iMinor) (0) # define RTLNX_RHEL_MAX(a_iMajor, a_iMinor) (0)
@ -147,10 +147,10 @@ Index: VirtualBox-6.1.18/src/VBox/Additions/linux/drm/vbox_drv.h
/** @def RTLNX_RHEL_RANGE /** @def RTLNX_RHEL_RANGE
* Check that it's a RedHat kernel in the given version range. * Check that it's a RedHat kernel in the given version range.
Index: VirtualBox-6.1.18/src/VBox/Additions/linux/drm/vbox_mode.c Index: VirtualBox-6.1.20/src/VBox/Additions/linux/drm/vbox_mode.c
=================================================================== ===================================================================
--- VirtualBox-6.1.18.orig/src/VBox/Additions/linux/drm/vbox_mode.c --- VirtualBox-6.1.20.orig/src/VBox/Additions/linux/drm/vbox_mode.c
+++ VirtualBox-6.1.18/src/VBox/Additions/linux/drm/vbox_mode.c +++ VirtualBox-6.1.20/src/VBox/Additions/linux/drm/vbox_mode.c
@@ -544,7 +544,8 @@ static void vbox_set_edid(struct drm_con @@ -544,7 +544,8 @@ static void vbox_set_edid(struct drm_con
for (i = 0; i < EDID_SIZE - 1; ++i) for (i = 0; i < EDID_SIZE - 1; ++i)
sum += edid[i]; sum += edid[i];

View File

@ -1,7 +1,7 @@
Index: VirtualBox-6.1.14/src/bldprogs/scm.cpp Index: VirtualBox-6.1.20/src/bldprogs/scm.cpp
=================================================================== ===================================================================
--- VirtualBox-6.1.14.orig/src/bldprogs/scm.cpp --- VirtualBox-6.1.20.orig/src/bldprogs/scm.cpp
+++ VirtualBox-6.1.14/src/bldprogs/scm.cpp +++ VirtualBox-6.1.20/src/bldprogs/scm.cpp
@@ -2206,7 +2206,7 @@ static int scmProcessFileInner(PSCMRWSTA @@ -2206,7 +2206,7 @@ static int scmProcessFileInner(PSCMRWSTA
pszTreatAs = "shell"; pszTreatAs = "shell";
else if ( (cchFirst >= 15 && strncmp(pchFirst, "/usr/bin/python", 15) == 0) else if ( (cchFirst >= 15 && strncmp(pchFirst, "/usr/bin/python", 15) == 0)
@ -11,10 +11,10 @@ Index: VirtualBox-6.1.14/src/bldprogs/scm.cpp
else if ( (cchFirst >= 13 && strncmp(pchFirst, "/usr/bin/perl", 13) == 0) else if ( (cchFirst >= 13 && strncmp(pchFirst, "/usr/bin/perl", 13) == 0)
|| (cchFirst >= 17 && strncmp(pchFirst, "/usr/bin/env perl", 17) == 0) ) || (cchFirst >= 17 && strncmp(pchFirst, "/usr/bin/env perl", 17) == 0) )
pszTreatAs = "perl"; pszTreatAs = "perl";
Index: VirtualBox-6.1.14/src/libs/libxml2-2.9.4/configure Index: VirtualBox-6.1.20/src/libs/libxml2-2.9.4/configure
=================================================================== ===================================================================
--- VirtualBox-6.1.14.orig/src/libs/libxml2-2.9.4/configure --- VirtualBox-6.1.20.orig/src/libs/libxml2-2.9.4/configure
+++ VirtualBox-6.1.14/src/libs/libxml2-2.9.4/configure +++ VirtualBox-6.1.20/src/libs/libxml2-2.9.4/configure
@@ -15153,10 +15153,10 @@ PYTHON_SITE_PACKAGES= @@ -15153,10 +15153,10 @@ PYTHON_SITE_PACKAGES=
PYTHON_TESTS= PYTHON_TESTS=
pythondir= pythondir=
@ -39,10 +39,10 @@ Index: VirtualBox-6.1.14/src/libs/libxml2-2.9.4/configure
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; } $as_echo_n "checking for $ac_word... " >&6; }
if ${ac_cv_path_PYTHON+:} false; then : if ${ac_cv_path_PYTHON+:} false; then :
Index: VirtualBox-6.1.14/src/VBox/ValidationKit/testboxscript/setup.sh Index: VirtualBox-6.1.20/src/VBox/ValidationKit/testboxscript/setup.sh
=================================================================== ===================================================================
--- VirtualBox-6.1.14.orig/src/VBox/ValidationKit/testboxscript/setup.sh --- VirtualBox-6.1.20.orig/src/VBox/ValidationKit/testboxscript/setup.sh
+++ VirtualBox-6.1.14/src/VBox/ValidationKit/testboxscript/setup.sh +++ VirtualBox-6.1.20/src/VBox/ValidationKit/testboxscript/setup.sh
@@ -652,7 +652,7 @@ import sys;\ @@ -652,7 +652,7 @@ import sys;\
x = sys.version_info[0] == 2 and (sys.version_info[1] >= 6 or (sys.version_info[1] == 5 and sys.version_info[2] >= 1));\ x = sys.version_info[0] == 2 and (sys.version_info[1] >= 6 or (sys.version_info[1] == 5 and sys.version_info[2] >= 1));\
sys.exit(not x);\ sys.exit(not x);\
@ -52,14 +52,14 @@ Index: VirtualBox-6.1.14/src/VBox/ValidationKit/testboxscript/setup.sh
do do
python=`which ${python} 2> /dev/null` python=`which ${python} 2> /dev/null`
if [ -n "${python}" -a -x "${python}" ]; then if [ -n "${python}" -a -x "${python}" ]; then
Index: VirtualBox-6.1.14/src/VBox/Installer/linux/rpm/VirtualBox.tmpl.spec Index: VirtualBox-6.1.20/src/VBox/Installer/linux/rpm/VirtualBox.tmpl.spec
=================================================================== ===================================================================
--- VirtualBox-6.1.14.orig/src/VBox/Installer/linux/rpm/VirtualBox.tmpl.spec --- VirtualBox-6.1.20.orig/src/VBox/Installer/linux/rpm/VirtualBox.tmpl.spec
+++ VirtualBox-6.1.14/src/VBox/Installer/linux/rpm/VirtualBox.tmpl.spec +++ VirtualBox-6.1.20/src/VBox/Installer/linux/rpm/VirtualBox.tmpl.spec
@@ -20,7 +20,7 @@ @@ -20,7 +20,7 @@
%define %PYTHON% 1 %define %PYTHON% 1
%define VBOXDOCDIR %{_defaultdocdir}/%NAME% %define VBOXDOCDIR %{_defaultdocdir}/%NAME%
%global __requires_exclude_from ^/usr/lib/virtualbox/VBoxPython.*$ %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())")} -%{!?python_sitelib: %define python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")}
+%{!?python_sitelib: %define python_sitelib python3 -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")} +%{!?python_sitelib: %define python_sitelib python3 -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")}
@ -74,10 +74,10 @@ Index: VirtualBox-6.1.14/src/VBox/Installer/linux/rpm/VirtualBox.tmpl.spec
%endif %endif
rm -rf sdk/installer rm -rf sdk/installer
mv nls $RPM_BUILD_ROOT/usr/share/virtualbox mv nls $RPM_BUILD_ROOT/usr/share/virtualbox
Index: VirtualBox-6.1.14/src/libs/libxml2-2.9.4/libxml.spec.in Index: VirtualBox-6.1.20/src/libs/libxml2-2.9.4/libxml.spec.in
=================================================================== ===================================================================
--- VirtualBox-6.1.14.orig/src/libs/libxml2-2.9.4/libxml.spec.in --- VirtualBox-6.1.20.orig/src/libs/libxml2-2.9.4/libxml.spec.in
+++ VirtualBox-6.1.14/src/libs/libxml2-2.9.4/libxml.spec.in +++ VirtualBox-6.1.20/src/libs/libxml2-2.9.4/libxml.spec.in
@@ -101,11 +101,11 @@ rm -fr %{buildroot} @@ -101,11 +101,11 @@ rm -fr %{buildroot}
make install DESTDIR=%{buildroot} make install DESTDIR=%{buildroot}
@ -93,10 +93,10 @@ Index: VirtualBox-6.1.14/src/libs/libxml2-2.9.4/libxml.spec.in
rm -f $RPM_BUILD_ROOT%{_libdir}/*.la rm -f $RPM_BUILD_ROOT%{_libdir}/*.la
Index: VirtualBox-6.1.14/src/libs/libxml2-2.9.4/libxml2.spec Index: VirtualBox-6.1.20/src/libs/libxml2-2.9.4/libxml2.spec
=================================================================== ===================================================================
--- VirtualBox-6.1.14.orig/src/libs/libxml2-2.9.4/libxml2.spec --- VirtualBox-6.1.20.orig/src/libs/libxml2-2.9.4/libxml2.spec
+++ VirtualBox-6.1.14/src/libs/libxml2-2.9.4/libxml2.spec +++ VirtualBox-6.1.20/src/libs/libxml2-2.9.4/libxml2.spec
@@ -103,7 +103,7 @@ make install DESTDIR=%{buildroot} @@ -103,7 +103,7 @@ make install DESTDIR=%{buildroot}
%if 0%{?with_python3} %if 0%{?with_python3}
@ -106,10 +106,10 @@ Index: VirtualBox-6.1.14/src/libs/libxml2-2.9.4/libxml2.spec
make install DESTDIR=%{buildroot} make install DESTDIR=%{buildroot}
%endif # with_python3 %endif # with_python3
Index: VirtualBox-6.1.14/src/libs/xpcom18a4/python/src/ErrorUtils.cpp Index: VirtualBox-6.1.20/src/libs/xpcom18a4/python/src/ErrorUtils.cpp
=================================================================== ===================================================================
--- VirtualBox-6.1.14.orig/src/libs/xpcom18a4/python/src/ErrorUtils.cpp --- VirtualBox-6.1.20.orig/src/libs/xpcom18a4/python/src/ErrorUtils.cpp
+++ VirtualBox-6.1.14/src/libs/xpcom18a4/python/src/ErrorUtils.cpp +++ VirtualBox-6.1.20/src/libs/xpcom18a4/python/src/ErrorUtils.cpp
@@ -439,6 +439,8 @@ char *PyTraceback_AsString(PyObject *exc @@ -439,6 +439,8 @@ char *PyTraceback_AsString(PyObject *exc
{ // a temp scope so I can use temp locals. { // a temp scope so I can use temp locals.
#if PY_MAJOR_VERSION <= 2 #if PY_MAJOR_VERSION <= 2
@ -119,10 +119,10 @@ Index: VirtualBox-6.1.14/src/libs/xpcom18a4/python/src/ErrorUtils.cpp
#else #else
/* PyUnicode_AsUTF8() is const char * as of Python 3.7, char * earlier. */ /* PyUnicode_AsUTF8() is const char * as of Python 3.7, char * earlier. */
const char *tempResult = (const char *)PyUnicode_AsUTF8(obResult); const char *tempResult = (const char *)PyUnicode_AsUTF8(obResult);
Index: VirtualBox-6.1.14/src/libs/xpcom18a4/python/src/PyGBase.cpp Index: VirtualBox-6.1.20/src/libs/xpcom18a4/python/src/PyGBase.cpp
=================================================================== ===================================================================
--- VirtualBox-6.1.14.orig/src/libs/xpcom18a4/python/src/PyGBase.cpp --- VirtualBox-6.1.20.orig/src/libs/xpcom18a4/python/src/PyGBase.cpp
+++ VirtualBox-6.1.14/src/libs/xpcom18a4/python/src/PyGBase.cpp +++ VirtualBox-6.1.20/src/libs/xpcom18a4/python/src/PyGBase.cpp
@@ -183,7 +183,11 @@ PyG_Base::~PyG_Base() @@ -183,7 +183,11 @@ PyG_Base::~PyG_Base()
// Get the correct interface pointer for this object given the IID. // Get the correct interface pointer for this object given the IID.
void *PyG_Base::ThisAsIID( const nsIID &iid ) void *PyG_Base::ThisAsIID( const nsIID &iid )
@ -136,11 +136,11 @@ Index: VirtualBox-6.1.14/src/libs/xpcom18a4/python/src/PyGBase.cpp
if (iid.Equals(NS_GET_IID(nsISupports))) if (iid.Equals(NS_GET_IID(nsISupports)))
return (nsISupports *)(nsIInternalPython *)this; return (nsISupports *)(nsIInternalPython *)this;
if (iid.Equals(NS_GET_IID(nsISupportsWeakReference))) if (iid.Equals(NS_GET_IID(nsISupportsWeakReference)))
Index: VirtualBox-6.1.14/src/libs/xpcom18a4/python/Makefile.kmk Index: VirtualBox-6.1.20/src/libs/xpcom18a4/python/Makefile.kmk
=================================================================== ===================================================================
--- VirtualBox-6.1.14.orig/src/libs/xpcom18a4/python/Makefile.kmk --- VirtualBox-6.1.20.orig/src/libs/xpcom18a4/python/Makefile.kmk
+++ VirtualBox-6.1.14/src/libs/xpcom18a4/python/Makefile.kmk +++ VirtualBox-6.1.20/src/libs/xpcom18a4/python/Makefile.kmk
@@ -533,6 +533,52 @@ VBoxPython3_8m_x86_LIBS = $(VBOX_P @@ -579,6 +579,52 @@ VBoxPython3_9m_x86_LIBS = $(VBOX_P
endif endif
endif endif
@ -193,16 +193,16 @@ Index: VirtualBox-6.1.14/src/libs/xpcom18a4/python/Makefile.kmk
ifdef VBOX_PYTHONDEF_INC ifdef VBOX_PYTHONDEF_INC
# #
# Python without versioning # Python without versioning
Index: VirtualBox-6.1.14/src/libs/xpcom18a4/python/gen_python_deps.py Index: VirtualBox-6.1.20/src/libs/xpcom18a4/python/gen_python_deps.py
=================================================================== ===================================================================
--- VirtualBox-6.1.14.orig/src/libs/xpcom18a4/python/gen_python_deps.py --- VirtualBox-6.1.20.orig/src/libs/xpcom18a4/python/gen_python_deps.py
+++ VirtualBox-6.1.14/src/libs/xpcom18a4/python/gen_python_deps.py +++ VirtualBox-6.1.20/src/libs/xpcom18a4/python/gen_python_deps.py
@@ -16,7 +16,7 @@ from __future__ import print_function @@ -16,7 +16,7 @@ from __future__ import print_function
import os,sys import os,sys
from distutils.version import StrictVersion from distutils.version import StrictVersion
-versions = ["2.6", "2.7", "3.1", "3.2", "3.2m", "3.3", "3.3m", "3.4", "3.4m", "3.5", "3.5m", "3.6", "3.6m", "3.7", "3.7m", "3.8", "3.8m" ] -versions = ["2.6", "2.7", "3.1", "3.2", "3.2m", "3.3", "3.3m", "3.4", "3.4m", "3.5", "3.5m", "3.6", "3.6m", "3.7", "3.7m", "3.8", "3.8m", "3.9", "3.9m" ]
+versions = ["2.6", "2.7", "3.1", "3.2", "3.2m", "3.3", "3.3m", "3.4", "3.4m", "3.5", "3.5m", "3.6", "3.6m", "3.7", "3.7m", "3.8", "3.8m", "3.8", "3.8m" ] +versions = ["2.6", "2.7", "3.1", "3.2", "3.2m", "3.3", "3.3m", "3.4", "3.4m", "3.5", "3.5m", "3.6", "3.6m", "3.7", "3.7m", "3.8", "3.8m", "3.8", "3.8m", "3.9", "3.9m" ]
prefixes = ["/usr", "/usr/local", "/opt", "/opt/local"] prefixes = ["/usr", "/usr/local", "/opt", "/opt/local"]
known = {} known = {}

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

View File

@ -1,18 +0,0 @@
[Unit]
SourcePath=/usr/lib/virtualbox/vboxautostart.sh
Description=VirtualBox Linux autostart module
Requires=vboxdrv.service
After=vboxdrv.service
After=network.target
After=time-sync.target
After=nss-user-lookup.target
[Service]
ExecStart=/usr/lib/virtualbox/vboxautostart.sh start
ExecStop=/usr/lib/virtualbox/vboxautostart.sh stop
Type=oneshot
RemainAfterExit=yes
TimeoutStopSec=0
[Install]
WantedBy=multi-user.target

View File

@ -1,126 +0,0 @@
#!/bin/sh
# VirtualBox autostart service init script.
#
# Copyright (C) 2012-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 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=/sbin:/bin:/usr/sbin:/usr/bin:$PATH
SCRIPTNAME=vboxautostart.sh
# read vbox config
[ -f /etc/vbox/vbox.cfg ] && . /etc/vbox/vbox.cfg
# read autostart config
[ -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}."
}
vboxdrvrunning() {
lsmod | grep -q "vboxdrv[^_-]"
}
start_vms()
{
OLD_IFS=$IFS
IFS=$'\n'
[ -z "$VBOXAUTOSTART_DB" ] && return
[ -z "$VBOXAUTOSTART_CONFIG" ] && return
begin_msg "Starting VirtualBox VMs configured for autostart" console;
vboxdrvrunning || {
fail_msg "VirtualBox kernel module not loaded!"
exit 0
}
# read autostart config file
if [ -r $VBOXAUTOSTART_CONFIG ]; then
# prevent inheriting this setting to VBoxSVC
unset VBOX_RELEASE_LOG_DEST
# find all the files of type username.start
var=$(ls $VBOXAUTOSTART_DB | grep start | grep -v auto)
# process each file of that type
for i in $var; do
# Extract the user name - the first word on the line
user=$(echo $i | head -n1 | cut -d "." -f1)
# autostart the VMs for that user
begin_msg "Starting VMs for user $user" console
su - $user -c "/usr/lib/virtualbox/VBoxAutostart --start --config $VBOXAUTOSTART_CONFIG"
succ_msg "VMs for user $user started"
done
fi
IFS=$OLD_IFS
}
stop_vms()
{
OLD_IFS=$IFS
IFS=$'\n'
[ -z "$VBOXAUTOSTART_DB" ] && return
[ -z "$VBOXAUTOSTART_CONFIG" ] && return
# read autostart config file
if [ -r $VBOXAUTOSTART_CONFIG ]; then
# prevent inheriting this setting to VBoxSVC
unset VBOX_RELEASE_LOG_DEST
# find all the files of type username.stop
var=$(ls $VBOXAUTOSTART_DB | grep stop | grep -v auto)
# process each file of that type
for i in $var; do
# Extract the user name - the first word on the line
user=$(echo $i | head -n1 | cut -d "." -f1)
# autostop the VMs for that user
begin_msg "Stopping VMs for user $user" console
su - $user -c "/usr/lib/virtualbox/VBoxAutostart --stop --config $VBOXAUTOSTART_CONFIG"
succ_msg "VMs for user $user stopped"
done
fi
IFS=$OLD_IFS
}
case "$1" in
start)
start_vms
;;
stop)
stop_vms
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
exit 0

View File

@ -1,3 +1,47 @@
-------------------------------------------------------------------
Tue Apr 20 19:27:40 UTC 2021 - Larry Finger <Larry.Finger@gmail.com>
- Version bump to (released April 20 2021 by Oracle)
This is a maintenance release. The following items were fixed and/or added:
VMM: Fixed extremely poor VM performance depending on the timing of various actions (regression in 6.1.0)
VMM: Fixed guest OS hanging under certain circumstances when Hyper-V is present (bug #20141)
VMM: Fixed Guru Meditation error when using a nested hypervisor under certain circumstances (bug #20175)
VMM: Fixed a SMAP related host panic affecting Solaris 11.4 systems with Intel Haswell CPUs or later (bug #16068)
OCI: Add cloud-init support for export to OCI and for OCI instance creation
GUI: Fixed "Delete all files" leaving behind Logs/VBoxUI.log (bug #20235)
Audio: Multiple fixes and enhancements
Audio: Fixed detection of duplex audio devices on macOS (5.0 regression; bug #20171)
Network: Fixed link status reporting for "not attached" adapters
Network: Fixed connectivity issues with e1000 in OS/2 guests (6.1.18 regression; bug #20148)
Network: Fixed VxWorks e1000 driver compatibility issue (bug #20182)
Network: Fixed GUI checks for port forwarding rules rejecting IPv6 with "Nat Network" (bug #14847)
DHCP: Don't crash in the presence of fixed address assignments (bug #20128)
Serial: Fixed possible VM hang when using the a serial port in disconnected mode (bug #19854)
Webcam: Fixed interoperability with v4l2loopback and fixed a crash under certain circumstances (bug #20176)
NVMe: Fixed sporadic Windows VM hang or reboot on high CPU load
VBoxManage: Allow changing network adapter attachment of a saved VM with "modifyvm"
vboximg-mount: Fix for argument processing to honor the '--root' option (6.0 regression; bug #20073)
Linux host and guest: Support kernel versions 5.11 (bug #20198) and 5.12
Linux host: Maximum MTU size increased to 16110 for host-only adapters on Linux kernels 4.10+ (bug #19122)
Linux Guest Additions: Fix vboxvideo module compilation for kernel version 5.10.x
Linux Guest Additions: Fixed kernel module build for RHEL 8.4 beta and CentOS Stream (bug #20289)
File "fixes-for-5.11.patch" is deleted. The issue is fixed upstream.
File "vboxautostart.sh" is replaced by "vboxautostart-service.sh"
File "vboxautostart.service" is replaced by "vboxautostart-service.service"
Fixes boo#1183329 "virtualbox 6.1.18 crashes when it runs nested VM"
Fixes boo#1183125 "Leap 15.3 installation in Virtualbox without VBox integration"
Fixes CVE-2021-2264 and boo#1184542. The directory for the <user>.start files for
autostarting VMs is moved from /etc/vbox to /etc/vbox/autostart.d. In addition, the autostart
service is hardened (by Oracle).
-------------------------------------------------------------------
Wed Apr 7 16:21:58 UTC 2021 - Larry Finger <Larry.Finger@gmail.com>
- Improve autostart security boo#1182918.
------------------------------------------------------------------- -------------------------------------------------------------------
Thu Apr 1 09:43:50 UTC 2021 - Richard Brown <rbrown@suse.com> Thu Apr 1 09:43:50 UTC 2021 - Richard Brown <rbrown@suse.com>

View File

@ -16,17 +16,6 @@
# #
#create a variable that indicates we are building for Leap 15.{2,3}. These versions
#need to have the guest modules build. Tumbleweed does not.
#
%define for_leap 0
%if 0%{?sle_version == 150200}
%define for_leap 1
%endif
%if 0%{?sle_version == 150300}
%define for_leap 1
%endif
%if "@BUILD_FLAVOR@" == "kmp" %if "@BUILD_FLAVOR@" == "kmp"
### macros for virtualbox-kmp ### ### macros for virtualbox-kmp ###
%define main_package 0 %define main_package 0
@ -77,7 +66,7 @@ python3 -O -c "import sys, os, compileall; br='%{buildroot}'; compileall.compile
# ********* If the VB version exceeds 6.1.x, notify the libvirt maintainer!! # ********* If the VB version exceeds 6.1.x, notify the libvirt maintainer!!
Name: virtualbox%{?dash}%{?name_suffix} Name: virtualbox%{?dash}%{?name_suffix}
Version: 6.1.18 Version: 6.1.20
Release: 0 Release: 0
Summary: %{package_summary} Summary: %{package_summary}
License: GPL-2.0-or-later License: GPL-2.0-or-later
@ -95,11 +84,7 @@ Source2: VirtualBox.appdata.xml
%endif %endif
Source3: virtualbox-60-vboxguest.rules Source3: virtualbox-60-vboxguest.rules
Source4: virtualbox-default.virtualbox Source4: virtualbox-default.virtualbox
%if %{for_leap}
Source5: virtualbox-kmp-files-leap Source5: virtualbox-kmp-files-leap
%else
Source5: virtualbox-kmp-files
%endif
Source7: virtualbox-kmp-preamble Source7: virtualbox-kmp-preamble
Source8: update-extpack.sh Source8: update-extpack.sh
Source9: virtualbox-wrapper.sh Source9: virtualbox-wrapper.sh
@ -108,16 +93,14 @@ Source11: virtualbox-60-vboxdrv.rules
Source14: vboxdrv.service Source14: vboxdrv.service
Source15: vboxadd-service.service Source15: vboxadd-service.service
Source16: vboxconfig.sh Source16: vboxconfig.sh
%if %{for_leap}
Source17: vboxguestconfig.sh Source17: vboxguestconfig.sh
%endif
Source18: fix_usb_rules.sh Source18: fix_usb_rules.sh
Source19: vboxdrv.sh Source19: vboxdrv.sh
Source20: README.autostart Source20: README.autostart
Source21: vboxweb-service.service Source21: vboxweb-service.service
Source22: vboxweb-service.sh Source22: vboxweb-service.sh
Source23: vboxautostart.service Source23: vboxautostart-service.service
Source24: vboxautostart.sh Source24: vboxautostart-service.sh
Source97: README.build Source97: README.build
Source98: virtualbox-rpmlintrc Source98: virtualbox-rpmlintrc
Source99: virtualbox-patch-source.sh Source99: virtualbox-patch-source.sh
@ -196,7 +179,6 @@ Patch135: fix-missing-includes-with-qt-5.15.patch
Patch136: fixes_for_gcc10.patch Patch136: fixes_for_gcc10.patch
# Fix for changes in GSOAP 2.8.103 # Fix for changes in GSOAP 2.8.103
Patch137: handle_gsoap_208103.patch Patch137: handle_gsoap_208103.patch
Patch138: fixes-for-5.11.patch
# Fix for struct file_operations backport in 15.3 # Fix for struct file_operations backport in 15.3
Patch139: fixes_for_leap15.3.patch Patch139: fixes_for_leap15.3.patch
Patch141: vb-6.1.16-modal-dialog-parent.patch Patch141: vb-6.1.16-modal-dialog-parent.patch
@ -326,6 +308,22 @@ and others, and limited virtualization of macOS guests on Apple
hardware. VirtualBox is freely available as Open Source Software under hardware. VirtualBox is freely available as Open Source Software under
the terms of the GNU Public License (GPL). the terms of the GNU Public License (GPL).
########################################## ##########################################
%package qt %package qt
Summary: Qt GUI part for %{name} Summary: Qt GUI part for %{name}
@ -343,6 +341,22 @@ Obsoletes: %{name}-ose-qt < %{version}
%description qt %description qt
This package contains the code for the GUI used to control VMs. This package contains the code for the GUI used to control VMs.
######################################### #########################################
%package websrv %package websrv
Summary: WebService GUI part for %{name} Summary: WebService GUI part for %{name}
@ -354,12 +368,28 @@ Obsoletes: %{name}-vboxwebsrv
%description websrv %description websrv
The VirtualBox web server is used to control headless VMs using a browser. The VirtualBox web server is used to control headless VMs using a browser.
######################################### #########################################
%package guest-x11 %package guest-x11
Summary: VirtualBox X11 drivers for mouse and video Summary: VirtualBox X11 drivers for mouse and video
Group: System/X11/Servers/XF86_4 Group: System/X11/Servers/XF86_4
Requires: %{name}-kmp = %{version} Requires: %{name}-kmp = %{version}
Supplements: modalias(xorg-x11-server:pci:v000080EEd0000BEEFsv*sd*bc*sc*i*) Supplements: modalias(xorg-x11-server:pci:v000080EEd0000CAFEsv*sd*bc*sc*i*)
#rename from xorg-x11-driver-virtualbox-ose: #rename from xorg-x11-driver-virtualbox-ose:
Provides: xorg-x11-driver-virtualbox-ose = %{version} Provides: xorg-x11-driver-virtualbox-ose = %{version}
Obsoletes: xorg-x11-driver-virtualbox-ose < %{version} Obsoletes: xorg-x11-driver-virtualbox-ose < %{version}
@ -367,12 +397,28 @@ Obsoletes: xorg-x11-driver-virtualbox-ose < %{version}
%description guest-x11 %description guest-x11
This package contains X11 guest utilities and X11 guest mouse and video drivers This package contains X11 guest utilities and X11 guest mouse and video drivers
########################################### ###########################################
%package guest-tools %package guest-tools
Summary: VirtualBox guest tools Summary: VirtualBox guest tools
Group: System/Emulators/PC Group: System/Emulators/PC
Requires: %{name}-kmp = %{version} Requires: %{name}-kmp = %{version}
Supplements: modalias(pci:v000080EEd0000BEEFsv*sd*bc*sc*i*) Supplements: modalias(pci:v000080EEd0000CAFEsv*sd*bc*sc*i*)
#rename from "ose" version: #rename from "ose" version:
Provides: %{name}-ose-guest-tools = %{version} Provides: %{name}-ose-guest-tools = %{version}
Obsoletes: %{name}-ose-guest-tools < %{version} Obsoletes: %{name}-ose-guest-tools < %{version}
@ -383,6 +429,22 @@ Requires(pre): net-tools-deprecated
%description guest-tools %description guest-tools
VirtualBox guest addition tools. VirtualBox guest addition tools.
########################################### ###########################################
%package -n python3-%{name} %package -n python3-%{name}
Summary: Python bindings for %{name} Summary: Python bindings for %{name}
@ -401,6 +463,22 @@ Obsoletes: python3-%{name}-ose < %{version}
%description -n python3-%{name} %description -n python3-%{name}
Python XPCOM bindings to %{name}. Used e.g. by vboxgtk package. Python XPCOM bindings to %{name}. Used e.g. by vboxgtk package.
########################################### ###########################################
%package devel %package devel
Summary: Devel files for %{name} Summary: Devel files for %{name}
@ -414,6 +492,22 @@ Obsoletes: %{name}-ose-devel < %{version}
%description devel %description devel
Development file for %{name} Development file for %{name}
########################################### ###########################################
%package host-source %package host-source
Summary: Source files for %{name} host kernel modules Summary: Source files for %{name} host kernel modules
@ -430,7 +524,6 @@ Source files for %{name} host kernel modules
These can be built for custom kernels using These can be built for custom kernels using
sudo /sbin/vboxconfig sudo /sbin/vboxconfig
%if %{for_leap}
%package guest-source %package guest-source
Summary: Source files for %{name} guest kernel modules Summary: Source files for %{name} guest kernel modules
Group: Development/Sources Group: Development/Sources
@ -444,7 +537,7 @@ BuildArch: noarch
Source files for %{name} guest kernel modules Source files for %{name} guest kernel modules
These can be built for custom kernels using These can be built for custom kernels using
sudo /sbin/vboxguestconfig sudo /sbin/vboxguestconfig
%endif
########################################### ###########################################
%package guest-desktop-icons %package guest-desktop-icons
@ -457,6 +550,22 @@ BuildArch: noarch
%description guest-desktop-icons %description guest-desktop-icons
This package contains icons for guest desktop files that were created on the desktop. This package contains icons for guest desktop files that were created on the desktop.
########################################### ###########################################
%package vnc %package vnc
Summary: VNC desktop sharing Summary: VNC desktop sharing
@ -524,7 +633,6 @@ This package contains the kernel-modules that VirtualBox uses to create or run v
%patch135 -p1 %patch135 -p1
%patch136 -p1 %patch136 -p1
%patch137 -p1 %patch137 -p1
%patch138 -p1
%if 0%{?sle_version} == 150300 && 0%{?is_opensuse} %if 0%{?sle_version} == 150300 && 0%{?is_opensuse}
# Patch for Leap 15.3 # Patch for Leap 15.3
%patch139 -p1 %patch139 -p1
@ -632,6 +740,7 @@ install -d -m 755 %{buildroot}%{_sysconfdir}/init.d
install -d %{buildroot}%{_unitdir} install -d %{buildroot}%{_unitdir}
install -d %{buildroot}%{_unitdir}/multi-user.target.wants install -d %{buildroot}%{_unitdir}/multi-user.target.wants
install -d -m 755 %{buildroot}%{_sysconfdir}/vbox install -d -m 755 %{buildroot}%{_sysconfdir}/vbox
install -d -m 755 %{buildroot}%{_sysconfdir}/vbox/autostart.d
install -d -m 755 %{buildroot}%{_udevrulesdir} install -d -m 755 %{buildroot}%{_udevrulesdir}
install -d -m 755 %{buildroot}%{_sysconfdir}/X11/xinit/xinitrc.d install -d -m 755 %{buildroot}%{_sysconfdir}/X11/xinit/xinitrc.d
@ -717,9 +826,7 @@ install -m 644 nls/* %{buildroot}%{_datadir}/virtualbox/nls/
# install kmp src # install kmp src
mkdir -p %{buildroot}%{_usrsrc}/kernel-modules/virtualbox mkdir -p %{buildroot}%{_usrsrc}/kernel-modules/virtualbox
mkdir -p %{buildroot}%{_usrsrc}/kernel-modules/additions mkdir -p %{buildroot}%{_usrsrc}/kernel-modules/additions
%if %{for_leap}
tar jcf %{buildroot}%{_usrsrc}/kernel-modules/additions/guest_src.tar.bz2 additions/src tar jcf %{buildroot}%{_usrsrc}/kernel-modules/additions/guest_src.tar.bz2 additions/src
%endif
cp -a src %{buildroot}%{_usrsrc}/kernel-modules/virtualbox cp -a src %{buildroot}%{_usrsrc}/kernel-modules/virtualbox
install -m 644 %{SOURCE11} %{buildroot}%{_udevrulesdir}/60-vboxdrv.rules install -m 644 %{SOURCE11} %{buildroot}%{_udevrulesdir}/60-vboxdrv.rules
popd popd
@ -746,23 +853,22 @@ install -m 0644 %{SOURCE14} %{buildroot}%{_unitdir}/vboxdrv.
ln -s -f %{_sbindir}/service %{buildroot}%{_sbindir}/rcvboxdrv ln -s -f %{_sbindir}/service %{buildroot}%{_sbindir}/rcvboxdrv
install -m 0644 %{SOURCE15} %{buildroot}%{_unitdir}/vboxadd-service.service install -m 0644 %{SOURCE15} %{buildroot}%{_unitdir}/vboxadd-service.service
install -m 0755 %{SOURCE16} %{buildroot}/sbin/vboxconfig install -m 0755 %{SOURCE16} %{buildroot}/sbin/vboxconfig
%if %{for_leap}
install -m 0755 %{SOURCE17} %{buildroot}/sbin/vboxguestconfig install -m 0755 %{SOURCE17} %{buildroot}/sbin/vboxguestconfig
%endif
install -m 0755 %{SOURCE18} %{buildroot}/sbin/vbox-fix-usb-rules.sh install -m 0755 %{SOURCE18} %{buildroot}/sbin/vbox-fix-usb-rules.sh
install -m 0755 %{SOURCE19} %{buildroot}%{_vbox_instdir}/vboxdrv.sh install -m 0755 %{SOURCE19} %{buildroot}%{_vbox_instdir}/vboxdrv.sh
install -m 0644 %{SOURCE21} %{buildroot}%{_unitdir}/vboxweb-service.service install -m 0644 %{SOURCE21} %{buildroot}%{_unitdir}/vboxweb-service.service
install -m 0755 %{SOURCE22} %{buildroot}%{_vbox_instdir}/vboxweb-service.sh install -m 0755 %{SOURCE22} %{buildroot}%{_vbox_instdir}/vboxweb-service.sh
install -m 0644 %{SOURCE23} %{buildroot}%{_unitdir}/vboxautostart.service install -m 0644 %{SOURCE23} %{buildroot}%{_unitdir}/vboxautostart-service.service
ln -s -f %{_sbindir}/service %{buildroot}%{_sbindir}/rcvboxautostart ln -s -f %{_sbindir}/service %{buildroot}%{_sbindir}/rcvboxautostart
install -m 0755 %{SOURCE24} %{buildroot}%{_vbox_instdir}/vboxautostart.sh install -m 0755 %{SOURCE24} %{buildroot}%{_vbox_instdir}/vboxautostart-service.sh
# Init scripts to start virtualbox during boot # Init scripts to start virtualbox during boot
ln -sf %{_unitdir}/vboxdrv.service %{buildroot}%{_unitdir}/multi-user.target.wants/vboxdrv.service ln -sf %{_unitdir}/vboxdrv.service %{buildroot}%{_unitdir}/multi-user.target.wants/vboxdrv.service
ln -sf %{_unitdir}/vboxadd-service.service %{buildroot}%{_unitdir}/multi-user.target.wants/vboxadd-service.service ln -sf %{_unitdir}/vboxadd-service.service %{buildroot}%{_unitdir}/multi-user.target.wants/vboxadd-service.service
ln -sf %{_unitdir}/vboxautostart.service %{buildroot}%{_unitdir}/multi-user.target.wants/vboxautostart.service ln -sf %{_unitdir}/vboxautostart-service.service %{buildroot}%{_unitdir}/multi-user.target.wants/vboxautostart-service.service
# config file for vboxdrv and vboxweb # config file for vboxdrv and vboxweb
install -d -m 755 %{buildroot}%{_sysconfdir}/vbox install -d -m 755 %{buildroot}%{_sysconfdir}/vbox
install -d -m 775 %{buildroot}%{_sysconfdir}/vbox/autostart.d
echo -e "#settings for vboxwebsrn\nVBOXWEB_USER=root" > %{buildroot}%{_sysconfdir}/vbox/vbox.cfg echo -e "#settings for vboxwebsrn\nVBOXWEB_USER=root" > %{buildroot}%{_sysconfdir}/vbox/vbox.cfg
# config file for vboxautostart # config file for vboxautostart
cat > %{buildroot}%{_sysconfdir}/vbox/autostart.cfg << EOF cat > %{buildroot}%{_sysconfdir}/vbox/autostart.cfg << EOF
@ -837,7 +943,7 @@ popd
%pre %pre
getent group vboxusers >/dev/null || groupadd -r vboxusers getent group vboxusers >/dev/null || groupadd -r vboxusers
%service_add_pre vboxdrv.service %service_add_pre vboxdrv.service
%service_add_pre vboxautostart.service %service_add_pre vboxautostart-service.service
%pre guest-tools %pre guest-tools
# Add groups for seamless mode and shared folders: # Add groups for seamless mode and shared folders:
@ -863,7 +969,7 @@ getent group vboxvideo >/dev/null || groupadd -r vboxvideo
%set_permissions %{_vbox_instdir}/VBoxNetAdpCtl %set_permissions %{_vbox_instdir}/VBoxNetAdpCtl
%set_permissions %{_vbox_instdir}/VBoxHeadless %set_permissions %{_vbox_instdir}/VBoxHeadless
%service_add_post vboxdrv.service %service_add_post vboxdrv.service
%service_add_post vboxautostart.service %service_add_post vboxautostart-service.service
# add new autostart stuff to the existing default config, if missing # add new autostart stuff to the existing default config, if missing
grep -q VBOXAUTOSTART /etc/default/virtualbox || { grep -q VBOXAUTOSTART /etc/default/virtualbox || {
cat >> /etc/default/virtualbox << EOF cat >> /etc/default/virtualbox << EOF
@ -871,11 +977,17 @@ grep -q VBOXAUTOSTART /etc/default/virtualbox || {
# ------------------------------------------------------------------------------------------------- # -------------------------------------------------------------------------------------------------
# Autostart # Autostart
# ------------------------------------------------------------------------------------------------- # -------------------------------------------------------------------------------------------------
VBOXAUTOSTART_DB=/etc/vbox VBOXAUTOSTART_DB=/etc/vbox/autostart.d
VBOXAUTOSTART_CONFIG=/etc/vbox/autostart.cfg VBOXAUTOSTART_CONFIG=/etc/vbox/autostart.cfg
EOF EOF
} }
for entry in /etc/vbox/*.start
do
user=$(basename "$entry" .start)
[ "$user" = "*" ] && break
mv /etc/vbox/user.start /etc/vbox/autostart.d/.
done
%post qt %post qt
%set_permissions %{_vbox_instdir}/VirtualBoxVM %set_permissions %{_vbox_instdir}/VirtualBoxVM
@ -907,9 +1019,9 @@ VBoxManage extpack install --replace "${EXTPACK}" --accept-license="${ACCEPT}" >
####################################################### #######################################################
%preun %preun
%stop_on_removal vboxautostart %stop_on_removal vboxautostart-service
%stop_on_removal vboxdrv %stop_on_removal vboxdrv
%service_del_preun vboxautostart.service %service_del_preun vboxautostart-service.service
%service_del_preun vboxdrv.service %service_del_preun vboxdrv.service
exit 0 exit 0
@ -931,14 +1043,14 @@ exit 0
%postun %postun
/sbin/ldconfig /sbin/ldconfig
%restart_on_update vboxdrv %restart_on_update vboxdrv
%restart_on_update vboxautostart %restart_on_update vboxautostart-service
# immediately restarting virtualbox may not work. As such wait for the next reboot to restart # immediately restarting virtualbox may not work. As such wait for the next reboot to restart
%if ! %{defined service_del_postun_without_restart} %if ! %{defined service_del_postun_without_restart}
export DISABLE_RESTART_ON_UPDATE=yes export DISABLE_RESTART_ON_UPDATE=yes
%service_del_postun vboxautostart.service %service_del_postun vboxautostart-service.service
%service_del_postun vboxdrv.service %service_del_postun vboxdrv.service
%else %else
%service_del_postun_without_restart vboxautostart.service %service_del_postun_without_restart vboxautostart-service.service
%service_del_postun_without_restart vboxdrv.service %service_del_postun_without_restart vboxdrv.service
%endif %endif
@ -1005,11 +1117,11 @@ export DISABLE_RESTART_ON_UPDATE=yes
%dir %{_unitdir} %dir %{_unitdir}
%dir %{_unitdir}/multi-user.target.wants %dir %{_unitdir}/multi-user.target.wants
/usr/lib/virtualbox/vboxdrv.sh /usr/lib/virtualbox/vboxdrv.sh
/usr/lib/virtualbox/vboxautostart.sh /usr/lib/virtualbox/vboxautostart-service.sh
%{_unitdir}/vboxdrv.service %{_unitdir}/vboxdrv.service
%{_unitdir}/vboxautostart.service %{_unitdir}/vboxautostart-service.service
%{_unitdir}/multi-user.target.wants/vboxdrv.service %{_unitdir}/multi-user.target.wants/vboxdrv.service
%{_unitdir}/multi-user.target.wants/vboxautostart.service %{_unitdir}/multi-user.target.wants/vboxautostart-service.service
%{_sbindir}/rcvboxdrv %{_sbindir}/rcvboxdrv
%{_sbindir}/rcvboxautostart %{_sbindir}/rcvboxautostart
/sbin/vboxconfig /sbin/vboxconfig
@ -1019,7 +1131,9 @@ export DISABLE_RESTART_ON_UPDATE=yes
%verify(not mode) %attr(0755,root,vboxusers) %{_vbox_instdir}/VBoxNetAdpCtl %verify(not mode) %attr(0755,root,vboxusers) %{_vbox_instdir}/VBoxNetAdpCtl
%verify(not mode) %attr(0755,root,vboxusers) %{_vbox_instdir}/VBoxHeadless %verify(not mode) %attr(0755,root,vboxusers) %{_vbox_instdir}/VBoxHeadless
%dir %{_sysconfdir}/vbox %dir %{_sysconfdir}/vbox
%attr(1775,root,vboxusers) %{_sysconfdir}/vbox %dir %{_sysconfdir}/vbox/autostart.d
%attr(755,root,root) %{_sysconfdir}/vbox
%attr(1770,root,vboxusers) %{_sysconfdir}/vbox/autostart.d
%config %attr(644,root,vboxusers) %{_sysconfdir}/vbox/vbox.cfg %config %attr(644,root,vboxusers) %{_sysconfdir}/vbox/vbox.cfg
%config %attr(644,root,vboxusers) %{_sysconfdir}/vbox/autostart.cfg %config %attr(644,root,vboxusers) %{_sysconfdir}/vbox/autostart.cfg
@ -1069,9 +1183,7 @@ export DISABLE_RESTART_ON_UPDATE=yes
%defattr(-, root, root) %defattr(-, root, root)
%{_bindir}/VBoxControl %{_bindir}/VBoxControl
%{_sbindir}/VBoxService %{_sbindir}/VBoxService
%if %{for_leap}
/sbin/vboxguestconfig /sbin/vboxguestconfig
%endif
/sbin/mount.vboxsf /sbin/mount.vboxsf
%{_udevrulesdir}/60-vboxguest.rules %{_udevrulesdir}/60-vboxguest.rules
%{_vbox_instdir}/vboxadd-service %{_vbox_instdir}/vboxadd-service
@ -1107,13 +1219,11 @@ export DISABLE_RESTART_ON_UPDATE=yes
%dir %{_usrsrc}/kernel-modules %dir %{_usrsrc}/kernel-modules
%{_usrsrc}/kernel-modules/virtualbox %{_usrsrc}/kernel-modules/virtualbox
%if %{for_leap}
%files guest-source %files guest-source
%defattr(-,root, root) %defattr(-,root, root)
%dir %{_usrsrc}/kernel-modules %dir %{_usrsrc}/kernel-modules
%dir %{_usrsrc}/kernel-modules/additions %dir %{_usrsrc}/kernel-modules/additions
%{_usrsrc}/kernel-modules/additions/guest_src.tar.bz2 %{_usrsrc}/kernel-modules/additions/guest_src.tar.bz2
%endif
%files websrv %files websrv
%defattr(-,root, root) %defattr(-,root, root)
@ -1210,20 +1320,13 @@ COMMON_KMK_FLAGS+="
# host kernel modules to out/linux.*/release/bin/src/ # host kernel modules to out/linux.*/release/bin/src/
%{_bindir}/kmk %_smp_mflags -C src/VBox/HostDrivers/ \ %{_bindir}/kmk %_smp_mflags -C src/VBox/HostDrivers/ \
${COMMON_KMK_FLAGS} ${COMMON_KMK_FLAGS}
%if %{for_leap}
# #
# build kernel modules for guest and host (check novel-kmp package as example) # build kernel modules for guest and host (check novel-kmp package as example)
# host modules : vboxdrv,vboxnetflt,vboxnetadp # host modules : vboxdrv,vboxnetflt,vboxnetadp
# guest modules : vboxguest,vboxsf vboxvideo (for Leap 15.2 and older) # guest modules : vboxguest,vboxsf vboxvideo
echo "build kernel modules" echo "build kernel modules"
for vbox_module in out/linux.*/release/bin/src/vbox{drv,netflt,netadp} \ for vbox_module in out/linux.*/release/bin/src/vbox{drv,netflt,netadp} \
out/linux.*/release/bin/additions/src/vbox{guest,sf,video}; do out/linux.*/release/bin/additions/src/vbox{guest,sf,video}; do
%else
# build kernel modules for host (check novel-kmp package as example)
# host modules : vboxdrv,vboxnetflt,vboxnetadp
echo "build kernel modules"
for vbox_module in out/linux.*/release/bin/src/vbox{drv,netflt,netadp} ; do
%endif
#get the module name from path #get the module name from path
module_name=$(basename "$vbox_module") module_name=$(basename "$vbox_module")
@ -1232,12 +1335,8 @@ for vbox_module in out/linux.*/release/bin/src/vbox{drv,netflt,netadp} ; do
# delete old build dir for sure # delete old build dir for sure
rm -rf modules_build_dir/${module_name}_${flavor} rm -rf modules_build_dir/${module_name}_${flavor}
%if %{for_leap}
if [ "$module_name" = "vboxdrv" -o \ if [ "$module_name" = "vboxdrv" -o \
"$module_name" = "vboxguest" ] ; then "$module_name" = "vboxguest" ] ; then
%else
if [ "$module_name" = "vboxdrv" ] ; then
%endif
SYMBOLS="" SYMBOLS=""
fi fi
# create build directory for specific flavor # create build directory for specific flavor
@ -1253,7 +1352,6 @@ for vbox_module in out/linux.*/release/bin/src/vbox{drv,netflt,netadp} ; do
$PWD/modules_build_dir/$flavor/$module_name $PWD/modules_build_dir/$flavor/$module_name
SYMBOLS="$PWD/modules_build_dir/$flavor/vboxdrv/Module.symvers" SYMBOLS="$PWD/modules_build_dir/$flavor/vboxdrv/Module.symvers"
fi fi
%if %{for_leap}
# copy vboxguest (for guest) module symbols which are used by vboxsf km: # copy vboxguest (for guest) module symbols which are used by vboxsf km:
if [ "$module_name" = "vboxsf" -o \ if [ "$module_name" = "vboxsf" -o \
"$module_name" = "vboxvideo" ] ; then "$module_name" = "vboxvideo" ] ; then
@ -1261,7 +1359,6 @@ for vbox_module in out/linux.*/release/bin/src/vbox{drv,netflt,netadp} ; do
$PWD/modules_build_dir/$flavor/$module_name $PWD/modules_build_dir/$flavor/$module_name
SYMBOLS="$PWD/modules_build_dir/$flavor/vboxguest/Module.symvers" SYMBOLS="$PWD/modules_build_dir/$flavor/vboxguest/Module.symvers"
fi fi
%endif
# build the module for the specific flavor # build the module for the specific flavor
make -j2 -C %{_prefix}/src/linux-obj/%{_target_cpu}/$flavor %{?linux_make_arch} modules \ make -j2 -C %{_prefix}/src/linux-obj/%{_target_cpu}/$flavor %{?linux_make_arch} modules \
M=$PWD/modules_build_dir/$flavor/$module_name KBUILD_EXTRA_SYMBOLS="$SYMBOLS" V=1 M=$PWD/modules_build_dir/$flavor/$module_name KBUILD_EXTRA_SYMBOLS="$SYMBOLS" V=1
@ -1272,11 +1369,7 @@ done
export INSTALL_MOD_PATH=%{buildroot} export INSTALL_MOD_PATH=%{buildroot}
export INSTALL_MOD_DIR=extra export INSTALL_MOD_DIR=extra
#to install modules we use here similar steps like in build phase, go through all the modules : #to install modules we use here similar steps like in build phase, go through all the modules :
%if %{for_leap}
for module_name in vbox{drv,netflt,netadp,guest,sf,video} for module_name in vbox{drv,netflt,netadp,guest,sf,video}
%else
for module_name in vbox{drv,netflt,netadp}
%endif
do do
#and through the all flavors #and through the all flavors
for flavor in %{flavors_to_build}; do for flavor in %{flavors_to_build}; do