概要:
目标,使用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等启动配置