parallels 因为某些原因无法满足需求(比如在Mac的活动监视器里可以看到虚拟机里的正在运行的程序),故折腾下使用 Vmware Fusion 安装Win 11。
vmware fusion for ARM下载地址(需要登录):https://customerconnect.vmware.com/downloads/get-download?downloadGroup=FUS-PUBTP-2021H1
https://www.microsoft.com/en-us/software-download/windowsinsiderpreviewARM64?wa=wsignin1.0
需要先访问以上链接,使用微软账号注册内部预览版体验计划,再返回上述链接所对应页面即可看到下载链接:
不过下载后的是一个 .VHDX文件,大小9.7G左右,这种格式的镜像文件是Hyper-V用的,我们可以用qemu-img命令转换成vmware所用的 .vmdk 格式的镜像
brew install qemu
qemu-img convert Windows11_InsiderPreview_Client_ARM64_en-us_22598.vhdx -O vmdk -o adapter_type=lsilogic Windows11_InsiderPreview_Client_ARM64_en-us_22598.vmdk
PS:文件名可能需要根据自己下载的镜像名字进行修改。
新建 -> 创建自定义虚拟机 -> 其他 64位 ARM -> 使用现有虚拟磁盘,然后选择虚拟磁盘时选中第二步中生成的 .vmdk 镜像即可:
之后启动虚拟机之前需要修改下默认的cpu数量和内存大小(默认的实在太小了),接着正常启动即可。
安装过程中有一步是需要连接到网络,没找到可以连网的地方,Next按钮也为灰色,如下:
这时可以通过 shift + F10 组合键打开命令行,然后输入 OOBE\BYPASSNRO
并回车,如下:
由于 VMware 尚未正式支持 Windows 11 ARM64,VMware Tools 也没有完成适配,故一些专用驱动和辅助程序无法安装,导致虚拟机找不到网卡而无法上网,可通过以下方式解决虚拟机联网的问题。
以管理员权限打开命令行,执行以下命令:
bcdedit /debug on
bcdedit /dbgsettings net hostip:xxx.xxx.xxx.xxx port:50000 # hostip应该随便写(一般写192.168网段的,避免冲突,最后分配的ip不一定是自己填的hostip),端口需要为49151 和65536 之间的值
执行上述命令后重启系统即可发现虚拟机可以正常上网了(不过会使虚拟机暴露在混杂模式下,出于安全考虑,VMware Fusion 在每次开启虚拟机联网的时候,都要提示输入 macOS 用户密码。但混杂模式对于普通用户的影响是微乎其微的,可以通过在菜单栏里选择 VMware Fusion > 偏好设置,解开左下角的锁头按钮,然后将“需要通过鉴定才能进入混杂模式”的勾选去掉)
PS:bcdedit 是 Windows 上用于调试启动选项的命令行工具;而上述两行命令的作用,就是首先启用内核调试器,然后添加一个专用于内核调试的以太网网络连接。
安装好后的虚拟机分辨率较低,且调整分辨率按钮为灰色,这就很尴尬了,解决方案如下:
以管理员权限打开命令行,执行如下命令:
mountvol a: /s
a:
dir
dir EFI
cd EFI
mkdir debian
我这边默认是没有debian这个文件夹的(上述红框中的debian文件夹是自己通过创建的)
然后将以下两个文件(grub.cfg 和 grubaa64.efi)放到debian目录下:
grub.cfg
#
# minimal grub configuration
#
set timeout=2
set default=0
set gfxmode=1920x1200
menuentry "Windows 11" {
insmod gfxterm
terminal_output gfxterm
set bootnext=/efi/microsoft/boot/bootmgfw.efi
search --file $bootnext --set root
chainloader $bootnext
boot
}
# eof
grubaa64.efi 可通过以下途径获取:
下载以下deb包:https://deb.debian.org/debian/pool/main/g/grub2/grub-efi-arm64-bin_2.06-2_arm64.deb
解压后如下:
grub-efi-arm64-bin_2.06-2_arm64/usr/lib/grub/arm64-efi/monolithic
把上述 grubaa64.efi 也放到debian目录下,命令如下(管理员权限执行):
copy c:\users\用户名\desktop\grub.cfg a:\efi\debian\
copy c:\users\用户名\desktop\grubaa64.efi a:\efi\debian\
然后选择启动到固件,调整下启动顺序:
Boot Maintenance Manager --> Boot Options --> Add Boot Option
上述输入描述的地方,笔者输入的是 change display,这个可以随意写,然后F10 保存,Commit Changes and Exit即可。
接着调整下启动顺序:
选中 change display 然后按+键调整到第一位即可。
选中 Commit Changes and Exit,回车。
其实还有个更简单的方案:使用 Microsoft Remote Desktop
比较简单就不具体写了。