X-Git-Url: https://git.grml.org/?p=grml-autoconfig.git;a=blobdiff_plain;f=autoconfig.functions;h=4d13248e72dc1d842636628ecf0a0709c35d275b;hp=cd9baca1b5f9e085827f6cf706984ff576524e47;hb=108abd3aa30fc3e9072d46e2aca2af0aa119e8f8;hpb=91d88e67c7e46049809a9b79b6aa7841ecda3c7d diff --git a/autoconfig.functions b/autoconfig.functions index cd9baca..4d13248 100755 --- a/autoconfig.functions +++ b/autoconfig.functions @@ -297,7 +297,7 @@ config_language(){ 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 @@ -1968,6 +1968,7 @@ 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="" +DCSMP="/mnt/grml" if checkbootparam 'noautoconfig' || checkbootparam 'forensic' ; then ewarn "Skipping running automount of device(s) labeled GRMLCFG as requested." ; eend 0 else @@ -1988,6 +1989,7 @@ else fi fi DCSDEVICE=$(blkid -t LABEL=GRMLCFG | head -1 | awk -F: '{print $1}') + DCSMP="/mnt/grmlcfg" eoutdent fi @@ -2001,15 +2003,15 @@ else 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 @@ -2063,28 +2065,38 @@ 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)" @@ -2104,9 +2116,9 @@ if checkbootparam 'config' ; then 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 } # }}}