首页
关于
友情链接
文章归档
Search
1
centos 32位 64位 下挂vagex一键包代码
719 阅读
2
wordpress转typecho方法
615 阅读
3
一个自制的virto精简版kvm qemu win2003模板 最低64M内存可用
605 阅读
4
PHP 安装
540 阅读
5
暴雨 车被泡了~
480 阅读
默认分类
vps综合利用
登录
/
注册
Search
标签搜索
Uncategorized
安装
mysql
utf-8
网站
google
linux
free
免费
黑色
ssl
一键包
优化
40%
press
vagex
32位
64位
debian
domain
御品VPS
累计撰写
501
篇文章
累计收到
1
条评论
首页
栏目
默认分类
vps综合利用
页面
关于
友情链接
文章归档
搜索到
8
篇与
镜像
的结果
2012-12-04
常见qemu-kvm命令的使用
1.安装 代码:sudo apt-get install qemu kernel-package linux-source kqemu-source build-essential 2.Qemu的二进制程序已经安装,但Qemu加速器安装的是源码,所以要加以编译代码:cd /usr/src/linuxsudo module-assistant prepare kqemu sudo module-assistant build kqemusudo module-assistant install kqemusudo depmod -a 3.载入kqemu模块代码:sudo modprobe kqemusudo mknod /dev/kqemu c 250 0 sudo chmod 666 /dev/kqemu 4.创建Windows虚拟硬盘代码:qemu-img create -f qcow windows.img 2G (这里的2G大小可以自己设置,使用qcow文件格式,因此它根据用户使用而增大减小,但最大上限为2G) 5.从光驱安装Windows代码:qemu -localtime -cdrom /dev/cdrom -m 384 -boot d windows.img (同样也可以从硬盘镜像安装代码:qemu -localtime -cdrom cdimagefile.iso -m 384 -boot d windows.img 这里的-m 384是指定内存,384 MB是很好的XP最小内存 如果内存不够,可以这样代码:sudo umount /dev/shmsudo mount -t tmpfs -o size=400m none /dev/shm) *64位用户请使用'qemu-system-x86_64'而不是'qemu',否则"-kernel-kqemu"不能启用. *安装Windows 2000请加入参数'-win2k-hack'. 6.使用 Ctrl + Alt 控制切换 Ctrl + Alt + F 全屏切换 7.保存配置 每次启动qemu之前都要手动载入kqemu模,可以将那些命令写入/etc/rc.local, 这样系统启动就会运行这些命令 8.网络 请参考http://fabrice.bellard.free.fr/qemu/qemu-doc.html 9.宿主和客系统之间的文件共享 QEMU为你配置了一个虚拟局域网和DHCP服务器. 首先在宿主Ubuntu上配置好Samba,然后这样启动qemu (这里假设你有个qemu_share文件夹)代码:qemu -smb $HOME/qemu_share -m 384 -localtime windows.img 在客系统Windows下,这样来访问共享文件 net use e: \\10.0.2.2\qemu_share 而且宿主Ubuntu的IP地址永远是10.0.2.2,因此如果你在宿主Ubuntu上运行了服务器,同样可以访问,比如 ftp:\\10.0.2.2,等等. 10.挂载虚拟硬盘,先要确保关闭qemu代码:sudo mount -o loop,offset=32256 windows.img /mnt 11.保存和恢复虚拟机的状态 当你安装好了一个虚拟机后,你可以在其上创建一个"叠加镜像",代码:qemu-img create -b windows.img -f qcow windows.ovl 现在你可以运行叠加镜像代码:qemu windows.ovl -enable-audio -user-net -localtime -smb qemu_share 叠加镜像非常小,只保存对原始镜像作出的改变,如果你想回到安装后的初始状态, 只需简单地删掉叠加镜像,然后创建一个新的. 12.运行QEMU命令 当QEMU正在运行时,他还可以接受命令 在QEMU窗口按CTRL+ALT+2,会出想QEMU监视器,输入help可以看到你能做很多事情 退出请按CTRL+ALT+1 13.将raw格式的虚拟硬盘转换为qcow格式代码:qemu-img convert windows.img -O qcow windows.qcow 14.故障解决 如果你遇到鼠标始终挂在右下角,请在启动QEMU前运行代码:export SDL_VIDEO_X11_DGAMOUSE=0kvm -cpu qemu64 -drive file=/sdn/ubuntu11.10-desktop64-big.img -hdb /var/mnt/yfs/test.disk1 -hdc /var/mnt/yfs/test.disk2 -hdd /var/mnt/yfs/test.disk3 -m 16000 -vnc :11 这样启动了一台ubuntu11.10,并在里面安装了openstack,stack虚拟机实例却无法连接网络。 后怀疑实例通过dhcp获得了不正确的ip 借此学习qemu的网络配置: KVM/QEMU桥接网络设置 配置kvm的网络有2种方法。其一,默认方式为用户模式网络(Usermode Networking),数据包由NAT方式通过主机的接口进行传送。其二,使用桥接方式(Bridged Networking),外部的机器可以直接联通到虚拟机,就像联通到你的主机一样。 第一,用户模式 虚拟机可以使用网络服务,但局域网中其他机器包括宿主机无法连接它。比如,它可以浏览网页,但外部机器不能访问架设在它里面的web服务器。 默认的,虚拟机得到的ip空间为10.0.2.0/24,主机ip为10.0.2.2供虚拟机访问。可以ssh到主机(10.0.2.2),用scp来拷贝文件。 第二,桥接模式 这种模式允许虚拟机就像一台独立的主机一样拥有网络。这种模式需要网卡支持,一般的有线网卡都支持,绝大部分的无线网卡都不支持 A) 在主机上创建一个网络桥 1)安装bridge-utils sudo apt-get install bridge-utils 2)改变网络设置,先停止网络 sudo invoke-rc.d networking stop 如果是用远程连接进行设置,设置完后,重启网络sudo invoke-rc.d networking restart,如果中途有一步错误,将不能连接 3)修改/etc/network/interfaces,直接用下面的替换。 a) 静态ip模式 auto lo iface lo inet loopback auto eth0 iface eth0 inet manual auto br0 iface br0 inet static address 192.168.0.10 network 192.168.0.0 netmask 255.255.255.0 broadcast 192.168.0.255 gateway 192.168.0.1 bridge_ports eth0 bridge_stp off bridge_fd 0 bridge_maxwait 0 b) DHCP模式 auto lo iface lo inet loopback auto eth0 iface eth0 inet manual auto br0 iface br0 inet dhcp bridge_ports eth0 bridge_stp off bridge_fd 0 bridge_maxwait 0 4)重启网络 sudo /etc/init.d/networking restart B) 随机生成一个KVM的MAC地址 MACADDR="52:54:$(dd if=/dev/urandom count=1 2>/dev/null | md5sum | sed 's/^/(../)/(../)/(../)/(../).*$//1:/2:/3:/4/')"; echo $MACADDR 可以指定一个mac地址,但要注意,第一个字节必须为偶数,如00,52等,不能为奇数(01),否则会有不可预料的问题。因为奇数保留为多播使用。如,KVM可以接收ARP包并回复,但这些回复会使其他机器迷惑。这是以太网的规则,而非KVM的问题。 如直接将网卡地址设置为MACADDR="32:32:32:32:32:32" C) 将以前安装的虚拟机网络改为桥接方式或者安装新的虚拟机使用桥接网络 一个脚本文件 #start kvm.winxp USERID=`whoami` MACADDR="32:32:32:32:32:32" model=e1000e iface=`sudo tunctl -b -u $USERID` kvm -net nic,vlan=0,macaddr=$MACADDR -net tap,vlan=0,ifname=$iface $@ sudo tunctl -d $iface #end kvm.winxp 使用iso文件安装winxp,运行如下命令: sudo ./kvm.bridge -m 512 -hda winxp.img -cdrom /home/software/zh-hans_windows_xp_professional_with_service_pack_3_x86_cd_vl_x14-74070.iso -boot d 运行安装完的虚拟机,运行如下命令: sudo ./kvm.bridge -m 512 -hda winxp.img -boot c =================================================================================== linux中Kvm桥接网络成功的关键 KVM在LINUX中的重要作用,速度等,我不再评价,我只能说,快! 但是,如果你要在一个服务器中使用多个虚拟机,并且想让这些虚拟机提供服务,那么,桥接网络是必不可少的,可是,网上流传的三四个版本中,关于桥接网络的,你试一下,会发现,很难成功,这是何道理?看起来他们似乎都配置成功了,也有可能是软件版本的问题,总之,你亲自尝试的时候,会发现,这其实很难实现。 当然,如果无法实现的话,也就没有此文了! 先说一下我的软件配置: Linux 2.6.28-11-server #42-Ubuntu SMP X86_64位Ubuntu服务器版9.04 KVM内核是自带的。 真实网络接口名称:eth0 KVM的安装方法我就不写了,网上有一大堆,注意,KVM有两个部分,一个部分是内核部分,这在9.04中是自带的,您要安装的KVM是管理部分(我也不知道这样理解是否正确,总之,你要安装KVM及QEMU) 不安装QEMU也可以用,因为KVM带一个修改版本的QEMU 成功的关键是配置网络及路由(这个在网上流传的版本中没有提到) 请生成一个文件(qemu-ifup),将这个文件加上可执行属性,文件内容如下: #!/bin/sh set -x switch=br0 if [ -n "$1" ];then /usr/bin/sudo /usr/sbin/tunctl -u `whoami` -t $1 /usr/bin/sudo /sbin/ip link set $1 up sleep 0.5s /usr/bin/sudo /usr/sbin/brctl addif $switch $1 exit 0 else echo "Error: no interface specified" exit 1 fi 将这个文件保存在你的HOME目录下,或者其它的目录也行。 修改你的/etc/network/interfaces文件如下: # This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback auto br0 iface br0 inet static bridge_ports eth0 //注意这个eth0,这是你的计算机的实际网卡,请根据你的网络修改,也可能跟我的这个一样。 address 192.168.1.242 //根据你的需要设置从这里到下面的参数,这个网络跟你的实现网络在一个子网内,不然无法桥接 netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255 gateway 192.168.1.1 dns-nameserver 192.168.1.1 219.141.136.10 dns-search Office 此时,重新启动计算机即可。 你可能注意到, 这个文件里可能有关于eth0的配置,请删除它即可,也就是说,不能对eth0进行任何配置,这个接口在重新启动后,应该是没有配置IP的,否则不能工作。 重新启动完成后,请比照一下你的接口配置是否跟我的一样: #ifconfig br0 Link encap:以太网 硬件地址 00:21:5e:4e:33:e2 inet 地址:192.168.1.242 广播:192.168.1.255 掩码:255.255.255.0 inet6 地址: fe80::221:5eff:fe4e:33e2/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 跃点数:1 接收数据包:48324758 错误:0 丢弃:0 过载:0 帧数:0 发送数据包:25261650 错误:0 丢弃:0 过载:0 载波:0 碰撞:0 发送队列长度:0 接收字节:63199826111 (63.1 GB) 发送字节:5380518900 (5.3 GB) eth0 Link encap:以太网 硬件地址 00:21:5e:4e:33:e2 inet6 地址: fe80::221:5eff:fe4e:33e2/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 跃点数:1 接收数据包:48903854 错误:0 丢弃:0 过载:0 帧数:0 发送数据包:28125512 错误:0 丢弃:0 过载:0 载波:0 碰撞:0 发送队列长度:1000 接收字节:64152739997 (64.1 GB) 发送字节:6185466883 (6.1 GB) 中断:16 请注意,只有br0有地址,而eth0是没有地址的,再比照一下你的路由表: #route 内核 IP 路由表 目标 网关 子网掩码 标志 跃点 引用 使用 接口 localnet * 255.255.255.0 U 0 0 0 br0 default bogon 0.0.0.0 UG 100 0 0 br0 请注意,如果你的路由表与我的不一样,例如出现四行,即又加上了 localnet * ................... eth0 default bogon ..................eth0 那么,你八成是不能成功桥接的,出现这样的问题应该是由于你的ETH0网络被配置了IP,处理的办法就是想办法去掉eth0的IP,可以使用这个方法: #ifconfig eth0 0.0.0.0 比较一下,你的桥接网络接口: #brctl show bridge name bridge id STP enabled interfaces br0 8000.00215e4e33e2 no eth0 tap0 tap1 tap2 应该有这行存在(了可能还会出现其它的行,例如pan0),后面的tapX是不同的虚拟机的接口,这里可以看出,我桥接了三个虚拟接口到一个直接的接口。 如果你的IP地址配置与路由表跟我的一样,那么,应该是可以桥接成功的。 接下来就是启动你的虚拟机,启动前需要创建虚拟机的磁盘(即下面的u_ubuntu.img,可以参照网上的方法,这里就不重复了),启动虚拟机的方法: #sudo kvm -hda u_ubuntu.img -boot c -net nic,model=virtio,macaddr=DE:AD:AF:22:33:22 -net tap,script=qemu-ifup -m 1024 -smp 2 -clock rtc -localtime 当然,有很的参数可用,我就不介绍了(其实我也不是很懂,嘿嘿),关键的问题就是macaddr和script两项,如果你有多个虚拟机,那么一样要配置不同的macaddr,script一定要指向你刚才保存的那个文件,可以使用绝对路径指明。 启动后,你应该可以正常安装操作系统了,安装完成后,如果虚拟机操作系统网络配置成DHCP,那么应该可以获取一个192.168.1.0网络内的地址,如果你不能获取地址,那么说明配置不成功。 在虚拟机工作的情况下,在宿主计算机上运行ifconfig,应该可以看到一个自动增加的接口tapX(其中X从0开始)。 小结一下: 1)eth0(宿主计算机连接到网络的真实网络接口)不能有IP地址! 2)路由表一定要正确,可以去找一找关于路由方面的介绍,了解一下这个路由信息的意思 ============================================================================================= 近几天在搞kvm。kvm真的是很不错,运行操作系统速度非常快,至少比我以前用的vbox要快。但是 kvm的网络配置让我头疼了一阵,上网找了很多资料,无奈那些资料要不省略了一些内容(都把我当高手看了),要不就是写了一堆东西,不说原理,看了半天都搞不懂为什么要那么做,反正都不适合我这种“从0开始”的人。故今天花了几个小时做实验,终于弄出了一个解决方法,现在从头到尾讲出来跟大家分享一下。 对于那些跟我一样想要找到一个只要照着它的提示打命令就多半能成功的方法的人,此帖应该有用。高手请无视此帖~ 首先说一下实现原理。我是想先在host上造一块假网卡,然后guest的系统跟这假网卡连接构成一个局域网。guest想连外网的话,就把host当路由器。至于域名服务器,在guest系统里直接指定。 本人实验的host是ubuntu 8.04 server,guest是freebsd 7.0 release。(都是64位) 接下来我会假设你已经装了kvm,而且能用它启动虚拟机。 (以下一到四参照了vbox的网络设定,都在host下操作) 一,首先把必要的工具装了: 代码: sudo apt-get install uml-utilities 二,再造假网卡tap0(名字随便取)并作一些基本配置 代码: sudo tunctl -t tap0 -u xxx 此处xxx换成你自己的用户名 代码: sudo chmod 0666 /dev/net/tun 这样大家都有权力去读写那个假网卡。即使在上面那行代码中你指定了自己的用户名,你还是没有办法读写tap0(很奇怪),所以这条命令是有用的。 三,配置网卡的网络参数。 代码: sudo ifconfig tap0 192.168.0.10 netmask 255.255.255.0 up 随便设,但是你要确保你待会设置的guest的网卡ip跟tap0的属于同一个网段。 四,接下来是系统的配置(连外网所必须) 代码: sudo echo 1 > /proc/sys/net/ipv4/ip_forward 这样开启了linux的ip转发功能,host可以当路由器用了。如果你想让guest连上外网的话这条一定要。 代码: sudo iptables -t nat -A POSTROUTING -j MASQUERADE 这条命令也是连外网所必须的。 五,启动kvm虚拟机 代码: kvm -M pc -m 512 -hda /root/hda.img -net nic -net tap,ifname=tap0,script=no -boot c -net nic -net tap,ifname=tap0,script=no是跟网络相关的,上面的命令的其他部分自己跟据实际情况修改。ifname=你造的假网卡的名字,我的是tap0。 六,guest系统的配置。(接下来的事请我不详细讲了,在guest下操作,根据不同的guest系统自己找资料,不要鄙视我~~~) guest启动后应该会认出一张网卡,realtek的。我的freebsd认出来是re0。把那网卡的ip设定成192.168.0.x,(这个ip跟host下tap0的ip不能相同!但要确保它们同在一个子网。我的是192.168.0.11),并把netmask设成 255.255.255.0。到现在,guest和host应该是同在一个子网了。你可以试一下在guest里ping 192.168.0.10,在host里ping 192.168.0.11,如无意外,应该能ping通。到现在已实现host guest之间的互访。 七,让guest连上外网。(前提是host已经连上外网) 只需要把guest的默认网关设置成192.168.0.10(你的假网卡的ip)就可以了,非常的简单。 域名服务器手动设置,不会很麻烦。 至此kvm网络设置的问题解决了,freebsd在线装东西中~ 希望此帖能对大家有点帮助。 ========================================================================================== 研究了很久的KVM,感觉是我用过的最快的虚拟机。对比常用的虚拟机,Vmware的功能全面,设置简单,但其速度不是很好;VirtualBox的效率虽然比Vmware高一些,但是存在不少缺点,感觉在运行时比较抢CPU,现在virtualbox已经支持smp,和虚拟化技术,但整体效率还是没有KVM高(但是图形效率作的不错);KVM(Kernel-based Virtual Machine),基于内核的虚拟机,是我用过的最快的虚拟机,需要CPU支持虚拟化技术,并且在BIOS里打开虚拟化选项,效率可达到物理机的80%以上,对SMP的支持很好。所以现在强烈吐血卖命推荐KVM。(注:在原文最下面添加了版虚拟化驱动(virtio)的使用方式) (使用磁盘方式以更新,请大家注意!!!) 没有废话,以下是在UBUNTU 10.04.1 64BIT下的方法 获得KVM: KVM的网站:http://sourceforge.net/projects/kvm/files/ 下载最新的qemu-kvm-0.13.0.tar.gz 解压: 代码: tar -xzvf qemu-kvm-0.13.0.tar.gz 需要用到的包: 在 UBUNTU 10.04中 ,可以使用 代码: sudo apt-get build-dep qemu-kvm 来解决依赖关系。 三步曲: 代码: cd qemu-kvm-0.13.0 /configure --prefix=/usr/local/kvm make sudo make install 安装好以后加载KVM模块 代码: sudo modprobe kvm sudo modprobe kvm-intel //如果你的是INTEL处理器就用这个 sudo modprobe kvm-amd //如果你的是AMD处理器就用这个 这样就装好了。 下面介绍配置KVM桥接网络的方法: \\特别注意,大部分不能桥接无线网卡。。。只能桥接PCI网卡。。。。 安装桥接工具: 代码: sudo apt-get install bridge-utils 安装创建TAP界面的工具: 代码: sudo apt-get install uml-utilities 编辑网络界面配置文件( 代码: sudo vi /etc/network/interfaces ),根据你的情况加入以下内容: 代码: auto eth0 iface eth0 inet manual auto tap0 iface tap0 inet manual up ifconfig $IFACE 0.0.0.0 up down ifconfig $IFACE down tunctl_user lm \\lm是我的用户名,在这里换为你的用户名 auto br0 iface br0 inet static \\当然这里也可以使用DHCP分配 bridge_ports eth0 tap0 address 192.168.1.3 netmask 255.255.255.0 gateway 192.168.1.1 激活tap0和br0: //有些时候会不奏效,但重启后就行了 代码: sudo /sbin/ifup tap0 sudo /sbin/ifup br0 好了以后ifconfig看一下,多了一个tap0和br0, br0上的IP地址就是你本机的IP地址。 KVM的使用方法: KVM的使用方法具体可以参考 代码: /usr/local/kvm/bin/qemu-system-x86_64 --help 下面具体举几个例子: 创建虚拟磁盘(用qemu-img命令): 代码: mkdir kvm cd kvm /usr/local/kvm/bin/qemu-img create -f qcow2 winxp.img 10G 创建虚拟机: 代码: sudo /usr/local/kvm/bin/qemu-system-x86_64 -m 512 -drive file=/home/lm/kvm/winxp.img,cache=writeback -localtime -net nic,vlan=0,macaddr=52-54-00-12-34-01 -net tap,vlan=0,ifname=tap0,script=no -boot d -cdrom /home/lm/iso/winxp.iso -smp 2 -soundhw es1370 这里对各个参数说明一下: 代码: -m 512 分配512MB的内存给GUEST OS 代码: -drive file=/home/lm/kvm/winxp.img,cache=writeback 使用虚拟磁盘的文件和路径,并启用writeback缓存。 代码: -localtime 使用本地时间(一定要加这个参数,不然虚拟机时间会有问题) 代码: -net nic,vlan=0,macaddr=52-54-00-12-34-01 -net tap,vlan=0,ifname=tapo,script=no 使用网络,并连接到一个存在的网络设备tap0,注意mac地址一定要自己编一个,特别是如果你虚拟了多个系统并且要同时运行的话,不然就MAC冲突了,在 代码: -boot d 从光盘启动 (从硬盘启动则为 -boot c ) 代码: -cdrom /home/lm/iso/winxp.iso 使用的光盘镜像,如果要使用物理光驱的话就是 -cdrom /dev/cdrom 代码: -smp 2 smp处理器个数为2个,如果你是4核处理器,后面的数字就为4(如果不开启此选项,则只能以单核模式运行) 开始启动装系统了吧?是不是非常的快?如果你机器可以的话大概在15分钟左右就把XP装好了。 启动装好的虚拟机(很简单,上面的命令改两个参数就行): 代码: sudo /usr/local/kvm/bin/qemu-system-x86_64 -m 512 -drive file=/home/lm/kvm/winxp.img,cache=writeback -localtime -net nic,vlan=0,macaddr=52-54-00-12-34-01 -net tap,vlan=0,ifname=tap0,script=no -boot c -smp 2 -soundhw es1370 然后在客户端里设置好IP地址就可以使用了,但是KVM的显卡能力不行,可以通过rdesktop远程连接解决 代码: rdesktop 192.168.1.4:3389 -u administrator -p ****** -g 1280x750 -D -r sound:local \\分辨率可以自行设定,是不是比VirtualBox的无缝连接模式要爽?? 补充: 如果同时运行多个GUEST OS ,则网络设置要改一下,在/etc/network/interfaces 里加几个tap界面就行了,每个GUEST OS单独使用一个TAP,比如说现在要同时运行3个GUEST OS ,则配置文件如下: 代码: auto tap0 iface tap0 inet manual up ifconfig $IFACE 0.0.0.0 up down ifconfig $IFACE down tunctl_user lm \\lm是我的用户名,在这里换为你的用户名 auto tap1 iface tap1 inet manual up ifconfig $IFACE 0.0.0.0 up down ifconfig $IFACE down tunctl_user lm \\lm是我的用户名,在这里换为你的用户名 auto tap2 iface tap2 inet manual up ifconfig $IFACE 0.0.0.0 up down ifconfig $IFACE down tunctl_user lm \\lm是我的用户名,在这里换为你的用户名 auto br0 iface br0 inet static \\当然这里也可以使用DHCP分配 bridge_ports eth0 tap0 tap1 tap2 address 192.168.1.3 netmask 255.255.255.0 gateway 192.168.1.1 启动GUEST OS 代码: sudo /usr/local/kvm/bin/qemu-system-x86_64 -m 512-drive file=/home/lm/kvm/winxp.img,cache=writeback -localtime -net nic,vlan=0,macaddr=52-54-00-12-34-01 -net tap,vlan=0,ifname=tap0,script=no -boot c -smp 2 -soundhw es1370 把ifname=tap0换为你要tap1或者tap2就行了,MAC也要改噢。。 要注意,系统重启后要重新加载kvm内核模块: 代码: sudo modprobe kvm sudo modprobe kvm-amd //如果使用AMD处理器 sudo modprobe kvm-intel //如果是用INTEL处理器 当然,你也可以修改系统相关设置在启动时自动加载该模块。 同理,可以用此方法安装LINUX。装完了可以对比一下,是不是比VB和VM要爽得多呢? 其他比如像USB连接问题可以参考论坛里的帖子 我已经在我的系统里同时运行了4个CentOS 4.8 1个winxp sp3 1个win2003 sp2 5个FreeBSD 8.0 速度太快了,难以置信。 系统配置为:Athlon X2 5000+ 8G RAM 跑的Ubuntu 10.04.1 64bit 其实KVM的安装和使用都很方便简单的,大家要理解KVM各个参数的含义。最关键的就是KVM的网络桥接的设置,在这里大家要多看软件自身的文档,会有很大的帮助。 以上是KVM的最基础的实现方法,望大家多看文档,以便掌握更多更灵活的功能。 BTW: [b]现在已经找到了原来磁盘性能糟糕的原因,按照以往的方法是用 -hda disk.img 的方法来使用虚拟磁盘,现在版本更新以后时候 -drive file=/home/lm/kvm/winxp.img,cache=writeback 来使用虚拟磁盘,请广大使用KVM的用户注意这里的变化。 注:Ubuntu 10.04 LTS 下的安装源里的KVM的方法(qemu-kvm 0.12.3): 直接 代码: sudo apt-get install qemu-kvm 网络配置如上,是一样的。 大家注意一个问题,如果你虚拟的是WIN2003,那么切勿在-net参数中使用model=e1000,否则HOST和GUEST之间不能PING通 添加:半虚拟化驱动使用方式如下 WIN系统需要下载的驱动程序: http://www.linux-kvm.com 在左手边有一个Windows Guest Drivers,下载cdrom image和floppy image 使用版虚拟化驱动(virtio)可以得到更好的磁盘性能和网络性能,使用版虚拟化驱动的时候,KVM的启动参数如下(安装WIN时): 代码: sudo /usr/local/kvm/bin/qemu-system-x86_64 -m 512 -drive file=/home/lm/kvm/winxp.img,if=virtio,boot=on,cache=writeback -localtime -net nic,vlan=0,model=virtio,macaddr=52-54-00-12-34-01 -net tap,vlan=0,ifname=tap0,script=no -boot d -cdrom /home/lm/iso/winxp.iso -fda=/disk/virtio-win-1.1.11-0.vfd -smp 2 说明一下新的参数: 代码: 在file=/home/lm/kvm/winxp.img,if=virtio,boot=on,cache=writeback中 添加了if=virtio,通过virio来使用磁盘 代码: 在 -net nic,vlan=0,model=virtio,macaddr=52-54-00-12-34-01中 添加了model=virtio,通过virtio来使用网络 代码: -fda=/disk/virtio-win-1.1.11-0.vfd 驱动程序的软盘镜像,-fda为添加一个软盘驱动器 在安装WINDOWS的时候需要注意:在虚拟机启动从光盘引导启动WINDOWS安装的时候(最开始的时候)会提示你,按F6选择第三方驱动程序,按F6以后过几秒钟,它会出现选择第三方驱动的画面,按下S,会让你选择你要加载的第三方驱动。(网络太慢,图传不上来,大家可参考:http://www.linux-kvm.org/page/WindowsGuestDrivers/viostor/installation) 在WINDOWS安装完成以后,还要安装virtio网络驱动程序,修改KVM启动参数: 代码: sudo /usr/local/kvm/bin/qemu-system-x86_64 -m 512 -drive file=/home/lm/kvm/winxp.img,if=virtio,boot=on,cache=writeback -localtime -net nic,vlan=0,model=virtio,macaddr=52-54-00-12-34-01 -net tap,vlan=0,ifname=tap0,script=no -boot c -cdrom /home/lm/iso/virtio-win-1.1.11-0.iso -smp 2 启动虚拟机,启动好WIN系统以后,在WIN中安装网卡驱动程序(在设备管理器中安装),驱动程序就在虚拟机的光驱中。有时在安装过程中会出现问题,那么去掉cache=writeback重新安装试试。 现在主流的LINUX系统的内核都集成了virtio驱动,所以在使用半虚拟化驱动安装LINUX的时候可以直接安装,无需加载virtio驱动来安装。 注: 如果你使用的是raw文件系统或LVM分区,则应该将cache=writeback改为cache=none 建议大家使用LVM分区方式,这样虚拟机的磁盘性能可以接近物理机的磁盘性能。关于LVM的创建大家可以去查找相关文章,在这里给大家一个KVM使用LVM分区的示例: 代码:sudo /usr/local/kvm/bin/qemu-system-x86_64 -m 512 -drive file=/dev/vg0/lv1,if=virtio,boot=on,cache=none -localtime -net nic,vlan=0,model=virtio,macaddr=52-54-00-12-34-01 -net tap,vlan=0,ifname=tap0,script=no -boot c -smp 2下面的用法在网上查找得到的非常有用: 1 $qemu-img create -f qcow disk.img 128M 2 $qemu -hda disk.img -cdrom /root/cflinux-1.0.iso -boot d --enable-audio -boot d :从光驱引导 a(软盘引导) c(硬盘引导) d(光驱引导) -cdrom : ISO文件,也可以直接使用光驱设备(/dev/cdrom)...别忘了插入光盘 -hda : 就是虚拟机里的硬盘啦,也就是刚才qemu-img创建出的东东。 -enable-audio : 声卡支持 其它参数: -full-screen :Start in full screen. -usb: Enable the USB driver (will be the default soon) -kernel bzImage:Use bzImage as kernel image. -append cmdline:Use cmdline as kernel command line -initrd file:Use file as initial ram disk. 3 $qemu -hda disk.img 4 monitor下有几个常用的命令: savevm filename 将整个虚拟机当前状态保存起来 loadvm filename 恢复 sendkey keys 向VM中发送按键,就需要用 sendkey了 sendkey ctrl-alt-f2 ,In the virtual consoles, you can use Ctrl-Up, Ctrl-Down, Ctrl-PageUp and Ctrl-PageDown to move in the back log. 5 虚拟机上网。 $qemu redhat.img -enable-audio -net nic -net user -m 64 -m 64 使用64M内存,缺省下使用128M 6 ctrl-alt-f 全屏 ctrl-alt 主机/虚拟机鼠标切换 Ctrl-Alt-n Switch to virtual console ’n’. Standard console mappings are: 1 Target system display 2 Monitor 3 Serial port 7 宿主和客系统之间的文件共享 QEMU为你配置了一个虚拟局域网和DHCP服务器. 首先在宿主上配置好Samba,然后这样启动qemu(这里假设你有个qemu_share文件夹) 代码: qemu -smb $HOME/qemu_share -m 384 -localtime windows.img 在客系统Windows下,这样来访问共享文件 net use e: \\10.0.2.2\qemu_share 而且宿主机的IP地址永远是10.0.2.2,因此如果你在宿主Ubuntu上运行了服务器,同样可以访问,比如 ftp:\\10.0.2.2,等等. 8 qemu-img convert -f qcow <file_to_convert> -O raw <rawformat_filename> 将qcow格式的虚拟硬盘转换为raw格式。 9 export SDL_VIDEO_X11_DGAMOUSE=0 如果你遇到鼠标始终挂在右下角,请在启动QEMU前运行。 10. qemu -hda redhat9_4G.img -boot c -net tap -net nic,model=rtl8139桥联:1. 装载bridge内核模块。 用kldstat看一下,如果没有bridge.ko就 kldload bridge 嫌烦就在/boot/loader.conf中放入 bridge_load="YES" 下次重启后就不用你自己去load了。 2. 当然你的host os的网络必须已经配好,然后创建/etc/qemu-ifup内容如下: #!/bin/sh /sbin/ifconfig ${1##/*/} promisc up /sbin/sysctl net.link.ether.bridge.config="`/sbin/ifconfig -l`" /sbin/sysctl net.link.ether.bridge.enable=1 3. 启动qemu,在guest os里把IP地址、子网掩码、网关配好,就当你的局域网中新加了一台机器。如果有DHCP服务器,guest os也可配成动态获取IP。 至此大功大告成。提醒几点: 1. net.link.ether.bridge.config只在freebsd 5里才有。freebsd 4看手册找相应的内核参数代替,我记不得了。 2. 有些网卡(比如Broadcom 575X)会使得你的host os与guest os不能互通,但guest os与局域网内其他机器互通良好。呵呵,有点奇怪吧?但确实如此。我注意到这种网卡的设备名为bge,ifconfig -a能看到vlan tag,不知道是否和这个有关。 3. 这个算题外话吧:如果qemu在freebsd下经常引起系统hang,就禁用kqemu: . qmeu -no-kqemu ... 本桥联部分内容来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/27464/showart_290883.html
2012年12月04日
152 阅读
0 评论
0 点赞
2012-12-04
在debian 或UBUNTU上使用QEMU KVM安装XP
在debian 或UBUNTU上使用QEMU KVM安装XP http://qdmz.sinaapp.com安装KVM1.安装sudo apt-get install qemu kernel-package linux-source kqemu-source build-essential2.Qemu的二进制程序已经安装,但Qemu加速器安装的是源码,所以要加以编译cd /usr/src/linuxsudo module-assistant prepare kqemusudo module-assistant build kqemusudo module-assistant install kqemusudo depmod -a3.载入kqemu模块sudo modprobe kqemusudo mknod /dev/kqemu c 250 0sudo chmod 666 /dev/kqemu这一步如果要永久保存的话• Configure udev to create the /dev/kqemu device node upon loading the kqemu module: o Create /etc/udev/rules.d/60-kqemu.rules gksu gedit /etc/udev/rules.d/60-kqemu.rules with the following content: KERNEL=="kqemu", NAME="%k", MODE="0660", GROUP="kqemu"o Change the content of /etc/modprobe.d/kqemu to: options kqemu major=0• Create a group "kqemu" and add all users who should be allowed to use QEMU with acceleration to this group: sudo addgroup --system kqemusudo adduser myUser kqemu• Make sure to update your environment before proceeding to reflect the fact, that your user is now part of the kqemu group (for example by logging in and out).4.创建windows虚拟硬盘qemu-img create -f qcow windows.img 2G(这里的2G大小可以自己设置,使用qcow文件格式,因此它根据用户使用而增大减小,但最大上限为2G)5.从光驱安装windowsqemu -localtime -cdrom /dev/cdrom -m 384 -boot d windows.img(同样也可以从硬盘镜像安装qemu -localtime -cdrom cdimagefile.iso -m 384 -boot d windows.img这里的-m 384是指定内存,384 MB是很好的XP最小内存如果内存不够,可以这样代码:sudo umount /dev/shmsudo mount -t tmpfs -o size=400m none /dev/shm)*64位用户请使用'qemu-system-x86_64'而不是'qemu',否则"-kernel-kqemu"不能启用.*安装windows 2000请加入参数'-win2k-hack'.3.2 使用XP 代码:$ qemu-system-x86_64 . -hda windows.img -cdrom /dev/cdrom -boot c -m 384注意,要使用宿主机的硬盘或者光驱或者声卡的话,可以使用添加参数 引用:-hdb /dev/xxx 和 -cdrom /xxx 和-soundhw all这些都可以在qemu-system-x86_64的man文档中查到,这里就不多说了。 进去之后,就能上网了。6.使用Ctrl + Alt 控制切换Ctrl + Alt + F 全屏切换7.保存配置每次启动qemu之前都要手动载入kqemu模,可以将那些命令写入/etc/rc.local,这样系统启动就会运行这些命令8.网络请参考http://fabrice.bellard.free.fr/qemu/qemu-doc.html9.宿主和客系统之间的文件共享QEMU为你配置了一个虚拟局域网和DHCP服务器.首先在宿主Ubuntu上配置好Samba,然后这样启动qemu(这里假设你有个qemu_share文件夹)代码:qemu -smb $HOME/qemu_share -m 384 -localtime windows.img在客系统windows下,这样来访问共享文件net use e: \\10.0.2.2\qemu_share而且宿主Ubuntu的IP地址永远是10.0.2.2,因此如果你在宿主Ubuntu上运行了服务器,同样可以访问,比如ftp:\\10.0.2.2,等等.10.挂载虚拟硬盘,先要确保关闭qemu代码:sudo mount -o loop,offset=32256 windows.img /mnt11.保存和恢复虚拟机的状态当你安装好了一个虚拟机后,你可以在其上创建一个"叠加镜像",qemu-img create -b windows.img -f qcow windows.ovl现在你可以运行叠加镜像qemu windows.ovl -enable-audio -user-net -localtime -smb qemu_share叠加镜像非常小,只保存对原始镜像作出的改变,如果你想回到安装后的初始状态,只需简单地删掉叠加镜像,然后创建一个新的.12.运行QEMU命令当QEMU正在运行时,他还可以接受命令在QEMU窗口按CTRL+ALT+2,会出想QEMU监视器,输入help可以看到你能做很多事情退出请按CTRL+ALT+113.将raw格式的虚拟硬盘转换为qcow格式qemu-img convert windows.img -O qcow windows.qcow14.故障解决如果你遇到鼠标始终挂在右下角,请在启动QEMU前运行export SDL_VIDEO_X11_DGAMOUSE=0在debian 或UBUNTU上使用QEMU KVM安装XP http://qdmz.sinaapp.com1 $qemu-img create -f qcow disk.img 128M 2 $qemu -hda disk.img -cdrom /root/cflinux-1.0.iso -boot d --enable-audio -boot d :从光驱引导 a(软盘引导) c(硬盘引导) d(光驱引导) -cdrom : ISO文件,也可以直接使用光驱设备(/dev/cdrom)...别忘了插入光盘 -hda : 就是虚拟机里的硬盘啦,也就是刚才qemu-img创建出的东东。 -enable-audio : 声卡支持 其它参数: -full-screen :Start in full screen. -usb: Enable the USB driver (will be the default soon) -kernel bzImage:Use bzImage as kernel image. -append cmdline:Use cmdline as kernel command line -initrd file:Use file as initial ram disk. 3 $qemu -hda disk.img 4 monitor下有几个常用的命令: savevm filename 将整个虚拟机当前状态保存起来 loadvm filename 恢复 sendkey keys 向VM中发送按键,就需要用 sendkey了 sendkey ctrl-alt-f2 ,In the virtual consoles, you can use Ctrl-Up, Ctrl-Down, Ctrl-PageUp and Ctrl-PageDown to move in the back log. 5 虚拟机上网。 $qemu redhat.img -enable-audio -net nic -net user -m 64 -m 64 使用64M内存,缺省下使用128M 6 ctrl-alt-f 全屏 ctrl-alt 主机/虚拟机鼠标切换 Ctrl-Alt-n Switch to virtual console ’n’. Standard console mappings are: 1 Target system display 2 Monitor 3 Serial port 7 宿主和客系统之间的文件共享 QEMU为你配置了一个虚拟局域网和DHCP服务器. 首先在宿主上配置好Samba,然后这样启动qemu(这里假设你有个qemu_share文件夹) 代码: qemu -smb $HOME/qemu_share -m 384 -localtime windows.img 在客系统Windows下,这样来访问共享文件 net use e: \\10.0.2.2\qemu_share 而且宿主机的IP地址永远是10.0.2.2,因此如果你在宿主Ubuntu上运行了服务器,同样可以访问,比如 ftp:\\10.0.2.2,等等. 8 qemu-img convert -f qcow <file_to_convert> -O raw <rawformat_filename> 将qcow格式的虚拟硬盘转换为raw格式。 9 export SDL_VIDEO_X11_DGAMOUSE=0 如果你遇到鼠标始终挂在右下角,请在启动QEMU前运行。 10. qemu -hda redhat9_4G.img -boot c -net tap -net nic,model=rtl8139 快速启动 在我们下载并解压linux镜像(linux.img)以后,我们可以输入下面的命令来启动: qemu linux.img 这样Linux就会启动并会展示给我们一个提示. 调用 用法:qemu [option] [disk_image] disk_image是代表IDE的硬盘的硬盘镜像. 一般选项: -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).在默认的情况下由硬盘启动. -snapshot 写入临时文件而不是写入磁盘镜像文件.在这样的情况下,并没有写回我们所使用的磁盘镜像文件.然而我们却可以通过按下C-a s来强制写回磁盘镜像文件. -m megs 设置虚拟内存尺寸为megs M字节.在默认的情况下为128M. -smp n 模拟一个有n个CPU的SMP系统.为PC机为目标,最多可以支持255个CPU. -nographic 在通常情况下,Qemu使用SDL来显示VGA输出.使用这个选项,我们可以禁止所有的图形输出,这样Qemu只是一个简单的命令行程序.模拟的串口将会重定向到命令行.所以,我们仍然可以在Qemu平台上使用串口命令来调试Linux内核. -k language 使用键盘布局语言(例如fr为法语).这个选项只有在不易得到PC键盘的情况下使用.我们在PC/Linux或是PC/Windows主机不需要使用这个选项.可用的布局如下: ar de-ch es fo fr-ca hu ja mk no pt-br sv da en-gb et fr fr-ch is lt nl pl ru th de en-us fi fr-be hr it lv nl-be pt sl tr 默认的为en-us -audio-help 这个选项将会显示声音子系统的帮助:驱动列表以及可调用的参数. -soundhw card1,card2 .... or -soundhw all 允许声音并选择声音硬件.使用?可以列出所有可用的声音硬件 qemu -soundhw sb16,adlib hda qemu -soundhw es1370 hda qemu -soundhw all hda qemu -soundhw ? -localtime 设置时钟为本地时间(默认为UTC时间).如果在MS-DOS或是Windows上这个选项则需要正确的日期. -full-screen 以全屏方式启动. -pidfile file 在file文件中存许Qemu的进程PID.如果我们是由脚本启动的,这个选项是相当有用的. -win2k-hack 当安装Windows 2000时可以使用这个选项来避免磁盘错误.在安装上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[,vlan=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.img -net nic,vlan=0 -net tap,vlan=0,ifname=tap0 \ -net nic,vlan=1 -net tap,vlan=1,ifname=tap1 -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 first QEMU instance qemu 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 instance qemu linux.img -net nic,macaddr=52:54:00:12:34:57 -net socket,connect=127.0.0.1:1234 -net socket[,vlan=n][,fd=h][,mcast=maddr:port] 创建一个VLAN n,并使用UDP 多址通信套掊口与其他的QEMU虚拟机进行共享,尤其是对于每一个使用多址通信地址和端口的QEMU使用同一个总线. 在这里我们要注意以下几点: 1 几个QEMU可以运行在不同的主机上但却使用同一个总线(在这里假设为这些主机设置了正确的多址通信) 2 mcast支持是与用户模式Linux相兼容的. 3 使用fd=h指定一个已经打开的UDP 多址通信套接口. 例如: # launch one QEMU instance qemu linux.img -net nic,macaddr=52:54:00:12:34:56 -net socket,mcast=230.0.0.1:1234 # launch another QEMU instance on same "bus" qemu linux.img -net nic,macaddr=52:54:00:12:34:57 -net socket,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 -net socket,mcast=230.0.0.1:1234 下面的为用户模式Linux的例子: # launch QEMU instance (note mcast address selected is UML's default) qemu linux.img -net nic,macaddr=52:54:00:12:34:56 -net socket,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客户端从主机下载到本地.在本地的TFTP客 户端必须以二进制模式进行配置(使用Unix的TFTP客户端的bin命令).在客户机上的主机IP地址如通常的10.0.2.2. -smb dir 当使用用户模式的网络堆栈,激活一个内建的SMB服务器,这样Windows系统就可以透明的访问主机的dir目录中的文件.在客户机的Windows系统中,下面的行: 10.0.2.4 smbserver 必 须添加在文件C:\WINDOWS\LMHOSTS' (for windows 9x/Me)或者是C:\WINNT\SYSTEM32\DRIVERS\ETC\LMHOSTS(Windows NT/2000).然后可以用\\smbserver\qemu的方式访问dir.在这里我们要注就是在主机系统中必须安有SAMBA服务器. -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 host qemu -redir tcp:6001::6000 [...] # this host xterm should open in the guest X11 server xterm -display :1 To redirect telnet connections from host port 5555 to telnet port on the guest, use the following: # on the host qemu -redir tcp:5555::23 [...] telnet localhost 5555 然后当我们在主机telnet localhost 5555上使用时,我们连接到了客户机的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'。主机的串口参数通过模拟进行设置。 /dev/parportN (Linux)使用主机的并口N。当前只可以使用SPP的并口特征。 file:filename 将输出写入到文件filename中。没有字符可读。 stdio (Unix)标准输入/输出 pipe:filename (Unix)有名管道filename 在图形模式下的默认设备为vc,而在非图形模式下为stdio.这个选项可以被多次使用,最多可以模拟4个串口。 '-parallel dev' 重定向虚拟并口到主机的设备dev(与串口相同的设备)。在Linux主机上,`/dev/parportN'可以被用来使用与相应的并口相连的硬件设备。这个选项可以使用多次,最多可以模拟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 <= c <= 16383, 1 <= h <= 16, 1 <= s <= 63),并且可以选择强制BIOS的转换模式(t=none, lba or auto).通常QEMU可以检测这些参数.这个选项对于老的MS-DOS磁盘映像是相当有用的. `-std-vga' 模拟一个Bochs VBE扩展的标准VGA显卡(默认情况下为Cirrus Logic GD5446 PCI VGA) `-loadvm file' 从一个保存状态启动. 组合键 在图形模拟时,我们可以使用下面的这些组合键: Ctrl-Alt-f 全屏 Ctrl-Alt-n 切换虚拟终端'n'.标准的终端映射如下: 1 目标系统显示 2 临视器 3 串口 Ctrl-Alt 抓取鼠标和键盘 在虚拟控制台中,我们可以使用Ctrl-Up, Ctrl-Down, Ctrl-PageUp 和 Ctrl-PageDown在屏幕中进行移动. 在模拟时,如果我们使用`-nographic'选项,我们可以使用Ctrl-a h来得到终端命令: Ctrl-a h 打印帮助信息 Ctrl-a x 退出模拟 Ctrl-a s 将磁盘信息保存入文件(如果为-snapshot) Ctrl-a b 发出中断 Ctrl-a c 在控制台与监视器进行切换 Ctrl-a Ctrl-a 发送Ctrl-a 磁盘映像 从0.6.1起,QEMU支持多种磁盘映像格式,包括增长的磁盘映像,压缩与加密的磁盘映像. 我们可以用下面的命令来创建一个磁盘映像: qemu-img create myimage.img mysize 这里myimage.img是磁盘映像的文件名,而mysize是以K表示的尺寸.我们可以使用M前缀来使用M表示尺寸或是G作为前缀使用G表示尺寸. qemu-img的调用方法: 方法:qemu-img command [command options] 可以支持下面的一些命令: `create [-e] [-b base_image] [-f fmt] filename [size]' `commit [-f fmt] filename' `convert [-c] [-e] [-f fmt] filename [-O output_fmt] output_filename' `info [-f fmt] filename 命令参数 filename 磁盘映像文件名. base_image 只读的磁盘映像,可以作为拷贝到写映像的基础.写映像上的拷贝只存储修改的数据. fmt 磁盘映像格式.在大多数情况下可以自动检测.可以支持下面的格式: raw raw 磁盘格式(默认).这种格式有简单并且易于移植到其他模拟器的优点.如果我们的文件系统支持holes(例如在Linux上的ext2或是ext3),然 后只有写入的部分保持空白.使用qemu-img info来得到映像使用的实际的大小或是在Unix/Linux上使用 ls -ls. qcow QEMU映像格式.最通用的格式.使用他可以获得较小的映像(如果我们的文件系统不支持holes,例如在Windows上,这是相当有用的),可以选用AES加密或是基于zlib的压缩. cow 在写映像格式上的用户模式的Linux拷贝.在QEMU中作为增长的映像格式使用.这个选项只是为了与以前版本的兼容,并不能在Win32上使用. vmdk VMware 3 或是 4 兼容的映像格式. cloop Linux压缩的循环映像,重用直接压缩的CD-ROM映像. size 以K表示的磁盘映像的尺寸.同时可以支持M或是G作为前缀. output_filename 目的磁盘映像文件名 output_fmt 目标格式 -c 表明目标映像必须是压缩的(只是qcow格式) -e 表明目标映像必须是加密的(只是qcow格式) qemu常见使用方法
2012年12月04日
181 阅读
0 评论
0 点赞
2012-11-08
如何给kvm qemu 安装virtio驱动
今天在豹狗拿到了一测试kvm 512M的 测试安装win系统 又把原来的文件找出来备用 https://www.minkdog.com/manage/cart.php?gid=84IP 的 可以玩下 kvm安装windows xp、windows7时磁盘使用virtio驱动kvm的virtio驱动可以提升磁盘的使用性能,因此在安装系统、使用系统的时候使用virtio驱动会让guest faster。默认的windows xp、windows7的驱动不包含virtio驱动,因此如果想在系统中使用磁盘的virtio驱动时,有二种方法:1. 使用IDE方式来安装系统,安装系统完成后,在guest中安装virtio磁盘驱动,然后再修改kvm启动参数,设置磁盘为virtio。2. 在安装时直接加载virtio驱动。显然第二种更加简单一些。安装Win XP时加载virtio驱动由于XP的安装程序只支持从软盘加载驱动程序,因此需要一个软盘的镜像文件,在KVM启动的时候进行加载。/usr/bin/kvm -rtc base=localtime,clock=host -cpu host -smp 1 -m 2048 \ -drive file=/dev/vg-xen/winxp,if=virtio,cache=writeback -usb -device usb-tablet,id=input0 \ -net nic,macaddr=52:54:00:94:78:e7,model=virtio -net tap,vhost=on \ -vnc :1 -spice port=5902,password=a -vga qxl -monitor stdio \ -drive file=/home/lis/xp.iso,index=0,media=cdrom -boot once=d \ -drive file=/home/lis/virtio-win-1.1.16_1.vfd,if=floppy -daemonize即使用-drive file=/home/lis/virtio-win-1.1.16_1.vfd,if=floppy来指定虚拟出来的软驱,在xp的安装开始,按F8加载驱动程序即可。上述的网卡驱动使用的也是virtio驱动,启动后XP会无法直接驱动,需要安装驱动程序,驱动程序在 http://alt.fedoraproject.org/pub/alt/virtio-win/latest/images/bin/ 可以找到。上述的虚拟软盘文件目前redhat已经不提供了,可以在文中最后链接下载。安装windows7时加载virtio驱动windows7在安装过程中,可以从光盘读取磁盘的驱动程序,因此只要挂载二个iso,模拟二个光驱即可,安装的iso指定序号为0、驱动的ISO指定序号为1。/usr/bin/kvm -rtc base=localtime,clock=host -cpu host -smp 1 -m 2048 \ -drive file=/dev/vg-xen/win7,if=virtio,cache=writeback -usb -device usb-tablet,id=input0 \ -net nic,macaddr=52:54:00:94:78:e7,model=virtio -net tap,vhost=on \ -vnc :1 -spice port=5902,password=a -vga qxl -monitor stdio \ -drive file=/home/lis/win7.iso,index=0,media=cdrom \ -drive file=/home/lis/virtio-win-0.1-22.iso,index=1,media=cdrom -boot once=d -daemonize在windows7安装过程中,选择加载第二个光盘里的磁盘virtio驱动就可以了,这个ISO中也包含了网卡的virtio驱动。virtio驱动的软盘镜像下载virtio-win-1.1.16_1.vfd.tar.gz kvm windows 2008虚拟机加载virtio驱动如何给kvm qemu 安装virtio驱动【准备工作】1.下载驱动virtio-win-1.1.16.vfdhttp://www.linuxwind.org/download/virtio-win-1.1.16.vfd2012-07-21更新:感谢yz分享最新版本virtio驱动http://www.linuxwind.org/download/virtio-win-0.1-30.vfd http://alt.fedoraproject.org/pub/alt/virtio-win/latest/images/bin/virtio-win-0.1-22.iso2012-08-15更新:请使用这个版本的virtio,旧版本会出现不定期断网的情况。http://alt.fedoraproject.org/pub/alt/virtio-win/latest/images/bin/virtio-win-0.1-30.iso2.安装磁盘驱动qemu-img create -f raw win2008x64.img 20G/usr/libexec/qemu-kvm -m 1024 -cdrom Windows_2008R2_64-bit_ChnSimp_X15-59777.ISO -drive file=win2008x64.img,if=virtio,index=1 -fda /imgs/virtio-win-1.1.16.vfd -boot d -net nic -net user -nographic -vnc :23.启动vncviewer登陆安装,安装的时候选择高级安装,加载磁盘驱动即可。找到硬盘后安装系统。然后关闭虚拟机4.安装网卡驱动启动虚拟机,需要修改启动参数如下:/usr/libexec/qemu-kvm -m 1024 -cdrom virtio-win-0.1-22.iso -drive file=win2008x64.img,if=virtio,index=1 -boot d -net nic,model=virtio -net user -nographic -vnc :2
2012年11月08日
149 阅读
0 评论
0 点赞
1
2