如何模拟Windows RT

时间:2012-11-19 13:30:34

标签: windows-8 arm emulation windows-rt

为了开发目的,如何在模拟器中运行Windows RT(Windows 8的受限ARM版本)?这个问题包含两部分:

  • 获取映像:是否存在安装映像(对于供应商,在MSDN中,...)?我可以拍摄Surface RT磁盘的快照(如何?),或者我可以从恢复数据中以某种方式提取它(我不知道恢复系统是如何工作的,但是有一个功能可以在Surface上完全擦除并重新安装软件)。
  • 运行图像:我可以模仿它吗?我听说过QEMU,但它的声誉很慢。此外,程序必须模拟必要的硬件(Tegra-3)。

2 个答案:

答案 0 :(得分:3)

无法在ARM上真正模拟Windows RT环境。你有两个选择......

1)去挑选Surface平板电脑。

2)请联系您当地的Microsoft技术推广人员,了解他们是否拥有更硬的硬件。

此外,您当地的Microsoft Evangelist团队可能正在举办Windows 8开发者活动,他们可能会手头有测试硬件供您试用。如果您在美国,可以在http://msdnevents.com找到这些活动的列表。

答案 1 :(得分:2)

我知道这个问题是7年前问的,但是现在可以在最新的QEMU 4.2.0中模拟ARM上的Windows。

要遵循的步骤:

  1. 修补QEMU以报告可用的EL3 TrustZone:https://github.com/TeoIzAwezome/rtemu/commit/0f8b8ec18725cd0f66a39b5520fb6a435a757f95-如果您使用的是Windows,并且不想从源代码构建QEMU,则可以修补qemu-system-arm.exe:用NOP替换此十六进制序列{ {1}} => 4531C931D24C8D05BE515C004889F1E87AD82E00-它代替了这一部分:

  1. 下载用于QEMU 32位ARM平台的Linaro固件,特别是15.12版本,这是在ARM上无问题地启动Windows的最后一个版本:https://releases.linaro.org/components/kernel/uefi-linaro/15.12/release/qemu/QEMU_EFI.fd
  2. 下载Windows RT 8.1的ESD映像,可以从Microsoft公开获得这些映像。 您可以在这里https://tech.myonlylonely.com/wimboot-for-surface-2-en/找到下载链接 或使用带有以下字符串的Google:9090909090909090909090909090909090909090
  3. 将ESD转换为ISO或仅使用9600.17053.winblue_refresh.141120-0031_woafre_client_CoreARM_O15_en-us-IR5_CCSA_WOAFRER_EN-US_ESD_2F1E1C773E39C4672F52B1F3A0AE7844FD837B23.esdhttps://www.tenforums.com/software-apps/27180-windows-10-recovery-tools-bootable-rescue-disk-2.html
  4. 提取它
  5. 您将需要为32位ARM平台编译的QEMU的VirtIO驱动程序,此处https://www.betaarchive.com/forum/viewtopic.php?f=62&t=40522提供了预编译的esd-decrypter-wimlib-8.7z驱动程序-如果您在Visual Studio中自己构建了驱动程序,请确保通过以下方式创建目录文件:使用viostor.sys并对其进行测试签名(所有Inf2Cat /driver:C:\Drivers\ /os:8_ARM,6_3_ARM.cat文件);驱动程序准备就绪后,您可以使用.sys + boot.wim + install.wim
  6. 将它们分为dism /Mount-Wim/Add-Driver
  7. 如果您不想从ISO引导和安装,则可以创建VHD / VHDX磁盘映像并对其进行格式化/分区,就像在UEFI系统上进行Windows安装一样— GPT分区:EFI分区-FAT32 ,MSR分区,主分区-NTFS。将/Unmount-Wimdism /Apply-Image一起使用,以将Windows文件安装到创建的磁盘上,并使用install.wim来安装EFI文件
  8. 由于使用的是经过测试签名的驱动程序,因此需要调整EFI分区上的BCD文件:
bcdboot
  1. 完成所有操作后,请使用以下参数启动QEMU:
set BCD=E:\EFI\Microsoft\Boot\BCD
bcdedit /store %BCD% /set {globalsettings} testsigning on
bcdedit /store %BCD% /set {globalsettings} nointegritychecks on

注意:

  • PCI MMIO区域存在已知问题,因此USB输入将无法工作。您可以通过将set HDD=windows-on-arm.vhd set ISO=en_windows_8.1_ir4_ARM_dvd.iso qemu-system-arm ^ -M virt ^ -cpu cortex-a15 ^ -smp 2 ^ --accel tcg,thread=multi ^ -m 2G ^ -bios QEMU_EFI_1512.fd ^ -device VGA ^ -device ich9-usb-ehci1 ^ -device usb-kbd ^ -device usb-tablet ^ -drive if=virtio,file=%HDD% ^ -device virtio-scsi-pci,id=scsi0 ^ -device scsi-cd,drive=install,bus=scsi0.0 ^ -drive if=none,format=raw,id=install,file=%ISO%,readonly=on ^ -rtc base="2013-07-15",clock=vm 替换为-M virt来解决此问题,但是使用此选项,Windows 8.1 RT会使用代码-M virt,highmem=false抛出BSOD。

  • 众所周知,ARM的Windows 10不会抛出此BSOD代码,并且可以在SYSTEM_THREAD_EXCEPTION_NOT_HANDLED的QEMU中很好地工作。您可以使用Google来获取它:-M virt,highmem=false

  • 还要注意,即使在3.2 GHz的Intel Core i7-8700上,对32位ARM的完全仿真也非常慢,因此最好使用具有硬件加速KVM管理程序的现代ARM板(如Raspberry Pi 4)。

  • 用于32位ARM的Windows已被认为是旧版,最好将其转换为AArch64,也称为Windows for ARM64,请参见https://withinrafael.com/2018/02/12/boot-arm64-builds-of-windows-10-in-qemu/