300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 使用Ubuntu+qemu模拟器搭建arm运行环境

使用Ubuntu+qemu模拟器搭建arm运行环境

时间:2022-02-01 20:55:30

相关推荐

使用Ubuntu+qemu模拟器搭建arm运行环境

我的环境:

VMware

Ubantu8.2-19ubuntu1

Linux内核 3.13.0-32-generic

1.下载Linux内核

wget /pub/linux/kernel/v3.x/linux-3.16.tar.xz

2.安装arm的交叉编译工具链

sudo apt-get install gcc-arm-linux-gnueabi

3.编译Linux内核

make CROSS_COMPILE=arm-linux-gnueabi- ARCH=arm O=./out_vexpress_3_16 vexpress_defconfig

如果报错:根据提示,需要安装ncurses-devel,于是输入命令进行安装:

sudoapt-get install ncurses-dev

接着执行:

make CROSS_COMPILE=arm-linux-gnueabi- ARCH=arm O=./out_vexpress_3_16 menuconfig

会出来一个图形界面,将其中的

System Type —>

[*] Enable the L2x0 outer cache controller 中的 “ * ”去掉

然后编译:make CROSS_COMPILE=arm-linux-gnueabi- ARCH=arm O=./out_vexpress_3_16 zImage -j2

这个需要编译很久

生成的内核镜像位于 linux-3.12/out_vexpress_3_12/arch/arm/boot/zImage , 后续qemu启动时需要使用该镜像

4.下载安装qemu模拟器

首先sudo apt-get install git

git clone git://git.qemu-/qemu.git

cd qemu

git checkout remotes/origin/stable-2.4 -b stable-2.4

安装一大堆依赖文件

sudo apt-get install zlib1g-dev

sudo apt-get install libglib2.0-0

sudo apt-get install libglib2.0-dev

sudo apt-get install libtool

sudo apt-get install libsdl1.2-dev

sudo apt-get install autoconf

…/qemu/configure --target-list=arm-softmmu --audio-drv-list=

出现一个错误:ERROR: pixman >= 0.21.8 not present

安装 :sudo apt-get install libpixman-1-dev

出现一个错误:ERROR: DTC (libfdt) version >= 1.4.0

安装 :sudo apt-get install libfdt-dev

make

make install

5.可以查看qemu支持哪些板子

qemu-system-arm -M help

6,加载arm内核

sudo qemu-system-arm -M vexpress-a9 -m 512M -kernel 自己的内核路径 -nographic -append “console=ttyAMA0”

这里简单介绍下qemu命令的参数:

-M vexpress-a9 模拟vexpress-a9单板,你可以使用-M ?参数来获取该qemu版本支持的所有单板

-m 512M 单板运行物理内存512M

-kernel /path/to/kernel/dir/arch/arm/boot/zImage 告诉qemu单板运行内核镜像路径

-nographic 不使用图形化界面,只使用串口

-append “console=ttyAMA0” 内核启动参数,这里告诉内核vexpress单板运行,串口设备是那个tty。

-M 指定开发板

-m 指定内存大小

-kernel 指定内核文件

-dtb 指定dtb文件

-nographic 指定不需要图形界面

-append 指定扩展显示界面,串口或者LCD

由于没有挂载rootsf系统,内核会死在这里

7,u-boot环境搭建

直接在windows本机官网http://ftp.denx.de/pub/u-boot/下载的

然后移到ubantu主文件夹,然后解压

tar jxvf u-boot-.09.tar.bz2

得到文件夹u-boot-.09

cd u-boot-.09

配置,编译:

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- vexpress_ca9x4_defconfig

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi-

将生成的u-boot.bin放到~/Linux-3.16/qemu中

执行:

sudo qemu-system-arm -M vexpress-a9 -kernel u-boot -nographic -m 512M

里面还有一些错误,

8.制作根文件系统

1》下载、编译和安装busybox

wget /downloads/busybox-1.25.0.tar.bz2 --no-check-certificate

然后解压,在busybox-1.25.0文件夹中打开终端

make defconfig

make CROSS_COMPILE=arm-linux-gnueabi-

make CROSS_COMPILE=arm-linux-gnueabi- install

可能会编译失败

解决方法:BusyBox源码的include目录下/libbb.h 文件添加一行引用 #include <sys/resource.h>

如果下载失败可参考如下图:

保存后再次编译,成功

make defconfig

make CROSS_COMPILE=arm-linux-gnueabi-

make CROSS_COMPILE=arm-linux-gnueabi- install

2》形成根文件目录

先在Ubuntu主机环境下,形成目录结构,里面存放的文件和目录与单板上运行所需要的目录结构完全一样,然后再打包成镜像(在开发板看来就是SD卡),这个临时的目录结构称为根目录

i. 创建rootfs目录(根目录),根文件系统内的文件全部放到这里

mkdir -p rootfs/{dev,etc/init.d,lib}

ii.拷贝busybox命令到根目录下

sudo cp busybox-1.20.2/_install/* -r rootfs/

iii.从工具链中拷贝运行库到lib目录下

sudo cp -P /usr/arm-linux-gnueabi/lib/* rootfs/lib/

iiii.创建4个tty端终设备

sudo mknod rootfs/dev/tty1 c 4 1

sudo mknod rootfs/dev/tty2 c 4 2

sudo mknod rootfs/dev/tty3 c 4 3

sudo mknod rootfs/dev/tty4 c 4 4

3》制作SD卡文件系统镜像

生成32M大小的镜像

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

启动命令:

sudo qemu-system-arm -M vexpress-a9 -m 512M -kernel /home/linux/linux-3.12/arch/arm/boot/zImage -nographic -append “root=/dev/mmcblk0 console=ttyAMA0” -sd a9rootfs.ext3

总结:搭建ARM虚拟机相当于新产品移植Linux系统,并跑起来

包含:

内核下载、编译U-boot下载、编译根文件系统制作、挂载

Busybox的作用:就是一些命令,把这些命令放到根文件系统里面,目标机器就可以正常操作了。

拷贝文件到ARM虚拟机:

可以在根文件系统做好之后,放到根文件系统rootfs里面,重新挂载根文件系统到SD卡

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。