关于如何获取Windows on ARM的系统镜像,可以阅读:使用UUP构建Windows镜像。
3.1.2022 更新
建议在构建镜像的时候用uup.rg-adguard,那个可以移除安装限制,可以有效避免TPM问题(因为还不会怎么模拟TPM)
或者自己手动修改镜像
首先下载最新版QEMU。
QEMU的安装位置需要记牢,在安装程序会出现,后面需要用到。
下载文件名开头为edk2.git-aarch64的文件,并用7-Zip等解压缩工具多次解压,直至提取出QEMU_EFI.fd和vars-template-pflash.raw这两个文件。
按下 Windows徽标键+R,输入SystemPropertiesAdvanced并回车
点击“环境变量”。
在“系统变量(S)”里找到名为“Path”的项并双击,点击旁边的“新建(N)”,最后在矩形框中输入QEMU的安装目录。
然后全部点击“确定”即可。
以管理员身份运行cmd,输入以下命令。
qemu-img.exe create -f 硬盘格式 <自定义存放路径\文件名.硬盘格式> <容量大小><单位>
比如我的存放位置为E:\QEMU\ARM,文件名为OS,硬盘格式为qcow2(可选的有还raw、host_device、qcow、cow、vdi、vmdk、vpc、cloop、img),容量大小为60GB(单位有 K、M、G、T、P、E)
那么我的命令如下(需要区分大小写,而且路径和文件名不要有空格,用下划线_代替)
qemu-img.exe create -f qcow2 E:\QEMU\ARM\OS.qcow2 60G
没有别的提示就代表成功了
最后,将QEMU_EFI.fd、vars-template-pflash.raw这两个文件一并复制到存放位置。
在存放的目录(我的是E:\QEMU\ARM)下新建文本文档,命名为start.cmd,并编辑内容。
<>里的内容(包括引号)是需要自行修改的内容,你可以在最顶端插入chcp 65001,这样cmd内提示的中文报错就不会乱码。
qemu-system-aarch64.exe -M virt,virtualization=true -cpu cortex-<CPU 型号> -smp <CPU 核心数> -m <运行内存大小> ^
-device qemu-xhci -device usb-kbd -device usb-tablet ^
-drive file=<"硬盘文件路径\文件名.qcow2">,if=virtio ^
-nic user,model=virtio ^
-drive file=<"系统镜像路径\文件名.iso">,media=cdrom,if=none,id=cdrom -device usb-storage,drive=cdrom ^
-drive file=<"virtio-win 所在路径\virtio-win 的名称.iso">,media=cdrom,if=none,id=cdrom1 -device usb-storage,drive=cdrom1 ^
-bios QEMU_EFI.fd -device ramfb ^
-drive file=vars-template-pflash.raw,if=pflash,index=1,format=raw
比如我的CPU型号为a76(可选的还有a72,a57和a53,亦或者是其它)
CPU核心数量为4,运行内存大小为4096MiB,硬盘文件、系统镜像和virtio-win镜像命名分别为Image.iso、OS.qcow2和virtio-win-0.1.225.iso(若start.cmd与前面几个文件在同一目录下就不需要指定目录,直接填写名称即可)
那么我的命令如下(需要区分大小写,而且路径和文件名不要有空格,用下划线_代替,或者在收尾添加英文引号: ")
qemu-system-aarch64.exe -M virt,virtualization=true -cpu cortex-a76 -smp 4 -m 4096 ^
-device qemu-xhci -device usb-kbd -device usb-tablet ^
-drive file=OS.qcow2,if=virtio ^
-nic user,model=virtio ^
-drive file=Image.iso,media=cdrom,if=none,id=cdrom -device usb-storage,drive=cdrom ^
-drive file=virtio-win-0.1.225.iso,media=cdrom,if=none,id=cdrom1 -device usb-storage,drive=cdrom1 ^
-bios QEMU_EFI.fd -device ramfb ^
-drive file=vars-template-pflash.raw,if=pflash,index=1,format=raw
保存后双击运行,如果正常会是这样,可以进入到TinaoCore Logo的引导页。
若有如下报错为正常,无需理会第一个是未指定vars-template-pflash.raw的格式(已在文中更新代码,故不会出现该报错),第二个不知道有什么用。(反正不影响.jpg
但或者是这种找不到文件的报错,则需要自己在文件名前加上路径。
然后就这样漫长的等待,就会进入到Windows安装程序页。
按下Ctrl+ Alt+G即可将鼠标脱离虚拟机
在选择磁盘的时候,点击“加载驱动程序(L)”。
选择“浏览(B)”。
选择virtio-win光驱。
找到名为“viostor”的文件夹,选择里面“w11”文件夹下的“ARM64”文件夹。(如果安装的是 Windows10则选择w10)
选择驱动程序,然后点击“下一页(N)”,这样就可以正常安装系统了。
最后进入无尽的等待…
x86转译AArch64性能会有所下降(不止一点点,再加上QEMU是软件模拟),所以安装时间会比普通的虚拟机要长不知道多少倍(
记得开启“鼠标经过时捕获”(“Grab On Hover”)或“捕获输入”(“Grab Input”)。
从进入安装程序到准备就绪,花了近一个半小时(没什么意外的话,可能这个要转114514h(悲(而且鉴于无法联网,且硬盘驱动都要自己加载,所以这个过程跳过也没啥问题()
这里不得不说一下CPU默认才1.0GHz属实吝啬,不过不难看出它真的在动了(
有需要的话可以自己搜一下“QEMU配置CPU”
当我把QEMU升级之后之后就被识别出是虚拟机力(无慈悲
按下Shift+F10打开CMD窗口,并输入以下命令
OOBE\MSOOBE
然后就会跳过那漫长的准备就绪阶段。
再等待亿会,就可以进入OOBE了。
由于暂时没有网卡驱动,且Windows 11要求联网才能继续,所以需要跳过联网激活验证。(Windows 10可跳过该步骤)
按下Shift+F10打开CMD窗口,并输入以下命令
OOBE\BypassNRO
(如果这期间OOBE仍要求联网,可以打开CMD窗口,输入explorer并打开,然后再按网卡驱动的方式安装网卡驱动。
等待一会,系统会自动重启,然后就可以继续正常安装了。
可能你会遇到“为什么我的电脑重启了?”这个提示,无需理会,点击“下一步(N)”即可。
接着就可以按照正常方式继续安装了。
一切都开始好起来力)
以管理员身份启动PowerShell然后在命令框中输入以下命令并重启。
bcdedit /set testsigning on
打开virtio-win光驱,然后定位到\NetKVM\w11\ARM64(如果是Windows 10 就选择w10文件夹)右键类型为“安装信息”的netkvm.inf文件,选择“安装”。
在弹出的UAC窗口中选择“是”,等待一会,提示安装完成,再等一会就有网络了。
这是最后在里面运行Dism++ ARM64的效果。(启动速度和运行效率会比x86转译ARM64快许多)
1. 如果你后面不需要光驱了可以把
-drive file=<"系统镜像路径\文件名.iso">,media=cdrom,if=none,id=cdrom -device usb-storage,drive=cdrom ^
-drive file=<"virtio-win 所在路径\virtio-win 的名称.iso">,media=cdrom,if=none,id=cdrom1 -device usb-storage,drive=cdrom1 ^
这两行代码删除。
2. 因为没有显卡驱动以及其它的驱动,在QEMU模拟运行Windows on ARM性能会大打折扣,整个过程会非常漫长,建议将文件存放在SSD内。
3. 文章内仅模拟了所需的硬件及网卡,其它的硬件需要自行查询。
镜像内其它驱动的大致意思如下:
4. 如果运行真的很慢,可以看看BetaWiki给出的解决方案。(不一定100%有效)
以管理员身份打开CMD,粘贴以下命令
sc stop "Spooler"
sc config "Spooler" start= disabled
sc stop "WSearch"
sc config "WSearch" start= disabled
REM Disable Automatic Defragmentation
schtasks /Delete /TN "\Microsoft\Windows\Defrag\ScheduledDefrag" /F
REM Disable Pagefile
wmic computersystem set AutomaticManagedPagefile=FALSE
wmic pagefileset delete
REM Disable Hibernation
powercfg -h off
关于如何获取Windows on ARM的系统镜像,可以阅读:使用UUP构建Windows镜像。
3.1.2022 更新
建议在构建镜像的时候用uup.rg-adguard,那个可以移除安装限制,可以有效避免TPM问题(因为还不会怎么模拟TPM)
或者自己手动修改镜像
首先下载最新版QEMU。
QEMU的安装位置需要记牢,在安装程序会出现,后面需要用到。
下载文件名开头为edk2.git-aarch64的文件,并用7-Zip等解压缩工具多次解压,直至提取出QEMU_EFI.fd和vars-template-pflash.raw这两个文件。
按下 Windows徽标键+R,输入SystemPropertiesAdvanced并回车
点击“环境变量”。
在“系统变量(S)”里找到名为“Path”的项并双击,点击旁边的“新建(N)”,最后在矩形框中输入QEMU的安装目录。
然后全部点击“确定”即可。
以管理员身份运行cmd,输入以下命令。
qemu-img.exe create -f 硬盘格式 <自定义存放路径\文件名.硬盘格式> <容量大小><单位>
比如我的存放位置为E:\QEMU\ARM,文件名为OS,硬盘格式为qcow2(可选的有还raw、host_device、qcow、cow、vdi、vmdk、vpc、cloop、img),容量大小为60GB(单位有 K、M、G、T、P、E)
那么我的命令如下(需要区分大小写,而且路径和文件名不要有空格,用下划线_代替)
qemu-img.exe create -f qcow2 E:\QEMU\ARM\OS.qcow2 60G
没有别的提示就代表成功了
最后,将QEMU_EFI.fd、vars-template-pflash.raw这两个文件一并复制到存放位置。
在存放的目录(我的是E:\QEMU\ARM)下新建文本文档,命名为start.cmd,并编辑内容。
<>里的内容(包括引号)是需要自行修改的内容,你可以在最顶端插入chcp 65001,这样cmd内提示的中文报错就不会乱码。
qemu-system-aarch64.exe -M virt,virtualization=true -cpu cortex-<CPU 型号> -smp <CPU 核心数> -m <运行内存大小> ^
-device qemu-xhci -device usb-kbd -device usb-tablet ^
-drive file=<"硬盘文件路径\文件名.qcow2">,if=virtio ^
-nic user,model=virtio ^
-drive file=<"系统镜像路径\文件名.iso">,media=cdrom,if=none,id=cdrom -device usb-storage,drive=cdrom ^
-drive file=<"virtio-win 所在路径\virtio-win 的名称.iso">,media=cdrom,if=none,id=cdrom1 -device usb-storage,drive=cdrom1 ^
-bios QEMU_EFI.fd -device ramfb ^
-drive file=vars-template-pflash.raw,if=pflash,index=1,format=raw
比如我的CPU型号为a76(可选的还有a72,a57和a53,亦或者是其它)
CPU核心数量为4,运行内存大小为4096MiB,硬盘文件、系统镜像和virtio-win镜像命名分别为Image.iso、OS.qcow2和virtio-win-0.1.225.iso(若start.cmd与前面几个文件在同一目录下就不需要指定目录,直接填写名称即可)
那么我的命令如下(需要区分大小写,而且路径和文件名不要有空格,用下划线_代替,或者在收尾添加英文引号: ")
qemu-system-aarch64.exe -M virt,virtualization=true -cpu cortex-a76 -smp 4 -m 4096 ^
-device qemu-xhci -device usb-kbd -device usb-tablet ^
-drive file=OS.qcow2,if=virtio ^
-nic user,model=virtio ^
-drive file=Image.iso,media=cdrom,if=none,id=cdrom -device usb-storage,drive=cdrom ^
-drive file=virtio-win-0.1.225.iso,media=cdrom,if=none,id=cdrom1 -device usb-storage,drive=cdrom1 ^
-bios QEMU_EFI.fd -device ramfb ^
-drive file=vars-template-pflash.raw,if=pflash,index=1,format=raw
保存后双击运行,如果正常会是这样,可以进入到TinaoCore Logo的引导页。
若有如下报错为正常,无需理会第一个是未指定vars-template-pflash.raw的格式(已在文中更新代码,故不会出现该报错),第二个不知道有什么用。(反正不影响.jpg
但或者是这种找不到文件的报错,则需要自己在文件名前加上路径。
然后就这样漫长的等待,就会进入到Windows安装程序页。
按下Ctrl+ Alt+G即可将鼠标脱离虚拟机
在选择磁盘的时候,点击“加载驱动程序(L)”。
选择“浏览(B)”。
选择virtio-win光驱。
找到名为“viostor”的文件夹,选择里面“w11”文件夹下的“ARM64”文件夹。(如果安装的是 Windows10则选择w10)
选择驱动程序,然后点击“下一页(N)”,这样就可以正常安装系统了。
最后进入无尽的等待…
x86转译AArch64性能会有所下降(不止一点点,再加上QEMU是软件模拟),所以安装时间会比普通的虚拟机要长不知道多少倍(
记得开启“鼠标经过时捕获”(“Grab On Hover”)或“捕获输入”(“Grab Input”)。
从进入安装程序到准备就绪,花了近一个半小时(没什么意外的话,可能这个要转114514h(悲(而且鉴于无法联网,且硬盘驱动都要自己加载,所以这个过程跳过也没啥问题()
这里不得不说一下CPU默认才1.0GHz属实吝啬,不过不难看出它真的在动了(
有需要的话可以自己搜一下“QEMU配置CPU”
当我把QEMU升级之后之后就被识别出是虚拟机力(无慈悲
按下Shift+F10打开CMD窗口,并输入以下命令
OOBE\MSOOBE
然后就会跳过那漫长的准备就绪阶段。
再等待亿会,就可以进入OOBE了。
由于暂时没有网卡驱动,且Windows 11要求联网才能继续,所以需要跳过联网激活验证。(Windows 10可跳过该步骤)
按下Shift+F10打开CMD窗口,并输入以下命令
OOBE\BypassNRO
(如果这期间OOBE仍要求联网,可以打开CMD窗口,输入explorer并打开,然后再按网卡驱动的方式安装网卡驱动。
等待一会,系统会自动重启,然后就可以继续正常安装了。
可能你会遇到“为什么我的电脑重启了?”这个提示,无需理会,点击“下一步(N)”即可。
接着就可以按照正常方式继续安装了。
一切都开始好起来力)
以管理员身份启动PowerShell然后在命令框中输入以下命令并重启。
bcdedit /set testsigning on
打开virtio-win光驱,然后定位到\NetKVM\w11\ARM64(如果是Windows 10 就选择w10文件夹)右键类型为“安装信息”的netkvm.inf文件,选择“安装”。
在弹出的UAC窗口中选择“是”,等待一会,提示安装完成,再等一会就有网络了。
这是最后在里面运行Dism++ ARM64的效果。(启动速度和运行效率会比x86转译ARM64快许多)
1. 如果你后面不需要光驱了可以把
-drive file=<"系统镜像路径\文件名.iso">,media=cdrom,if=none,id=cdrom -device usb-storage,drive=cdrom ^
-drive file=<"virtio-win 所在路径\virtio-win 的名称.iso">,media=cdrom,if=none,id=cdrom1 -device usb-storage,drive=cdrom1 ^
这两行代码删除。
2. 因为没有显卡驱动以及其它的驱动,在QEMU模拟运行Windows on ARM性能会大打折扣,整个过程会非常漫长,建议将文件存放在SSD内。
3. 文章内仅模拟了所需的硬件及网卡,其它的硬件需要自行查询。
镜像内其它驱动的大致意思如下:
4. 如果运行真的很慢,可以看看BetaWiki给出的解决方案。(不一定100%有效)
以管理员身份打开CMD,粘贴以下命令
sc stop "Spooler"
sc config "Spooler" start= disabled
sc stop "WSearch"
sc config "WSearch" start= disabled
REM Disable Automatic Defragmentation
schtasks /Delete /TN "\Microsoft\Windows\Defrag\ScheduledDefrag" /F
REM Disable Pagefile
wmic computersystem set AutomaticManagedPagefile=FALSE
wmic pagefileset delete
REM Disable Hibernation
powercfg -h off