Nota: questo è un obiettivo d’esame RHCSA 7.
Procedura standard
Con KVM, per accedere alla console della macchina virtuale sotto X Window, digitare:
# virt-manager
Se non sei sotto X Window, c’è un altro modo per accedere alla console di una macchina virtuale: puoi passare attraverso una console seriale.
Sulla macchina virtuale, aggiungi “console = ttyS0” alla fine delle linee del kernel nel file /boot/grub2/grub.cfg:
# grubby –update-kernel=ALL –args=”console=ttyS0″
Nota: In alternativa, puoi modificare il file /etc/default/grub, aggiungere ‘console = ttyS0‘ alla variabile GRUB_CMDLINE_LINUX ed eseguire ‘# grub2-mkconfig -o /boot/grub2/grub.cfg‘.
Ora, riavvia la macchina virtuale:
# reboot
Con KVM, connettiti alla console della macchina virtuale (qui vm.example.com):
# virsh console vm.example.com Connected to domain vm.example.com Escape character is ^] Red Hat Enterprise Linux Server 7.0 (Maipo) Kernel 3.10.0-121.el7.x86_64 on an x86_64 vm login:
Procedura di emergenza
A volte hai perso tutti i link alla tua macchina virtuale (errore nel file /etc/fstab, configurazione ssh, ecc.) E, dato che non hai configurato alcuna console virtuale, sei nei guai. C’è ancora una soluzione!
Collegati all’host fisico e spegni la tua macchina virtuale (qui chiamata vm.example.com):
# virsh destroy vm.example.com
Definire dove si trova il file immagine della macchina virtuale (per impostazione predefinita nella directory /var/lib/libvirt/images con un nome come vm.example.com.img):
# virsh dumpxml | grep "source file=" <source file='/var/lib/libvirt/images/vm.example.com.img'/>
Mappare il file immagine della macchina virtuale nell’ambiente host (-a per add e -v per verbose):
# kpartx -av /var/lib/libvirt/images/vm.example.com.img add map loop0p1 (253:2): 0 1024000 linear /dev/loop0 2048 add map loop0p2 (253:3): 0 10240000 linear /dev/loop0 1026048
Dal display precedente, sai che hai due partizioni (in realtà /boot e /, distinguibili dalle rispettive dimensioni).
È necessario montare la partizione /boot per poter modificare la configurazione di grub:
# mount /dev/mapper/loop0p1 /mnt
Quindi, modifica il file /mnt/grub2/grub.cfg e aggiungi “console = ttyS0” alla fine di ogni riga contenente /vmlinuz (il kernel linux).
Smonta la partizione:
# umount /mnt
Unmap del file immagine della macchina virtuale (-d per delete e -v per verbose):
# kpartx -dv /var/lib/libvirt/images/vm.example.com.img del devmap : loop0p2 del devmap : loop0p1 loop deleted : /dev/loop0
Riavvia la tua macchina virtuale:
# virsh start vm.example.com Domain vm.example.com started
Collegati alla tua console della macchina virtuale:
# virsh console vm.example.com Connected to domain vm.example.com Escape character is ^] CentOS Linux 7 (Core) Kernel 3.10.0-123.el7.x86_64 on an x86_64 vm login:
Questa procedura funziona per RHEL 6 / CentOS 6 e RHEL 7 / CentOS 7.