- Виртуализация операционных систем с помощью QEMU. Основы работы с эмулятором
- Как установить QEMU в Windows
- Виртуализация операционных систем в QEMU
- Microsoft добавила поддержку эмуляции x64 в Windows 10 на ARM
- billti / arm64-on-Win10.md
- How to Install Windows 10 for ARM in QEMU
- About Sergey Tkachenko
- 36 thoughts on “ How to Install Windows 10 for ARM in QEMU ”
Виртуализация операционных систем с помощью QEMU. Основы работы с эмулятором
Виртуализация — наиболее доступный способ запустить на одном ПК вторую операционную систему, не устанавливая ее непосредственно на жесткий диск. Вместо этого вторая ОС устанавливается на диск виртуальный, представленный специальным файлом-контейнером, созданным в гипервизоре — программе, позволяющей эмулировать работу гостевой системы в системе хостовой. Наибольшей популярностью среди домашних юзеров пользуются гипервизоры VirtualBox и VMware с мощным функционалом и наглядным GUI .
Но есть и другие, в чём-то даже более гибкие и продуктивные решения хотя и куда менее удобные в использовании. Например, QEMU — бесплатная программа с открытым исходным кодом, предназначенная для эмуляции программного обеспечения и операционных систем. Инструмент использует аппаратную виртуализацию, поддерживая два режима работы:
• Полная эмуляция — данный режим применяется для запуска операционных систем, в его рамках QEMU эмулирует физическое устройство со всеми его компонентами, встроенными и периферийными.
• Эмуляция пользовательского режима — дает возможность запускать программы, созданные для конкретной архитектуры на другой архитектуре, например, приложения ARM в x86 . Режим доступен только в хостовой системе Linux.
QEMU поддерживается эмуляция архитектуры x86 , ARM , MIPS , PowerPC , m68k , Alpha , SPARC , SH-4 , CRISv2 , MicroBlaze и это более солидный список, чем у того же Виртуалбокс.
Как установить QEMU в Windows
Скачать установочный файл эмулятора можно с официального сайта www.qemu.org/download/#windows,
есть редакции 32-битные и 64-битные, версию выбираем последнюю.
Устанавливается QEMU как обычная программа в папку Program Files\qemu , но можно выбрать и другое расположение.
Установку выполняем с параметрами по умолчанию, ничего менять не нужно, просто жмем в окне мастера «Next».
Виртуализация операционных систем в QEMU
В отличие от VirtualBox и подобных гипервизоров, QEMU не имеет графического интерфейса, работа с ней ведется через командную строку. Команд и параметров для создания и управления виртуальными машинами много, но для начала вам нужно знать хотя бы эти шесть.
• qemu-system — задает архитектуру виртуальной машины.
• qemu-img create — создает файл виртуального IMG -диска, на который будет устанавливаться операционная система.
• -m — выделяет виртуальной ОС указанный объем оперативной памяти.
• -hda — подключает созданный виртуальный диск.
• -boot IMG — указывает, что загрузка должна производиться с виртуального диска, вместо IMG следует указать имя IMG -файла.
• cdrom — содержит путь к установочному образу ISO , эмулирует дисковод.
Чтобы вам стало всё немного понятнее, установим и запустим с помощью QEMU какую-нибудь операционную систему. Для примера мы выбрали Windows XP, так как она легкая и занимает на диске мало места. QEMU у нас уже установлен, открываем командную строку, переходим в каталог установки и создаем виртуальный жесткий диск следующей командой:
qemu-img.exe create -f raw c.img 5000M
Файл qemu-img.exe в эмуляторе отвечает за создание IMG -образов, с — это название образа, 5000 — размер виртуального диска в мегабайтах. По умолчанию образ будет создан в папке QEMU .
Теперь сформируем следующую команду:
qemu-system-i386w.exe -boot c -m 350 -hda c.img -cdrom «E:\WinXP_SP3.iso»
Исполняемый файл в начале команды отвечает за создание виртуальной машины с архитектурой х86 , -boot с ключом -с сообщает, что грузиться она будет с диска, в значение параметра -hda подставляем созданный образ, а в качестве значения параметра –cdrom указываем путь к дистрибутиву Windows.
После выполнения команды появляется окошко QEMU с загрузочным меню, в котором мы выбираем установку на диск.
Далее проходим все этапы установки операционной системы вплоть до локальных настроек и загрузки рабочего стола.
Чтобы запустить закрытую виртуальную машину, выполните команду qemu-system-i386w.exe -hda name.img , где name — название вашего виртуального диска, чтобы удалить ставшую ненужной VM, просто удалите из каталога установки QEMU созданный IMG -образ.
Управлять QEMU можно с помощью клавиатуры и мыши, для переключения между эмулятором и хостовой машиной используйте комбинацию Ctrl + Alt + G . Запущенная с минимальными настройками ОС не будет иметь доступа к аудио- и сетевой карте, не будет также возможности обмена файлами между виртуальной и хостовой системами.
Нельзя сказать, что QEMU лучше или хуже VirtualBox либо VMware, это альтернативное средство виртуализации, имеющие как свои плюсы, так и минусы. QEMU менее удобен, требует знания документации и демонстрирует весьма небольшую производительность. Для ускорения работы в Windows требуется установка и настройка Диспетчера аппаратного ускорения HAXM, в Linux – подключение загружаемого модуля ядра KVM . С другой стороны, инструмент позволяет эмулировать работу устройств на базе разных архитектур, не поддерживаемые популярными гипервизорами.
Microsoft добавила поддержку эмуляции x64 в Windows 10 на ARM
10 декабря 2020 года Microsoft представила поддержку эмуляции x64 в Windows 10 на ARM. Новая функциональность уже доступна бета-тестерам в сборке Windows 10 Insider Preview Build 21277 (полный номер сборки 21277.1000.rs_prerelease.201207-1443).
Пользователи после установки сборки Windows 10 Insider Preview Build 21277 могут протестировать работоспособность эмуляции x64 в Windows 10 на ARM, установив в системе x64 приложения из магазина Microsoft Store или из любого другого места по своему выбору.
Microsoft предупредила, что для нормальной работы поддержки эмуляции x64 в Windows 10 на ARM и наилучшей производительности x64 приложений на устройствах Samsung Galaxy Book S, Lenovo Flex 5G, Acer Spin 7 и Microsoft Surface Pro X пользователям необходимо установить обновленную предварительную версию графического драйвера Qualcomm Adreno.
Кроме того, Microsoft советует установить предварительную версию пакета ARM64 C++, если тестерам необходимо в системе проверить одновременное выполнение С++ приложений ARM64 и x64.
Microsoft пояснила, что проверила работоспособность эмулятора на Autodesk Sketchbook, Rocket League и Chrome, которые ранее работали на ARM64 как 32-разрядные приложения. Теперь они могут работать в Windows 10 на ARM как 64-разрядные приложения с использованием новой возможности эмуляции x64.
Microsoft рассказала, что будет расширять возможности эмулятора x64 в Windows 10 на ARM. Компания напомнила, что приложения ARM64 полностью поддерживаются в Windows SDK и Visual Studio 2017. Microsoft рекомендует разработчикам перекомпилировать свои приложения для ARM64.
Microsoft проинформировала, что когда компания впервые запустила Windows 10 на ARM в конце 2017 года, в длинном списке приложений, необходимых ее клиентам, преобладали 32-разрядные приложения x86. Поэтому разработчики Microsoft сосредоточили все свои усилия на создании эмулятора x86, который мог бы беспрепятственно запускать большую экосистему приложений Windows. В настоящее время экосистема приложений Windows переместилась в сторону 64-разрядных приложений x64. Теперь клиенты компании все чаще просят, чтобы x64 приложения полноценно и быстро работали на ARM64.
В конце сентября 2020 года Microsoft объявила, что добавит эмуляцию x64-приложений для ARM-систем на Windows 10 в ноябре. Компания уточнила, что для широкого круга пользователей эта функциональность станет доступна в 2021 году.
billti / arm64-on-Win10.md
Below are the steps to get an ARM64 version of Ubuntu running in the QEMU emulator on Windows 10.
Install for Windows from https://qemu.weilnetz.de/w64/ (I used qemu-w64-setup-20181211.exe )
Put C:\Program Files\qemu on your PATH, and run the below to check it’s working (which will list out the CPUs the AArch64 emulator can emulate):
Copy the Firmware and OS images
Into your working directory.
Create the configuration data image
The Ubuntu server images require configuration data be provided as an image, such as setting auth credentials.
The tool used to convert the config text file into an image file only runs on Linux, so I’ve attached a user-data.img file (and the text file used to create it) in a zip file to this Gist. Extract the user-data.img file to the working directory.
The user-data.img file was created for password authentication as outlined in https://stackoverflow.com/a/53373376
Launch the emulator from the working directory
Run the below to boot the image, you will some some benign errors at startup. Wait until the output settles down (even after you see the login prompt, as the post-boot config may not have completed yet).
To break down these lines:
- qemu-system-aarch64 -m 2048 -cpu cortex-a72 -smp 4 -M virt -nographic — run the ARM64 virtual platform emulator with 2GB RAM and 4 Cortex-A72 cores with no GUI support.
- -bios QEMU_EFI.fd — use the firmware downloaded above.
- -drive if=none,file=ubuntu-16.04-server-cloudimg-arm64-uefi1.img,id=hd0 — use the Ubuntu image file
- -device virtio-blk-device,drive=hd0 — mount drive from above as a block device
- -drive file=user-data.img,format=raw — use the configuration data image file
- -device virtio-net-device,netdev=net0 — create a virtual network device
- -netdev user,hostfwd=tcp:127.0.0.1:2222-:22,id=net0 — set up the networking stack and forward the SSH port
Then from a good Terminal emulator (I recommend the new Windows Terminal app with one of the Powerline fonts) you can connect over SSH with the below, and the configured password ( asdfqwer ):
How to Install Windows 10 for ARM in QEMU
ARM64 chips are considered more energy efficient compared to x86 CPUs from Intel and AMD. Using the new platform, OEMs are able to create even smaller, lighter and powerful devices with the power of full Windows 10. There is a way to install and try Windows 10 for ARM SoCs in QEMU. Here is how.
QEMU is a free and open-source hosted hypervisor that performs hardware virtualization. With QEMU, it is easy to emulate a completely different set of hardware from the physical hardware you have. The software supports emulation of the AArch64/ARM64 architecture, so it can be used to install Windows 10 for ARM.
While Windows 10 runs slowly inside QEMU, it is good enough to see what exactly Windows 10 for ARM is.
Here are steps you need to take to get Windows 10 for ARM working in QEMU. Keep in mind that it won’t support network because of missing drivers.
To install Windows 10 for ARM in QEMU, do the following.
- Download and install QEMU for Windows
- Download the Windows 10 (arm64) ESD/UUP files from any trusted source. For example, you can use the following web site created by adguard.
- Now, download the UUP files to ISO converter from here . It is adapted to build ISO images for ARM.
- Download the UEFI firmware and recompiled/signed arm64 storage drivers package.
- Create a new system.vhdx file of 23GB or larger (fixed size, not expanding, initialized using GPT partitioning scheme).
- To start your virtual machine, use the following batch file:
You are done!
Note: During setup, you will need to provide VirtIO drivers (browse to the mounted disk).
The batch file provided above will configure QEMU to emulate the following device:
- virtualize a Cortex A57 CPU (with 3 cores)
- set up 4GiB of RAM
- use my recompiled TianoCore EDKII ArmVirtPkg firmware , with minor edits to re-enable VGA support and include a whimsical boot logo to discourage serious usage. (This is similar to the build provided by Googulator in that I reverted two VGA commits. No other changes were made. Latest master.)
- use some scratch space for UEFI variable storage (e.g. boot order)
- use VGA for graphics needs
- set up a NEC USB XHCI Host Controller
- . and plug four virtualized USB devices into it
- a USB keyboard
- a USB mouse
- a CDROM hosting our install media
- a removable hard drive hosting the VirtIO driver package vhdx
- set up a VirtIO Block Device hosting the main system vhdx
The result should be as follows:
All credits go to Rafael Rivera .
Winaero greatly relies on your support. You can help the site keep bringing you interesting and useful content and software by using these options:
Share this post
About Sergey Tkachenko
Sergey Tkachenko is a software developer from Russia who started Winaero back in 2011. On this blog, Sergey is writing about everything connected to Microsoft, Windows and popular software. Follow him on Telegram, Twitter, and YouTube.
36 thoughts on “ How to Install Windows 10 for ARM in QEMU ”
How to change display resolution:
Press ESC key at “Start boot option”.
Device Manager, OVMF Platform configuration, Change Preferred, Commit Changes and Exit, ESC Key, Reset.
Cannot change display resolution from Windows.
Some words are vanished.
Device Manager, OVMF Platform configuration, Change Preferred, Commit Changes and Exit, ESC Key, Reset.
Hello ! Thanks for your work !
But I have a problem for installation in the hard drive, is not detected, screenshot here : https://zupimages.net/up/18/07/7g4v.png
Can you upload your main base files please ?
Sorry, I’ve already deleted it.
Ok don’t worry, I hope to find a fix 🙂
At this point you need to install the HDD driver provided in drivers.vhdx. After this you will see the drive, which you created before (system.vhdx). You will be able to install windows there.
Thanks for your feedback, can you help me to try this please ?
Not sure how i can help you further. Just looking at your screenshot, look for a button to install additional drivers, then navigate to the drivers disk, where Windows picks up the VirtIO Block driver.
I don’t know where he is 🙁
I cannot get the HD to be detected either. Strange how the top one gets detected but not the bottom one:
-drive if=none,id=drivers,readonly=on,file=drivers.vhdx ^
-drive if=none,id=system,format=raw,file=system.vhdx
I created using Disk Management in Windows 10 > Action menu > Create VHD > VHDX > 23 GB > initialised as GPT and formatted to NTFS.
Anyone managed to get anywhere with this on Android phone running Ubuntu? I only got as far as the windows + hand icon then it went to an EFI/grub screen using the same Qemu script as above.
It’s working now… needed both these lines – I must have removed one:
-device virtio-blk,drive=system ^
-drive if=none,id=system,format=raw,file=system.vhdx
I then clicked on load driver, C drive, unhide, click on listed driver, next… and then the drive appeared as an option to install windows.
Now what I would love to do is delete the first drive and create a partition on the 2nd drive and only install windows to one partition instead of one drive with multiple partitions – but I guess this UEFI boot is required for Arm64?
https://s9.postimg.org/9k9s3byrj/w10arm.png
Would have been nice if we didn’t require the 2 flash drives and could use legacy bios, but even on the Ubuntu website they mention the need for these 2 volumes:
https://wiki.ubuntu.com/ARM64/QEMU
Unable to complete installation… I had to hit escape and boot from last device in the list following the copying over of windows files, but after that it tries to get devices ready then complains that there’s a problem doing so and restarts.
https://s9.postimg.org/qfg6ucopb/w10arm5.png
Eventually it ends up with this…
https://s9.postimg.org/6wbll95fz/w10arm4.png
BTW, there’s a bug in the latest version of Qemu stopping this from working at all, so I used the the December 2017 update. Also, on Ubuntu Qemu is out of date, so I compiled the same version but still end up at the shell prompt when trying to run Rafael’s script/flash ROMs.
Hello gilius, I am so happy if you run Windows ARM with success, because I can’t do that, my installation don’t detect the Hard Drive 🙁
Hi, when you are to the step (which is on your screenshot) click on “load drivers” then click on “browse” button and select “local drive (c:)” after that you’ll see a driver. When the driver is install you can select your drive and start windows install.
I have the same problem, but I don’t see any drivers in C:\
If you receive the “ACPI BIOS ERROR”, you must use the 2017-december QEMU version. I’ve struggled some hours until i discovered this. As another comment in this thread said, the 2018 QEMU version won’t work with this image.
Thank you so much! I really struggled getting Windows 10 run on ARM64 in QEMU but the 2017-12-17 build of QEMU for Windows did the trick!
Do you think this will be fixed in the latest QEMU on Linux ?
i’ve tryied many times to download the windows 10 arm for that UUP site but always the same problem i choose the OS and the second option keep loading the version….
I follow the step by step in detail, and when I run the VM the installation does not start.
It goes into the BIOS and everything. I do not know what to try anymore. Can someone help me please!
PS. My English is very bad because I’m Brazilian, and this is a web translation from Google.
Followed instructions as above
But stuck at >>Start PXE over IPv4
Same problem i need to find solution, if someone can help thanks
Overwite the QEMU_EFI.img and other QEMU_VARS.img with original files.
for me it seems to hang after i press any key on boot prompt as asked
Same here, still no solution
Now run an x86 app on it 🙂
hi, i need your help. I must to reinstall windows 10 on asus novago Qualcomm snapdragon processor.
have you an idea to help me? please
I have tried this with Limbo Emulator which is basically Qemu for Android. My goal was to run Windows 10 for ARM at nearly native speed on my phone since it also has an ARM64 CPU and then use the x86 emulator integrated into Windows for ARM to run some low requirement PC x86 games on my phone. Unfortunately I get stuck at the Press any key to boot from CD or DVD after cd-ing into FS0:\EFI\BOOT and executing BOOTAA64.EFI in the shell. As soon as I press a key, nothing happens.
Hi, I tried all the steps you have me however I did it in limbo which is based on qemu, and it will not even get past a black screen, I also have no idea how to import the bios into limbo
I am seeing a white Windows logo with an arm with the message “Start Boot Option” and a progress bar.
It then switches to text mode with the message: “press any key to boot from DVD or DVD”.
Pressing a key switches back to the white Windows logo and nothing seems to happen: is it supposed to be long?
Guys how to setup Network bridge on it for hosted Windows 10?
I couldn’t get this to run actually…used the actual insider build and also an older one as suggested here:
https://kitsunemimi.pw/notes/posts/running-windows-10-for-arm64-in-a-qemu-virtual-machine.html
It’s only “Loading Files” after that i see only a black screen. Tested Quemu on Windows and also on Linux (in a WSL2 environment). Tried may things but no success 🙁
I would like to run Win10 ARM on qemu on Linux on a ARM64 system. Is this possible ?
I use this command line to run:
/qemu/build/vm_test$ qemu-system-aarch64 -M virt -cpu cortex-a57 -smp 2 -m 2G -pflash QEMU_EFI.img -pflash QEMU_VARS.img -device VGA -device nec-usb-xhci -device usb-kbd -device usb-mouse -device usb-storage,drive=install -drive if=none,id=install,format=raw,media=cdrom,file=18362.1198.201030-1156.19H1_RELEASE_SVC_PROD1_CLIENTPRO_OEMRET_A64FRE_EN-US.ISO -device usb-storage,drive=drivers -drive if=none,id=drivers,readonly=on,file=./drivers.vhdx -device virtio-blk,drive=system -drive if=none,id=system,format=raw,file=./system.vhdx
I get a >>Start PXE over IPV4
and then boot process stops. It was not so when i ran it for the first time,. got the press any key to continue and then it was booting and then I got the ACPI BIOS error.
The issue of >>Start PXE over IPV4 is resolved by overwriting the QEMU_EFI.img and QEMU_VARS.img with the original ones.
But how to resolve the ACPI BIOS Error ? Does anyone know ?