从苹果的 M1 芯片 MacBook 发布后,打破了人们对 ARM 芯片性能弱鸡,无法运行大型软件的印象 。苹果牛X的地方在于 X86 和 ARM 之间的过渡,目前已经有非常多的软件开发商进行了对 ARM 的适配,例如 Adobe 系列、QQ 等常用到的软件 。
其实在 2012 年的时候微软就发布过了基于 Tegra 3 ARM 的 Surface 平板电脑 , 后来又发布了基于骁龙 SQ1/SQ2 ARM 的 Surface Pro X , 不过由于性能关心,一直没有获得太大的关注度,加上缺乏原生开发的 ARM 应用 。
不过最近 Windows 10 on ARM 似乎又火了 , 更多人愿意尝试这个系统,因为部分软件开发商在适配苹果的 M1 芯片,顺手也适配了下 Windows 10 on ARM , 例如之前 Adobe 就宣布推出 Windows ARM 版的 PhotoShop,目前还是 Beta 阶段 。
文章插图
近期 macOS 著名的虚拟机软件 Parallel Desktop 新版本支持 M1 Mac,可运行Windows 10 on ARM 系统 , 所以买了 M1 Mac 的小伙伴,将得到一台能运行macOS,iOS,Windows 程序的笔记本 。
文章插图
如果你也想体验尝试下 Windows 10 on ARM 系统,今天雷锋哥就分享如何在 X86 的电脑上模拟运行 Windows 10 on ARM 系统 。注意:下面的教程来源知乎用户 @初生之鸟 小伙伴的分享 。
准备工具
1.Windows 10 on ARM
2.QEMU软件
3.QEMU EFI 文件
4.USB Mass Storage DXE 驱动
安装方法
创建两个 VHD,一个 UEFI 能访问的 VHD , 存放 USB Mass Storage DXE 驱动模块大小 16MB 足矣,下文称为 hdd.vhd(如果能够把驱动模块集成到 UEFI 里面,这个 VHD 可以省略) 。
以及一个实际安装系统的 VHD,下文称为 usb.vhd大小 32-64GB 足够了 , 毕竟这也只能作为实验 。
接着挂载 hdd.vhd 文件,然后创建分区并格式化为 FAT32 格式,放入 USBMassStorageDxe_arm64.efi 模块文件,然后卸载 VHD 。
挂载 usb.vhd,使用 GPT 分区表,创建 ESP 和安装系统的分区 ESP 使用 FAT32 格式,大小 100MB,安装系统的分区使用 NTFS,占剩下的空间给这两个分区分配盘符,下文假设 ESP 为 S:,系统安装分区为 W:
然后使用 dism 将系统 ISO 的 install.wim 恢复到 W: 假设 ISO 挂载到 G:,恢复的映像 ID 为 4(一般 4 是 Pro,具体的 ID 请使用 dism /get-wiminfo 查看)
C:\> dism /apply-image /imagefile:G:\sources\install.wim /index:4 /applydir:W:\
然后使用 bcdboot 在 ESP 分区上建立引导C:\> bcdboot W:\Windows /s S: /f UEFI
然后卸载 VHD , 这里建议备份一下 usb.vhd 再继续 。QEMU配置启动
将 Linaro UEFI 的 QEMU_EFI.fd 复制到一个方便的位置
下面假设为以下路径
- EFI D:\QEMU_EFI.fd
- hdd.vhd D:\hdd.vhd
- usb.vhd D:\usb.vhd
qemu-system-aarch64 -M virt -m 2048 -cpu cortex-a53 -smp 2 -bios D:\QEMU_EFI.fd -device VGA -device nec-usb-xhci -device usb-kbd -device usb-tablet -drive file=D:\usb.vhd,id=usbstick,if=none -device usb-storage,drive=usbstick -hda D:\hdd.vhd
其中- -m 2048 为内存大?。ノ晃?MB
- -cpu cortex-a53 为模拟的 CPU 内核,可选 cortex-a57 和 cortex-a53
- -smp 2 为模拟的 CPU 核心数
模拟器启动之后,按 ESC 进入 UEFI 的设置菜单,选择 Boot Manager,选择最下面的 EFI Internal Shell , 进入 EFI Shell
然后应该可以看到 hdd.vhd 的分区 FS0,键入以下命令加载 USB Mass Storage 驱动
load fs0:\USBMassStorageDxe_arm64.efi
然后键入以下命令,刷新设备列表map -r
这时应该能看到一个 FS0: 和一个 FS1:,一般 usb.vhd 的 ESP 会分配到 FS0: , 所以我们键入fs0:\efi\boot\bootaa64.efi
启动系统,如无意外的话,系统就会启动了 。文章插图
系统启动 , Logo 来自于 UEFI 固件
文章插图
开始菜单
文章插图
系统属性
文章插图
自带的 UWP 是原生的,不过是32位
文章插图
Edge 是原生 64 位 ARM
文章插图
系统组件,如 Shell Experience Host(开始菜单、通知中心等 UI 模块)、Text Input Application (触摸键盘与手写模块)、Cortana(小娜与搜索 UI)等 UWP 则为原生 64 位 ARM 程序
文章插图
用 .Net Framework 自带的 C# 编译器编译了一个简单的 Hello World 程序,显示为 32 位,实际上是 x86-32 (系统没有带任何 ARM 平台的 .Net Framework,系统默认的 shell 也是 cmd 而不是 PowerShell)
文章插图
同时运行三个平台(x86-32、ARM、ARM64)的 cmd.exe,并显示 PROCESSOR_ARCHITECTURE 环境变量
文章插图
Windows 目录下的四个 System 目录(SyCHPE32: CHPE DLL,供 x86 程序调用,内部是 ARM 机器码,使得核心系统库不需要进行二进制翻译,减少性能损失;SysARM32: ARM 32 位系统文件;System32: ARM 64 位系统文件;SysWOW64: x86 32 位系统文件)
文章插图
x86 二进制翻译器核心组件:xtajit.dll、xtac.exe、XtaCache.exe
文章插图
运行 x86-32 版本的 Notepad++
文章插图
运行 x86-32 版本的 CPU-Z(CPU-Z 的驱动加载失败 , 但是依然能获取部分信息)
性能测试
注意:由于 QEMU 使用的是异构模拟,性能肯定非常糟糕 , 这里仅作为 x86 二进制翻译性能的一个参考 。
也许很少人知道,在 Windows RT 的时候,有一批移植到 Windows RT 的原生 ARM32 Windows 程序 , 而这些程序在 Windows 10 ARM64 平台依然可以运行 。
而其中有一份 7zip 9.22 beta 。这里我们就用这个版本,以及官方下载的 7zip 9.22 beta x86-32 版本做一个简单的性能对比 。
测试环境:
- 宿主
- Intel i5 6300HQ , 4GBx2 DDR4 2133Mhz 双通道内存,Windows 10 Build 17074 x64
- 系统盘 为 Intel 600p SSD 128G,存放虚拟机 VHD 的为希捷 5400 转机械硬盘
- QEMU 2.11.0-rc4 @ Ubuntu 16.04 LTS (WSL),使用默认配置编译 , SDL 图形
- QEMU 启动参数如上文所示
- 虚拟机
- Machine virt,Cortex-A53 双核,2GB 内存
- 系统盘为 XHCI USB Mass Storage (原因见上文)
- Windows 10 Build 17074 ARM64
文章插图
原生 ARM 32 位版本
文章插图
x86 版本
有细心的朋友可能会发现,这两个版本并非完全相同,所以这只是一个非常粗略的性能比较 , 但可以明显看到 , x86 二进制翻译带来了接近 30-50% 的性能损失 。
对于轻量级应用来说问题不大,但是对于性能要求高的应用 , 就会非常吃力,尽管如此,在技术上已经非常成功了 。
总结
【教大家安装 Windows 10 on ARM 版本 电脑中sys文件怎么安装】目前 Windows 10 on ARM 最大问题缺乏有力的硬件平台和软件生态,不过之前有消息爆料微软正研发自家 ARM 处理器,也许后续会推出对应的 Surface 设备,最后感兴趣的小伙伴可以先尝鲜体验下 Windows 10 on ARM 系统 。
推荐阅读
- 济南省外异地就医如何报销?
- 如何修改服务器的登录账号和密码? 怎么改服务器的用户名密码
- 济南省内异地就医如何报销?
- 如何查询美国服务器的IP地址? 美国服务器ip地址怎么查
- 潍坊市线上如何办理退休手续和领取养老金?
- 咸阳个人养老金资金使用规则
- 丝瓜络的食用方法有哪些
- 如何计算app服务器的费用? app服务器怎么收费
- 个人养老金资金账户里的资金怎么使用