Capitolo successivo Capitolo precedente Indice

19. Gestione del terminale

Il terminale, in qualunque forma esso sia (console, terminale remoto, applicazione a finestra all'interno di X Window System) è il mezzo normale di comunicazione tra l'utente e il sistema. Senza di esso non ci sarebbe alcuna possibilità di avviare nuovi processi e di conseguenza, nemmeno di poter compiere alcuna attività.

Per questo, l'attivazione di un programma per la gestione del terminale è l'ultima fase di una procedura di inizializzazione ed è quella che precede immediatamente il login, cioè il sistema di riconoscimento dell'utente che si accinge ad utilizzare il sistema.

19.1 Programmi getty

Il programma di gestione del terminale è quello che consente di collegarsi con il sistema operativo e di poter interagire con questo. Quello originariamente utilizzato per questo scopo è getty, ma quasi tutte le distribuzioni Linux preferiscono utilizzare programmi alternativi, come agetty(1), mingetty(8) e mgetty(8).

# getty

Si tratta del programma che attiva la gestione della console o del terminale. Questa è la versione normale.

Vedere getty(1).

# agetty

agetty [<opzioni>] <baud-rate>[,... ] <porta> [variabile-term]

Si tratta di uno di quei programmi che attivano la gestione della console o del terminale. In pratica, è una di quelle versioni alternative al normale getty.

agetty apre una connessione con un terminale ed esegue il comando /bin/login che si occupa di richiedere il login, cioè il nome identificativo dell'utente, e la password. Di solito, agetty viene avviato direttamente da init durante il processo di inizializzazione del sistema.

Argomenti

<porta>

Si tratta del nome del file di dispositivo che identifica il terminale da utilizzare. È riferito alla directory /dev/, quindi, per esempio, tty1 si riferisce al file di dispositivo /dev/tty1.

<baud-rate>

È un elenco, separato da virgole, di una o più velocità di trasmissione espresse in baud. Ogni volta che agetty riceve un codice BREAK, seleziona la velocità successiva nell'elenco. Dopo l'ultima, riprende dalla prima.

Di solito, si preferisce indicare le velocità in ordine decrescente.

<variabile-term>

L'ultimo argomento può essere il valore da assegnare alla variabile TERM che poi viene ereditata da login e dalla shell.

Alcune opzioni

-h

Abilita il controllo di flusso hardware (RTS/CTS).

-i

Non visualizza il contenuto del file /etc/issue (e di nessun altro equivalente) prima di emettere l'invito al login. Ciò può essere utile nel caso in cui, per motivi tecnici, sia preferibile evitare di inviare troppi dati prima della richiesta di login.

-f <file>

Permette di indicare un nome diverso da quello predefinito per il file issue, cioè quello usato per emettere un messaggio introduttivo.

-I <stringa-di-inizializzazione>

Permette di inviare al terminale, o al modem, una stringa di inizializzazione, prima di qualunque altro dato. Per indicare caratteri speciali non stampabili, si può usare la forma ottale di tre cifre numeriche precedute da una barra obliqua inversa (\).

-l <programma-di-login>

Permette di indicare un programma di login diverso da quello predefinito: /bin/login.

-m

Fa in modo che getty tenti di determinare la velocità da utilizzare dal messaggio di stato CONNECT dei modem compatibili Hayes.

-n

Fa in modo che non venga richiesto il login. Può avere senso questa modalità se si utilizza anche l'opzione -l per accedere al sistema in modo diverso.

-t <tempo-massimo>

Permette di definire un tempo massimo di attesa, espresso in secondi. Se il login non viene effettuato entro il tempo previsto, si interrompe la comunicazione. Di solito si utilizza questa opzione solo per le connessioni remote attraverso l'uso del modem.

-L

Specifica in modo esplicito che si tratta di una linea locale, senza che ci sia quindi la necessità di individuare la presenza di una portante. Può essere utile, se si utilizza una linea seriale locale che non dispone del segnale di portante.

-w

Attente di ricevere dall'utente o dal modem un segnale di <CR> o <LF>, prima di inviare il contenuto del file issue e la richiesta di login. L'uso di questa opzione è molto importante se si utilizza anche l'opzione -I.

/etc/issue

Il file /etc/issue viene usato per emettere un messaggio introduttivo prima della richiesta del login, da parte del programma getty o di un suo equivalente.

Può utilizzare alcuni codici di escape per ottenere effetti particolari. Questi codici dipendono dall'interpretazione del programma getty che li utilizza. In particolare, l'elenco della tabella (seguente) è adatto sia a agetty che a mingetty, mentre quello della tabella (seguente) è adatto solo a getty.


Codice Descrizione
\b Inserisce la velocità in baud della linea utilizzata.
\d Inserisce la data.
\s Inserisce il nome del sistema operativo.
\l Inserisce il nome della linea di terminale utilizzata.
\m Inserisce il nome dell'architettura della macchina.
\n Inserisce il nome del computer: hostname.
\o Inserisce il nome di dominio del computer.
\r Inserisce il numero di rilascio del sistema operativo.
\t Inserisce l'orario.
\u Inserisce il numero di utenti connessi.
\U Come \u, ma aggiunge la parola ``user'' o ``users''.
\v Inserisce la versione del sistema operativo.
Elenco dei codici di escape utilizzabili all'interno del file /etc/issue quando si utilizzano i programmi agetty e mingetty.


Codice Descrizione
\\ Inserisce la barra inclinata rovescia (\).
\b Inserisce il codice <BS> (backspace).
\c Alla fine di una stringa previene l'inserimento di una nuova riga.
\f Inserisce il codice <FF> (formfeed).
\n Inserisce il codice <LF> (linefeed).
\r Inserisce il codice <CR> (carriage return).
\s Inserisce uno spazio singolo (<SP>).
\t Inserisce una tabulazione (<HT>).
\n Inserisce il carattere corrispondente al codice decimale n.
\0m Inserisce il carattere corrispondente al codice ottale m.
\0xh Inserisce il carattere corrispondente al codice esadecimale h.
\ Alla fine di una riga rappresenta la continuazione su quella successiva.
\@ Inserisce un simbolo at (@).
@@ Inserisce un simbolo at (@).
@b Inserisce la velocità in baud della linea utilizzata.
@d Inserisce la data.
@l Inserisce il nome della linea di terminale utilizzata.
@s Inserisce il nome del nodo di sistema.
@t Inserisce l'orario.
@u Inserisce il numero di utenti connessi.
@v Inserisce la versione.
Elenco dei codici di escape e dei parametri utilizzabili all'interno del file /etc/issue quando si utilizza il programma getty.

/var/run/utmp

Il file /var/run/utmp viene gestito dai programmi che controllano l'accesso al sistema: in particolare dai programmi getty. Viene descritto nella sezione utmp.

19.2 Configurazione del terminale

Le caratteristiche dei terminali possono essere molto diverse e questo è il principale problema che si pone di fronte alla ricerca verso una standardizzazione nel comportamento dei programmi per i sistemi Unix.

$ stty

stty [<opzioni> | <configurazione>]

stty permette di modificare le caratteristiche della connessione del terminale al sistema. Se viene avviato senza argomenti, visualizza le informazioni salienti della connessione. Gli argomenti della configurazione sono delle parole chiave che possono apparire precedute o meno dal trattino che di solito si usa per le opzioni: se non si usa il trattino, la parola chiave viene intesa come attivazione di qualcosa, con il trattino si intende la disattivazione della stessa cosa.

Il motivo più comune per utilizzare questo programma è quello di conoscere le combinazioni di tasti che si possono utilizzare per generare dei segnali particolari. Utilizzando stty con l'opzione -a si ottiene la configurazione corrente.

$ stty -a

Per esempio:

speed 38400 baud; rows 25; columns 80; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W;
lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon ixoff
-iuclc -ixany -imaxbel
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon -iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
-echoctl echoke

indica in particolare che il carattere intr (interrupt) viene generato con la combinazione [Ctrl+c]; il carattere eof (end of file) viene generato con la combinazione [Ctrl+d]; il carattere susp (suspend) viene generato con la combinazione [Ctrl+z].

Vedere info stty oppure stty(1).

 

1997.10.26 - Scritto da Daniele Giacomini   daniele@calion.com   (vedi copyright: Appunti Linux).


Capitolo successivo Capitolo precedente Indice