Repository 32bit  Forum
Repository 64bit  Wiki

Esecuzione script prima/dopo la sospensione del sistema

Da Slacky.eu.
Versione delle 18:25, 14 giu 2009, autore: Whites11 (Discussione | contributi)

(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)

Autore: whites11 La seguente guida è basata su slackware current del 14/06/2009 ed è un libero adattamento e riassunto della pagina http://wiki.archlinux.org/index.php/Pm-utils

Indice

Scopo

Semplice guida per impostare la propria Slack affinchè esegua degli script definiti da noi appena prima o subito dopo aver eseguito la procedura di sospensione o ibernazione.

Spiegazione

Per realizzare quanto sperato, utilizzeremo il pacchetto pm-utils, normalmente disponibile in un'installazione di slackware. pm-utils è il nuovo framework per la configurazione della sospensione e del ripristino del sistema. E' stato progettato per sostituire i vecchi script di sospensione e quelli forniti dal pacchetto powersave. E' solitamente utilizzato da HAL per eseguire i numerosi hacks necessari per aggirare i bugs dei driver che non sono stati scritti pensando alla possibilità di sospensione

Realizzazione

Senza scendere in ulteriori dettagli, che peraltro non conosco, vi spiego la semplice procedura che ho seguito per eseguire degli script custom. In /etc/pm ci sono 3 cartelle:

$ ls -l /etc/pm/
total 12
drwxr-xr-x 2 root root 4096 2009-06-10 01:32 config.d/
drwxr-xr-x 2 root root 4096 2009-06-10 01:32 power.d/
drwxr-xr-x 2 root root 4096 2009-06-14 11:54 sleep.d/

Dentro ognuna di queste cartelle è possibile inserire dei file di testo conententi le opzioni di configurazioni desiderate oppure gli script che ci occorrono per completare correttamente la sospensione o il ripristino del sistema.

Esempio script

Dentro la cartella sleep.d è possibile creare degli script da eseguirsi al momento della sospensione o del ripristino. Lo schema generale di tali script è il seguente (tratto da http://wiki.archlinux.org/index.php/Pm-utils):

#!/bin/bash
case $1 in
    hibernate)
        echo "Hey guy, we are going to suspend to disk!"
        ;;
    suspend)
        echo "Oh, this time we're doing a suspend to RAM. Cool!"
        ;;
    thaw)
        echo "oh, suspend to disk is over, we are resuming..."
        ;;
    resume)
        echo "hey, the suspend to RAM seems to be over..."
        ;;
    *)  echo "somebody is calling me totally wrong."
        ;;
esac

Come è evidente, il primo parametro passato allo script dal sistema di gestione della sospensione serve per determinare l'azione che sta per essere (oppure è appensa stata) intrapresa. Ad esempio, il seguente script è quello che io utilizzo per riavviare il servizio bluetooth al momento del ripristino del sistema dalla sospensione in ram:

#!/bin/bash
case $1 in
    resume) #ripristino da suspend to ram
        /etc/rc.d/rc.bluetooth stop
        /etc/rc.d/rc.bluetooth start
        ;;
esac

NB gli script vengono eseguiti come utente root, quindi ponete attenzione al codice che utilizzate in quanto potenzialmente dannoso.

Ovviamente è possibile inserire un numero arbitrario di script all'interno di altrettanti file in questa cartella. L'ordine di esecuzione degli script è alfabetico (in ordine crescente in caso di resume, decrescente in caso di suspend), pertanto è comune convenzione utilizzare dei nomi che iniziano con 2 cifre numeriche, per rendere esplicito l'ordine di esecuzione.

Esempio file di configurazione

Non ho provato direttamente questo utilizzo del sistema, invito qualcuno che l'ha fatto a completare questa parte.

Strumenti personali
Namespace

Varianti