Inhaltsverzeichnis

Will man mit dem PVR auch terminiert Aufnahmen vornehmen, ist es
notwendig den PVR zeitgesteuert zu starten.
Das BIOS des VIA EPIA ME 6000 bietet eine Möglichkeit an, einen Tag und eine Uhrzeit als
Zeitpunkt für den automatischen Start des Computers festzulegen.
Die Software nvram-wakeup ist eigens dafür entwickelt worden diesen Zeitpunkt für den VDR
automatisch einzustellen.

Eine ausgezeichnete Anleitung zur Installation findet man auf den Seiten von Hubertus Sandmann unter http://www.hubertus-sandmann.homepage.t-online.de/vdr_wakeup.htm.
Die Software gibts bei http://sourceforge.net/projects/nvram-wakeup/.

Das EPIA Board benötigt allerdings einen Neustart bevor die Werte, die durch nvram-wakeup eingestellt wurden greifen (s. auch README.reboot im nvram-wakeup Paket).
Dabei muss der Rechner lediglich bis zum eigentlichen Boot des Betriebssystems kommen, d.h. es muss kein komplettes Linux hochgefahren werden, sondern es reicht aus bis zum Auswahlmenü von LILO oder grub zu kommen.

Der Ablauf stellt sich dann so dar:

  • Linux ist normal gestartet
  • Mit nvram-wakeup wird eine neue Startzeit im BIOS hinterlegt
  • Der Bootloader wird so eingestellt, daß er beim nächsten Start und nur beim nächsten Start den Rechner wieder direkt nach Erreichen des Grub-Menüs ausschaltet
  • Mit shutdown -r now wird ein Neustart eingeleitet
  • Grub oder LILO halten den Rechner an anstatt den Linux Kernel zu laden
  • Beim Neustart des Rechners wird wieder die Standard Bootsequenz (Start von Linux) durchlaufen

Für mein VIA EPIA ME6000 verwende ich folgende Konfigurationsdatei mit nvram-wakeup:

/etc/nvram-wakeup.conf:
################################################
## Mainboard autodetection information:
##
## - Mainboard vendor: ""
## - Mainboard type: "EPIA-M"
## - Mainboard revision: ""
## - BIOS vendor: "Award Software International, Inc."
## - BIOS version: "6.00 PG"
## - BIOS release: "12/11/2003"

addr_stat = 0x4B
shift_stat = 3
addr_day = 0x4C
addr_hour = 0x4D
addr_min = 0x4E
addr_sec = 0x4F
addr_chk_h = 0x6D
addr_chk_l = 0x6E

need_reboot = ON_ANY_CHANGE

Die Zusammenarbeit mit dem Bootloader grub ist nicht ganz so einfach wie bei lilo,
aber durchaus empfehlenswert.

Zunächst sollte man die Version 0.92-r1 des Gentoo Paketes grub verwenden, da die aktuelle Version 0.94 die benötigten Optionen nicht (mehr) unterstützt.

  • Installieren der Software grub:
    emerge =grub-0.92-r1
  • Einrichten des Bootsektors für grub:
    grub (dann erscheint das grub Prompt, nachdem grub nach BIOS Laufwerken gesucht hat, das kann ein bischen dauern)
    find /boot/grub/stage1
    root (hd0,0)
    setup (hd0)
    quit
  • Anpassen der /boot/grub/grub.conf:
    nano /boot/grub/grub.conf und wie folgt ändern:
    default 0
    timeout 3
    # splashimage=(hd0,0)/grub/splash.xpm.gz
    title=Gentoo Linux 2.4.26 PVR
    root(hd0,0)
    kernel (hd0,0)/bzImage root=/dev/hda3 vga=792 hdc=ide-scsi 3
    title=Poweroff
    savedefault default=0
    halt

Der Eintrag „Poweroff“ erzeugt einen neuen Menüeintrag im Grub-Menü.
Der Eintrag „savedefault default=0“ sorgt dafür das nach dem automatischen Ausschalten des Rechners, beim nächsten Neustart wieder der Standardeintrag für Linux verwendet wird. Fehlt diese Zeile läuft man in eine Endlosschleife (Rechner Starten, Ausschalten).

Um Grub davon in Kenntnis zu setzen, daß beim nächsten Neustart in die Poweroff Sequenz zu verzweigen ist, geht man wie folgt vor:

echo „savedefault –default=1 –once“|grub –batch –verbose

Das setzt den Standardmenüeintrag auf 1(=Poweroff).
Eigentlich sollte die Option „–once“ dafür sorgen, daß der Menüeintrag 1 nur genau einmal verwendet wird und Grub dann wieder zum default 0 (=Linux) zurückkehrt. Leider scheint diese Option nicht zu funktionieren. Aus diesem Grund wurd in der grub.conf auch der „savedefault defaul=0“ Eintrag vorgenommen.

Alternativ gibt es diverse Patches im Netz (z.B. bei www.vdr-portal.de), die grub Version 0.94 dazu überreden die once Option zu berücksichtigen. Der Aufwand für die Einrichtung ist jedoch ungleich höher.

Die Integration in den VDR erfolgt über das Skript /usr/local/bin/vdrshutdown.
Eine entsprechende Version mit Berücksichtigung von nvram-wakeup wird beim installieren von nvram-wakeup unter /usr/local/bin abgelegt. Wird grub verwendet, so sind einige Anpassungen nötig.
Hier das von mir verwendete Skript:

#!/bin/bash
# $Id: vdrshutdown,v 1.20 2004/07/21 08:41:10 bistr-o-math Exp $

NVRAMCMD=/usr/local/bin/nvram-wakeup
SVDRPCMD=/usr/local/src/VDR/svdrpsend.pl
CHECKSCRIPT=/usr/local/bin/vdrcheckscript

## – ------------------------
##
## now if $CHECKSCRIPT exists and is executable, the message
## will be passed through SVDRP to the tv screen.
##

test -x $CHECKSCRIPT && {
msg=`$CHECKSCRIPT "$@"`
test "$msg" != "" && {
$SVDRPCMD MESG $msg &
exit 1
}
}
#################

$NVRAMCMD – configfile=/etc/nvram-wakeup.conf – syslog – settime $1

case $PIPESTATUS in
0) # all went ok - new date and time set
shutdown -h now
EXITSTATUS=0
;;
1) # all went ok - new date and time set.
#
# *** but we need to reboot. ***
#
echo "savedefault – default=1 – once"| /sbin/grub – batch – verbose
shutdown -r now
EXITSTATUS=0
;;
2) # something went wrong
# don't do anything - just exit with status 1
EXITSTATUS=1
;;
esac

# exit with 0 if everything went ok.
# exit with 1 if something went wrong.
exit $EXITSTATUS
#