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 25.04 25.10
Problemi in questa pagina? Segnalali in questa discussione
Introduzione
È possibile accedere direttamente a un sistema ospite di KVM utilizzando come interfaccia una console seriale. Questo metodo fornisce un accesso a basso livello alla macchina virtuale, utile per il debugging, per accedere a sistemi senza interfaccia di rete funzionante, o per un'alternativa all'accesso tramite SSH o altre connessioni di rete.
L'accesso avviene tramite virsh, l'interfaccia a riga di comando per libvirt.
Configurare una console seriale nel sistema ospite
Per abilitare l'accesso seriale, è necessario configurare sia il sistema ospite che l'host KVM.
Lato Ospite (all'interno della Macchina Virtuale)
Per Ubuntu 18.04 e versioni successive (inclusa la 22.04), systemd gestisce i servizi di console seriale.
Aggiungere una console seriale alla configurazione del kernel GRUB (all'interno della VM). Aprire con un editor di testo e con i privilegi di amministratore il file /etc/default/grub:
sudo nano /etc/default/grub
Trovare la riga GRUB_CMDLINE_LINUX_DEFAULT e GRUB_CMDLINE_LINUX e aggiungere:
console=ttyS0,115200
Salvare e chiudere il file. Aggiornare GRUB (all'interno della VM):
sudo update-grub
Abilitare il servizio getty per la console seriale (all'interno della VM). I sistemi basati su systemd su Ubuntu 18.04+ gestiscono automaticamente i servizi ttyS0.service. Per assicurarsi che sia abilitato, digitando:
sudo systemctl enable serial-getty@ttyS0.service sudo systemctl start serial-getty@ttyS0.service
Se si usano le istruzioni del ttyS0.conf per upstart, come nell'esempio originale, quel metodo è obsoleto per Ubuntu 18.04+ e non dovrebbe essere utilizzato.
- Riavviare la Macchina Virtuale, necessario per applicare le modifiche a GRUB e avviare il servizio getty.
Lato Host (Macchina fisica che esegue KVM)
Assicurarsi che la macchina virtuale abbia un dispositivo seriale configurato nel suo hardware virtuale. Le VM create con virt-manager o virt-install di solito includono un dispositivo seriale per impostazione predefinita.
Per verificare o aggiungere un dispositivo seriale:
Tramite virt-manager (GUI):
Aprire virt-manager e selezionare la VM.
- Cliccare sull'icona "Mostra dettagli hardware" (icona "i").
Cercare "Console Seriale" nell'elenco Hardware. Se non presente, cliccare "Aggiungi hardware" e selezionare "Seriale". Assicurarsi che "Tipo di destinazione" sia pty e "Percorso di origine" sia un dispositivo pseudo-terminale.
Tramite virsh edit (CLI):
Eseguire su un terminale dell'host virsh edit [nome_della_vm].
- Sostituire [nome_della_vm] con il nome effettivo della macchina virtuale.
Assicurarsi che esista una sezione <console> e <serial> simile a questa:
<devices> <serial type='pty'> <target type='isa-serial' port='0'> <model name='isa-serial'/> </target> </serial> <console type='pty'> <target type='serial' port='0'/> </console> <!-- Altri dispositivi... --> </devices>
Salvare e chiudere il file XML.
Configurazione della variabile TERM (opzionale)
La variabile d'ambiente TERM indica il tipo di terminale in uso. Impostarla correttamente può migliorare l'esperienza della console seriale.
Per verificare la variabile TERM nel terminale host/client:
echo $TERM
Per esempio, se si sta eseguendo screen sarà «screen», per byobu sarà «screen-bce», ecc.È anche possibile impostare la variabile temporaneamente quando si è già connessi alla console, con il comando:
export TERM=screen
Si consiglia di utilizzare un tipo di terminale generico e ampiamente supportato come xterm o screen.
Connessione alla console seriale
Connettersi alla sessione qemu:///system. Eseguire il seguente comando in un terminale dell'host:
virsh -c qemu:///system
Si entrerà nella shell interattiva di virsh.Avviare la macchina virtuale (se non già avviata). Nella shell virsh, digitare:
start [nome_della_vm]
- Sostituire [nome_della_vm] con il nome effettivo della macchina virtuale.
Connettersi alla console. Quando la VM sarà avviata, connettersi alla sua console seriale digitando:
console [nome_della_vm]
- Sostituire [nome_della_vm] con il nome effettivo della macchina virtuale.
- Premere "Invio" per arrivare alla richiesta di autenticazione e autenticarsi come di consueto.
L'input per il nome utente è attivo anche se la richiesta di autenticazione non dovesse essere immediatamente visualizzata.
Uscire dalla console seriale di virsh
Utilizzare la combinazione di tasti Ctrl + ].
Risoluzione Problemi
La console si comportarta in modo inatteso (caratteri strani, problemi di visualizzazione)
Controllare che la variabile d'ambiente TERM sia impostata correttamente.
Il terminale taglia la parte superiore della visualizzazione
Impostare la finestra del terminale per avere un'area visualizzata standard (es. 80x24 caratteri).
Ulteriori risorse
Documento originale (Community Ubuntu)