QEMU Monitor 使用

QEMU Monitor 使用,第1张

从命令行启动qemu之后,按键 Ctrl-a c 可以进入monitor,之后可以执行很多有用的命令。具体可以参考 https://qemu.readthedocs.io/en/latest/system/monitor.html 。但是文档没有提到的是其他进入monitor的方式,尤其是想要同时有consel 和 monitor的情况。

查询手册的执行参数一章可以看到参数 -monitor dev 可以指定monitor使用什么字符设备输出。但是用法没给,而且必须使用字符设备也比较难用。

继续查询,这个回答很有帮助,提到如何开启网络端口做monitor: https://unix.stackexchange.com/questions/426652/connect-to-running-qemu-instance-with-qemu-monitor

再查阅手册,问题已经明白了。 dev设备 可以是很多形式,在执行参数 -serial dev 里面讲的很全面。 https://qemu.readthedocs.io/en/latest/system/invocation.html 。

而且这种灵活的使用方式不仅适用于monitor,也适用于 serial, 也就是能够很方便的把guest os的consel重定向到各种形式的接口上(包括 虚拟控制台,tty,网络,管道,文件等)。

QEMU的强大令人惊叹,回头看看这块源码怎么实现的。

这里给出具体参数,省去查找的麻烦:

qemu-system-aarch64 ... -monitor telnet:127.0.0.1:55555,server,nowait

使用telnet即可监听端口: telnet 127.0.0.1 55555

UNIX套接字为简单高效建立本地进程间通信的一种机制,接口和网络套接字一致,但是内部去掉了TCP/IP协议栈的繁琐流程,提高通信效率。相关说明: https://akaedu.github.io/book/ch37s04.html

QEMU参数为: -monitor unix:qemu-monitor-socket,server,nowait , qemu-monitor-socket为套接字名称,可以自定义。

使用socat连接: socat - unix-connext:qemu-monitor-socket 。 socat连接效果比telnet效果好。

socat工具十分强大,使用参考: http://brieflyx.me/2015/linux-tools/socat-introduction/ 和 https://www.jianshu.com/p/54005e3095f3 。

1.  直接采用monitor管理

$qemu-kvm  -usb -monitor stdio

(qemu) device_add usb-host,vendorid=0x03f0,productid=0x134a,id=usb0               #增加usb设备

(qemu) device_del usb0                                                                                         #删除对应id的usb设备

2. 采用virsh管理:

virsh qemu-monitor-command --hmp testwin7 'device_del usb-host,vendorid=0x03f0,productid=0x134a,  id=usbxx0'   

删除: virsh qemu-monitor-command testwin7 --hmp "device_del usbx"

查询: virsh qemu-monitor-command testwin7 --hmp "info usb"

RedflagWorkstation下已经带了QEMU

#QEMU-imgcreatewindows.img2G#这个就是创建虚拟机磁盘,2G大小

#QEMU-hdawindows.img-cdrom/dev/acd0-bootd-m512-enable-audio-localtime

-hda是指定硬盘

-cdrom指定使用光驱,这个参数后面必须要跟个文件名,可以是物理光驱/dev/hda,可以使用ISO文件,为文件的路径

-m是指定虚拟机使用的内存大小,如512M

-boot指定虚拟机启动用的设备,-boot后可以选择的参数是a,c,d.其中a是指从软盘启动,c就是用硬盘启动,d是光驱启动。

-enable-audio

-localtime使用实际主板bios上的时间。

应该可以顺利的进入虚拟机了,并开始安装了。

RedflagWorkstation下已经带了QEMU

#QEMU-imgcreatewindows.img2G#这个就是创建虚拟机磁盘,2G大小

#QEMU-hdawindows.img-cdrom/dev/acd0-bootd-m512-enable-audio-localtime

-hda是指定硬盘

-cdrom指定使用光驱,这个参数后面必须要跟个文件名,可以是物理光驱/dev/hda,可以使用ISO文件,为文件的路径

-m是指定虚拟机使用的内存大小,如512M

-boot指定虚拟机启动用的设备,-boot后可以选择的参数是a,c,d.其中a是指从软盘启动,c就是用硬盘启动,d当然就是光驱启动了。

-enable-audio

-localtime使用实际主板bios上的时间。

应该可以顺利的进入虚拟机了,并开始安装了。

安装过程中,要求换盘:在QEMU中按ctrl alt 2切换到QEMUmonitor模式输入?或help可以查看可用命令及使用说明。(在其他版本的QEMU中,运行QEMU加载OS后,这个shell就会自动变成QEMUmonitor模式)

changedevicefilename—changearemovablemedia

如changecdrom/tmp/xp1.iso

常用的快捷键:

ctrl alt F全屏切换

ctrl alt鼠标在虚拟机和主机间切换

虚拟机上网设置两种方式:

1.usermodenetwork:

这种方式实现虚拟机上网很简单,类似vmware里的nat,QEMU启动时加入-user-net参数,虚拟机里使用dhcp方式,即可与互联网通信,但是这种方式虚拟机与主机的通信不方便。

2.tap/tunnetwork:

这种方式要比usermode复杂一些,但是设置好后虚拟机互联网虚拟机主机通信都很容易

这种方式设置上类似vmware的host-only,QEMU使用tun/tap设备在主机上增加一块虚拟网络设备(tun0),然后就可以象真实网卡一样配置它.

dora 5 下的qemu安装使用qemu是最近出现的一种新的虚拟机,本身小巧的系 统和linux的加速,使它一经面世就受到了热烈的欢迎,国内也有不少用户,但没有一篇完整的文章介 绍,使许多人走了不少弯路,其实,安装是比较简单的,较为复杂的部分是在网络部分,下面,就以 Fedora 5加kernel 2.6.17.4做为主机详细介绍qemu的安装和使用

一.安装

下载

qemu最新版是0.81,同时下载加速kmenu,最新版是1.3

http://fabrice.bellard.free.fr/qemu/download.html

先安装Kqemu

$ tar zxvf kqemu-1.3.0pre9.tar.gz

$ cd kqemu-1.3.0pre9

$ su root

# ./configure

# make

# make install

然后安装qemu

# tar zxvf qemu-0.8.1.tar.gz

# cd qemu-0.8.1

#./configure --prefix=/usr/local --enable-kqemu --enable-user --enable-alsa --disable-gcc-check

说明:

--enable-user 可以允许系统下的所有用户使用Qemu

--enable-alas 可以允许系统共享系统的声音系统

--disable-gcc-check 因为wqemu默认是使用gcc3.2,我的系统gcc已经升级到了4.1,所有禁止了qemu对gcc的检查

#make

#make install

经过以上的 *** 作,加速和qemu都已经安装完成了。

二.创建新的img

用户可以将img文件创建到任意位置,只要有足够的空间就行。

# mkdir win2kp

# cd win2k

# qemu-img create win2k.img 2G

Formating 'win2k.img', fmt=raw, size=2097152 kB

2G是指定虚拟机的硬盘大小的

三.网络的设置

国 内的很多人都讲加参数就如何可以使用网络,但实际远没那么简单,我就是一开始看了网络上某人的贴子,结果是反反复复,网络一直不能正常工作,后来从 qemu的网站上下了所有的doc才搞定(比如有人发的贴都是使用-user-net就可以上网了,不但把语法写错了,而且只有这个参数根本就上不了 网!),在此我只说最复杂的部分,就是主机<->虚拟机<->internet全通的模式。

这种方式是使用tun/tap模式,必须崾内核的支持,主机上会增加一块虚拟网络设备(tun0),然后就可以象真实网卡一样配置它.

 首先查看你的内核是否支持tun设备:

 #ls -l /lib/modules/2.6.17.4/kernel/drivers/net/tun.ko

 如果存在,则执行下面的命令,否则重新编译模块。

 #modprobe tun

 这时检查modules:

 #lsmod |grep tun

tun 10240 1

tun 加载成功以后,要手工编辑一个shell.而且必须放在/etc下,文件名必须是qemu-ifup.最后要记得给脚本加上执行权限,如果要允许系 统下的所有用户使用,还必须更改脚本的权限,并在脚本中的命令前加上sudo,下面是是个完整的,给所有用户使用的脚本。

#vi /etc/qemu-ifup :

#!/bin/sh

sudo /sbin/ifconfig $1 192.168.10.1

sudo route add -host 192.168.10.100 dev $1

sudo echo 1 >/proc/sys/net/ipv4/ip_forward

sudo iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j MASQUERADE

#chmod a+x /etc/qemu-ifup 

四.安装虚拟系统

虚拟机的启动有很多选项,下面我就以我安装好的win2k来说明

如果要使用shm,必须进行以下的 *** 作

# umount /dev/shm

# mount -t tmpfs -o size=528m none /dev/shm

别忘了启动加速

#modprobe kqemu

shm的容量必须比你将要分配给虚拟机的内存大16m,否则无法使用,上面是准备给虚拟机512m的内存,所以,shm被设置成了528,如果你只给虚拟机256m的内存,上面的size应该是272.

好了,下面准备开始给上面创建的win2k.img装入系统

# qemu -hda /usr/local/win2k/win2k.img -cdrom /dev/hdc -boot d -m 512 -win2k-hack

对于win2k的安装必须指定-win2k-hack参数,否则安装会中途出错退出,这个参数只需要在安装的时候使用,在运行的时候是不需要的。

-hda是指定将要使用的image文件,也就是windows的C盘

-cdrom 是准备给cdrom的驱动器,也就是windows的D盘,有人说这个参数是-cdrom /dev/cdrom,是指定你的主机的cdrom的位置,这是一个天大的错误,这里指的是启动后的虚拟机,和主机的cdrom在哪里没关系,当然,你的 系统必须有cdrom,如果没有cdrom,我想在linux下虚拟mount一个还是很容易的。

-boot d ,就是指定系统从D启动,各上面一项相关的

-m 512,指定分配组虚拟机的内存

如果一切顺利,安装完成以后,你就可以启动系统了

五.启动虚拟机

首先,按前面的介绍,加载好加速和tun的模块,如果前面已经加载了,这里就不再需要了,只在主机重启了以后需要,如果经常使用虚拟机,也可以将它们直接添加进/etc/rc.d/rc.local让系统自动加载。

#modprobe kqemu

#modprobe tun

#qemu -hda /usr/local/win2k/win2k.img -cdrom /dev/hdc -hdb fat:/home/seabird/work -m 512 -localtime -net nic -net tun

参数:

-hdb fat:/home/seabird/work

这是一个非常有用的参数,它的意思是把主机的/home/seabird/work目录直接以fat的格式加载到虚拟机,当然,它是只读的

-localtime,指定虚拟机使用当前的系统时间

-net nic -net tun

这两个参数必须同时使用,否则,你还是上不了网,它的意思是启动虚拟机的网卡同时和主机以及internet通讯,只有这个参数加载的时候,系统才会去读取/etc/qemu-ifup文件,其它的模式是不会读取这个文件的。

启 动完成以后,将win2k的网卡地址指定为192.168.10.100,网关设为1921.68.10.1还记得/etc/qemu- ifup文件吗,这个文件中的地址和你的虚拟机的地址是相关的,并不像有些人说的你可以像主机一样随便指定地址去上网,它是把主机作为一个NAT设备来使 用的。当然,你别忘记指定一个虚拟机可以到达的DNS服务器

六.后记

1.指定虚拟机的网络地址的时候。千万别指一个和你的主机相同网段的,那样,你是不可能上网的。

2.可以去安装98,但到目前的最新版为止,winxp在大多情况下安装是不成功的,这个在qemu的网站上说的很清楚,只有等以后的版本了,所以,你看到的安装winxp的贴子是没有实践的,我在三台配置不同的机器上安装都以失败告终了。

3.win2k运行的时候,如果用它自己的关机是关不掉虚拟机的,原因是不支持电源管理, 教你一个方法,使用win2k的安装/卸载硬件,一步步往下走, 在windows搜索完硬件后出现的对话窗中选择添加新硬件(白痴的windows,我竟然不能让它跳过搜索), ->下一步,选择“否,我想从列表选择硬件”->下一步->NT Apm/legacy支持->下一步,安装完成后你就可以正常关机了。

4.qemu还有一个最大的优点是可以启动你的硬盘上的双系统,如果现在就是双系统,你可以像下面一样直接启动:

#qemu -hda /dev/hda1 -m 512 -net nic -net tun

/hda1是你的另一个系统的硬盘分区,如果你是grub启动,这里就是你的grub所在的位置,等grub菜单出现后,选择想启动的系统就可以了(天啊,别选你现在正在运行的系统啊). Linux联盟收集整理


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11578786.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存