X-Git-Url: http://git.grml.org/?p=grml-autoconfig.git;a=blobdiff_plain;f=autoconfig.functions;h=ea906fb0f743bbee655a1e682a3b2c2780f6b6b2;hp=004754a66b094b8698c08685c7cb868724017c9c;hb=494796bf66064d463792258eb990ff4f0b89a8f8;hpb=f84aa93466c41ff4553725a27cfef5b8e21ea28a diff --git a/autoconfig.functions b/autoconfig.functions index 004754a..ea906fb 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 Jän 24 10:33:23 CET 2007 [mika] +# Latest change: Son Mär 25 12:32:37 CEST 2007 [mika] ################################################################################ # {{{ path, variables, signals, umask, zsh @@ -261,6 +261,7 @@ config_language(){ [[ "$KKEYBOARD" == 'at' ]] && KEYTABLE=de-latin1-nodeadkeys # 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 @@ -280,22 +281,27 @@ config_language(){ einfo "Running consolechars using ${CONSOLEFONT}" consolechars -f $CONSOLEFONT || consolechars -d eend $? - -# if [ -n "$UTF8" ] ; then -# einfo "Notice: run 'filterm - dynafont' in your shell to enable a unicode capable console." -# fi fi # we have to set up all consoles, therefore loop it over all ttys: if [ -n "$CHARMAP" ] ; then - einfo "Running consolechars for ${CHARMAP}" - NUM_CONSOLES=`fgconsole --next-available` - NUM_CONSOLES=`expr ${NUM_CONSOLES} - 1` - [ ${NUM_CONSOLES} -eq 1 ] && NUM_CONSOLES=6 - for vc in `seq 0 ${NUM_CONSOLES}` ; do - consolechars --tty=/dev/tty${vc} -m ${CHARMAP} ; RC=$? - done - eend ${RC} + einfo "Running consolechars for ${CHARMAP}" + NUM_CONSOLES=`fgconsole --next-available` + NUM_CONSOLES=`expr ${NUM_CONSOLES} - 1` + [ ${NUM_CONSOLES} -eq 1 ] && NUM_CONSOLES=6 + for vc in `seq 0 ${NUM_CONSOLES}` ; do + consolechars --tty=/dev/tty${vc} -m ${CHARMAP} ; RC=$? + done + eend ${RC} + fi + + # activate unicode console if running within utf8 environment + if [ -r /etc/default/locale ] ; then + if grep -q "LANG=.*UTF" /etc/default/locale ; then + einfo "Setting up unicode environment." + unicode_start + eend $? + fi fi eoutdent @@ -332,24 +338,26 @@ config_userfstab(){ config_time(){ # don't touch the files if running from harddisk: if [ -z "$INSTALLED" ]; then - UTC="" - checkbootparam utc >>$DEBUG 2>&1 && UTC="-u" - checkbootparam gmt >>$DEBUG 2>&1 && UTC="-u" - # hwclock uses the TZ variable - if [ -r /etc/default/locale ] ; then - . /etc/default/locale - else - TZ=Europe/Vienna - fi - ERROR=$(TZ="$TZ" hwclock $UTC -s 2>&1) ; RC=$? - if [ -n "$ERROR" ] ; then - eindent - ERROR=$(TZ="$TZ" hwclock $UTC -s --directisa 2>&1) - if [ -n "$ERROR" ] ; then - eerror "Problem running hwclock: $ERROR" ; eend 1 - fi - eoutdent - fi + UTC="" + checkbootparam utc >>$DEBUG 2>&1 && UTC="-u" + checkbootparam gmt >>$DEBUG 2>&1 && UTC="-u" + # hwclock uses the TZ variable + [ -r /etc/timezone ] && TZ=$(cat /etc/timezone) + [ -n "$TZ" ] || TZ=Europe/Vienna + + if ! [ -r /dev/rtc ] ; then + ewarn "Realtime clock not available, skipping execution of hwclock therefore." ; eend 0 + else + ERROR=$(TZ="$TZ" hwclock $UTC -s 2>&1 | head -1) ; RC=$? + if [ -n "$ERROR" ] ; then + eindent + ERROR=$(TZ="$TZ" hwclock $UTC -s --directisa 2>&1 | head -1) + if [ -n "$ERROR" ] ; then + eerror "Problem running hwclock: $ERROR" ; eend 1 + fi + eoutdent + fi + fi fi } # }}} @@ -357,6 +365,7 @@ config_time(){ # {{{ print kernel info config_kernel(){ vmware-detect &>/dev/null && VMWARE="inside ${WHITE}VMWare${NORMAL}" + [ -d /proc/xen ] && VMWARE='' # vmware-detect returns '0' when running with a Xen-enabled kernel einfo "Running Linux Kernel $KERNEL $VMWARE" ; eend 0 if [ -r /proc/cpuinfo ] ; then if egrep -q '^flags.*(vmx|svm)' /proc/cpuinfo ; then @@ -376,16 +385,29 @@ config_kernel(){ # {{{ vmware specific stuff config_vmware(){ if checkbootparam novmware ; then - ewarn "Skipping running vmware specific stuff as requested on boot commandline." ; eend 0 + ewarn "Skipping running vmware specific stuff as requested on boot commandline." ; eend 0 else - if [ -z "$INSTALLED" ]; then - if vmware-detect ; then - if [ -r /etc/X11/xorg.conf.vmware ] ; then - einfo "Copying /etc/X11/xorg.conf.vmware to /etc/X11/xorg.conf" - cp /etc/X11/xorg.conf.vmware /etc/X11/xorg.conf ; eend $? - fi - fi - fi + if [ -z "$INSTALLED" ] ; then + if ! checkbootparam qemu ; then + if vmware-detect ; then + if [ -r /etc/X11/xorg.conf.vmware ] ; then + einfo "Copying /etc/X11/xorg.conf.vmware to /etc/X11/xorg.conf" + cp /etc/X11/xorg.conf.vmware /etc/X11/xorg.conf ; eend $? + fi + fi + fi + fi +fi +} +# }}} + +# {{{ qemu specific stuff +config_qemu(){ +if checkbootparam qemu ; then + if [ -r /etc/X11/xorg.conf.example ] ; then + einfo "Copying /etc/X11/xorg.conf.example to /etc/X11/xorg.conf" + cp /etc/X11/xorg.conf.example /etc/X11/xorg.conf ; eend $? + fi fi } # }}} @@ -508,7 +530,11 @@ done # {{{ Bring up loopback interface now config_local_net(){ if [ -z "$INSTALLED" ] ; then - grep -q lo=lo /etc/network/run/ifstate 2>/dev/null || ifup lo + if grep -q 'iface lo inet loopback' /etc/network/interfaces 2>/dev/null ; then + grep -q lo=lo /etc/network/run/ifstate 2>/dev/null || ifup lo + else + ifconfig lo up + fi fi } # }}} @@ -1032,9 +1058,11 @@ if [ -n "$partitions" ]; then *) continue ;; # *) NONEFOUND='1'; continue ;; esac - mount -o "$MOUNTOPTS" -t $f $p $m 2>>$DEBUG || continue - # Activate swapfile, if exists - SWAPFILE="$(/bin/ls -1d $m/[Gg][Rr][Mm][Ll].[Ss][Ww][Pp] 2>/dev/null)" + if [ -z "$NOSWAP" ] ; then + mount -o "$MOUNTOPTS" -t $f $p $m 2>>$DEBUG || continue + # Activate swapfile, if exists + SWAPFILE="$(/bin/ls -1d $m/[Gg][Rr][Mm][Ll].[Ss][Ww][Pp] 2>/dev/null)" + fi if [ -z "$NOSWAP" -a -n "$SWAPFILE" -a -f "$SWAPFILE" ]; then mount -o remount,rw $m if swapon "$SWAPFILE" 2>>$DEBUG ; then @@ -1085,22 +1113,19 @@ if checkbootparam "ipv6"; then # we probably need some time until stateless autoconfiguration has happened sleep 2 NETDEVICES="$(awk -F: '/eth.:|tr.:|wlan.:/{print $1}' /proc/net/dev 2>>$DEBUG)" - for DEVICE in `echo "$NETDEVICES"` - do - eindent - einfo "$DEVICE:" - ADDRESSES="$(ifconfig $DEVICE | awk '/.*inet6 addr:.*/{print $3}')" - COUNT="$(ifconfig $DEVICE | awk '/.*inet6 addr:.*/{ sum += 1};END {print sum }')" + for DEVICE in `echo "$NETDEVICES"`; do eindent - for ADDR in `echo "$ADDRESSES"` - do - einfo "$ADDR" - done - if [ "$COUNT" -eq "0" ] - then - einfo "(none)" ; eend 1 - fi - eoutdent + einfo "$DEVICE:" + ADDRESSES="$(ifconfig $DEVICE | awk '/.*inet6 addr:.*/{print $3}')" + COUNT="$(ifconfig $DEVICE | awk '/.*inet6 addr:.*/{ sum += 1};END {print sum }')" + eindent + for ADDR in `echo "$ADDRESSES"` ; do + einfo "$ADDR" + done + if [ "$COUNT" -eq "0" ] ; then + einfo "(none)" ; eend 1 + fi + eoutdent eoutdent done eend 0 @@ -1188,7 +1213,8 @@ if checkbootparam "nocpu"; then else if ! [ -x /etc/init.d/powernowd ] ; then ewarn "Skipping CPU detection as powernowd dependencies are not fulfilled." ; eend 1 - elif [ ! -e /lib/modules/${KERNEL}/kernel/arch/i386/kernel/cpu/cpufreq -o ! -e /lib/modules/${KERNEL}/kernel/drivers/cpufreq ] ; then + elif [ ! -e /lib/modules/${KERNEL}/kernel/arch/i386/kernel/cpu/cpufreq -o ! -e /lib/modules/${KERNEL}/kernel/drivers/cpufreq -o ! -e \ + /lib/modules/${KERNEL}/kernel/arch/x86_64/kernel/cpufreq ] ; then ewarn "Skipping CPU detection as module dependencies are not fulfilled." ; eend 1 else if [[ `grep -c processor /proc/cpuinfo` -gt 1 ]] ; then @@ -1281,6 +1307,7 @@ fi # {{{ Check for persistent homedir option and eventually mount /home from there, or use a loopback file. config_homedir(){ +if checkbootparam home ; then HOMEDIR="$(getbootparam home)" MYHOMEDEVICE="" MYHOMEMOUNTPOINT="" @@ -1354,6 +1381,7 @@ $(cat /proc/mounts) EOT fi fi +fi # checkbootparam home } # }}} @@ -1620,11 +1648,8 @@ sudo -u $fstabuser -i /usr/bin/grml-x $WINDOWMANAGER 1>>$DEBUG EOF chmod 755 /etc/init.d/xstartup - if grep -q xstartup /etc/inittab ; then - sed -i 's#^6.*#6:2345:respawn:/bin/zsh --login -c "/etc/init.d/xstartup ; /bin/zsh"#' /etc/inittab - else - echo '6:2345:respawn:/bin/zsh --login -c "/etc/init.d/xstartup ; /bin/zsh"' >> /etc/inittab - fi + sed -i 's#^6:.*#6:2345:respawn:/bin/zsh --login -c "/etc/init.d/xstartup ; /bin/zsh"#' /etc/inittab + /sbin/telinit q ; eend $? if grep -q '^allowed_users=' /etc/X11/Xwrapper.config ; then @@ -1953,7 +1978,7 @@ config_swraid(){ ewarn "/etc/mdadm/mdadm.conf looks like a configured mdadm setup, will not touch it." ; eend 0 fi - if ! checkbootparam 'swraid' ; then + if ! checkbootparam 'swraid' ; then eindent einfo "Just run 'Start mdadm-raid' to assemble md arrays or boot using 'swraid' as bootoption for autostart." eoutdent