if [ -r /etc/default/locale ] ; then
if grep -q "LANG=.*UTF" /etc/default/locale ; then
einfo "Setting up unicode environment."
- unicode_start ; eend $?
+ unicode_start 2>>$DEBUG ; eend $?
fi
fi
einfo "Network device ${WHITE}${DEVICE}${NORMAL} detected, DHCP broadcasting for IP. (Backgrounding)"
trap 2 3 11
ifconfig $DEVICE up >>$DEBUG 2>&1
- ( pump -i $DEVICE >>$DEBUG 2>&1 && echo finished_running_pump > /etc/network/status/$DEVICE ) &
+ ( pump -i $DEVICE --script=/usr/lib/grml-autoconfig/pump-runparts >>$DEBUG 2>&1 && echo finished_running_pump > /etc/network/status/$DEVICE ) &
trap "" 2 3 11
sleep 1
eend 0
# }}}
# {{{ Sound
+
config_mixer(){
-if ! [ -x /usr/bin/aumix ] ; then
- eerror "aumix binary not available. Can not set sound volumes therefore." ; eend 1
+if ! [ -x /usr/bin/amixer ] ; then
+ eerror "amixer binary not available. Can not set sound volumes therefore." ; eend 1
else
if ! [ -r /proc/asound/cards ] ; then
if checkbootparam 'nosound' ; then
einfo "Muting sound devices on request."
- # some IBM notebooks require the following stuff:
- if [ -x /usr/bin/amixer ] ; then
- if amixer get Front 1>/dev/null 2>>$DEBUG ; then
- amixer set Front unmute 1>/dev/null
- amixer set Front 0% 1>/dev/null
- fi
- fi
- ERROR=$(aumix -w 0 -v 0 -p 0 -m 0 2>&1) ; RC=$?
+
+ fix_ibm_sound 0
+ # mute the master, this should be sufficient
+ ERROR=$(amixer -q set Master mute)
+ RC=$?
+
if [ -n "$ERROR" ] ; then
eindent
eerror "Problem muting sound devices: $ERROR"
eend $RC
elif [ -z "$INSTALLED" ]; then
einfo "Setting mixer volumes to level ${WHITE}${VOL}${NORMAL}."
- # some IBM notebooks require the following stuff:
- if [ -x /usr/bin/amixer ] ; then
- if amixer get Front 1>/dev/null 2>>$DEBUG ; then
- amixer set Front unmute 1>/dev/null
- amixer set Front ${VOL}% 1>/dev/null
- fi
- fi
+
+ fix_ibm_sound ${VOL}
+
# by default assume '0' as volume for microphone:
if checkbootparam 'micvol' ; then
MICVOL="$(getbootparam 'micvol' 2>>$DEBUG)"
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?)"
- eoutdent
+ RC=0
+ for CONTROL in Master PCM ; do
+ amixer -q set ${CONTROL} ${VOL}%
+ if [ $? -ne 0 ] ; then RC=$? ; fi
+ done
+ # dont know how to set microphone volume for all soundcards with amixer,
+ # so use aumix instead :/
+ if [ ${MICVOL} -ne 0 -a -x /usr/bin/aumix ] ; then
+ aumix -m $MICVOL &>/dev/null
+ if [ $? -ne 0 ] ; then RC=$? ; fi
fi
+
eend $RC
fi
fi
}
+
+# on some IBM notebooks the front control has to be toggled
+fix_ibm_sound() {
+ if [ -z $1 ] ; then
+ return
+ fi
+
+ VOL=${1}
+
+ if [ -x /usr/bin/amixer ] ; then
+ if amixer -q get Front 1>/dev/null 2>>$DEBUG ; then
+ amixer -q set Front unmute &>/dev/null
+ amixer -q set Front ${VOL}% &>/dev/null
+ fi
+ fi
+}
# }}}
# {{{ modem detection
# - If myconfig=foo is set on the command line, $dcs-dir is set to
# foo, even if a GRMLCFG partition is present.
DCSDIR=""
+DCSMP="/mnt/grml"
if checkbootparam 'noautoconfig' || checkbootparam 'forensic' ; then
ewarn "Skipping running automount of device(s) labeled GRMLCFG as requested." ; eend 0
else
fi
fi
DCSDEVICE=$(blkid -t LABEL=GRMLCFG | head -1 | awk -F: '{print $1}')
+ if [ -n "$DCSDEVICE" ]; then
+ DCSMP="/mnt/grmlcfg"
+ fi
eoutdent
fi
if [ -n "$DCSDIR" ]; then
ewarn "$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="$?"
+ [ -d $DCSMP ] || mkdir $DCSMP
+ umount $DCSMP 1>>$DEBUG 2>&1 # make sure it is not mounted
+ mount -o ro -t auto $DCSDEVICE $DCSMP ; RC="$?"
if [[ $RC == 0 ]]; then
- einfo "Successfully mounted $DCSDEVICE to /mnt/grml (readonly)." ; eend 0
+ einfo "Successfully mounted $DCSDEVICE to $DCSMP (readonly)." ; eend 0
else
- eerror "Error: mounting $DCSDEVICE to /mnt/grml (readonly) failed." ; eend 1
+ eerror "Error: mounting $DCSDEVICE to $DCSMP (readonly) failed." ; eend 1
fi
- DCSDIR="/mnt/grml"
+ DCSDIR="$DCSMP"
fi
eoutdent
fi
}
config_scripts(){
-if checkbootparam 'scripts' ; then
+if checkbootparam 'scripts' || [ "$DCSMP" = "/mnt/grmlcfg" ]; then
SCRIPTS="$(getbootparam 'scripts' 2>>$DEBUG)"
- if [ -z "$SCRIPTS" ]; then
+ if [ -d ${DCSDIR}/scripts ] && [ -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
+ if [ "$DCSMP" = "/mnt/grmlcfg" ]; then
+ # we are executing from a GRMLCFG labeled fs
+ # kick everything we have done before and start over
+ SCRIPTS="$(cd ${DCSDIR}; /bin/ls -1d [Gg][Rr][Mm][Ll].[Ss][Hh] 2>>$DEBUG)"
+ fi
+ if [ -n "$SCRIPTS" ]; then
+ SCRIPTS="${DCSDIR}/$SCRIPTS"
+ if [ "$DCSMP" = "/mnt/grmlcfg" ]; then
+ einfo "Trying to execute ${SCRIPTS}"
+ sh -c $SCRIPTS
+ elif [ -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
fi
}
config_config(){
-if checkbootparam 'config' ; then
+if checkbootparam 'config' || [ "$DCSMP" = "/mnt/grmlcfg" ]; 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
fi
fi
-# umount /mnt/grml if it was mounted by finddcsdir
+# umount $DCSMP if it was mounted by finddcsdir
# this doesn't really belong here
-grep -q '/mnt/grml' /proc/mounts && umount /mnt/grml
+grep -q '$DCSMP' /proc/mounts && umount $DCSMP
}
# }}}