この質問が 7 年前に出されたことは承知していますが、最新の QEMU 4.2.0 で ARM 上の Windows をエミュレートできるようになりました。
手順:
- QEMU にパッチを適用して、EL3 TrustZone が利用可能であることを報告します: https://github.com/TeoIzAwezome/rtemu/commit/0f8b8ec18725cd0f66a39b5520fb6a435a757f95 - Windows を使用していて、ソースから QEMU をビルドしたくない場合は、パッチを適用できます
qemu-system-arm.exe
: この 16 進シーケンスをNOP 4531C931D24C8D05BE515C004889F1E87AD82E00
=> 9090909090909090909090909090909090909090
- この部分を置き換えます:
- QEMU 32 ビット ARM プラットフォーム用の Linaro ファームウェアをダウンロードします。具体的には、ARM で Windows を問題なく起動する最後のバージョンである 15.12 バージョンをダウンロードします。 /QEMU_EFI.fd
- Windows RT 8.1 の ESD イメージをダウンロードします。これらは Microsoft から公開されています。https://tech.myonlylonely.com/wimboot-for-surface-2-en/でダウンロード リンクを見つける
か、次の文字列で Google を使用します。
9600.17053.winblue_refresh.141120-0031_woafre_client_CoreARM_O15_en-us-IR5_CCSA_WOAFRER_EN-US_ESD_2F1E1C773E39C4672F52B1F3A0AE7844FD837B23.esd
- ESD を ISO に変換するか、次のように抽出します
esd-decrypter-wimlib-8.7z
: https://www.tenforums.com/software-apps/27180-windows-10-recovery-tools-bootable-rescue-disk-2.html
- 32 ビット ARM プラットフォーム用にコンパイルされた QEMU 用の VirtIO ドライバーが必要です。コンパイル済みの
viostor.sys
ドライバーはこちらから入手できますhttps://www.betaarchive.com/forum/viewtopic.php?f=62&t=40522 - Visual Studio で自分でドライバーを作成した場合を使用してカタログ ファイルを作成しInf2Cat /driver:C:\Drivers\ /os:8_ARM,6_3_ARM
、テスト署名してください (すべて.cat
および.sys
ファイル)。ドライバーの準備ができたら、+ +boot.wim
をinstall.wim
使用してそれらをスリップストリームできますdism /Mount-Wim
/Add-Driver
/Unmount-Wim
- ISO から起動してインストールしたくない場合は、VHD/VHDX ディスク イメージを作成し、UEFI システムに Windows をインストールする場合と同じ方法でフォーマット/パーティション分割することができます — GPT パーティション分割: EFI パーティション - FAT32、MSR パーティション、プライマリ パーティション - NTFS。とともに使用
dism /Apply-Image
しinstall.wim
て、作成したディスクに Windows ファイルをbcdboot
インストールし、EFI ファイルをインストールします。
- テスト署名されたドライバーを使用しているため、EFI パーティションの BCD ファイルを微調整する必要があります。
set BCD=E:\EFI\Microsoft\Boot\BCD
bcdedit /store %BCD% /set {globalsettings} testsigning on
bcdedit /store %BCD% /set {globalsettings} nointegritychecks on
- すべてが完了したら、次のパラメーターを使用して QEMU を開始します。
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
ノート:
PCI MMIO 領域には既知の問題があり、それが原因で USB 入力が機能しません。-M virt
ただし、このオプションを Windows 8.1 RT に置き換えると-M virt,highmem=false
、コードで BSOD がスローされることを回避できますSYSTEM_THREAD_EXCEPTION_NOT_HANDLED
。
ARM 用の Windows 10 はこの BSOD コードをスローせず、QEMU でかなりうまく動作することが知られています-M virt,highmem=false
。Google を使用して取得できます: 10.0.15035.0.rs2_release.170209-1535_armfre_client-enterprise_volume_en-us
:
また、32 ビット ARM の完全なエミュレーションは Intel Core i7-8700 @ 3.2 GHz でも非常に遅いため、ハードウェア アクセラレーション KVM ハイパーバイザーを備えた Raspberry Pi 4 などの最新の ARM ボードを使用することをお勧めします。
32 ビット ARM 用の Windows は既にレガシーと見なされており、ARM64 用の Windows とも呼ばれる AArch64 に切り替えることをお勧めします。 /