forked from pool/virtualbox
221b12cb3b
- 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
175 lines
4.0 KiB
Bash
175 lines
4.0 KiB
Bash
#!/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
|