IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> macbook M1运行arm64虚拟机 -> 正文阅读

[嵌入式]macbook M1运行arm64虚拟机

前言

macbook 最新的架构是M1的架构,这个是一个aarch64的cpu架构,之前的一些项目中接触到很多arm相关的东西,包括一些虚拟化的一些东西

parallels这个是一个商业软件,也是mac上面比较成熟的虚拟化软件,这个是收费的,在macbook m1 刚出的时候,出过一个免费的测试版本供大家测试,测试完成以后,马上就不能用了,需要licence,这个也正常,并且当时还有个bug,是底层的内核内核不支持PAGESIZE为64K的问题,而centos7默认已经是64K的,这个不清楚后面修改没,可以通过改内核来运行,这个后续看下qemu这边有没有类似的问题

本篇是用的qemu来实践的

操作过程

下载软件

https://github.com/KhaosT/ACVM/releases/download/v1.0-4/ACVM.zip

这个软件是已经打好的版本,我们直接解压使用,带图形界面的使用比较方便,使用过程中存在一个问题,无法识别到盘的问题
解压后直接就是一个二进制的,双击运行即可

在这里插入图片描述
然后需要下载一个iso和创建一个空的img文件

在二进制上面显示包内容,然后进入到子目录ACVM.app/Contents/Resources,这个里面有个qemu-img的命令,可以用来创建系统盘

zphj1987@zphj1987deMacBook-Pro Resources % ./qemu-img create -f qcow2 -o size=20G  /Users/zphj1987/Downloads/myhost/ubuntu.img
Formatting '/Users/zphj1987/Downloads/myhost/ubuntu.img', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=21474836480 lazy_refcounts=off refcount_bits=16

下载一个ubuntu的arm64的iso

ubuntu-20.04.2-server-arm64.iso

运行acvm,并把上面的img和iso拖进去

在这里插入图片描述
到这里可以看到没有识别到磁盘
这个地方经过分析,应该是启动使用的是nvme的磁盘驱动,而nvme在系统里面磁盘没有被识别到

zphj1987@zphj1987deMacBook-Pro Resources % ps -ef|grep nvme
  501 14757 14756   0  5:47PM ??         1:37.12 /var/folders/k2/dhjmhxb116sdn23hly6wvygh0000gn/T/AppTranslocation/CFDAB508-6D38-420A-B4F2-3631D1064DC0/d/ACVM.app/Contents/Resources/qemu-system-aarch64 -M virt,highmem=no -accel hvf -cpu host -smp 2 -m 2G -bios /private/var/folders/k2/dhjmhxb116sdn23hly6wvygh0000gn/T/AppTranslocation/CFDAB508-6D38-420A-B4F2-3631D1064DC0/d/ACVM.app/Contents/Resources/QEMU_EFI.fd -device ramfb -device qemu-xhci -device usb-kbd -device usb-tablet -nic user,model=virtio -rtc base=localtime,clock=host -drive file=/Users/zphj1987/Downloads/myhost/ubuntu.img,if=none,id=boot,cache=writethrough -device nvme,drive=boot,serial=boot -device intel-hda -device hda-duplex -drive file=/Users/zphj1987/Downloads/ubuntu-20.04.2-m1-server-arm64.iso,media=cdrom,if=none,id=cdimage -device usb-storage,drive=cdimage

这个是命令行捕获的参数,可以看到有个

 -device nvme,drive=boot,serial=boot

所以需要修改下代码,还好作者也开源了代码,直接修改即可

下载代码

源码地址在这里

https://github.com/KhaosT/ACVM/archive/refs/tags/v1.0-4.zip

解压后的代码是这样的
在这里插入图片描述
这个地方就需要下载xcode进行编译了,xcode的下载有11G,这个就需要等待一会了
下载完成后,打开项目的目录,导入项目


修改ViewController.swift文件里面的

“-device”, “nvme,drive=boot,serial=boot”,

“-device”, “virtio-blk,drive=boot,serial=boot”,

修改好了以后进行编译
在这里插入图片描述
这个Products目录里面就是生成的二进制,改好了以后

在这里插入图片描述

然后删除掉之前的程序,运行改好的程序

sh-3.2# ps -ef|grep qemu
  501 15317 15309   0  6:22PM ??         0:13.46 /Users/zphj1987/Downloads/myhost/ACVM.app/Contents/Resources/qemu-system-aarch64 -M virt,highmem=no -accel hvf -cpu host -smp 4 -m 4G -bios /Users/zphj1987/Downloads/myhost/ACVM.app/Contents/Resources/QEMU_EFI.fd -device ramfb -device qemu-xhci -device usb-kbd -device usb-tablet -nic user,model=virtio -rtc base=localtime,clock=host -drive file=/Users/zphj1987/Downloads/myhost/ubuntu.img,if=none,id=boot,cache=writethrough -device virtio-blk,drive=boot,serial=boot -device intel-hda -device hda-duplex -drive file=/Users/zphj1987/Downloads/ubuntu-20.04.2-m1-server-arm64.iso,media=cdrom,if=none,id=cdimage -device usb-storage,drive=cdimage
    0 15323 15273   0  6:22PM ttys001    0:00.00 grep qemu

可以看到有

-device virtio-blk,drive=boot

就是改好的
注意下,之前的程序如果占用的情况,可能出现没替换成功的,这个通过检查运行目录查看下,就是上面的ps查询到的命令的路径

到这个界面显示,就是可以了

在这里插入图片描述
然后就可以安装好了,这里修改了这个磁盘参数解决磁盘识别的问题,后续我们需要改其它的地方,也是可以在同一个文件里面修改的

在这里插入图片描述
可以看到ubuntu的系统的pagesize还是4K的,这个后续再看下centos的安装情况

总结

我们需要开发编译arm相关的软件的时候,往往很难找到性能比较好的机器,树莓派什么的性能肯定是不足的,而华为鲲鹏那种arm机器又不是每个人都可以去调用资源,安培的机器也不菲,如果正好需要开发arm相关的,比如飞腾什么的,自己弄个M1的机器,然后用这个Qemu + HVF的硬件加速虚拟化还是很方便的

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-07-16 11:27:52  更:2021-07-16 11:28:31 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年4日历 -2024/4/28 20:04:02-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码