#!/bin/sh # # guess-helper # Copyright (C) 2004 Tobias Grimm # # $Id: guess-helper,v 1.10 2004/07/09 12:32:15 bistr-o-math Exp $ # . /etc/rc.config confdir=/etc/wakeup # prepare to use gettext, if installed: if [ -x /usr/bin/gettext ] then export TEXTDOMAIN=guess-helper echo="gettext -s" else echo="echo" fi # clear console window and print header line ClearScreen () { clear echo echo guess-helper echo ------------ echo } # AskQuestion "Do you like Debian?" Y n > Do you like Debian? [Y/n] AskQuestion () { if [ -x /usr/bin/gettext ] then question=`gettext "$1"` else question=$1 fi shift answers="" for answer in $* do if [ -x /usr/bin/gettext ] then answer=`gettext "$answer"` fi answers="$answers $answer" done choices="" for answer in $answers do if [ "$choices" = "" ] then choices="[$answer" else choices="$choices/$answer" fi done choices="$choices]" answers=`$echo $answers | tr '[:lower:]' '[:upper:]'` result=0 while [ $result -eq 0 ] do echo -n "$question" "$choices " read input if [ "$input" = "" ] then result=1 else input=`echo $input | tr '[:lower:]' '[:upper:]'` i=1 for answer in $answers do if [ "$answer" = "$input" ] then result=$i fi i=`expr $i + 1` done fi done return $result } # Translate and print text lines EchoTextLines () { textLines="" while [ "$1" ] do textLines="$textLines$1" shift done $echo -ne "$textLines" } # show next wakeup time settings and ask for reboot ShowBiosSettings () { ClearScreen EchoTextLines \ "Nach dem nächsten Neustart gehen Sie bitte in die BIOS Einstellungen\n" \ "und ändern Sie die Aufwachzeit auf folgende Werte:\n" echo $echo -n "Tag = " ; echo "$1" $echo -n "Stunde = " ; echo "$2" $echo -n "Minute = " ; echo "$3" $echo -n "Sekunde = " ; echo "$4" if [ $5 -eq 1 ] then $echo "Aktiviert = Ja" else $echo "Aktiviert = Nein" fi echo EchoTextLines \ "Starten Sie dieses Script erneut nach der Änderung der Aufwachzeit im BIOS\n"\ "und einem Neustart\n" echo AskQuestion "Neustart oder Abbrechen?" "A" "n" if [ $? -eq 2 ] then touch $confdir/guess-helper reboot sleep 60 exit 0 else echo $echo "Script abgebrochen !!!" echo exit 0 fi } ReadNvram () { cat_nvram $catOptions > $confdir/guess-directisa/$1 2>$confdir/guess-directisa/cat_nvram.log [ -c /dev/nvram ] && \ cat /dev/nvram > $confdir/guess-nvram-module/$1 2>$confdir/guess-nvram-module/cat.log if [ ! -s $confdir/guess-directisa/$1 ] && [ ! -s $confdir/guess-nvram-module/$1 ] ; then EchoTextLines\ "Befehle cat_nvram und cat /dev/nvram fehlgeschlagen.\n" "Bitte prüfen Sie das Log-File cat_nvram.log, beheben Sie die Fehler\n" "und starten Sie dieses Script guess-helper erneut.\n" # if they exist, they are empty. Remove them. rm -fr $confdir/guess-directisa/$1 $confdir/guess-nvram-module/$1 exit 1 fi } step0file=guess-helper.conf step1file=31.23.59.59+ step2file=11.12.13.14+ step3file=01.00.00.00+ step4file=01.00.00.00- if [ ! -f $confdir/guess-directisa/$step0file ] then ClearScreen EchoTextLines \ "Dieses Script soll dabei helfen die richtigen BIOS Adressen für die\n"\ "Aufwachzeit (wakeup time) im NVRAM Ihres PCs zu finden. Sie müssen dies\n"\ "nur machen, wenn Ihr Mainboard nicht bereits erkannt wird von nvram-wakeup.\n"\ "\n"\ "In mehreren Schritten wird es notwendig den PC neu zu starten, die\n"\ "Aufwachzeit im BIOS zu ändern und dann dieses guess-helper Script erneut\n"\ "aufzurufen.\n"\ "\n"\ "Dieses Script wird mehrere temporäre Dateien und eine Konfigurationsdatei für\n"\ "nvram-wakeup erzeugen. Diese liegen in dem Verzeichnis $confdir/.\n" echo AskQuestion "Mit dem ersten Schritt zur Feststellung der nvram-wakeup Adressen fortfahren?" "N" "j" [ $? -eq 1 ] && exit ClearScreen mkdir -p $confdir/guess-directisa EchoTextLines \ "Bitte wählen Sie den Chipsatz Ihres Mainboards -\n"\ " [U] Unbekannt (oder z.B., kein Zugriff auf oberen NVRAM-Speicher);\n"\ " [I] Intel;\n"\ " [V] VIA VT82Cxxx (xxx=686A,686B,596,...), nVidia nForce2, ATI RADEON 9100 IGP; \n"\ " [3] VIA VT8233/35/37;\n"\ " [D] DS1685\n" AskQuestion "Bitte wählen Sie aus der Liste:" "U" "i" "v" "3" "d" case $? in 2) catOptions="INTEL" ;; 3) catOptions="VT82Cxxx" ;; 4) catOptions="VT8235_37" ;; 5) catOptions="DS1685" ;; esac echo catOptions=\"$catOptions\" >$confdir/guess-directisa/$step0file ShowBiosSettings 31 23 59 59 1 else rm $confdir/guess-helper . $confdir/guess-directisa/$step0file if [ ! -f $confdir/guess-directisa/$step1file ] then [ -c /dev/nvram ] && mkdir -p $confdir/guess-nvram-module ReadNvram $step1file ShowBiosSettings 11 12 13 14 1 else if [ ! -f $confdir/guess-directisa/$step2file ] then ReadNvram $step2file ShowBiosSettings 01 00 00 00 1 else if [ ! -f $confdir/guess-directisa/$step3file ] then ReadNvram $step3file ShowBiosSettings 01 00 00 00 0 else ClearScreen ReadNvram $step4file cd $confdir/guess-directisa guess > nvram-wakeup.conf 2> guess-error.log [ "$catOptions" = "" ] || echo upper_method = $catOptions >> nvram-wakeup.conf cd $confdir/guess-nvram-module guess > nvram-wakeup.conf 2> guess-error.log cd .. rm $confdir/guess-helper EchoTextLines \ "Die nvram-wakeup Adressen-Ermittlung ist nun abgeschlossen.\n"\ "Alles lief fehlerfrei. Sie finden die ermittelten nvram-wakeup\n"\ "Einstellungen in der Datei $confdir/guess-directisa/nvram-wakeup.conf. Diese\n"\ "Datei wurde erzeugt mit der 'directisa' Zugriffsmethode.\n" [ -c /dev/nvram ] && EchoTextLines \ "In dem Verzeichnis $confdir/guess-nvram-module finden Sie das Ergebnis zur\n"\ "In the directory $confdir/guess-nvram-module you will find the results using\n"\ "Nutzung der 'nvram-kernel-module' Zugriffsmethode. Sie müssen entscheiden,\n"\ "welche Zugriffsmethode besser funktioniert.\n" EchoTextLines \ "Prüfen Sie die Dateien nvram-wakeup.conf und guess-error.log um zu sehen\n"\ "ob alles richtig lief. Um die generierte Konfigurationsdatei zu benutzen,\n"\ "müssen Sie diese nach /etc kopieren. Sie wird aktiviert durch\n"\ "den Eintrag WAKEUP_METHOD=\"nvram\" in der Datei /etc/rc.config\n"\ "Falls Ihre Konfigurationsdatei nvram-wakup.conf bei Ihnen läuft, senden Sie\n"\ "diese bitte an:\n" echo echo "Sergei.Haller@math.uni-giessen.de" echo $echo "Sie unterstützen damit den nvram-wakeup Support für mehr Mainboards." echo echo "Drücken Sie ENTER ..." read input fi fi fi fi