QEMU 简单几步搭建一个虚拟的ARM开发板

1.安装QEMU

先在Ubuntu中安装QEMU

sudo apt-get install qemu

安装几个QEMU需要的软件包:

sudo apt-get install zlib1g-dev
sudo apt-get install libglib2.0-0
sudo apt-get install libglib2.0-dev

安装完后在shell输入 qemu 按tab键如果出现自动补齐就证明成功安装

2.安装交叉编译链环境

1).先下载交叉编译链

http://www.veryarm.com/arm-none-linux-gnueabi-gcc
https://launchpad.net/gcc-arm-embedded/+download

然后把对应的tar包解压到自己PC的指定目录下

2).在Ubuntu的家目录中打开 .bashrc 在最后一行添加
export PATH=$PATH:/home/linux/tools/arm-2014.05/bin //上边解压的目录

安装完后在shell输入 arm- 按tab键如果出现自动补齐就证明成功安装
输入 arm-none-linux-guneabi-gcc -v 可以查看安装的版本,表明安装成功

3.编译内核

1).下载Linux内核

https://www.kernel.org/
下载tarball包 如:linux-3.16.51.tar.xz

2).解压内核源码

tar xvf linux-3.16.51.tar.xz
make vexpress_defconfig 
得到.config文件  

3).修改交叉编译链

vi Makefile
修改 ARCH             ?= arm
修改 CROSS_COMPILE        ?= arm-none-linux-gnueabi-

或者可以在每次使用make时直接指定编译链,如:

make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm vexpress_defconfig 
得到.config文件并指定编译链

修改完Makefile后编译

make menuconfig //配置内核编译
make zImage     //编译生成zImage镜像文件
make dtbs       //编译生成设备树镜像文件

4.制作文件系统

1).下载busybox

https://busybox.net/downloads/

2).执行make menuconfig

Busybox Settings --> Build Optiions --> Cross Compiler prefix
输入arm-none-linux-gnueabi-
也可以在Makefile文件中修改编译链

3).指定install路径

Busybox Settings --> Installation Options --> BusyBox installation prefix
输入自己指定的路径,否则使用目前默认设置 _install

4).编译

编译 make
安装 make install
其实以上的步骤可以更简单点,直接指定交叉编译链
make defconfig
make CROSS_COMPILE=arm-none-linux-gnueabi-
make install CROSS_COMPILE=arm-none-linux-gnueabi-

5).添加文件

在_install目录下有
bin  linuxrc  sbin  usr
创建其他文件夹
mkdir  dev  etc  mnt  proc  var  tmp  sys  root

6).添加动态链接库文件

cp ~/toolchain/arm-2014.05/arm-none-linux-gnuabi/libc/lib * ~/busybox-1.22.1/_install

5.挂载文件系统

1).创建挂载点

mkdir -p rootfs/{dev,etc/init.d,lib}
cp busybox-1.22.1/_install/* -r rootfs/
sudo mknod rootfs/dev/tty1 c 4 1    

2).生成镜像

dd if=/dev/zero of=a9rootfs.ext3 bs=1M count=32

格式化成ext3文件系统

mkfs.ext3 a9rootfs.ext3

将文件拷贝到镜像中

sudo mkdir tmpfs
sudo mount -t ext3 a9rootfs.ext3 tmpfs/ -o loop
sudo cp -r rootfs/*  tmpfs/
sudo umount tmpfs

6.运行

qemu-system-arm -M vexpress-a9 -m 512M -kernel /home/linux/linux-3.16/arch/arm/boot/zImage -dtb  /home/linux/linux-3.16/arch/arm/boot/dts/vexpress-v2p-ca9.dtb -nographic -append "root=/dev/mmcblk0  console=ttyAMA0" -sd a9rootfs.ext3

如果嫌麻烦可以将上边这行指令写成一个脚本,每次打开时运行脚本就行
看到控制台打印很多类似开发板启动时的打印就证明成功了

...
EXT3-fs (mmcblk0): mounted filesystem with writeback data mode
VFS: Mounted root (ext3 filesystem) readonly on device 179:0.
Freeing unused kernel memory: 232K (805a5000 - 805df000)
random: nonblocking pool is initialized
can't run '/etc/init.d/rcS': No such file or directory

Please press Enter to activate this console. 

/ # 

可以看到没有init进程,这些都已经是内核启动之后的了,可以再做添加

其中/home/linux/linux-3.16是你编译内核的绝对路径
如果失败看看是不是缺少某个文件

这里简单介绍下qemu命令的参数:
-M vexpress-a9 模拟vexpress-a9单板,你可以使用-M ?参数来获取该qemu版本支持的所有单板
-m 512M 单板运行物理内存512M
-kernel /home/linux/linux-3.16/arch/arm/boot/zImage  指定qemu单板运行内核镜像路径
-nographic 不使用图形化界面,只使用串口
-append "console=ttyAMA0" 内核启动参数,这里告诉内核vexpress单板运行,串口设备tty
  • 7
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值