收藏 分享(赏)

虚拟运行环境搭建.doc

上传人:11xg27ws 文档编号:7687152 上传时间:2019-05-23 格式:DOC 页数:21 大小:612KB
下载 相关 举报
虚拟运行环境搭建.doc_第1页
第1页 / 共21页
虚拟运行环境搭建.doc_第2页
第2页 / 共21页
虚拟运行环境搭建.doc_第3页
第3页 / 共21页
虚拟运行环境搭建.doc_第4页
第4页 / 共21页
虚拟运行环境搭建.doc_第5页
第5页 / 共21页
点击查看更多>>
资源描述

1、虚拟运行环境搭建一、QEMU虚拟机介绍QEMU是一套由Fabrice Bellard所编写的模拟处理器的自由软件。它与Bochs,PearPC近似,但其具有某些后两者所不具备的特性,如高速度及跨平台的特性。经由kqemu这个开源的加速器,QEMU 能模拟至接近真实电脑的速度。QEMU有两种主要运作模式:User mode模拟模式,亦即是使用者模式。QEMU能启动那些为不同中央处理器编译的 Linux程序。而Wine及Dosemu是其主要目标。 System mode模拟模式,亦即是系统模式。QEMU能模拟整个电脑系统,包括中央处理器及其他周边设备。它使得为系统源代码进行测试及除错工作变得容易。

2、其亦能用来在一部主机上虚拟数部不同虚拟电脑。二、安装QEMU虚拟机如果是在Debian系统中,使用apt-get install命令安装qemu软件包即可,相关依赖的包也会一并安装。sudo apt-get install qemu注意:安装qemu的同时,系统会选择与之关联的其他程序的安装。如果是在Ubuntu系统中,则还要使用apt-get install命令安装qemu-kvm qemu-kvm-extras软件包。sudo apt-get install qemu qemu-kvm qemu-kvm-extras安装完成后通过命令qemu -help/-version可以查看安装情况。

3、三、QEMU虚拟机常用选项一般选项-M machine选择模拟的机器(我们可以输入 -M?提到一个模拟的机器列表)-fda file-fdb file使用file作为软盘镜像.我们也可以通过将/dev/fd0作为文件名来使用主机软盘.-hda file-hdb file-hdc file-hdd file使用file作为硬盘0,1,2,3的镜像.-cdrom file使用文件作为CD-ROM 镜像(但是我们不可以同时使 用-hdc 和-cdrom).我们可以通过使用/dev/cdrom作为文件名来 使用主机的 CD-ROM.-boot a|c|d由软盘(a),硬盘(c)或是CD-ROM(d).

4、在默认的情况下由硬盘启动.-snapshot写入临时文件而不是写入磁盘镜像文件.在这样的情况下,并没有写回 我们所使用的磁盘镜像文件.然而我们却可以通过按下C-a s来强制写 回磁盘镜像文件.-m megs设置虚拟内存尺寸为megs M字节.在默认的情况下为128M.-smp n模拟一个有n个CPU的SMP系统 .为PC机为目标,最多可以支持255个CPU.-nographic在通常情况下,Qemu使用SDL来显示VGA输出.使用这个选项 ,我们可以 禁止所有的图形输出,这样Qemu只是一个简单的命令行程序.模拟的串 口将会重定向到命令行.所以,我们仍然可以在Qemu平台上使用串口命 令来调试

5、Linux内核.-k language使用键盘布局语言(例如fr 为法语 ).这个选项只有在不易得到PC键盘 的情况下使用.我们在PC/Linux或是PC/Windows主机不需要使用这个 选项.默认的为en-us,可用的布局如下:ar de-ch es fo fr-ca hu ja mk no pt-br svda en-gb et fr fr-ch is lt nl pl ru thde en-us fi fr-be hr it lv nl-be pt sl tr-audio-help这个选项将会显示声音子系统的帮助:驱动列表以及可调用的参数.-soundhw card1,card2 or

6、 -soundhw all允许声音并选择声音硬件.使用?可以列出所有可用的声音硬件qemu -soundhw sb16,adlib hdaqemu -soundhw es1370 hdaqemu -soundhw all hdaqemu -soundhw ?-localtime设置时钟为本地时间(默认为 UTC时间). 如果在MS-DOS或是 Windows上 这个选项则需要正确的日期.-full-screen以全屏方式启动.-pidfile file在file 文件中存许Qemu的进程PID.如果我们是由脚本启动的,这个选 项是相当有用的.-win2k-hack当安装Windows 2000

7、时可以使用这个选项来避免磁盘错误.在安装上 Windows 2000系统,我们就不再需要这个选项(这个选项降低IDE 的传 输速度).USB选项-usb允许USB 驱动(很快就将成为默认的选项)-usbdevice devname添加USB 设备名 .我们可以查看监视器命令usb_add来得到更为详细的信息.网络选项-net nic,vlan=n,macaddr=addr创建一个新的网卡并与VLAN n(在默认的情况下n=0)进行连接.在PC机 上,NIC当前为NE2000.作为可选项的项目,MAC地址可以进行改变.如果 没有指定-net选项,则会创建一个单一的NIC.-net user,vl

8、an=n使用用户模式网络堆栈,这样就不需要管理员权限来运行.如果没有指 定-net选项,这将是默认的情况.-net tap,vlan=n,fd=h,ifname=name,script=file将TAP网络接口name与VLAN n进行连接,并使用网络配置脚本 file进行 配置.默认的网络配置脚本为/etc/qemu-ifup.如果没有指定name,OS 将会自动指定一个.fd=h可以用来指定一个已经打开的TAP主机接口的 句柄.例如:qemu linux.img -net nic -net tap下面的是一个更为复杂的例子(两个NIC,每一个连接到一个TAP设备):qemu linux.i

9、mg -net nic,vlan=0 -net tap,vlan=0,ifname=tap0 -net nic,vlan=1 -net tap,vlan=1,ifname=tap1在计算机网络中,TUN与TAP是操作系统内核中的虚拟网络设备。不同于普通靠硬件网路板卡实现的设备,这些虚拟的网络设备全部用软件实现,并向运行与操作系统上的软件提供与硬件的网络设备完全相同的功能。TAP 等同于一个以太网设备,它操作第二层数据包如以太网数据帧。TUN模拟了网络层设备,操作第三层数据包比如IP数据封包。操作系统通过TUN/TAP设备向绑定该设备的用户空间的程序发送数据,反之,用户空间的程序也可以像操作硬件

10、网络设备那样,通过TNU/TAP设备发送数据。在后种情况下,TUN/TAP设备向操作系统的网络栈投递(或“注入”)数据包,从而模拟从外部接受数据的过程。-net socket,vlan=n,fd=h,listen=host:port,connect=host:port使用TCP socket 将VLAN n与远程的另一个Qemu虚拟机的VLAN 进行连 接.如果指定了listen,Qemu将在port端口监听连入请求(host是可选 的), connect可以用来使用 listen选项与另一个Qemu实例进行连 接.fd=h指定了一个已经打开的TCP socket. 例如:# launch a

11、 first QEMU instanceqemu linux.img -net nic,macaddr=52:54:00:12:34:56 -net socket,listen=:1234# connect the VLAN 0 of this instance to the VLAN 0 of the first instanceqemu linux.img -net nic,macaddr=52:54:00:12:34:57 -netsocket,connect=127.0.0.1:1234-net socket,vlan=n,fd=h,mcast=maddr:port创建一个VLAN n

12、,并使用 UDP 多址通信套掊口与其他的QEMU虚拟机进 行共享,尤其是对于每一个使用多址通信地址和端口的QEMU 使用同一 个总线. 在这里我们要注意以下几点: 几个QEMU可以运行在不同的主机上但却使用同一个总线 (在这里假设 为这些主机设置了正确的多址通信) mcast支持是与用户模式Linux 相兼容的. 使用fd=h指定一个已经打开的UDP 多址通信套接口. 例如:# launch one QEMU instanceqemu linux.img -net nic,macaddr=52:54:00:12:34:56 -netsocket,mcast=230.0.0.1:1234# la

13、unch another QEMU instance on same “bus“qemu linux.img -net nic,macaddr=52:54:00:12:34:57 -netsocket,mcast=230.0.0.1:1234# launch yet another QEMU instance on same “bus“qemu linux.img -net nic,macaddr=52:54:00:12:34:58 -netsocket,mcast=230.0.0.1:1234下面的为用户模式Linux的例子:# launch QEMU instance (note mcas

14、t address selected is UMLs default)qemu linux.img -net nic,macaddr=52:54:00:12:34:56 -netsocket,mcast=239.192.168.1:1102# launch UML/path/to/linux ubd0=/path/to/root_fs eth0=mcast-net none表明没有网络设备需要进行配置.如果没有指定-net选项,则会用来覆 盖活跃的默认配置.-tftp prefix当使用用户模式网络堆栈,激活一个内置的TFTP服务器.所有的以 prefix开始的文件将会使用一个TFTP客户端从

15、主机下载到本地.在本 地的TFTP客户端必须以二进制模式进行配置(使用Unix的TFTP客户端 的bin命令).在客户机上的主机IP地址如通常的10.0.2.2.-smb dir-redir tcp|udp:host-port:guest-host:guest-port当使用用户模式网格栈,将连接到主机端口host-port的TCP或是UDP 连接重定向到客户机端口guest-port上。如果没有指定客户机端口, 他的值为10.0.2.15(由内建的DHCP服务器指定默认地址)。例如: 要重定向从screen 1到客户机screen 0的X11连接,我们可以使用下 面的方法:# on the

16、hostqemu -redir tcp:6001:6000 .# this host xterm should open in the guest X11 serverxterm -display :1To redirect telnet connections from host port 5555 to telnet port onthe guest, use the following:# on the hostqemu -redir tcp:5555:23 .telnet localhost 5555然后当我们在主机telnet localhost 5555上使用时,我们连接到了 客户

17、机的telnet服务器上。Linux启动选项当我们使用这些选项时,我们可以使用一个指定的内核,而没有将他 安装在磁盘镜像中。这对于简单的测试各种内核是相当有用的。-kernel bzImage使用bzImage作为内核映像。-append cmdline使用cmdline作为内核的命令行。-initrd file使用file作为初始的ram 磁盘。调试选项-serial dev重定向虚拟串到主机的设备dev。可用的设备如下:vc虚拟终端pty(Linux)伪TTY(自动分配一个新的TTY)null空设备/dev/XXX“(Linux)使用主机的tty。例如, /dev/ttyS0。主机的串口参

18、数通过模拟进行设置。/dev/parportN(Linux)使用主机的并口N。当前只可以使用SPP的并口特征。file: filename将输出写入到文件filename 中。没有字符可读。stdio(Unix)标准输入/输出pipe:filename(Unix)有名管道filename 在图形模式下的默认设备为vc,而在非图形模式下为stdio.这个选项 可以被多次使用,最多可以模拟4个串口。-parallel dev重定向虚拟并口到主机的设备dev(与串口相同的设备)。在Linux主 机上,/dev/parportN可以被用来使用与相应的并口相连的硬件设 备。这个选项可以使用多次,最多可以

19、模拟3个并口。-monitor dev重定向临视器到主机的设备dev(与串口相同的设备)。在图形模式 下的默认设备为vc,而在非图形模式下为stdio。-s等待gdb连接到端口1234.-p port改变gdb连接端口。-S在启动时并不启动CPU(我们必须在监视器中输入c)-d输出日志到/tmp/qemu.log-hdachs c,h,s,t强制硬盘0的物理参数(1 互联网 虚拟机主机 通信都很容易,这种方式设置上类似vmware的host-only,qemu使用 tun/tap设备在主机上增加一块虚拟网络设备 (tun0),然后就可以象真实网卡一样配置它.一般来说虚拟机用NAT方式连接 In

20、ternet,用虚拟网卡或网桥连接内部局域网。具体到qemu的网络设置上,我们可通过编写/etc/qemu-ifup和/etc/qemu-ifdown两个SHELL脚本来完成。3QEMU的网络设置脚本当qemu启动时,默认会执行/etc/qemu-ifup脚本,因此创建文件/etc/qemu-ifup,内容如下:#!/bin/sh# 获取原来主系统 eth0 的 IP 和网关unset LANGIP=ifconfig eth0|grep “inet addr“|awk print $2|sed s/addr:/GATEWAY=route -n|grep 0.0.0.0|awk print $2

21、# 删除 eth0 的 IPifconfig eth0 del $IP# 激活 tap0 ($1 是qemu传递过来的网卡名称,即tap0)ifconfig $1 up# 停止并删除存在的网桥ifconfig br0 down /dev/null 2&1brctl delbr br0 /dev/null 2&1# 添加网桥接口 br0brctl addbr br0# 将 eth0 加入网桥brctl addif br0 eth0# 将 tap0 加入网桥brctl addif br0 $1# 启动网桥ifconfig br0 $IP upIP=echo $IP|awk -F. printf “

22、%d.%d.%d.%d“,$1,$2,$3,18ifconfig eth0 $IP up# 添加默认路由route add default gw $GATEWAY当qemu关闭时,默认会执行/etc/qemu-ifdown 脚本,因此创建文件/etc/qemu-ifdown,内容如下:#!/bin/sh#如果关闭了虚拟机,需要恢复原来的网络设置unset LANGIP=ifconfig br0|grep “inet addr“|awk print $2|sed s/addr:/GATEWAY=route -n|grep 0.0.0.0|awk print $2ifconfig br0 $IP

23、downbrctl delbr br0ifconfig eth0 $IP uproute add default gw $GATEWAY需要注意的是脚本中的“eth0”应该对应Host机的一张网卡,这张网卡可以是虚拟网卡,也可以是真实的网卡。如果此时“eth0”是NAT 方式的虚拟网卡,那么target和host将在同一个虚拟网络中,此网络外部局域网是访问不到的,但内网的机器能够访问到外部局域网。如果此时“eth0”是虚拟网桥或真实的网卡,那么 target和host将在同一个真实的局域网中,此网络将成为外部局域网的一部分,同时分配的IP地址也和外部局域网一样,都在同一网段内。4启动QEMU设

24、置的网络使用以下命令启动带网卡的虚拟机:sudo qemu-system-arm -M versatilepb -kernel vmlinuz-2.6.26-1-versatile -initrd initrd.img-2.6.26-1-versatile -hda debian_lenny_armel_small.qcow2 -append “root=/dev/sda1“ -net nic -net tap -localtime5debian-armel的网络设置从网站上下载的debian-armel镜像中,dhcp-client版本比较老旧,需要升级后才能正常工作。请先使用apt-get

25、 update更新源的信息,然后在执行apt-get install dhcp-client。安装升级完成后,重启虚拟机就可以相互ping 通虚拟机和Host主机了。并且两个相同都可以同时访问外网。六、常用数据通信方式telnet+zmodem方式在QEMU虚拟机的armel-debian中安装:sudo apt-get install telnetd lrzsz在Debian中安装:sudo apt-get install telnet zssh lrzsz首先通过telnet登录到target,并切换到指定目录,然后通过sz 命令导出文件,rz命令传入文件。详细参考实践操作:记住快捷键Ct

26、rl+2,从在远程终端切换到本地终端。记住快捷键Ctrl+D, 从在本地终端切换到远程终端。上面是从host向target发送文件,下面则是从target向host 发送文件。注意:操作时,先执行发送命令,后执行接收命令。ftp方式在QEMU虚拟机的armel-debian中安装:sudo apt-get install vsftpd ftp在Debian中安装:sudo apt-get install vsftpd ftp修改配置文件/etc/vsftpd.conf打开以下参数:local_enable=YESwrite_enable=YESchroot_local_user=YES重新启动

27、vsftpd:/etc/init.d/vsftpd restart注意:put和get命令执行的方向。put是将文件传入target,get是从target取文件。nfs 方式在QEMU虚拟机的armel-debian中安装:sudo apt-get install nfs-common在Debian中安装:sudo apt-get install nfs-kernel-server首先,在host设置/etc/exports配置文件。然后重启nfs-server服务器。最后在target中挂接nfs目录。以上三种是较为常见的通信方式,另外还有SSH通信,我们将会在后续课程中详细介绍。七、在虚拟机中执行程序现在就可以将我们之前编译好的armel 版本程序下载到虚拟机执行了,大家试试看。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报