Dieser Beitrag erklärt, wie man bei einem QNAP NAS mit Debaininstallation die automatische An- und Abschaltung einrichtet. Es ist zwar kein echtes WOL (Wake on LAN), aber schon mal besser als es immer per Hand zu starten. Dazu ist ein Kernelpatch nötig. Bei der originalen Firmware gibt es die Möglichkeit das NAS zu einer bestimmten Uhrzeit anzuschalten und auch wieder auszuschalten. Diese Funktion ist leider im Debiankernel noch nicht angekommen. Hier hat ein findiger Kernelentwickler mit einem QNAP einen Patch geschrieben der dieses Problem löst. Der Link zu dem Originalbeitrag ist hier zu finden. Die Befehle sind alle auf dem QNAP auszuführen.
1. Ausschalten
Das einfachste kommt immer zuerst. 🙂 Man brauch nur in der /etc/crontab eine Zeile einfügen. 9:30 Uhr fährt das System runter
30 09 * * * root halt
Wenn man noch einen Ton ausgeben möchte, dann dieses Script unter /usr/local/bin/beep.sh speichern, ausführbar machen und vor dem Herunterfahren starten.
Download: beep.sh
#!/bin/bash
#
# beep for QNAP by Candyman
SOCKET=/var/run/qcontrol.sock
if [ -f $SOCKET ]; then
rm -f $SOCKET
fi
qcontrol -d >/dev/null & disown
sleep 1
pid=$(pidof qcontrol)
qcontrol buzzer long || true
sleep 2
qcontrol buzzer short || true
sleep 2
kill -TERM $pid
rm -f $SOCKET
exit 0
Dann sollte so etwas in die /etc/crontab eingetragen werden.
2. Automatischer PowerOn – Fehlersuche
[ 23.651364] rtc-mv rtc-mv: internal RTC not ticking
[ 23.661739] rtc-s35390a 0-0030: rtc core: registered rtc-s35390a as rtc0
[ 23.861512] rtc-s35390a 0-0030: setting system clock to 2012-06-01 17:35:49 UTC (1338572149)
Hier steht das der interne Taktgeber (RTC-Clock) nicht funktioniert. Wer es genauer wissen möchte, der sollte sich den oberen Link zur englischen Originalseite von BlackGod durchlesen.
rtc_time : 11:04:21
rtc_date : 2012-06-22
24hr : yes
Bei diesem Befehl sieht man das keine Alarminfos zu sehen sind.
3. Vorbereitung Kernel kompilieren
Sourcen und benötigte Software zum erstellen des Kernels downloaden und installieren.
4. Kernel bauen
Bei diesen Befehlen werden die Sourcen entpackt der Patch heruntergeladen und eingespielt.
Download: rtc-s35390a.patch
tar jxvf linux-source-2.6.32.tar.bz2
cd linux-source-2.6.32/
wget -O /root/rtc-s35390a.patch https://www.mehr4u.de/images/scripts/rtc-s35390a.patch
patch drivers/rtc/rtc-s35390a.c /root/rtc-s35390a.patch
make oldconfig
make menuconfig
Nach dem letzten Befehl wird die Kernelkonfiguration gestartet. Hier muß nur noch ein Zusatz zum Kernelname angegeben werden.
Dazu solltet ihr zu folgender Einstellung navigieren General setup –> Local version – append to kernel release –> jetzt tragt ihr einen eigenen Namen ein gefolgt von der entsprechenden Plattform. In meinem Fall habe ich -candyman-kirkwood eingetragen.
Der letzte Teil ist für das Flashen wichtig. Mit dem nächten Befehl geht es los. Der Kernel wird gebaut.
5. Kernel installieren
cat /usr/src/linux-source-2.6.32/arch/arm/boot/zImage > /boot/vmlinuz-2.6.32-candyman-kirkwood
update-initramfs -c -k 2.6.32-candyman-kirkwood
Hier werden die Module installiert, das Kernelimage ins /boot Verzeichnis kopiert und die initrd erzeugt.
Jetzt werden die alten Symlinks gelöscht und neue angelegt.
rm initrd.img
rm vmlinuz
ln -s initrd.img-2.6.32-candyman-kirkwood initrd.img
ln -s vmlinuz-2.6.32-candyman-kirkwood vmlinuz
flash-kernel
Wie sich vermuten läßt wird mit dem letzten Befehl der neue Kernel geflascht. Danach ein reboot und der neue Kernel kann gestartet werden.
Jetzt noch überprüfen ob auch alles geklappt hat.
Linux QNAPTS112 2.6.32-candyman-kirkwood #1 Sun Jun 3 19:00:03 CEST 2012 armv5tel GNU/Linux
Das schlimmste ist geschafft.
5. PowerON Zeit einstellen
Überprüfen der Alarmzeiten mit cat /proc/driver/rtc
rtc_date : 2012-06-22
alrm_time : 05:00:00
alrm_date : 1900-01-**
alarm_IRQ : no
alrm_pending : no
24hr : yes
Jetzt können wir eine PowerOn Zeit angeben zu der das NAS hochfahren soll.
echo `date „+%s“ -d „+5 minutes“` > /sys/class/rtc/rtc0/wakealarm
dmesg|grep -i rtc
Der letzte Befehl ist nur zur Überprüfung der Einstellungen. Nicht nervös machen lasse durch die Abweichungen in der Stundenanzeige. Die Uhr läuft mit UTC Zeit. Deshalb ist es besser immer einen relativen Startzeitpunkt anzugeben. Mein NAS fährt zum Beispiel jeden Morgen um 7Uhr hoch.
Folgender Code wird in die /etc/rc.local eingetragen. Dies wird direkt nach dem Starten ausgeführt.
echo 0 > /sys/class/rtc/rtc0/wakealarm
echo `date „+%s“ -d „+1 day 7:00″` > /sys/class/rtc/rtc0/wakealarm