Potete copiare, diffondere questo HowTo.
Se lo modificate, migliorate (cosa di sicuro molto facile :) ) o lo traducete mi piacerebbe saperlo (vedi Note Finali).
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!).
Se fate i backup dei file che modificate non dovrebbero esserci problemi se qualcosa dovesse andare storto.
Usate quanto descritto a vostro rischio e pericolo.
La soluzione a questo (piccolo) problema è abbastanza semplice: far capire ad init che vogliamo usare CTRL+ALT+END per lo shutdown.
Il problema è che lui capisce l'evento CTRL+ALT+CANC ma non quello che ci serve.
Allora dobbiamo andare un po' più a monte e modifichiamo il file di mappa dei caratteri.
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.
Nella documentazione del kbd c'è un riferimento ad una "curiosa" azione che
può essere associata a QUALSIASI tasto o combinazione di tasto+modificatori:
Spawn_Console
.
Questa azione, a dispetto del nome (a nota nell'autore del kbd), può essere usata per qualsiasi cosa.
gunzip it.map.gz
vi it.map
keycode 107 = Select
ed aggiungiamovi sotto la riga seguente (se già ci fosse la modificheremo):
control alt keycode 107 = Spawn_Console
(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):
keycode 107 = Select
control alt keycode 107 = Spawn_Console
gzip it.map
cp -f it.map.gz
/usr/lib/kbd/keytables/
loadkeys it.map
Occorre dire ad init cosa vogliamo e per farlo editiamo il file /etc/inittab.
cp /etc/inittab /tmp
vi inittab
# Cattura CTRL+ALT+END
ce::kbrequest:/sbin/shutdown -h now
(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).
telinit q
Ora è tutto a posto, salvate tutto quello che avete aperto e date un bel ctrl+alt+end.
Et voilà lo shutdown è servito! Per un ulteriore test, dopo aver rebootato Linux, date ctrl+alt+canc e dovrebbe effettuare il reboot.
Per ricapitolare ora abbiamo disponibili:
che effettua il reboot : ctrl+alt+canc
che effettua lo shutdown : ctlr+alt+end
NOTA: 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).
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).
In ogni caso se avete altre soluzioni siete vivamente invitati ad inviarmele (vedi Note Finali alla fine del documento).
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.
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.
Per esempio se /etc/shutdown.allow contiene
root
pippo
pluto
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.
In caso contrario non avviene nessuno shutdown/reboot.
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 ).
Documenti consigliati, secondo me, per saperne di più sono (i path sono quelli della RedHat 5.0):
Se questo documento vi è stato utile fatemelo sapere : (gnappoTOGLIMI@mail.viplink.it ovviamente dovete togliere TOGLIMI).
Se vi ha procurato fastidi, notti insonni o avete trovato soluzioni migliori avete l'obbligo :) di farmelo sapere.
Se intedete tradurlo (nel rarissimo caso in cui ciò fosse ritenuto opportuno :) ) mi piacerebbe che me lo diceste sempre all'indirizzo email precedente.
Grazie a Te che hai avuto la pazienza di leggere questo HowTo fin qui!