|
Dimensione: 14390
Commento:
|
← Versione 44 del 02/09/2025 11.06.11 ⇥
Dimensione: 14099
Commento:
|
| Le cancellazioni sono segnalate in questo modo. | Le aggiunte sono segnalate in questo modo. |
| Linea 1: | Linea 1: |
| #format wiki #LANGUAGE it #LANGUAGE it |
|
| Linea 4: | Linea 7: |
| <<Informazioni(forum="http://forum.ubuntu-it.org/viewtopic.php?f=46&t=xxxx"; rilasci="20.04 22.04 24.04")>> | <<Informazioni(forum="http://forum.ubuntu-it.org/viewtopic.php?XXXXXXX"; rilasci="24.04 22.04 20.04")>> |
| Linea 8: | Linea 11: |
| '''!QuickEmu''' è un programma per sistemi GNU/Linux, distribuito con licenza MIT, in grado di creare macchine virtuali tramite '''[[Virtualizzazione/Qemu|Qemu]]''' in maniera estremamente semplice e rapida, concepito per utenti che fanno un uso massivo di sistemi virtualizzati. Di seguito alcune delle principali caratteristiche: * download e avvio di macchine virtuali con pochi comandi da [[AmministrazioneSistema/Terminale|terminale]] * ottimizzazione automatica delle macchine virtuali, senza dover configurare Qemu * supporto a SPICE per condivisione host/guest degli appunti * accelerazione grafica tramite VirGL * supporto a UEFI (con o senza Secure Boot) e BIOS Legacy, * possibilità di salvare le macchine vituali nella '''Home''' o su dispositivi di archiviazione esterni * possibilità di virtualizzare i più disparati sistemi operativi: Windows 10 e 11, le ultime versioni di macOS, tutte le principali distribuzioni GNU/Linux (Arch, Debian, Fedora, Ubuntu, Slackware ecc.), Android x86, FreeBSD, TrueNAS, !OpenIndiana, FreeDOS, Haiku, ReactOS e tanti altri. |
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 uno o più utenti possono interagire con la macchina: fornire input e ricevere output (usando [[AmministrazioneSistema/Terminale|righe di comando]] o anche sessioni grafiche).<<BR>> Il sottosistema '''TTY''' è centrale per GNU/Linux, come anche per i sistemi UNIX in generale. = Concetti fondamentali = == Cenni storici == 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>> 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 compilati da remoto su supporti fisici (spesso schede perforate); poi una volta raccolti, caricati e processati, venivano infine 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>> 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é stamparlo su carta (si pensi al comando `print` in alcuni linguaggi di programmazione). * '''terminale''': rappresenta il termine (l'estremità finale) della connessione fisica fra la macchina e l'operatore.<<BR>> 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.<<BR>> 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 agli utenti di avere sempre almeno un'interfaccia con cui operare.<<BR>> È 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 a problemi. Per Unix fu implementato '''getty''' ('''get tty'''), un programma che gestisce terminali fisici o virtuali per permettere l'accesso multi-utente su sistemi host (per GNU/Linux sono stati implementati l'equivalente '''agetty''' ed altri).<<BR>> Inoltre nei sistemi basati su Unix, TTY è un dispositivo astratto. Può riferirsi ad un dispositivo di input fisico come una porta seriale, oppure a una 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.<<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.<<BR>> Tuttavia per questi aspetti si rimanda agli [[#Ulteriori_risorse|approfondimenti]]. Solitamente i moderni sistemi GNU/Linux offrono fino a sette console virtuali TTY, di cui una riservata all'utilizzo grafico (tradizionalmente '''tty7''' in molte distribuzioni). <<BR>> ||<style="border:none;"><<Immagine(./tty1.png,500,)>>||<style="border:none;">Nell'immagine accanto un esempio di una schermata di schermata di login a riga di comando, in cui viene specificato l'utilizzo del dispositivo/console '''tty1'''.|| <<BR>> = Utilizzo = Da un sistema '''Ubuntu''' desktop è possibile passare ad un'altra console per utilizzare il sistema con la sola riga di comando, senza sessione grafica. Non saranno presenti finestre, ma soltanto una schermata con sfondo scuro dalla quale digitare le istruzioni. A tale scopo è sufficiente premere una combinazione di tasti.<<BR>> Di seguito sono riportate le combinazioni di tasti necessarie per '''Ubuntu''' (versione standard con desktop '''[[AmbienteGrafico/Gnome|GNOME]]'''): ||<tablestyle="width:45%;":35%>'''Combinazione''' ||<:>'''Modalità operativa'''||<:>'''Console virt.'''|| ||<:>'''Ctrl+Alt+F1''' || Schermata di login ('''[[AmbienteGrafico/Gnome|GDM]]''') ||<:> '''tty1''' || ||<:>'''Ctrl+Alt+F2''' || Sessione grafica (desktop) ||<:> '''tty2''' || ||<:>'''Ctrl+Alt+F3''' || Riga di comando ||<:> '''tty3''' || ||<:>'''Ctrl+Alt+F4''' || Riga di comando ||<:> '''tty4''' || ||<:>'''Ctrl+Alt+F5''' || Riga di comando ||<:> '''tty5''' || ||<:>'''Ctrl+Alt+F6''' || Riga di comando ||<:> '''tty6''' || Di seguito sono riportate le combinazioni di tasti tradizionali per accedere alle '''tty''', valide per alcune derivate (es.: '''Xubuntu'''), oppure per versioni precedenti di Ubuntu o anche altre distribuzioni GNU/Linux: ||<tablestyle="width:45%;":35%>'''Combinazione''' ||<:>'''Modalità operativa'''||<:>'''Console virt.'''|| ||<:>'''Ctrl+Alt+F1''' || Riga di comando ||<:> '''tty1''' || ||<:>'''Ctrl+Alt+F2''' || Riga di comando ||<:> '''tty2''' || ||<:>'''Ctrl+Alt+F3''' || Riga di comando ||<:> '''tty3''' || ||<:>'''Ctrl+Alt+F4''' || Riga di comando ||<:> '''tty4''' || ||<:>'''Ctrl+Alt+F5''' || Riga di comando ||<:> '''tty5''' || ||<:>'''Ctrl+Alt+F6''' || Riga di comando ||<:> '''tty6''' || ||<:>'''Ctrl+Alt+F7''' || Sessione grafica (desktop) ||<:> '''tty7''' || Sarà così possibile eseguire il login con il proprio utente, inserire la password e quindi impartire i comandi.<<BR>> Per ritornare alla sessione grafica premere la relativa combinazione di tasti (es: '''Ctrl+Alt+F2''' o '''Ctrl+Alt+F7''').<<BR>> Da notare che, una volta passati da una console di tipo grafico ad una testuale, sarà possibile ritornare poi sulla prima senza che la sessione desktop venga interrotta; non sarà quindi necessario rieseguire il login. {{{#!wiki note La numerazione delle console potrebbe essere differente non soltanto su altri sistemi operativi, su derivate, o su vecchie versioni, ma anche se su Ubuntu sono state eseguite modifiche alle configurazioni. Pertanto, se le combinazioni di tasti sopra riportate non dovessero funzionare, è possibile provare con altri tasti funzione.<<BR>> In alcune tastiere (es.: quelle che integrano funzionalità multimediali) potrebbe essere necessario premere anche il tasto '''Fn''' (es.: '''Fn+Ctrl+Alt+F2''').<<BR>> }}} |
| Linea 20: | Linea 84: |
| Per conoscere tutte le funzionalità e le nuove implementazioni, nonché le istruzioni per i sistemi guest che necessitano di configurazioni particolari (ad esempio macOS o NixOS), consultare la [[https://github.com/quickemu-project/quickemu/wiki/|guida ufficiale]]. }}} = Installazione = Per Ubuntu e derivate sono disponibili dei PPA che permettono l'installazione semplificata di '''!QuickEmu'''. 0. Digitare nel [[AmministrazioneSistema/Terminale|terminale]] il seguente comando:{{{ sudo apt-add-repository ppa:flexiondotorg/quickemu }}} 0. [[AmministrazioneSistema/InstallareProgrammi|Installare]] il pacchetto [[apt://quickemu|quickemu]]. |
Questo metodo può rivelarsi utile in casi di emergenza, come ad esempio malfunzionamenti o blocchi improvvisi della sessione grafica. }}} = Comandi utili = Di seguito una lista di comandi utilizzabili in un qualsiasi [[AmministrazioneSistema/Terminale|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 tramite 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''' (con shell bash) 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.<<BR>> In alternativa, per elencare i soli utenti e le console senza informazioni aggiuntive, digitare:{{{ who }}} {{{#!wiki tip I precedenti comandi potrebbero essere utili per individuare eventuali accessi non autorizzati. }}} = Disabilitare console inutilizzate = {{{#!wiki important Eseguire un backup preventivo 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. Ciò potrebbe talvolta avere dei vantaggi, come ad esempio: * '''Sicurezza''': limitare il numero di console disponibili può restringere le occasioni per accessi non autorizzati. * '''Ridurre l'utilizzo delle risorse''': sebbene il carico di risorse di una o più console virtuali tty inattive possa sembrare trascurabile, ridurne il numero vuol dire meno servizi precaricati all'avvio e/o meno potenziali sessioni aperte. Ciò significa un utilizzo più efficiente delle risorse di sistema, in particolare in ambienti o hardware limitati. * '''Semplificazione''': concentrarsi solo sulle console utilizzate frequentemente (es: tty1, tty2, tty3) potrebbe migliorare l'efficienza operativa. Meno dispositivi TTY vuol dire anche avere meno interfacce attive da gestire e su cui operare, come anche meno utenti da monitorare (es: meno attività amministrative come l'analisi dei log ecc.). Nel seguente esempio verranno disabilitate le console '''tty4''' e '''tty5'''. 0. Aprire con i [[AmministrazioneSistema/PrivilegiDiAmministrazione|privilegi di amministrazione]] e con un [[Ufficio/EditorDiTesto|editor di testo]] il file `/etc/systemd/logind.conf`. 0. Individuare la seguente riga:{{{ #NAutoVTs= }}} 0. Modificarla con:{{{ NAutoVTs=3 }}} 0. Salvare il file. 0. Riavviare il sistema e verificare. |
| Linea 33: | Linea 184: |
| Sono disponibili altri metodi di installazione, fra cui quello tramite file `.deb` scaricabile dalla [[https://github.com/quickemu-project/quickemu/releases|pagina GitHub ufficiale]]. Tuttavia si consiglia di installare dai PPA se si desidera automatizzare la gestione delle dipendenze. }}} = Utilizzo = == Operazioni preliminari == * Per una panoramica generale del programma, digitare in un [[AmministrazioneSistema/Terminale|terminale]] il comando:{{{ quickget -h }}} * Per ottenere una lista dei sistemi operativi disponibili e le loro versioni digitare:{{{ quickget list }}} È possibile esportare la lista in un file digitando:{{{ quickget list > quickget_list.txt }}} oppure:{{{ quickget --list-csv > quickget_list.csv }}} * Per conoscere le versioni disponibili di un sistema operativo è possibile digitare il comando `quickget` omettendo la release. Verrà quindi riportato un messaggio di errore in cui saranno elencate le versioni disponibili, come nei seguenti esempi:{{{ quickget ubuntu ERROR! You must specify a release. - Releases: 14.04 16.04 18.04 20.04 22.04 23.10 daily-live }}} {{{ quickget macos ERROR! You must specify a release. - Releases: high-sierra mojave catalina big-sur monterey ventura }}} == Scaricamento e avvio VM == Viene descritto di seguito, in linea generale, il funzionamento del programma. 0. Per creare una macchina virtuale digitare nel [[AmministrazioneSistema/Terminale|terminale]] un comando che rispetti la seguente sintassi:{{{ quickget [sistema operativo] [versione] [edizione #se disponibile] }}} Verranno creati un file di configurazione della macchina virtuale e, con le impostazioni di default, una cartella nella '''Home''' dell'utente contenente i file relativi alla macchina virtuale stessa. 0. Prendere nota dell'output del comando precedente, necessario ad avviare la macchina virtuale. 0. Per avviare la macchina virtuale digitare un comando che contenga la seguente sintassi:{{{ quickemu --vm [file di configurazione della macchina] }}} Verrà avviata la macchina virtuale in una nuova finestra. Inoltre verranno stampate nel terminale diverse info utili, fra cui: * Host: sistema host e hostname * CPU: modello di processore * CPU VM: numero di socket, core, thread(s) e GB di RAM utilizzata dalla VM * BOOT: se in uso EFI e secureboot * Disk: nome, path e dimensioni della VM * Boot ISO: nome e path del file ISO * Display: informazioni parte grafica (es: SDL, virtio-vga-gl, GL (on), VirGL (on) ) * ssh: info per ssh * Process: nome e PID del processo == Eliminazione macchina virtuale == Per eliminare una macchina virtuale è sufficiente [[AmministrazioneSistema/ComandiBase#rm_e_rmdir|eliminare]] la relativa cartella salvata nella '''Home''' (o in altro percorso). = Esempi di utilizzo di VM = == GNU/Linux == Di seguito un esempio di download di un sistema GNU/Linux con '''quickget''':{{{ quickget debian 10.13.0 lxde }}} L'output sarà simile al seguente:{{{ quickget debian 10.13.0 lxde Downloading Debian 10.13.0 lxde - URL: https://saimei.ftp.acc.umu.se/cdimage/archive/10.13.0-live/amd64/iso-hybrid/debian-live-10.13.0-amd64-lxde.iso ############################################################################################################################################### 100.0% Checking debian-10.13.0-lxde/debian-live-10.13.0-amd64-lxde.iso with sha512sum... Good! Making debian-10.13.0-lxde.conf - Setting debian-10.13.0-lxde.conf executable To start your Debian virtual machine run: quickemu --vm debian-10.13.0-lxde.conf }}} Per avviare la VM sarà sufficente lanciare il comando riportato alla fine dell'output, ossia:{{{ quickemu --vm debian-10.13.0-lxde.conf }}} == Windows == Per scaricare una macchina virtuale Windows è sufficiente digitare un comando simile al seguente:{{{ quickget windows 10 }}} È inoltre possibile specificare il formato regionale (quello di default è l'inglese internazionale) con un'opzione simile alla seguente:{{{ quickget windows 10 "Italian" }}} Al termine del download sarà possibile avviare la macchina con il comando:{{{ quickemu --vm windows-10.conf }}} Il sistema avrà un utente amministratore locale con le seguenti credenziali (in seguito sarà possibile aggiungerne altri, se lo si desidera): * Username: ''Quickemu'' * Password: ''quickemu'' {{{#!wiki tip L'installazione di Windows implementa automaticamente la modalità di installazione ''Unattended'', per saltare diversi passaggi (creazione di account online, richiesta dati di diagnostica, consenso ID annunci ecc.). Inoltre vengono applicate delle patch per VirtIO. }}} == macOS == Per scaricare un sistema macOS digitare un comando simile al seguente:{{{ quickget macos catalina }}} Al termine del download, digitare il comando indicato nell'output del precedente, a esempio:{{{ quickemu --vm macos-catalina.conf }}} Verrà avviata la macchina virtuale e sarà possibile avviare la procedura di installazione (consultare [[https://support.apple.com/it-it/102662|questa pagina]] se necessario). {{{#!wiki tip Per utilizzare il sistema si consiglia un computer host con almeno: CPU 4 core, 8 GB di RAM (di cui 4 per la VM) e 40 GB di spazio libero nel drive. }}} = Funzionalità avanzate = Molte configurazioni aggiuntive sono possibile semplicemente modificando con un [[Ufficio/EditorDiTesto|editor di testo]] il file di configurazione della macchina virtuale (es.: `ubuntu-22.04-desktop.conf`). == SPICE == È possibile utilizzare i driver [[https://en.wikipedia.org/wiki/Simple_Protocol_for_Independent_Computing_Environments|SPICE]] per la macchina virtuale, che permettono di gestire automaticamente fra host e guest appunti e cartella condivisi, trasferimento di file, reindirizzamento dei dispositivi USB e risoluzione automatica dello schermo. 0. Per abilitare questa funzionalità è sufficiente aggiungere `--display spice` al comando `quickemu` come nel seguente esempio:{{{ quickemu --vm ubuntu-22.04.conf --display spice }}} 0. Una volta avviato il sistema guest, a seconda del tipo di sistema eseguire una delle seguenti azioni: * '''Ubuntu:''' [[AmministrazioneSistema/InstallareProgrammi|installare]] i pacchetti [[apt://spice-vdagent|spice-vdagent]] e [[apt://spice-webdavd|spice-webdavd]]. * '''Altri sistemi GNU/Linux:''': installare i pacchetti ''spice-vdagent'' e ''spice-webdavd'' con il gestore pacchetti della distribuzione in uso. * '''Windows:''' installare gli '''SPICE Windows guest tools''' e '''Spice WebDAV daemon''' scaricabili da [[https://www.spice-space.org/download.html|questo link]]. == CPU, RAM e Dischi == Di default, '''Quickemu''' imposterà per la VM un numero di core della CPU e un quantitativo di RAM basato sulle specifiche del computer host. È possibile forzare questo comportamento aggiungendo delle righe nel file di configurazione come nel seguente esempio:{{{ cpu_cores="4" ram="4G" disk_size="32G" }}} === Preallocazione del disco === Un'immagine con valori preallocati può essere inizialmente più grande, ma può migliorare le performance se il disco ha successivamente bisogno di maggiore spazio. I valori permessi sono '''off''' (di default), '''metadata''', '''falloc''' e '''full'''.<<BR>> È possibile impostare questi valori aggiungendo al file di configurazione una riga come nel seguente esempio:{{{ preallocation="metadata" }}} === Floppy disk e CD/DVD-ROM === È possibile assegnare un file di immagine `iso` o `img` salvato nel sistema host, visibile come floppy o disco ottico virtuale per la macchina guest, aggiungendo una o due righe simili alle seguenti nel file di configurazione:{{{ fixed_iso="/percorso/file/immagine.iso" floppy="/percorso/file/floppy.img" }}} == Risoluzione del display == '''Qemu''' assegna sempre la finestra della VM al monitor primario. La risoluzione minima richiesta per la macchina virtuale è di default 1280 x 800. L'impostazione può essere sovrascritta nel file di configurazione, assegnando le opzioni `--width` e `--height` desiderate (larghezza e altezza) come nel seguente esempio:{{{ quickemu --vm ubuntu-22.04-desktop.conf --width 1920 --height 1080 }}} == BIOS e EFI == '''Quickemu''' utilizza come modalità predefinita l'opzione di boot in modalità [[AmministrazioneSistema/Uefi|EFI]].<<BR>> Per usare la modalità BIOS/Legacy/CSM, è sufficiente aggiungere nel file di configurazione della macchina virtuale la seguente riga:{{{ boot="legacy" }}} == TPM == '''Quickemu''' dispone di un [[https://it.wikipedia.org/wiki/Trusted_Platform_Module|modulo TPM]] emulato, abilitato automaticamente nelle VM con Windows 11.<<BR>> Per abilitarlo con altri sistemi è sufficiente aprire con un [[Ufficio/EditorDiTesto|editor di testo]] il file di configurazione della macchina virtuale e aggiungere la seguente riga:{{{ tpm="on" }}} == Bridge di rete == È possibile utilizzare la modalità '''Bridge'''. In questo modo una scheda di rete virtuale fungerà da bridge di rete e alla VM sarà assegnato un indirizzo IP dalla rete locale (che sostituisce quello del computer host). A tal fine inserire nel file di configurazione la riga:{{{ network="br0" }}} Si può inoltre assegnare un indirizzo MAC all'interfaccia di rete della VM (Qemu richiede che il MAC address sia all'interno del range `52:54:00:AB:00:00`/`52:54:00:AB:FF:FF`). Inserire una riga simile alla seguente:{{{ macaddr="52:54:00:AB:51:AE" }}} == Vecchie distribuzioni GNU/Linux == Per utilizzare vecchie distribuzioni GNU/Linux (del 2016 o precedenti) modificare il file di configurazione sostituendo la riga{{{ guest_os="linux"}}} con la seguente:{{{ linux_old="linux" }}} Questo abiliterà i driver '''VMware SVGA''' con un supporto migliore per i vecchi sistemi. == Creazione di un sistema guest GNU/Linux personalizzato == È possibile creare manualmente una macchina virtuale di un sistema operativo GNU/Linux. 0. Scaricare il file `.iso` della distribuzione desiderata. 0. [[AmministrazioneSistema/ComandiBase#touch|Creare]] un file di configurazione con estensione `.conf` (es.: `la-mia-distro.conf`). 0. Con un con un [[Ufficio/EditorDiTesto|editor di testo]] inserire le seguenti righe:{{{ guest_os="linux" disk_img="my-custom-linux/disk.qcow2" iso="percorso/del/file.iso" }}} modificando `percorso/del/file.iso` con il nome effettivo del file. 0. Avviare con '''quickemu''' la macchina virtuale:{{{ quickemu --vm la-mia-distro.conf }}} sostituendo `la-mia-distro.conf` con il nome effettivo del file. Verrà avviata la macchina virtuale e sarà possibile installare il sistema, oltre che eventualmente applicare le configurazioni descritte in precedenza. == Lanciatore di una VM == È possibile creare un'apposita icona di avvio per avviare rapidamente una macchina virtuale creata in precedenza.<<BR>> A tale scopo, con le istruzioni di [[AmbienteGrafico/IconeDiAvvio|questa guida]], creare un file `.desktop` personalizzato che applichi il seguente modello (esempio per Windows 10):{{{ [Desktop Entry] Name=Windows 10 Exec=/home/nome_utente/quickemu/Windows10.conf Type=Application Terminal=false # aprirà solo la finestra senza terminale Comment="Avvia Windows 10 in macchina virtuale con Quickemu" StartupNotify=true Icon=/percorso/dell/icona.png }}} = Interfaccia grafica = '''Quickgui ''' è un progetto separato, scritto con [[https://flutter.dev/|flutter]] per utilizzare '''!QuickEmu''' attraverso una semplice interfaccia grafica. Per Ubuntu viene distribuito tramite PPA.<<BR>> Per installarlo seguire i seguenti passaggi: 0. Digitare nel [[AmministrazioneSistema/Terminale|terminale]] il seguente comando:{{{ sudo add-apt-repository ppa:yannick-mauray/quickgui }}} 0. [[AmministrazioneSistema/InstallareProgrammi|Installare]] il pacchetto [[apt://quickgui|quickgui]]. |
Il parametro `NAutoVTs=X` indica a '''[[AmministrazioneSistema/Systemd|systemd]]''' quanti terminali virtuali (VTs) creare dinamicamente. Non verranno toccati eventuali tty già in uso dal sistema (ad esempio '''tty7''' per l'ambiente grafico). Per maggiori informazioni consultare [[https://www.freedesktop.org/software/systemd/man/latest/logind.conf.html|questa pagina]]. }}} {{{#!wiki important Dopo questa modifica, premendo la combinazione di tasti relativa ad una tty disattivata (es.: '''Ctrl+Alt+F4'''), comparirà una schermata scura con il solo cursore lampeggiante. Premere la combinazione di tasti necessaria per tornare alla console desiderata (es.: '''Ctrl+Alt+F2''' o '''Ctrl+Alt+F7'''). }}} = Ulteriori risorse = |
| Linea 275: | Linea 193: |
| Al termine della procedura sarà possibile [[AmbienteGrafico/AvviareProgrammi|avviare]] il programma. {{{#!wiki note compilare }}} = Ulteriori risorse = * [[https://github.com/quickemu-project/quickemu|Sito del progetto]] * [[https://github.com/quickemu-project/quickemu/wiki/|Wiki ufficiale]] (in inglese) |
* [[https://en.wikipedia.org/wiki/Virtual_console|Pagina enciclopedica]] * [[https://www.linusakesson.net/programming/tty/index.php|The TTY demystified]] (articolo con aspetti storici e tecnici) * [[https://wafatech.sa/blog/linux/linux-security/securing-your-linux-server-disabling-unused-ttys-for-enhanced-safety/|Securing Your Linux Server: Disabling Unused TTYs for Enhanced Safety]] * [[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]] * [[https://linuxhub.it/articles/howto-getty/|howto - usare e comprendere i getty terminals]] |
| Linea 287: | Linea 201: |
| ##CategoryVirtualizzazione | ##CategoryAmministrazione |
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 uno o più utenti possono interagire con la macchina: fornire input e ricevere output (usando righe di comando o anche sessioni grafiche).
Il sottosistema TTY è centrale per GNU/Linux, come anche per 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).
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 compilati da remoto su supporti fisici (spesso schede perforate); poi una volta raccolti, caricati e processati, venivano infine 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é stamparlo su carta (si pensi al comando print in alcuni linguaggi di programmazione).
terminale: rappresenta il termine (l'estremità 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 agli utenti di avere sempre almeno 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 a problemi.
Per Unix fu implementato getty (get tty), un programma che gestisce terminali fisici o virtuali per permettere l'accesso multi-utente su sistemi host (per GNU/Linux sono stati implementati l'equivalente agetty ed altri).
Inoltre nei sistemi basati su Unix, TTY è un dispositivo astratto. Può riferirsi ad un dispositivo di input fisico come una porta seriale, oppure a una 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.
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.
Tuttavia per questi aspetti si rimanda agli approfondimenti.
Solitamente i moderni sistemi GNU/Linux offrono fino a sette console virtuali TTY, di cui una riservata all'utilizzo grafico (tradizionalmente tty7 in molte distribuzioni).
Nell'immagine accanto un esempio di una schermata di schermata di login a riga di comando, in cui viene specificato l'utilizzo del dispositivo/console tty1. |
Utilizzo
Da un sistema Ubuntu desktop è possibile passare ad un'altra console per utilizzare il sistema con la sola riga di comando, senza sessione grafica. Non saranno presenti finestre, ma soltanto una schermata con sfondo scuro dalla quale digitare le istruzioni. A tale scopo è sufficiente premere una combinazione di tasti.
Di seguito sono riportate le combinazioni di tasti necessarie per Ubuntu (versione standard con desktop GNOME):
Combinazione |
Modalità operativa |
Console virt. |
Ctrl+Alt+F1 |
Schermata di login (GDM) |
tty1 |
Ctrl+Alt+F2 |
Sessione grafica (desktop) |
tty2 |
Ctrl+Alt+F3 |
Riga di comando |
tty3 |
Ctrl+Alt+F4 |
Riga di comando |
tty4 |
Ctrl+Alt+F5 |
Riga di comando |
tty5 |
Ctrl+Alt+F6 |
Riga di comando |
tty6 |
Di seguito sono riportate le combinazioni di tasti tradizionali per accedere alle tty, valide per alcune derivate (es.: Xubuntu), oppure per versioni precedenti di Ubuntu o anche altre distribuzioni GNU/Linux:
Combinazione |
Modalità operativa |
Console virt. |
Ctrl+Alt+F1 |
Riga di comando |
tty1 |
Ctrl+Alt+F2 |
Riga di comando |
tty2 |
Ctrl+Alt+F3 |
Riga di comando |
tty3 |
Ctrl+Alt+F4 |
Riga di comando |
tty4 |
Ctrl+Alt+F5 |
Riga di comando |
tty5 |
Ctrl+Alt+F6 |
Riga di comando |
tty6 |
Ctrl+Alt+F7 |
Sessione grafica (desktop) |
tty7 |
Sarà così possibile eseguire il login con il proprio utente, inserire la password e quindi impartire i comandi.
Per ritornare alla sessione grafica premere la relativa combinazione di tasti (es: Ctrl+Alt+F2 o Ctrl+Alt+F7).
Da notare che, una volta passati da una console di tipo grafico ad una testuale, sarà possibile ritornare poi sulla prima senza che la sessione desktop venga interrotta; non sarà quindi necessario rieseguire il login.
La numerazione delle console potrebbe essere differente non soltanto su altri sistemi operativi, su derivate, o su vecchie versioni, ma anche se su Ubuntu sono state eseguite modifiche alle configurazioni. Pertanto, se le combinazioni di tasti sopra riportate non dovessero funzionare, è possibile provare con altri tasti funzione.
In alcune tastiere (es.: quelle che integrano funzionalità multimediali) potrebbe essere necessario premere anche il tasto Fn (es.: Fn+Ctrl+Alt+F2).
Questo metodo può rivelarsi utile in casi di emergenza, come ad esempio malfunzionamenti o blocchi 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 tramite 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 (con shell bash) 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.
In alternativa, per elencare i soli utenti e le console senza informazioni aggiuntive, digitare:who
I precedenti comandi potrebbero essere utili per individuare eventuali accessi non autorizzati.
Disabilitare console inutilizzate
Eseguire un backup preventivo 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. Ciò potrebbe talvolta avere dei vantaggi, come ad esempio:
Sicurezza: limitare il numero di console disponibili può restringere le occasioni per accessi non autorizzati.
Ridurre l'utilizzo delle risorse: sebbene il carico di risorse di una o più console virtuali tty inattive possa sembrare trascurabile, ridurne il numero vuol dire meno servizi precaricati all'avvio e/o meno potenziali sessioni aperte. Ciò significa un utilizzo più efficiente delle risorse di sistema, in particolare in ambienti o hardware limitati.
Semplificazione: concentrarsi solo sulle console utilizzate frequentemente (es: tty1, tty2, tty3) potrebbe migliorare l'efficienza operativa. Meno dispositivi TTY vuol dire anche avere meno interfacce attive da gestire e su cui operare, come anche meno utenti da monitorare (es: meno attività amministrative come l'analisi dei log ecc.).
Nel seguente esempio verranno disabilitate le console tty4 e tty5.
Aprire con i privilegi di amministrazione e con un editor di testo il file /etc/systemd/logind.conf.
Individuare la seguente riga:
#NAutoVTs=
Modificarla con:
NAutoVTs=3
- Salvare il file.
- Riavviare il sistema e verificare.
Il parametro NAutoVTs=X indica a systemd quanti terminali virtuali (VTs) creare dinamicamente. Non verranno toccati eventuali tty già in uso dal sistema (ad esempio tty7 per l'ambiente grafico). Per maggiori informazioni consultare questa pagina.
Dopo questa modifica, premendo la combinazione di tasti relativa ad una tty disattivata (es.: Ctrl+Alt+F4), comparirà una schermata scura con il solo cursore lampeggiante. Premere la combinazione di tasti necessaria per tornare alla console desiderata (es.: Ctrl+Alt+F2 o Ctrl+Alt+F7).
Ulteriori risorse
The TTY demystified (articolo con aspetti storici e tecnici)
Securing Your Linux Server: Disabling Unused TTYs for Enhanced Safety

