#format wiki
#LANGUAGE it
<
>
<>
<>
<>
= 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 [[http://linux.die.net/man/1/virsh|virsh]], l'interfaccia a [[AmministrazioneSistema/Terminale|riga di comando]] per [[http://libvirt.org/|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), [[AmministrazioneSistema/Systemd|systemd]] gestisce i servizi di console seriale.
0. Aggiungere una console seriale alla configurazione del kernel GRUB (all'interno della VM). Aprire con un [[Ufficio/EditorDiTesto|editor di testo]] e con i [[AmministrazioneSistema/PrivilegiDiAmministrazione/Sudo|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
}}}
0. Abilitare il servizio `getty` per la console seriale (all'interno della VM). I sistemi basati su [[AmministrazioneSistema/Systemd|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
}}}
{{{#!wiki note
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.
}}}
0. 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)''':
0. Aprire `virt-manager` e selezionare la VM.
0. Cliccare sull'icona "Mostra dettagli hardware" (icona "i").
0. 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)''':
0. Eseguire su un [[AmministrazioneSistema/Terminale|terminale]] dell'host `virsh edit [nome_della_vm]`.
{{{#!wiki note
Sostituire [nome_della_vm] con il nome effettivo della macchina virtuale.
}}}
0. Assicurarsi che esista una sezione e simile a questa:{{{
}}} 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 =
0. Connettersi alla sessione qemu:///system. Eseguire il seguente comando in un [[AmministrazioneSisteam|terminale]] dell'host:{{{
virsh -c qemu:///system
}}} Si entrerà nella shell interattiva di virsh.
0. Avviare la macchina virtuale (se non già avviata). Nella shell virsh, digitare:{{{
start [nome_della_vm]
}}}
{{{#!wiki note
Sostituire [nome_della_vm] con il nome effettivo della macchina virtuale.
}}}
0. Connettersi alla console. Quando la VM sarà avviata, connettersi alla sua console seriale digitando:{{{
console [nome_della_vm]
}}}
{{{#!wiki note
Sostituire [nome_della_vm] con il nome effettivo della macchina virtuale.
}}}
0. Premere "Invio" per arrivare alla richiesta di autenticazione e autenticarsi come di consueto.
{{{#!wiki important
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 [[AmministrazioneSistema/Terminale|terminale]] per avere un'area visualizzata standard (es. 80x24 caratteri).
= Ulteriori risorse =
* [[https://help.ubuntu.com/community/KVM/Access|Documento originale]] (Community Ubuntu)
* [[https://libvirt.org/|Sito ufficiale di Libvirt]]
* [[https://wiki.ubuntu.com/Kernel/SerialConsole|Guida alla console seriale su Ubuntu (pagina generica)]]
----
##CategoryVirtualizzazione
CategoryHomepage CategoryNuoviDocumenti