Chinaunix首页 | 论坛 | 博客
  • 博客访问: 408375
  • 博文数量: 59
  • 博客积分: 5195
  • 博客等级: 大校
  • 技术积分: 645
  • 用 户 组: 普通用户
  • 注册时间: 2006-12-01 14:38
文章分类

全部博文(59)

文章存档

2017年(1)

2011年(10)

2010年(1)

2009年(9)

2008年(1)

2007年(35)

2006年(2)

我的朋友

分类: LINUX

2009-09-04 18:19:57

qemu安装:
1、
apt-get install qemu kernel-package linux-source kqemu-source build-essential
2、
cd /usr/src/linux
module-assistant prepare kqemu
module-assistant build kqemu
module-assistant install kqemu
depmod -a
3、
modprobe kqemu
mknod /dev/kqemu c 250 0
chmod 666 /dev/kqemu

一、获取powerpc虚拟镜像

1.手动生成
下载debian-502a-powerpc-netinst.iso文件
1)生成镜像文件,大小自定义
qemu-img create -f qcow ppc.qcow 2G
默认生成.raw格式的镜像文件。qcow应该算是qemu下最佳格式,它的优点在于磁盘映像的大小与表示映像的物理文件的大小不同,比如一个空的4GB磁盘映像只需要16KB的物理空间
qemu支持nbd parallels qcow2 vvfat vpc bochs dmg cloop vmdk qcow cow host_device raw等格式
2)安装
qemu-system-ppc -hdc ppc.qcow -cdrom debian-502a-powerpc-netinst.iso -boot d
3)运行
qemu-system-ppc -hdc debian_lenny_powerpc_small.qcow -redir tcp:22000::22 -m 512
-redir tcp:22000::22   重定向TCP或者UDP连接从主机端口到虚拟机端口。监听虚拟机上的22端口,即sshd服务。当主机ssh指定22000时就连到22端口
-m 512    指定虚拟机的内存大小(512MB)
4)数据共享 (此处默认是user模式,也可以用tap/tun模式)
在ppc虚拟机里面安装openssh-server,启动sshd服务
ssh root@127.0.0.1 -p 22000  [用root用户登陆ppc虚拟机]
scp lb@192.168.100.181:/home/lb/test.txt /root  [把主机192.168.100.181上的test.txt文件传送到ppc虚拟机的root目录下]
scp -r doc/ lb@192.168.100.181:/home/lb        [把ppc虚拟机上的doc目录传送到主机192.168.100.181的/home/lb目录下]

2.下载使用
到~aurel32/qemu/powerpc处下载for ppc的镜像文件,拿来直接使用
1)gunzip debian_lenny_powerpc_small.qcow.gz
2)qemu-system-ppc -hdc debian_lenny_powerpc_small.qcow -redir tcp:22000::22 -m 512

二、生成rootfs
如果需要图形,可以在rootfs中安装x-server(xorg)和x-window(xfce、gnome、kde等),记得chroot ^_^
在powerpc虚拟机中执行以下命令:
1)apt-get install debootstrap
2)scp lb@192.168.100.181:/home/lb/debian-502a-powerpc-netinst.iso .
3)mount -o loop debian-502a-powerpc-netinst.iso /mnt
4)mkdir rootfs
5)debootstrap --arch powerpc lenny ./rootfs/ file:/mnt/debian

三、nfs挂载
powerpc虚拟机:
1)cd rootfs
2)tar cvf rootfs.tar $(ls . | grep -v -e tmp -e mnt -e proc -e media -e sys)
3)scp rootfs.tar lb@192.168.100.181:/home/lb

pc机:
1)mkdir rootfs
2)tar xvf rootfs.tar -C rootfs
3)cd rootfs
4)mkdir {tmp,mnt,proc,media,sys}

powerpc目标板:
在bootload(u-boot)中设置nfs参数,如:
setenv bootargs console=ttyS0,115200 console=tty0 root=/dev/nfs rw nfsroot=192.168.100.181:/home/lb/rootfs resolution=1024x768 ip=192.168.100.230

[
注:.qcow格式的镜像文件不能直接被mount,要先转换成.raw格式
qemu-img convert -f qcow debian_lenny_powerpc_small.qcow -O raw debian_lenny_powerpc_small.raw
mount -o loop,offset=32256 debian_lenny_powerpc_small.raw /mnt/cdrom

raw和qcow的区别:
raw格式是一种"直读直写"的格式,不具备特殊的特性
qcow格式有一些高级的特性,可以对它进行加密和压缩,以节省磁盘空间并保证数据安全,但一旦损坏将很难恢复
]

qemu相关
qemu支持的平台有: arm x86_64 mips ppc sparc等
如果是arm平台用qemu-system-arm命令;如果是x86平台用qemu-system-x86_64命令

Ctrl+Alt+F    全屏和恢复


网络模式
qemu有两种上网方式:
user mode network:
这种方式实现虚拟机上网很简单,类似vmware里的nat,qemu启动时加入-user-net参数(默认情况下就是-user-net),虚拟机里使用dhcp方式,即可与互联网通信,但是这种方式虚拟机与主机的通信不方便。
tap/tun network:
这种方式要比user mode复杂一些,但是设置好后powerpc虚拟机和互联网、powerpc虚拟机和pc机之间通信都很容易。这种方式设置上类似vmware的host-only,qemu使用tun/tap设备在主机上增加一块虚拟网络设备(tap0),然后就可以象真实网卡一样配置它。

tap/tun模式实现方法:
一、pc机:
1.tap/tun驱动支持 (如果没有就重编内核)
1)ll /dev/net/tun
crw-rw-rw- 1 root root 10, 200 09-07 15:39 /dev/net/tun
2)qemu运行时内核会加载tun模块
lsmod |grep tun
tun                     9508  1

2.tap/tun初始化文件
/etc/qemu-ifup:
sudo -p "Password for $0:" /sbin/ifconfig $1 172.20.0.1

172.20.0.1: tap0的默认ip,可以自定义,如改为192.168.0.1

3.外网实现
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -s 172.20.0.0/24 -j MASQUERADE

4.启动qemu
qemu-system-ppc -hdc debian_lenny_powerpc_small.qcow -m 256 -net nic,vlan=0 -net tap,vlan=0
输入命令ifconfig -a就会显示tap0的信息,默认ip是172.20.0.1

二、powerpc虚拟机:
1.设置ip和route
ifconfig eth0 172.20.0.100
route add default gw 172.20.0.1

2.DNS
dns与pc机相同

3.其它
powerpc虚拟机ip与pc机上tap0的ip相同网段     [powerpc->ip: 172.20.0.100        tap0->ip: 172.20.0.1]
网关为tap0的ip        [powerpc->gateway: 172.20.0.1    tap0->ip: 172.20.0.1]
其余参数与tap0相同,比如子网掩码都为255.255.0.0,广播地址都为172.20.255.255

网桥模式实现方法:
1、修改/etc/qemu-ifup文件,修改后内容如下:
#!/bin/sh
## 获取原来主系统 eth0 的 IP 和网关
IP=`ifconfig eth0|grep "inet addr"|awk '{print $2}'|sed 's/addr://'`
GATEWAY=`route -n|grep ^0.0.0.0|awk '{print $2}'`
## 删除 eth0 的 IP
ip addr del $IP dev eth0
## 激活 tap0 ($1 是qemu传递过来的网卡名称,即tap0)
ip link set $1 up
## 停止并删除存在的网桥
ip link set br0 down &>/dev/null
brctl delbr br0 &>/dev/null
## 添加网桥接口 br0
brctl addbr br0
## 将 eth0 加入网桥
brctl addif br0 eth0
## 将 tap0 加入网桥
brctl addif br0 $1
## 启动网桥
ifconfig br0 $IP up
## 添加默认路由
route add default gw $GATEWAY
2、运行qemu
qemu-system-ppc -hdc debian_lenny_powerpc_small.qcow -m 256 -net nic,vlan=0 -net tap,vlan=0
3、恢复原状,运行qemu-ifdown脚本,内容如下:
#!/bin/sh
IP=`ifconfig br0|grep "inet addr"|awk '{print $2}'|sed 's/addr://'`
GATEWAY=`route -n|grep ^0.0.0.0|awk '{print $2}'`
ip addr del $IP dev br0
ip link set br0 down
brctl delbr br0
ifconfig eth0 $IP up
route add default gw $GATEWAY


阅读(4852) | 评论(0) | 转发(0) |
0

上一篇:debian for usb

下一篇:键码错乱之解决方法

给主人留下些什么吧!~~