在 KVM 上访问 Linux 虚拟机终端
2012年06月7日 | 标签: console, kvm, libvirt, linux, opennebula | 作者:vpsee
用 OpenNebula 制作 Ubuntu 镜像后可以用这个镜像当作模版来创建 OpenNebula 虚拟机,发现一个问题是,这个 KVM 虚拟机(guest)无法在母机(host)上用 virsh console 登陆和显示终端,这是因为那个模板没有引入 console 需要的参数,而且虚拟机里面也没有做相关的设置。解决办法分两步,首先登陆到虚拟机修改一些配置;然后在运行这个虚拟机的 KVM 节点(host)上修改虚拟机的 xml 配置文件。以下介绍虚拟机是 Ubuntu 和 CentOS 的两种配置情况,FreeBSD 配置情况可以参考:在 KVM 上访问 FreeBSD 虚拟机终端。
在 Ubuntu Guest 上配置
登陆 ubuntu 虚拟机增加 ttyS0.conf 文件及其内容:
$ sudo vi /etc/init/ttyS0.conf # ttyS0 - getty # # This service maintains a getty on ttyS0 from the point the system is # started until it is shut down again. start on stopped rc RUNLEVEL=[2345] stop on runlevel [!2345] respawn exec /sbin/getty -L 38400 ttyS0 vt102
如果不只是希望 Linux login 后看到终端,也希望看到 Linux 的启动过程的话需要在 /etc/default/grub 加入 GRUB_CMDLINE_LINUX 一行,记得运行 update-grub2 自动配置 grub:
$ sudo vi /etc/default/grub ... GRUB_CMDLINE_LINUX_DEFAULT="console=ttyS0" ... $ sudo update-grub2
在 CentOS Guest 上配置
在 /etc/securetty 文件末尾追加 ttyS0 一行:
# echo “ttyS0″ >> /etc/securetty
在 /etc/grub.conf 文件里的 kernel 一行增加 console=ttyS0:
# vi /etc/grub.conf ... title CentOS (2.6.32-220.el6.x86_64) root (hd0,0) kernel /vmlinuz-2.6.32-220.el6.x86_64 ro root=/dev/mapper/VolGroup-lv_roo ot rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD rd_LVM_LV=VolGroup/lv_swap SYSFONT=latarr cyrheb-sun16 rhgb crashkernel=auto quiet rd_LVM_LV=VolGroup/lv_root KEYBOARDTYPP E=pc KEYTABLE=us rd_NO_DM console=ttyS0 initrd /initramfs-2.6.32-220.el6.x86_64.img ...
在 /etc/inittab 中增加 ttyS0 一行:
# vi /etc/inittab ... S0:12345:respawn:/sbin/agetty ttyS0 115200
在 KVM Host 上配置
登陆 KVM 母机(host)用 virsh edit 修改虚拟机的 KVM 启动配置文件,在 device 下面加上 serial 一栏:
# virsh list Id Name State ---------------------------------- 49 one-28 running # virsh edit one-28 ... <device> ... <serial type='pty'> <target port='0'/> </serial> <console type='pty'> <target type='serial' port='0'/> </console> ... </devices>
修改后重启 libvirtd,并手动关闭和启动虚拟机:
# /etc/init.d/libvirtd restart Stopping libvirtd daemon: [ OK ] Starting libvirtd daemon: [ OK ] # virsh shutdown one-28 # virsh start one-28
我在修改xml文件是时候报这个错:
error: unsupported configuration: Only the first console can be a serial port
能帮我解决吗?
原来的xml文件里就有
你好,请问楼主如果虚拟机是 cenots 应该怎样配置。
VPSee大牛,你好~ 关注你博客很久了;你也尝试KVM了啊?~ 我在做Xen/KVM方面的测试和开发,可否求加个友链(我先加你了),今后可以就Linux和虚拟化问题一起交流~
@jimmy
文章已经加入了 centos 配置。
我ubuntu的配置是
这样的,为什么还不行?