我的环境:
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卡文件系统镜像

  1. 生成32M大小的镜像
    dd if=/dev/zero of=a9rootfs.ext3 bs=1M count=32
  2. 格式化成ext3文件系统
    mkfs.ext3 a9rootfs.ext3
  3. 将文件拷贝到镜像中
    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系统,并跑起来
包含:

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

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

拷贝文件到ARM虚拟机:
可以在根文件系统做好之后,放到根文件系统rootfs里面,重新挂载根文件系统到SD卡

使用Ubuntu+qemu模拟器搭建arm运行环境相关推荐

  1. 从零使用qemu模拟器搭建arm运行环境

    原文链接: http://blog.csdn.net/linyt/article/details/42504975 为什么会有这篇文章 早在2011年的时候,跟当时同事一起讨论,做Linux系统开发正 ...

  2. linux实验——使用qemu模拟器搭建arm运行环境

    目录 文章目录 **我的环境:** VMware Ubantu14.04 64位 Linux内核 4.4.0-137-generic 步骤 下载Linux内核 因为内核版本过高,影响后面搭建,下载li ...

  3. 从零使用qemu模拟器搭建arm执行环境

    为什么会有这篇文章 早在2011年的时候,跟当时同事一起讨论,做Linux系统开发正处于整个Linux开发中间层,没有上层的C/C++业务和数据库的开发经验.也没有底层的内核和驱动开发经验,究竟路该怎 ...

  4. ubuntu下php服务器搭建_Ubuntu服务器下搭建php运行环境的方法

    本文实例讲述了Ubuntu服务器下搭建php运行环境的方法.分享给大家供大家参考,具体如下: 安装 Apache2: sudo apt-get install apache2 安装PHP模块: sud ...

  5. 搭建ARM交叉编译环境

    搭建ARM交叉编译环境 文章目录 搭建ARM交叉编译环境 前言 一.安装arm交叉编译工具 二.运行可执行程序[坑点] 三.调试程序 前言 通过前一篇关于risc_v交叉编译环境的搭建,想必大家已经对 ...

  6. PX4-AutoPilot教程-0-使用VMware虚拟机安装Ubuntu系统并搭建PX4开发环境(ROS+mavros+jMAVSim+gazebo+QGC+QT)

    使用VMware虚拟机安装Ubuntu系统并搭建PX4开发环境 本教程使用VMware虚拟机安装Ubuntu18.04系统(官方推荐使用版本),搭建PX4固件版本为v1.9.2,飞控板为pixhawk ...

  7. linux系统嵌入式编译环境,64位Ubuntu 16.04搭建嵌入式交叉编译环境arm-linux-gcc过程图解...

    64位Ubuntu 16.04搭建嵌入式交叉编译环境arm-linux-gcc过程图解,开发裸机环境之前需要先搭建其开发环境,毕竟工欲善其事必先利其器嘛. 安装步骤 1.准备工具安装目录 将压缩包ar ...

  8. ubuntu qt平台搭建openssl开发环境

    ubuntu qt平台搭建openssl开发环境 1.下载解压 (这里以当前官网下载的最新版本为例,官网地址:http://www.openssl.org/source) tar -zxvf open ...

  9. 基于VMware+Ubuntu 14.04 搭建ESP32 开发环境

    基于VMware+Ubuntu 14.04 搭建ESP32 开发环境 开发环境:VMware + 14.04 1.更新 cmake 准备工作:官网下载cmake-3.6.3.tar.gz(https: ...

最新文章

  1. 基于i.MX RT1060的可编程视觉模块
  2. hdu3622 二分+2sat
  3. Eclipse安装hibernate插件的问题
  4. 导入已有工程相关问题解决实录
  5. 光伏智能道路_这条光伏公路,能承重,晒太阳能发电,西方国家:中国技术好...
  6. MarkDown编辑器常用语法
  7. Linux不仅仅是开源
  8. Opera R3 将使用新的用户界面
  9. linux basename学习
  10. 【手写数字识别】基于matlab GUI BP神经网络手写数字识别(导图+带面板)【含Matlab源码 320期】
  11. C空间不够如何盘瘦身
  12. ACCESS网上书店数据库系统
  13. STM32F407主控板PCB
  14. cad解除块的快捷命令_cad分解块的快捷命令
  15. 【网络编程--UDP、TCP】
  16. mysql 汉字笔画排序规则_SQL Server与MySQL中排序规则与字符集相关知识的一点总结...
  17. 这是我网店的链接欢迎来看看
  18. docker Docs
  19. 非主流伤感QQ空间日志_享受着自己的那份孤独
  20. Ubunbu18.4运行代码bug提示:Successful NUMA node read from SysFS had negative value (-1)

热门文章

  1. 建设工程法规专科【10】
  2. 使用AssetsLibrary库实现系统类似照片浏览器
  3. 小米温湿度传感器协议分析
  4. Ubuntu配置大全
  5. 求助网易云信的互动白板的实现流程
  6. Tableau之数据可视化大屏/智慧大屏(成都大熊猫繁育研究基地,模拟旅游相关数据)@灵魂走风的江湖
  7. 计算机著作权登记证书什么作用
  8. 鸿蒙升级报名,鸿蒙os2.0公测招募报名入口 鸿蒙os2.0系统升级攻略
  9. opensuse 安装 php,安装与openSUSE基本使用
  10. LeanCloud因流控原因的解决办法