在qemu-kvm命令行中,添加“-nographic”参数可以完全关闭QEMU的图形界面输出,从而让QEMU在该模式下完全成为简单的命令行工具。而QEMU中模拟产生的串口被重定向到了当前的控制台(console)中,所以如果在客户机中对其内核进行配置从而让内核的控制台输出重定向到串口后,就依然可以在非图形模式下管理客户机系统或调试客户机的内核。
需要修改客户机的grub使其在kernel行加上将console输出重定向到串口ttyS0,如下为一个客户机的修改后的grub配置文件。
default=0
timeout=5
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux (2.6.32-279.el6.x86_64)
root (hd0,0)
kernel /boot/vmlinuz-2.6.32-279.el6.x86_64 ro root=UUID=9a971721-db8f-4002c-a3f4-f4ae8b037ba3 3 console=ttyS0
initrd /boot/initramfs-2.6.32-279.el6.x86_64.img
用“-nographic”参数关闭图形输出,其启动命令行及客户机启动(并登录进入客户机)的过程如下所示,可见内核启动的信息就通过重定向到串口从而输出在当前的终端之中,而且可以通过串口这里登录到客户机系统(有的客户机Linux系统需要进行额外的设置才能允从串口登录)。
[root@jay-linux kvm_demo]# qemu-system-x86_64 rhel6u3.img -m 1024 -nographic
Initializing cgroup subsys cpuset
Initializing cgroup subsys cpu
Linux version 2.6.32-278.el6.x86_64 (mockbuild@x86-010.build.bos.redhat.com) (gcc version 4.4.6 20120305 (Red Hat 4.4.6-4) (GCC) ) #1 SMP Fri Jun 1 14:17:12 EDT 2012
Command line: ro root=UUID=9a971721-db8f-402c-a3f4-f4ae8b037ba3 3 console=ttyS0
KERNEL supported cpus:
Intel GenuineIntel
AMD AuthenticAMD
Centaur CentaurHauls
BIOS-provided physical RAM map:
BIOS-e820: 0000000000000000 - 000000000009f400 (usable)
BIOS-e820: 000000000009f400 - 00000000000a0000 (reserved)
BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
<!--此处省略数百行 启动时的串口输出信息-->
Starting postfix: [ OK ]
Starting abrt daemon: [ OK ]
Starting ksm: [ OK ]
Starting ksmtuned: [ OK ]
Starting crond: [ OK ]
Starting atd: [ OK ]
Starting rhsmcertd 240 1440[ OK ]
Starting certmonger: [ OK ]
Red Hat Enterprise Linux Server release 6.3 (Santiago)
Kernel 2.6.32-278.el6.x86_64 on an x86_64
kvm-guest login: root #这里就是客户机的登录界面了
Password:
Last login: Tue Jul 17 15:56:21 on ttyS0
[root@kvm-guest ~]# pwd
/root
[root@kvm-guest ~]# date
Tue Jul 17 16:01:03 CST 2012
[root@kvm-guest ~]#
博主你好!我之前的工作曾用串口线截取屏幕信息,但是当时不知其所以然。
刚才按博主的文章配置了一下vm的nographic模式,进入这个系统后发现virsh list --all显示该VM是off状态的,这是不是仅仅意味着这个VM现在不受libvirtd管控,而并不表示他没启动? 谢谢
你的理解是正确的;你用qemu命令行直接启动的guest 不受libvirtd控制~ 在virsh crate guest.xml 命令的guest.xml中也应该可以配置为nographic的,你去自己去试试吧。
怎么修改grub.conf的 还没安装怎么修改呢 求教
还有一个问题是qemu-kvm这个命令似乎不能指定使用桥接网卡(没有类似network bridge这样的参数),他会自己编造一个IP,请问这个问题如何解决啊?
另外,一般在什么情况下需要使用非图形模式啊?
谢谢了!
qemu-kvm当然可以使用bridge网络的,见我这篇文章:http://smilejay.cn/2012/08/kvm-bridge-networking/
另外,你说的编造一个IP,是默认使用了user mode 的网络。
在ssh远程登录host,然后向直接启动guest时,没有图形界面,所以可能需要用-nographic
我试图用virt-install的非图形模式安装虚拟机。有Connected to domain test 。 Escape character is ^]。但是按键无反应。此时客户机还未安装,无法修改grub。如何解决?
我自己用virt-install时 一般使用--vnc 的, 没有使用过完全非图形界面来安装;不过,我认为非图形模式安装应该是可以正常工作的。这个你自己寻找其他资料解决吧,多尝试
kernel /boot/vmlinuz-2.6.32-279.el6.x86_64 ro root=UUID=9a971721-db8f-4002c-a3f4-f4ae8b037ba3 3 console=tttyS0
console这里打错多了个t?
非常谢谢你,你挺细心的。确实是笔误了,前几天我自己审稿时也发现了,当时没同步更新到blog上。
博主,买了您的书,受益匪浅,有个问题这么我很多天了,各种google也没找到方法。就是“怎么修改客户机的grub,使其可以使用nographic模式”,客户机还没安装怎么修改grub.conf呢 求解释
我现在是加上-nographic参数启动后屏幕上就一片漆黑 啥都没有。
嗯,我书中例子用nographic时,是假设客户机已经安装好了的。我写了篇博客解决你的问题:
http://smilejay.cn/2013/12/qemu-kvm-install-guest-in-text-mode/
希望对你有帮助,欢迎反馈。