added config_qemu()
[grml-autoconfig.git] / autoconfig.functions
index f6d99b3..8b872af 100755 (executable)
@@ -4,7 +4,7 @@
 # Authors:       grml-team (grml.org), (c) Klaus Knopper <knopper@knopper.net>, (c) Michael Prokop <mika@grml.org>
 # Bug-Reports:   see http://grml.org/bugs/
 # License:       This file is licensed under the GPL v2.
-# Latest change: Mon Feb 19 18:59:09 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
@@ -337,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
 }
 # }}}
@@ -382,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
 }
 # }}}
@@ -514,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
 }
 # }}}
@@ -1038,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
@@ -1091,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
@@ -1287,6 +1306,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=""
@@ -1360,6 +1380,7 @@ $(cat /proc/mounts)
 EOT
   fi
 fi
+fi # checkbootparam home
 }
 # }}}