1
0
forked from pool/virtualbox
virtualbox/vboxautostart-service.sh

175 lines
4.0 KiB
Bash
Raw Normal View History

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
2021-04-24 15:48:44 +02:00
#!/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