- 论坛徽章:
- 0
|
交叉编译总是有很多麻烦的地方,很多软件包的测试程序会在编译的时候出莫名其妙的问题。而嵌入式开发最麻烦的不只开发板很多时候不是很差就是很贵,如果是在大点的公司,申购程序和时间都让人在等待中熄灭了热情。
使用qemu也许是在x86上建立arm、powerpc、mips或是superh的虚拟机来玩也许是很不错的事情,省钱,快速,无须申请等待。
以下操作是在uubuntu 9.04上完成的arm虚拟机,大致的步骤如下:
I、安装qemu
qemu最好的是自己下载源码编译然后安装,虽然编译的过程时间比较久。
git clone
git://git.qemu.org/qemu.git
cd qemu
configure --prefix=/usr
make && make install
等待N久后就好了,全部编译需要的时间很多
II、网络设置
bridge肯定是必须的了
sudo apt-get install bridge-utils uml-utilities
安装完后就可以在/etc/network/interface里配置网络了
sudo vim /etc/network/interface
这里假定网络是eth0,加入以下内容
auto br0
iface br0 inet dhcp
bridge_ports eth0 (注:ubuntu虚拟机上的设备为eth1)
bridge_maxwait 0
无线网络设备无法使用的,必须是有线的。如果只有无线网络,那需要其他的方式来传递,暂不讨论
cd /etc
touch qemu-ifup
vim qem-ifup
加入如下内容
#!/bin/sh
#sudo -p "Password for $0:" /sbin/ifconfig $1 172.20.0.1
echo "Executing /etc/qemu-ifup"
echo "Bringing up $1 for bridged mode..."
sudo /sbin/ifconfig $1 0.0.0.0 promisc up
echo "Adding $1 to br0..."
sudo /usr/sbin/brctl addif br0 $1
sleep 2
这样网络大致就可以了。
II、开始建立arm虚拟机
下载linux的内核,这里下的是arm的,
arm内核
,然后下文件系统
qemu-arm-rootfs.tgz
wget http://people.ubuntu.com/~ogra/arm/qemu/kernel/vmlinuz-2.6.28-versatile
然后创建一个文件arm的文件系统,
1、创建ext2的文件系统的硬盘镜像,大小为2G
dd if=/dev/zero of=/home/qemu/rootfs.img bs=1M count=2048
losetup /dev/loop0 /home/qemu/rootfs.img
mkfs.ext2 /dev/loop0
2、加载硬盘镜像然后拷入文件系统
mkdir /mnt/ext2
mount -o loop /home/qemu/rootfs.img /mnt/ext2
rm -rf /mnt/ext2/
tar -zxvf qemu-arm-rootfs.tgz -C /mnt/ext2
umount /mnt/ext2
fsck -t ext2 /home/qemu/rootfs.img
到这里后就算了差不多了,文件系统建立了后就可以启动了
IV、启动qemu
为了启动方便,建立一个文件qemu-arm
vim qemu-arm
输入以下内容
#!/bin/bash
qemu-system-arm -M versatilepb -kernel ./vmlinuz-2.6.28-versatile -hda rootfs.img -m 128 -append "root=/dev/sda rw" -usb -localtime -net nic,macaddr=00:16:3e:00:00:01 -net tap
保存退出,然后
chmod +x qemu-arm
./qemu-arm
就开始运行arm的虚拟机了
V、使用ssh开始使用和开发arm
qemu-arm-rootfs.tgz里面是带了gcc的,可以在里面编译程序的,不过很慢
apt-get update
apt-get install ssh
设置一下root的密码就可以在host上登录虚拟机了,操作起来也很方便的。
VI、使用rootfs.img
在虚拟机里做开发或是测试,虽然硬件的外围借口并不齐全,很难测试,但是这个环境很方便快捷,开发出来的东西剪裁后可以写入arm的,不过最大的缺点:太大。
rootfs最好的方式还是使用nfs的方式来给开发板使用,我已经在arm9和cortex a8的板子上测试过了,没有问题
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/21022/showart_2046471.html |
|