ARCH="$(uname -m)"
umask 022
-# old linuxrc version:
-[ -d /cdrom ] && export LIVECD_PATH=/cdrom
-# initramfs layout until around December 2012:
-[ -d /live/image ] && export LIVECD_PATH=/live/image
-# initramfs layout since around December 2012:
-[ -d /lib/live/mount/medium ] && export LIVECD_PATH=/lib/live/mount/medium
+# initramfs layout since December 2012, backwards compatibility:
+[ -d /lib/live/mount/medium ] && export LIVECD_PATH='/lib/live/mount/medium'
+# initramfs layout since December 2018:
+[ -d /run/live/medium ] && export LIVECD_PATH='/run/live/medium'
# Ignore these signals in non-interactive mode: INT, TERM, SEGV
[ -z "$PS1" ] && trap "" 2 3 11
VIRTUALBOX=false
VMWARE=false
-if vmware-detect &>/dev/null; then
+if virt-what 2>/dev/null | grep -q 'vmware' || \
+ imvirt 2>/dev/null | grep -iq "vmware" ; then
VIRTUAL=true; VMWARE=true; VIRTUAL_ENV='VMware'
-elif [ "$(virt-what 2>/dev/null)" = "kvm" ] || \
- [ "$(imvirt 2>/dev/null)" = "KVM" ] ; then
+fi
+
+if virt-what 2>/dev/null | grep -q 'kvm' || \
+ [ "$(imvirt 2>/dev/null)" = "KVM" ] ; then
VIRTUAL=true; KVM=true; VIRTUAL_ENV='KVM'
-elif [ "$(virt-what 2>/dev/null)" = "virtualbox" ] || \
- [ "$(imvirt 2>/dev/null)" = "VirtualBox" ] ; then
+fi
+
+if virt-what 2>/dev/null | grep -q 'virtualbox' || \
+ [ "$(imvirt 2>/dev/null)" = "VirtualBox" ] ; then
VIRTUAL=true; VIRTUALBOX=true; VIRTUAL_ENV='VirtualBox'
fi
# }}}
config_log(){
if checkbootparam 'log' || checkbootparam 'debug' ; then
export DEBUG="/tmp/grml.log.`date +%Y%m%d`"
- touch $DEBUG
- einfo "Bootparameter log found. Log files: ${DEBUG} and /var/log/boot"
- eindent
- einfo "Starting bootlogd." # known to be *very* unreliable :(
- bootlogd -r -c >>$DEBUG 2>&1 ; eend $?
- eoutdent
+ touch "${DEBUG}"
+ einfo "Bootparameter log found, debug log file from grml-autoconfig available at '${DEBUG}'"
else
DEBUG="/dev/null"
fi
### {{{ language configuration / localization
config_language(){
- einfo "Activating language settings:"
- eindent
+ einfo "Activating language settings:"
+ eindent
- # people can specify $LANGUAGE and $CONSOLEFONT in a config file
- [ -r /etc/grml/autoconfig ] && . /etc/grml/autoconfig
+ # people can specify $LANGUAGE and $CONSOLEFONT in a config file
+ [ -r /etc/grml/autoconfig ] && . /etc/grml/autoconfig
- # check for bootoption which overrides config from /etc/grml/autoconfig
- BOOT_LANGUAGE="$(getbootparam 'lang' 2>>$DEBUG)"
- [ -n "$BOOT_LANGUAGE" ] && LANGUAGE="$BOOT_LANGUAGE"
+ # check for bootoption which overrides config from /etc/grml/autoconfig
+ BOOT_LANGUAGE="$(getbootparam 'lang' 2>>$DEBUG)"
+ [ -n "$BOOT_LANGUAGE" ] && LANGUAGE="$BOOT_LANGUAGE"
- # set default to 'en' in live-cd mode iff $LANGUAGE is not set yet
- if [ -z "$INSTALLED" ] ; then
+ # set default to 'en' in live-cd mode iff $LANGUAGE is not set yet
+ if [ -z "$INSTALLED" ] ; then
[ -n "$LANGUAGE" ] || LANGUAGE='en'
- fi
+ fi
- if [ -x /usr/sbin/grml-setlang ] ; then
- # if bootoption lang is used update /etc/default/locale accordingly
- if [ -n "$BOOT_LANGUAGE" ] ; then
- /usr/sbin/grml-setlang "$LANGUAGE"
- # otherwise default to lang=en
- else
- /usr/sbin/grml-setlang "en"
- fi
- fi
+ if [ -x /usr/sbin/grml-setlang ] ; then
+ # if bootoption lang is used update /etc/default/locale accordingly
+ if [ -n "$BOOT_LANGUAGE" ] ; then
+ /usr/sbin/grml-setlang "$LANGUAGE"
+ # otherwise default to lang=en
+ else
+ /usr/sbin/grml-setlang "en"
+ fi
+ fi
- # set console font
- if [ -z "$CONSOLEFONT" ] ; then
- if ! checkbootparam 'nodefaultfont' >>$DEBUG 2>&1 ; then
- if [ -r /usr/share/consolefonts/Uni3-Terminus16.psf.gz ] ; then
+ if ! $SYSTEMD ; then
+ # set console font
+ if [ -z "$CONSOLEFONT" ] ; then
+ if ! checkbootparam 'nodefaultfont' >>$DEBUG 2>&1 ; then
+ if [ -r /usr/share/consolefonts/Uni3-Terminus16.psf.gz ] ; then
CONSOLEFONT='Uni3-Terminus16'
- else
- ewarn "/usr/share/consolefonts/Uni3-Terminus16.psf.gz not available. Please upgrade package console-terminus." ; eend 1
- fi
- if ! hasfb ; then
+ else
+ ewarn "/usr/share/consolefonts/Uni3-Terminus16.psf.gz not available. Please upgrade package console-setup-linux." ; eend 1
+ fi
+ if ! hasfb ; then
CONSOLEFONT='Lat15-Terminus16'
- fi
+ fi
+ fi
fi
- fi
+ fi # not running systemd
- # export it now, so error messages get translated, too
- [ -r /etc/default/locale ] && . /etc/default/locale
- export LANG LANGUAGE
-
- # configure keyboard layout, read in already set values first:
- [ -r /etc/sysconfig/keyboard ] && . /etc/sysconfig/keyboard
-
- # now allow keyboard override by boot commandline for later use:
- KKEYBOARD="$(getbootparam 'keyboard' 2>>$DEBUG)"
- [ -n "$KKEYBOARD" ] && KEYTABLE="$KKEYBOARD"
- # notce: de/at is a bad choice, so take de-latin1-nodeadkeys instead:
- [[ "$KKEYBOARD" == 'de' ]] && KEYTABLE=de-latin1-nodeadkeys
- [[ "$KKEYBOARD" == 'at' ]] && KEYTABLE=de-latin1-nodeadkeys
-
- # modify /etc/sysconfig/keyboard only in live-cd mode:
- if [ -z "$INSTALLED" ] ; then
-
- local LANGUAGE="$BOOT_LANGUAGE"
- . /etc/grml/language-functions
- # allow setting xkeyboard explicitly different than console keyboard
- KXKEYBOARD="$(getbootparam 'xkeyboard' 2>>$DEBUG)"
- if [ -n "$KXKEYBOARD" ]; then
- XKEYBOARD="$KXKEYBOARD"
- KDEKEYBOARD="$KXKEYBOARD"
- elif [ -n "$KKEYBOARD" ]; then
- XKEYBOARD="$KKEYBOARD"
- KDEKEYBOARD="$KKEYBOARD"
- fi
+ # export it now, so error messages get translated, too
+ [ -r /etc/default/locale ] && . /etc/default/locale
+ export LANG LANGUAGE
- # duplicate of previous code to make sure /etc/grml/language-functions
- # does not overwrite our values....
- # now allow keyboard override by boot commandline for later use:
- KKEYBOARD="$(getbootparam 'keyboard' 2>>$DEBUG)"
- [ -n "$KKEYBOARD" ] && KEYTABLE="$KKEYBOARD"
- # notce: de/at is a bad choice, so take de-latin1-nodeadkeys instead:
- [[ "$KKEYBOARD" == 'de' ]] && KEYTABLE=de-latin1-nodeadkeys
- [[ "$KKEYBOARD" == 'at' ]] && KEYTABLE=de-latin1-nodeadkeys
-
- # write keyboard related variables to file for later use
- [ -d /etc/sysconfig ] || mkdir /etc/sysconfig
- if ! [ -e /etc/sysconfig/keyboard ] ; then
- echo "KEYTABLE=\"$KEYTABLE\"" > /etc/sysconfig/keyboard
- echo "XKEYBOARD=\"$XKEYBOARD\"" >> /etc/sysconfig/keyboard
- echo "KDEKEYBOARD=\"$KDEKEYBOARD\"" >> /etc/sysconfig/keyboard
- echo "KDEKEYBOARDS=\"$KDEKEYBOARDS\"" >> /etc/sysconfig/keyboard
- fi
- fi
+ if $SYSTEMD ; then
+ local KEYBOARD
+ KEYBOARD="$(getbootparam 'keyboard' 2>>$DEBUG)"
+ [ -n "$KEYBOARD" ] || KEYBOARD="$LANGUAGE"
+ # "symbols/en" doesn't exist, so rewrite to "us"
+ [[ "$KEYBOARD" == 'en' ]] && KEYBOARD="us"
+
+ if [ -r /etc/default/keyboard ] ; then
+ sed -i "s/^XKBLAYOUT=.*/XKBLAYOUT=\"$KEYBOARD\"/" /etc/default/keyboard
+
+ case "$KEYBOARD" in
+ de|at)
+ sed -i "s/^XKBVARIANT=.*/XKBVARIANT=\"nodeadkeys\"/" /etc/default/keyboard
+ ;;
+ esac
- [ -r /etc/sysconfig/keyboard ] && . /etc/sysconfig/keyboard
+ fi
+ service_wrapper console-setup restart >>$DEBUG 2>&1 ; eend $?
+ else # not running systemd, keeing for backwards compatibility:
+ # configure keyboard layout, read in already set values first:
+ [ -r /etc/sysconfig/keyboard ] && . /etc/sysconfig/keyboard
+
+ # now allow keyboard override by boot commandline for later use:
+ KKEYBOARD="$(getbootparam 'keyboard' 2>>$DEBUG)"
+ [ -n "$KKEYBOARD" ] && KEYTABLE="$KKEYBOARD"
+ # notce: de/at is a bad choice, so take de-latin1-nodeadkeys instead:
+ [[ "$KKEYBOARD" == 'de' ]] && KEYTABLE=de-latin1-nodeadkeys
+ [[ "$KKEYBOARD" == 'at' ]] && KEYTABLE=de-latin1-nodeadkeys
+
+ # modify /etc/sysconfig/keyboard only in live-cd mode:
+ if [ -z "$INSTALLED" ] ; then
+
+ local LANGUAGE="$BOOT_LANGUAGE"
+ . /etc/grml/language-functions
+ # allow setting xkeyboard explicitly different than console keyboard
+ KXKEYBOARD="$(getbootparam 'xkeyboard' 2>>$DEBUG)"
+ if [ -n "$KXKEYBOARD" ]; then
+ XKEYBOARD="$KXKEYBOARD"
+ KDEKEYBOARD="$KXKEYBOARD"
+ elif [ -n "$KKEYBOARD" ]; then
+ XKEYBOARD="$KKEYBOARD"
+ KDEKEYBOARD="$KKEYBOARD"
+ fi
- # activate unicode console if running within utf8 environment
- if [ -r /etc/default/locale ] ; then
- if grep -q "LANG=.*UTF" /etc/default/locale ; then
- einfo "Setting up unicode environment."
- unicode_start >>$DEBUG 2>&1 ; eend $?
+ # duplicate of previous code to make sure /etc/grml/language-functions
+ # does not overwrite our values....
+ # now allow keyboard override by boot commandline for later use:
+ KKEYBOARD="$(getbootparam 'keyboard' 2>>$DEBUG)"
+ [ -n "$KKEYBOARD" ] && KEYTABLE="$KKEYBOARD"
+ # notce: de/at is a bad choice, so take de-latin1-nodeadkeys instead:
+ [[ "$KKEYBOARD" == 'de' ]] && KEYTABLE=de-latin1-nodeadkeys
+ [[ "$KKEYBOARD" == 'at' ]] && KEYTABLE=de-latin1-nodeadkeys
+
+ # write keyboard related variables to file for later use
+ [ -d /etc/sysconfig ] || mkdir /etc/sysconfig
+ if ! [ -e /etc/sysconfig/keyboard ] ; then
+ echo "KEYTABLE=\"$KEYTABLE\"" > /etc/sysconfig/keyboard
+ echo "XKEYBOARD=\"$XKEYBOARD\"" >> /etc/sysconfig/keyboard
+ echo "KDEKEYBOARD=\"$KDEKEYBOARD\"" >> /etc/sysconfig/keyboard
+ echo "KDEKEYBOARDS=\"$KDEKEYBOARDS\"" >> /etc/sysconfig/keyboard
+ fi
fi
- fi
- # Set default keyboard before interactive setup
- if [ -n "$KEYTABLE" ] ; then
- einfo "Running loadkeys for ${WHITE}${KEYTABLE}${NORMAL} in background"
- loadkeys -q $KEYTABLE &
- eend $?
- fi
+ [ -r /etc/sysconfig/keyboard ] && . /etc/sysconfig/keyboard
+ fi
- # we have to set up all consoles, therefore loop it over all ttys:
- NUM_CONSOLES=$(fgconsole --next-available 2>/dev/null)
- if [ -n "$NUM_CONSOLES" ] ; then
- NUM_CONSOLES=$(expr ${NUM_CONSOLES} - 1)
- [ ${NUM_CONSOLES} -eq 1 ] && NUM_CONSOLES=6
- fi
- CUR_CONSOLE=$(fgconsole 2>/dev/null)
- if [ -x "$(which setfont)" ] ; then
- use_setfont=true
- elif [ -x "$(which consolechars)" ] ; then
- use_consolechars=true
- else
- eerror "Neither setfont nor consolechars tool present, can not set font."
- eend 1
- return 1
- fi
+ if ! $SYSTEMD ; then
+ # we have to set up all consoles, therefore loop it over all ttys:
+ NUM_CONSOLES=$(fgconsole --next-available 2>/dev/null)
+ if [ -n "$NUM_CONSOLES" ] ; then
+ NUM_CONSOLES=$(expr ${NUM_CONSOLES} - 1)
+ [ ${NUM_CONSOLES} -eq 1 ] && NUM_CONSOLES=6
+ fi
+ CUR_CONSOLE=$(fgconsole 2>/dev/null)
- if [ -n "$CHARMAP" ] ; then
- einfo "Setting font to ${CHARMAP}"
- RC=0
- for vc in $(seq 0 ${NUM_CONSOLES}) ; do
+ if [ -x "$(which setfont)" ] ; then
+ use_setfont=true
+ elif [ -x "$(which consolechars)" ] ; then
+ use_consolechars=true
+ else
+ eerror "Neither setfont nor consolechars tool present, can not set font."
+ eend 1
+ return 1
+ fi
+
+ if [ -n "$CHARMAP" ] ; then
+ einfo "Setting font to ${CHARMAP}"
+ RC=0
+ for vc in $(seq 0 ${NUM_CONSOLES}) ; do
if $use_setfont ; then
setfont -C /dev/tty${vc} $CHARMAP ; RC=$?
elif $use_consolechars ; then
consolechars --tty=/dev/tty${vc} -m ${CHARMAP} ; RC=$?
fi
- done
- if [ -n "$CUR_CONSOLE" ] ; then
- [ "$CUR_CONSOLE" != "serial" ] && chvt $CUR_CONSOLE
+ done
+ if [ -n "$CUR_CONSOLE" ] ; then
+ [ "$CUR_CONSOLE" != "serial" ] && chvt $CUR_CONSOLE
+ fi
+ eend $RC
fi
- eend $RC
- fi
- if checkbootparam 'noconsolefont' ; then
- ewarn "Skipping setting console font as requested on boot commandline." ; eend 0
- else
- if [ -n "$CONSOLEFONT" ] ; then
- einfo "Setting font to ${CONSOLEFONT}"
- RC=0
- for vc in $(seq 0 ${NUM_CONSOLES}) ; do
- if $use_setfont ; then
- setfont -C /dev/tty${vc} ${CONSOLEFONT} ; RC=$?
- elif $use_consolechars ; then
- consolechars --tty=/dev/tty${vc} -f ${CONSOLEFONT} ; RC=$?
- fi
- done
- if [ -n "$CUR_CONSOLE" ] ; then
+ if checkbootparam 'noconsolefont' ; then
+ ewarn "Skipping setting console font as requested on boot commandline." ; eend 0
+ else
+ if [ -n "$CONSOLEFONT" ] ; then
+ einfo "Setting font to ${CONSOLEFONT}"
+ RC=0
+ for vc in $(seq 0 ${NUM_CONSOLES}) ; do
+ if $use_setfont ; then
+ setfont -C /dev/tty${vc} ${CONSOLEFONT} ; RC=$?
+ elif $use_consolechars ; then
+ consolechars --tty=/dev/tty${vc} -f ${CONSOLEFONT} ; RC=$?
+ fi
+ done
+ if [ -n "$CUR_CONSOLE" ] ; then
[ "$CUR_CONSOLE" != "serial" ] && chvt $CUR_CONSOLE
- fi
- eend $RC
+ fi
+ eend $RC
+ fi
+ fi
+
+ # Set default keyboard before interactive setup
+ if [ -n "$KEYTABLE" ] ; then
+ einfo "Running loadkeys for ${WHITE}${KEYTABLE}${NORMAL} in background"
+ loadkeys -q $KEYTABLE &
+ eend $?
fi
- fi
- eoutdent
+ # activate unicode console if running within utf8 environment
+ if [ -r /etc/default/locale ] ; then
+ if grep -q "LANG=.*UTF" /etc/default/locale ; then
+ einfo "Setting up unicode environment."
+ unicode_start ; eend $?
+ fi
+ fi
+ fi # not running systemd
+
+ eoutdent
}
# }}}
# }}}
# {{{ secure boot
-config_secureboot(){
+# helper function to check whether we're running under (enabled) Secure Boot
+running_under_secureboot() {
# systemd does this for us, but if we are not running under systemd then mokutil
# doesn't work as needed as it relies on /sys/firmware/efi/efivars (while
# /sys/firmware/efi/vars would exist)
if ! $SYSTEMD ; then
- modprobe efivars
- mount -t efivarfs efivarfs /sys/firmware/efi/efivars
+ if modprobe efivarfs &>/dev/null ; then
+ mount -t efivarfs efivarfs /sys/firmware/efi/efivars
+ fi
fi
- if [ -x /usr/bin/mokutil ] ; then
- local secstate=$(mokutil --sb-state 2>/dev/null) # "SecureBoot enabled"
- if [ -n "$secstate" ] ; then
- einfo "SecureBoot is enabled" ; eend 0
+ if [[ -x "$(command -v mokutil)" ]] ; then
+ if mokutil --sb-state 2>/dev/null | grep -q 'SecureBoot enabled' ; then
+ return 0
else
- einfo "SecureBoot not detected" ; eend 0
+ return 1
fi
else
- if modprobe efivars &>/dev/null ; then
+ if modprobe efivarfs &>/dev/null ; then
if od -An -t u1 /sys/firmware/efi/vars/SecureBoot-*/data 2>/dev/null | grep -q 1 ; then
- einfo "SecureBoot is enabled" ; eend 0
+ return 0
else
- einfo "SecureBoot not detected" ; eend 0
+ return 1
fi
fi
fi
}
+
+config_secureboot(){
+ if running_under_secureboot ; then
+ einfo "SecureBoot is enabled" ; eend 0
+ else
+ einfo "SecureBoot not detected" ; eend 0
+ fi
+}
# }}}
# {{{ timezone
# {{{ Start brltty
config_brltty() {
if checkbootparam 'brltty' ; then
- [ -x /lib/brltty/brltty.sh ] && /lib/brltty/brltty.sh
+ einfo "Starting brltty service as requested on boot commandline."
+ service_wrapper brltty start ; eend $?
fi
}
# }}}
else
einfo "Found CPU: `awk -F: '/^processor/{printf " Processor"$2" is"};/^model name/{printf $2};/^vendor_id/{printf vendor};/^cpu MHz/{printf " %dMHz",int($2)};/^cache size/{printf ","$2" Cache"};/^$/{print ""}' /proc/cpuinfo 2>>$DEBUG` " ; eend 0
fi
-
-# no cpufreq setup inside VirtualBox
-if $VIRTUALBOX ; then
- einfo 'Virtual Box detected, skipping cpufreq setup.' ; eend 0
- return 0
-fi
-
-if ! [ -x /etc/init.d/loadcpufreq ] ; then
- ewarn "loadcpufreq init script not available, ignoring cpu frequency scaling."
- eend 0
- return 0
-else
- einfo "Trying to set up cpu frequency scaling:"
- eindent
- SKIP_CPU_GOVERNOR=''
- LOADCPUFREQ=$(mktemp)
- /etc/init.d/loadcpufreq start >"$LOADCPUFREQ" 2>&1 ; RC=$?
- if grep -q FATAL "$LOADCPUFREQ" ; then
- eindent
- SKIP_CPU_GOVERNOR=1
- oldIFS="$IFS"
- IFS=$'\n'
- for line in $(grep FATAL "$LOADCPUFREQ" | sed 's/.*FATAL: //; s/ (.*)//') ; do
- eerror "$line" ; eend $RC
- done
- IFS="$oldIFS"
- eoutdent
- elif grep -q done "$LOADCPUFREQ" ; then
- MODULE=$(grep done "$LOADCPUFREQ" | sed 's/.*done (\(.*\))./\1/')
- if [ -n "$MODULE" -a "$MODULE" != none ]; then
- einfo "Loading cpufreq kernel module $MODULE" ; eend 0
- else
- SKIP_CPU_GOVERNOR=1
- ewarn "Could not find an appropriate kernel module for cpu frequency scaling." ; eend 1
- fi
- fi
-
- rm -f "$LOADCPUFREQ"
-
- if [ -z "$SKIP_CPU_GOVERNOR" ] ; then
- if [ -r /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors ] ; then
- if ! grep -q ondemand /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors ; then
- einfo "Ondemand governor not available for CPU(s), not modifying governor configuration"
- else
- einfo "Setting ondemand governor"
- RC=0
- for file in $(find /sys/devices/system/cpu/ -name scaling_governor 2>/dev/null) ; do
- echo ondemand > $file || RC=1
- done
- eend $RC
- fi
- fi
- fi
-
- eoutdent
-fi
}
# }}}
fi
einfo "Starting secure shell server in background for root and user $localuser"
+ service_wrapper haveged start >>$DEBUG 2>>$DEBUG
service_wrapper rmnologin start >>$DEBUG 2>>$DEBUG
service_wrapper ssh start background >>$DEBUG 2>>$DEBUG
eend $?
fi
if ! [ -x /sbin/dmraid ] ; then
- eerror "dmraid not available, can not execute it." ; eend 1
+ ewarn "dmraid not available, can not execute it." ; eend 1
return
fi
fi
eend 0
if checkbootparam 'lvm' ; then
- einfo "Bootoption LVM found. Searching for logical volumes and enabling them:"
if $SYSTEMD ; then
- service_wrapper lvm2-lvmetad start
- vgchange -ay
- eend $?
+ einfo "Bootoption LVM found, enabling related services."
+ if [ -r /etc/init.d/lvm2-lvmetad ] ; then
+ service_wrapper lvm2-lvmetad start ; eend $?
+ fi
+ if [ -r /etc/init.d/lvm2-lvmpolld ] ; then
+ service_wrapper lvm2-lvmpolld start ; eend $?
+ fi
+ einfo "Searching for logical volumes and enabling them:"
+ vgchange -ay ; eend $?
else
+ einfo "Bootoption LVM found. Searching for logical volumes and enabling them:"
service_wrapper lvm2 start ; eend $?
fi
fi
# {{{ virtualbox shared folders
config_virtualbox_shared_folders() {
-if $VIRTUALBOX ; then
- einfo "VirtualBox detected, trying to set up Shared Folders."
- if ! modinfo vboxsf &>/dev/null ; then
- ewarn "vboxsf driver not present, not setting up VirtualBox Shared Folders."
- eend 0
- elif ! [ -x /usr/sbin/VBoxService ] ; then
- ewarn "virtualbox-guest-utils not installed, not setting up VirtualBox Shared Folders."
- eend 0
+ if ! $VIRTUALBOX ; then
+ return
+ fi
+
+ if checkbootparam 'novboxsf' ; then
+ ewarn "Skipping VirtualBox Shared Folders setup as requested on boot commandline." ; eend 0
else
- eindent
+ einfo "VirtualBox detected, trying to set up Shared Folders."
+ if ! modinfo vboxsf &>/dev/null ; then
+ ewarn "vboxsf driver not present, not setting up VirtualBox Shared Folders."
+ eend 0
+ elif ! [ -x /usr/sbin/VBoxService ] ; then
+ ewarn "virtualbox-guest-utils not installed, not setting up VirtualBox Shared Folders."
+ eend 0
+ else
+ eindent
einfo "Loading vboxsf driver."
lsmod | grep -q vboxsf || modprobe vboxsf
config_userfstab
- einfo "Adding $fstabuser to group vboxsf."
- adduser grml vboxsf &>/dev/null
+ einfo "Adding user ${fstabuser:-grml} to group vboxsf."
+ adduser "${fstabuser:-grml}" vboxsf >>"${DEBUG}" 2>&1
eend $?
einfo "Starting VBoxService."
vbautomation="$(getbootparam 'vbautomation' 2>>$DEBUG)"
fi
- if ! VBoxControl sharedfolder list | egrep -q "^[0-9]+ - ${vbautomation}$" ; then
+ if ! VBoxControl sharedfolder list | egrep -q "^[0-9]+ - ${vbautomation}(\s+|$)" ; then
ewarn "No automount shared folder '$vbautomation' available"
eend 0
else
fi
fi
- eoutdent
+ eoutdent
+ fi
fi
-fi
+}
+# }}}
+
+# {{{ VirtualBox application
+config_virtualbox_setup() {
+ if checkbootparam 'novbox' ; then
+ ewarn "Skipping VirtualBox setup as requested on boot commandline." ; eend 0
+ return
+ fi
+
+ if ! [ -x /usr/bin/VBox ] ; then
+ return
+ fi
+
+ if running_under_secureboot ; then
+ ewarn "VirtualBox service can not be started as running under enabled Secure Boot." ; eend 0
+ return
+ fi
+
+ einfo "VirtualBox service detected, trying to set up."
+ service_wrapper vboxdrv restart >>"${DEBUG}" 2>&1 ; eend $?
+
+ config_userfstab
+
+ einfo "Adding user ${fstabuser:-grml} to group vboxusers."
+ adduser "${fstabuser:-grml}" vboxusers >>"${DEBUG}" 2>&1
+ eend $?
}
# }}}