X-Git-Url: https://git.grml.org/?p=grml-autoconfig.git;a=blobdiff_plain;f=autoconfig.functions;h=04f8088babfdab1f326ab8ae500f93fedb8a081b;hp=420cbfb7261f84d8257e94575d801f37964dd6ee;hb=5a37523cc5cc18f932c3683e911fcad3c345baa4;hpb=239898a767fa6222e8ad4f6354c586f8ee90b081 diff --git a/autoconfig.functions b/autoconfig.functions index 420cbfb..04f8088 100755 --- a/autoconfig.functions +++ b/autoconfig.functions @@ -461,41 +461,6 @@ config_kernel(){ } # }}} -# {{{ vmware specific stuff -config_vmware(){ -if checkbootparam 'novmware' ; then - ewarn "Skipping running vmware specific stuff as requested on boot commandline." ; eend 0 -else - if [ -z "$INSTALLED" ] ; then - if vmware-detect || checkbootparam "BOOT_IMAGE=vmware" ; then - if ! checkbootparam 'qemu' ; then - if [ -r /etc/X11/xorg.conf.vmware ] ; then - einfo "VMware: Copying /etc/X11/xorg.conf.vmware to /etc/X11/xorg.conf" - cp /etc/X11/xorg.conf.vmware /etc/X11/xorg.conf ; eend $? - fi - fi - elif [ -r /proc/acpi/battery/BAT0/info -a -r /etc/X11/xorg.conf.virtualbox ] ; then - if grep -q 'OEM info: innotek' /proc/acpi/battery/BAT0/info ; then - einfo 'Virtual Box: Copying /etc/X11/xorg.conf.virtualbox to /etc/X11/xorg.conf' - cp /etc/X11/xorg.conf.virtualbox /etc/X11/xorg.conf ; eend $? - fi - fi - fi -fi -} -# }}} - -# {{{ qemu specific stuff -config_qemu(){ -if checkbootparam 'qemu' ; then - if [ -r /etc/X11/xorg.conf.example ] ; then - einfo "Qemu: Copying /etc/X11/xorg.conf.example to /etc/X11/xorg.conf" - cp /etc/X11/xorg.conf.example /etc/X11/xorg.conf ; eend $? - fi -fi -} -# }}} - # {{{ ld.so.cache + depmod config_ld_mod(){ if [ -n "$INSTALLED" ]; then @@ -652,16 +617,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 @@ -674,28 +629,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(){ @@ -734,86 +667,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 @@ -901,33 +754,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 @@ -1061,13 +887,6 @@ fi } # }}} -# {{{ Interactive configuration -config_interactive(){ - ewarn "config_interactive is deprecated nowadays." - ewarn "Please set CONFIG_INTERACTIVE='no' in /etc/grml/autoconfig" ; eend 0 -} -# }}} - # {{{ AGP config_agp(){ if checkbootparam 'forceagp' ; then @@ -1077,59 +896,6 @@ 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="" @@ -1180,19 +946,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." @@ -1334,130 +1087,69 @@ fi } # }}} -# {{{ Fat-Client-Version: DHCP Broadcast for IP address -config_dhcp(){ -if checkbootparam 'nodhcp'; then - ewarn "Skipping DHCP broadcast/network detection as requested on boot commandline." ; eend 0 -else - NETDEVICES="$(awk -F: '/eth.:|tr.:|wlan.:/{print $1}' /proc/net/dev 2>>$DEBUG)" - rm -rf /etc/network/status ; mkdir -p /etc/network/status - for DEVICE in `echo "$NETDEVICES"` ; do - einfo "Network device ${WHITE}${DEVICE}${NORMAL} detected, DHCP broadcasting for IP. (Backgrounding)" - trap 2 3 11 - ifconfig $DEVICE up >>$DEBUG 2>&1 - ( pump -i $DEVICE --script=/usr/lib/grml-autoconfig/pump-runparts >>$DEBUG 2>&1 && echo finished_running_pump > /etc/network/status/$DEVICE ) & - trap "" 2 3 11 - sleep 1 - eend 0 - done - if [ -n "$INSTALLED" ] ; then - ewarn 'If you want to disable automatic DHCP requests set CONFIG_DHCP=no in /etc/grml/autoconfig.' - eend 0 - fi -fi -} -# }}} - # {{{ CPU-detection config_cpu(){ if checkbootparam 'nocpu'; then ewarn "Skipping CPU detection as requested on boot commandline." ; eend 0 + return 0 +fi + +if [[ $(grep -c processor /proc/cpuinfo) -gt 1 ]] ; then + einfo "Detecting CPU:" + 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) + echo $CPU | sed 's/ \{1,\}/ /g' + eend 0 else - # check module dependencies - cpufreq_check() { - if ! [ -e /lib/modules/${KERNEL}/kernel/arch/x86/kernel/cpu/cpufreq ] ; then - if [ -e /lib64 ] ; then - [ -e /lib/modules/${KERNEL}/kernel/arch/x86_64/kernel/cpufreq ] || return 1 + 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: +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 +fi + +if [ -x /etc/init.d/loadcpufreq ] ; then + 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=" +" + 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 - [ -e /lib/modules/${KERNEL}/kernel/arch/i386/kernel/cpu/cpufreq -o ! -e /lib/modules/${KERNEL}/kernel/drivers/cpufreq ] || return 1 + ewarn "Could not find an appropriate kernel module for cpu frequency scaling." ; eend 1 fi fi - } - - if [[ `grep -c processor /proc/cpuinfo` -gt 1 ]] ; then - einfo "Detecting CPU:" - 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) - echo $CPU | sed 's/ \{1,\}/ /g' - eend 0 - 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 - # Disclaimer: sorry for the tons of if/then/else... but this makes sure we use: - # * it only if we have the according kernel modules available - # * cpufreq not inside Virtual Box - # * current version of /etc/init.d/loadcpufreq from Debian (to stay in sync) - # -> parse output of the initscript and output it according to our look'n'feel - # * our own cpufreq-detect.sh if /etc/init.d/loadcpufreq isn't present - if ! cpufreq_check ; then - ewarn "Skipping cpufreq setup as module dependencies are not fulfilled." ; eend 1 - else - # Virtual Box supports ACPI and laptop-detect would return with '0', so check for it: - if [ -r /proc/acpi/battery/BAT0/info ] ; then - if grep -q 'OEM info: innotek' /proc/acpi/battery/BAT0/info ; then - einfo 'Virtual Box detected, skipping cpufreq setup.' ; eend 0 - return 0 - fi - fi - einfo "Trying to set up cpu frequency scaling:" - eindent - if [ -x /etc/init.d/loadcpufreq ] ; then - 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=" -" - 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 - ewarn "Could not find an appropriate kernel module for cpu frequency scaling." ; eend 1 - fi - fi - rm -f $LOADCPUFREQ - elif [ -r /usr/bin/cpufreq-detect.sh ] ; then - . /usr/bin/cpufreq-detect.sh - if [ -n "$MODULE" -a "$MODULE" != none ]; then - einfo "Loading modules ${MODULE}" - modprobe "$MODULE" >>$DEBUG || modprobe "$MODULE_FALLBACK" >>$DEBUG - RC=$? - if [[ "$RC" == 0 ]]; then - eend 0 - else - SKIP_CPU_GOVERNOR=1 - eend $RC - fi - else - ewarn "Could not detect an appropriate CPU for use with cpu frequency scaling - skipping." - eend 1 - fi # $MODULE - fi # loadcpufreq - - if [ -z "$SKIP_CPU_GOVERNOR" ] ; then - einfo "Loading cpufreq_ondemand, setting ondemand governor" - RC=0 - if modprobe cpufreq_ondemand ; RC=$? ; then - for file in $(find /sys/devices/system/cpu/ -name scaling_governor 2>/dev/null) ; do - echo ondemand > $file - done - fi - eend $RC - fi # cpu-governor + rm -f $LOADCPUFREQ - eoutdent + if [ -z "$SKIP_CPU_GOVERNOR" ] ; then + einfo "Loading cpufreq_ondemand, setting ondemand governor" + RC=0 + if modprobe cpufreq_ondemand ; RC=$? ; then + for file in $(find /sys/devices/system/cpu/ -name scaling_governor 2>/dev/null) ; do + echo ondemand > $file + done + fi + eend $RC + fi # cpu-governor - fi # cpufreq_check -fi # checkbootparam nocpu + eoutdent +fi } # }}} @@ -1589,14 +1281,6 @@ fi } # }}} -# {{{ Check for persistent homedir option and eventually mount /home from there, or use a loopback file. -config_homedir(){ -if checkbootparam 'home' ; then - ewarn "The \"home\" bootoption is deprecated, please use the persistency feature instead."; eend 1 -fi -} -# }}} - # {{{ Sound config_mixer () { if ! [ -x /usr/bin/amixer ] ; then @@ -1610,7 +1294,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| grep -e "$card" | awk -F\[ '{print $2}' | awk '{print $1}')" + einfo "Configuring soundcard \"$(awk -F\[ '/^ *'$card' \[/{ FS=" "; $0=$2; print $1}' < /proc/asound/cards)\"" eindent if checkbootparam 'vol' ; then @@ -1644,7 +1328,7 @@ config_mixer () { fi for CONTROL in Master PCM ; do - if amixer -q | grep -q "Simple mixer control.*$CONTROL" ; then + if amixer -q | grep -q "Simple mixer control '$CONTROL'" ; then amixer -q set "${CONTROL}" "${VOL}"% eend $? fi @@ -1677,34 +1361,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 @@ -1783,11 +1439,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 } # }}} @@ -1874,13 +1537,6 @@ fix_unionfs(){ } # }}} -# {{{ create all /mnt-directories -create_mnt_dirs(){ - ewarn "create_mnt_dirs is deprecated as grml-rebuildfstab does all we need." - ewarn "Please set CONFIG_CREATE_MNT_DIRS='no' in /etc/grml/autoconfig" ; eend 0 -} -# }}} - # {{{ start X window system via grml-x config_x_startup(){ # make sure we start X only if startx is used *before* a nostartx option @@ -1950,8 +1606,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 @@ -1960,7 +1619,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 @@ -1969,7 +1628,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 @@ -2038,6 +1697,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" @@ -2100,9 +1762,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" } # }}} @@ -2434,45 +2100,8 @@ config_lvm(){ # {{{ debnet: setup network based on an existing one found on a partition config_debnet(){ if checkbootparam 'debnet' ; then - iszsh && setopt localoptions shwordsplit - DEVICES="$(< /proc/partitions tail -n +3 | awk '{print "/dev/"$4}' | tr "\n" " ")" - DEVICES="$DEVICES $(ls /dev/mapper/*)" - FOUND_DEBNET="" - einfo "Bootoption 'debnet' found. Searching for Debian network configuration: " - eindent - if ! mount | grep '/mnt ' >/dev/null 2>&1 ; then - for i in $DEVICES; do - if mount -o ro -t auto "$i" /mnt >/dev/null 2>&1; then - einfo "Scanning on $i" - if [ -f /mnt/etc/network/interfaces ]; then - einfo "/etc/network/interfaces found on ${i}" ; eend 0 - FOUND_DEBNET="$i" - break - fi - umount /mnt - fi - done - - if [ -n "$FOUND_DEBNET" ]; then - einfo "Stopping network." - pump -k >/dev/null 2>&1 - /etc/init.d/networking stop >/dev/null 2>&1 ; eend $? - einfo "Copying Debian network configuration from $FOUND_DEBNET to running system." - rm -rf /etc/network/run - cp -a /mnt/etc/network /etc - rm -rf /etc/network/run - mkdir /etc/network/run - umount /mnt ; eend $? - einfo "Starting network." - invoke-rc.d networking start ; eend $? - else - eerror "/etc/network/interfaces not found." ; eend 1 - fi - eoutdent - else - eerror "Error: /mnt already mounted." ; eend 1 - fi + /usr/sbin/debnet fi } # }}} @@ -2530,7 +2159,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='' @@ -2582,7 +2211,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 @@ -2685,14 +2314,5 @@ fi } # }}} -### {{{ backwards compatible stuff -config_environment(){ - ewarn "config_environment is deprecated. Please set CONFIG_ENVIRONMENT in /etc/grml/autoconfig to 'no'." ; eend 0 -} -config_keyboard(){ - ewarn "config_keyboard is deprecated. Please set CONFIG_KEYBOARD in /etc/grml/autoconfig to 'no'." ; eend 0 -} -# }}} - ## END OF FILE ################################################################# # vim:foldmethod=marker expandtab ai ft=zsh shiftwidth=3