X-Git-Url: http://git.grml.org/?p=grml-autoconfig.git;a=blobdiff_plain;f=autoconfig.functions;h=8e4a09f2a4b024d7fb53745bcd342ac39630746a;hp=883231bbe5e9c3123f5c69c1bcc52b6d8bc8d95d;hb=4c0e0818e388ef9791e79614267a5684fb7dc8b4;hpb=86279cdec69f44dce191edb0fa9a056cf65d1e24 diff --git a/autoconfig.functions b/autoconfig.functions index 883231b..8e4a09f 100755 --- a/autoconfig.functions +++ b/autoconfig.functions @@ -543,7 +543,8 @@ config_kernel(){ # }}} # {{{ 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) @@ -556,20 +557,28 @@ config_secureboot(){ 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 + return 0 else - einfo "SecureBoot not detected" ; eend 0 + return 1 fi else if modprobe efivars &>/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 @@ -1847,16 +1856,22 @@ fi # checkbootparam "BOOT_IMAGE=debian2hd # {{{ 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 @@ -1869,8 +1884,8 @@ if $VIRTUALBOX ; then 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." @@ -1882,7 +1897,7 @@ if $VIRTUALBOX ; then 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 @@ -1931,9 +1946,36 @@ if $VIRTUALBOX ; then 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 $? } # }}}