qemu+buildroot+linux arm64操作系统虚拟化-宿主系统wsl2

news2024/11/26 23:42:04

文章目录

  • 1.qemu
  • 2.buildroot
    • 配置
    • 编译
  • 3.linux kernel
      • 下载交叉编译工具链
    • linux kernel 5.16
      • 配置内核
      • config_kernel.sh
      • build_kernel.sh
  • 4.启动虚拟机
      • start_qemu.sh
      • 参数解释
      • 运行

环境: wls2、qemu8.2、buildroot、linuxkernel

1.qemu

https://buildroot.org/download.html
参考资料: https://wiki.qemu.org/Hosts/Linux

wget https://download.qemu.org/qemu-8.0.2.tar.xz
tar xvJf qemu-8.0.2.tar.xz
cd qemu-8.0.2
mkdir compile_result && cd compile_result #编译后的目录
../configure --prefix=$(pwd)
make
make install

2.buildroot

https://buildroot.org/download.html

 git clone git://git.busybox.net/buildroot
 make menuconfig

配置

在弹出的配置界面中,
设置
Target option ---> Target Architecture为
AArch64 (little endian);
设置
Toolchain ---> Toolchain type为
External toolchain,这时我们可以看到
Toolchain ---> Toolchain的值为
linaro AArch64 xxxx.xx;

在这里插入图片描述

设置
System configuration ---> Enable root login with password开启,并设置
System configuration ---> Root password为
xxxx(任意的你喜欢的密码);
设置
System configuration ---> Run a getty (login prompt) after boot ---> TTY port的值为
ttyAMA0(这一条非常重要,不然虚拟机可能启动不了);

在这里插入图片描述

设置
Target packages ---> Show packages that are also provided by busybox开启;设置
Target packages ---> Debugging, profiling and benchmark ---> strace开启;设置
Filesystem images ---> cpio the root filesystem开启

在这里插入图片描述

编译

make
  #编译好的结果会在output目录 

在这里插入图片描述

3.linux kernel

下载交叉编译工具链

https://releases.linaro.org/components/toolchain/binaries/
在这里插入图片描述

wget -c https://releases.linaro.org/components/toolchain/binaries/7.2-2017.11/aarch64-linux-gnu/gcc-linaro-7.2.1-2017.11-x86_64_aarch64-linux-gnu.tar.xz

linux kernel 5.16

https://www.kernel.org/

#下载内核源码:
wget -c https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.16.tar.xz
#配置内核:
make ARCH=arm64 CROSS_COMPILE=/home/toolchain/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-
 defconfig

#编译内核:
make ARCH=arm64 CROSS_COMPILE=/home/toolchain/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-
 -j8

配置内核

设置
Boot options ---> (console=ttyAMA0) Default kernel command string
设置其值为console=ttyAMA0;
设置
General setup  ---> [*] Initial RAM filesystem and RAM disk (initramfs/initrd) support                       
                        (/home/yyh/yyh/buildroot/output/images/rootfs.cpio) Initramfs source file(s)
设置其值为
$BUILD_ROOT_PATH/output/images/rootfs.cpio(注意,这里要自己展开变量BUILD_ROOT_PATH);

config_kernel.sh

#!/bin/sh

BUILD_DIR=/home/yyh/yyh/linux-6.3.6   #这里用的linux-6.3.6的内核

if [ ! -z $1 ]
then
                BUILD_DIR=$1
fi

export ARCH=arm64
export CROSS_COMPILE=/home/tools/gcc-linaro-7.2.1-2017.11-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-
cd $BUILD_DIR
#make defconfig

#make menuconfig

build_kernel.sh

#! /bin/bash

BUILD_DIR=/home/yyh/yyh/linux-6.3.6

if [ ! -z $1 ]
then
    BUILD_DIR=$1
fi

export ARCH=arm64
export CROSS_COMPILE=/home/tools/gcc-linaro-7.2.1-2017.11-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-
cd $BUILD_DIR
make -j8

4.启动虚拟机

start_qemu.sh

#! /bin/bash

/home/yyh/yyh/qemu-8.0.2/compile_result/qemu-system-aarch64 \
        -machine virt \
        -cpu cortex-a57 \
        -machine type=virt \
        -nographic -smp 1 \
        -m 2048 \
        -kernel /home/yyh/yyh/linux-6.3.6/arch/arm64/boot/Image \
        --append "console=ttyAMA0" \
        $1 $2

参数解释

/home/yyh/yyh/qemu-8.0.2/compile_result/qemu-system-aarch64: 这是QEMU模拟器的可执行文件路径。
-machine virt: 这个选项指定使用
virt类型的虚拟机。
-cpu cortex-a57: 这个选项指定使用Cortex-A57 CPU。
-nographic: 这个选项指定不使用图形化界面,而是使用控制台进行交互。
-smp 1: 这个选项指定使用1个CPU核。
-m 2048: 这个选项指定虚拟机的内存大小为2048MB。
-kernel /home/yyh/yyh/linux-6.3.6/arch/arm64/boot/Image: 这个选项指定ARM64内核镜像的路径。
--append "console=ttyAMA0": 这个选项指定内核启动参数,其中
console=ttyAMA0表示将控制台输出重定向到串口。

运行

./start_qemu.sh

在这里插入图片描述

参考:
https://blog.csdn.net/pro_human/article/details/123446938
https://blog.csdn.net/leacock1991/article/details/113730672

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

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

相关文章

Python知识点:lambda 表达式

大家好,欢迎来到 Crossin的编程教室 ! Python 是一门简洁的语言,lambda 表达式则充分体现了 Python 这一特点。 lambda 表达可以被看做是一种匿名函数。它可以让你快速定义一个极度简单的单行函数。譬如这样一个实现三个数相加的函数&#xf…

学会使用perf性能分析工具(含移植到开发板)

文章目录 一、在ubuntu中使用apt包下载Perf二、使用源码安装Perf,并移植到arm-linux环境下三、使用perf四、Perf的功能介绍 系统:Ubuntu18.04系统 内核版本:5.4.0-150-generic(通过uname -r查看) 一、在ubuntu中使用ap…

Linux驱动系列-PWM驱动

转自:嵌入式系统研发 1.概述 本文主要讲述了Linux的PWM驱动框架、实现方法、驱动添加方法和调试方法。 示例Linux内核版本:6.2.8。 2.原理 PWM是Pulse-Width Modulation的简称,中文译作脉冲宽度调制。作为一种调制技术,PWM的…

SpringBoot实现异步调用的几种方式

一、使用 CompletableFuture 实现异步任务 CompletableFuture 是 Java 8 新增的一个异步编程工具,它可以方便地实现异步任务。使用 CompletableFuture 需要满足以下条件: 异步任务的返回值类型必须是 CompletableFuture 类型; 在异步任务中…

基于vasp计算材料红外与Raman光谱信息

使用方法一:获取材料raman活性信息 代码链接:VASP/Sibulk-VASP at master raman-sc/VASP GitHub 前置计算材料的振动频率和介电常数等,参考INCAR如下: SYSTEM Si_bulk ISTART 0 # From-scratch; job : 0-new 1-cont 2-same…

4-2 贪心算法的基本要素

博主简介:一个爱打游戏的计算机专业学生博主主页: 夏驰和徐策所属专栏:算法设计与分析 1.什么是贪心选择性质 贪心选择性质是一种在算法设计中经常使用的策略。它基于这样的思想:在每一步选择中,都选择当前看起来最优…

多篇论文入选ICASSP 2023,火山语音有效解决多类实践问题

近日由IEEE主办、被誉为世界范围内最大规模、也是最全面的信号处理及其应用方面的顶级学术会议ICASSP2023于希腊召开,该会议具有权威、广泛的学界以及工业界影响力,备受AI领域多方关注。会上火山语音多篇论文被接收并发表,内容涵盖众多前沿领…

superset db upgrade报错记录

superset db upgrade报错记录 报错1报错2报错3报错4报错5报错6成功了 报错1 (superset) [hyjhadoop102 ~]$ superset db upgradefrom markupsafe import soft_unicode ImportError: cannot import name soft_unicode from markupsafe (/opt/module/miniconda3/envs/superset/l…

git基本操作(笔记)

安装 查看是否安装成功 git --version配置用户名和邮箱 参数global表示全局配置,对所有仓库生效,system表示系统配置,对所有用户生效,省略是(local)表示本地配置,只对本地仓库有效。 git config…

奇安信 渗透测试(攻防类)一面复盘

奇安信 渗透测试(攻防类)一面复盘 1.你是哪里人2.你是做安全研发的,在qax这边除了这个红队的岗位还投递其他了吗3.看你研发做的比较多,为什么投递这个岗位4.给了一个具体的场景,问你做渗透测试的思路5.后渗透有了解吗&…

form-inserter 让你的表单插入更轻松

挖SRC的时候经常需要向 input 框或者textarea 框中插入一些payload,但是遇到某个网页需要插入的输入框很多或者payload 很复杂的时候,就需要多次复制粘贴,过程比较繁琐。 例如如下两种情况: 情况1:输入框很多 情况2:…

C语言趣味小游戏---利用二维数组实现三子棋游戏

学习了C语言中的二维数组,本照着学以致用的原则,现在利用对二维数组的操作来实现一个简单版的三子棋游戏。 三子棋其实我们都玩过,在我们这边又叫"一条龙"。就是一个九空格,下棋的双方依次在九个空格里面下棋&#xff0…

Jetson Nano之ROS入门 - - SLAM之Gmapping建图与路径规划

文章目录 前言一、Gmapping建图算法1、Gmapping算法流程原理2、Gmapping建图实操 二、AMCL蒙特卡洛定位1、自适应蒙特卡洛定位算法原理2、AMCL定位实操 三、move_base路径规划1、路径规划算法简介2、代价地图简介2、move_base路径规划实操 总结 前言 SLAM(Simultane…

Water valve concept流水法判断D-separation

Water valve concept流水法判断D-separation 文章目录 Water valve concept流水法判断D-separationD-separation流水法判断例子 D-separation 概率图模型中的D-separation是一种刻画随机变量之间条件独立性的方法。具体来说,给定一个概率图模型,如果其中…

Yarn【关于配置yarn-site.xml的注意事项】

注意事项 配置文件的<description>表签内容可以删&#xff0c;不影响配置文件的读取。最重要的<name><value>标签中间的内容一定要好好检查&#xff0c;尤其是在复制别人的配置信息的时候格外要注意&#xff1a;value中有没有空格、有没有因为你打开工具的不…

【IT经验实战】教你如何真正有效地学习一门IT技术

前言 在写博客之前&#xff0c;我在CSDN中搜寻了一下 “如何系统学习一门it技术” &#xff0c;琳琅满目&#xff0c;有些借鉴了ChatGPT生成的内容&#xff08;几乎一模一样&#xff09;、有些写得比较笼统没有针对性、有的偏向理论难以实操。 下文内容着实强调求学经历和过程…

SpringCloud组件介绍

一&#xff1a;什么是微服务&#xff08;Microservice&#xff09; 微服务英文名称Microservice&#xff0c;Microservice架构模式就是将整个Web应用组织为一系列小的Web服务。这些小的Web服务可以独立地编译及部署&#xff0c;并通过各自暴露的API接口相互通讯。它们彼此相互协…

小作文--流程图(练习1)

【【雅思写作】带你打破小作文‘流程图’的传说】 https://www.bilibili.com/video/BV1QP411Q7Gh/?share_sourcecopy_web&vd_source78768d4ae65c35ff26534bbaa8afc267 雅思小作文-流程图, 看这一篇就够了! - 冯凯文的文章 - 知乎 https://zhuanlan.zhihu.com/p/35868880 …

跳出零和博弈,AIGC是元宇宙的“催命符”还是“续命丹”?

文 | 智能相对论 作者 | 青月 从科幻小说《雪崩》里走出来的元宇宙&#xff0c;如今正在上演“地价雪崩”。 CoinGecko的一项调查显示&#xff0c;Otherdeed for Otherside、The Sandbox、Decentraland、Somnium Space和Voxels Metaverse 这五款知名元宇宙土地价格近期均出现…

Linux发送接收邮件

目录 一、实验 1.linux用户发送给linux中的其它用户 2.linux用户发送给外网用户 一、实验 1.linux用户发送给linux中的其它用户 &#xff08;1&#xff09;使用命令 yum install -y sendmail 安装sendmail软件 &#xff08;2&#xff09;使用yum install -y mailx 安装 mail…