【虚拟机】Windows(x86)上部署ARM虚拟机(Ubuntu)

news2024/9/27 17:28:35

【虚拟机】Windows(x86)上部署ARM虚拟机(Ubuntu)

零、起因

最近在学嵌入式,这就不得不涉及ARM指令集,但是电脑是x86指令集的,用手机不太方便,买开发板又要等几天……,总之就是要找个理由在x86的Windows上运行一下ARM的Ubuntu~

壹、准备

我们要在ARM虚拟机上运行Ubuntu系统需要准备下面这些文件(文末提供网盘分享链接):

1. 虚拟机

这边我们使用的是QEMU,QEMU可以模拟很多不同指令集的CPU,目前包括有 ARM、LoongArch、MIPS、RISCV 和 x86_64 等,我们可以到官网下载最新版:https://www.qemu.org/,也可以选择跟我一样的版本,下载后得到一个软件安装包,按照正常的软件安装方法运行安装程序,设置好安装位置,安装安装即可,这里需要记一下安装位置!下载地址:https://qemu.weilnetz.de/w64/2024/qemu-w64-setup-20240423.exe

2. UEFI

统一可扩展固件接口(英语:Unified Extensible Firmware Interface,缩写UEFI)是一种个人电脑系统规格,用来定义操作系统与系统固件之间的软件界面,作为BIOS(基本输入/输出系统)的替代方案。可扩展固件接口负责加电自检(POST)、联系操作系统以及提供连接操作系统与硬件的接口。我们的ARM虚拟机需要用到这个,下载地址:http://releases.linaro.org/components/kernel/uefi-linaro/16.02/release/qemu64/QEMU_EFI.fd

3. Ubuntu

Ubuntu的系统安装包,Ubuntu系统就不多介绍了,可以自行到官网下载,官网地址:https://cn.ubuntu.com/download/server/arm,也可以下载跟我一样的版本,只要下载的是ARM版本的即可,下载地址:https://cdimage.ubuntu.com/releases/24.04/release/ubuntu-24.04-live-server-arm64.iso

贰、安装

1. 虚拟机的安装

直接运行下载得到的qemu-w64-setup-20240423.exe即可,安装过程中的选项都可以保持默认的,但是要注意记一下安装位置,等下要用到:
记住安装路径
我的安装位置:D:\Program Files\qemu

2. 虚拟机环境变量配置(选做)

为了方便,可以把安装路径配置到环境变量中去,这样到时候虚拟机的命令就可以简单一点点,我选择不配置,要配置的同学可以看看:
配置环境变量

3. 创建磁盘文件

在安装系统之前,我们需要给虚拟机创建一个磁盘文件,作为虚拟机存储资料的地方,使用如下命令(配置了环境变量后可以省略安装路径):
CMD命令格式:

"QEMU安装路径\qemu-img.exe" create -f qcow2 "保存的文件夹\文件名.qcow2" 文件大小

我的:

"D:\Program Files\qemu\qemu-img.exe" create -f qcow2 "F:\VM\ARM\ubuntu\ubuntu.qcow2" 40G

这样我们会得到一个虚拟磁盘文件:F:\VM\ARM\ubuntu\ubuntu.qcow2

4. 安装Ubuntu系统

CMD命令格式:

"QEMU安装路径\qemu-system-aarch64.exe" -m 8192 -cpu cortex-a72 -smp 8,sockets=4,cores=2 -M virt -bios "下载的 QEMU_EFI.fd 文件路径" -device VGA -device nec-usb-xhci -device usb-mouse -device usb-kbd -drive if=none,file="刚刚创建的磁盘文件的路径",id=hd0 -device virtio-blk-device,drive=hd0 -drive if=none,file="Ubuntu系统安装包文件路径",id=cdrom,media=cdrom -device virtio-scsi-device -device scsi-cd,drive=cdrom  -net nic -net user,hostfwd=tcp:127.0.0.1:2222-:22

最后一个参数hostfwd是做的端口映射,把虚拟机的端口号为22的TCP协议映射到主机地址127.0.0.1:2222中,方便我们使用SSH链接虚拟机。

我的:

"D:\Program Files\qemu\qemu-system-aarch64.exe" -m 8192 -cpu cortex-a72 -smp 8,sockets=4,cores=2 -M virt -bios "F:\VM\ARM\ubuntu\QEMU_EFI.fd" -device VGA -device nec-usb-xhci -device usb-mouse -device usb-kbd -drive if=none,file="F:\VM\ARM\ubuntu\ubuntu.qcow2",id=hd0 -device virtio-blk-device,drive=hd0 -drive if=none,file="F:\VM\ARM\ubuntu\ubuntu-24.04-live-server-arm64.iso",id=cdrom,media=cdrom -device virtio-scsi-device -device scsi-cd,drive=cdrom  -net nic -net user,hostfwd=tcp:127.0.0.1:2222-:22

运行此命令后会弹出一个窗口,稍作等待即可进入Ubuntu的安装引导程序了,具体如何配置Ubuntu的安装程序我就不多介绍了,系统安装完即可正常使用了,至此我们成功在Windows(x86)上运行了Ubuntu(ARM)。

5. 运行已安装好系统的虚拟机

安装好后把虚拟机窗口关掉了,想再次打开可以使用下面的命令(不需要指定系统安装包了):
CMD命令格式:

"QEMU安装路径\qemu-system-aarch64.exe" -m 8192 -cpu cortex-a72 -smp 8,sockets=4,cores=2 -M virt -bios "下载的 QEMU_EFI.fd 文件路径" -device VGA -device nec-usb-xhci -device usb-mouse -device usb-kbd -drive if=none,file="安装有系统的磁盘文件路径",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 nic -net user,hostfwd=tcp:127.0.0.1:2222-:22

我的:

"D:\Program Files\qemu\qemu-system-aarch64.exe" -m 8192 -cpu cortex-a72 -smp 8,sockets=4,cores=2 -M virt -bios "F:\VM\ARM\ubuntu\QEMU_EFI.fd" -device VGA -device nec-usb-xhci -device usb-mouse -device usb-kbd -drive if=none,file="F:\VM\ARM\ubuntu\ubuntu.qcow2",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 nic -net user,hostfwd=tcp:127.0.0.1:2222-:22

稍作等待,Ubuntu系统成功在ARM虚拟机中启动之后就可以使用了~

可以输入如下命令查看系统使用的CPU指令集:
查看CPU指令集

6. 配置Ubuntu系统

Ubuntu系统安装好后还需要经过一定的配置才好用,这边不详细讲,给同学们找了几篇文章参考:

  1. 配置SSH:如何在 Ubuntu 上启用 SSH,安全地远程管理和传输数据:https://developer.aliyun.com/article/1375688
  2. 配置远程连接:【Linux】远程连接Linux虚拟机(MobaXterm):https://blog.csdn.net/XiaoYuHaoAiMin/article/details/140702880
  3. 配置镜像软件源:【Ubuntu】Ubuntu 配置镜像源(ARM):https://blog.csdn.net/XiaoYuHaoAiMin/article/details/140697174
  4. 安装编程软件(可选):如何在 Ubuntu 22.04 上安装 GCC:https://cn.linux-console.net/?p=14950

叁、参考文档

  • UEFI启动和Bios(Legacy)启动的区别:https://blog.csdn.net/zhangxiangweide/article/details/95342334
  • WIN10 x86环境部署ARM虚拟机(银河麒麟)实例:https://blog.csdn.net/weixin_44255842/article/details/120652227
  • Linux 查看CPU架构及内核版本:https://blog.csdn.net/lxh_worldpeace/article/details/106916780

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

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

相关文章

商场导航系统:从电子地图到AR导航,提升顾客体验与运营效率的智能解决方案

商场是集娱乐、休闲、社交于一体的综合性消费空间,随着商场规模的不断扩大和布局的日益复杂,顾客在享受丰富选择的同时,也面临着寻路难、店铺曝光率低以及商场管理效率低下等挑战。商场导航系统作为提升购物体验的关键因素,其重要…

springcloud RocketMQ 客户端是怎么走到消费业务逻辑的 - debug step by step

springcloud RocketMQ ,一个mq消息发送后,客户端是怎么一步步拿到消息去消费的?我们要从代码层面探究这个问题。 找的流程图,有待考究。 以下我们开始debug: 拉取数据的线程: PullMessageService.java 本…

【无标KaiwuDB CTO 魏可伟:差异化创新,面向行业的多模架构题】

2024年7月16日,KaiwuDB CTO 魏可伟受邀于 2024 可信数据库发展大会主论坛发表演讲《多模一库 —— KaiwuDB 的现代数据库架构探索》,以下是演讲精华实录。 多模数据库 是顺应时代发展与融合趋势的产物 数据模型最早始于网状模型和层次模型,…

删除的视频怎样才能恢复?详尽指南

在日常生活中,我们有时会不小心删除一些重要的视频文件,或者在整理存储空间时不慎丢失了珍贵的记忆片段。这时候,我们可以通过一些数据恢复工具和技巧,找回这些被删除的视频。本文将详细介绍几种常见且有效的视频恢复方法&#xf…

升腾c92安装ubuntu20.04 server(二)

一、本人使用大白菜制作的U盘安装ubuntu服务出现了如下错误 通过晚上查询知道,出现unable to find a medium containing a live file system 是因为U盘和升腾c92的u口不匹配导致,解决方案如下: 一、安装软碟通 在安装完软碟通之后&#xf…

git 版本回退-idea

1、选中项目,右键,打开 git历史提交记录 2、选中想要回退的版本,选择 hard(不保留版本记录) 3、最终选择强制提交(必须强制) OK,搞定

合作伙伴中心Partner Center中添加了Copilot预览版

目录 一、引言 二、Copilot 功能概述 2.1 Copilot 简介 2.2 Copilot 的核心功能 2.3 Copilot 的访问和使用 三、Copilot 的使用方法 3.1 Copilot 功能区域 3.2 Copilot 使用示例 3.2.1 编写有效提示 3.2.2 使用反馈循环 四、负责任的人工智能 4.1 Copilot 结果的可…

Docker 安全及日志管理(包含SSL证书)

目录 一、Docker 存在的安全问题 二、Docker 架构缺陷与安全机制 三、Docker 安全基线标准 四、容器相关的常用安全配置方法 五、限制流量流向 六、镜像安全 七、DockerClient 端与 DockerDaemon 的通信安全 https的单向认证流程 https的双向认证流程 八、DockerClie…

实时同步:使用 Canal 和 Kafka 解决 MySQL 与缓存的数据一致性问题

目录 1. 准备工作 2. 将需要缓存的数据存储 Redis 3. 监听 canal 存储在 Kafka Topic 中数据 1. 准备工作 1. 开启并配置MySQL的 BinLog(MySQL 8.0 默认开启) 修改配置:C:\ProgramData\MySQL\MySQL Server 8.0\my.ini log-bin"HELO…

STM32——GPIO(LED闪烁)

一、什么是GPIO? GPIO(通用输入输出接口): 1.GPIO 功能概述 GPIO 是通用输入/输出(General Purpose I/O)的简称,既能当输入口使用,又能当输出口使用。端口,就是元器件…

HTML常用的转义字符——怎么在网页中写“<div></div>”?

一、问题描述 如果需要在网页中写“<div></div>”怎么办呢&#xff1f; 使用转义字符 如果直接写“<div></div>”&#xff0c;编译器会把它翻译为块&#xff0c;类似的&#xff0c;其他的标签也是如此&#xff0c;所以如果要在网页中写类似于“<div…

docker 构建 mongodb

最近需要在虚拟机上构建搭建mongo的docker容器&#xff0c;搞了半天老有错&#xff0c;归其原因&#xff0c;是因为现在最新的mango镜像的启动方式发生了变化&#xff0c;故此现在好多帖子&#xff0c;就是错的。 ok&#xff0c;话不多说&#xff1a; # 拉取最新镜像&#xf…

SpringBoot 使用easypoi.excel实现导入解析数据,并结合数据字典实现对数据的校验

在日常开发工作中避免不了的功能需求&#xff1a;导入Excel文件&#xff0c;然而导入文件流操作、对数据的校验有是件麻烦事&#xff0c;自从接触了easypoi后&#xff0c;觉得封装的很好&#xff0c;很简洁。 使用的主要依赖如下&#xff1a; <dependency><groupId&…

Unity3D结合AI教育大模型 开发AI教师 AI外教 AI英语教师案例

自2022年底ChatGPT引爆全球之后&#xff0c;大模型技术便迎来了一段崭新的快速发展期&#xff0c;由其在GPT4.0发布后&#xff0c;AI与教育领域结合产品研发、已成为教育AI科技竞争的新高地、未来产业的新赛道、经济发展的新引擎和新产品的诞生地。 据不完全统计&#xff0c;目…

代码随想录 day 22 回溯

第七章 回溯算法part01 理论基础 其实在讲解二叉树的时候&#xff0c;就给大家介绍过回溯&#xff0c;这次正式开启回溯算法&#xff0c;大家可以先看视频&#xff0c;对回溯算法有一个整体的了解。 题目链接/文章讲解&#xff1a;https://programmercarl.com/%E5%9B%9E%E6%B…

pdf格式过大怎么样变小 pdf文件过大如何缩小上传 超实用的简单方法

面对体积庞大的 PDF 文件&#xff0c;我们常常需要寻找有效的方法来缩减其大小。这不仅能够优化存储空间&#xff0c;还能提升文件的传输和打开速度。PDF文件以其稳定性和跨平台兼容性成为工作和学习中的重要文件格式。然而&#xff0c;当我们需要通过邮件发送或上传大文件时&a…

力扣94题(java语言)

题目 思路 使用一个栈来模拟递归的过程&#xff0c;以非递归的方式完成中序遍历(使用栈可以避免递归调用的空间消耗)。 遍历顺序步骤&#xff1a; 遍历左子树访问根节点遍历右子树 package algorithm_leetcode;import java.util.ArrayList; import java.util.List; import…

无人机之环保监控篇

随着科技的不断进步&#xff0c;无人机作为一种创新的技术手段&#xff0c;在环保监控领域发挥着越来越重要的作用。 一、覆盖范围广 无人机能够轻松覆盖广阔的地理区域&#xff0c;无论是偏远的山区、广袤的森林还是大型的工业园区。相比传统的地面检测方式&#xff0c;其不…

vue3 常用的知识点

setup:容许在script当中书写组合式API 并且vue3的template不再要求唯一的根元素 <script setup>const name app; </script>组合式API的用法&#xff1a; 可以直接在script标签中定义变量或者函数&#xff0c;然后直接在template当中使用 <template>{{mes…

机器学习 | 回归算法原理——多重回归

Hi&#xff0c;大家好&#xff0c;我是半亩花海。接着上次的多项式回归继续更新《白话机器学习的数学》这本书的学习笔记&#xff0c;在此分享多重回归这一回归算法原理。本章的回归算法原理基于《基于广告费预测点击量》项目&#xff0c;欢迎大家交流学习&#xff01; 目录 一…