# Authors: grml-team (grml.org), (c) Klaus Knopper <knopper@knopper.net>, (c) Michael Prokop <mika@grml.org>
# Bug-Reports: see http://grml.org/bugs/
# License: This file is licensed under the GPL v2.
-# Latest change: Mit Sep 05 19:09:45 CEST 2007 [mika]
+# Latest change: Son Jän 20 19:51:41 CET 2008 [mika]
################################################################################
# {{{ path, variables, signals, umask, zsh
# {{{ debug
config_debug(){
- if checkbootparam "debug"; then
- BOOTDEBUG="yes"
- fi
- if stringinstring "BOOT_IMAGE=debug " "$CMDLINE" ; then
- BOOTDEBUG="yes"
- fi
+ checkbootparam "debug" && BOOTDEBUG="yes"
+ stringinstring "BOOT_IMAGE=debug " "$CMDLINE" && BOOTDEBUG="yes"
+
rundebugshell(){
if [ -n "$BOOTDEBUG" ]; then
- einfo "Starting intermediate shell stage $stage as requested by \"debug\" option."
- eindent
- if [ -r /etc/grml/screenrc ] ; then
- einfo "Starting GNU screen to be able to use a full featured shell environment."
- einfo "Just exit the shells (and therefore screen) to continue boot process..."
- /bin/zsh -c "screen -c /etc/grml/screenrc"
- else
- einfo "Notice that the shell does not provide job handling: ctrl-z, bg and fg won't work!"
- einfo "Just exit the shell to continue boot process..."
- /bin/zsh
- fi
- eoutdent
+ einfo "Starting intermediate shell stage $stage as requested by \"debug\" option."
+ if [ grep -q "debug=noscreen" "$CMDLINE" ] ; then
+ /bin/zsh
+ else
+ eindent
+ if [ -r /etc/grml/screenrc ] ; then
+ einfo "Starting GNU screen to be able to use a full featured shell environment."
+ einfo "Just exit the shells (and therefore screen) to continue boot process..."
+ /bin/zsh -c "screen -c /etc/grml/screenrc"
+ else
+ einfo "Notice that the shell does not provide job handling: ctrl-z, bg and fg won't work!"
+ einfo "Just exit the shell to continue boot process..."
+ /bin/zsh
+ fi
+ eoutdent
+ fi
fi
}
}
# {{{ log
config_log(){
-if checkbootparam "log"; then
- export DEBUG="/tmp/grml.log.`date +%Y%m%d`"
- touch $DEBUG
- einfo "Bootparameter log found. Log files: ${DEBUG} and /var/log/boot."
- eindent
- einfo "Starting bootlogd."
- bootlogd -r -c 1>>$DEBUG 2>&1 ; eend $?
- eoutdent
+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"
+ eindent
+ einfo "Starting bootlogd." # known to be *very* unreliable :(
+ bootlogd -r -c 1>>$DEBUG 2>&1 ; eend $?
+ eoutdent
else
- DEBUG="/dev/null"
+ DEBUG="/dev/null"
fi
}
# }}}
-# {{{ Check if we are in interactive startup mode
-INTERACTIVE=""
-stringinstring "BOOT_IMAGE=expert " "$CMDLINE" && INTERACTIVE="yes"
-# }}}
-
# {{{ set firmware timeout via bootparam
config_fwtimeout(){
if checkbootparam fwtimeout ; then
# activate unicode console if running within utf8 environment
if [ -r /etc/default/locale ] ; then
if grep -q "LANG=.*UTF" /etc/default/locale ; then
- if checkgrmlsmall && [ -z "$INSTALLED" ] ; then
- ewarn "Not runnning unicode_start: grml-small with reduced language support detected." ; eend 0
- else
- einfo "Setting up unicode environment."
- unicode_start 2>>$DEBUG ; eend $?
- fi
+ einfo "Setting up unicode environment."
+ unicode_start 2>>$DEBUG ; eend $?
fi
fi
fi
# we have to set up all consoles, therefore loop it over all ttys:
- NUM_CONSOLES=`fgconsole --next-available`
- NUM_CONSOLES=`expr ${NUM_CONSOLES} - 1`
+ NUM_CONSOLES=$(fgconsole --next-available)
+ NUM_CONSOLES=$(expr ${NUM_CONSOLES} - 1)
[ ${NUM_CONSOLES} -eq 1 ] && NUM_CONSOLES=6
+ CUR_CONSOLE=$(fgconsole)
+
if [ -n "$CHARMAP" ] ; then
einfo "Running consolechars for ${CHARMAP}"
for vc in `seq 0 ${NUM_CONSOLES}` ; do
consolechars --tty=/dev/tty${vc} -m ${CHARMAP} ; RC=$?
done
+ [ -n "$CUR_CONSOLE" ] && chvt $CUR_CONSOLE
eend $RC
fi
- if [ -n "$CONSOLEFONT" ] ; then
- einfo "Running consolechars using ${CONSOLEFONT}"
- for vc in `seq 0 ${NUM_CONSOLES}` ; do
- consolechars --tty=/dev/tty${vc} -f $CONSOLEFONT || consolechars --tty=/dev/tty${vc} -d
- done
- eend $?
+
+ if checkbootparam noconsolefont ; then
+ ewarn "Skipping setting console font as requested on boot commandline." ; eend 0
+ else
+ if [ -n "$CONSOLEFONT" ] ; then
+ einfo "Running consolechars using ${CONSOLEFONT}"
+ for vc in `seq 0 ${NUM_CONSOLES}` ; do
+ consolechars --tty=/dev/tty${vc} -f $CONSOLEFONT ; RC=$?
+ done
+ [ -n "$CUR_CONSOLE" ] && chvt $CUR_CONSOLE
+ eend $?
+ fi
fi
eoutdent
else
if [ -z "$INSTALLED" ] ; then
if vmware-detect || stringinstring "BOOT_IMAGE=vmware " "$CMDLINE" ; then
- if ! checkbootparam qemu ; 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
}
# }}}
-# update_progress {{{
-update_progress(){
- # be sure we are non-blocking
- (echo "$1" > /etc/sysconfig/progress) &
-}
-# }}}
-
# {{{ timezone
config_timezone(){
# don't touch the files if running from harddisk:
[ -d /live/image/GRML ] && TESTCD_PATH=/live/image/GRML
if [ -n "$TESTCD_PATH" ] ; then
- ( cd "$TESTCD_PATH" ; rm -f /tmp/md5sum.log ; md5sum -c md5sums 2>&1 | tee /tmp/md5sum.log )
+ ( cd "$TESTCD_PATH" ; rm -f /tmp/md5sum.log ; md5sum -c md5sums 2>&1 | tee /tmp/md5sum.log ; RC=$? )
else
echo "${RED} *** Error: Could not find md5sum file. ***"
fi
- if [ "$?" = "0" ]; then
- echo " ${GREEN}Everything looks OK${NORMAL}"
- else
- echo "${RED} *** CHECKSUM FAILED FOR THESE FILES: ***"
- egrep -v '(^md5sum:|OK$)' /tmp/md5sum.log
- echo "${RED} *** DATA ON YOUR CD MEDIUM IS POSSIBLY INCOMPLETE OR DAMAGED, ***${NORMAL}"
- echo "${RED} *** OR YOUR COMPUTER HAS BAD RAM. ***${NORMAL}"
- echo -n "${CYAN}Hit return to contine, or press the reset button to quit.${NORMAL}"
+ if [ "$RC" = "0" ]; then
+ einfo "Everything looks OK" ; eend 0
+ else
+ eerror 'Checksum failed for theses files:' ; eend 1
+ egrep -v '(^md5sum:|OK$)' /tmp/md5sum.log
+ eerror 'Data on the grml medium is possibly incomplete/damaged or...'
+ eerror '... RAM of your computer is broken.' ; eend 1
+ einfon "Hit return to continue, or press the reset button to quit."
read a
fi
einfo "Bootoption blacklist found."
BLACK="$(getbootparam 'blacklist' 2>>$DEBUG)"
if [ -n "$BLACK" ] ; then
- einfo "Blacklisting module ${BLACK} via /etc/modprobe.d/grml."
- echo "# begin entry generated by config_blacklist of grml-autoconfig" >> /etc/modprobe.d/grml
- echo "blacklist $BLACK" >> /etc/modprobe.d/grml
- echo "alias $BLACK off" >> /etc/modprobe.d/grml
- echo "# end entry generated by config_blacklist of grml-autoconfig" >> /etc/modprobe.d/grml ; eend $?
+ 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 $?
+ done
else
eerror "No given module for blacklist found. Blacklisting will not work therefore."
fi
else
- ewarn "Backlisting via bootoption does not work on harddisk installations." ; eend 1
+ ewarn "Backlisting via bootoption is not intended for use on harddisk installations." ; eend 1
eindent
- einfo "Please blacklist the module(s) via /etc/modprobe.d/blacklist."
+ einfo "Please blacklist the module(s) manually using the 'blacklist' script."
eoutdent
fi
fi
else
ewarn "(none)" ; eend 1
fi
- if ! [ -S /var/run/acpid.socket ] ; then
+ if ! ps x | grep -q /usr/sbin/acpid ; then
if ! [ -r /var/run/dbus/pid ] ; then
einfo "Starting acpi daemon."
- /etc/init.d/acpid start >>$DEBUG ; eend $?
+ /etc/init.d/acpid start 1>>$DEBUG 2>&1 ; eend $?
else
eerror "acpid error: it seems you are running d-bus/hal, but acpid needs to be started before d-bus."
eerror "Solution: please activate acpid via /etc/runlevel.conf"
# {{{ Interactive configuration
config_interactive(){
-if [ -n "$INTERACTIVE" ] ; then
-einfo "Entering interactive configuration second stage."
-
- echo " ${GREEN}Your console keyboard defaults to: ${MAGENTA}${KEYTABLE}"
- echo -n "${CYAN}Do you want to (re)configure your console keyboard?${NORMAL} [Y/n] "
- read a
- [ "$a" != "n" ] && /usr/sbin/dpkg-reconfigure console-data ; eend $?
-
- echo -n "${CYAN}Do you want to (re)configure your soundcard?${NORMAL} [Y/n] "
- read a
- [ "$a" != "n" ] && alsaconf && ( exec aumix -m 0 >>$DEBUG 2>&1 & ) ; eend $?
-
- echo -n "${CYAN}Do you want to (re)configure your graphics (X11) subsystem?${NORMAL} [Y/n] "
- read a
- [ "$a" != "n" ] && xorgcfg -textmode ; eend $?
- echo " ${GREEN}Interactive configuration finished. Everything else should be fine for now.${NORMAL}"
-fi
-eend 0
+ ewarn "config_interactive is deprecated nowadays."
+ ewarn "Please set CONFIG_INTERACTIVE='no' in /etc/grml/autoconfig" ; eend 0
}
# }}}
amixer set Front ${VOL}% 1>/dev/null
fi
fi
- ERROR=$(aumix -w $VOL -v $VOL -p $VOL -m $VOL 2>&1) ; RC=$?
+ # by default assume '0' as volume for microphone:
+ if checkbootparam micvol ; then
+ MICVOL="$(getbootparam 'micvol' 2>>$DEBUG)"
+ else
+ MICVOL=0
+ fi
+
+ # finally set the volumes:
+ ERROR=$(aumix -w $VOL -v $VOL -p $VOL -m $MICVOL 2>&1) ; RC=$?
if [ -n "$ERROR" ] ; then
eindent
eerror "Problem setting mixer volumes: $ERROR (no soundcard?)"
if checkbootparam 'nolvm' ; then
ewarn "Skipping LVM code as requested on boot commandline." ; eend 0
else
- if ! [ -x /sbin/lvm -a -x /etc/init.d/lvm2 -a -x /sbin/lvdisplay ] ; then
+ # Debian etch provides /etc/init.d/lvm only, newer suites provide /etc/init.d/lvm2
+ if ! [ -x /sbin/lvm -a -x /sbin/lvdisplay ] || ! [ -x /etc/init.d/lvm2 -o -x /etc/init.d/lvm ] ; then
eerror "LVM not available, can not execute it." ; eend 1
else
if lvdisplay 2>&1 | grep -v 'No volume groups found' 1>/dev/null 2>&1 ; then