domenica 24 maggio 2009

Ubuntu 9.04 64 bit problema power-off : Ecco una soluzione!

Sembra che molti utenti, me compreso,  abbiano incontrato problemi di spegnimento del computer con la release a 64 bit della Ubuntu 9.04.
Il problema sembra essere causato dal modulo del kernel che si occupa della gestione della scheda di rete WiFi, in particolare il modulo iwl3945.
Ho risolto il problema con un piccolo script che scarica il modulo prima dello spegnimento.
E' possibile utilizzare lo script nel modo seguente da terminale:

masian@Ariete:~$shutdown.sh password

la stringa password deve essere sostituita con quella del vostro utente.

Potete anche creare sulla barra delle applicazioni del DeskTop un lanciatore di applicazioni personalizzato dove inserire il comando evitando cosi la noiosa operazione a riga di comando.


Una volta scaricato lo script è importante renderlo eseguibile con il comando (da terminale)  : chmod 755  shutdown.sh oppure
da Nautilus con il tasto destro del mouse cliccare su Proprietà->Permessi   e spuntare l'opzione "Consentire l'esecuzione del file come programma".


Lo script può essere scaricato dal mio dominio www.messaggiero.it con il seguente link: shutdown.sh

13 commenti:

Elis ha detto...

ma ogni volta che spegni il computer devi lanciare quello script?

il MessaGGiero ha detto...

In pratica lo script deve essere lanciato al posto dell'Arresta sul bottone in alto a destra.
Per evitare di lanciarlo a riga di comando, come ho già detto, puooi creare sulla barra delle applicazioni del DeskTop un lanciatore di applicazioni personalizzato dove inserire il comando evitando cosi la noiosa operazione a riga di comando.
Il comando da inserire nel campo "Comando" è lo stesso di quello a riga di terminale (shutdown.sh passwd).
Ovviamente, nel lanciatore devi selezionare il path dove hai posizionato lo script.

Elis ha detto...

Cmq sembra che basti anche spegnere il wifi col pulsantino (se c'è) prima di arrestare il sistema...

il MessaGGiero ha detto...

Certamente, però la cosa risulta essere un pò scocciante.
Dal mio punto di vista sarebbe più comodo crearsi il lanciantore automatico allo script senza preoccuparsi di altro.
Comunque ognuno può fare come meglio gli conviene l'importante che almeno c'è per il momento una soluziona aspettando che il bug venga risolto.

spizzio ha detto...

ciao! anche io riscontro questo problema... qualche volta per non alterarmi do da terminale poweroff -h now ma sappiamo tutti che non è la soluzione migliore, affatto :S
ora provo con questo script... ti farò sapere :)
intanto grazie, a presto!

bonzo ha detto...

Ciao! Ho scaricato lo script ma quando lo lancio mi dice questo:
ERROR: Module iwl3945 does not exist in /proc/modules

bonzo ha detto...

Ciao! Ho tolto laparte si istruzione:
&& sudo rmmod iwl3945 e adesso funziona daterminale.
Ora c'è un'altro problema. Quando lo eseguo con il lanciatore che ho creato, non mi da il tempo fisico d'inserire la password. Si apre e si chiude la shell troppo velocemente.

il MessaGGiero ha detto...

Questo è il contenuto della shell:

#!/bin/sh
### BEGIN INIT INFO
# Autore: Massimo Iannuzzi (www.messaggiero.it) email: max.iannuzzi@gmail.com
# realizzato in data 24-maggio-2009
#
# Descrizione: Questa shell risolve il problema del power-off
#
### END INIT INFO
echo $1 |sudo -S ifconfig wlan0 down && sudo rmmod iwl3945 && sudo init 0

Per prima cosa occorre sostituire (non eliminare) il comando evidenziato in grassetto:sudo rmmod iwl3945
con sudo rmmod TUO-MODULO dove TUO-MODULO è il driver caricato dalla dal kernel per la rua scheda di rete wireless.

Quando crei il lanciaore ba inseri nel comando di lancio una cosa del genere:

/tuo-path/shutdown.sh tua-password

quindi:
/tuo-path : va sostituito con il path assoluto dove hai posto la shell (ricirdati di dare i diritti di esecuzione alla shell)
tua-password : va sostituitda dalla password del tuo utente.

Tutto dovrebbe partire in automatico senza chiedere nulla.

bonzo ha detto...
Questo commento è stato eliminato dall'autore.
bonzo ha detto...

Ok! Ho sostituito il modulo con iwlagn e funziona anche così.
Per quanto riguarda la password, so di poterla mettere in coda al comando, ma non mi piace il fatto di doverla lasciare in chiaro in qualsiasi modo.
Potrebbe non essere il massimo della sicurezza. Che ne pensi?
Inoltre, sempre che non abusi della tua pazienza, vorrei chiederti se fosse possibile creare il comando di riavvio sostituendo init 0 con qualcos'altro.

il MessaGGiero ha detto...

Sulla sicurezza non sarei tanto paranoico, se uno ha accesso fisico alla tua macchina vuol dire che il problema della password non è più cosi tanto importante.
Comunque, se al pannello aggiungi un lanciatore di applicazioni personalizzato e come tipo scegli "Applicazione da termiale" potresti riscrivere la shell dividendo i comandi su due righe nel modo seguente:

sudo ifconfig wlan0 down
sudo rmmod iwlagn && sudo init 0

In questo modo la prima riga interromperebbe momentaneamente l'esecuzione chiedendoti la passwd e poi eseguirebbe senza problemi anche la seconda istruzione.

Per il riavvio puoi creare una nuova shell, esempio : reboot.sh inserendo al suo interno le seguenti righe:

sudo ifconfig wlan0 down
sudo rmmod iwlagn && sudo reboot

(in pratica è lo stesso contenuto della shutdown.sh tranne l'istruzione reboot)

bonzo ha detto...

Benissimo. Così va proprio bene.
Per il reboot ho provato init 6 e funziona ugualmente.
Ti ringrazio.

Massimo ha detto...
Questo commento è stato eliminato dall'autore.