ARM 版 Windows 10 を Apple Silicon な Mac で動かす簡単な方法です。
メモ: 2020年11月30日現時点での方法で、今後おおきく改善されていくと思います(だといいな。)
- 
Xcode を App Store で、あるいは Command Line Tools を Apple Silicon な Mac にインストール xcode-select --install
- 
MacPorts で QEMU の依存ライブラリをインストール https://www.macports.org/install.php sudo port install ninja pkgconfig texinfo libtool glib2 libpixmansudo とか使いたくない場合は、 /opt/localを$USER:staffで作って、MacPorts をソースコードからインストールすれば可能です。
- 
QEMU のソースコードをとってくる git clone https://git.qemu.org/git/qemu.git
- 
ローカルブランチを作って、@_AlexGraf氏がつくった Hypervisor.framework のパッチをあてる cd qemu git checkout 944fdc5 -b wip/hvf # これは現時点での `origin/master` のコミット。 curl https://patchwork.kernel.org/series/392975/mbox/|git am
- 
QEMU をビルドする mkdir build cd build ../configure --target-list=aarch64-softmmu --enable-cocoa make -j- x86_64 な Homebrew などを使っている場合は問題がおこるので、PATHなどを書き換えるなどして無効にしておくこと。
- Intel な Mac と比べて、めっちゃ速い。
 
- x86_64 な Homebrew などを使っている場合は問題がおこるので、
- 
Windows 10 on ARM Insider Preview をダウンロードする https://www.microsoft.com/en-us/software-download/windowsinsiderpreviewARM64 
- 
QEMU 用の xHCI 無効化済み EDK II OVMF EFI イメージをダウンロードする。 ソースコードからビルドする場合は以下を参照のこと。 
- 
Windows 10 を起動する ./qemu-system-aarch64 \ -monitor stdio \ -M virt,highmem=off \ -accel hvf \ -cpu cortex-a72 \ -smp 4 \ -m 4096 \ -bios ~/Downloads/QEMU_EFI.fd \ -device ramfb \ -device qemu-xhci \ -device usb-kbd \ -device usb-mouse \ -nic user,model=virtio \ -drive file=~/Downloads/Windows10_InsiderPreview_Client_ARM64_en-us_20231.VHDX,if=none,id=boot,cache=writethrough \ -device nvme,drive=boot,serial=bootイメージへのパスなどは適宜修正してください。 
VirtIO NIC は標準では有効にならないので、デバイスドライバを入れる必要がある。
- 
VirtIO デバイスドライバの ISO を Fedora Project からダウンロード。 https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso 
- 
デバイスドライバの ISO をマウント qemu-system-aarch64のオプションに以下を追加する。-drive file=~/Downloads/virtio-win-0.1.190.iso,media=cdrom,if=none,id=drivers \ -device usb-storage,drive=driversイメージへのパスなどは適宜修正してください。 
- 
デバイスドライバの署名検証を無効にする Windows を起動して Windows スタートボタン を右クリック、Command Prompt (Admin) を選択。 BCDEdit を使ってテスト署名されたデバイスドライバを有効にする。 Bcdedit.exe -set TESTSIGNING ONこのあと Windows を再起動すること。 詳細はこちらを参照のこと。 
- 
デバイスドライバのインストール Windows が再度起動したら Windows スタートボタン を右クリック、Device Manager を選択。 Device Manager のウィンドウで、View メニューの Devices by Connection を選択。 デバイスのツリーから, ACPU ARM64-based PC,Microsoft ACPI-Compliant System,PCI Express Root Complexと選択してその中にあるUnknown deviceを探す。 (Unknown deviceはデバイスのツリーに沢山あるけれど、PCI Express Root Complexの下にあるのが、VirtIO NIC。)該当の Unknown deviceを右クリックして、Update Drivers を選択、Browse my computer for drivers を選んで、D:\NetKVM\w10\ARM64を指定。Next をクリックして Red Hat VertIO Ethernet Adapterをインストール。
OVMF EFI イメージをソースコードから作る場合、とりあえず簡単にビルドするには、まず VMWare Fusion とか、VirtualBox とかを Intel Mac (そう、Intel Mac が必要)にインストールして、Ubuntu などの Linux が必要になります。
- 
EDK II のソースコードを取ってくる。 git clone https://github.com/tianocore/edk2.git cd edk2 git checkout edk2-stable202008 # stable ってタグされてるやつがいい git submodule update --init --recursive
- 
Hypervisor.framework パッチの制限で xHCI を無効にする必要がある。 /ArmVirtPkg/ArmVirtQemu.dscと/ArmVirtPkg/ArmVirtQemuFvMain.fdf.incにあるMdeModulePkg/Bus/Pci/XhciDxe/XhciDxe.infの行をコメントアウト。
- 
で、ビルド。 apt install install iasl python3 python3-distutils uuid-dev gcc-aarch64-linux-gnu source edksetup.sh make -C BaseTools env GCC5_AARCH64_PREFIX=aarch64-linux-gnu- build -a AARCH64 -t GCC5 -p ArmVirtPkg/ArmVirtQemu.dscBuild/ArmVirtQemu-AARCH64/DEBUG_GCC5/FVにQEMU_EFI.fdとかができるはず。
- CPU 使用率が指定したコア数 × 100% で張り付くのは Hypervisor.framework パッチの仕様です。Patch 2 でなおった
- 同様の手順で Ubuntu Server for ARM も動きます。こっちはより安定している。 https://ubuntu.com/download/server/arm
- 8GB の Apple Silicon Mac だとメモリが厳しいかもしれない。4096 から減らしても問題ない。