Ripristino opzioni spegnimento KDE 4

Aprile 14, 2008 at 2:48 pm (Linux) (, , , , , , )

Qualche settimana fa ho deciso di installare su di un HD esterno (USB), una distribuzione Linux in modo da poter portar sempre dietro il mio sistema . Dopo avere installato Kubuntu 7.10, ho pensato bene di “upgradare” KDE alla release 4.0, e di aggiungere il famoso Compiz per poter ruotare i desktop su di un cubo. Tutto è andato bene tranne che per un piccolo particolare:

Le opzioni di spegnimento sono sparite

o meglio, mi è possibile selezionare solo il Log Out….

Ho cominciato quindi a navigare la rete in cerca di qualche dritta, e dopo molti link esplorati, sono arrivato alla conclusione che il problema ( almeno nel mio caso ) è causato proprio da Compiz.

Il fix che sto per descrivere è stato provato su KUBUNTU 7.10 con KDE4 (KDM-KDE4).

Perchè sono sparite le opzioni?

Mettendo insieme alcune informazioni prese dalla rete, e spulciando un po il sistema, provo ora a spiegarvi quello che ho capito.

La scomparsa delle opzioni di spegnimento, è dovuta ad un problema autorizzativo del server X per il display sul quale è stato lanciato.
Quando viene avviata una sessione del server X, infatti, viene eseguito lo script

/usr/share/xserver-xlg/Xgl-session

il quale si preoccupa, tra le varie cose, di individuare il primo display libero sul quale lanciare il server grafico, e sul quale “clonare” le autorizzazioni .


# Find an unused DISPLAY by searching the lockfiles
find_free_display()
{
if [ ! -f /tmp/.X$1-lock ] ; then
return $1
fi
find_free_display $(($1 + 1))
}

Per individuare il display libero, lo script controlla nella cartella /tmp/, l’esistenza di file di lock :

/tmp/X*-lock

dove * indica il numero del display. Individuato il display libero, lo script clona le autorizzazioni.

Anomalia

Appena viene mostrata la schermata di accesso, nella cartella /tmp/ esiste il file di lock solo per il dispay 0:

/tmp/X0-lock

Inseriti utente e password, all’avvio della sessione di KDE4, nella cartella /tmp/ esiste anche il lock per il display 1

/tmp/X0-lock
/tmp/X1-lock

Quindi lo script /usr/share/xserver-xlg/Xgl-session, ha probabilmente clonato erroneamente i permessi per il server X sul display > 0 (forse 1 o 2): questo causa la sparizione delle opzioni di spegnimento.

Correzione

L’errore vero e proprio è quindi causato, credo, da un’errata gestione dei file di lock, cercherò di capire il perchè; ma per il momento ho risolto il problema modificando lo script

/usr/share/xserver-xlg/Xgl-session

nel quale viene valorizzata la variabile XGL_DISPLAY con l’esito della ricerca del display libero. Per far si che le autorizzazioni di X vengano clonate correttamente sul display 0, ho sostituito la valorizzazione

XGL_DISPLAY=”:$?”

come segue

XGL_DISPLAY=”:0″

e dopo aver riavviato il server grafico, sono apparse di nuovo le opzioni di spegnimento :-).

Trucco prima di modificare

Prima di modificare lo script si puo verificare se la soluzione corregge il problema, creando dei link simbolici (soluzione temporanea poichè al riavvio successivo, saranno cancellati automaticamente!!!) come segue:

sudo ln -s /var/run/xdmctl/xdmctl-:0 /var/run/xdmctl/xdmctl-:1
sudo ln -s /var/run/xdmctl/dmctl-:0 /var/run/xdmctl/dmctl-:1

Provare a disconnettersi; se ci sono le opzioni di spegnimento, questa soluzione correggerà il vostro problema, altrimenti …. ciccia…..

 

Permalink Nessun Commento