文档:在 QEMU 中安装 Windows RT 中期版本

来自 WinStory Wiki
跳转到导航 跳转到搜索

文件准备

以下是我们需要准备的文件:

注意事项

由于hal.dll导致的启动失败
  • 由于在Windows RT中期以及部分后期版本中无法正确加载hal.dll,可能需要多次按Enter键进行重试。
  • QEMU的usb输入仿真在某些情况下可能会出现失效的情况.。解决这个情况需要切换到QEMU compatibility monitor (Ctrl+Alt+2) 并输入运行以下指令:
device_del kbd
device_add usb-kbd,id=kbd
  • 注意:以下是从工程机泄露的系统需要手动对所有OEM驱动进行删除,否则将会因为驱动不兼容导致系统启动失败:
6.2.8186.0.fbl_core1_soc.120118-1700
6.2.8288.0.fbl_core1_soc.120226-1700
6.2.8302.0.fbl_core1_soc.120319-1700
6.2.8318.0.fbl_core1_soc.120409-2355
6.2.8375.0.winmain_win8rc.120504-1900
6.2.8419.0.winmain.120521-1835
6.2.8437.0.winmain.120618-1325
6.2.8437.1.fbl_dev_dp8.120621-2300
6.2.8520.0.fbl_eeap.120722-1632 - zh-cn以及en-us版本
6.3.9354.0.winmain.130301-1710
6.3.9468.0.winblue_rtm.130725-1203
6.3.9471.0.fbl_partner_out30.130726-2004
6.3.9477.0.fbl_partner_out31.130803-0736
6.3.9477.0.fbl_partner_out21.130803-1037
6.3.9478.0.winblue_rtm.130804-1505
6.3.9600.16596.winblues14_gdr_lean.140112-2038

由于Build 8038以及Build 8061 Build 8129在SD设备启动时会出现sd设备锁死导致系统无法启动,需要对sdbus.sys进行修改(或者直接使用8061的初次泄露文件中的替换)。

系统部署

  • 使用diskpart对vhd进行创建并命名为ARM8。接下来将会对EFIESP分区以及主系统分区分别分配盘符为F与P。

说明:maximum=后的数字必须分配磁盘大小为16GB的整数倍(指令中单位为MB)

create vdisk file="C:\ARM8\HDD.vhd" maximum=65536 type=expandable
select vdisk file="C:\ARM8\HDD.vhd"
attach vdisk
convert gpt
create partition efi size=100
format quick fs=fat32
assign letter=F
create partition primary
format quick fs=ntfs
assign letter=P
exit
  • 手动安装系统并为系统修复引导到F::
DISM /Apply-Image /ImageFile:"X:\path\to\install.wim" /ApplyDir:P:\ /Index:1
bcdboot "P:\Windows" /s F: /f UEFI

注意:如果为Unstaged系统需要通过原有安装程序进行安装或者手动使用Dism进行构建

  • 弹出虚拟磁盘并创建bat脚本到qemu安装目录内,将以下内容复制到bat内,并对 YYYY-MM-DD 进行修改以避免Windows的时间炸弹被触发。

假定我们的qemu主程序位于D:\QEMU v9.1.50.0\qemu-system-arm.exe,edk2存放于D:\EFISHELL\QEMU_EFI_ArmVirtQemu_ARM_RELEASE.fd ,虚拟磁盘位于C:\ARM8\HDD.vhd

由于中期阶段部分系统无法使用usb设备进行启动,这里使用sd设备配置以确保可以正常启动。

SD卡启动配置:

@echo off
cd /d %~dp0
"D:\QEMU v9.1.50.0\qemu-system-arm.exe" ^
-M virt,force_el3=true,force_psci=on,pci=false,highmem=false ^
-cpu cortex-a15 ^
-smp cores=1,threads=1 ^
--accel tcg,thread=multi ^
-m 2048 ^
-bios "D:\EFISHELL\QEMU_EFI_ArmVirtQemu_ARM_RELEASE.fd" ^
-device VGA ^
-device usb-kbd,id=kbd ^
-device usb-tablet,id=mice ^
-drive id=sys,if=none,file="C:\ARM8\HDD.vhd" ^
-device sd-card,drive=sys ^
-device qemu-xhci ^
-rtc base=YYYY-MM-DD,clock=vm ^
-serial tcp::9090,server,nowait

接下来可运行bat以继续安装Windows

sysprep以及OOBE跳过(可选)

出于某些系统会出现无法继续第二阶段安装,我们可以直接通过修改注册表进行部署: 挂载配置单元SYSTEM与SAM到本地计算机

假设分别挂载为 计算机\HKEY_LOCAL_MACHINE\RT-SYS 计算机\HKEY_LOCAL_MACHINE\RT-SAM

分别创建注册表项以进行下一步操作:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\RT-SYS\Setup]
"SystemSetupInProgress"=dword:00000000
"SetupPhase"=dword:00000000
"CmdLine"=""
"SetupType"=dword:00000000
"OOBEInProgress"=dword:00000000

对于administrator用户我们可以在对应路径及注册表项将11改为10,或者导入以下注册表项:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\RT-SAM\SAM\Domains\Account\Users\000001F4]
"F"=hex:02,00,01,00,00,00,00,00,38,7f,6a,e2,35,6a,cd,01,00,00,00,00,00,00,00,\
00,58,3c,23,69,37,6a,cd,01,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
f4,01,00,00,01,02,00,00,10,02,00,00,00,00,00,00,00,00,01,00,01,00,00,00,00,\
  00,00,00,00,00,00,00

分别导入后卸载配置单元,随后再卸载vhd,并启动bat

由于QEMU模拟的性能问题系统运行效率较低,需要耐心进行等待

此教程适用于Windows RT Build 8038以及以上的版本