当前位置: 首页 > news >正文

Linux 之搭建 arm 的 qemu 模拟器

目录

  • 1. Linux 之搭建 arm 的 qemu 模拟器

1. Linux 之搭建 arm 的 qemu 模拟器

OS: kali
1. 安装交叉编译工具、GDB 和 QEMU
# sudo apt-get install qemu debootstrap qemu-user-static
# sudo apt-get install qemu-system-arm
# sudo apt-get install gdb-multiarch //支持多架构 cpu 的 gdb
# sudo apt-get install gcc-arm-linux-gnueabi //安装 arm-linux-gcc 交叉编译器
# sudo apt-get install g++-arm-linux-gnueabi //安装 arm-linux-g++交叉编译器2. 下载、解压 linux5.0 内核
<0>. 下载: https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.0.7.tar.xz
# xz -d linux5.0.tar.xz
# tar -xvf linux5.0.tar<1>. 编译
最顶层的 Makefile 文件里面, 做如下修改: 
# emacs Makefile
ARCH		?= arm
CROSS_COMPILE   ?= arm-linux-gnueabi-
Or
# make CROSS_COMPILE=arm-linux-gnueabi- ARCH=arm vexpress_defconfig
# make CROSS_COMPILE=arm-linux-gnueabi- ARCH=arm<2>.arch/arm/configs 目录里的各个厂商的内核配置文件, 这个文件非常重要, 并做如下操作
# sudo apt-get install bison libncurses5-dev u-boot-tools bc
# make vexpress_defconfig<3>. 配置 kernel 内核
# make menuconfig<4>. 编译 kernel
# make LOADADDR=0X60003000 uImage -j4
or
# make CROSS_COMPILE=arm-linux-gnueabi- ARCH=arm vexpress_defconfig
# make CROSS_COMPILE=arm-linux-gnueabi- ARCH=arm3. 下载 busybox 制作根文件系统
<1>. 下载编译 busybox
# wget https://busybox.net/downloads/busybox-1.30.1.tar.bz2 --no-check-certificate
# tar -jxvf busybox-1.30.1.tar.bz2
# emacs Makefile
# make defconfig
# make CROSS_COMPILE=arm-linux-gnueabi-
# make CROSS_COMPILE=arm-linux-gnueabi- install4. 开始制作根文件系统
1. 创建必要的目录
# mkdir rootfs
# cd rootfs
# mkdir rootfs /lib
# mkdir rootfs /dev2. 拷贝 busybox 编译生产的目录和文件, 编译器自带的 lib
# cp busybox-1.25.0/_install/* -r rootfs/
# cp -P /usr/arm-linux-gnueabi/lib/* rootfs/lib/
3. 创建 4tty 终端设备
# 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
4. 生成 512M 大小的镜像, 并拷文件系统树到镜像文件中
# dd if=/dev/zero of=a9rootfs.ext3 bs=1M count=512
# mkfs.ext3 a9rootfs.ext3 //把 a9rootfs.ext3 格式化为 ext3 文件系统
# mkdir tmpfs
# mount -t ext3 a9rootfs.ext3 tmpfs/ -o loop
# cp -r rootfs/*  tmpfs/
# sudo umount tmpfs
//启动 qemu arm 文件系统
# qemu-system-arm -M vexpress-a9 -m 1024M -kernel ~/tools/linux-5.0.7/arch/arm/boot/zImage -dtb ~/tools/linux-5.0.7/arch/arm/boot/dts/vexpress-v2p-ca9.dtb -nographic -append "root=/dev/mmcblk0  console=ttyAMA0" -sd  a9rootfs.ext3
后续可以把 gdb 移植上去, 就可以调试学习 ARM 汇编指令了。
http://www.lryc.cn/news/218845.html

相关文章:

  • uinapp微信小程序隐私政策授权
  • 使用Java工作流简单介绍
  • 数字媒体技术基础之:ICC 配置文件
  • 解析SD-WAN组网方式及应用场景,全面了解典型案例
  • 中小学智慧校园电子班牌管理系统源码
  • 日常踩坑-[sass]Error: Expected newline
  • UI设计感蓝色商务数据后台网站模板源码
  • 二、计算机组成原理与体系结构
  • MySQL-sql的优化
  • 一致性哈希在分库分表的应用
  • PostCSS通过px2rem插件和lib-flexible将px单位转换为rem(root em)单位实现大屏适配
  • 什么是缓冲区溢出?
  • 论文浅尝 | ChatKBQA:基于微调大语言模型的知识图谱问答框架
  • 软件测试的目的---防范项目风险
  • 自己动手写编译器:创建由 C 语言编译而成的语法解析器
  • 接口设计-增删改查
  • 持续持续集成部署-k8s-配置与存储-配置管理:Secret 的应用
  • ZYNQ7020开发(一):开发环境搭建
  • Spring Boot插件化开发概念原理及实现
  • Ps:PSDT 模板文件
  • Linux-----nginx的简介,nginx搭载负载均衡以及nginx部署前后端分离项目
  • presto插件机制揭秘:探索无限可能的数据处理舞台
  • acwing算法基础之数据结构--并查集算法
  • k8s:二进制搭建 Kubernetes v1.20
  • SpringBoot系列-1启动流程
  • 【记】一次common模块导入无效的bug
  • 1.Netty概述
  • YOLO目标检测——真实道路车辆检测数据集【含对应voc、coco和yolo三种格式标签】
  • 【Solidity】Solidity中的基本数据类型和复合数据类型
  • Flutter Set存储自定义对象时 如何保证唯一