01. Linux kernel 编译,qemu仿真

01. Linux kernel 编译,qemu仿真

    • 主要步骤回顾
    • 参考文章链接

主要步骤回顾

  1. 下载编译linux内核5.10
wget https://mirror.bjtu.edu.cn/kernel/linux/kernel/v5.x/linux-5.10.tar.xz
  1. 下载交叉编译工具链
http://releases.linaro.org/components/toolchain/binaries/7.5-2019.12/
  1. 下载支持qemu的u-boot内核
wget https://ftp.denx.de/pub/u-boot/u-boot-2020.10.tar.bz2
  1. 编译linux kernel,编译u-boot
# 编译kernel32位
make CROSS_COMPILE=arm-linux-gnueabihf- ARCH=arm vexpress_defconfig
make CROSS_COMPILE=arm-linux-gnueabihf- ARCH=arm
# 如果需要编译64位
make ARCH=arm64 defconfig CROSS_COMPILE=aarch64-linux-gnu-
#生成的内核镱像位于arch/arm/boot/zImage
#设备树 arch/arm/boot/dts/vexpress-v2p-ca9.dtb#编译u-boot
make vexpress_ca9x4_defconfig
make CROSS_COMPILE=arm-linux-gnueabihf- all
#生成的文件为 uboot,uboot.bin
  1. 安装qemu-system-arm
sudo apt install qemu-system-arm
  1. 下载busybox交叉编译生成bin工具
wget http://www.busybox.net/downloads/busybox-1.36.0.tar.bz2make defconfig
make CROSS_COMPILE=arm-linux-gnueabi-
make install CROSS_COMPILE=arm-linux-gnueabi-
  1. 制作根文件系统(rootfs)
# 生成目录结构
mkdir -p rootfs/{dev,etc/init.d,lib}
sudo cp busybox-1.20.2/_install/* -r rootfs/
sudo cp -P /usr/arm-linux-gnueabi/lib/* rootfs/lib/
#生成四个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
# 生成文件系统
dd if=/dev/zero of=a9rootfs.ext3 bs=1M count=32
mkfs.ext3 a9rootfs.ext3
# 挂载拷贝数据
sudo mkdir tmpfs
sudo mount -t ext3 a9rootfs.ext3 tmpfs/ -o loop
sudo cp -r rootfs/*  tmpfs/
sudo umount tmpfs
  1. 使用qemu制定参数启动程序
qemu-system-arm -M vexpress-a9 -m 512M -kernel /path/to/kernel/dir/arch/arm/boot/zImage -dtb  /path/to/kernel/dir/arch/arm/boot/dts/vexpress-v2p-ca9.dtb -nographic -append "root=/dev/mmcblk0  console=ttyAMA0" -sd a9rootfs.ext3

参考文章链接

从零开始使用qemu模拟linux内核

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

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

相关文章

【心得】PHP的文件上传个人笔记

目录 1 php的文件上传绕过 黑名单绕过 2 php文件上传的00截断 3 iconv字符转换异常后造成了字符截断 4 文件后缀是白名单的时候的绕过 web服务器的解析漏洞绕过 5.高级文件上传绕过 1 .htaccess nginx.htaccess 2 服务端内容检测 3 配合伪协议来绕过 4.配合日志包含绕…

Word2Vec浅谈

论文地址:Efficient Estimation of Word Representations in Vector Space 个人认为,word2vec主要解决的问题是one-hot中维度过高并且稀疏的问题。word2vec是Google团队在2013年发表的一篇paper,当时一经问世直接将NLP领域带到了一个新的高度…

安装MongoDB

查看MongoDB版本可以执行如下命令 mongod --version 如果是Ubuntu,则直接安装 sudo apt-get install -y mongodb如果是其他,比如Amazon Linux2。 查看Linux系统发行版类型 grep ^NAME /etc/*release 如果是 Amazon Linux 2,则创建一个r…

asp.net core mvc 控制器使用配置

一、在根目录 添加 mysettings.json 文件 mysettings.json 文件代码如下: {"MySettings": {"Name": "独立配置文件","Site": "lt"} }appsettings.json 文件代码如下: {"Logging": {&quo…

038、语义分割

之——介绍与数据集 杂谈 语义分割,语义分割(Semantic Segmentation)方法-CSDN博客: 语义分割是计算机视觉领域的一项重要任务,旨在将图像中的每个像素分配到其对应的语义类别中。与物体检测或图像分类不同,语义分割不仅要识别图像…

力扣labuladong——一刷day41

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、力扣236. 二叉树的最近公共祖先二、力扣1676. 二叉树的最近公共祖先 IV三、力扣1644. 二叉树的最近公共祖先 II四、力扣235. 二叉搜索树的最近公共祖先五、…

Spring Boot接口设计规范

接口参数处理及统一结果响应 1、接口参数处理 1、普通参数接收 这种参数接收方式是比较常见的,由于是GET请求方式,所以在传参时直接在路径后拼接参数和参数值即可。 例如:localhost:8080/api/product/list?key1value1&key2value2 /…

Golang起步篇(Windows、Linux、mac三种系统安装配置go环境以及IDE推荐以及入门语法详细释义)

Golang起步篇 Golang起步篇一. 安装Go语言开发环境1. Wondows下搭建Go开发环境(1). 下载SDK工具包(2). 解压下载的压缩包,放到特定的目录下,我一般放在d:/programs下(路径不能有中文或者特殊符号如空格等)(3). 配置环境变量步骤1:先打开环境变…

事关Django的静态资源目录设置(Django的setting.py中的三句静态资源(static)目录设置语句分别是什么作用?)

在Django的setting.py中常见的三句静态资源(static)目录设置语句如下: STATICFILES_DIRS [os.path.join(BASE_DIR, static)] STATIC_ROOT os.path.join(BASE_DIR, static) STATIC_URL /static/下面介绍这三句话的作用。 首先说第1句和第2句: STATI…

数据结构【DS】特殊二叉树

完全二叉树 叶子结点只能出现在最下层和次下层, 最下层的叶子结点集中在树的左部完全二叉树中, 度为1的节点数 0个或者1个【计算时可以用这个快速计算, 配合𝑛0𝑛21】若n为奇数,则分支节点每个都有左右孩子;若n为偶数&#xff0…

【STM32】ADC(模拟/数字转换)

一、ADC的简介 1.什么是ADC 1)将【电信号】-->【电压】-->【数字量】 2)ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字量,建立模拟电路到数字电路的桥梁。 3)12位逐次逼近型ADC,1us转换时间&#xf…

六大排序(插入排序、希尔排序、冒泡排序、选择排序、堆排序、快速排序)未完

文章目录 排序一、 排序的概念1.排序:2.稳定性:3.内部排序:4.外部排序: 二、插入排序1.直接插入排序2.希尔排序 三、选择排序1.直接选择排序方法一方法二直接插入排序和直接排序的区别 2.堆排序 四、交换排序1.冒泡排序2.快速排序…

“新KG”视点 | 知识图谱与大语言模型协同模式探究

OpenKG 大模型专辑 导读 知识图谱和大型语言模型都是用来表示和处理知识的手段。大模型补足了理解语言的能力,知识图谱则丰富了表示知识的方式,两者的深度结合必将为人工智能提供更为全面、可靠、可控的知识处理方法。在这一背景下,OpenKG组织…

【python基础】类详解:如何编写类、__init__()、修改实例属性、类存储到模块并导入、py标准库、编写类的约定

文章目录 一. 创建和使用类1. 创建Dog类1.1. 构造方法:1.2. 形参self(类比java的this):1.3. 属性(类比java的成员变量): 2. 根据类创建实例2.1. 创建实例2.2. 访问属性2.3. 调用方法2.4. 创建多…

栈和队列概念

栈stack 栈只能在一端插入/删除元素先入后出只能从栈顶插入,栈顶删除栈底不允许插入和删除push:进栈pop:出栈应用场景: 队列 Queue 队列的插入操作称为 “入队”(Enqueue),是在队尾进行的&am…

数字IC前端学习笔记:异步复位,同步释放

相关阅读 数字IC前端https://blog.csdn.net/weixin_45791458/category_12173698.html?spm1001.2014.3001.5482 异步复位 异步复位是一种常见的复位方式,可以使电路进入一个可知的状态。但是不正确地使用异步复位会导致出现意想不到的错误,复位释放便是…

读像火箭科学家一样思考笔记03_第一性原理(上)

1. 思维的两种障碍 1.1. 为什么知识会成为一种缺陷而非一种美德 1.1.1. 知识是一种美德 1.1.2. 知识同样的特质也会把它变成一种缺点 1.1.3. 知识确实是个好东西,但知识的作用应该是给人们提供信息,而不是起约束作用 1.1.4. 知识应该启发智慧&#…

UOS统信操作系统QIcon::fromTheme详解

内置图标引擎 前言 一般Qt应用开发中设置图标只需要知道icon name就可以使用, 图标引擎会自动去存放图标主题的目录下查找。一般主题目录下存放的够用,如果还是无法满足需求,可以使用内嵌资源,使用qt的资源系统。 内嵌资源也可以像使用主题中的图标一样,它是由插件buildi…

新版JetBrains ToolBox【Windows】修改应用安装位置

WIndows下新版的JetBrainse ToolBox 无法修改应用安装路径 关闭 ToolBox 应用修改配置文件.settings.json 路径:C:\Users\用户名\AppData\Local\JetBrains\Toolbox "install_location": "xxx",

机器学习笔记 - 了解常见开源文本识别数据集以及了解如何创建用于文本识别的合成数据

一、部分开源数据集 以下是一些英文可用的开源文本识别数据集。 ICDAR 数据集:ICDAR 代表国际文档分析和识别会议。该活动每两年举行一次。他们带来了一系列塑造了研究社区的场景文本数据集。例如, ICDAR-2013和ICDAR-2015数据集。 MJSynth 数据集:该合成词数据集由牛津大…