X-Git-Url: http://git.grml.org/?p=grml-autoconfig.git;a=blobdiff_plain;f=autoconfig.functions;h=0f6351adc1742ea81f6a5a791b76ae26bee81424;hp=40ad6b3f6ea66b95fd628f8eb11c35005edf8935;hb=bd0e40f191d3f2c600394ab0761489711ab206c1;hpb=49c82aea20869a9eff2beb795c2b3505765c1808 diff --git a/autoconfig.functions b/autoconfig.functions index 40ad6b3..0f6351a 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: 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 } # }}} @@ -1191,56 +1211,39 @@ config_cpu(){ if checkbootparam "nocpu"; then ewarn "Skipping CPU detection as requested on boot commandline." ; eend 0 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 - ewarn "Skipping CPU detection as module dependencies are not fulfilled." ; eend 1 + # check module dependencies + cpufreq_check() { + if [ -e /lib64 ] ; then + [ -e /lib/modules/${KERNEL}/kernel/arch/x86_64/kernel/cpufreq ] || return 1 + else + [ -e /lib/modules/${KERNEL}/kernel/arch/i386/kernel/cpu/cpufreq -o ! -e /lib/modules/${KERNEL}/kernel/drivers/cpufreq ] || return 1 + fi + } + + if [[ `grep -c processor /proc/cpuinfo` -gt 1 ]] ; then + einfo "Detecting CPU:" + CPU=$(awk -F: '/^processor/{printf " Processor"$2" is"};/^model name/{printf $2};/^vendor_id/{printf vendor};/^cpu MHz/{printf " %dMHz",int($2)};/^cache size/{printf ","$2" Cache"};/^$/{print ""}' /proc/cpuinfo 2>>$DEBUG) + echo $CPU | sed 's/ \{1,\}/ /g' + eend 0 else - if [[ `grep -c processor /proc/cpuinfo` -gt 1 ]] ; then - einfo "Detecting CPU:" - CPU=$(awk -F: '/^processor/{printf " Processor"$2" is"};/^model name/{printf $2};/^vendor_id/{printf vendor};/^cpu MHz/{printf " %dMHz",int($2)};/^cache size/{printf ","$2" Cache"};/^$/{print ""}' /proc/cpuinfo 2>>$DEBUG) - echo $CPU | sed 's/ \{1,\}/ /g' - eend 0 - else - einfo "Detecting CPU: `awk -F: '/^processor/{printf " Processor"$2" is"};/^model name/{printf $2};/^vendor_id/{printf vendor};/^cpu MHz/{printf " %dMHz",int($2)};/^cache size/{printf ","$2" Cache"};/^$/{print ""}' /proc/cpuinfo 2>>$DEBUG` " ; eend 0 - fi - if /usr/sbin/laptop-detect ; then - einfo "Detected Laptop - trying to use cpu frequency scaling:" -# loadcpumod() { -# for module in /lib/modules/${KERNEL}/kernel/arch/i386/kernel/cpu/cpufreq/*.ko /lib/modules/${KERNEL}/kernel/drivers/cpufreq/*.ko ; do -# # modprobe ${${${${(f)"$(_call_program modules ${(M)words[1]##*/}modprobe -l | grep cpufreq 2>>$DEBUG)"}:#}##*/}%.*} -# modprobe `basename ${module%%\.ko}` 1>>$DEBUG 2>&1 -# done -# } -# CPU=$(grep 'model name' /proc/cpuinfo | cut -b14- | head -1) -# eindent -# if [[ $CPU = *Intel* ]] ; then -# einfo "Detected CPU is of type Intel - loading modules and starting cpudyn." -# local DETECTED=1 -# loadcpumod -# /etc/init.d/cpudyn start 1>>$DEBUG ; eend $? -# fi -# if [[ $CPU = *AMD* ]] ; then -# einfo "Detected CPU is of type AMD - loading modules and starting powernowd." -# local DETECTED=1 -# loadcpumod -# /etc/init.d/powernowd start 1>>$DEBUG ; eend $? -# fi + einfo "Detecting CPU: `awk -F: '/^processor/{printf " Processor"$2" is"};/^model name/{printf $2};/^vendor_id/{printf vendor};/^cpu MHz/{printf " %dMHz",int($2)};/^cache size/{printf ","$2" Cache"};/^$/{print ""}' /proc/cpuinfo 2>>$DEBUG` " ; eend 0 + fi - eindent - if [ -r /usr/bin/cpufreq-detect.sh ] ; then - . /usr/bin/cpufreq-detect.sh - if [ -n "$MODULE" -a "$MODULE" != none ]; then - einfo "Loading module ${MODULE} and starting powernowd." - modprobe cpufreq_userspace 1>>$DEBUG - modprobe "$MODULE" 1>>$DEBUG || modprobe "$MODULE_FALLBACK" 1>>$DEBUG - /etc/init.d/powernowd start 1>>$DEBUG ; eend $? - else - ewarn "Could not detect an appropriate CPU for use with powernowd - skipping." && eend 1 - fi - fi - eoutdent - fi + if ! cpufreq_check ; then + ewarn "Skipping cpufreq setup as module dependencies are not fulfilled." ; eend 1 + else + if /usr/sbin/laptop-detect ; then + einfo "Detected Laptop - trying to use cpu frequency scaling:" + eindent + einfo "Loading module cpufreq_ondemand and adjusting scaling_governor." + if modprobe cpufreq_ondemand && RC=0 || RC=1 ; then + for file in $(find /sys/devices/system/cpu/ -name scaling_governor 2>/dev/null) ; do + echo ondemand > $file + done + fi + eend $RC + eoutdent + fi fi fi }