Vertracktes Problem: Kernelmodule für Suspend entladen

09/10/2013 - 10:02 von Enno Middelberg | Report spam
Hallo,


ich habe einen MythTV-Rechner unter Linux Mint Debian Edition, den ich
bei Nichtbenutzung gerne schlafen legen möchte (per pm-suspend), so dass
er schneller wieder zur Verfügung steht.

Das Problem ist, dass der Treiber für die DVB-Karte den Suspend nicht
übersteht und es einen Neustart erfordert, um die Karte wieder nutzen zu
können. Die Idee ist nun, den Treiber zu entladen, den Rechner schlafen
zu legen und nach dem Aufwachen das Modul wieder zu laden.

Ich kann das Modul aber nur dann entladen, wenn es nicht genutzt wird.
Das MythTV-Backend aber ist ein Service, der immer làuft und das Modul
nutzt. Ich muss also erst den Service beenden, um das Modul zu entladen,
und dann nach dem Aufwachen das ganze in umgekehrter Reihenfolge wieder
anwerfen. Manuell geht das auch.

Soweit so einfach, nun zum Problem:

Das MythTV-Backend entscheidet, wann es nicht mehr genutzt wird und gibt
dann das Kommando zum Suspend; es ruft also pm-suspend auf. Für
pm-suspend habe ich ein Skript geschrieben
(/etc/pm/sleep.d/67_stop_mythtv_rmmod_ddbridge), das das Modul entladen
soll. Das geht aber nicht, weil das Modul ja noch vom Backend genutzt
wird, und so wartet das Skript, bis das Backend beendet wird, und das
Backend wartet darauf, dass das Skript beendet ist.


Einige User von Ubuntu scheinen das Problem in den Griff bekommen zu
haben, weil sie Upstart nutzen und nicht $DAS_WAS_ICH_HABE, siehe zB
http://www.mythtv.org/wiki/User:Lwoggardner#.2Fetc.2Fpm.2Fsleep.d.2F50_mythtv


Gibt es hier vielleicht eine schlaue Idee, wie ich das lösen könnte?


Anfragen in Foren und Mailingliste waren bisher nicht von Erfolg gekrönt.


Viele Grüße,

Enno
 

Lesen sie die antworten

#1 Ole Jansen
09/10/2013 - 14:16 | Warnen spam
Am 09.10.2013 10:02, schrieb Enno Middelberg:

Soweit so einfach, nun zum Problem:

Das MythTV-Backend entscheidet, wann es nicht mehr genutzt wird und gibt
dann das Kommando zum Suspend; es ruft also pm-suspend auf. Für
pm-suspend habe ich ein Skript geschrieben
(/etc/pm/sleep.d/67_stop_mythtv_rmmod_ddbridge), das das Modul entladen
soll. Das geht aber nicht, weil das Modul ja noch vom Backend genutzt
wird, und so wartet das Skript, bis das Backend beendet wird, und das
Backend wartet darauf, dass das Skript beendet ist.




Ein script schreiben, das in einem Loop wiederholend
versucht den Treiber zu entladen und bei Erfolg
den Rechner Schlafen schickt und sich damit beendet.

Das Script, wie ein Daemon aufrufen (So oder so àhnlich?)

nohup ./myscript 0<&- &>/dev/null &

O.J.

Ähnliche fragen