KVM virsh console on CentOS 7
Several articles on using the console feature of KVM guests exists already. This is just a quick note on a test I did using specifically Centos 7 which is using systemd now.
Console allows you to A) see bootup messages and B) login on the console of the guest without SSH.
As far as I can tell you only need to do two things. Add console=ttyS0 to the kernel being booted and in the guest XML switch virtio to serial for the console. Keep in mind this is if you are using the RHEL 7 type when creating the VM. If you were using a RHEL 6 type when creating the guest the console probably still were configured to use serial.
This KVM hypervisor is on Fedora 20 and using libvirt version 1.1.3.6.
To send messages from the kernel to the serial console add console=ttyS0:
# grep console=ttyS0 /boot/grub2/grub.cfg linux16 /vmlinuz-3.10.0-123.el7.x86_64 root=UUID=ba0f2424-e66e-4862-90ff-7dccb63339c2 ro rd.lvm.lv=centos/swap vconsole.font=latarcyrheb-sun16 rd.lvm.lv=centos/root crashkernel=auto vconsole.keymap=us LANG=en_US.UTF-8 console=ttyS0 # grep ttyS0 /etc/securetty ttyS0
Change guest console type to serial:
<console type='pty' tty='/dev/pts/6'> <source path='/dev/pts/6'/> <target type='serial' port='0'/> <alias name='serial0'/> </console> # virsh console centos7 Connected to domain centos7 CentOS Linux 7 (Core) Kernel 3.10.0-123.el7.x86_64 on an x86_64 localhost login:
Above should do it but if you want to see even the grub2 menu options you can try the following:
# grep serial /etc/default/grub GRUB_TERMINAL=serial GRUB_SERIAL_COMMAND="serial --speed=38400 --unit=0 --word=8 --parity=no --stop=1" # grep LINUX_DEFAULT /etc/default/grub GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0" # grub2-mkconfig -o /boot/grub2/grub.cfg
Of course if you are setting grub DEFAULT options you don't need to set anything for the kernel entries in /boot/grub2/grub.cfg like I did in step 1.
Note that when connecting to the console you might need to move your up or down arrows to see the actual menu entries. The terminal and curses might look a little flaky but it is there. I also set the grub TIMEOUT a little longer to wait at the menu entries.