QEMU模拟Cortex-A9,运行kernel、rootfs
宿主机:Centos7(Kernel3.10.0)
交叉编译工具链:gcc-linaro-6.2.1-2016.11-i686_arm-linux-gnueabi
QEMU:2.0.0
Linux kernel:4.4.0
busybox:1.27.2
安装交叉编译链
https://releases.linaro.org/components/toolchain/binaries/6.2-2016.11/armeb-linux-gnueabi/gcc-linaro-6.2.1-2016.11-i686_armeb-linux-gnueabi.tar.xz
解压:
tar –xvf gcc-linaro-6.2.1-2016.11-i686_armeb-linux-gnueabi.tar.xz
安装:
mv gcc-linaro-6.2.1-2016.11-i686_armeb-linux-gnueabi /usr/local/arm-linux-gnueabi
编辑/etc/profile,添加:PATH=$PATH:/usr/local/arm-linux-gnueabi/bin
安装qemu-system-arm
yum install –y qemu-system-arm
编译内核
git clone https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
cd linux && git checkout v4.4
编译
make CROSS_COMPILE=arm-linux-gnueabi- ARCH=arm vexpress_defconfig
make CROSS_COMPILE=arm-linux-gnueabi- ARCH=arm menuconfig
编译成功后,arch/arm/boot目录下生成内核镜像文件zImage
制作根文件系统
https://busybox.net/downloads/busybox-1.27.2.tar.bz2
解压
tar –xvf busybox-1.27.2.tar.bz2
编译
cd busybox-1.27.2
make CROSS_COMPILE=arm-linux-gnueabi- ARCH=arm menuconfig
出现图形界面,做如下配置(这一步是可选的,如果执行了就可以不用执行cp /usr/arm-linux-gnueabi/lib rootfs/这一步):
Busybox Settings --->
Build Options --->
[*] Build BusyBox as a static binary (no shared libs)
完成后,执行:
make CROSS_COMPILE=arm-linux-gnueabi-
完成后,执行:
make install
完成后,该目录下生成的_install中即是基本的busybox指令。
创建bash脚本,并运行(注意这里不能使用ext4格式,否则内核启动后文件系统是只读的,原因目前不清楚):
#!/bin/bash
##
# etc: https://download.csdn.net/download/hbuxiaofei/10588736
##
rm -rf rootfs
rm -rf tmpfs
rm -rf rootfs.ext3
mkdir rootfs
mkdir -p rootfs/proc/
mkdir -p rootfs/sys/
mkdir -p rootfs/tmp/
mkdir -p rootfs/root/
mkdir -p rootfs/var/
mkdir -p rootfs/mnt/
cp busybox-1.25.1/_install/* rootfs/ -arf
cp /usr/local/arm-linux-gnueabi/lib rootfs/ -arf
cp etc rootfs/ -arf
mkdir -p rootfs/dev/
mknod rootfs/dev/tty1 c 4 1
mknod rootfs/dev/tty2 c 4 2
mknod rootfs/dev/tty3 c 4 3
mknod rootfs/dev/tty4 c 4 4
mknod rootfs/dev/console c 5 1
mknod rootfs/dev/null c 1 3
dd if=/dev/zero of=rootfs.ext3 bs=1M count=64
mkfs.ext3 rootfs.ext3
mkdir -p tmpfs
mount -t ext3 rootfs.ext3 tmpfs/ -o loop
cp -r rootfs/* tmpfs/
umount tmpfs
QEMU模拟Cortex-A9,运行kernel、rootfs相关推荐
- QEMU模拟vexpress-a9 搭建Linux kernel运行环境
众所周知,QEMU是一个可以模拟ARM架构的虚拟机,拥有高速.开源.跨平台.支持多种架构等优点.接下来,我们将使用QEMU模拟vexpress-a9,并在上面跑一个Linux kernel,为接下来的 ...
- QEMU 模拟Arm A9开发板
一.在Deepin 中编译Qemu4, 1.下载Qemu4源码 wget https://download.qemu.org/qemu-4.0.0.tar.xz 2.解压缩 tar xvJf qemu ...
- 用QEMU模拟ARM开发板,搭建Linux kernel运行环境
前言 有的时候我们想调试linux kernel或者linux应用程序,但是又没有硬件环境,这个时候可以选择用模拟器的方法,模拟出一个硬件环境. Android emulator Android系统的 ...
- 从0开始使用QEMU模拟ARM开发环境之脚本制作分区镜像(rootfs+zImage+dtb)
文章目录 从0开始使用QEMU模拟ARM开发环境系列一览表 目录结构: 脚本介绍: 分区镜像制作脚本 qemu启动脚本 流程示例 从0开始使用QEMU模拟ARM开发环境系列一览表 文章中 u-boot ...
- 基于Qemu虚拟vexpress-a9开发板,实现完整系统启动(uboot+kernel+rootfs)
关键词: U-boot, VersatilePB, ARM, Linux, Qemu, vexpress-a9 环境介绍: Win7 64 + Vmware 15 + ubuntu18.04 64 u ...
- 用QEMU模拟运行 WIndows 98 SE (2004.12.31更新)
先来简单介绍一下吧,QEMU是一种遵守GPL许可证,快速的虚拟机软件.它通过动态翻译 机内地址来获得比较快速的模拟速度. QEMU有两种模拟方式: 1.完整的系统模拟:这种模式下,QEMU模拟一个完整 ...
- Ubuntu 16.04 利用qemu模拟ARM开发板
QEMU目前可以模拟vexpress Cortex A9四核处理器开发板. 环境配置:Ubuntu 16.04,Kernel 4.4.1 内容参考了: http://blog.csdn.net/lin ...
- 从零使用qemu模拟器搭建arm运行环境
原文链接: http://blog.csdn.net/linyt/article/details/42504975 为什么会有这篇文章 早在2011年的时候,跟当时同事一起讨论,做Linux系统开发正 ...
- 为 QEMU ARM 仿真器编译 Linux 内核:QEMU 模拟 ARM 环境
QEMU 是一套由法布里斯·贝拉(Fabrice Bellard)所编写的以 GPL 许可证分发源码的模拟处理器,在GNU/Linux 平台上使用广泛.简单来说,QEMU 是一个虚拟机,与常见的 Vm ...
最新文章
- 微服务“大门”如何选择?
- Eureka客户端使用IP注册preferIpAddress和ip-address的区别
- css截断长文本显示
- 多模块Maven工程单独打包某一模块工程
- 建模实训报告总结_数学建模实训报告
- 反射调用 java bean的set和get方法
- 基于模型的系统工程设计软件ModelCoder在航空发动机控制设计中的应用
- org.xml.sax.SAXParseException: The string -- is not permitted within comments.
- 电脑设置代理IP工具 可自动更新
- android 充电模式deamon_Android MarsDaemon实现进程及Service常驻
- Change Jenkins time zone
- 服装业需要什么样的信息化?
- 洛谷 P1509 找啊找啊找GF(复习二维费用背包)
- 华为USG6000V防火墙学习
- android笔画输入法的字库,献给爱好笔画输入的机友们 速度才是王道之大众码新笔画输入法...
- IDEA汉化包插件无法下载解决办法
- 【Mybatis】TKMybatis 介绍和使用
- c#模拟看板控件_C#TIPTOP电子看板
- Teams Bot App 初探
- Flink学习之DataStream API(python版本)
热门文章
- OpenSIPS替代VOS3000的方案
- java.lang.ClassNotFoundException: org.apache.jsp.WEB_002dINF.views.login_jsp
- Linux时间子系统(二) 软件架构
- 《精通ArcGIS Server 应用与开发》——1.5 ArcGIS 10时态
- 静态类和非静态类的主要差别
- Android 编码规范:(七)避免使用终结方法
- atlas 又多了几个新控件
- 今天看到一篇小册子上的话
- 收藏贴 :2019年必备43种区块链开发工具
- 用python爬取知识星球