qemu交叉编译arm内核_利用QEMU搭建ARM编程环境

宿主机是X86,其中安装了Ubuntu 12.04。首先在宿主机中安装QEMU。

apt-get install qemu-kvm qemu-kvm-extras

Debian提供了ARM平台的内核镜像文件和initrd文件,利用这两个文件启动QEMU后可以开始一个安装过程,在QEMU的虚拟硬盘中安装一个基于ARM平台的基本操作环境。

mkdir arm-emul; cd arm-emul

wget ftp://ftp.debian.org/debian/dists/squeeze/main/installer-armel/current/images/versatile/netboot/vmlinuz-2.6.32-5-versatile

wget ftp://ftp.debian.org/debian/dists/squeeze/main/installer-armel/current/images/versatile/netboot/initrd.gz

创建虚拟硬盘。

qemu-img create -f raw hda.img 2G

启动QEMU创建一个versatilepb虚拟机,并开始安装过程。该安装过程需要从Debian服务器下载安装文件,因此在启动QEMU之前应保证宿主机已经连接Internet。

qemu-system-arm -m 256 -M versatilepb -kernel vmlinuz-2.6.32-5-versatile -initrd initrd.gz -hda hda.img -append "root=/dev/ram"

整个安装过程与通常Debian或Ubuntu的安装过程类似,只是在最后阶段选择软件包的时候可以将SSH服务器选上,这样今后可以通过SSH远程登录虚拟机。由于虚拟机是文本界面,其窗口较小,在宿主机中远程登录虚拟机后就可以在较大的终端窗口中进行编程。

qemu-system-arm -m 256 -M versatilepb -kernel vmlinuz-2.6.32-5-versatile -initrd initrd.gz -hda hda.img -append "root=/dev/ram"

安装完成后,需要将虚拟机硬盘中的initrd文件拷贝到宿主机中。为此,应将虚拟机关闭,然后将虚拟硬盘中用于存储根文件系统的分区挂载到指定的目录,最后将文件复制出来。在挂载之前应先计算出硬盘分区的偏移量。具体的计算方法见《如何挂载一个镜像文件》一文。

mount -o loop,offset=1048576 hda.img /mnt

cp /mnt/boot/initrd.img-2.6.32-5-versatile .

umount /mnt

编写一个启动脚本,用于在宿主机中启用TAP,然后启动虚拟机。虚拟机与宿主机在同一个网段中,并假设该网段中有DHCP服务器。如不存在DHCP服务,则需要相应地修改脚本。

#! /bin/sh

ifconfig eth0 down

brctl addbr br0

brctl addif br0 eth0

ifconfig br0 0.0.0.0 promisc up

ifconfig eth0 0.0.0.0 promisc up

dhclient br0

tunctl -t tap0 -u root

brctl addif br0 tap0

ifconfig tap0 0.0.0.0 promisc up

qemu-system-arm -m 256 -M versatilepb -kernel vmlinuz-2.6.32-5-versatile -initrd initrd.img-2.6.32-5-versatile -hda hda.img -append "root=/dev/sda1" -net nic -net tap,ifname=tap0,script=no,downscript=no

重新启动虚拟机后,安装编程所需要的工具。

apt-get install build-essential   # 工具链

apt-get install jed               # 编辑器

在宿主机中开一个终端窗口,执行ssh命令远程登录虚拟机。现在就可以开始ARM的编程了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值