Azure virtual machine serial console: troubleshooting per Windows e per Linux

La virtual machine serial console permette di poter accedere, direttamente dal portale di Azure, ad una console di comandi testuale sia in macchine Windows che in macchine Linux.

La connessione seriale usa la porta COM1 della macchina virtuale e permette l’accesso alla VM indipendentemente dalla rete a cui la VM è connessa e in qualsiasi stato il sistema operativo si trovi. L’accesso è consentito però solo dal portale di Azure.

Per abilitare la funzionalità è necessario che le VM abbiano la funzionalità di Boot diagnostics abilitata. La diagnostica di avvio funziona in maniera diversa a seconda che si tratti di una macchina Windows o Linux, perciò se siete interessati al suo funzionamento vi rimando alla lettura dell’articolo Come usare la diagnostica di avvio per risolvere i problemi delle macchine virtuali in Azure

Collegatevi al portale di Azure e dopo aver selezionato la VM da configurare verificate che sia abilitata la Boot diagnostics, come mostrato in figura. Nel caso non fosse abilitata verrete invitati a cliccare su un link che vi rimanderà alla configurazione di uno storage account.

Figura 1: La Boot diagnostics non è abilitata per la VM

Figura 2: Configurazione dello storage account dove verranno inserite le informazioni utili alla boot diagnostics

Le versioni più recenti delle immagini di Windows Server disponibili nel marketplace di Azure hanno la Special Administrative Console (SAC) abilitata di default. La console SAC non è disponibile per le immagini dei sistemi operativi client.

Però se avete creato le vostre VM prima di Febbraio 2018 sarà invece necessario attivare la Special Administrative Console (SAC), andando nel nodo Run command della VM e scegliendo la voce Enable EMS.

Figura 3: Abilitazione della Special Administrative Console (SAC)

Attendete il completamento dello script di configurazione ed eseguite il reboot della VM

Figura 4: Esecuzione dello script per l’abilitazione della Special Administrative Console (SAC)

Dopo il riavvio della VM sarà possibile cliccare sul nodo Serial Console per vedere il prompt SAC>

Figura 5: Connessione alla console seriale effettuata

Per eseguire i comandi nel sistema operativo è prima necessario creare un channel e poi loggarsi.

Create un channel con il comando cmd e poi entrate nel channel con il comando ch -si 1

Vi verrà chiesto di autenticarvi al sistema operativo. Dopo aver inserito le credenziali ricevete il prompt dei comandi

Figura 6: Autenticazione alla VM

Figura 7: Connessione alla console effettuata e prompt dei comandi attivo

Se volete abilitare il Windows Boot Menu nella console seriale vi potete collegare in desktop remoto alla VM e digitare i comandi

 

Io li ho eseguiti direttamente dalla console seriale, che tra l’altro supporta la funzionalità di copia/incolla.

Figura 8: Abilitazione del Windows boot menu nella serial console

Riavviando la macchina (potete utilizzare anche il pulsante presente sulla console seriale) vedrete apparire il Windows Boot Manager, come mostrato in figura:

Figura 9: Windows Boot Manager mostrato nella serial console

L’abilitazione della serial console nelle macchine Linux viene effettuata alla stessa maniera. I prerequisiti sono gli stessi delle macchine Windows, quindi assicuratevi che la VM abbia la Boot Diagnostics abilitata.

Affinché la console seriale funzioni correttamente, il sistema operativo guest deve essere configurato per leggere e scrivere i messaggi della console nella porta seriale. La maggior parte delle distribuzioni di Azure per Linux approvate ha la console seriale configurata per impostazione predefinita.

Distribuzione

Accesso alla console seriale

Red Hat Enterprise Linux. L’accesso alla console seriale è abilitato per impostazione predefinita.
CentOS L’accesso alla console seriale è abilitato per impostazione predefinita.
Ubuntu L’accesso alla console seriale è abilitato per impostazione predefinita.
CoreOS L’accesso alla console seriale è abilitato per impostazione predefinita.
SUSE Le immagini SLES più recenti disponibili in Azure hanno l’accesso alla console seriale abilitato per impostazione predefinita. Se si usano versioni precedenti (fino alla 10) di SLES in Azure, vedere l’articolo della Knowledge Base per abilitare la console seriale.
Oracle Linux L’accesso alla console seriale è abilitato per impostazione predefinita.
Immagini personalizzate di Linux Per abilitare la console seriale per l’immagine personalizzata della VM Linux, abilitare l’accesso alla console nel file /etc/inittab per l’esecuzione di un terminale in ttyS0. Ad esempio: S0:12345:respawn:/sbin/agetty -L 115200 console vt102. Per altre informazioni su come creare correttamente immagini personalizzate, vedere Creazione e caricamento di un file VHD Linux in Azure. Se si sta creando un kernel personalizzato, provare ad abilitare questi flag kernel: CONFIG_SERIAL_8250=y e CONFIG_MAGIC_SYSRQ_SERIAL=y. Il file di configurazione si trova in genere nel percorso /boot/.

Figura 10: Accesso alla console seriale effettuata da una macchina Ubuntu

Conclusioni

La console seriale permette di poter accedere ad un’interfaccia di testo da cui poter eseguire comandi, sia in VM Windows che in VM Linux, indipendentemente da come le VM siano collegate in rete. La connessione è disponibile solo dal portale di Azure e permette di modificare impostazioni, accedere al file system, gestire il sistema operativo e correggere problematiche dovute a cattive configurazioni. Immaginate di aver creato una regola di firewall troppo restrittiva e di esservi precluso l’accesso alla VM… che fate? Grazie alla console seriale potete rimediare!