Punto informatico Network

Canali
20080829205743

Come aggiungere console virtuali ad un sistema GNU/Linux

08/01/2010
- A cura di
Linux & Open Source - I terminali virtuali, raggiungibili tramite la pressione combinata di Ctrl+Alt e un tasto funzione, nelle distribuzioni standard arrivano in media fino a sei. Con questo semplice metodo è possibile averne fino a 63.

Tag

Passa qui con il mouse e visualizza le istruzioni per utilizzare i tag!

storia (1) , linux (1) , gnu (1) .

Valutazione

  •  
Voto complessivo 5 calcolato su 116 voti

Se non vi siete mai chiesti che cosa fossero quei file chiamati "ttyN" (con N che va da 0 a 63) nella directory /dev, ora potete imparare come usarli.

Nell'articolo dove ho spiegato come dedicare un terminale ai messaggi del kernel, avete visto come muovervi tra i terminali virtuali di Linux. E vi sarete accorti che, se avete viaggiato fino in fondo, avete sei terminali testuali ed un terminale grafico, che ospita X.

Ma quello che io chiamo "terminale grafico" è un terminale esattamente come tutti gli altri, solo usato in modo un po' diverso, pertanto è un terminale virtuale a tutti gli effetti.

Qualche parola sui terminali virtuali

Le teletypewriter (o teletype) erano terminali "concreti", come delle grosse macchine da scrivere, che erano molto usate fin dall'inizio del ventesimo secolo per spedire e ricevere segnali e notizie. Tra le più conosciute c'erano le Flexowriter, costruite fin dagli anni 20, poi acquistate dalla IBM (International Business Machines Corporation) negli anni 30. Queste macchine, per la loro capacità di trasmettere informazioni tra nodi (peer), tra le loro molte eredità lasciarono il nome, poi contratto in tty, che ora viene usato per identificare un "terminale virtuale".

Per la verità il concetto di "terminale virtuale" (o console virtuale) ha bisogno di una suddivisione. Un "terminale virtuale" è un terminale generico, e può essere sia un terminale locale che un terminale remoto. I terminali locali sono dei terminali che consentono di interagire direttamente con la macchina su cui si sta materialmente lavorando. I terminali remoti, invece, sono terminali (intesi anche come computer veri e propri) separati dalla macchina a cui si è connessi, i cui segnali viaggiano attraverso protocolli di rete (TCP/IP, nel caso di ssh o telnet) o seriali (tramite interfacce seriali come minicom o ckermit).

Linux gestisce i terminali locali grazie a dei nodi chiamati ttyN nella cartella /dev, dove risiedono tutti i file di periferica generati dal gestore predefinito (udev per tutte le distribuzioni moderne). N è un numero intero che generalmente va da 0 a 63. Per rendervi conto dell'importanza di questi piccoli file, vi basti sapere che senza i tty avreste solo delle belle schermate nere con un cursore lampeggiante, senza che voi possiate fare nulla per interagire con il kernel.

Come funziona un terminale virtuale con Linux?

È abbastanza semplice. Nelle distribuzioni più diffuse, il kernel Linux, all'avvio del sistema, passa il controllo ad un programma chiamato init che, tra le altre cose, legge un file chiamato /etc/inittab per vedere che cosa fare e quali terminali rendere disponibili, come e a quale processo. Se aprite /etc/inittab potrete trovare delle righe come questa:

c1:12345:respawn:/sbin/agetty 38400 tty1 linux

La riga contiene più termini, divisi da due punti. Nell'ordine:

  • c1 è l'identificatore della console virtuale (in questo caso, la console 1, che fa riferimento a /dev/tty1, raggiungibile con la combinazione di tasti Ctrl+Alt+F1;
  • 12345 sono i livelli (chiamati in gergo runlevel) in cui la console è attiva. Nelle configurazioni di default la prima console può essere usata come console "di servizio" poiché esiste un runlevel speciale, il runlevel 1, che serve alla manutenzione del sistema, che consente l'accesso solo all'amministratore;
  • respawn è una parola chiave che serve a dire a init che, alla fine dell'esecuzione del programma indicato, esso vada re-eseguito (dall'inglese re-spawn, ri-generare);
  • /sbin/agetty 38400 tty1 linux è il programma, con relative opzioni, da eseguire nella prima console virtuale (tty1), nei runlevel 1, 2, 3, 4 e 5. agetty è un programma che apre un terminale e chiede username e password di accesso, invocando /bin/login per la verifica delle credenziali.

Se le credenziali sono verificate viene invocata la shell di default relativa all'utente che ha effettuato il login (molto spesso è /bin/bash), che consente il dialogo dell'utente con il sistema. Seguendo lo stesso principio si può sostituire ad agetty un programma qualsiasi, come un demone o direttamente X Window System.

Però noi siamo qui per aumentare il numero di terminali disponibili. E non preoccupatevi per i tasti funzione, esistono più modi per balzare da una console all'altra, qualsiasi numero abbia.

A proposito di tty0

I più attenti avranno notato che, nonostante esistano tty che partano da 0, in inittab vengono utilizzati terminali che partono da 1. La spiegazione è molto semplice: /dev/tty0 è la console corrente, ovvero quella dove state scrivendo. Se vi state chiedendo che differenza abbia tty0 rispetto a qualsiasi altra console, raggiungete un terminale testuale (che NON sia in X) e provate a lanciare il seguente comando:

echo hello > /dev/tty0

In QUALSIASI terminale voi siate, vedrete la scritta hello sullo schermo. tty0 è come una specie di "jolly" tra i terminali, e qualsiasi cosa ci mettiate, ovunque siate, verrà mostrata nel terminale in cui la scrivete.

Pagina successiva
Modificare /etc/inittab

 

Segnala ad un amico

Tuo nome Tuo indirizzo e-mail (opzionale)
Invia a:
    Aggiungi indirizzo email
    Testo

    megalab.it: testata telematica quotidiana registrata al Tribunale di Cosenza n. 22/09 del 13.08.2009, editore Master New Media S.r.l.; © Copyright 2017 Master New Media S.r.l. a socio unico - P.I. 02947530784. GRUPPO EDIZIONI MASTER Spa Tutti i diritti sono riservati. Per la pubblicità: Master Advertising

    • Gen. pagina: 0.31 sec.
    •  | Utenti conn.: 93
    •  | Revisione 2.0.1
    •  | Numero query: 21
    •  | Tempo totale query: 0.15