-- linux爱好者,业余时间热衷于分析linux内核源码 -- 目前主要研究云计算和虚拟化相关的技术,主要包括libvirt/qemu,openstack,opennebula架构和源码分析。 -- 第五届云计算大会演讲嘉宾 微博:@Marshal-Liu
分类: LINUX
2010-03-16 15:35:29
yum install bridge-utils kvm
bridge-utils是网卡桥接工具,
# qemu-img create -f qcow2 turbo-10.5.5-rc2.img 20G
Formatting 'turbo-10.5.5-rc2.img', fmt=qcow2, size=20971520 kB
# file turbo-10.5.5-rc2.img
turbo-10.5.5-rc2.img: QEMU Copy-On-Write disk image version 2, size 5 + 0
配置 /etc/sysconfig/network-scripts
下面的网络脚本
# cat /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
ONBOOT=yes
BOOTPROTO=static
IPADDR=172.16.70.30
NETMASK=255.255.252.0
GATEWAY=172.16.68.1
TYPE=Bridge
# cat /etc/sysconfig/network-scripts/ifcfg-eth0
# 3Com Corporation 3c905B 100BaseTX [Cyclone]
DEVICE=eth0
#BOOTPROTO=dhcp
#HWADDR=00:01:02:8C:50:09
ONBOOT=yes
BRIDGE=br0
增加一个桥接网络接口,并把刚才配置的eth0添加到桥接口
brctl addbr br0 # 创建一个桥接口
brctl addif br0 eth0 # 添加eth0到br0,重要
使用一个下面的脚本:
# cat /etc/init.d/qemu-ifup
#!/bin/bash
switch=br0
if [ -n "$1" ];then
/sbin/ip link set $1 up
sleep 0.5s
/usr/sbin/brctl addif $switch $1
exit 0
else
echo "Error: no interface specified"
exit 1
fi
可以使用桥接网卡启动qemu-kvm,并使用GTES10.5.5的两个文件通过 NFS安装系统:
# qemu-kvm -m 512 -hda turbo-10.5.5-rc2.img -kernel vmlinuz \
-initrd initrd.img -net nic -net tap,script=/etc/init.d/qemu-ifup --daemonize
也可以使用iso安装,这样对于多张iso发行版的linux需要在qemu的控制 台换盘:
# qemu-kvm -m 512 -hda turbo-10.5.5-rc2.img -cdrom 你的iso路径 \
-net nic -net tap,script=/etc/init.d/qemu-ifup -boot d --daemonize
进入qemu的控制台,在鼠标聚焦到qemu界面时候,按住 Ctrl+Alt+2 进 入控制台:
(qemu) change cdrom 你的另外一张iso
上面命令如果提示:"device not found"。可能是设备映射出错,可以这样:
(qemu) info block
...
(qemu) change ide1-cd0 iso文件
# qemu-kvm -m 512 -hda xp.img -net nic,macaddr=00:00:11:33:02:02 \
-net tap,ifname=tap2,script=/etc/init.d/qemu-ifup \
-localtime -vnc 172.16.70.30:2 --daemonize
上面让kvm虚拟机在后台运行,并启动vnc服务器,这样我们可以用vnc客 户端链接172.16.70.30:5092这个地址。
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
qemu -soundhw sb16,adlib hda
qemu -soundhw es1370 hda
qemu -soundhw all hda
qemu -soundhw ?
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
# 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
例如:
# 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
# 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服务器上。
当我们使用这些选项时,我们可以使用一个指定的内核,而没有将他 安装在磁盘镜像中。这对于简单的测试各种内核是相当有用的。
在图形模式下的默认设备为vc,而在非图形模式下为stdio.这个选项 可以被多次使用,最多可以模拟4个串口。
重定向虚拟并口到主机的设备dev(与串口相同的设备)。在Linux主 机上,`/dev/parportN'可以被用来使用与相应的并口相连的硬件设 备。这个选项可以使用多次,最多可以模拟3个并口。
重定向临视器到主机的设备dev(与串口相同的设备)。在图形模式 下的默认设备为vc,而在非图形模式下为stdio。
在图形模拟时,我们可以使用下面的这些组合键:
在虚拟控制台中,我们可以使用Ctrl-Up, Ctrl-Down, Ctrl-PageUp 和 Ctrl-PageDown在屏幕中进行移动.
在模拟时,如果我们使用`-nographic'选项,我们可以使用Ctrl-a h来得到终端命令:
从0.6.1起,QEMU支持多种磁盘映像格式,包括增长的磁盘映像,压缩与加 密的磁盘映像.
我们可以用下面的命令来创建一个磁盘映像:
qemu-img create myimage.img mysize
这里myimage.img是磁盘映像的文件名,而mysize是以K表示的尺寸.我们 可以使用M前缀来使用M表示尺寸或是G作为前缀使用G表示尺寸.
qemu-img选项
可以支持下面的一些命令:
`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
命令参数
raw 磁盘格式(默认).这种格式有简单并且易于移植到其他模拟器的 优点.如果我们的文件系统支持holes(例如在Linux上的ext2或是 ext3),然后只有写入的部分保持空白.使用qemu-img info来得到映 像使用的实际的大小或是在Unix/Linux上使用 ls -ls.
QEMU映像格式.最通用的格式.使用他可以获得较小的映像(如果我们 的文件系统不支持holes,例如在Windows上,这是相当有用的),可以 选用AES加密或是基于zlib的压缩.
在写映像格式上的用户模式的Linux拷贝.在QEMU中作为增长的映像 格式使用.这个选项只是为了与以前版本的兼容,并不能在Win32上使 用.
VMware 3 或是 4 兼容的映像格式.
Linux压缩的循环映像,重用直接压缩的CD-ROM映像.
以K表示的磁盘映像的尺寸.同时可以支持M或是G作为前缀.
目的磁盘映像文件名
目标格式
表明目标映像必须是压缩的(只是qcow格式)
表明目标映像必须是加密的(只是qcow格式)