In ein länger nicht "geupdatetes" yavdr 0.5-system installierte ich ein Plugin, daraufhin ließ es sich nicht mehr abschalten, da angeblich ACPI fehlte. Da ich den Fehler nicht fand, machte ich mit einer frischen Insatallation weiter.
1. Installation mit yavdr64 0.5.0a.hybrid
2. kopiere aus der alten Yavdr 0.5 Installation nur die Kanalliste und die Konfiguration der Fernbedienung (LIRC).
3. keine weiteren Plugins!
Das System läuft eine Woche problemlos.
4. ich mache ein Backup der Systemdateien auf eine USB-Platte
5. Ich installiere das Burn-Plugin, das eine ganze Reihe von Paketen nachzieht.
Beim Ausschalten per Fernbedienung kommt nun eine Meldung, das ACPI fehlt, der VDR schaltet nicht ab.
In syslog findet sich:
Nov 14 14:24:00 hdvdr vdr: [1080] executing '/usr/lib/vdr/vdr-shutdown.wrapper 1416000480 29040 2 "heute-show~heute-show" 0'
Nov 14 14:24:00 hdvdr vdr-shutdown: executing /usr/share/vdr/shutdown-hooks/S90.acpiwakeup as shell script
Nov 14 14:24:00 hdvdr vdr: [1080] saved setup to /var/lib/vdr/setup.conf Nov 14 14:24:00 hdvdr vdr-addon-acpiwakeup: Setting ACPI alarm time to: 2014-11-14 21:23:00
Nov 14 14:24:00 hdvdr vdr-addon-acpiwakeup: No writeable /proc/acpi/alarm or /sys/class/rtc/rtc0/wakealarm found. ACPI needed!!!
Nov 14 14:24:00 hdvdr vdr-shutdown: Shutdown aborted by /usr/share/vdr/shutdown-hooks/S90.acpiwakeup with exitcode 1
Offensichtlich schlug der Schreibzugriff von /usr/share/vdr/shutdown-hooks/S90.acpiwakeup auf /sys/class/rtc/rtc0/wakealarm wegen fehlender root-Rechte fehl.
root@hdvdr:/var/log# ll /sys/class/rtc/rtc0/wakealarm
-rw-r--r-- 1 root root 4096 Nov 14 14:17 /sys/class/rtc/rtc0/wakealarm
Starte ich manuell mit root rechten /usr/lib/vdr/vdr-shutdown, dann schaltet der VDR ab.
Ein Vergleich der Files in /usr/lib/vdr/ im aktuellen System mit den Files vom Backup (vor der Burn-Installation) zeigt, dass hier neuere Files mit abweichender Grösse eingespielt wurden.
Files nach der Installation von CD:
-rw-r--r-- 1 root root 1732 Sep 27 2012 commands-loader
-rw-r--r-- 1 root root 1732 Dez 8 2012 commands-loader.sh
-rw-r--r-- 1 root root 1952 Sep 27 2012 config-loader
-rw-r--r-- 1 root root 1855 Mär 11 2013 config-loader.sh
-rwsr-s--- 1 root vdr 6088 Mär 11 2013 ctvdrwrapper
-rwxr-xr-x 1 root root 3457 Dez 4 2011 epg2html
-rwxr-xr-x 1 root root 996 Sep 27 2012 mount-loader
-rwxr-xr-x 1 root root 2795 Sep 27 2012 plugin-loader
-rwxr-xr-x 1 root root 27528 Jul 23 22:24 plugin-loader2
-rw-r--r-- 1 root root 4673 Dez 8 2012 plugin-loader.sh
drwxr-xr-x 2 root root 4096 Nov 14 15:11 plugins
-rwxr-xr-x 1 root root 2390 Mär 11 2013 vdr-groups.sh
-rwxr-xr-x 1 vdr vdr 2448 Nov 8 17:20 vdr-recordingaction
-rwxr-xr-x 1 root root 1396 Dez 8 2012 vdr-shutdown
-rwxr-xr-x 1 root root 328 Dez 8 2012 vdr-shutdown-message
-rwsr-s--- 1 root vdr 6088 Mär 11 2013 vdr-shutdown.wrapper
Alles anzeigen
Files nach Burn-Plugin Installation
-rw-r--r-- 1 root root 1732 Sep 27 2012 commands-loader
-rw-r--r-- 1 root root 1732 Dez 8 2012 commands-loader.sh
-rw-r--r-- 1 root root 1952 Sep 27 2012 config-loader
-rw-r--r-- 1 root root 1855 Mär 11 2013 config-loader.sh
-rwsr-s--- 1 root vdr 6088 Mär 11 2013 ctvdrwrapper
-rwxr-xr-x 1 root root 3457 Dez 4 2011 epg2html
-rwxr-xr-x 1 root root 996 Sep 27 2012 mount-loader
-rwxr-xr-x 1 root root 2795 Sep 27 2012 plugin-loader
-rwxr-xr-x 1 root root 27528 Jul 23 22:24 plugin-loader2
-rw-r--r-- 1 root root 4673 Dez 8 2012 plugin-loader.sh
drwxr-xr-x 2 root root 4096 Nov 14 15:11 plugins
-rwxr-xr-x 1 root root 2390 Mär 11 2013 vdr-groups.sh
-rwxr-xr-x 1 vdr vdr 2448 Nov 8 17:20 vdr-recordingaction
-rwxr-xr-x 1 root root 1396 Dez 8 2012 vdr-shutdown
-rwxr-xr-x 1 root root 328 Dez 8 2012 vdr-shutdown-message
-rwsr-s--- 1 root vdr 6088 Mär 11 2013 vdr-shutdown.wrapper
Alles anzeigen
Ich kopiere die alten Files vom Backup zurück in das System und reboote.
Nun lässt sich der VDR wieder per Fernbedienung abschalten.
Vermutlich hat sich was an der Art geändert, mit der vdr-shutdown.wrapper das vdr-shutdown script aufruft, und da get dann wohl setuid verloren ??
Wie lässt sich das Problem sauber beheben, denn er wird ja wohl bei jeder Plugin-Installation wieder auftreten.