- Open Project: Open the
BootTo.NET.slnsolution in Visual Studio. - Launch: Select QEMU from the launch profile dropdown, or simply press F5.
When will hobby OS developers realize that we don't need to implement everything from scratch? With a clean environment providing basic network, graphics, filesystem, and USB support, there's no need to build it yourself—just load a DXE driver and go ahead with your 'OS'.
Publishing updates the boot files in Drive, then starts the repository-local QEMU x64 emulator with that directory exposed directly as a writable virtual FAT disk. QEMU, its Windows runtime dependencies, and the EDK2 UEFI firmware are included in qemu; no system QEMU installation and no administrator privileges are required.
Use dotnet publish --tl:off -c Release ConsoleApp1 to publish and run with live build output. Pass -p:RunQemu=false to publish without starting QEMU.
RunQemu detects whether the bundled QEMU supports WHPX and whether the Windows hypervisor is active. It uses WHPX only when both checks pass; otherwise it falls back to TCG.
Performance: Enable Windows Hypervisor Platform (
Windows 虚拟机监控程序平台) in Turn Windows features on or off, then restart Windows. This allows QEMU to use WHPX hardware acceleration; without it, QEMU falls back to TCG and runs significantly slower.
Key Mapping:
Q-> A |E-> B |Z-> Select |C-> Start |WSAD-> Directional Pad
Format a USB drive as FAT32 and copy the contents of Drive to its root. To use UEFI network support on real hardware, enable it in the firmware settings.
After publishing, CopyEFI updates Drive/EFI/BOOT/BOOTX64.efi, and RunQemu exposes Drive directly as a writable virtual FAT disk and boots it with the bundled EDK2 firmware. Pass -p:RunQemu=false to publish without starting the emulator.
The SDL window uses QEMU's default Left Ctrl+Left Alt+G shortcut to release mouse and keyboard input. On Windows, select the English input method for the QEMU window because an active IME can intercept this shortcut.



