#!/bin/zsh
# Filename: autoconfig.functions
# Purpose: basic system configuration and hardware setup for grml system
-# Authors: grml-team (grml.org), (c) Klaus Knopper <knopper@knopper.net>, (c) Michael Prokop <mika@grml.org>
+# Authors: grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
# Bug-Reports: see http://grml.org/bugs/
# License: This file is licensed under the GPL v2.
################################################################################
iszsh && setopt no_nomatch # || echo "Warning: not running under zsh!"
# }}}
-### {{{ Utility Functions
-
-# Simple shell grep
-stringinfile(){
- case "$(cat $2)" in *$1*) return 0;; esac
- return 1
-}
+# {{{ 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.
+ CMDLINE="$(cat /proc/cmdline)"
+ [ -d /cdrom/bootparams/ ] && CMDLINE="$CMDLINE $(cat /cdrom/bootparams/* | tr '\n' ' ')"
+ [ -d /live/image/bootparams/ ] && CMDLINE="$CMDLINE $(cat /live/image/bootparams/* | tr '\n' ' ')"
+fi
+# }}}
-# same for strings
-stringinstring(){
- case "$2" in *$1*) return 0;; esac
- return 1
-}
+### {{{ Utility Functions
-# 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 "$*"
}
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(){
}
# }}}
-# {{{ Read in boot parameters
-[ -f /proc/version ] || mount_proc # make sure we can access /proc/cmdline when sourcing this file too
-CMDLINE="$(cat /proc/cmdline)"
-[ -d "${LIVECD_PATH}"/bootparams/ ] && CMDLINE="$CMDLINE $(cat ${LIVECD_PATH}/bootparams/* | tr '\n' ' ')"
-# }}}
-
-# {{{ 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
# {{{ 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
# {{{ 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"
# {{{ 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
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:
# 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
[ -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
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"
# 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
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
# {{{ 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
# 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
# {{{ 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 $?
# {{{ 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 $?
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
# 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
# skip startup of w3m {{{
config_fast(){
-if checkbootparam "fast"; then
- ewarn "Bootoption fast detected. Skipping startup of w3m."
+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 $?
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"
# 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
# {{{ 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
# {{{ 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: "
# {{{ 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')
# {{{ 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')
# {{{ 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
# {{{ 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)"
+ BLACKLIST_FILE='/etc/modprobe.d/grml.conf'
if [ -n "$BLACK" ] ; then
for module in $(echo ${BLACK//,/ }) ; do
- einfo "Blacklisting module ${module} via /etc/modprobe.d/grml."
- echo "# begin entry generated by config_blacklist of grml-autoconfig" >> /etc/modprobe.d/grml
- echo "blacklist $module" >> /etc/modprobe.d/grml
- echo "alias $module off" >> /etc/modprobe.d/grml
- echo "# end entry generated by config_blacklist of grml-autoconfig" >> /etc/modprobe.d/grml ; eend $?
+ einfo "Blacklisting module ${module} via ${BLACKLIST_FILE}."
+ echo "# begin entry generated by config_blacklist of grml-autoconfig" >> "$BLACKLIST_FILE"
+ echo "blacklist $module" >> "$BLACKLIST_FILE"
+ echo "alias $module off" >> "$BLACKLIST_FILE"
+ echo "# end entry generated by config_blacklist of grml-autoconfig" >> "$BLACKLIST_FILE" ; eend $?
done
else
eerror "No given module for blacklist found. Blacklisting will not work therefore."
# {{{ 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): "
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
# {{{ 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
# {{{ 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
# {{{ 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."
eoutdent
# hwspeak:
- elif checkbootparam hwspeak ; then
+ elif checkbootparam 'hwspeak' ; then
einfo "Bootoption hwspeak found."
if [ ! -d /proc/speakup/ ] && ! grep -q speakup /proc/modules ; then
# {{{ 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
# {{{ 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"
[ -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"
# {{{ 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
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)"
[ -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
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
# {{{ 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
# {{{ 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)"
# {{{ 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
# {{{ 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."
# {{{ 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
# {{{ 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=""
}
# }}}
-# {{{ Check for scripts on CD-ROM
-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
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
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
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
# {{{ 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
# {{{ 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
# {{{ 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=""
# {{{ 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=''
# {{{ 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
# {{{ 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."
# {{{ config files
config_netconfig(){
- if checkbootparam netconfig ; then
+ if checkbootparam 'netconfig' ; then
CONFIG="$(getbootparam 'netconfig' 2>>$DEBUG)"
CONFIGFILE='/tmp/netconfig.grml'
# {{{ blindsound
config_blindsound(){
- if checkbootparam "blind" ; then
+ if checkbootparam 'blind' ; then
beep
flitewrapper "welcome to the gremel system"
fi
# {{{ welcome sound
config_welcome(){
- if checkbootparam welcome ; then
+ if checkbootparam 'welcome' ; then
flitewrapper "welcome to the gremel system"
fi
}
# {{{ start X window system via grml-x
config_x_startup(){
-if checkbootparam startx ; then
+# 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 [ -x /usr/X11R6/bin/X ] ; then
if [ -z "$INSTALLED" ] ; then
WINDOWMANAGER="$(getbootparam 'startx' 2>>$DEBUG)"
fi
else
- eerror "We are not running from CD - startx will not work, skipping it.
- Please use something like xdm, gdm or kdm for starting X on a harddisk system!" ; eend 1
+ 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
- eerror "/usr/X11R6/bin/X is not present on this grml flavour.
- Boot parameter startx does not work therefore." ; eend 1
+ eerror "/usr/X11R6/bin/X is not present on this grml flavour."
+ eerror " -> Boot parameter startx does not work therefore." ; eend 1
fi
fi
}
# {{{ configuration framework
config_extract(){
-if checkbootparam extract ; then
+if checkbootparam 'extract' ; then
EXTRACT="$(getbootparam 'extract' 2>>$DEBUG)"
EXTRACTOPTIONS="-- -x $EXTRACT"
fi
}
-config_unpack(){
-MOUNTDEVICE="$1"
-MESSAGE="$2"
-
-if [ ! -b "$MOUNTDEVICE" ] ; then
- return;
-fi
-
-
-[ -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="$?"
-if [[ $RC == 0 ]]; then
- einfo "Successfully mounted $MOUNTDEVICE $MESSAGE to /mnt/grml (readonly)." ; eend 0
- eindent
- CONFIG=''
- CONFIG="$(/bin/ls -1d /mnt/grml/[Cc][Oo][Nn][Ff][Ii][Gg].[Tt][Bb][Zz] 2>>$DEBUG)"
- if checkbootparam config ; then
- FILENAME="$(getbootparam 'config' 2>>$DEBUG)"
- if [ -e /mnt/grml/"${FILENAME}" ] ; then
- einfo "Using /mnt/grml/$FILENAME instead of config.tbz"
- CONFIG="/mnt/grml/${FILENAME}"
- fi
- else
- FILENAME="$(basename $CONFIG)"
- fi
- if [ -n "$CONFIG" ]; then
- einfo "Found file ${WHITE}${CONFIG}${NORMAL} - trying to extract it."
- cd /
- unp $CONFIG $EXTRACTOPTIONS ; eend $?
- else
- ewarn "Sorry, could not find file ${FILENAME} on device ${MOUNTDEVICE} ${MESSAGE}." ; eend 1
- fi
-
- SCRIPT=''
- SCRIPT="$(/bin/ls -1d /mnt/grml/[Gg][Rr][Mm][Ll].[Ss][Hh] 2>>$DEBUG)"
- if [ -n "$SCRIPT" ]; then
- einfo "Found script ${WHITE}${SCRIPT}${NORMAL} - trying to execute it."
- $SCRIPT ; eend $?
- fi
- eoutdent
- else
- einfo "Could not mount $MOUNTDEVICE to /mnt/grml - sorry." ; eend 1
-fi # mount $MOUNTDEVICE
-
-grep -q '/mnt/grml' /proc/mounts && umount /mnt/grml
-
-}
-
-config_automount(){
-if checkbootparam noautoconfig || checkbootparam forensic ; then
+config_finddcsdir() {
+# - If no GRMLCFG partition is found and noautoconfig is _not_ given
+# on the command line, nothing is changed and the dcs files are
+# searched within the .iso, $dcs-dir is set to the root directory
+# within the .iso
+# - If a GRMLCFG partition is found, $dcs-dir is set to the root of
+# the GRMLCFG partition unless noautoconfig is set. If noautoconfig is
+# set, $dcs-dir is set to the root directory within the .iso.
+# - 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
ewarn "Skipping running automount of device(s) labeled GRMLCFG as requested." ; eend 0
else
- if [ -z "$INSTALLED" ] ; then
- 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
+ if [ -z "$INSTALLED" ] ; then
+ if checkbootparam 'myconfig' ; then
+ DCSDEVICE="$(getbootparam 'myconfig' 2>>$DEBUG)"
+ if [ -z "$DCSDEVICE" ]; then
+ einfo "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
+ eindent
+ # We do need the following fix so floppy disk is available to blkid in any case :-/
+ if [ -r /dev/fd0 ] ; then
einfo "Floppy device detected. Trying to access floppy disk."
if timeout 4 dd if=/dev/fd0 of=/dev/null bs=512 count=1 1>>$DEBUG 2>&1 ; then
blkid /dev/fd0 1>>$DEBUG 2>&1
fi
- fi
- DEVICE=$(blkid -t LABEL=GRMLCFG | head -1 | awk -F: '{print $1}')
- config_unpack "$DEVICE" "labeled GRMCFG"
+ fi
+ DCSDEVICE=$(blkid -t LABEL=GRMLCFG | head -1 | awk -F: '{print $1}')
+ fi
+ if [ -n "$DCSDEVICE" ]; then
+ einfo "debs, config, scripts are read from $DCSDEVICE." ; eend 0
+ DCSDIR="$(< /proc/mounts awk -v DCSDEV=$DCSDEVICE '{if ($1 == DCSDEV) { print $2 }}')"
+ if [ -n "$DCSDIR" ]; then
+ einfo "$DCSDEVICE already mounted on $DCSDIR"; eend 0
+ 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 $DCSDEVICE /mnt/grml ; RC="$?"
+ if [[ $RC == 0 ]]; then
+ einfo "Successfully mounted $DCSDEVICE to /mnt/grml (readonly)." ; eend 0
+ eindent
+ fi
+ DCSDIR="/mnt/grml"
+ fi
+ fi
fi
fi
-}
-config_myconfig(){
-
-if checkbootparam "config" ; then
- CONFIG="$(getbootparam 'config' 2>>$DEBUG)"
- [ -z "$CONFIG" ] && CONFIG='config.tbz'
- einfo "Bootoption config found. config is set to: $CONFIG"
- eindent
- einfo "Trying to extract configuration file ${CONFIG}:"
- cd / && unp "${LIVECD_PATH}"/config/$CONFIG $EXTRACTOPTIONS ; eend $?
- eoutdent
+if [ -n "$DCSDIR" ]; then
+ einfo "Debs, config, scripts will be read from $DCSDIR." ; 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
+}
-if checkbootparam myconfig ; then
- MOUNTDEVICE="$(getbootparam 'myconfig' 2>>$DEBUG)"
- if [ -n "$MOUNTDEVICE" ]; then
- config_unpack "$MOUNTDEVICE"
- else
- einfo "Sorry, no device for bootoption myconfig provided. Skipping." ; eend 1
- fi # [ -n "$MOUNTDEVICE" ]
-fi # checkbootparam myconfig
-if checkbootparam "partconf" ; then
+config_partconf() {
+if checkbootparam 'partconf' ; then
MOUNTDEVICE="$(getbootparam 'partconf' 2>>$DEBUG)"
if [ -n "$MOUNTDEVICE" ]; then
[ -d /mnt/grml ] || mkdir /mnt/grml
# {{{ /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/
+ DEBS="debs/$DEBS"
+ fi
einfo "Tring to install debian package(s) ${DEBS}"
- dpkg -i "${LIVECD_PATH}"/debs/$DEBS* ; eend $?
+ DEBS="$(eval echo ${DCSDIR}/$DEBS)"
+ dpkg -i $DEBS ; eend $?
fi
}
config_scripts(){
-if checkbootparam "scripts" ; then
+if checkbootparam 'scripts' ; then
SCRIPTS="$(getbootparam 'scripts' 2>>$DEBUG)"
- [ -z "$SCRIPTS" ] && SCRIPTS='grml.sh'
- einfo "Bootparameter scripts found. Trying to execute ${SCRIPTS}:"
- sh -c "${LIVECD_PATH}"/scripts/$SCRIPTS ; eend $?
+ if [ -z "$SCRIPTS" ]; then
+ SCRIPTS="$(cd ${DCSDIR}/scripts; /bin/ls -1d [Gg][Rr][Mm][Ll].[Ss][Hh] 2>>$DEBUG)"
+ fi
+ if ! echo $SCRIPTS | grep -q '/'; then
+ # backwards compatibility: if no path is given get scripts from scripts/
+ SCRIPTS="scripts/$SCRIPTS"
+ fi
+ SCRIPTS="${DCSDIR}/$SCRIPTS"
+ if [ -d "$SCRIPTS" ]; then
+ einfo "Bootparameter scripts found. Trying to execute from directory ${SCRIPTS}:"
+ run-parts $SCRIPTS
+ else
+ einfo "Bootparameter scripts found. Trying to execute ${SCRIPTS}:"
+ sh -c $SCRIPTS
+ fi
fi
}
+
+config_config(){
+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)"
+ fi
+ 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}"
+
+ cd /
+ unp ${DCSDIR}/${CONFIG} $EXTRACTOPTIONS ; eend $?
+ else
+ ewarn "Sorry, could not find configuration file or directory ${DCSDIR}/${FILENAME}." ; eend 1
+ fi
+ fi
+fi
+# umount /mnt/grml if it was mounted by finddcsdir
+# this doesn't really belong here
+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
# {{{ 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=""
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
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
# 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
# {{{ 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=""
# {{{ 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/*)"
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
# {{{ 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
# {{{ 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
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)
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
# {{{ 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
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
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
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
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
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