# ACPI Sleep und das Aufwachen

## Rüpel

Hallo,

ich bin auf der Suche nach Ideen, weil das Thema für mich neu ist.

Ich überlege, einen lokalen Mailserver in den Keller zu stellen (nichts ungewöhnliches), aber ich hab was dagegen, wenn das Ding 24h pro Tag läuft. Ich kann aber der Familie nicht sagen, dass sie in den Keller gehen sollen, bevor sie Mails lesen wollen. Und auch daran zu denken, ein WoL-Tool vor dem Mailprogramm zu öffnen, ist hier indiskutabel. Mailprogramm öffnen, Mails verfügbar, so soll das laufen.

Gibt es eine Möglichkeit, den Rechner in einen Schlafzustand zu versetzen und dann aufwachen zu lassen, wenn Verkehr auf dem IMAP Port eingeht? Kann mich da vielleicht bitte jemand mit einem Link zu passender Lektüre versorgen?

Danke!

----------

## papahuhn

Nein, das geht nicht.

----------

## manuels

Wüßte auch nicht, wie das klappen sollte.

Es sei denn, du besorgst dir einen Router, auf dem Linux läuft.

Da könntest du dir dann eine entsprechende WOL-on-IMAP-Regel basteln.

----------

## forrestfunk81

Du könntest ja ein Skript schreiben, dass zuerst mit wol den Server aufweckt und dann das Mail Programm startet. Allerdings muss man dann halt ein bißchen warten, bis der Server gebootet ist.

----------

## Rüpel

Danke erstmal für die Antworten.

An ein Skript hatte ich auch schon gedacht: erst WoL, dann Mailprogramm. (Urgs, Batchdateien für Windows, ist das lange her...)

Vielleicht kann man ja mit CPU drosseln und CD-Laufwerk ausbauen den Stromhunger soweit senken, dass der Rechner doch 24h im Prinzip läuft, aber die meiste Zeit in irgendeinem Schlafzustand verharrt? Per WoL sollte der dann relativ schnell (!) aufwachen. Kann man denn irgendeinen Schlafzustand (S3) nehmen, so dass zwischen dem Aufwachen und der Verfügbarkeit des Mailservers nicht so viel Zeit vergeht? Kann man überhaupt WoL nehmen, um einen ACPI Schlafzustand zu beenden?

----------

## reMod

Hehe, exakt vor dem selben Problem wie Du gerade bin ich auch vor einem halben Jahr gestanden  :Very Happy: 

Habe mir im Zuge meiner Ausbildung zum Fachinformatiker einen HP ProLiant-Server geholt, der zieht bei Volllast ca. 2 KW. Colocation kam für mich nicht in Frage, ich wollte den nämlich als Homeserver einsetzen. Schon nach paar Tagen haben sich meine Mitbewohner über die Lautstärke aufgeregt (18 Lüfter...) und die Stromrechnung hat auch ihren Teil dazu beigetragen, dass ich eine Lösung brauchte. Diese war auch nach einer Zeit gefunden:

Manche Mainboards unterstützen das sog. RTC-Wakeup. Mit einem Billigmainboard kannst Du das vergessen, es muss schon ein etwas hochwertigeres sein oder aus dem Serverbereich kommen. Beim RTC-Wakeup (RTC = Real Time Clock, das ist die hardwarebasierte Uhr des Mainboards, die durch Batterie betrieben wird) handelt es sich schlicht um einen Timer im BIOS, den Du bei laufender Maschine konfigurieren kannst. Anschließend fährst Du die Maschine ganz normal wie gewohnt herunter. Sobald der Timer abgelaufen ist, startet das Gerät wie von Zauberhand von ganz alleine  :Smile: 

Ich habe mir einen CronJob-Script geschrieben, der jede Nacht um eine bestimmte Uhrzeit den RTC-Wakeup konfiguriert und danach den Server herunterfährt. In der Früh, bevor ich aufstehe, startet der RTC-Wakeup von ganz alleine wieder den Server und mein Heimnetz ist in wenigen Minuten wieder voll funktionsfähig. Das funktioniert nun seit einem halben Jahr einwandfrei und ohne Probleme.

Du wirst Dich fragen, wie Du überprüfst, ob Dein Mainboard nun diesen RTC-Wakeup unterstützt. Das geht ganz einfach: Such einfach die Datei "wakealarm" im Verzeichnis /sys/class/rtc/rtc0/. Ist sie vorhanden, unterstützt Dein Mainboard RTC-Wakeup. Und wenn nicht, musst Du es entweder im BIOS aktivieren, oder Deine Hardware unterstützt es einfach nicht. In letzterem Fall wäre, meiner Meinung nach, die hier bereits beschriebene Lösung mit WakeOnLan noch möglich.

Die Ausgabe sieht bei meiner Maschine zum Beispiel so aus (siehe letzte Zeile):

```
homeserver ~ # ls -l /sys/class/rtc/rtc0/

total 0

-r--r--r-- 1 root root 4096 Mar  7 11:17 date

-r--r--r-- 1 root root 4096 Mar  7 11:17 dev

lrwxrwxrwx 1 root root    0 Mar  7 11:17 device -> ../../../rtc_cmos

-r--r--r-- 1 root root 4096 Mar  7 11:17 hctosys

-rw-r--r-- 1 root root 4096 Mar  7 11:17 max_user_freq

-r--r--r-- 1 root root 4096 Mar  7 11:17 name

drwxr-xr-x 2 root root    0 Mar  7 11:17 power

-r--r--r-- 1 root root 4096 Mar  7 11:17 since_epoch

lrwxrwxrwx 1 root root    0 Mar  7 11:17 subsystem -> ../../../../../class/rtc

-r--r--r-- 1 root root 4096 Mar  7 11:17 time

-rw-r--r-- 1 root root 4096 Mar  7 11:17 uevent

-rw-r--r-- 1 root root 4096 Mar  7 11:17 wakealarm
```

Und mein zugehöriger CronJob-Script macht ganz banal nur folgendes:

```
echo 0 > /sys/class/rtc/rtc0/wakealarm

echo $(expr $(date +%s) + 25200) > /sys/class/rtc/rtc0/wakealarm

/sbin/shutdown -h now
```

Kurze Erklärung:

Das "echo 0 > ..." ist sehr wichtig, denn das initialisiert Deinen RTC-Wakeup. Ohne diesen Schritt funktioniert es nicht.

Das zweite echo beschreibt die wakealarm-Datei mit der aktuellen Zeit plus 25200 Sekunden (entspricht 7 Stunden, was bewirkt, dass der Server jetzt in 7 Stunden wieder gestartet wird). Wichtig ist hierbei, dass Du die Zeit in Sekunden seit dem 1.1.1970 0 Uhr (UTC) angeben musst - das erledigt das "+%s" im date-Aufruf.

Viel Spaß  :Very Happy: 

Bei Fragen, einfach fragen.

----------

