X-Git-Url: https://git.grml.org/?p=grml-autoconfig.git;a=blobdiff_plain;f=autoconfig.functions;h=5442b8c841dcdf5bf236d8ae99f7257af291d5e5;hp=317323c9c4f711051751d17cb660c1171223b03a;hb=0ef13567e419e2ed045200a313d4d23ba8e13332;hpb=f2e718518cd811284a9b14a67fe3978deaa5a378 diff --git a/autoconfig.functions b/autoconfig.functions index 317323c..5442b8c 100755 --- a/autoconfig.functions +++ b/autoconfig.functions @@ -4,7 +4,7 @@ # Authors: grml-team (grml.org), (c) Klaus Knopper , (c) Michael Prokop # Bug-Reports: see http://grml.org/bugs/ # License: This file is licensed under the GPL v2. -# Latest change: Mit Jul 25 18:59:49 CEST 2007 [mika] +# Latest change: Mon Jän 14 21:34:16 CET 2008 [mika] ################################################################################ # {{{ path, variables, signals, umask, zsh @@ -96,7 +96,7 @@ CMDLINE="$(cat /proc/cmdline)" # {{{ Check if we are running from the grml-CD or HD INSTALLED="" -[ -e /GRML/etc/grml_cd ] || INSTALLED="yes" +[ -e /etc/grml_cd ] || INSTALLED="yes" # testcd TESTCD="" @@ -157,11 +157,6 @@ 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 @@ -262,10 +257,12 @@ config_language(){ # write keyboard related variables to file for later use [ -d /etc/sysconfig ] || mkdir /etc/sysconfig - echo "KEYTABLE=\"$KEYTABLE\"" > /etc/sysconfig/keyboard - echo "XKEYBOARD=\"$XKEYBOARD\"" >> /etc/sysconfig/keyboard - echo "KDEKEYBOARD=\"$KDEKEYBOARD\"" >> /etc/sysconfig/keyboard - echo "KDEKEYBOARDS=\"$KDEKEYBOARDS\"" >> /etc/sysconfig/keyboard + if ! [ -e /etc/sysconfig/keyboard ] ; then + echo "KEYTABLE=\"$KEYTABLE\"" > /etc/sysconfig/keyboard + echo "XKEYBOARD=\"$XKEYBOARD\"" >> /etc/sysconfig/keyboard + echo "KDEKEYBOARD=\"$KDEKEYBOARD\"" >> /etc/sysconfig/keyboard + echo "KDEKEYBOARDS=\"$KDEKEYBOARDS\"" >> /etc/sysconfig/keyboard + fi fi [ -r /etc/sysconfig/keyboard ] && . /etc/sysconfig/keyboard @@ -273,39 +270,44 @@ config_language(){ # 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 # Set default keyboard before interactive setup if [ -n "$KEYTABLE" ] ; then - einfo "Running loadkeys for ${WHITE}${KEYTABLE}${NORMAL} in background" - loadkeys -q $KEYTABLE & - eend $? + einfo "Running loadkeys for ${WHITE}${KEYTABLE}${NORMAL} in background" + loadkeys -q $KEYTABLE & + eend $? 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 @@ -393,12 +395,17 @@ if checkbootparam novmware ; then 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 @@ -433,22 +440,17 @@ 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: if [ -z "$INSTALLED" ]; then - einfo "Setting timezone." - KTZ="$(getbootparam tz 2>>$DEBUG)" - [ -f "/usr/share/zoneinfo/$KTZ" ] && TZ="$KTZ" - rm -f /etc/localtime - cp "/usr/share/zoneinfo/$TZ" /etc/localtime && eend 0 + KTZ="$(getbootparam tz 2>>$DEBUG)" + if [ -n "$KTZ" ] ; then + einfo "Setting timezone." + [ -f "/usr/share/zoneinfo/$KTZ" ] && TZ="$KTZ" + rm -f /etc/localtime + cp "/usr/share/zoneinfo/$TZ" /etc/localtime ; eend $? + fi fi } # }}} @@ -588,21 +590,33 @@ config_fix_passwd(){ # {{{ CD Checker config_testcd(){ if [ -n "$TESTCD" ]; then - einfo "Checking CD data integrity as requested by '${WHITE}testcd${NORMAL}' boot option." - einfo "Reading files and checking against GRML/md5sums, this may take a while..." - echo -n "${RED}" - ( cd /cdrom/GRML/ ; rm -f /tmp/md5sum.log ; md5sum -c md5sums 2>&1 | tee /tmp/md5sum.log ) - 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} " - read a - fi - eend 0 + einfo "Checking CD data integrity as requested by '${WHITE}testcd${NORMAL}' boot option." + einfo "Reading files and checking against GRML/md5sums, this may take a while..." + echo -n "${RED}" + + # /linuxrc grml version: + [ -d /cdrom/GRML ] && TESTCD_PATH=/cdrom/GRML + # live-initramfs version: + [ -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 ; RC=$? ) + else + echo "${RED} *** Error: Could not find md5sum file. ***" + fi + + 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 + + eend 0 fi } # }}} @@ -694,18 +708,20 @@ if checkbootparam "blacklist" ; then 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 @@ -737,10 +753,10 @@ if [ -d /proc/acpi ]; then 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" @@ -868,24 +884,8 @@ fi # {{{ 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 } # }}} @@ -1512,7 +1512,15 @@ else 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?)" @@ -2111,7 +2119,8 @@ config_lvm(){ 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 @@ -2367,4 +2376,4 @@ config_keyboard(){ # }}} ## END OF FILE ################################################################# -# vim:foldmethod=marker expandtab ai ft=zsh +# vim:foldmethod=marker expandtab ai ft=zsh shiftwidth=3