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

零、起因

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

壹、视频教程

【Windows(x86)上部署ARM虚拟机(Ubuntu)-哔哩哔哩】 https://b23.tv/1ZT0QG8

贰、准备工作

我们要在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指令集:

6. 配置Ubuntu系统

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

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

肆、参考文档

伍、文件资源

链接:https://pan.baidu.com/s/1hYPR9RymKkGBgHj9YMaeGQ?pwd=j0y3

提取码:j0y3

【虚拟机】Windows(x86)上部署ARM虚拟机(Ubuntu)的更多相关文章

  1. 在 Windows Azure 上部署并定制化 FreeBSD 虚拟机镜像

     发布于 2014-12-11 作者 陈阳 FreeBSD 基础镜像现已登陆中国的 VM Depot! 对于青睐 BSD 而非 Linux 的开源爱好者来说,这无疑是个好消息.同时,随着该基础镜像 ...

  2. 虚拟机评估——如何确定一个CPU核上部署的虚拟机数量?

    最近研究虚拟化技术,不可避免遇到一个问题:如何评估物理主机上虚拟主机的容量?下面这篇文章的思路有一定的启发性,转发一下. 如何确定一个CPU核上部署的虚拟机数量? 摘要:本文说明一个CPU核上部署虚拟 ...

  3. 在 Windows Azure 上部署预配置 Oracle VM

    Microsoft 和 Oracle 近期宣布建立战略合作伙伴关系,基于此,我们将通过 Windows Azure 镜像库推出多种常用的 Oracle 软件配置.即日起,客户可以在 Windows S ...

  4. .Net Core WebApi(二)在Windows服务器上部署

    上一篇学习到了如何简单的创建.Net Core Api和Swagger使用,既然写了接口,那么就需要部署到服务器上才能够正式使用.服务器主要用到了两种系统,Windows和Linux,.Net和Win ...

  5. WINDOWS Server2003上部署一个Asp.Net的网站

    对于许多新手来说,如何在服务器上部署网站并不了解,这个教程希望对新手有帮助. 1.IIS服务器 2..Net Framework3.5 (方便起见,我们这里Framework说的都是指的这个版本) 这 ...

  6. Express在windows IIS上部署详解

    最近公司在用Express+angularjs+wcf开发系统,让我在windows上部署系统,遇到不少问题,不过最后还是解决了,在IIS上部署系统, 首先windows需安装以下软件: 1.node ...

  7. Windows Server上部署IoTdb 集群

    本文是参考官方的 IoTDB 集群版(1.0.0)的安装及启动教程:https://iotdb.apache.org/zh/UserGuide/V1.0.x/Cluster/Cluster-Setup ...

  8. 使用nssm在windows服务器上部署nodejs

    Linux上,可以轻松的使用forever或者pm2来部署nodejs应用.但是在windows下就麻烦了,pm2明确的说支持Linux & MacOS,forever在windows下貌似问 ...

  9. nssm在windows服务器上部署nodejs,coffee启动方式

    本想用forever / pm2 来部署nodejs, 百度后发现只能在Linux系统上使用,window上没法使用,兜一圈后又转nssm了.... 在Linux上,可以轻松的使用forever或者p ...

  10. 【netcore入门】在Windows IIS上部署.NET Core 2.1项目

    部署之前先检查下面2个先决条件是否满足 1.安装了 IIS 模块 win7 在 控制面板→程序和功能→打开或关闭Windows功能→勾选Internet 信息服务(Internet Informati ...

随机推荐

  1. Windows bat批处理文件结束某个程序进程,删除文件夹

    Windows bat批处理文件结束某个程序进程,删除文件夹 bat文件内容: @echo off setlocal :: 要结束的应用程序进程名 set "PROCESS_NAME=助手. ...

  2. java线程用法和区别

    从操作系统的角度讲,os会维护一个ready queue(就绪的线程队列).并且在某一时刻cpu只为ready queue中位于队列头部的线程服务.但是当前正在被服务的线程可能觉得cpu的服务质量不够 ...

  3. 第三章 dubbo源码解析目录

    7.6 服务远程暴露 - 注册服务到zookeeper 为了安全:服务启动的ip全部使用10.10.10.10 远程服务的暴露总体步骤: 将ref封装为invoker 将invoker转换为expor ...

  4. canal源码分析简介-1

    1.0 canal源码分析简介 canal是阿里巴巴开源的mysql数据库binlog的增量订阅&消费组件.项目github地址为:https://github.com/alibaba/can ...

  5. SM9-密钥交换

    算法过程 代码实现 ///************************************************************************ // File name: ...

  6. 鸿蒙页面开发 - 组件复用样式 @Styles

    这篇文章介绍一个装饰器 @Styles 他的主要作用是: 当多个组件都有相同的样式,如果每个组件单独设置,会造成大量重复的代码冗余.这时我们可以使用 @Styles 将这些相同样式封装成一个方法,供这 ...

  7. Jenkins执行Shell脚本超时错误处理指南

    Jenkins执行Shell脚本超时错误处理指南 在使用Jenkins进行自动化测试时,经常会遇到需要执行Shell脚本的情况.然而,当Shell脚本执行时间过长,超过了Jenkins配置的超时限制时 ...

  8. 【杂谈】主键ID如何选择——自增数 OR UUID?

    1.生成位置如何影响选择? 数据库往返时间 使用自增数时,ID是由数据库在执行INSERT操作时生成的:而UUID则可以在应用层生成. 考虑这样的场景: 一个方法需要插入A和B两个实体.其中B的数据需 ...

  9. 用 Emacs 写代码有哪些值得推荐的插件

    以下是一些用于 Emacs 写代码的值得推荐的插件: Ido-mode:交互式操作模式,它用列出当前目录所有文件的列表来取代常规的打开文件提示符,能让操作更可视化,快速遍历文件. Smex:可替代普通 ...

  10. Feedalyze - 让你听得见、听得清用户的反馈

    满足用户需求,解决用户问题,获得适当报酬是商业成功最为重要的因素.然而扪心自问,当您推出新产品后,您真的在听.听得见.听得清用户的反馈么? 当今信息传播迅猛,渠道繁多,优秀产品随口碑效应供不应求,劣质 ...