X-Git-Url: https://git.grml.org/?p=grml-autoconfig.git;a=blobdiff_plain;f=autoconfig.functions;h=d90e051a330324cffc705179d3b81593dd327d75;hp=19fdbf6400f889e242a0822721e2940d525197fd;hb=dd31080f647066e88d42cd2a7981631e0cf632ba;hpb=73ba2ea4706132edb816e3c1b15f5b83ffeee38d diff --git a/autoconfig.functions b/autoconfig.functions index 19fdbf6..d90e051 100755 --- a/autoconfig.functions +++ b/autoconfig.functions @@ -1,7 +1,7 @@ #!/bin/zsh # Filename: autoconfig.functions # Purpose: basic system configuration and hardware setup for grml system -# Authors: grml-team (grml.org), (c) Klaus Knopper , (c) Michael Prokop +# Authors: grml-team (grml.org), (c) Michael Prokop # Bug-Reports: see http://grml.org/bugs/ # License: This file is licensed under the GPL v2. ################################################################################ @@ -34,59 +34,57 @@ iszsh && setopt no_nomatch # || echo "Warning: not running under zsh!" # {{{ Read in boot parameters if [ -z "$CMDLINE" ]; then - # if CMDLINE was set from the outside, we're debugging. Otherwise, take - # CMDLINE from Kernel and config files + # if CMDLINE was set from the outside, we're debugging. + # otherwise, take CMDLINE from Kernel and config files. CMDLINE="$(cat /proc/cmdline)" - [ -d /cdrom/bootparams/ ] && CMDLINE="$CMDLINE $(cat /cdrom/bootparams/* | tr '\n' ' ')" + [ -d /cdrom/bootparams/ ] && CMDLINE="$CMDLINE $(cat /cdrom/bootparams/* | tr '\n' ' ')" [ -d /live/image/bootparams/ ] && CMDLINE="$CMDLINE $(cat /live/image/bootparams/* | tr '\n' ' ')" fi # }}} ### {{{ Utility Functions -# Simple shell grep -stringinfile(){ - case "$(cat $2)" in *$1*) return 0;; esac - return 1 -} - -# same for strings -stringinstring(){ - case "$2" in *$1*) return 0;; esac - return 1 -} - -# Reread boot command line; echo last parameter's argument or return false. +# Get a bootoption's parameter: read boot command line and either +# echo last parameter's argument or return false. getbootparam(){ - stringinstring " $1=" "$CMDLINE" || return 1 - result="${CMDLINE##* $1=}" - result="${result%%[ ]*}" - echo "$result" - return 0 + case "$CMDLINE" in + *$1=*) + result="${CMDLINE##* $1=}" + result="${result%%[ ]*}" + echo "$result" + return 0 ;; + *) # no match? + return 1 ;; + esac } # Check boot commandline for specified option checkbootparam(){ - stringinstring " $1" "$CMDLINE" - return "$?" + [ -n "$1" ] || { echo "Error: missing argument to checkbootparam()" ; return 1 } + # make sure we match beginning and end of line as well + # but don't match 'vg' if we want to check for 'vga' + if echo "$CMDLINE" | grep -qw "$1" ; then + return 0 + else + return 1 + fi } +# Check wheter a configuration variable (like $CONFIG_TOHD) is +# enabled or not checkvalue(){ - if [ "$1" = "yes" ] ; then - return 0 - else - return 1 - fi + case "$1" in + [yY][eE][sS]) return 0 ;; # it's set to 'yes' + [tT][rR][uU][eE]) return 0 ;; # it's set to 'true' + *) return 1 ;; # default + esac } +# Are we using grml-small? checkgrmlsmall(){ grep -q small /etc/grml_version 2>>$DEBUG && return 0 || return 1 } -checkgrmlusb(){ - grep -q usb /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 "$*" @@ -99,7 +97,7 @@ mount_proc(){ } mount_pts(){ - stringinfile "/dev/pts" /proc/mounts || mount -t devpts /dev/pts /dev/pts 2>/dev/null + grep -q "/dev/pts" /proc/mounts || mount -t devpts /dev/pts /dev/pts 2>/dev/null } mount_sys(){ @@ -107,17 +105,17 @@ mount_sys(){ } # }}} -# {{{ Check if we are running from the grml-CD or HD +# {{{ Check if we are running in live mode or from HD INSTALLED="" [ -e /etc/grml_cd ] || INSTALLED="yes" # testcd TESTCD="" -checkbootparam "testcd" >>$DEBUG 2>&1 && TESTCD="yes" +checkbootparam 'testcd' >>$DEBUG 2>&1 && TESTCD="yes" # }}} # {{{ source lsb-functions , color handling -if checkbootparam "nocolor"; then +if checkbootparam 'nocolor'; then RC_NOCOLOR=yes . /etc/grml/lsb-functions einfo "Disabling colors in bootsequence as requested on commandline." ; eend 0 @@ -129,8 +127,8 @@ fi # {{{ debug config_debug(){ - checkbootparam "debug" && BOOTDEBUG="yes" - stringinstring "BOOT_IMAGE=debug " "$CMDLINE" && BOOTDEBUG="yes" + checkbootparam 'debug' && BOOTDEBUG="yes" + checkbootparam "BOOT_IMAGE=debug" && BOOTDEBUG="yes" rundebugshell(){ if [ -n "$BOOTDEBUG" ]; then @@ -159,7 +157,7 @@ config_debug(){ # {{{ log config_log(){ -if checkbootparam "log" || checkbootparam "debug" ; then +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" @@ -175,7 +173,7 @@ fi # {{{ set firmware timeout via bootparam config_fwtimeout(){ - if checkbootparam fwtimeout ; then + if checkbootparam 'fwtimeout' ; then TIMEOUT="$(getbootparam 'fwtimeout' 2>>$DEBUG)" einfo "Bootoption fwtimeout found. (Re)Loading firmware_class module." rmmod firmware_class 1>>$DEBUG 2>&1 @@ -203,7 +201,7 @@ config_language(){ grep -q ' lang=.*-utf8' /proc/cmdline && UTF8='yes' || UTF8='' # check for bootoption which overrides config from /etc/grml/autoconfig: - BOOT_LANGUAGE="$(getbootparam lang 2>>$DEBUG)" + BOOT_LANGUAGE="$(getbootparam 'lang' 2>>$DEBUG)" [ -n "$BOOT_LANGUAGE" ] && LANGUAGE="$BOOT_LANGUAGE" # set default to 'en' in live-cd mode if $LANGUAGE is not yet set: @@ -222,7 +220,7 @@ config_language(){ # set console font if [ -z "$CONSOLEFONT" ] ; then - if ! checkbootparam "nodefaultfont" >>$DEBUG 2>&1 ; then + if ! checkbootparam 'nodefaultfont' >>$DEBUG 2>&1 ; then # [ -n "$UTF8" ] && CONSOLEFONT='LatArCyrHeb-16' || CONSOLEFONT='Lat15-Terminus16' # if [ -r /usr/share/consolefonts/Lat15-Terminus16.psf.gz ] ; then if [ -r /usr/share/consolefonts/Uni3-Terminus16.psf.gz ] ; then @@ -245,7 +243,7 @@ config_language(){ [ -r /etc/sysconfig/keyboard ] && . /etc/sysconfig/keyboard # now allow keyboard override by boot commandline for later use: - KKEYBOARD="$(getbootparam keyboard 2>>$DEBUG)" + 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 @@ -257,7 +255,7 @@ config_language(){ local LANGUAGE="$BOOT_LANGUAGE" . /etc/grml/language-functions # allow setting xkeyboard explicitly different than console keyboard - KXKEYBOARD="$(getbootparam xkeyboard 2>>$DEBUG)" + KXKEYBOARD="$(getbootparam 'xkeyboard' 2>>$DEBUG)" if [ -n "$KXKEYBOARD" ]; then XKEYBOARD="$KXKEYBOARD" KDEKEYBOARD="$KXKEYBOARD" @@ -269,7 +267,7 @@ config_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)" + 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 @@ -317,7 +315,7 @@ config_language(){ eend $RC fi - if checkbootparam noconsolefont ; then + if checkbootparam 'noconsolefont' ; then ewarn "Skipping setting console font as requested on boot commandline." ; eend 0 else if [ -n "$CONSOLEFONT" ] ; then @@ -336,7 +334,7 @@ config_language(){ # {{{ Set hostname config_hostname(){ - if checkbootparam hostname ; then + if checkbootparam 'hostname' ; then HOSTNAME="$(getbootparam 'hostname' 2>>$DEBUG)" einfo "Setting hostname to $HOSTNAME as requested." sed -i "s/^127.0.0.1.*localhost/127.0.0.1 $HOSTNAME localhost/" /etc/hosts @@ -367,12 +365,12 @@ config_time(){ # The default hardware clock timezone is stated as representing local time. UTC="--localtime" grep -q "^UTC=" /etc/default/rcS || echo "UTC=no" >> /etc/default/rcS - checkbootparam utc >>$DEBUG 2>&1 && sed -i "s|^UTC=.*$|UTC=yes|" /etc/default/rcS - checkbootparam gmt >>$DEBUG 2>&1 && sed -i "s|^UTC=.*$|UTC=yes|" /etc/default/rcS - checkbootparam localtime >>$DEBUG 2>&1 && sed -i "s|^UTC=.*$|UTC=no|" /etc/default/rcS + checkbootparam 'utc' >>$DEBUG 2>&1 && sed -i "s|^UTC=.*$|UTC=yes|" /etc/default/rcS + checkbootparam 'gmt' >>$DEBUG 2>&1 && sed -i "s|^UTC=.*$|UTC=yes|" /etc/default/rcS + checkbootparam 'localtime' >>$DEBUG 2>&1 && sed -i "s|^UTC=.*$|UTC=no|" /etc/default/rcS grep -q -i "^UTC=yes" /etc/default/rcS && UTC="-u" # hwclock uses the TZ variable - KTZ="$(getbootparam tz 2>>$DEBUG)" + KTZ="$(getbootparam 'tz' 2>>$DEBUG)" [ -z "$KTZ" ] && [ -r /etc/timezone ] && KTZ=$(cat /etc/timezone) if [ ! -f "/usr/share/zoneinfo/$KTZ" ] ; then ewarn "Warning: unknown timezone $KTZ" ; eend 1 @@ -420,12 +418,12 @@ config_kernel(){ # {{{ vmware specific stuff config_vmware(){ -if checkbootparam novmware ; then +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 || stringinstring "BOOT_IMAGE=vmware " "$CMDLINE" ; then - if ! checkbootparam qemu ; 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 $? @@ -444,7 +442,7 @@ fi # {{{ qemu specific stuff config_qemu(){ -if checkbootparam qemu ; then +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 $? @@ -474,7 +472,7 @@ fi config_timezone(){ # don't touch the files if running from harddisk: if [ -z "$INSTALLED" ]; then - KTZ="$(getbootparam tz 2>>$DEBUG)" + KTZ="$(getbootparam 'tz' 2>>$DEBUG)" if [ -n "$KTZ" ] ; then if [ ! -f "/usr/share/zoneinfo/$KTZ" ] then @@ -503,7 +501,7 @@ RAM=$(/usr/bin/gawk '/MemTotal/{print $2}' /proc/meminfo) # MEM=$(/usr/bin/gawk 'BEGIN{m=0};/MemFree|Cached|SwapFree/{m+=$2};END{print m}' /proc/meminfo) eindent -if checkbootparam "small"; then +if checkbootparam 'small'; then einfo "Information: ${RAM} kB of RAM available." ; eend 0 einfo "Bootoption small detected. Activating small system." if [ -r /etc/inittab.small ] ; then @@ -545,7 +543,7 @@ eoutdent # skip startup of w3m {{{ config_fast(){ -if checkbootparam "fast "; then +if checkbootparam 'fast'; then ewarn "Bootoption fast detected. Skipping startup of grml-quickconfig." sed -i 's#^1:.*#1:12345:respawn:/usr/bin/openvt -f -c 1 -w -- /bin/zsh#' /etc/inittab /sbin/telinit q ; eend $? @@ -555,11 +553,11 @@ fi # activate serial console {{{ config_console(){ -if checkbootparam "console"; then +if checkbootparam 'console'; then einfo "Bootoption (for serial) console detected." eindent if [ -r /etc/mgetty/mgetty.config ] ; then - MODE=$(getbootparam console | awk -F, '{print $2}') + MODE=$(getbootparam 'console' | awk -F, '{print $2}') MODE=${MODE%%n*} [ -n "$MODE" ] || MODE=9600 # default mode einfo "Setting speed in /etc/mgetty/mgetty.config to $MODE bps" @@ -602,7 +600,7 @@ config_local_net(){ # so let's create raw1394 device manually # http://www.michael-prokop.at/blog/index.php?p=352 config_firewire_dev(){ -if checkbootparam "nofirewiredev" ; then +if checkbootparam 'nofirewiredev' ; then ewarn "Skipping creating some firewire devices as requested on boot commandline." ; eend 0 else #if [ "${KERNEL%-*}" == "2.6.11" ] ; then @@ -659,7 +657,7 @@ fi # {{{ hardware detection via discover config_discover(){ -if checkbootparam "nodisc" ; then +if checkbootparam 'nodisc' ; then ewarn "Skipping hardware detection via discover as requested on boot commandline." ; eend 0 else if [ -x /sbin/discover ] ; then @@ -678,7 +676,7 @@ fi # {{{ hardware detection via hwinfo config_hwinfo(){ -if checkbootparam hwinfo >>$DEBUG 2>&1; then +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: " @@ -690,7 +688,7 @@ fi # {{{ disable hotplug agents on request config_hotplug_agent(){ -if checkbootparam "noagent" ; then +if checkbootparam 'noagent' ; then AGENT="$(getbootparam 'noagent' 2>>$DEBUG)" AGENTLIST=$(echo "$AGENT" | sed 's/,/\\n/g') AGENTNL=$(echo "$AGENT" | sed 's/,/ /g') @@ -705,7 +703,7 @@ fi # {{{ blacklist of hotplug-modules config_hotplug_blacklist(){ -if checkbootparam "black" ; then +if checkbootparam 'black' ; then BLACK="$(getbootparam 'black' 2>>$DEBUG)" BLACKLIST=$(echo "$BLACK" | sed 's/,/\\n/g') BLACKNL=$(echo "$BLACK" | sed 's/,/ /g') @@ -719,7 +717,7 @@ fi # {{{ run hotplug config_hotplug(){ -if checkbootparam "nohotplug" ; then +if checkbootparam 'nohotplug' ; then ewarn "Skipping running hotplug as requested on boot commandline." ; eend 0 else if [ -r /etc/init.d/hotplug ] ; then @@ -739,7 +737,7 @@ fi # {{{ blacklist specific module [ used in /etc/init.d/udev ] config_blacklist(){ -if checkbootparam "blacklist" ; then +if checkbootparam 'blacklist' ; then if [ -z "$INSTALLED" ]; then einfo "Bootoption blacklist found." BLACK="$(getbootparam 'blacklist' 2>>$DEBUG)" @@ -768,9 +766,9 @@ fi # {{{ ACPI config_acpi_apm(){ if [ -d /proc/acpi ]; then - if checkbootparam "noacpi"; then + if checkbootparam 'noacpi'; then ewarn "Skipping ACPI Bios detection as requested via noacpi on boot commandline." ; eend 0 - elif checkbootparam "nogrmlacpi" ; then + elif checkbootparam 'nogrmlacpi' ; then ewarn "Skipping ACPI Bios detection as requested via nogrmlacpi on boot commandline." ; eend 0 else einfo "ACPI Bios found, activating modules (disable via bootoption noacpi / nogrmlacpi): " @@ -807,7 +805,7 @@ if [ -d /proc/acpi ]; then fi else # APM - if checkbootparam "noapm"; then + if checkbootparam 'noapm'; then ewarn "Skipping APM Bios detection as requested on boot commandline." ; eend 0 else modprobe apm power_off=1 >>$DEBUG 2>&1 @@ -827,7 +825,7 @@ fi # {{{ PCMCIA Check/Setup # This needs to be done before other modules are being loaded (by hwsetup) config_pcmcia(){ -if checkbootparam "nopcmcia"; then +if checkbootparam 'nopcmcia'; then ewarn "Skipping PCMCIA detection as requested on boot commandline." ; eend 0 else if /usr/sbin/laptop-detect ; then @@ -853,7 +851,7 @@ fi # {{{ run software synthesizer via speakup config_swspeak(){ - if checkbootparam swspeak ; then + if checkbootparam 'swspeak' ; then einfo "Bootoption swspeak found." if [ ! -d /proc/speakup/ ] && ! grep -q speakup_soft /proc/modules ; then @@ -886,11 +884,11 @@ config_swspeak(){ # {{{ support hardware synthesizer via speakup config_hwspeak(){ - if checkbootparam speakup.synth ; then + if checkbootparam 'speakup.synth' ; then einfo "Bootoption speakup.synth found." eindent - module="$(getbootparam speakup.synth 2>>$DEBUG)" + 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." @@ -911,7 +909,7 @@ config_hwspeak(){ eoutdent # hwspeak: - elif checkbootparam hwspeak ; then + elif checkbootparam 'hwspeak' ; then einfo "Bootoption hwspeak found." if [ ! -d /proc/speakup/ ] && ! grep -q speakup /proc/modules ; then @@ -945,8 +943,8 @@ config_hwspeak(){ # {{{ Check for blind option or brltty config_blind(){ BLIND="" -checkbootparam "blind" && BLIND="yes" -BRLTTY="$(getbootparam brltty 2>>$DEBUG)" +checkbootparam 'blind' && BLIND="yes" +BRLTTY="$(getbootparam 'brltty' 2>>$DEBUG)" if [ -n "$BLIND" -o -n "$BRLTTY" ]; then if [ -x /sbin/brltty ]; then @@ -993,16 +991,16 @@ config_interactive(){ # {{{ AGP config_agp(){ -if checkbootparam forceagp ; then +if checkbootparam 'forceagp' ; then # Probe for AGP. Hope this can fail safely - stringinfile "AGP" "/proc/pci" 2>>$DEBUG && { modprobe agpgart || modprobe agpgart agp_try_unsupported=1; } >>$DEBUG 2>&1 && einfo "AGP bridge detected." ; eend 0 + 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 +if checkbootparam 'automounter' ; then RUNLEVEL="$(runlevel)" AUTOMOUNTER="" [ -x /etc/init.d/autofs ] && [ "$RUNLEVEL" != "N 1" ] && [ "$RUNLEVEL" != "N S" ] && AUTOMOUNTER="yes" @@ -1015,14 +1013,14 @@ addautomount(){ [ -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" - stringinfile "$anew" "/etc/auto.mnt" || echo "$anew" >> /etc/auto.mnt + 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 - stringinfile "$new" "/etc/fstab" || echo "$new" >> /etc/fstab + grep -q "$new" "/etc/fstab" || echo "$new" >> /etc/fstab } AUTOMOUNTS="floppy cdrom" @@ -1076,7 +1074,7 @@ check_partitions 1>/dev/null 2>&1 # avoid output "check_partitions:3: read-only # {{{ Enable DMA for all IDE drives now if not disabled # Notice: Already done by linuxrc, but make sure it's done also on harddisk-installed systems config_dma(){ -if checkbootparam "nodma"; then +if checkbootparam 'nodma'; then ewarn "Skipping DMA accelleration as requested on boot commandline." ; eend 0 else for d in $(cd /proc/ide 2>>$DEBUG && echo hd[a-z]); do @@ -1098,12 +1096,12 @@ fi config_fstab(){ NOSWAP="yes" # we do not use swap by default! -if checkbootparam "swap" || checkbootparam "anyswap" ; then +if checkbootparam 'swap' || checkbootparam 'anyswap' ; then NOSWAP='' - checkbootparam "anyswap" && export ANYSWAP='yes' || export ANYSWAP="" + checkbootparam 'anyswap' && export ANYSWAP='yes' || export ANYSWAP="" fi -if checkbootparam "nofstab" || checkbootparam "forensic" ; then +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)" @@ -1121,7 +1119,7 @@ if [ -z "$INSTALLED" ] ; then [ -z "$NOSWAP" ] && einfo "Searching for swap partition(s) as requested." GRML_IMG="" GRML_SWP="" - HOMEDIR="$(getbootparam home)" + HOMEDIR="$(getbootparam 'home')" if [ -n "$partitions" ]; then while read p m f relax; do case "$p" in *fd0*|*proc*|*sys*|*\#*) continue;; esac @@ -1187,7 +1185,7 @@ if [ -z "$INSTALLED" ] ; then einfo "Using GRML swapfile ${WHITE}${SWAPFILE}${NORMAL}." eoutdent fnew="$SWAPFILE swap swap defaults 0 0" - stringinfile "$fnew" "/etc/fstab" || echo "$fnew" >> /etc/fstab + grep -q "$fnew" "/etc/fstab" || echo "$fnew" >> /etc/fstab GRML_SWP="$GRML_SWP $SWAPFILE" eend 0 fi @@ -1231,7 +1229,7 @@ fi # {{{ IPv6 configuration # Load IPv6 kernel module and print IP adresses config_ipv6(){ -if checkbootparam "ipv6"; then +if checkbootparam 'ipv6'; then einfo "Enabling IPv6 as requested on boot commandline (sleeping for 2 seconds)" modprobe ipv6 # we probably need some time until stateless autoconfiguration has happened @@ -1259,7 +1257,7 @@ fi # {{{ Fat-Client-Version: DHCP Broadcast for IP address config_dhcp(){ -if checkbootparam "nodhcp"; then +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)" @@ -1336,7 +1334,7 @@ return 1 # {{{ CPU-detection config_cpu(){ -if checkbootparam "nocpu"; then +if checkbootparam 'nocpu'; then ewarn "Skipping CPU detection as requested on boot commandline." ; eend 0 else # check module dependencies @@ -1439,7 +1437,7 @@ fi # checkbootparam nocpu # {{{ autostart of ssh config_ssh(){ -if checkbootparam ssh ; then +if checkbootparam 'ssh' ; then SSH_PASSWD='' SSH_PASSWD="$(getbootparam 'ssh' 2>>$DEBUG)" einfo "Bootoption ssh found, trying to set password for user grml." @@ -1491,7 +1489,7 @@ fi # {{{ set password for user grml config_passwd(){ -if checkbootparam passwd >>$DEBUG 2>&1; then +if checkbootparam 'passwd' >>$DEBUG 2>&1; then einfo "Bootoption passwd found." PASSWD="$(getbootparam 'passwd' 2>>$DEBUG)" if [ -n "$PASSWD" ] ; then @@ -1508,8 +1506,8 @@ fi # {{{ Check for persistent homedir option and eventually mount /home from there, or use a loopback file. config_homedir(){ -if checkbootparam home ; then - HOMEDIR="$(getbootparam home)" +if checkbootparam 'home' ; then + HOMEDIR="$(getbootparam 'home')" MYHOMEDEVICE="" MYHOMEMOUNTPOINT="" MYHOMEDIR="" @@ -1590,19 +1588,6 @@ fi # checkbootparam home } # }}} -# {{{ Check for scripts on CD-ROM -# this is also executed when the scripts option is called. Is this a bug -# or intended? -config_cdrom_scripts(){ -if checkbootparam "script"; then - for script in "${LIVECD_PATH}"/scripts/* ; do - einfo " grml script found on CD, executing ${WHITE}${script}${NORMAL}." - . $script - done -fi -} -# }}} - # {{{ Sound config_mixer(){ if ! [ -x /usr/bin/aumix ] ; then @@ -1614,7 +1599,7 @@ else return fi - if checkbootparam vol ; then + if checkbootparam 'vol' ; then VOL="$(getbootparam 'vol' 2>>$DEBUG)" if [ -z "$VOL" ] ; then eerror "Bootoption vol found but no volume level/parameter given. Using defaults." ; eend 1 @@ -1624,7 +1609,7 @@ else VOL='75' # default fi - if checkbootparam nosound ; then + if checkbootparam 'nosound' ; then einfo "Muting sound devices on request." # some IBM notebooks require the following stuff: if [ -x /usr/bin/amixer ] ; then @@ -1650,7 +1635,7 @@ else fi fi # by default assume '0' as volume for microphone: - if checkbootparam micvol ; then + if checkbootparam 'micvol' ; then MICVOL="$(getbootparam 'micvol' 2>>$DEBUG)" else MICVOL=0 @@ -1672,7 +1657,7 @@ fi # {{{ modem detection config_modem(){ -if checkbootparam "nomodem"; then +if checkbootparam 'nomodem'; then ewarn "Skipping check for AC97 modem controller as requested on boot commandline." ; eend 0 else if [ -x /etc/init.d/sl-modem-daemon ] ; then @@ -1687,7 +1672,7 @@ fi # {{{ keyboard add-ons config_setkeycodes(){ -if checkbootparam "setkeycodes" ; then +if checkbootparam 'setkeycodes' ; then einfo "Setting keycodes as requested via bootparameter 'setkeycodes'." # MS MM keyboard add-on # fix @@ -1715,8 +1700,8 @@ fi # {{{ wondershaper config_wondershaper(){ - if checkbootparam "wondershaper" ; then - WONDER="$(getbootparam wondershaper 2>>$DEBUG)" + if checkbootparam 'wondershaper' ; then + WONDER="$(getbootparam 'wondershaper' 2>>$DEBUG)" CMD=wondershaper DEVICE="" DOWNSTREAM="" @@ -1747,7 +1732,7 @@ config_wondershaper(){ # {{{ syslog-ng config_syslog(){ - if checkbootparam "nosyslog"; then + if checkbootparam 'nosyslog'; then ewarn "Not starting syslog daemon as requested on boot commandline." ; eend 0 else SYSLOGD='' @@ -1770,7 +1755,7 @@ config_syslog(){ # {{{ gpm config_gpm(){ - if checkbootparam "nogpm"; then + if checkbootparam 'nogpm'; then ewarn "Not starting GPM as requested on boot commandline." ; eend 0 else if ! [ -r /dev/input/mice ] ; then @@ -1787,8 +1772,8 @@ config_gpm(){ # {{{ services config_services(){ - if checkbootparam "services" ; then - SERVICE="$(getbootparam services 2>>$DEBUG)" + if checkbootparam 'services' ; then + 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." @@ -1802,7 +1787,7 @@ config_services(){ # {{{ config files config_netconfig(){ - if checkbootparam netconfig ; then + if checkbootparam 'netconfig' ; then CONFIG="$(getbootparam 'netconfig' 2>>$DEBUG)" CONFIGFILE='/tmp/netconfig.grml' @@ -1831,7 +1816,7 @@ config_netconfig(){ # {{{ blindsound config_blindsound(){ - if checkbootparam "blind" ; then + if checkbootparam 'blind' ; then beep flitewrapper "welcome to the gremel system" fi @@ -1840,7 +1825,7 @@ config_blindsound(){ # {{{ welcome sound config_welcome(){ - if checkbootparam welcome ; then + if checkbootparam 'welcome' ; then flitewrapper "welcome to the gremel system" fi } @@ -1865,7 +1850,7 @@ create_mnt_dirs(){ config_x_startup(){ # make sure we start X only if startx is used *before* a nostartx option # so it's possible to disable automatic X startup using nostart -if checkbootparam startx && ! grep -q 'startx.*nostartx' "$CMDLINE" ; then +if checkbootparam 'startx' && ! grep -q 'startx.*nostartx' "$CMDLINE" ; then if [ -x /usr/X11R6/bin/X ] ; then if [ -z "$INSTALLED" ] ; then WINDOWMANAGER="$(getbootparam 'startx' 2>>$DEBUG)" @@ -1900,7 +1885,7 @@ EOF fi else - eerror "We are not running from CD - startx will not work, skipping it." + eerror "We are not running in live mode - startx will not work, skipping it." eerror " -> Please use something like xdm, gdm or kdm for starting X on a harddisk system!" ; eend 1 fi else @@ -1913,7 +1898,7 @@ fi # {{{ configuration framework config_extract(){ -if checkbootparam extract ; then +if checkbootparam 'extract' ; then EXTRACT="$(getbootparam 'extract' 2>>$DEBUG)" EXTRACTOPTIONS="-- -x $EXTRACT" fi @@ -1930,11 +1915,11 @@ config_finddcsdir() { # - If myconfig=foo is set on the command line, $dcs-dir is set to # foo, even if a GRMLCFG partition is present. DCSDIR="" -if checkbootparam noautoconfig || checkbootparam forensic ; then +if checkbootparam 'noautoconfig' || checkbootparam 'forensic' ; then ewarn "Skipping running automount of device(s) labeled GRMLCFG as requested." ; eend 0 else if [ -z "$INSTALLED" ] ; then - if checkbootparam myconfig ; then + if checkbootparam 'myconfig' ; then DCSDEVICE="$(getbootparam 'myconfig' 2>>$DEBUG)" if [ -z "$DCSDEVICE" ]; then einfo "No device for bootoption myconfig provided." ; eend 1 @@ -1959,7 +1944,7 @@ else else [ -d /mnt/grml ] || mkdir /mnt/grml umount /mnt/grml 1>>$DEBUG 2>&1 # make sure it is not mounted - mount -o ro -t auto $MOUNTDEVICE /mnt/grml ; RC="$?" + mount -o ro -t auto $DCSDEVICE /mnt/grml ; RC="$?" if [[ $RC == 0 ]]; then einfo "Successfully mounted $DCSDEVICE to /mnt/grml (readonly)." ; eend 0 eindent @@ -1969,16 +1954,17 @@ else fi fi fi + if [ -n "$DCSDIR" ]; then einfo "Debs, config, scripts will be read from $DCSDIR." ; eend 0 -else - einfo "Debs, config, scripts will be read from the CD image directly." ; eend 0 +elif checkbootparam 'debs' || checkbootparam 'config' || checkbootparam 'scripts'; then + einfo "Debs, config, scripts will be read from the live image directly." ; eend 0 fi -} +} config_partconf() { -if checkbootparam "partconf" ; then +if checkbootparam 'partconf' ; then MOUNTDEVICE="$(getbootparam 'partconf' 2>>$DEBUG)" if [ -n "$MOUNTDEVICE" ]; then [ -d /mnt/grml ] || mkdir /mnt/grml @@ -2003,7 +1989,7 @@ fi # {{{ /cdrom/.*-options config_debs(){ -if checkbootparam "debs" ; then +if checkbootparam 'debs' ; then DEBS="$(getbootparam 'debs' 2>>$DEBUG)" if ! echo $DEBS | grep -q '/'; then # backwards compatibility: if no path is given get debs from debs/ @@ -2016,7 +2002,7 @@ fi } config_scripts(){ -if checkbootparam "scripts" ; then +if checkbootparam 'scripts' ; then SCRIPTS="$(getbootparam 'scripts' 2>>$DEBUG)" if [ -z "$SCRIPTS" ]; then SCRIPTS="$(cd ${DCSDIR}/scripts; /bin/ls -1d [Gg][Rr][Mm][Ll].[Ss][Hh] 2>>$DEBUG)" @@ -2037,7 +2023,7 @@ fi } config_config(){ -if checkbootparam config ; then +if checkbootparam 'config' ; then CONFIG="$(getbootparam 'config' 2>>$DEBUG)" if [ -z "$CONFIG" ]; then CONFIG="$(cd ${DCSDIR}; ls -1d [Cc][Oo][Nn][Ff][Ii][Gg].[Tt][Bb][Zz] 2>>$DEBUG)" @@ -2045,7 +2031,7 @@ if checkbootparam config ; then if [ -n "$CONFIG" ]; then if [ -d "${DCSDIR}/${CONFIG}" ] ; then einfo "Taking configuration from directory ${DCSDIR}/${CONFIG}" - + cp -a ${DCSDIR}/${CONFIG}/* / elif [ -f "${DCSDIR}/${CONFIG}" ]; then einfo "Extracting configuration from file ${DCSDIR}/${CONFIG}" @@ -2065,7 +2051,7 @@ grep -q '/mnt/grml' /proc/mounts && umount /mnt/grml # {{{ mypath config_mypath(){ -if checkbootparam "mypath" ; then +if checkbootparam 'mypath' ; then MY_PATH="$(getbootparam 'mypath' 2>>$DEBUG)" einfo "Bootparameter mypath found, adding ${MY_PATH} to /etc/grml/my_path" touch /etc/grml/my_path @@ -2086,8 +2072,8 @@ fi # {{{ distcc config_distcc(){ -if checkbootparam "distcc" ; then - OPTIONS="$(getbootparam distcc 2>>$DEBUG)" +if checkbootparam 'distcc' ; then + OPTIONS="$(getbootparam 'distcc' 2>>$DEBUG)" if [ -n "$OPTIONS" ]; then NET="" INTERFACE="" @@ -2136,8 +2122,8 @@ if checkbootparam "distcc" ; then fi fi -if checkbootparam "gcc"; then - GCC="$(getbootparam gcc 2>>$DEBUG)" +if checkbootparam 'gcc'; then + GCC="$(getbootparam 'gcc' 2>>$DEBUG)" eindent einfo "Pointing /usr/bin/gcc to /usr/bin/gcc-${GCC}." eoutdent @@ -2145,8 +2131,8 @@ if checkbootparam "gcc"; then ln -s /usr/bin/gcc-${GCC} /usr/bin/gcc ; eend $? fi -if checkbootparam "gpp"; then - GPP="$(getbootparam gpp 2>>$DEBUG)" +if checkbootparam 'gpp'; then + GPP="$(getbootparam 'gpp' 2>>$DEBUG)" eindent einfo "Pointing /usr/bin/g++ to /usr/bin/g++-${GPP}." if [ -x /usr/bin/g++-${GPP} ] ; then @@ -2170,7 +2156,7 @@ fi # in /etc/runlevel.conf config_modules(){ MODULES_FILE=/etc/grml/modules -if checkbootparam nomodules ; then +if checkbootparam 'nomodules' ; then ewarn "Skipping loading of modules defined in ${MODULES_FILE} as requested." ; eend 0 elif [ -z "$INSTALLED" ]; then if [ -r $MODULES_FILE ] ; then @@ -2192,8 +2178,8 @@ fi # {{{ 915resolution config_915resolution(){ -if checkbootparam "915resolution" ; then - OPTIONS="$(getbootparam 915resolution 2>>$DEBUG)" +if checkbootparam '915resolution' ; then + OPTIONS="$(getbootparam '915resolution' 2>>$DEBUG)" if [ -x /usr/sbin/915resolution ]; then CMD=915resolution MODE="" @@ -2321,7 +2307,7 @@ config_lvm(){ # {{{ debnet: setup network based on an existing one found on a partition config_debnet(){ -if checkbootparam "debnet" ; then +if checkbootparam 'debnet' ; then iszsh && setopt shwordsplit DEVICES="$(< /proc/partitions tail -n +3 | awk '{print "/dev/"$4}' | tr "\n" " ")" DEVICES="$DEVICES $(ls /dev/mapper/*)" @@ -2353,7 +2339,7 @@ if checkbootparam "debnet" ; then mkdir /etc/network/run umount /mnt ; eend $? einfo "Starting network." - /etc/init.d/networking start ; eend $? + invoke-rc.d networking start ; eend $? else eerror "/etc/network/interfaces not found." ; eend 1 fi @@ -2380,7 +2366,7 @@ config_ipw3945() { # {{{ disable console blanking config_blanking(){ -if checkbootparam "noblank" ; then +if checkbootparam 'noblank' ; then einfo "Bootoption noblank found. Disabling monitor blanking." setterm -blank 0 ; eend $? fi @@ -2390,7 +2376,7 @@ fi # {{{ tohd= bootoption config_tohd() { - if checkbootparam "tohd" ; then + if checkbootparam 'tohd' ; then local TARGET="$(getbootparam 'tohd' 2>>$DEBUG)" if [ -z "$TARGET" ] ; then eerror "Error: tohd specified without any partition, can not continue." ; eend 1 @@ -2404,9 +2390,9 @@ config_tohd() fi if grep -q $TARGET /proc/mounts ; then - eerror "$TARGET already mounted, skipping execution of tohd therefore." - eend 1 - return 1 + eerror "$TARGET already mounted, skipping execution of tohd therefore." + eend 1 + return 1 fi local MOUNTDIR=$(mktemp -d) @@ -2414,10 +2400,10 @@ config_tohd() if mount -o rw "$TARGET" "$MOUNTDIR" ; then einfo "Copyring live system to $TARGET - this might take a while" rsync -a --progress /live/image/live $MOUNTDIR - sync - umount "$MOUNTDIR" + sync + umount "$MOUNTDIR" eend $? - einfo "Booting with \"grml bootfrom=$TARGET\" should work now." ; eend 0 + einfo "Booting with \"grml bootfrom=$TARGET\" should work now." ; eend 0 else eerror "Error when trying to mount $TARGET, sorry."; eend 1 return 1 @@ -2431,21 +2417,21 @@ config_tohd() # {{{ grml2hd: automatic installation config_grml2hd(){ -if stringinstring "BOOT_IMAGE=grml2hd " "$CMDLINE" ; then +if checkbootparam "BOOT_IMAGE=grml2hd" ; then -if checkbootparam "user" ; then +if checkbootparam 'user' ; then NEWUSER='' NEWUSER="$(getbootparam 'user' 2>>$DEBUG)" sed -i "s/^NEWUSER=.*/NEWUSER=$NEWUSER/" /etc/grml2hd/config || export GRML2HD_FAIL=1 fi -if checkbootparam "filesystem" ; then +if checkbootparam 'filesystem' ; then FILESYSTEM='' FILESYSTEM="$(getbootparam 'filesystem' 2>>$DEBUG)" sed -i "s/^FILESYSTEM=.*/FILESYSTEM=$FILESYSTEM/" /etc/grml2hd/config || export GRML2HD_FAIL=1 fi -if checkbootparam "partition" ; then +if checkbootparam 'partition' ; then PARTITION='' PARTITION="$(getbootparam 'partition' 2>>$DEBUG)" # notice: the following checks whether the given partition is available, if not the skip @@ -2457,7 +2443,7 @@ if checkbootparam "partition" ; then fi fi -if checkbootparam "mbr" ; then +if checkbootparam 'mbr' ; then BOOT_PARTITION='' BOOT_PARTITION="$(getbootparam 'mbr' 2>>$DEBUG)" sed -i "s#^BOOT_PARTITION=.*#BOOT_PARTITION=$BOOT_PARTITION#" /etc/grml2hd/config || export GRML2HD_FAIL=1 @@ -2476,14 +2462,14 @@ else ewarn "There was an error adjusting /etc/grml2hd/config. Skipping execution of grml2hd for security reasons." ; eend 1 fi -fi # if stringinstring "BOOT_IMAGE=grml2hd ... +fi # if checkbootparam "BOOT_IMAGE=grml2hd ... } # }}} # {{{ debootstrap: automatic installation config_debootstrap(){ -if stringinstring "BOOT_IMAGE=debian2hd " "$CMDLINE" ; then +if checkbootparam "BOOT_IMAGE=debian2hd" ; then einfo "Bootoption debian2hd found. Setting up environment for automatic installation via grml-debootstrap." ; eend 0 @@ -2494,7 +2480,7 @@ if ! [ -x /usr/sbin/grml-debootstrap ] ; then exit 1 fi -if checkbootparam "target" ; then +if checkbootparam 'target' ; then TARGET='' TARGET="$(getbootparam 'target' 2>>$DEBUG)" # notice: the following checks whether the given partition is available, if not the skip @@ -2509,32 +2495,32 @@ else exit 1 fi -if checkbootparam "grub" ; then +if checkbootparam 'grub' ; then GRUB='' GRUB="$(getbootparam 'grub' 2>>$DEBUG)" fi -if checkbootparam "groot" ; then +if checkbootparam 'groot' ; then GROOT='' GROOT="$(getbootparam 'groot' 2>>$DEBUG)" fi -if checkbootparam "release" ; then +if checkbootparam 'release' ; then RELEASE='' RELEASE="$(getbootparam 'release' 2>>$DEBUG)" fi -if checkbootparam "mirror" ; then +if checkbootparam 'mirror' ; then MIRROR='' MIRROR="$(getbootparam 'mirror' 2>>$DEBUG)" fi -if checkbootparam "boot_append" ; then +if checkbootparam 'boot_append' ; then BOOT_APPEND='' BOOT_APPEND="$(getbootparam 'boot_append' 2>>$DEBUG)" fi -if checkbootparam "password" ; then +if checkbootparam 'password' ; then PASSWORD='' PASSWORD="$(getbootparam 'password' 2>>$DEBUG)" fi @@ -2568,13 +2554,13 @@ screen /usr/bin/grml-debootstrap_noninteractive einfo "Invoking a shell, just exit to continue booting..." /bin/zsh -fi # stringinstring "BOOT_IMAGE=debian2hd +fi # checkbootparam "BOOT_IMAGE=debian2hd } # }}} # {{{ Support customization config_distri(){ -if checkbootparam "distri"; then +if checkbootparam 'distri'; then DISTRI="$(getbootparam 'distri' 2>>$DEBUG)" if [ -r "${LIVECD_PATH}"/desktop/"$DISTRI".jpg ] ; then [ -n "$BOOTDEBUG" ] && einfo "Debug: bootoption distri found and file ${LIVECD_PATH}/desktop/${DISTRI} present" && eend 0