X-Git-Url: https://git.grml.org/?p=grml-autoconfig.git;a=blobdiff_plain;f=autoconfig.functions;h=9c1bb651ce5982d2f0daa189816abe79a2c6fd5c;hp=23b40159d584bda35ac65aac1608cf10957dd2e6;hb=84fb68bfac359c3d16704710c846fba706acb52f;hpb=f95a8d0413e8bd2aede866e66cbf0c0d421d8550 diff --git a/autoconfig.functions b/autoconfig.functions index 23b4015..9c1bb65 100755 --- a/autoconfig.functions +++ b/autoconfig.functions @@ -98,10 +98,6 @@ checkgrmlsmall(){ grep -q small /etc/grml_version 2>>$DEBUG && return 0 || return 1 } -# execute flite only if it's present -flitewrapper() { - [ -x /usr/bin/flite ] && flite -o play -t "$*" -} ### }}} # {{{ filesystems (proc, pts, sys) and fixes @@ -598,7 +594,7 @@ if checkbootparam 'console'; then eindent einfo "Activating console login on device ${device} with speed ${speed}." local number="${device#ttyS}" - sed -i "/^T$number:/d;/^#grmlserial#/iT$number:23:respawn:/bin/bash -c \"/sbin/getty -L $device -l /usr/bin/zsh-login $speed vt100 || sleep 30\"" /etc/inittab + sed -i "/^T$number:/d;/^#grmlserial#/iT$number:23:respawn:/bin/bash -c \"/sbin/getty -L $device -l /usr/share/grml-scripts/run-welcome $speed vt100 || sleep 30\"" /etc/inittab eend $? telinitq="1" eoutdent @@ -617,16 +613,6 @@ fi } # }}} -# For burning on IDE-CD-Roms, k3b (and others) check for special permissions {{{ -config_cdrom_perm(){ -CDROMS="" -for DEVICE in /proc/ide/hd?; do - [ "$(cat $DEVICE/media 2>/dev/null)" = "cdrom" ] && CDROMS="$CDROMS /dev/${DEVICE##*/}" -done -[ -n "$CDROMS" ] && { chown root.cdrom $CDROMS; chmod 666 $CDROMS; } 2>/dev/null -} -# }}} - # {{{ Bring up loopback interface now config_local_net(){ if [ -z "$INSTALLED" ] ; then @@ -639,28 +625,6 @@ config_local_net(){ } # }}} -# firewire devices {{{ -# the raw1394 driver does not yet export info into SYSFS, -# so let's create raw1394 device manually -# http://www.michael-prokop.at/blog/index.php?p=352 -config_firewire_dev(){ -if checkbootparam 'nofirewiredev' ; then - ewarn "Skipping creating some firewire devices as requested on boot commandline." ; eend 0 -else -#if [ "${KERNEL%-*}" == "2.6.11" ] ; then - einfo "Creating some firewire devices (fix kernel 2.6-bug)." -# cd /dev && MAKEDEV video1394 raw1394 - [ -r /dev/raw1394 ] || mknod /dev/raw1394 c 171 0 - [ -r /dev/video1394 ] || mknod -m 666 /dev/video1394 c 171 16 -# mknod -m 666 /dev/dv1394 c 171 32 # for NTSC - [ -r /dev/dv1394 ] || mknod -m 666 /dev/dv1394 c 171 34 # for PAL - chown -R root:video /dev/raw1394 /dev/video1394 /dev/dv1394 - chmod -R 664 /dev/raw1394 /dev/video1394 /dev/dv1394 ; eend $? -fi -#fi -} -# }}} - # {{{ copy passwd-lockfile to ramdisk (fix unionfs-behaviour) # otherwise we will get: passwd: Authentication token lock busy config_fix_passwd(){ @@ -699,86 +663,6 @@ fi } # }}} -# {{{ hardware detection via discover -config_discover(){ -if checkbootparam 'nodisc' ; then - ewarn "Skipping hardware detection via discover as requested on boot commandline." ; eend 0 -else - if [ -x /sbin/discover ] ; then - einfo "Discovering hardware. Trying to load the following modules in background:" - eindent - einfo "$(discover --data-path=linux/module/name --data-path=linux/modules/options --format="%s %s" --data-version=`uname -r` --enable-bus all | sort -u | xargs echo)" - eoutdent - /sbin/discover-modprobe -v >>$DEBUG 2>&1 & - eend 0 - else - eerror "Application discover not available. Information: udev should handle hardware recognition." ; eend 0 - fi -fi -} -# }}} - -# {{{ hardware detection via hwinfo -config_hwinfo(){ -if checkbootparam 'hwinfo' >>$DEBUG 2>&1; then - einfo "Discovering hardware via hwinfo:" - MODULES=$(su grml hwinfo | grep "Cmd: \"modprobe" | awk '{print $5}' | sed 's/"//') - echo -n " Loading modules: " - for i in `echo $MODULES` ; do echo -n $i && modprobe $i ; done - eend 0 -fi -} -# }}} - -# {{{ disable hotplug agents on request -config_hotplug_agent(){ -if checkbootparam 'noagent' ; then - AGENT="$(getbootparam 'noagent' 2>>$DEBUG)" - AGENTLIST=$(echo "$AGENT" | sed 's/,/\\n/g') - AGENTNL=$(echo "$AGENT" | sed 's/,/ /g') - einfo "Disabling hotplug-agent(s) $AGENTNL" - for agent in $(echo -e $AGENTLIST) ; do - mv /etc/hotplug/${agent}.rc /etc/hotplug/${agent}.norc - done - [ "$?" == "0" ] ; eend $? -fi -} -# }}} - -# {{{ blacklist of hotplug-modules -config_hotplug_blacklist(){ -if checkbootparam 'black' ; then - BLACK="$(getbootparam 'black' 2>>$DEBUG)" - BLACKLIST=$(echo "$BLACK" | sed 's/,/\\n/g') - BLACKNL=$(echo "$BLACK" | sed 's/,/ /g') - einfo "Blacklisting $BLACKNL via /etc/hotplug/blacklist.d/hotplug-light" - echo -e "$BLACKLIST" >> /etc/hotplug/blacklist.d/hotplug-light - echo -e "$BLACKLIST" >> /etc/hotplug/blacklist - eend 0 -fi -} -# }}} - -# {{{ run hotplug -config_hotplug(){ -if checkbootparam 'nohotplug' ; then - ewarn "Skipping running hotplug as requested on boot commandline." ; eend 0 -else - if [ -r /etc/init.d/hotplug ] ; then - einfo "Starting hotplug system in background." - /etc/init.d/hotplug start >>$DEBUG 2>>$DEBUG & - eend 0 - elif [ -r /etc/init.d/hotplug-light ] ; then - einfo "Starting hotplug-light system in background." - /etc/init.d/hotplug-light start >>$DEBUG 2>>$DEBUG & - eend 0 - else - ewarn "No hotplug system found. Should be handled by udev. Skipping execution." ; eend 0 - fi -fi -} -# }}} - # {{{ blacklist specific module [ used in /etc/init.d/udev ] config_blacklist(){ if checkbootparam 'blacklist' ; then @@ -811,11 +695,11 @@ fi config_acpi_apm(){ if [ -d /proc/acpi ]; then if checkbootparam 'noacpi'; then - ewarn "Skipping ACPI Bios detection as requested via noacpi on boot commandline." ; eend 0 + ewarn "ACPI: Not loading modules as requested by boot option \"noacpi\"." ; eend 0 elif checkbootparam 'nogrmlacpi' ; then - ewarn "Skipping ACPI Bios detection as requested via nogrmlacpi on boot commandline." ; eend 0 + ewarn "ACPI: Not loading modules as requested by boot option \"nogrmlacpi\"." ; eend 0 else - einfo "ACPI Bios found, activating modules (disable via bootoption noacpi / nogrmlacpi): " + einfo "ACPI: Loading modules (disable with boot option noacpi / nogrmlacpi): " eindent found="" for a in /lib/modules/$KERNEL/kernel/drivers/acpi/*; do @@ -832,15 +716,9 @@ if [ -d /proc/acpi ]; then else ewarn "(none)" ; eend 1 fi - if ! ps x | grep -q /usr/sbin/acpid ; then - if ! [ -r /var/run/dbus/pid ] ; then - einfo "Starting acpi daemon." - /etc/init.d/acpid start >>$DEBUG 2>&1 ; eend $? - else - eerror "acpid error: it seems you are running d-bus/hal, but acpid needs to be started before d-bus." - eerror "Solution: please activate acpid via /etc/runlevel.conf" - eend 1 - fi + if ! ps x 2>>$DEBUG | grep -q /usr/sbin/acpid ; then + einfo "Starting acpi daemon." + /etc/init.d/acpid start >>$DEBUG 2>&1 ; eend $? else ewarn "acpi daemon already running." eend 0 @@ -866,228 +744,6 @@ fi } # }}} -# {{{ PCMCIA Check/Setup -# This needs to be done before other modules are being loaded (by hwsetup) -config_pcmcia(){ -if checkbootparam 'nopcmcia'; then - ewarn "Skipping PCMCIA detection as requested on boot commandline." ; eend 0 -else - if /usr/sbin/laptop-detect ; then - einfo "Detected Laptop - checking for PCMCIA." && eend 0 - modprobe pcmcia_core >>$DEBUG 2>&1 - # Try Cardbus or normal PCMCIA socket drivers - modprobe yenta_socket >>$DEBUG 2>&1 || modprobe i82365 >>$DEBUG 2>&1 || modprobe pd6729 >>$DEBUG 2>&1 || modprobe tcic >>$DEBUG 2>&1 - if [ "$?" = "0" ]; then - modprobe ds >>$DEBUG 2>&1 - if [ -d /proc/bus/pccard ] ; then - if [ -x /sbin/cardmgr ] ; then - einfo "PCMCIA found, starting cardmgr." - cardmgr >>$DEBUG 2>&1 && sleep 6 && eend 0 - else - eerror "No cardmgr found. Make sure package pcmciautils is installed, it should handle it instead." ; eend 1 - fi - fi - fi - fi -fi -} -# }}} - -# {{{ run software synthesizer via speakup -config_swspeak(){ - if checkbootparam 'swspeak' ; then - einfo "Bootoption swspeak found." - - if [ ! -d /proc/speakup/ ] && ! grep -q speakup_soft /proc/modules ; then - ewarn "Kernel does not support software speakup - trying to load kernel module:" ; eend 0 - eindent - einfo "Loading speakup_soft" - if modprobe speakup_soft ; then - eend 0 - else - flitewrapper "Fatal error setting up software speakup" - eend 1 - return 1 - fi - eoutdent - fi - - if [ -d /proc/speakup/ ] || grep -q speakup_soft /proc/modules ; then - einfo "Kernel supports speakup." ; eend 0 - eindent - einfo "Just run swspeak if you want to use software synthesizer via speakup." - flitewrapper "Finished activating software speakup. Just run swspeak when booting finished." - eoutdent - else - eerror "Kernel does not seem to support speakup. Skipping swspeak." ; eend 1 - flitewrapper "Kernel does not seem to support speakup. Sorry." - fi - fi -} -# }}} - -# {{{ support hardware synthesizer via speakup -config_hwspeak(){ - if checkbootparam 'speakup.synth' ; then - einfo "Bootoption speakup.synth found." - eindent - - module="$(getbootparam 'speakup.synth' 2>>$DEBUG)" - if [ -z "$module" ] ; then - eerror "Sorry, no speakup module specified for bootoption speakup.synth." - flitewrapper "Sorry, no speakup module specified for bootoption speakup.synth." - else - einfo "Trying to load $module" - modprobe "speakup_${module}" - eend $? - fi - - if [ -d /proc/speakup/ ] || grep -q speakup /proc/modules ; then - einfo "Kernel should support speakup now." ; eend 0 - flitewrapper "Kernel should support speakup now." - else - eerror "Kernel or hardware do not seem to support speakup. Skipping hwspeak." ; eend 1 - flitewrapper "Kernel or hardware do not seem to support speakup. Sorry." - fi - - eoutdent - - # hwspeak: - elif checkbootparam 'hwspeak' ; then - einfo "Bootoption hwspeak found." - - if [ ! -d /proc/speakup/ ] && ! grep -q speakup /proc/modules ; then - ewarn "Kernel does not support hardware speakup - trying to load kernel modules:" ; eend 0 - eindent - if ! [ -d "/lib/modules/${KERNEL}/extra/speakup/" ] ; then - eerror "Kernel does not provide speakup modules, sorry." ; eend 1 - else - for module in $(find "/lib/modules/${KERNEL}/extra/speakup/" -name \*.ko | \ - sed 's#.*speakup/##g ; s#.ko$##g' | \ - grep -ve speakup_soft -ve speakup_dummy | sort -u) ; do - einfo "Trying to load $module" - modprobe $module - eend $? - done - fi - eoutdent - fi - - if [ -d /proc/speakup/ ] || grep -q speakup /proc/modules ; then - einfo "Kernel should support speakup now." ; eend 0 - flitewrapper "Kernel should support speakup now." - else - eerror "Kernel or hardware do not seem to support speakup. Skipping hwspeak." ; eend 1 - flitewrapper "Kernel or hardware do not seem to support speakup. Sorry." - fi - fi -} -# }}} - -# {{{ Check for blind option or brltty -config_blind(){ -BLIND="" -checkbootparam 'blind' && BLIND="yes" -BRLTTY="$(getbootparam 'brltty' 2>>$DEBUG)" - -if [ -n "$BLIND" -o -n "$BRLTTY" ]; then - if [ -x /sbin/brltty ]; then - # Blind option detected, start brltty now. - # modprobe serial_core parport_serial generic_serial && echo "done" - CMD=brltty - BRLTYPE="" - BRLDEV="" - BRLTEXT="" - if [ -n "$BRLTTY" ]; then - # Extra options - BRLTYPE="${BRLTTY%%,*}" - R="${BRLTTY#*,}" - if [ -n "$R" -a "$R" != "$BRLTTY" ]; then - BRLTTY="$R" - BRLDEV="${BRLTTY%%,*}" - R="${BRLTTY#*,}" - if [ -n "$R" -a "$R" != "$BRLTTY" ]; then - BRLTTY="$R" - BRLTEXT="${BRLTTY%%,*}" - R="${BRLTTY#*,}" - fi - fi - fi - [ -n "$BRLTYPE" ] && CMD="$CMD -b $BRLTYPE" - [ -n "$BRLDEV" ] && CMD="$CMD -d $BRLDEV" - [ -n "$BRLTEXT" ] && CMD="$CMD -t $BRLTEXT" - einfo "Starting braille-display manager." -# ( exec $CMD & ) - ( sh -c "$CMD" & ) - sleep 2 && BLINDSOUND="yes" - eend 0 - fi -fi -} -# }}} - -# {{{ AGP -config_agp(){ -if checkbootparam 'forceagp' ; then -# Probe for AGP. Hope this can fail safely - grep -q "AGP" "/proc/pci" 2>>$DEBUG && { modprobe agpgart || modprobe agpgart agp_try_unsupported=1; } >>$DEBUG 2>&1 && einfo "AGP bridge detected." ; eend 0 -fi -} -# }}} - -# {{{ automount(er) -config_automounter(){ -if checkbootparam 'automounter' ; then - RUNLEVEL="$(runlevel)" - AUTOMOUNTER="" - [ -x /etc/init.d/autofs ] && [ "$RUNLEVEL" != "N 1" ] && [ "$RUNLEVEL" != "N S" ] && AUTOMOUNTER="yes" - -addautomount(){ -# /dev/ice options - d="${1##*/}" - if [ -n "$AUTOMOUNTER" ]; then - [ -d "/mnt/$d" -a ! -L "/mnt/$d" ] && rmdir /mnt/$d - [ -d "/mnt/auto/$d" ] || mkdir -p "/mnt/auto/$d" - [ -L "/mnt/$d" ] || ln -s "/mnt/auto/$d" "/mnt/$d" - anew="$d -fstype=auto,$2 :$i" - grep -q "$anew" "/etc/auto.mnt" || echo "$anew" >> /etc/auto.mnt - AUTOMOUNTS="$AUTOMOUNTS $d" - new="$1 /mnt/auto/$d auto users,noauto,exec,$2 0 0" - else - [ -d /mnt/$d ] && mkdir -p /mnt/$d - new="$1 /mnt/$d auto users,noauto,exec,$2 0 0" - fi - grep -q "$new" "/etc/fstab" || echo "$new" >> /etc/fstab -} - - AUTOMOUNTS="floppy cdrom" -# Add new devices to /etc/fstab and /etc/auto.mnt - for i in /dev/cdrom?*; do - if [ -L $i ]; then - addautomount "$i" "ro" - fi - done -fi - -if [ -n "$AUTOMOUNTER" ]; then -# Check for floppy dir, reinstall with automounter - [ -d /mnt/floppy -a ! -L /mnt/floppy ] && rmdir /mnt/floppy - [ -d /mnt/auto/floppy ] || mkdir -p /mnt/auto/floppy - [ -L /mnt/floppy ] || ln -s /mnt/auto/floppy /mnt/floppy - [ -d /mnt/cdrom -a ! -L /mnt/cdrom ] && rmdir /mnt/cdrom - [ -d /mnt/auto/cdrom ] || mkdir -p /mnt/auto/cdrom - [ -L /mnt/cdrom ] || ln -s /mnt/auto/cdrom /mnt/cdrom - rm -f /etc/fstab.new -# Replace paths from bootfloppy - sed 's|/mnt/cdrom|/mnt/auto/cdrom|g;s|/mnt/floppy|/mnt/auto/floppy|g' /etc/fstab > /etc/fstab.new - mv -f /etc/fstab.new /etc/fstab -# Start automounter now - einfo "Starting automounter for ${AUTOMOUNTS}." - /etc/init.d/autofs start >>$DEBUG ; eend $? -fi -} -# }}} - # {{{ Collect partitions from /proc/partitions first for enabling DMA check_partitions(){ partitions="" @@ -1138,19 +794,6 @@ if checkbootparam 'swap' || checkbootparam 'anyswap' ; then checkbootparam 'anyswap' && export ANYSWAP='yes' || export ANYSWAP="" fi -if checkbootparam 'nofstab' || checkbootparam 'forensic' ; then - ewarn "Skipping /etc/fstab creation as requested on boot commandline." ; eend 0 -else - einfo "Scanning for harddisk partitions and creating /etc/fstab. (Disable this via boot option: nofstab)" - iszsh && setopt nonomatch - if [ -x /usr/sbin/rebuildfstab ] ; then - config_userfstab || fstabuser=grml - /usr/sbin/rebuildfstab -r -u $fstabuser -g $fstabuser ; eend $? - else - ewarn "Command rebuildfstab not found. Install package grml-rebuildfstab." ; eend 1 - fi -fi # checkbootparam nofstab/forensic - # Scan for swap, config, homedir - but only in live-mode if [ -z "$INSTALLED" ] ; then [ -z "$NOSWAP" ] && einfo "Searching for swap partition(s) as requested." @@ -1308,7 +951,7 @@ else einfo "Detecting 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 -# Virtual Box supports ACPI and laptop-detect would return with '0', so check for it: +# no cpufreq setup inside VirtualBox if [ -r /proc/acpi/battery/BAT0/info ] && grep -q 'OEM info:.*innotek' /proc/acpi/battery/BAT0/info ; then einfo 'Virtual Box detected, skipping cpufreq setup.' ; eend 0 return 0 @@ -1499,7 +1142,7 @@ config_mixer () { fi for card in $(cat /proc/asound/cards| grep -e '^\s*[0-9]' | awk '{print $1}') ; do - einfo "Configuring soundcard \"$(cat /proc/asound/cards| awk -F\[ '/^ '$card'/{ FS=" "; $0=$2; print $1 }' )\"" + einfo "Configuring soundcard \"$(awk -F\[ '/^ *'$card' \[/{ FS=" "; $0=$2; print $1}' < /proc/asound/cards)\"" eindent if checkbootparam 'vol' ; then @@ -1566,34 +1209,6 @@ fi } # }}} -# {{{ keyboard add-ons -config_setkeycodes(){ -if checkbootparam 'setkeycodes' ; then - einfo "Setting keycodes as requested via bootparameter 'setkeycodes'." - # MS MM keyboard add-on - # fix - setkeycodes e001 126 &>/dev/null - setkeycodes e059 127 &>/dev/null - # fn keys - setkeycodes e03b 59 &>/dev/null - setkeycodes e008 60 &>/dev/null - setkeycodes e007 61 &>/dev/null - setkeycodes e03e 62 &>/dev/null - setkeycodes e03f 63 &>/dev/null - setkeycodes e040 64 &>/dev/null - setkeycodes e041 65 &>/dev/null - setkeycodes e042 66 &>/dev/null - setkeycodes e043 67 &>/dev/null - setkeycodes e023 68 &>/dev/null - setkeycodes e057 87 &>/dev/null - setkeycodes e058 88 &>/dev/null - # hp keycodes - setkeycodes e00a 89 e008 90 &>/dev/null - eend 0 -fi -} -# }}} - # {{{ wondershaper config_wondershaper(){ if checkbootparam 'wondershaper' ; then @@ -1672,11 +1287,18 @@ config_services(){ SERVICE="$(getbootparam 'services' 2>>$DEBUG)" SERVICELIST=$(echo "$SERVICE" | sed 's/,/\\n/g') SERVICENL=$(echo "$SERVICE" | sed 's/,/ /g') - einfo "Starting service(s) ${SERVICENL} in background." for service in $(echo -e $SERVICELIST) ; do - /etc/init.d/${service} start >>$DEBUG & + # support running (custom) init scripts in non-blocking mode + # if they contain the keyword "DO_NO_RUN_IN_BACKGROUND". + if grep -q 'DO_NO_RUN_IN_BACKGROUND' "/etc/init.d/${service}" 2>>$DEBUG ; then + einfo "Starting service ${service}." + /etc/init.d/${service} start >>$DEBUG + else + einfo "Starting service ${service} in background." + /etc/init.d/${service} start >>$DEBUG & + fi done - [ "$?" == "0" ] ; eend $? + eend $? fi } # }}} @@ -1738,23 +1360,6 @@ config_netscript() { } # }}} -# {{{ blindsound -config_blindsound(){ - if checkbootparam 'blind' ; then - beep - flitewrapper "welcome to the gremel system" - fi -} -# }}} - -# {{{ welcome sound -config_welcome(){ - if checkbootparam 'welcome' ; then - flitewrapper "welcome to the gremel system" - fi -} -# }}} - # {{{ fix/workaround for unionfs fix_unionfs(){ if [ -z "$INSTALLED" ]; then @@ -1787,9 +1392,9 @@ EOF # adjust inittab for xstartup if grep -q '^6:' /etc/inittab ; then - sed -i 's|^6:.*|6:2345:respawn:/bin/zsh --login -c "/etc/init.d/xstartup ; /usr/bin/zsh-login" >/dev/tty6 2>\&1 /dev/tty6 2>\&1 /dev/tty6 2>&1 < /dev/tty6' >> /etc/inittab + echo '6:2345:respawn:/bin/zsh --login -c "/etc/init.d/xstartup ; /usr/share/grml-scripts/run-welcome" >/dev/tty6 2>&1 < /dev/tty6' >> /etc/inittab fi /sbin/telinit q ; eend $? @@ -1832,8 +1437,11 @@ config_finddcsdir() { # foo, even if a GRMLCFG partition is present. DCSDIR="" DCSMP="/mnt/grml" +# autoconfig, see issue673 +GRMLCFG="$(getbootparam 'autoconfig' 2>>$DEBUG)" +[ -n "$GRMLCFG" ] || GRMLCFG="GRMLCFG" if checkbootparam 'noautoconfig' || checkbootparam 'forensic' ; then - ewarn "Skipping running automount of device(s) labeled GRMLCFG as requested." ; eend 0 + ewarn "Skipping running automount of device(s) labeled $GRMLCFG as requested." ; eend 0 else if [ -z "$INSTALLED" ] ; then if checkbootparam 'myconfig' ; then @@ -1842,7 +1450,7 @@ else eerror "Error: No device for bootoption myconfig provided." ; eend 1 fi # [ -z "$DCSDEVICE" ] elif checkvalue $CONFIG_MYCONFIG; then # checkbootparam myconfig - einfo "Searching for device(s) labeled with GRMLCFG. (Disable this via boot option: noautoconfig)" ; eend 0 + einfo "Searching for device(s) labeled with $GRMLCFG. (Disable this via boot option: noautoconfig)" ; eend 0 eindent # We do need the following fix so floppy disk is available to blkid in any case :-/ if [ -r /dev/fd0 ] ; then @@ -1851,7 +1459,7 @@ else blkid /dev/fd0 >>$DEBUG 2>&1 fi fi - DCSDEVICE=$(blkid -t LABEL=GRMLCFG | head -1 | awk -F: '{print $1}') + DCSDEVICE=$(blkid -t LABEL=$GRMLCFG | head -1 | awk -F: '{print $1}') if [ -n "$DCSDEVICE" ]; then DCSMP="/mnt/grmlcfg" fi @@ -1920,6 +1528,9 @@ config_debs(){ if checkbootparam 'debs' ; then iszsh && setopt localoptions shwordsplit DEBS="$(getbootparam 'debs' 2>>$DEBUG)" + if [ -z "$DEBS" ] ; then + DEBS="*.deb" + fi if ! echo $DEBS | grep -q '/'; then # backwards compatibility: if no path is given get debs from debs/ DEBS="debs/$DEBS" @@ -1982,9 +1593,13 @@ if checkbootparam 'config' || [ "$DCSMP" = "/mnt/grmlcfg" ]; then fi fi fi -# umount $DCSMP if it was mounted by finddcsdir -# this doesn't really belong here -grep -q '$DCSMP' /proc/mounts && umount $DCSMP +} +# }}} + +# {{{ confing_umount_dcsdir +config_umount_dcsdir(){ + # umount $DCSMP if it was mounted by finddcsdir + grep -q "$DCSMP" /proc/mounts && umount "$DCSMP" } # }}} @@ -2375,7 +1990,7 @@ config_tohd() # {{{ grml2hd: automatic installation config_grml2hd(){ -if checkbootparam "BOOT_IMAGE=grml2hd" ; then +if checkbootparam "grml2hd" || checkbootparam "BOOT_IMAGE=grml2hd" ; then if checkbootparam 'user' ; then NEWUSER='' @@ -2427,7 +2042,7 @@ fi # if checkbootparam "BOOT_IMAGE=grml2hd ... # {{{ debootstrap: automatic installation config_debootstrap(){ -if checkbootparam "BOOT_IMAGE=debian2hd" ; then +if checkbootparam "BOOT_IMAGE=debian2hd" || checkbootparam "debian2hd" ; then einfo "Bootoption debian2hd found. Setting up environment for automatic installation via grml-debootstrap." ; eend 0 @@ -2516,6 +2131,45 @@ fi # checkbootparam "BOOT_IMAGE=debian2hd } # }}} +config_virtualbox_shared_folders() { +if [ -r /proc/acpi/battery/BAT0/info ] && grep -q 'OEM info:.*innotek' /proc/acpi/battery/BAT0/info ; then + einfo "VirtualBox detected, trying to set up Shared Folders." + if ! modprobe -l | grep -q vboxsf.ko ; 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 + eend $? + + einfo "Adjusting /dev/vboxguest." + chown root:vboxsf /dev/vboxguest + chmod 660 /dev/vboxguest + eend $? + + if [ -n "$CONFIG_FSTAB_USER" ] ; then + fstabuser="$CONFIG_FSTAB_USER" + else + fstabuser=$(getent passwd 1000 | cut -d: -f1) + fi + einfo "Adding $fstabuser to group vboxsf." + adduser grml vboxsf &>/dev/null + eend $? + + einfo "Starting VBoxService." + VBoxService >/dev/null & + eend $? + + eoutdent + fi +fi +} + # {{{ Support customization config_distri(){ if checkbootparam 'distri'; then