ubuntu 20.04 qemu arm64 linux6.3.8 开发环境搭建

news2024/9/19 10:53:20

开发环境

  • ubuntu 20.04

  • VMware Workstation Pro 16

  • 基于qemu(模拟器),ARM64 :virt cortex-a57 平台

  • 搭建Linux 6.3.8 (当前最新版本)

准备

  • Linux 内核下载,下载最新稳定版本,当前为 linux-6.3.8,因为是qemu 模拟器,可以尝试最新Linux 版本的学习与工程验证

  • Linux kernel 下载地址 https://mirrors.edge.kernel.org/pub/linux/kernel/v6.x/,也可以直接在 https://kernel.org/ 找到最新版本

  • aarch64 gcc 交叉编译工具链,这里使用较新的:gcc-linaro-12.2.1-2023.04-x86_64_aarch64-linux-gnu.tar.xz,下载地址 https://snapshots.linaro.org/gnu-toolchain/12.2-2023.04-1/aarch64-linux-gnu/

在这里插入图片描述

安装qemu

  • 这里是 qemu 安装在 虚拟机的ubuntu 20.04 上,当然条件允许可以直接安装在ubuntu 主机上
$ sudo apt-get install qemu
$ sudo apt-get install qemu-system
$ qemu-system-aarch64 -M help   /* 查看支持的板子的列表 */

使用 ARM64 virt 平台,这是arm64 也就是 aarch64 平台

  • 交叉编译工具链

  • 解压 gcc-linaro-13.0.0-2022.10-x86_64_arm-linux-gnueabihf.tar.xz
    /* arm gcc 交叉编译器存放的目录,可以放在自己的用户目录home下 */

mkdir /home/zhangsz/tools
tar xvf gcc-linaro-12.2.1-2023.04-x86_64_aarch64-linux-gnu.tar.xz -C /home/zhangsz/tools/
  • 添加到环境变量
/* 环境变量追加到 /etc/profie 中 */
$ sudo vim /etc/profile

/* 最后面追加 aarch64 gcc 交叉编译工具链的路径 */
export PATH=$PATH:/home/zhangsz/linux/tools/gcc-linaro-12.2.1-2023.04-x86_64_aarch64-linux-gnu/bin

/* 环境变量生效 */
$ source /etc/profile

在这里插入图片描述

  • 查看当前的arm gcc 版本

  • 输入 shell 命令 aarch64-linux-gnu-gcc -v

在这里插入图片描述

编译Linux 内核

  • Linux 内核解压缩到 ubuntu 中
$ mkdir /home/zhangsz/linux
$ mkdir /home/zhangsz/linux/kernel

/* 解压缩 tar.gz 格式的 linux kernel 文件 */
$ tar xf linux-6.3.8.tar.xz -C /home/zhangsz/linux/kernel

配置与编译

  • 安装部分软件包依赖
/* ubuntu 根据需求安装一些依赖 */
$ sudo apt-get install bison
$ sudo apt-get install flex
$ sudo apt-get install make

/* arm64 平台的 默认配置文件,注意当前Linux arm64 下只有一个 defconfig 文件 */
$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- defconfig

/* 直接编译,如果编译报错,安装依赖继续编译,直到编译完成 */
$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j8

编译 Linux 的产物

  • 产物为 :linux-6.3.8/arch/arm64/boot/Image.gz 或者 linux-6.3.8/arch/arm64/boot/Image
/* 默认编译会生成 zImage */
/home/zhangsz/linux/linux-6.3.8/arch/arm64/boot/Image.gz  或者(Image 非压缩) 

/* 同时编译生成了 arm64 下的 设备树文件,注意是 dtb 文件,当前暂未使用到 */
/home/zhangsz/linux/linux-6.0.1/arch/arm64/boot/dts/arm/ 

qemu 启动Linux

  • qemu 因为是模拟器,所以不需要 u-boot 引导就可以直接启动 Linux 内核

  • 把Linux 内核生成的产物,也就是 Image.gz 拷贝到一个目录下,如

执行命令:

#!/bin/bash
echo "---------- boot qemu ----------"
echo $1

sudo qemu-system-aarch64 \
        -M virt \
        -cpu cortex-a57 \
        -smp 4 \
        -m 4G \
        -kernel Image.gz \
        -nographic \
        -append "console=ttyAMA0"
  • 注意这里暂时没有 rootfs 根文件系统,只能启动内核,然后启动后会卡住

在这里插入图片描述

在这里插入图片描述

  • ubuntu 20.04 qemu arm64 linux6.3.8 开发环境搭建 Linux 内核部分搭建完成了

小结

  • 接下来,需要基于 busybox,制作根文件系统 rootfs,在 qemu arm64 平台 运行 Linux shell,执行用户的程序

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

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

相关文章

基于ipv6实现几乎零成本的内网穿透方案,小白的踩坑历程与经验分享

基于ipv6实现几乎零成本的内网穿透方案,小白的踩坑历程与经验分享 前言 最近想远程访问家里nas的想法老在脑海中浮现,原因大概是本人二开了一个管理系统,并在上面跑了些定时任务做自动化,就有了远程访问系统的需求。同时又想到&…

Python潮流周刊#7:我讨厌用 asyncio

△点击上方“Python猫”关注 ,回复“1”领取电子书 你好,我是猫哥。这里记录每周值得分享的 Python 及通用技术内容,部分为英文,已在小标题注明。(标题取自其中一则分享,不代表全部内容都是该主题&#xff…

MySQL 数据库初体验

文章目录 数据库的基本概念数据表数据库数据库管理系统数据库系统 数据库的发展史当今主流数据库介绍SQL Server (微软公司产品)Oracle (甲骨文公司产品)DB2 (IBM公司产品)MySQL (甲骨文公司收购…

S7-200 PLC通信方式有哪些

更多关于西门子S7-200PLC内容请查看:西门子200系列PLC学习课程大纲(课程筹备中) S7-200 PLC通信按通信对象方式分为三种情况:A.与计算机通信;B.与其他PLC通信;C.与其他设备和仪器通信; A.S7-200 PLC与计算机通信 如下图1-1 S7-…

长度延展攻击【密码学】(三)

一、什么是长度延展 假设有两段数据,S和M,以及一个单向散列函数h。 如果我们要将两段数据合并起来,并且还要计算合并后的散列值,这就叫做单向散列函数的长度延展。 二、长度延展攻击 如果S和M都是公开信息,那么S在前还…

网络层:网际控制报文协议ICMP

网络层:网际控制报文协议ICMP 笔记来源: 湖科大教书匠:网际控制报文协议ICMP 声明:该学习笔记来自湖科大教书匠,笔记仅做学习参考 主机或路由器使用ICMP来发送差错报告报文和询问报文 ICMP报文被封装在IP数据报中发送…

合宙Air724UG Cat.1模块硬件设计指南--I2C接口

I2C接口 简介 I2C总线(Inter-Integrated Circuit)是由Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息。 特性 支持 Fast mode (400Kbps)和 Slow mode&…

探索人工智能在自动化测试中的应用

自动化测试技术从最初的模拟硬件方式,到基于数据驱动,基于关键字驱动,再到现在基于功能和指令驱动的自动化测试技术,在各类软件项目中的应用也越来越多,越来越成熟。自动 背景 自动化测试技术从最初的模拟硬件方式&a…

MATLAB | 如何使用MATLAB获取顶刊《Nature》全部绘图(附带近3年全部图像)

我出了如何使用MATLAB获取期刊《Cell》全部绘图,立马就有粉丝问《Nature》、《Sience》、《PNAS》啥的会不会安排,这期就给大家安排《Nature》全部绘图获取,之后其他期刊也会慢慢安排,但是不会一次性全出完(毕竟不能抓住一个主题就…

【第三次】21级计科计算机组成原理课外练习

【第三次】21级计科计算机组成原理课外练习 一、单选题二、填空题三、程序填空题 一、单选题 2-1假设变量x的位数为n(n>8),x的最低有效字节不变,其余各位全变为0,则对应C语言表达式为。 A.x | ~ 0xFF B.x ^ 0xFF C…

css基础四:说说设备像素、css像素、设备独立像素、dpr、ppi 之间的区别?

一、背景 在css中我们通常使用px作为单位,在PC浏览器中css的1个像素都是对应着电脑屏幕的1个物理像素 这会造成一种错觉,我们会认为css中的像素就是设备的物理像素 但实际情况却并非如此,css中的像素只是一个抽象的单位,在不同…

循环码生成矩阵与监督 (校验) 矩阵

本专栏包含信息论与编码的核心知识,按知识点组织,可作为教学或学习的参考。markdown版本已归档至【Github仓库:https://github.com/timerring/information-theory 】或者公众号【AIShareLab】回复 信息论 获取。 文章目录 循环码生成多项式与…

详解七层反向代理与四层反向代理【Nginx+Tomcat负载均衡、动静分离】

文章目录 1. 反向代理和正向代理概述2.七层反向代理实例2.1 实验环境描述2.2 部署Nginx负载均衡器2.3 部署2台Tomcat应用服务器2.3.1 部署CentOS 7-5 Tomcat服务器2.3.2 部署CentOS 7-6 Tomcat多实例服务器 3.四层反向代理实例3.1 实验环境描述3.2 部署Nginx负载均衡器&#xf…

2023年护网常见面试题汇总!看过的都通过面试啦!

​时间过得很快,回想起去年的这个时候,我也正在准备秋招,今天的我刚刚结束培训。 我的个人情况就读于某双非大学,信息与计算科学(大数据方向,校企合作,一个介于数学与计算机之间的专业&#xf…

JVM调优参数+Visual GC 插件安装及使用,jvm分析

调优的目的是什么呢? 1.就是让系统更加的丝滑,让用户体验变得更好。 2.提升系统的性能,提高效率,充分利用jvm内存。 更多参考->JVM常用调优参数 一.JVM参数配置位置 1.java.lang.OutOfMemoryError: Java heap space 解决方…

微信小程序开发之获取用户头像昵称

本文是对另一篇文档 https://blog.csdn.net/duke_ding2/article/details/130674320 的补充。 环境 微信开发者工具 Stable 1.06.2306020调试基础库 2.32.2 背景 在较低版本(2.27.0及以下)的基础库中,在小程序里可以使用 wx.getUserProfil…

PostgreSQL BTree(B-Link-tree) 索引 基本 实现原理

文章目录 背景BTreeBTreeB-Link-Tree 基本数据结构的插入实现BTree Insert 实现BTree Insert 实现 PostgreSQL BTree实现整体结构BTree 索引创建实现_bt_buildadd_bt_uppershutdown BTree 查询 _bt_search 实现BTree 插入 _bt_doinsert 实现_bt_split 节点分裂_bt_insert_paren…

flyway在Windows下安装及基本使用

文章目录 1. flyway中的SQL脚本命名2. flyway执行SQL脚本演示3. flyway中设置 ${CURRENT_DATE} 为当前时间的值 Flyway是一个开源的数据库迁移工具,用于管理和自动化数据库架构的演进。它允许开发人员和团队对数据库进行版本控制,并通过简单的命令行或脚…

【数据库与身份认证】课程笔记

目标: 知道如何配置MySQL数据库环境认识并使用常见的SQL语句操作数据库在Express中操作MySQL数据库了解Session的实现原理了解JWT的实现原理 目录: 数据库的基本概念安装并配置MySQLMySQL的基本使用在Express中操作MySQL前后端的身份认证 一. 数据库的…

美团一面:OOM后,JVM一定会退出吗?为什么?

说在前面 在40岁老架构师 尼恩的读者社区(50)中,最近有小伙伴拿到了一线互联网企业如美团、拼多多、极兔、有赞、希音的面试资格,遇到一几个很重要的面试题: OOM后,JVM一定会退出吗?为什么? 生产环境&am…