百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

「苹果M1」免费QEMU安装Windows11(Build 22000.100)教程PD替代

toyiye 2024-06-21 12:41 13 浏览 0 评论


2021年苹果 m1 电脑的用户除了收费的Parallels Desktop,还能有什么选择?如果熟悉命令行工具,不妨考虑下这个免费的QEMU虚拟机,通过它你甚至可以跑Windows11,听起来挺香的吧?下面就跟随我的视频一块来看看怎么在苹果M1上利用QEMU来安装Windows11吧。

1、QEMU开源项目

QEMU项目地址: https://www.qemu.org



QEMU(quick emulator)是一款由法布里斯·贝拉(Fabrice Bellard)等人编写的免费的可执行硬件虚拟化的(hardware virtualization)开源托管虚拟机(VMM)。

其与Bochs,PearPC类似,但拥有高速(配合KVM),跨平台的特性。

QEMU是一个托管的虚拟机镜像,它通过动态的二进制转换,模拟CPU,并且提供一组设备模型,使它能够运行多种未修改的客户机OS,可以通过与KVM一起使用进而接近本地速度运行虚拟机(接近真实电脑的速度)。

QEMU还可以为user-level的进程执行CPU仿真,进而允许了为一种架构编译的程序在另外一种架构上面运行(借由VMM的形式)。

2、安装

主要安装步骤,参考 https://gist.github.com/niw/e4313b9c14e968764a52375da41b4278

该文章里有10步骤,按照这个文章里的步骤,我顺利安装上了Windows10 。以此步骤我安装上了Windows 11.

2.1 具体步骤

一、安装XCODE 12、MACPORTS在本机上。(用HOMEBREW也是一样的)

xcode-select --install

二、安装必要的软件包:

sudo port install ninja pkgconfig glib2 libpixman

三、克隆QEMU源代码

cd /Volume/SOFT
git clone https://git.qemu.org/git/qemu.git

我把文件安装在了外接SSD盘(/Volume/SOFT)上了。

四、 建立本地分支,应用ALEXGRAF制作的 HYPERVISOR.FRAMEWORK 补丁

cd qemu
git checkout 3c93dfa -b wip/hvf
curl 'https://patchwork.kernel.org/series/485309/mbox/'|git am --3way

五、 编译 QEMU

mkdir build
cd build
../configure --target-list=aarch64-softmmu --enable-cocoa
make -j

这一步编译时间比较长,耐心等待即可。

六、 下载预编译好为QEMU制作的EDK II OVMF EFI镜像

下载下面的地址就行了:

https://gist.github.com/niw/4f1f9bb572f40d406866f23b3127919b/raw/f546faea68f4149c06cca88fa67ace07a3758268/QEMU_EFI-cb438b9-edk2-stable202011-with-extra-resolutions.tar.gz

七、 准备 PFLASH 文件,为了实现更多的分辨率选择

cd ~/Downloads
tar xzvf QEMU_EFI-*.tar.gz
dd if=/dev/zero of=pflash0.img bs=1m count=64
dd if=/dev/zero of=pflash1.img bs=1m count=64
dd if=QEMU_EFI.fd of=pflash0.img conv=notrunc
dd if=QEMU_VARS.fd of=pflash1.img conv=notrunc

八、 下载 WINDOWS 11 ARM 版本镜像

我这里直接从 uupdump.net 上进行下载。如果方便下载很慢的话,也可以从公众号:Edge麦客,回复:win‘11 来获取国内的下载镜像地址,加速下载。

九、 制作本地安装盘

在 Download 目录运行 qemu-img命令,建立一个120G容量的虚拟磁盘文件,实际上这文件占用很少空间。

path-to-qemu/qemu-img create -f qcow2 disk1.qcow 120G

把path-to-qemu替换为qemu-img实际所在目录,比如我这个是保存在/Volume/SOFT/qemu/build 目录下,那命令就应该是:

/Volume/SOFT/qemu/build/qemu-img create -f qcow2 disk1.qcow 120G

十、 运行WINDOWS11安装

/Volume/SOFT/qemu/build/qemu-system-aarch64 \
  -monitor stdio \
  -M virt,highmem=off \
  -accel hvf \
  -cpu cortex-a72 \
  -smp 4 \
  -m 4096 \
  -drive file=~/Downloads/pflash0.img,format=raw,if=pflash,readonly=on \
  -drive file=~/Downloads/pflash1.img,format=raw,if=pflash \
  -device ramfb \
  -device qemu-xhci \
  -device usb-kbd \
  -device usb-tablet \
  -device intel-hda \
  -device hda-duplex \
  -nic user,model=virtio \
  -drive file=~/Downloads/disk1.qcow2,format=qcow2,if=none,id=boot,cache=writethrough \
  -device nvme,drive=boot,serial=boot

通过上面这么一条命令,来完成Windows11的安装。大概意思就是挂载一个磁盘disk1.qcow2,然后一个Windows11光盘镜像。

启动后,立即按ESC键,然后选择从光盘镜像上启动就行了。

十一、跳过TPM检测

启动Windows11安装后,正常情况下系统会卡住,因为检测TPM通不过。所以要进行下面的操作,以跳过TPM的检测。

不要慌,在这个界面按 Shift+F10,打开命令行界面,输入 regedit 打开注册表,然后定位到:

HKEYLOCALMACHINESYSTEMSetup

创建一个名为“LabConfig”的项,接着在“LabConfig”下创建两个 DWORD 值:

键为“BypassTPMCheck”,值为“00000001”

键为“BypassSecureBootCheck”,值为“00000001”

保存退出后,点返回上一层,再点回来,上图的提示就消失了,大家就可以正常安装 Win11。

十二、安装网卡驱动

安装结束后,需要给网卡安装驱动,不然无法上网。这里就先要打开驱动的数字签名检查。

bcdedit.exe -set TESTSIGNING ON

然后重启虚拟机,接着打开“设备管理器”,更换网卡驱动。

网卡驱动下载地址:

https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/virtio-win-0.1.190-1/virtio-win-0.1.190.iso

最后找到显示惊叹号的网卡图标,双击替换驱动,成功后就可以正常上网了。不过ARM64虚拟机里还是有很多不可知设备,看来开源社区对于苹果M1的支持度还不是很高,没有商业版的Parallels Desktop 完成度高,不过作为免费的虚拟机能达到这效果已经是相当不错了。

3. 跑分

最好的证明就是跑个基准测试了。于是赶紧去下载了7-zip,看看它的最新测试版本 21.03 beta ARM64版本在上面跑分如何?



结果如上图,果然是名不虚传。相比于收费的PD一点也不弱(下图)。




作为免费的开源的模拟器工具,它跑UWP的应用还是有问题,会直接崩溃,这情况和早期的PD版本是一样的,不知道后面会不会有所改进。要是这个问题修复了,那它的的确确是非常值得使用的。

另外它的图形加速是没有的,驱动没有到位。不过运行日常的工具软件是可以的。比如网盘客户端之类的是没问题的。

相关推荐

为何越来越多的编程语言使用JSON(为什么编程)

JSON是JavascriptObjectNotation的缩写,意思是Javascript对象表示法,是一种易于人类阅读和对编程友好的文本数据传递方法,是JavaScript语言规范定义的一个子...

何时在数据库中使用 JSON(数据库用json格式存储)

在本文中,您将了解何时应考虑将JSON数据类型添加到表中以及何时应避免使用它们。每天?分享?最新?软件?开发?,Devops,敏捷?,测试?以及?项目?管理?最新?,最热门?的?文章?,每天?花?...

MySQL 从零开始:05 数据类型(mysql数据类型有哪些,并举例)

前面的讲解中已经接触到了表的创建,表的创建是对字段的声明,比如:上述语句声明了字段的名称、类型、所占空间、默认值和是否可以为空等信息。其中的int、varchar、char和decimal都...

JSON对象花样进阶(json格式对象)

一、引言在现代Web开发中,JSON(JavaScriptObjectNotation)已经成为数据交换的标准格式。无论是从前端向后端发送数据,还是从后端接收数据,JSON都是不可或缺的一部分。...

深入理解 JSON 和 Form-data(json和formdata提交区别)

在讨论现代网络开发与API设计的语境下,理解客户端和服务器间如何有效且可靠地交换数据变得尤为关键。这里,特别值得关注的是两种主流数据格式:...

JSON 语法(json 语法 priority)

JSON语法是JavaScript语法的子集。JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔花括号保存对象方括号保存数组JS...

JSON语法详解(json的语法规则)

JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔大括号保存对象中括号保存数组注意:json的key是字符串,且必须是双引号,不能是单引号...

MySQL JSON数据类型操作(mysql的json)

概述mysql自5.7.8版本开始,就支持了json结构的数据存储和查询,这表明了mysql也在不断的学习和增加nosql数据库的有点。但mysql毕竟是关系型数据库,在处理json这种非结构化的数据...

JSON的数据模式(json数据格式示例)

像XML模式一样,JSON数据格式也有Schema,这是一个基于JSON格式的规范。JSON模式也以JSON格式编写。它用于验证JSON数据。JSON模式示例以下代码显示了基本的JSON模式。{"...

前端学习——JSON格式详解(后端json格式)

JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScriptProgrammingLa...

什么是 JSON:详解 JSON 及其优势(什么叫json)

现在程序员还有谁不知道JSON吗?无论对于前端还是后端,JSON都是一种常见的数据格式。那么JSON到底是什么呢?JSON的定义...

PostgreSQL JSON 类型:处理结构化数据

PostgreSQL提供JSON类型,以存储结构化数据。JSON是一种开放的数据格式,可用于存储各种类型的值。什么是JSON类型?JSON类型表示JSON(JavaScriptO...

JavaScript:JSON、三种包装类(javascript 包)

JOSN:我们希望可以将一个对象在不同的语言中进行传递,以达到通信的目的,最佳方式就是将一个对象转换为字符串的形式JSON(JavaScriptObjectNotation)-JS的对象表示法...

Python数据分析 只要1分钟 教你玩转JSON 全程干货

Json简介:Json,全名JavaScriptObjectNotation,JSON(JavaScriptObjectNotation(记号、标记))是一种轻量级的数据交换格式。它基于J...

比较一下JSON与XML两种数据格式?(json和xml哪个好)

JSON(JavaScriptObjectNotation)和XML(eXtensibleMarkupLanguage)是在日常开发中比较常用的两种数据格式,它们主要的作用就是用来进行数据的传...

取消回复欢迎 发表评论:

请填写验证码