QEMU使用步骤

1、安装虚拟机环境:ubuntu-16.04.7-desktop-amd64.iso,下载地址:Index of /ubuntu-releases/16.04.7/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

2、安装gcc-linaro-7.3.1-2018.05-x86_64_arm-linux-gnueabihf.tar.xz到/opt目录,下载地址:Linaro Releases

添加环境变量:

sudo gedit /etc/profile

在 profile 最后加入

export PATH=/opt/gcc-linaro-7.3.1-2018.05-x86_64_arm-linux-gnueabihf/bin:$PATH

然后

source /etc/profile

(注意安装版本gcc-linaro-6.5.0-2018.12编译qemu时可能报错)

3、安装qemu-5.0.0.tar.xz,下载地址:

Index of / (qemu.org)

安装步骤:

a、tar xf qemu-5.0.0.tar.xz
b、cd qemu-5.0.0
c、./configure --prefix=/usr/local/qemu --target-list=arm-softmmu --audio-drv-list=
d、sudo make && sudo make install

安装成功后在/usr/local/qemu/bin目录下会生成如下文件:

安装时根据错误提示可能需要安装以下软件:

sudo apt-get install build-essential pkg-config zlib1g-dev libglib2.0-0 libglib2.0-dev  libsdl1.2-dev libpixman-1-dev libfdt-dev autoconf automake libtool librbd-dev libaio-dev flex bison -y

(注意:通过命令sudo apt-get install qemu安装的版本为2.11.1,后面价值内核镜像时可能报以下错误)

4、输入:qemu-system-arm -M help查看支持芯片仿真类型,这里选择:vexpress-a9

5、下载uboot,下载地址:可用于QEMU仿真的uboot源码资源-CSDN文库

uboot编译步骤:

export ARCH=arm

export CROSS_COMPILE=arm-linux-gnueabihf-

make clean && make vexpress_ca9x4_defconfig # 不需要改配置

make -j4

加载运行uboot:

qemu-system-arm -M vexpress-a9 -m 256 -kernel ./u-boot -nographic

输入:ctrl + A 后按 X 退出 QEMU

(注意:https://gitlab.denx.de/u-boot/u-boot上下载的uboot源码用make vexpress_ca9x4_defconfig 配置编译报错)

6、下载内核linux-5.4.95,下载地址https://www.kernel.org

/arch/arm/configs 目录里的是各个厂商的内核配置文件

内核编译步骤:

export ARCH=arm

export CROSS_COMPILE=arm-linux-gnueabihf-

make vexpress_defconfig 

make -j4

(注意:vexpress_defconfig 中设置了 CONFIG_CMDLINE="console=ttyAMA0",仿真运行内核时需要配置改启动参数)

加载运行内核:

qemu-system-arm -M vexpress-a9 -m 512M -kernel arch/arm/boot/zImage -dtb arch/arm/boot/dts/vexpress-v2p-ca9.dtb -nographic -append "console=ttyAMA0"

7、busybox 下载链接 BusyBox 解压并进入其根目录

编译文件系统:

export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabihf-
make defconfig 
make menuconfig
#   勾选  Settings-> [*] Build static binary (no shared libs) 

Busybox Settings  --->Build Options  --->[*] Build BusyBox as a static binary (no shared libs) 

make -j6
make install

通过 make install 命令把生成的根文件创建在顶层目录(busybox-1.32.1根目录) _install 下,如果是通过 make defconfig O=…/output 导出配置的,则在相应的output目录下进入 _install 目录

在busybox-1.32.1根目录创建文件 make_rootfs.sh:

#    File Name:  make_rootfs.sh
##
#!/bin/sh
base=`pwd`
tmpfs=/_tmpfs# 如果存在删除
sudo rm -rf rootfs
sudo rm -rf ${tmpfs}
sudo rm -f a9rootfs.ext3sudo mkdir rootfs
# 拷贝 _install 中文件 到 rootfs
sudo cp _install/*  rootfs/ -raf#sudo mkdir -p rootfs/{lib,proc,sys,tmp,root,var,mnt}
cd rootfs && sudo mkdir -p lib proc sys tmp root var mnt && cd ${base}# 根据自己的实际情况, 找到并 拷贝 arm-gcc 中的 libc中的所有.so 库
sudo cp -arf /opt/gcc-linaro-7.3.1-2018.05-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/lib/*  rootfs/lib#优化交叉编译工具链库文件
sudo arm-linux-gnueabihf-strip rootfs/lib/*sudo cp examples/bootfloppy/etc rootfs/ -arf
sudo sed -r  "/askfirst/ s/.*/::respawn:-\/bin\/sh/" rootfs/etc/inittab -i
sudo mkdir -p rootfs/dev/
sudo mknod rootfs/dev/tty1 c 4 1
sudo mknod rootfs/dev/tty2 c 4 2pro
sudo mknod rootfs/dev/tty3 c 4 3
sudo mknod rootfs/dev/tty4 c 4 4
sudo mknod rootfs/dev/console c 5 1
sudo mknod rootfs/dev/null c 1 3
sudo dd if=/dev/zero of=a9rootfs.ext3 bs=1M count=100
# 如果提示 "No space left on device" 证明 dd 命令中 count 的大小不够,可以先进行瘦身sudo mkfs.ext3 a9rootfs.ext3
sudo mkdir -p ${tmpfs}
sudo chmod 777 ${tmpfs}
sudo mount -t ext3 a9rootfs.ext3 ${tmpfs}/ -o loop
sudo cp -r rootfs/*  ${tmpfs}/
sudo umount ${tmpfs}

运行make_rootfs.sh脚本生成a9rootfs.ext3文件系统文件。

加载运行文件系统:

qemu-system-arm -M vexpress-a9 -m 512M -kernel arch/arm/boot/zImage -dtb arch/arm/boot/dts/vexpress-v2p-ca9.dtb -nographic -append "root=/dev/mmcblk0 rw console=ttyAMA0" -sd ../busybox-1.32.1/a9rootfs.ext3

参考博客:

https://blog.csdn.net/leacock1991/article/details/113703897

搭建linux调试环境 (一)-- qemu环境搭建vexpress开发平台 - Edver - 博客园 (cnblogs.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/471099.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1.Electron初始与安装

这里写目录标题 一、前言二、下载三、简要总结 一、前言 原文以及该系列后续文章请参考:安装Electron 随着前端的不断强盛,现在的前端已经不再满足于网页开发了,而是在尝试能否使用前端的开发逻辑来开发PC端的桌面软件。 即用html、js、css…

BDD - Python Behave 用户自定义配置文件

BDD - Python Behave 用户自定义配置文件 引言默认 behave.ini 配置文件自定义配置文件json 格式的配置文件ini 格式的配置文件 实例应用项目结构代码BDD/Features/user_data.feature 文件BDD/steps/user_data_steps.py 文件BDD/environment.py 文件默认配置文件 behave.ini自定…

初识Qt | 从安装到编写Hello World程序

文章目录 1.前端开发简单分类2.Qt的简单介绍3.Qt的安装和环境配置4.创建简单的Qt项目 1.前端开发简单分类 前端开发,这里是一个广义的概念,不单指网页开发,它的常见分类 网页开发:前端开发的主要领域,使用HTML、CSS …

2024年【T电梯修理】报名考试及T电梯修理复审考试

题库来源:安全生产模拟考试一点通公众号小程序 T电梯修理报名考试参考答案及T电梯修理考试试题解析是安全生产模拟考试一点通题库老师及T电梯修理操作证已考过的学员汇总,相对有效帮助T电梯修理复审考试学员顺利通过考试。 1、【多选题】增加旧电梯曳引…

OpenAI突然发布首款文生视频模型——Sora;谷歌发布Gemini 1.5,迈向多模态大模型新时代

🦉 AI新闻 🚀 OpenAI突然发布首款文生视频模型——Sora 摘要:OpenAI发布了首个AI视频模型Sora,可以根据文字指令生成神级效果的长视频,引发了广泛关注和震惊。 Sora模型通过深入理解语言和图像,能够创造出…

AI使用 G-API 实现面部美化算法

介绍 在本教程中,您将学习: 示例面部美化算法的基础知识; 如何使用 G-API 推断管道内的不同网络; 如何在视频流上运行 G-API 管道。 先决条件 此示例需要: 装有 GNU/Linux 或 Microsoft Windows 的 PC(支持 Apple macOS&#xf…

紫微斗数双星组合:天同太阴在子午

文章目录 前言内容总结 前言 紫微斗数双星组合:天同太阴在子午 内容 紫微斗数双星组合:天同太阴在子午 性格分析 天同太阴在子午宫同度,二星皆属水,主智、主多情。天同星为感性的星曜,太阴星性质梦幻,二…

百模大战怎么样了?

百度入场最早,paddlegan/paddlepaddle多年前就布局了中小模型,ERNIE1.0 大模型早在2019年就发布了,只不过效果差,成本高没弄起来。 后来借着chatgpt的东风,百度几乎国内第一时间发布了国产大模型文心一言,文…

java 宠物医院系统Myeclipse开发mysql数据库web结构jsp编程计算机网页项目

一、源码特点 java 宠物医院系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0&…

【论文精读】GPT2

摘要 在单一领域数据集上训练单一任务的模型是当前系统普遍缺乏泛化能力的主要原因,要想使用当前的架构构建出稳健的系统,可能需要多任务学习。但多任务需要多数据集,而继续扩大数据集和目标设计的规模是个难以处理的问题,所以只能…

SpringIOC之support模块ResourceBundleMessageSource

博主介绍:✌全网粉丝5W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验…

Javaweb之SpringBootWeb案例之AOP核心概念的详细解析

2.3 AOP核心概念 通过SpringAOP的快速入门,感受了一下AOP面向切面编程的开发方式。下面我们再来学习AOP当中涉及到的一些核心概念。 1. 连接点:JoinPoint,可以被AOP控制的方法(暗含方法执行时的相关信息) 连接点指的…