10

開発目的でエミュレーターで Windows RT (Windows 8 の制限付き ARM バージョン) を実行するにはどうすればよいですか? この質問には 2 つの部分があります。

  • イメージの取得: インストール イメージは存在しますか (ベンダー向け、MSDN など)? Surface RT ディスクのスナップショットをとることはできますか (どのように?)、またはリカバリ データから何らかの形で抽出できますか (リカバリ システムの仕組みはわかりませんが、Surface 上のソフトウェアを完全に消去して再インストールする機能があります) )。
  • イメージの実行: 何をエミュレートできますか? QEMU のことは聞いたことがありますが、遅いという評判があります。また、プログラムは必要なハードウェア (Tegra-3) をエミュレートする必要があります。
4

2 に答える 2

5

この質問が 7 年前に出されたことは承知していますが、最新の QEMU 4.2.0 で ARM 上の Windows をエミュレートできるようになりました。

手順:

  1. QEMU にパッチを適用して、EL3 TrustZone が利用可能であることを報告します: https://github.com/TeoIzAwezome/rtemu/commit/0f8b8ec18725cd0f66a39b5520fb6a435a757f95 - Windows を使用していて、ソースから QEMU をビルドしたくない場合は、パッチを適用できますqemu-system-arm.exe: この 16 進シーケンスをNOP 4531C931D24C8D05BE515C004889F1E87AD82E00=> 9090909090909090909090909090909090909090- この部分を置き換えます:

  1. QEMU 32 ビット ARM プラットフォーム用の Linaro ファームウェアをダウンロードします。具体的には、ARM で Windows を問題なく起動する最後のバージョンである 15.12 バージョンをダウンロードします。 /QEMU_EFI.fd
  2. 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
  3. ESD を ISO に変換するか、次のように抽出しますesd-decrypter-wimlib-8.7z: https://www.tenforums.com/software-apps/27180-windows-10-recovery-tools-bootable-rescue-disk-2.html
  4. 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.wiminstall.wim使用してそれらをスリップストリームできますdism /Mount-Wim/Add-Driver/Unmount-Wim
  5. ISO から起動してインストールしたくない場合は、VHD/VHDX ディスク イメージを作成し、UEFI システムに Windows をインストールする場合と同じ方法でフォーマット/パーティション分割することができます — GPT パーティション分割: EFI パーティション - FAT32、MSR パーティション、プライマリ パーティション - NTFS。とともに使用dism /Apply-Imageinstall.wimて、作成したディスクに Windows ファイルをbcdbootインストールし、EFI ファイルをインストールします。
  6. テスト署名されたドライバーを使用しているため、EFI パーティションの BCD ファイルを微調整する必要があります。
set BCD=E:\EFI\Microsoft\Boot\BCD
bcdedit /store %BCD% /set {globalsettings} testsigning on
bcdedit /store %BCD% /set {globalsettings} nointegritychecks on
  1. すべてが完了したら、次のパラメーターを使用して 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 に切り替えることをお勧めします。 /

于 2020-05-13T15:03:08.127 に答える
3

ARM で Windows RT 環境を完全にエミュレートする方法はありません。選択肢は 2 つあります...

1) Surface タブレットを取りに行きます。

2) 最寄りのマイクロソフト テクニカル エバンジェリストに連絡して、代替ハードウェアが利用可能かどうかを確認してください。

また、ローカルの Microsoft エバンジェリスト チームが Windows 8 開発者イベントを開催しており、テスト用のハードウェアを手元に置いて試用できる可能性があります。米国にお住まいの場合は、これらのイベントのリストをhttp://msdnevents.comで見つけることができます。

于 2012-12-04T14:47:10.160 に答える