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

利用Qemu工具仿真ARM64平台

Windows系统利用Qemu仿真ARM64平台

  • 0 写在最前
  • 1 Windows安装Qemu
    • 1.1 下载Qemu
    • 1.2 安装Qemu
    • 1.3 添加环境变量
    • 1.4测试安装是否成功
  • 2. Qemu安装Ubuntu-Server-Arm-64
    • 2.1 安装前的准备
    • 2.2 安装Ubuntu server arm 64位镜像
  • 3 Windows配置Qemu网络和传输文件
    • 3.1 参考内容
    • 3.2 Windows安装MobaXterm
    • 3.2 Windows通过SSH直连ARM镜像并配置网络
    • 3.3 Windows通过SFTP传输文件到ARM镜像
  • 4 Ubuntu配置Qemu网络和传输文件
    • 4.1 参考内容
    • 4.1 安装MobaXterm
    • 4.2 Ubuntu通过SSH直连ARM镜像并配置网络
    • 4.3 Ubuntu通过SFTP传输文件到ARM镜像

0 写在最前

    1. 本文是在Windows平台上,仿真ARM 开发平台,其中ARM采用的是发布版本的Ubuntu20.04系统
    1. 本文在Linux(Ubuntu)平台上,尝试安装,但是Linux平台上,半天没有加载出安装界面,因此转到Windows平台进行安装镜像,但是安装好的镜像即可在任何的Qemu平台上运行
    1. 推荐大家如果在Ubuntu内无法安装镜像,可以尝试从Windows安装好镜像丢到Ubuntu内操作,Ubuntu加速效果的确比Windows更好
    1. Windows平台软件列表:Window10,qemu-w64-setup-20221230.exe,Ubuntu20.04.5-server-arm64.ISO,QEMU UEFI
    1. Ubuntu平台软件列表:Ubuntu20.04,qemu(4.2.1),Ubuntu20.04.5-server-arm64.ISO,QEMU UEFI
  1. 问题1:Windows安装好的ubuntu.img镜像能否加载到VirtualBox的Ubuntu系统中使用呢?
    答案是可以的,而且发现,在Ubuntu平台上运行qemu的Ubuntu镜像,比Windows上流畅,原因可能是Ubuntu自身的KVM支持更好一些
    在这里插入图片描述
    参考内容
    从0开始使用QEMU模拟ARM开发环境之QEMU利用桥接联网
    Windows上使用QEMU创建aarch64(ARM64)虚拟机
    Windows使用QEMU搭建arm64 ubuntu 环境
    Windows 搭建ARM虚拟机 UOS系统
    Ubuntu18.04使用qemu搭建ARM64架构虚拟机(方法一)
    【UEFI实战】Windows版本QEMU网络配置
    【Linux operation 25】Win10桥接网卡使得qemu虚拟机可以正常访问网络
    Windows主机的Qemu网络配置
    win10上qemu虚拟arm环境网络配置
    QEMU 网络配置一把梭
    Linux 内核调试 七:qemu网络配置
    Linux 虚拟网络设备详解之 Bridge 网桥
    qemu虚拟机与主机共享文件(FTP服务器)

1 Windows安装Qemu

1.1 下载Qemu

Qemu官方地址,Windows系统选择最新版本的exe程序进行下载

在这里插入图片描述

1.2 安装Qemu

选择正确的安装路径,直接点击下一步,即可安装成功

在这里插入图片描述

1.3 添加环境变量

在系统中添加环境变量
在这里插入图片描述

1.4测试安装是否成功

win+r组合键,打开cmd,输入qemu-system-aarch64 -M help,查看输出,如果有系统输出,则表明安装成功

在这里插入图片描述

2. Qemu安装Ubuntu-Server-Arm-64

2.1 安装前的准备

准备内容
Ubuntu20.04 server arm64
QEMU UEFI
足够的磁盘空间
Ubuntu-Server 20.04 安装详细过程(图文)

2.2 安装Ubuntu server arm 64位镜像

    1. 新建文件夹用于存放以上三个文件,并存放后续的Ubuntu镜像

在这里插入图片描述

    1. 创建镜像文件:qemu-img create ubuntu.img 50G
E:\UbuntuARM>qemu-img create ubuntu.img 50G
Formatting 'ubuntu.img', fmt=raw size=53687091200E:\UbuntuARM>
    1. 安装镜像文件:qemu-system-aarch64.exe -m 2048 -cpu cortex-a72 -smp 4,cores=4,threads=1,sockets=1 -M virt -bios QEMU_EFI.fd -net nic,model=pcnet -device nec-usb-xhci -device usb-kbd -device usb-mouse -device VGA -drive if=none,file=ubuntu-20.04.5-live-server-arm64.iso,format=raw,id=cdrom,media=cdrom -device virtio-scsi-device -device scsi-cd,drive=cdrom -drive if=none,file=ubuntu.img,format=raw,id=hd0 -device virtio-blk-device,drive=hd0

在这里插入图片描述

    1. 安装中间勾选SSH服务:勾选SSH服务,后期SSH可以帮助我们配置网络,否则就得将镜像丢入Ubuntu内进行网络桥接配置了,略微麻烦

在这里插入图片描述

    1. 关于reboot:安装完成之后会提示reboot机器,但是多半reboot失败并提示:Failed unmounting /cdrom,此时 可以直接退出机器

在这里插入图片描述

    1. 启动镜像文件:qemu-system-aarch64.exe -m 4096 -cpu cortex-a72 -smp 8 -M virt -bios QEMU_EFI.fd -device VGA -device nec-usb-xhci -device usb-mouse -device usb-kbd -drive if=none,file=ubuntu.img,format=raw,id=hd0 -device virtio-blk-device,drive=hd0 -drive if=none,file=,id=cdrom,media=cdrom -device virtio-scsi-device -device scsi-cd,drive=cdrom -net user,hostfwd=tcp::2222-:22 -net nic

3 Windows配置Qemu网络和传输文件

3.1 参考内容

值得一看
【UEFI实战】Windows版本QEMU网络配置
【Linux operation 25】Win10桥接网卡使得qemu虚拟机可以正常访问网络
Windows主机的Qemu网络配置
win10上qemu虚拟arm环境网络配置

  • Windows上安装好qemu模拟的arm Ubuntu之后,发现没有办法共享剪切板,甚至连网络都走不出去,而网络上的教程提示我们利用OpenVPN创建TAP类型的网卡,进行桥接,但是OpenVPN针对企业网络,想要下载安装太麻烦了,因此 本文想通过不安装任何网卡软件,使得软件能够接入qemu内的虚拟机。

3.2 Windows安装MobaXterm

MobaXterm:官方网站,是一款开源的远程连接工具,类似xshell,下载exe文件,双击安装即可。

3.2 Windows通过SSH直连ARM镜像并配置网络

预备条件

  1. 之前Qemu内的系统,安装过OpenSSH
  2. MobaXterm已经安装成功:安装mobaXterm主要是为了方便接入SSH并共享剪切板
  3. 镜像文件进行了端口转发:hostfwd=tcp::2222-:22 -net nic

在这里插入图片描述

    1. 按照下面的方式,启动镜像:qemu-system-aarch64.exe -m 4096 -cpu cortex-a72 -smp 8 -M virt -bios QEMU_EFI.fd -device VGA -device nec-usb-xhci -device usb-mouse -device usb-kbd -drive if=none,file=ubuntu.img,format=raw,id=hd0 -device virtio-blk-device,drive=hd0 -drive if=none,file=,id=cdrom,media=cdrom -device virtio-scsi-device -device scsi-cd,drive=cdrom -net user,hostfwd=tcp::2222-:22 -net nic

在这里插入图片描述

    1. 查看本机IP,并通过SSH连接到虚拟镜像

在这里插入图片描述

    1. 登录虚拟机,进行换源:Ubuntu(arm)20.04更换软件源,本文是直接删除了sources.list然后新建了新的文件,替换了源文件
pldz@pldz-arm:~$ sudo rm /etc/apt/sources.list
pldz@pldz-arm:~$ sudo touch /etc/apt/sources.list
pldz@pldz-arm:~$ sudo vi /etc/apt/sources.list
pldz@pldz-arm:~$ sudo apt-get update
    1. 至此,可以在镜像文件中,安装net-toolsgccgdbmakecmake,等等工具,搭建好开发环境

3.3 Windows通过SFTP传输文件到ARM镜像

预备条件

  1. 之前Qemu内的系统,安装过OpenSSH
  2. MobaXterm已经安装成功:安装mobaXterm主要是为了方便接入SSH并共享剪切板
  3. 镜像文件进行了端口转发:hostfwd=tcp::2222-:22 -net nic

在这里插入图片描述

    1. 在MobaXterm内选择SFTP传输,选择IP、用户名和端口,登录SFTP

在这里插入图片描述

    1. 输入用户密码,从Windows拖动文件到SFTP对话框内,传输文件

4 Ubuntu配置Qemu网络和传输文件

4.1 参考内容

参考内容
QEMU 网络配置一把梭
Linux 内核调试 七:qemu网络配置
Linux 虚拟网络设备详解之 Bridge 网桥
qemu虚拟机与主机共享文件(FTP服务器)

  • Ubuntu可以通过sudo apt-get命令很简单的获取到TAP网卡,但是在配置过程中还是有点复杂,本文其实采用Ubuntu的目的只是在此基础上进行二次开发,很像套娃,Windows10上利用Virtualbox安装Ubuntu20-x64,Ubuntu内利用Qemu安装Ubuntu20-arm64,再借助MobaXterm工具进行网络连接转发和文件传输,利用SSH绕过了TAP

4.1 安装MobaXterm

见前面第3.1节

4.2 Ubuntu通过SSH直连ARM镜像并配置网络

预备条件

  1. 之前Qemu内的系统,安装过OpenSSH
  2. Virtualbox内的UbuntuX64启动了OpenSSH服务
  3. Windows主机能供Ping通过Virtualbox内的UbuntuX64
  4. MobaXterm已经安装成功:安装mobaXterm主要是为了方便接入SSH并共享剪切板
  5. 镜像文件进行了端口转发:hostfwd=tcp::2222-:22 -net nic
    1. MobaXterm接入Virtualbox的虚拟机:在SSH模块,输入Virtualbox内的UbuntuX64的IP进行SSH连接

在这里插入图片描述

    1. 在Virtualbox的Ubuntux64启动Qemu运行UbuntuArm64:找到镜像文件目录,其中包括镜像文件和QEMU_EFI文件,输入qemu-system-aarch64 -m 4096 -cpu cortex-a57 -smp 8 -M virt -bios QEMU_EFI.fd -nographic -net user,hostfwd=tcp::2222-:22 -net nic -device virtio-scsi-device -drive if=none,file=ubuntu.img,format=raw,index=0,id=hd0 -device virtio-blk-device,drive=hd0

在这里插入图片描述

    1. 验证网络是否能访问外网:

在这里插入图片描述

4.3 Ubuntu通过SFTP传输文件到ARM镜像

预备条件

  1. 之前Qemu内的系统,安装过OpenSSH
  2. Virtualbox内的UbuntuX64启动了OpenSSH服务
  3. Windows主机能供Ping通过Virtualbox内的UbuntuX64
  4. MobaXterm已经安装成功:安装mobaXterm主要是为了方便接入SSH并共享剪切板
  5. 镜像文件进行了端口转发:hostfwd=tcp::2222-:22 -net nic
    1. 在MobaXterm内选择SFTP传输,选择虚拟机的Ubuntux64的IP、UbuntuARM用户名Qemu的UbuntuARM端口,登录SFTP

在这里插入图片描述

相关文章:

利用Qemu工具仿真ARM64平台

Windows系统利用Qemu仿真ARM64平台0 写在最前1 Windows安装Qemu1.1 下载Qemu1.2 安装Qemu1.3 添加环境变量1.4测试安装是否成功2. Qemu安装Ubuntu-Server-Arm-642.1 安装前的准备2.2 安装Ubuntu server arm 64位镜像3 Windows配置Qemu网络和传输文件3.1 参考内容3.2 Windows安装…...

【Hello Linux】进程控制 (内含思维导图)

作者:小萌新 专栏:Linux 作者简介:大二学生 希望能和大家一起进步! 本篇博客简介:简单介绍下进程的控制 包括进程启动 进程终止 进程等待 进程替换等概念 进程控制介绍进程创建fork函数fork函数的返回值fork函数的使用…...

嵌入式linux物联网毕业设计项目智能语音识别基于stm32mp157开发板

stm32mp157开发板FS-MP1A是华清远见自主研发的一款高品质、高性价比的Linux单片机二合一的嵌入式教学级开发板。开发板搭载ST的STM32MP157高性能微处理器,集成2个Cortex-A7核和1个Cortex-M4 核,A7核上可以跑Linux操作系统,M4核上可以跑FreeRT…...

【黄河流域公安院校网络空间安全技能挑战赛】部分wp

文章目录webbabyPHPfunnyPHPEzphp**遍历文件目录的类**1、DirectoryIterator&#xff1a;2、FilesystemIterator:3、**Globlterator**读取文件内容的类&#xff1a;SplFileObjectMisc套娃web babyPHP <?php highlight_file(__FILE__); error_reporting(0);$num $_GET[nu…...

五点CRM系统核心功能是什么

很多企业已经把CRM客户管理系统纳入信息化建设首选&#xff0c;用于提升核心竞争力&#xff0c;改善企业市场、销售、服务、渠道和客户管理等几个方面&#xff0c;并进行创新或转型。CRM系统战略的五个关键要点是&#xff1a;挖掘潜在客户、评估和培育、跟进并成交、分析并提高…...

window.print() 前端实现网页打印详解

目录 前言 一、print()方法 二、打印样式 2.1使用打印样式表 2.2使用媒介查询 2.3内联样式使用media属性 2.4在css中使用import引入打印样式表 三、打印指定区域部分内容 3.1方法一 3.2方法二 3.3方法三 四、强制插入分页 4.1page-break-before&#xff08;指定元素前…...

php程序员应具有的7种能力

php程序员应具有什么样的能力&#xff0c;才能更好的完成工作&#xff0c;才会有更好的发展方向呢&#xff1f;在中国我想您不会写一辈子代码的&#xff0c;那样不可能&#xff0c;过了黄金期&#xff0c;您又怎么办呢&#xff1f;看了本文后&#xff0c;希望对您有所帮助。 一…...

quarkus 生产环境与k8s集成总结

quarkus 生产环境与k8s集成总结 大纲 基础准备quarkus2.13.7脚手架工程配置GraalVM-java11 安装配置配置maven3.8.7linux环境下云原生二进制文件打包环境搭建编译运行quarkus二进制文件quarkus二进制文件制作为docker镜像并运行使用k8s部署quarkus二进制文件 基础准备 生产…...

蓝桥杯训练day2

day21.二分(1)789. 数的范围(2)四平方和&#xff08;1&#xff09;哈希表做法&#xff08;2&#xff09;二分做法(3)1227. 分巧克力&#xff08;4&#xff09;113. 特殊排序(5)1460. 我在哪&#xff1f;2.双指针(1)1238. 日志统计(2)1240. 完全二叉树的权值&#xff08;3&#…...

为什么99%的程序员都做不好SQL优化?

连接层 最上层是一些客户端和链接服务&#xff0c;包含本地sock 通信和大多数基于客户端/服务端工具实现的类似于 TCP/IP的通信。主要完成一些类似于连接处理、授权认证、及相关的安全方案。在该层上引入了线程 池的概念&#xff0c;为通过认证安全接入的客户端提供线程。同样…...

Jenkins最新版安装调试

清理旧的jenkins&#xff1a; find / -name jenkins* 一项一项的清理&#xff1a;rm -rf /var/log/jenkins* 下载最新版jenkins镜像&#xff1a;jenkins-redhat-stable安装包下载_开源镜像站-阿里云 上传到服务器&#xff1a; 安装命令&#xff1a; yum install -y jenkins…...

简略说一下go的sync.RWMutex锁

在简略的说之前&#xff0c;首先要对RW锁的结构有一个大致的了解 type RWMutex struct {w Mutex // 写锁互斥锁&#xff0c;只锁写锁&#xff0c;和读锁无关writerSem uint32 // sema锁--用于“写协程”排队等待readerSem uint32 // sema锁--用于“读协程”排队…...

软考马上要报名了,出现这些问题怎么办?

目前&#xff0c;四川、山东、山西、辽宁、河北等地已经率先发布了2023年上半年软考报名通知。 四川&#xff1a;2023年3月13日-4月4日 山东&#xff1a;2023年3月17日9:00-4月3日16:00 山西&#xff1a;2023年3月14日9:00-3月28日11:00 辽宁&#xff1a;2023年3月14日8:30…...

单链表(增删查改)

目录一、什么是单链表&#xff1f;二、单链表的增删查改2.1 结构体变量的声明2.2 申请新结点2.2 链表的头插2.3 链表的尾插2.4 链表的头删2.5 链表的尾删2.6 链表的查找2.7 链表的任意位置后面插入2.8 链表的任意位置后面删除2.9 链表的销毁2.10 链表的打印三、代码汇总3.1 SLi…...

端口复用(bind error: Address already in use 问题)

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起探讨和分享Linux C/C/Python/Shell编程、机器人技术、机器学习、机器视觉、嵌入式AI相关领域的知识和技术。 端口复用专栏&#xff1a;《Linux从小白到大神》《网络编程》 在前面讲解TCP状态转换中提到过一个2MSL…...

数字化引领乡村振兴,VR全景助力数字乡村建设

一、数字乡村建设加速经济发展随着数字化建设的推进&#xff0c;数字化农业产业正在成为农业产业发展的主导力量&#xff0c;因此数字化技术赋予农业产业竞争力的能力不可小觑。数字化乡村建设背景下&#xff0c;数字化信息技术将全面改造升级农村产业&#xff0c;从农业、养殖…...

【数据结构入门】-链表之双向循环链表

个人主页&#xff1a;平行线也会相交 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 平行线也会相交 原创 收录于专栏【数据结构初阶&#xff08;C实现&#xff09;】 文章目录链表初始化打印链表尾插尾删新建一个节点头插头删查找在pos之前插入*删除pos位…...

Jenkins自动化部署入门

Jenkins自动化部署入门 一、简介 Jenkins是一个开源软件项目&#xff0c;是基于Java开发的一种持续集成工具&#xff0c;用于监控持续重复的工作&#xff0c;旨在提供一个开放易用的软件平台&#xff0c;使软件的持续集成变成可能。 Jenkins自动化部署实现原理 二、Jenkins部…...

Springboot 读取模板excel信息内容并发送邮件, 并不是你想想中的那么简单

Springboot 读取模板excel信息内容并发送邮件 背景技术选型搭建过程数据加密隐藏问题暴露背景追溯解决背景 在我们日常开发中, 会遇到这样一种场景, 就是读取表格中的数据, 并将数据以附件的形式通过邮箱发送到表格中的每个人 即: excel 读取 excel 写入 发送邮件(携带附件), 例…...

蓝桥杯真题31日冲刺 |第一天

蓝桥杯真题31日冲刺 |第一天 一&#xff1a;完全平方数 题目&#xff1a;[链接](完全平方数 - 蓝桥云课 (lanqiao.cn)) 思路&#xff1a; 将 每个 完全平方数都 消掉&#xff0c;剩下的就是 不能构成平方的数 以12 为例&#xff1a; 所以 12 只要再 乘个三 即可满足 代…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…...

变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析

一、变量声明设计&#xff1a;let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性&#xff0c;这种设计体现了语言的核心哲学。以下是深度解析&#xff1a; 1.1 设计理念剖析 安全优先原则&#xff1a;默认不可变强制开发者明确声明意图 let x 5; …...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)

说明&#xff1a; 想象一下&#xff0c;你正在用eNSP搭建一个虚拟的网络世界&#xff0c;里面有虚拟的路由器、交换机、电脑&#xff08;PC&#xff09;等等。这些设备都在你的电脑里面“运行”&#xff0c;它们之间可以互相通信&#xff0c;就像一个封闭的小王国。 但是&#…...

ubuntu搭建nfs服务centos挂载访问

在Ubuntu上设置NFS服务器 在Ubuntu上&#xff0c;你可以使用apt包管理器来安装NFS服务器。打开终端并运行&#xff1a; sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享&#xff0c;例如/shared&#xff1a; sudo mkdir /shared sud…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解&#xff0c;适合用作学习或写简历项目背景说明。 &#x1f9e0; 一、概念简介&#xff1a;Solidity 合约开发 Solidity 是一种专门为 以太坊&#xff08;Ethereum&#xff09;平台编写智能合约的高级编…...

有限自动机到正规文法转换器v1.0

1 项目简介 这是一个功能强大的有限自动机&#xff08;Finite Automaton, FA&#xff09;到正规文法&#xff08;Regular Grammar&#xff09;转换器&#xff0c;它配备了一个直观且完整的图形用户界面&#xff0c;使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...

Java数值运算常见陷阱与规避方法

整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...