Wiki Ubuntu-it

Indice
Partecipa
FAQ
Wiki Blog
------------------
Ubuntu-it.org
Forum
Chiedi
Chat
Cerca
Planet
  • Pagina non alterabile
  • Informazioni
  • Allegati
  • Differenze per "andreas-xavier/Prova00"
Differenze tra le versioni 23 e 25 (in 2 versioni)
Versione 23 del 29/08/2025 16.55.27
Dimensione: 7981
Commento:
Versione 25 del 30/08/2025 12.12.14
Dimensione: 10828
Commento:
Le cancellazioni sono segnalate in questo modo. Le aggiunte sono segnalate in questo modo.
Linea 14: Linea 14:
Le console virtuali - in termini semplici - non sono altro che dei dispositivi astratti attraverso i quali è possibile interagire con la macchina: fornire input e ricevere output. Il sottosistema TTY è centrale per come è concepito GNU/Linux, o anche i sistemi UNIX in generale. Le console virtuali - in poche parole - non sono altro che dei dispositivi astratti attraverso i quali è possibile interagire con la macchina: fornire input e ricevere output.<<BR>>
Il sottosistema '''TTY''' è centrale per come è concepito GNU/Linux, come anche i sistemi UNIX in generale.

= Concetti fondamentali =
Linea 18: Linea 21:
Per comprendere alcuni concetti e la terminologia, si rendono necessari alcuni approfondimenti di tipo storico.<<BR>>
Il termine TTY fa riferimento alle [[https://it.wikipedia.org/wiki/Telescrivente|telescriventi]] (in inglese ''teleprinter'', ''teletypewriter'' o ''teletype'' abbreviato quindi in ''TTY'').<<BR>>
Infatti i primi sistemi informatici (approssimativamente negli anni '50'70) consistevano di grandi mainframe o computer centrali; non erano dotati di interfacce hardware/software di I/O e gli utenti di solito non vi lavoravano direttamente. I dati venivano caricati da remoto su supporti fisici (spesso schede perforate) e, una volta raccolti e processati, restituiti agli utenti sotto forma di stampe cartacee. Per semplificare il flusso di lavoro, fu pensato collegare i computer a delle telescriventi collegate tramite cablaggio al mainframe centrale. In questo modo si potevano impartire istruzioni direttamente al calcolatore tramite tastiera. Inoltre furono introdotti degli schermi video che non rendevano più necessaria la stampa.<<BR>>
Per comprendere alcuni concetti e la terminologia, sono necessari alcuni approfondimenti di tipo storico.<<BR>>
Il termine '''TTY''' fa riferimento alle [[https://it.wikipedia.org/wiki/Telescrivente|telescriventi]] (in inglese ''teleprinter'', ''teletypewriter'' o ''teletype'' abbreviato quindi in ''TTY'').<<BR>>
Infatti i primi sistemi informatici (approssimativamente negli anni '50 - '70) consistevano di grandi [[https://it.wikipedia.org/wiki/Mainframe|mainframe]] o computer centrali; non erano dotati di interfacce hardware/software di I/O paragonabili a quelle attuali (mouse, tastiere e schermi) e gli utenti di solito non vi lavoravano direttamente. I dati venivano caricati da remoto su supporti fisici (spesso schede perforate) e, una volta raccolti e processati, restituiti agli utenti sotto forma di stampe cartacee.<<BR>>
Per semplificare il flusso di lavoro, fu pensato di collegare i computer a delle telescriventi connesse tramite cablaggio. In questo modo si potevano impartire istruzioni direttamente al calcolatore tramite una tastiera. Furono poi introdotti degli schermi video che non rendevano più necessaria la stampa.<<BR>>
Linea 22: Linea 26:
 * '''prompt''': era un simbolo stampato che fungeva come segnale con cui la telescrivente si notificava di essere pronta alla ricezione.  * '''prompt''': era un simbolo stampato che fungeva come segnale con cui la telescrivente notificava di essere pronta all'utilizzo.
Linea 24: Linea 28:
 * '''stampare a schermo''' (si pensi al comando `print` in alcuni linguaggi di programmazione)
 * '''terminale''': rappresenta il termine finale della connessione fisica fra la macchina e l'operatore.<BR>>
 * '''stampare a schermo''': far comparire un output su un monitor anziché su carta (si pensi al comando `print` in alcuni linguaggi di programmazione)
 * '''terminale''': rappresenta il termine o parte finale della connessione fisica fra la macchina e l'operatore.<<BR>>
Linea 28: Linea 32:
Successivamente, con il progresso tecnologico, le telescriventi furono virtualizzate grazie all'elettronica. Quindi, non si rese più un dispositivo TTY meccanico collegato fisicamente. Le TTY delle moderne distribuzioni GNU/Linux sono virtuali; pur collegandosi a tastiere e schermi, nel ''core'' simulano una classica macchina telescrivente. Successivamente, con il progresso tecnologico, le telescriventi furono virtualizzate grazie all'elettronica. In questo modo non era più necessario un dispositivo TTY meccanico collegato fisicamente. Le TTY delle moderne distribuzioni GNU/Linux sono infatti '''virtuali'''; pur collegandosi a tastiere e schermi, nel loro ''core'' simulano una classica macchina telescrivente.
Linea 30: Linea 34:
== Descrizione e funzionamento == == Descrizione ==
Linea 33: Linea 37:
È infatti disponibile un terminale TTY quando si utilizza un sistema senza GUI oppure quando il sistema non riesce a caricare la sessione grafica in seguito problemi. È infatti disponibile un terminale TTY quando si utilizza un sistema senza GUI (come su sistema Arch, Debian o Ubuntu minimali) oppure quando il sistema non riesce a caricare la sessione grafica in seguito problemi.
Linea 35: Linea 39:
Nei sistemi basati su UNIX TTY è un dispositivo astratto. Può riferirsi ad un dispositivo di input fisico come una porta seriale, oppure a un TTY virtuale che consente agli utenti di interagire con il sistema. Consiste anche di un sottosistema che consente la gestione dei processi, la gestione delle sessioni a livello di kernel tramite driver TTY. Tuttavia per questi aspetti si rimanda agli approfondimenti.<<BR>>
Ogni volta che si avvia un emulatore di terminale o si utilizza qualsiasi tipo di shell nel sistema, questo interagisce con TTY virtuali, detti anche pseudo-TTY o PTY (vedi comando `tty` per trovare il PTY associato).
Nei sistemi basati su UNIX, TTY, è un dispositivo astratto. Può riferirsi ad un dispositivo di input fisico come una porta seriale, oppure a un TTY virtuale che consente agli utenti di interagire con il sistema. Consiste anche di un sottosistema che consente la gestione dei processi, la gestione delle sessioni a livello di kernel tramite driver TTY. Tuttavia per questi aspetti si rimanda agli approfondimenti.<<BR>>
Ogni volta che si avvia un emulatore di terminale o si utilizza qualsiasi tipo di shell nel sistema, questo interagisce con TTY virtuali, detti anche pseudo-TTY o PTY.
Linea 38: Linea 42:
Solitamente i moderni sistemi GNU/Linux rendono disponibili fino a sette console virtuali TTY, di cui una riservata all'utilizzo grafico (tty7 in Ubuntu ed altre distribuzioni). Solitamente i moderni sistemi GNU/Linux rendono disponibili fino a sette console virtuali TTY, di cui una riservata all'utilizzo grafico ('''tty7''' in Ubuntu ed altre distribuzioni).
Linea 42: Linea 46:
È possibile utilizzare il sistema da console con la sola riga di comando, senza sessione grafica. Non saranno presenti finestre, ma soltanto una schermata con sfondo scuro, dal quale digitare le istruzioni. Come detto in precedenza, su un comune sistema Ubuntu desktop sarà in funzione la console '''tty7'''.<<BR>>
È possibile cambiare console per utilizzare il sistema da con la sola riga di comando, senza sessione grafica. Non saranno presenti finestre, ma soltanto una schermata con sfondo scuro, dal quale digitare le istruzioni.
Linea 60: Linea 65:
Digitando in un qualsiasi terminale il comando:{{{ Di seguito una lista di comandi utilizzabili in un qualsiasi [[AmministrazioneSistema/Terminale|terminale]].

 * '''Controllo del dispositivo in uso''': digitare il comando:{{{
Linea 63: Linea 70:
verrà restituito un output simile al seguente:{{{  Verrà restituito un output simile al seguente:{{{
Linea 66: Linea 73:
che indica che è in uso lo pseudo terminale `/dev/pts/0` come dispositivo di imput corrente.  che indica che è in uso lo pseudo terminale `/dev/pts/0` come dispositivo di input corrente.
Linea 68: Linea 75:
È possibile individuare quali utenti stanno utilizzando il sistema e con quale console con il comando:{{{
who
 * '''Versione''': digitare il comando:{{{
tty --version
Linea 71: Linea 78:
L'output sara simile al seguente:{{{
mario tty7 2025-04-20 09:30 (:0)

 * '''Elencare dispositivi tty''': digitare il comando:{{{
ls -l /dev | grep 'tty'
Linea 74: Linea 82:
che indica l'utente '''mario''', collegato a tty7 (sessione desktop) eseguendo il login alle ore 09:30 del 20 aprile 2025. Informazoni aggiuntive con il comando{{{   L'output sarà simile al seguente:{{{
crw-rw-rw- 1 root tty 5, 2 feb 20 12:44 ptmx
crw-rw-rw- 1 root tty 5, 0 feb 20 12:27 tty
crw--w---- 1 root tty 4, 0 feb 20 11:23 tty0
crw--w---- 1 root tty 4, 1 feb 20 12:19 tty1
[...]
crw------- 1 root root 5, 3 feb 20 11:23 ttyprintk
crw-rw---- 1 root dialout 4, 64 feb 20 11:23 ttyS0
crw-rw---- 1 root dialout 4, 65 feb 20 11:23 ttyS1
crw-rw---- 1 root dialout 4, 74 feb 20 11:23 ttyS10
[...]
crw-rw---- 1 root tty 7, 0 feb 20 11:23 vcs
crw-rw---- 1 root tty 7, 1 feb 20 11:23 vcs1
crw-rw---- 1 root tty 7, 2 feb 20 11:23 vcs2
}}}

 * '''Visionare i dispositivi tty attivi''': digitare il comando:{{{
cat /proc/tty/drivers
}}}
 L'output sarà simile al seguente:{{{
cat /proc/tty/drivers
/dev/tty /dev/tty 5 0 system:/dev/tty
/dev/console /dev/console 5 1 system:console
/dev/ptmx /dev/ptmx 5 2 system
/dev/vc/0 /dev/vc/0 4 0 system:vtmaster
serial /dev/ttyS 4 64-95 serial
pty_slave /dev/pts 136 0-1048575 pty:slave
pty_master /dev/ptm 128 0-1048575 pty:master
unknown /dev/tty 4 1-63 console
}}}

 * '''Elencare utenti loggati''': È possibile individuare quali utenti stanno utilizzando il sistema e con quale console con il comando:{{{
Linea 77: Linea 116:
 L'output sarà simile al seguente:{{{
 13:01:28 up 1:37, 2 users, load average: 0,58, 0,86, 0,87
UTENTE TTY DA LOGIN@ IDLE JCPU PCPU WHAT
mario tty2 - 12:19 42:14 0.17s 0.08s -bash
mario tty7 - 11:23 1:37m 6:09 0.07s lightdm --session-
}}}
 che mostra l'utente '''mario''', che ha eseguito il login su un PC desktop sia su '''tty2''' (modalità linea di comando) sia su '''tty7''' (sessione desktop). Mentre il seguente output:{{{
 12:27:59 up 11 days, 1:08, 1 user, load average: 0,21, 0,10, 0,03
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
maria pts/0 192.168.1.44 12:10 3.00s 0.06s 0.02s w
}}}
 mostra l'utente '''maria''' che ha eseguito il login su un server da computer collegato a rete locale.

comando who.
Linea 80: Linea 134:
{{{#!wiki tip {{{#!wiki important
Linea 111: Linea 165:
   * [[https://en.wikipedia.org/wiki/Virtual_console|Pagina enciclopedica]]
Linea 114: Linea 169:
 * [[https://www.linux.it/~rubini/docs/pty/pty.html|Pseudo-terminali]]
 * [[https://docs.kernel.org/driver-api/tty/index.html|Voce TTY su kernel.org]]


Attenzione! Questa è una Pagina di prova. Le informazioni riportate potrebbero essere incomplete, errate e potenzialmente pericolose. Per contribuire alla realizzazione di questa pagina consultare la discussione di riferimento.

Guida verificata con Ubuntu: 22.04 24.04

Problemi in questa pagina? Segnalali in questa discussione

Introduzione

Questa guida spiega cosa sono le console virtuali in Ubuntu e illustra alcuni possibili utilizzi e configurazioni.

Le console virtuali - in poche parole - non sono altro che dei dispositivi astratti attraverso i quali è possibile interagire con la macchina: fornire input e ricevere output.
Il sottosistema TTY è centrale per come è concepito GNU/Linux, come anche i sistemi UNIX in generale.

Concetti fondamentali

Cenni storici

Per comprendere alcuni concetti e la terminologia, sono necessari alcuni approfondimenti di tipo storico.
Il termine TTY fa riferimento alle telescriventi (in inglese teleprinter, teletypewriter o teletype abbreviato quindi in TTY).
Infatti i primi sistemi informatici (approssimativamente negli anni '50 - '70) consistevano di grandi mainframe o computer centrali; non erano dotati di interfacce hardware/software di I/O paragonabili a quelle attuali (mouse, tastiere e schermi) e gli utenti di solito non vi lavoravano direttamente. I dati venivano caricati da remoto su supporti fisici (spesso schede perforate) e, una volta raccolti e processati, restituiti agli utenti sotto forma di stampe cartacee.
Per semplificare il flusso di lavoro, fu pensato di collegare i computer a delle telescriventi connesse tramite cablaggio. In questo modo si potevano impartire istruzioni direttamente al calcolatore tramite una tastiera. Furono poi introdotti degli schermi video che non rendevano più necessaria la stampa.
Nascono così alcuni termini ed espressioni utilizzate ancora oggi, tra cui:

  • prompt: era un simbolo stampato che fungeva come segnale con cui la telescrivente notificava di essere pronta all'utilizzo.

  • console: nel senso di quadro di comando dotato di pulsanti e tasti.

  • stampare a schermo: far comparire un output su un monitor anziché su carta (si pensi al comando print in alcuni linguaggi di programmazione)

  • terminale: rappresenta il termine o parte finale della connessione fisica fra la macchina e l'operatore.

Si arrivò quindi ad un punto in cui fu possibile collegare più terminali ad un calcolatore centrale con sistema multi-utente. Anche nei primi personal computer (come l'Apple I) era presente una TTY all'interno dei circuiti.

Successivamente, con il progresso tecnologico, le telescriventi furono virtualizzate grazie all'elettronica. In questo modo non era più necessario un dispositivo TTY meccanico collegato fisicamente. Le TTY delle moderne distribuzioni GNU/Linux sono infatti virtuali; pur collegandosi a tastiere e schermi, nel loro core simulano una classica macchina telescrivente.

Descrizione

L'implementazione delle TTY in GNU/Linux serve principalmente per permettere all'utente di avere sempre un'interfaccia con cui operare.
È infatti disponibile un terminale TTY quando si utilizza un sistema senza GUI (come su sistema Arch, Debian o Ubuntu minimali) oppure quando il sistema non riesce a caricare la sessione grafica in seguito problemi.

Nei sistemi basati su UNIX, TTY, è un dispositivo astratto. Può riferirsi ad un dispositivo di input fisico come una porta seriale, oppure a un TTY virtuale che consente agli utenti di interagire con il sistema. Consiste anche di un sottosistema che consente la gestione dei processi, la gestione delle sessioni a livello di kernel tramite driver TTY. Tuttavia per questi aspetti si rimanda agli approfondimenti.
Ogni volta che si avvia un emulatore di terminale o si utilizza qualsiasi tipo di shell nel sistema, questo interagisce con TTY virtuali, detti anche pseudo-TTY o PTY.

Solitamente i moderni sistemi GNU/Linux rendono disponibili fino a sette console virtuali TTY, di cui una riservata all'utilizzo grafico (tty7 in Ubuntu ed altre distribuzioni).

Utilizzo

Come detto in precedenza, su un comune sistema Ubuntu desktop sarà in funzione la console tty7.
È possibile cambiare console per utilizzare il sistema da con la sola riga di comando, senza sessione grafica. Non saranno presenti finestre, ma soltanto una schermata con sfondo scuro, dal quale digitare le istruzioni.

A tale scopo premere la combinazione di tasti Ctrl+Alt+F2.
Sarà quindi possibile eseguire il login con il proprio utente, inserire la password e quindi impartire i comandi.
Per ritornare alla sessione grafica premere la combinazione di tasti Ctrl+Alt+F7.

Su Ubuntu per impostazione predefinita le console da tty1 a tty6 sono testuali, mentre la console tty7 è riservata all'uso grafico.
Si noti che passando da una console virtuale testuale (ad esempio tty2) a quella dell'ambiente grafico (tty7), in quest'ultima la sessione desktop non viene interrotta e non è quindi necessario rieseguire il login.
La numerazione delle console potrebbe essere però differente su altri sistemi operativi, oppure se su Ubuntu sono state eseguite modifiche alle configurazioni. Pertanto, se le combinazioni di tasti non dovessero funzionare, è possibile provare con altri tasti funzione (es: Ctrl+Alt+F3, Ctrl+Alt+F4 e così via).

Questo metodo può rivelarsi utile in casi di emergenza, come ad esempio malfunzionamenti improvvisi della sessione grafica.

Comandi utili

Di seguito una lista di comandi utilizzabili in un qualsiasi terminale.

  • Controllo del dispositivo in uso: digitare il comando:

    tty

    Verrà restituito un output simile al seguente:

    /dev/pts/0

    che indica che è in uso lo pseudo terminale /dev/pts/0 come dispositivo di input corrente.

  • Versione: digitare il comando:

    tty --version
  • Elencare dispositivi tty: digitare il comando:

    ls -l /dev | grep 'tty'
    • L'output sarà simile al seguente:

      crw-rw-rw-  1 root tty         5,     2 feb 20 12:44 ptmx
      crw-rw-rw-  1 root tty         5,     0 feb 20 12:27 tty
      crw--w----  1 root tty         4,     0 feb 20 11:23 tty0
      crw--w----  1 root tty         4,     1 feb 20 12:19 tty1
      [...]
      crw-------  1 root root        5,     3 feb 20 11:23 ttyprintk
      crw-rw----  1 root dialout     4,    64 feb 20 11:23 ttyS0
      crw-rw----  1 root dialout     4,    65 feb 20 11:23 ttyS1
      crw-rw----  1 root dialout     4,    74 feb 20 11:23 ttyS10
      [...]
      crw-rw----  1 root tty         7,     0 feb 20 11:23 vcs
      crw-rw----  1 root tty         7,     1 feb 20 11:23 vcs1
      crw-rw----  1 root tty         7,     2 feb 20 11:23 vcs2
  • Visionare i dispositivi tty attivi: digitare il comando:

    cat /proc/tty/drivers

    L'output sarà simile al seguente:

    cat /proc/tty/drivers
    /dev/tty             /dev/tty        5       0 system:/dev/tty
    /dev/console         /dev/console    5       1 system:console
    /dev/ptmx            /dev/ptmx       5       2 system
    /dev/vc/0            /dev/vc/0       4       0 system:vtmaster
    serial               /dev/ttyS       4 64-95 serial
    pty_slave            /dev/pts      136 0-1048575 pty:slave
    pty_master           /dev/ptm      128 0-1048575 pty:master
    unknown              /dev/tty        4 1-63 console
  • Elencare utenti loggati: È possibile individuare quali utenti stanno utilizzando il sistema e con quale console con il comando:

    w

    L'output sarà simile al seguente:

     13:01:28 up  1:37,  2 users,  load average: 0,58, 0,86, 0,87
    UTENTE   TTY      DA               LOGIN@   IDLE   JCPU   PCPU  WHAT
    mario    tty2     -                12:19   42:14   0.17s  0.08s -bash
    mario    tty7     -                11:23    1:37m  6:09   0.07s lightdm --session-

    che mostra l'utente mario, che ha eseguito il login su un PC desktop sia su tty2 (modalità linea di comando) sia su tty7 (sessione desktop). Mentre il seguente output:

     12:27:59 up 11 days,  1:08,  1 user,  load average: 0,21, 0,10, 0,03
    USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
    maria    pts/0    192.168.1.44     12:10    3.00s  0.06s  0.02s w

    mostra l'utente maria che ha eseguito il login su un server da computer collegato a rete locale.

comando who.

Disabilitare console inutilizzate

Eseguire un backup e procedere solo se si è coscienti di cosa comporta l'operazione.

In sistemi server e/o multi-utente potrebbe convenire ridurre il numero delle console virtuali oppure disabilitare quelle non utilizzate. Alcuni vantaggi: Possibili vantaggi:

  • Ridurre la portata potenziale di attacco: ogni TTY inutilizzata rappresenta un possibile vettore di attacco. Un aggressore potrebbe utilizzare queste interfacce per tentare un accesso non autorizzato. Disabilitandole, si chiudono di fatto questi punti di ingresso.
  • Ridurre l'utilizzo delle risorse : sebbene il carico di risorse di un TTY inattivo possa sembrare trascurabile, la riduzione del numero di sessioni aperte può portare a un utilizzo più efficiente delle risorse di sistema, in particolare in ambienti limitati.
  • Monitoraggio del sistema : con meno dispositivi TTY, si semplifica il monitoraggio delle attività degli utenti diventa più semplice (meno attività amministrative come l'analisi dei log ecc.).
  • Comando who o w per identificare numero console attive (es: tty3).
  • Vedere in /etc/systemd/system/getty.target.wants o directory con nome simile.

  • Comando:

    sudo systemctl disable getty@ttyX.service

    come ad esempio per tty3

    sudo systemctl disable getty@tty3.service
  • Per evitare avvio manuale:

    sudo systemctl mask getty@tty3.service
  • Riavviare il sistema e verificare.

Vedere anche

cat /etc/default/console-setup

Ulteriori risore


CategoryHomepage