Newsgroup: it.comp.os.linux.iniziare
Titolo: Suspend / Se  e' montato smontalo, altrimenti non fare nulla

Ubuntu 10.4 su notebook dell, il suspend non funziona correttamente.
Pare che il problema dipenda dalla gestione della schedina SD, quando
non è montata il  suspend funziona correttamente. Dunque ho creato uno
script di hook in /etc/pm/sleep.d/ inserendo un sync e umount.
#!/bin/bash
case $1 in
    hibernate)
        echo "Hey guy, we are going to suspend to disk!"
        ;;
    suspend)
	echo "Hey guy, we are going to suspend to RAM!"
	sync
        umount -l /dev/mmcblk0p1
	;;
    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
# modificato da 
http://www.linuxquestions.org/questions/linux-general-1/auto-unmount-before-suspend-784178/
A questo punto, però, il problema si verifica se per caso la  SD non
era già montata, perché non c'è nulla da smontare. Quindi credo che mi
servirebbe un'istruzione nello script per dire: se la SD è gia
montata, smontala, ma se non è montata non fare nulla.

Una soluzione sporca e una pulita:
Sporca:
     ...
     suspend)
 	echo "Hey guy, we are going to suspend to RAM!"
 	sync
        umount -l /dev/mmcblk0p1 > /dev/null 2>&1
        exit 0
 	;;
     thaw)
     ...
Pulita:
     ...
     suspend)
 	echo "Hey guy, we are going to suspend to RAM!"
        sync
 	grep -q /dev/mmcblk0p1 /proc/mounts && umount /dev/mmcblk0p1
 	;;
     thaw)
     ...
-- 
Flavio Visentin
Ubuntu in Zulu significa "Non so usare Debian". (cit. CtRiX)



puoi un test su mount
mount|grep /dev/mmcblk0p1
if [ $? ]
....
...
fi

 fi
ahi... sono ignorante... ma che vuole dire quel ?

 ahi... sono ignorante... ma che vuole dire quel ?
man bash
/\?
?      Expands to the exit status of the most recently executed foreground
pipeline.


      ...
Nope, non mi funziano :-(
Per la precisione, funziona se la SD è montata, consentendo il suspend
altrimenti problematico, ma nel caso in cui la SD non sia montata lo
script impedisce il suspend.
Preciso che in sleep.d ci sono anche hook creati dal sistema per
connettere disconnettere la rete.

 connettere disconnettere la rete.
Dopo aver fatto un altro po' di prove, ho notato che:
-Nel secondo  caso, cioè quando la SD non era montata, e si usa lo
script, resta acceso il led del wireless e non va correttamente in
suspend.
-Invece il led si spegne (e il pc va in suspend) quando la SD era
montata e si usa lo script, oppure quando la SD non era montata e non
si usa lo script!

 Nope, non mi funziano :-(
Per essere chiari, funzionano in quanto tali, ma non hanno l'effetto
sperato all'interno dello scriptlet di pm.
Ma forse ho risolto aggiungendo un secondo sync  dopo l'umount. Ora
riesce ad andare in suspend.
Forse è un problema di timing?
Grazie anyway per le risposte!

 Forse č un problema di timing?
No, č un problema di exit code. In effetti c'era un errore.
La linea corretta č:
grep -q /dev/mmcblk0p1 /proc/mounts && umount /dev/mmcblk0p1 || true


 grep -q /dev/mmcblk0p1 /proc/mounts && umount /dev/mmcblk0p1 || true
Hai ragione, così funziona. Thanks!
L'ho poi adattato con l'etichetta di volume al posto del device.
grep -q /media/SD /proc/mounts && umount -l /media/SD || true

[...]
Ora che ho risolto col vostro aiuto il problema di suspend, mi resta
solo da risolvere il problema di resume ;-)
In pratica freeze occasionali sul lockscreen.
Sulla questione ho trovato questa pagina e dovrei provare a metterne
in pratica i consigli,
http://ubuntuforums.org/showthread.php?t=904633
comunque mi chiedevo se non potrei intervenire anche con qualche
comando nell'hook scriptlet nella sezione resume

 comando nell'hook scriptlet nella sezione resume
Per esempio ho trovato, sperando che funzioni anche per il touchpad
del mio dell...
On some laptops the mouse will hang after an otherwise successful
suspend. One way to remedy this is to force a reinit of the PS/2
driver (here i8042) through a hook in /etc/pm/hooks (see hooks)
#!/bin/sh
echo -n "i8042" > /sys/bus/platform/drivers/i8042/unbind
echo -n "i8042" > /sys/bus/platform/drivers/i8042/bind
e anche
http://forum.netbookuser.com/viewtopic.php?id=1015

 echo -n "i8042" > /sys/bus/platform/drivers/i8042/bind
Niente da fare. Ho inserito i comandi nella sezione resume dell'hook,
ma i freeze occasionali sul lockscreen al resume si ripresentano.