qemu的简单使用

概要:
目标,使用redhat6.5作为主机(这个主机也是vmware虚拟出来的),建立一个虚拟机tinycore5.2
并使这个虚拟机能ping通主机能访问的ip

1,所用工具,2,使用,3,网络,其他
以下称我的本机为server,建立的虚拟机为client

具体内容如下:
1.所用工具
在redhat6.5作为qemu的server进行测试,
TinyCore-5.2.iso
vncviever(如果想测试vnc,可以安装vncserver:yum install tigervnc-server )
qemu-2.0.0

2.使用
qemu的使用
dd if=/dev/zero of=tinycore.img bs=1024000k count=1
mkfs.ext2 -i 1024 -F tinycore.img

创建2G的磁盘,格式化成ext2(参考http://wenku.baidu.com/link?url=apsPQa9UHsJI-Lb0Sdh3FZ_Y8tE-HQV0wwl_9l0JIv2lsjz4pNDJssyUodFQDUYvfrm2lQ4E-RypIpqa_hoJww6pygBT9mUo-mIA1Nq75ta)
无网络模式用

  
qemu-system-i386 -m 512 -cdrom TinyCore-5.2.iso -hda tinycore.img -boot d   


qemu-system-i386 -m 512 -cdrom TinyCore-4.3.1.iso -hda tinycore.img -boot d  -vnc 192.168.137.208:1

使用vncviewer
localhost:5900
可以进入虚拟机
但是虚拟机不能访问外网
在虚拟机中fdisk -l 可以看到hda为 tinycore.img 2G
安装到硬盘(忽略)

3.网络
如何让虚拟机于外网链接:
使用tap方式,
先检查内核是否支持(参考http://www.cnblogs.com/huqingyu/archive/2005/04/03/131102.html)

[root@mytest net]# pwd  
/lib/modules/2.6.32-431.11.2.el6.x86_64/kernel/drivers/net  
[root@mytest net]# ls tun.ko   
tun.ko  
[root@mytest net]# depmod  
[root@mytest net]# lsmod |grep tun  
[root@mytest net]# modprobe tun  
[root@mytest net]# lsmod |grep tun  
tun                    17095  0   
ls -l /dev/net/tun  

如果很不幸,你没看到它,就需要自己手动做这些工作了  
[root@mytest net]#mkdir /dev/net 
[root@mytest net]#mknod /dev/net/tun c 10 200 
假设server设置成192.168.0.11

view plaincopy to clipboardprint?
   
vim /etc/qemu-ifup  
#!/bin/sh  
/sbin/ifconfig $1 192.168.0.11   
  
chmod u+x /etc/qemu-ifup  
qemu-system-i386 -m 512 -cdrom TinyCore-5.2.iso -hda tinycore.img -boot d -net nic,model=virtio,macaddr=00:16:3e:22:22:22 -net tap  

启动qemu建立虚拟机 
 
设置网络 
echo 1 > /proc/sys/net/ipv4/ip_forward   
iptables -A FORWARD -s 192.168.0.110/24 -j ACCEPT   
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT     
iptables -t nat -A POSTROUTING -s 192.168.0.110/24 -j SNAT --to 10.217.12.244
  
或者
echo “1″ > /proc/sys/net/ipv4/ip_forward 写入脚本/etc/rc.d/rc.local
或者 在/etc/sysconfig/network脚本中添加 FORWARD_IPV4=”YES”
参考http://blog.sina.com.cn/s/blog_a94d887a01017b01.html
检查网络会看到

  
ifconfig多了一个 
tap0      Link encap:Ethernet  HWaddr 8E:37:C8:DC:1E:AE    
          inet addr:192.168.0.11  Bcast:192.168.0.255  Mask:255.255.255.0  
          inet6 addr: fe80::8c37:c8ff:fedc:1eae/64 Scope:Link  
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1  
          RX packets:207 errors:0 dropped:0 overruns:0 frame:0  
          TX packets:12 errors:0 dropped:0 overruns:0 carrier:0  
          collisions:0 txqueuelen:500   
          RX bytes:66147 (64.5 KiB)  TX bytes:888 (888.0 b)  

表示以tap方式启动net,虚拟机的mac地址为00:16:3e:22:22:22,使用nic模式

假设我要把client的ip设置成192.168.0.110
在client里面设置:

view plaincopy to clipboardprint?
  
ifconfig eth0 192.168.0.110 netmask 255.255.255.0  
这里就可以ping通server了 
route add default gw 192.168.0.11 
这样就可以ping通server能访问的外网的ip了 
关于网络
参考http://hi.baidu.com/wangpeng1314/item/2768da1ea66295fa64eabf7a
网络参考

http://www.ming4.com/news/1176.html

4.其他,如果使用vncserver测试vncviewer

view plaincopy to clipboardprint?
  
vncserver :1                     设置密码  
vim /etc/sysconfig/vncservers  
VNCSERVERS="1:root"  
 service vncserver restart  
netstat -ntlp|grep vnc  

客户端 
vncviever 
10.217.12.244:5901 
 
如果其他机器也要访问qemu开的vnc,需要加 
-vnc 10.217.12.244:1 
比如 
qemu-system-i386 -m 512 -cdrom TinyCore-5.2.iso -hda tinycore.img -boot d -net nic,model=virtio,macaddr=00:16:3e:22:22:22 -net tap -vnc 10.217.12.244:1  

 
其他机器访问vncviewer  
10.217.12.244:1 
windows的vncviewer如果闪退
VNC是个不错的工具,今天掏出VNC Viewer来连接一台N久没登陆的服务器看看,输入密码连上后直接闪退,可能是ColourLevel的问题。
依次点Option–>Advanced–>Expert找到ColourLevel,默认值是pal8,修改为rgb222或full。
重新连接,没有问题了。

注意,-vnc 绑定ip的时候要绑定ifconfig能看得到的ip

如果想不重启修改img的内容
mount -t ext2 -o loop linux-0.2.img temp
进去修改即可

猜测:如果获取的某个img起不来,可以mount进去,尝试修改grup等启动配置

你可能感兴趣的:(虚拟机,linux,qemu)