X-Git-Url: http://git.grml.org/?p=grml-autoconfig.git;a=blobdiff_plain;f=autoconfig.functions;h=ccca4214ee92601e13a07667f9e5635afc7402ac;hp=42c80f2b0a5eee121dd6ae9980a8531ffb014533;hb=8001910c7d648cf70813e12ac50f6d47bd91d092;hpb=96f0acb0fde94c5166d985cdb63c8be3f500eb34 diff --git a/autoconfig.functions b/autoconfig.functions index 42c80f2..ccca421 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: Don Dez 27 23:58:27 CET 2007 [mika] +# Latest change: Tue May 20 01:09:30 CEST 2008 [mika] ################################################################################ # {{{ path, variables, signals, umask, zsh @@ -13,6 +13,11 @@ DEBUG="/dev/null" KERNEL="$(uname -r)" umask 022 +# old linuxrc version: +[ -d /cdrom ] && export LIVECD_PATH=/cdrom +# new initramfs layout: +[ -d /live/image ] && export LIVECD_PATH=/live/image + # Ignore these signals in non-interactive mode: INT, TERM, SEGV [ -z "$PS1" ] && trap "" 2 3 11 @@ -91,7 +96,7 @@ 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 /cdrom/bootparams/ ] && CMDLINE="$CMDLINE $(cat /cdrom/bootparams/* | tr '\n' ' ')" +[ -d "${LIVECD_PATH}"/bootparams/ ] && CMDLINE="$CMDLINE $(cat ${LIVECD_PATH}/bootparams/* | tr '\n' ' ')" # }}} # {{{ Check if we are running from the grml-CD or HD @@ -116,26 +121,27 @@ fi # {{{ 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 } } @@ -143,16 +149,16 @@ config_debug(){ # {{{ 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 } # }}} @@ -594,13 +600,8 @@ if [ -n "$TESTCD" ]; then 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=$? ) + if [ -n "${LIVECD_PATH}"/GRML ] ; then + ( cd "${LIVECD_PATH}"/GRML ; 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 @@ -708,18 +709,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 @@ -1456,10 +1459,10 @@ fi # checkbootparam home # {{{ Check for scripts on CD-ROM config_cdrom_scripts(){ if checkbootparam "script"; then - for script in /cdrom/scripts/* ; do - einfo " grml script found on CD, executing ${WHITE}${script}${NORMAL}." - . $script - done + for script in "${LIVECD_PATH}"/scripts/* ; do + einfo " grml script found on CD, executing ${WHITE}${script}${NORMAL}." + . $script + done fi } # }}} @@ -1609,11 +1612,22 @@ config_wondershaper(){ # {{{ syslog-ng config_syslog(){ if checkbootparam "nosyslog"; then - ewarn "Not starting syslog-ng as requested on boot commandline." ; eend 0 + ewarn "Not starting syslog daemon as requested on boot commandline." ; eend 0 else - einfo "Starting syslog-ng in background." - /etc/init.d/syslog-ng start 1>>$DEBUG & - eend 0 + SYSLOGD='' + [ -x /etc/init.d/syslog-ng ] && SYSLOGD='syslog-ng' + [ -x /etc/init.d/rsyslog ] && SYSLOGD='rsyslog' + [ -x /etc/init.d/dsyslog ] && SYSLOGD='dsyslog' + [ -x /etc/init.d/sysklogd ] && SYSLOGD='sysklogd' + [ -x /etc/init.d/inetutils-syslogd ] && SYSLOGD='inetutils-syslogd' + + if [ -z "$SYSLOGD" ] ; then + eerror "No syslog daemon found." ; eend 1 + else + einfo "Starting $SYSLOGD in background." + /etc/init.d/$SYSLOGD start 1>>$DEBUG & + eend 0 + fi fi } # }}} @@ -1818,7 +1832,7 @@ if checkbootparam "config" ; then einfo "Bootoption config found. config is set to: $CONFIG" eindent einfo "Trying to extract configuration file ${CONFIG}:" - cd / && unp /cdrom/config/$CONFIG $EXTRACTOPTIONS ; eend $? + cd / && unp "${LIVECD_PATH}"/config/$CONFIG $EXTRACTOPTIONS ; eend $? eoutdent fi @@ -1887,18 +1901,39 @@ fi # {{{ /cdrom/.*-options config_debs(){ if checkbootparam "debs" ; then - DEBS="$(getbootparam 'debs' 2>>$DEBUG)" - einfo "Tring to install debian package(s) ${DEBS}" - dpkg -i /cdrom/debs/$DEBS* ; eend $? + DEBS="$(getbootparam 'debs' 2>>$DEBUG)" + einfo "Tring to install debian package(s) ${DEBS}" + dpkg -i "${LIVECD_PATH}"/debs/$DEBS* ; eend $? fi } config_scripts(){ if checkbootparam "scripts" ; then - SCRIPTS="$(getbootparam 'scripts' 2>>$DEBUG)" - [ -z "$SCRIPTS" ] && SCRIPTS='grml.sh' - einfo "Bootparameter scripts found. Trying to execute ${SCRIPTS}:" - sh -c /cdrom/scripts/$SCRIPTS ; eend $? + 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 $? +fi +} +# }}} + +# {{{ mypath +config_mypath(){ +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 + chmod 644 /etc/grml/my_path + # make sure the directories exist: + eindent + for i in $(echo $MY_PATH | sed 's/:/\n/g') ; do + if ! [ -d "$i" ] ; then + einfo "Creating directory $i" + mkdir -p "$i" ; eend $? + fi + done + grep -q "${MY_PATH}" /etc/grml/my_path || echo "${MY_PATH}" >> /etc/grml/my_path ; eend $? + eoutdent fi } # }}} @@ -2354,11 +2389,11 @@ fi # stringinstring "BOOT_IMAGE=debian2hd config_distri(){ if checkbootparam "distri"; then DISTRI="$(getbootparam 'distri' 2>>$DEBUG)" - if [ -r /cdrom/desktop/"$DISTRI".jpg ] ; then - [ -n "$BOOTDEBUG" ] && einfo "Debug: bootoption distri found and file /cdrom/desktop/$DISTRI present" && eend 0 + if [ -r "${LIVECD_PATH}"/desktop/"$DISTRI".jpg ] ; then + [ -n "$BOOTDEBUG" ] && einfo "Debug: bootoption distri found and file ${LIVECD_PATH}/desktop/${DISTRI} present" && eend 0 # make sure the desktop.jpg file is not a symlink, so copying does not file then [ -L /usr/share/grml/desktop.jpg ] && rm /usr/share/grml/desktop.jpg - cp /cdrom/desktop/"$DISTRI".jpg /usr/share/grml/desktop.jpg + cp "${LIVECD_PATH}"/desktop/"$DISTRI".jpg /usr/share/grml/desktop.jpg fi fi }