使用Ubuntu+qemu模拟器搭建arm运行环境
我的环境:
VMware
Ubantu8.2-19ubuntu1
Linux内核 3.13.0-32-generic
1.下载Linux内核
wget https://www.kernel.org/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-project.org/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-2016.09.tar.bz2
得到文件夹u-boot-2016.09
cd u-boot-2016.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 http://www.busybox.net/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卡
使用Ubuntu+qemu模拟器搭建arm运行环境相关推荐
- 从零使用qemu模拟器搭建arm运行环境
原文链接: http://blog.csdn.net/linyt/article/details/42504975 为什么会有这篇文章 早在2011年的时候,跟当时同事一起讨论,做Linux系统开发正 ...
- linux实验——使用qemu模拟器搭建arm运行环境
目录 文章目录 **我的环境:** VMware Ubantu14.04 64位 Linux内核 4.4.0-137-generic 步骤 下载Linux内核 因为内核版本过高,影响后面搭建,下载li ...
- 从零使用qemu模拟器搭建arm执行环境
为什么会有这篇文章 早在2011年的时候,跟当时同事一起讨论,做Linux系统开发正处于整个Linux开发中间层,没有上层的C/C++业务和数据库的开发经验.也没有底层的内核和驱动开发经验,究竟路该怎 ...
- ubuntu下php服务器搭建_Ubuntu服务器下搭建php运行环境的方法
本文实例讲述了Ubuntu服务器下搭建php运行环境的方法.分享给大家供大家参考,具体如下: 安装 Apache2: sudo apt-get install apache2 安装PHP模块: sud ...
- 搭建ARM交叉编译环境
搭建ARM交叉编译环境 文章目录 搭建ARM交叉编译环境 前言 一.安装arm交叉编译工具 二.运行可执行程序[坑点] 三.调试程序 前言 通过前一篇关于risc_v交叉编译环境的搭建,想必大家已经对 ...
- PX4-AutoPilot教程-0-使用VMware虚拟机安装Ubuntu系统并搭建PX4开发环境(ROS+mavros+jMAVSim+gazebo+QGC+QT)
使用VMware虚拟机安装Ubuntu系统并搭建PX4开发环境 本教程使用VMware虚拟机安装Ubuntu18.04系统(官方推荐使用版本),搭建PX4固件版本为v1.9.2,飞控板为pixhawk ...
- linux系统嵌入式编译环境,64位Ubuntu 16.04搭建嵌入式交叉编译环境arm-linux-gcc过程图解...
64位Ubuntu 16.04搭建嵌入式交叉编译环境arm-linux-gcc过程图解,开发裸机环境之前需要先搭建其开发环境,毕竟工欲善其事必先利其器嘛. 安装步骤 1.准备工具安装目录 将压缩包ar ...
- ubuntu qt平台搭建openssl开发环境
ubuntu qt平台搭建openssl开发环境 1.下载解压 (这里以当前官网下载的最新版本为例,官网地址:http://www.openssl.org/source) tar -zxvf open ...
- 基于VMware+Ubuntu 14.04 搭建ESP32 开发环境
基于VMware+Ubuntu 14.04 搭建ESP32 开发环境 开发环境:VMware + 14.04 1.更新 cmake 准备工作:官网下载cmake-3.6.3.tar.gz(https: ...
最新文章
- 基于i.MX RT1060的可编程视觉模块
- hdu3622 二分+2sat
- Eclipse安装hibernate插件的问题
- 导入已有工程相关问题解决实录
- 光伏智能道路_这条光伏公路,能承重,晒太阳能发电,西方国家:中国技术好...
- MarkDown编辑器常用语法
- Linux不仅仅是开源
- Opera R3 将使用新的用户界面
- linux basename学习
- 【手写数字识别】基于matlab GUI BP神经网络手写数字识别(导图+带面板)【含Matlab源码 320期】
- C空间不够如何盘瘦身
- ACCESS网上书店数据库系统
- STM32F407主控板PCB
- cad解除块的快捷命令_cad分解块的快捷命令
- 【网络编程--UDP、TCP】
- mysql 汉字笔画排序规则_SQL Server与MySQL中排序规则与字符集相关知识的一点总结...
- 这是我网店的链接欢迎来看看
- docker Docs
- 非主流伤感QQ空间日志_享受着自己的那份孤独
- Ubunbu18.4运行代码bug提示:Successful NUMA node read from SysFS had negative value (-1)