<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <HTML> <HEAD> <TITLE>Il Control+Alt+End Micro HowTo</TITLE> </HEAD> <BODY> <H1>Il Control+Alt+End Micro HowTo</H1> <H2>Galluzzo Gabriele (gnappoTOGLIMI@mail.viplink.it)</H2>v. 0.01 15/9/1998 <P><HR> <EM>Questo documento nasce dall'esigenza di avere la possibilità di effettuare in modo rapido lo shutdown ed il reboot della Linux Box premendo pochi tasti. In particolare, usando una macchina con un utente normale, sarebbe comodo avere la possibilità di effettuare reboot e shutdown con due differenti combinazioni di tasti senza diventare root. Con questo (micro) HowTo cercherò di dare una "pezza" che possa essere utile a quanti, come me, sentono l'esigenza di "uscire rapidamente" da Linux (per rientrarci però subito dopo ;-) ). Non me ne vogliano i guru se dico cose a loro arcinote.</EM> <HR> <H2><A NAME="s1">1. Copyright</A></H2> <P>Potete copiare, diffondere questo HowTo. <P>Se lo modificate, migliorate (cosa di sicuro molto facile :) ) o lo traducete mi piacerebbe saperlo (vedi <A HREF="#NF">Note Finali</A>). <P> <P> <H2><A NAME="s2">2. Nota legale</A></H2> <P>Quanto riportato funziona sul mio sistema RedHat 5.0 ed è frutto di mie personali sperimentazioni, non assicuro che funzioni sul vostro sistema (non sono un guru!). <P>Se fate i backup dei file che modificate non dovrebbero esserci problemi se qualcosa dovesse andare storto. <P>Usate quanto descritto a vostro rischio e pericolo. <P> <H2><A NAME="s3">3. Soluzione !</A></H2> <P>La soluzione a questo (piccolo) problema è abbastanza semplice: far capire ad init che vogliamo usare CTRL+ALT+END per lo shutdown. <P>Il problema è che lui capisce l'evento CTRL+ALT+CANC ma non quello che ci serve. <P>Allora dobbiamo andare un po' più a monte e modifichiamo il file di mappa dei caratteri. <P>Personalmente uso it.map.gz che si trova nella directory /usr/lib/kbd/keytables/ (uso una RedHat 5.0) per cui farò riferimento a questa mappa. <P>Nella documentazione del kbd c'è un riferimento ad una "curiosa" azione che può essere associata a QUALSIASI tasto o combinazione di tasto+modificatori: <CODE>Spawn_Console</CODE>. <P>Questa azione, a dispetto del nome (a nota nell'autore del kbd), può essere usata per qualsiasi cosa. <P> <UL> <LI>Come prima cosa copiamo /usr/lib/kbd/keytables/it.map.gz in /tmp o dovunque volete, serve solo per lavorare tranquilli. </LI> <LI>Poniamoci in /tmp o dove lo avete copiato. </LI> <LI>Scompattiamolo (potreste averlo già in forma decompressa): <CODE>gunzip it.map.gz</CODE></LI> <LI>Editiamolo : <CODE>vi it.map</CODE></LI> <LI>A questo punto cerchiamo la riga con: <CODE>keycode 107 = Select</CODE> ed aggiungiamovi sotto la riga seguente (se già ci fosse la modificheremo): <BLOCKQUOTE><CODE> <PRE> control alt keycode 107 = Spawn_Console </PRE> </CODE></BLOCKQUOTE> (attenzione agli spazi!, non so quanto il kbd sia permaloso al riguardo, per non offenderlo usiamo la sua spaziatura). L'aspetto di it.map dovrebbe essere il seguente (per il tasto End): <BLOCKQUOTE><CODE> <PRE> keycode 107 = Select control alt keycode 107 = Spawn_Console </PRE> </CODE></BLOCKQUOTE> </LI> <LI>Ricompattiamo: <CODE>gzip it.map</CODE></LI> <LI>Ricopiamolo al suo posto: <CODE>cp -f it.map.gz /usr/lib/kbd/keytables/</CODE> </LI> <LI>Carichiamo la nuova mappa: <CODE>loadkeys it.map</CODE></LI> <LI>Proviamo la combinazione ctrl+alt+end ... <EM>non funziona!</EM></LI> </UL> <P>Occorre dire ad init cosa vogliamo e per farlo editiamo il file /etc/inittab. <UL> <LI>Solita copia di sicurezza: <CODE>cp /etc/inittab /tmp</CODE></LI> <LI>Editiamolo: <CODE>vi inittab</CODE></LI> <LI>Inseriamo le righe seguenti: <BLOCKQUOTE><CODE> <PRE> # Cattura CTRL+ALT+END ce::kbrequest:/sbin/shutdown -h now </PRE> </CODE></BLOCKQUOTE> (Nota che c'è all'inizio della seconda riga una coppia di caratteri (ce) arbitrari ma che devono essere comunque unici nell'inittab, potete sostituirla con qualsiasi combinazione volete, inoltre il carattere # indica una riga di commento).<BR> Il punto focale è "kbrequest" che dice ad inittab che c'è una richiesta dalla tastiera e che deve eseguire il programma che gli abbiamo specificato che nel nostro caso è proprio lo shutdown. </LI> <LI>Per far sì che init sappia che è stato cambiato il suo file di configurazione diamo un bel: <BLOCKQUOTE><CODE> <PRE> telinit q </PRE> </CODE></BLOCKQUOTE> </LI> </UL> <P>Ora è tutto a posto, salvate tutto quello che avete aperto e date un bel ctrl+alt+end. <P>Et voilà lo shutdown è servito! Per un ulteriore test, dopo aver rebootato Linux, date ctrl+alt+canc e dovrebbe effettuare il reboot. <P>Per ricapitolare ora abbiamo disponibili: <DL> <DT><B>The Three Finger Salute</B><DD><P>che effettua il reboot : ctrl+alt+canc <DT><B>The Three Finger Salute2</B><DD><P>che effettua lo shutdown : ctlr+alt+end </DL> <P><B>NOTA:</B> Se l'evento kbdrequest è già gestito da init, quanto descritto in questo documento non credo che funzionerà (non l'ho testato ma da quanto ho capito c'è un solo evento kbdrequest gestibile da init). <P>Per accertarsi che questo evento non sia già gestito è sufficiente dare uno sguardo al file inittab e vedere se è già presente un kbrequest (nelle distribuzioni che ho visto non c'è mai un kbrequest già gestito, ma conviene controllare). <P>In ogni caso se avete altre soluzioni siete vivamente invitati ad inviarmele (vedi <A HREF="#NF">Note Finali</A> alla fine del documento). <P> <P> <H2>3.1 Limitazione dello shutdown</H2> <P>Potrebbe darsi il caso che abbiate la Linux Box condivisa con alcune persone di cui non vi fidate troppo e che vogliate essere loggato voi per effettuare lo shutdown. <P>Niente paura! è sufficiente editare il file /etc/shutdown.allow ed inserirvi i nomi di login degli utenti che devono essere loggati per consentire a tutti di dare le sequenze di reboot e shutdown. <P>Per esempio se /etc/shutdown.allow contiene <BLOCKQUOTE><CODE> <PRE> root pippo pluto </PRE> </CODE></BLOCKQUOTE> allora QUALSIASI utente (per es. paperino) può dare le due sequenze: ctrl+alt+end e ctrl+alt+canc SOLO se almeno uno dei tre utenti (root, pluto, pippo) è loggato da console. <P>In caso contrario non avviene nessuno shutdown/reboot. <P> <H2><A NAME="s4">4. Documenti ispiratori e ringraziamenti</A></H2> <P>Ringrazio tutti quelli che supportano, sviluppano, diffondono, criticano, (positivamente) e fanno crescere Linux e ne apprezzano lo "spirito" libero, il Pluto Group, Linus Torvalds & C. :) e Tiziana C. (Titti ;-P ). <P>Documenti consigliati, secondo me, per saperne di più sono (i path sono quelli della RedHat 5.0): <UL> <LI>la documentazione del kbd (/usr/doc/kbd-xxx dove xxx è la vesione)</LI> <LI>il Keyboard HowTo (/usr/doc/HOWTO/Keyboard-and-Console-HOWTO.gz)</LI> <LI>l' Italian-HowTo (/usr/doc/HOWTO/Italian-HOWTO.gz) che mi ha dato la voglia di saperne di più sulla tastiera in Linux. </LI> </UL> <P> <H2><A NAME="NF"></A> <A NAME="s5">5. Note Finali</A></H2> <P>Se questo documento vi è stato utile fatemelo sapere : (gnappoTOGLIMI@mail.viplink.it ovviamente dovete togliere TOGLIMI). <P>Se vi ha procurato fastidi, notti insonni o avete trovato soluzioni migliori avete l'obbligo :) di farmelo sapere. <P>Se intedete tradurlo (nel rarissimo caso in cui ciò fosse ritenuto opportuno :) ) mi piacerebbe che me lo diceste sempre all'indirizzo email precedente. <P>Grazie a Te che hai avuto la pazienza di leggere questo HowTo fin qui! </BODY> </HTML>