KVM jest domyślnym środowiskiem wirtualizacyjnym Linuksa, historycznie wywodzącym się z rozwiązania opracowanego dla architektury x86. W połączeniu z emulatorem QEMU jest w stanie w maszynie wirtualnej uruchomić bez większych problemów przeróżne systemy operacyjne, w tym nawet bardzo egzotyczne. Do tej pory na liście tej nie było jednak systemu, którzy interesuje wielu deweloperów – Windowsa 10 na architekturę ARM. Niespodziewanie za sprawą samego Microsoftu sytuacja ta uległa zmianie.
Nowa kategoria sprzętu przenośnego Always-Connected PC, czyli te ultralekkie windowsowe laptopy z procesorami Snapdragon, budzi zainteresowanie przede wszystkim ludzi biznesu. Nie dość że ładne i zdolne do długiej pracy na baterii, to jednocześnie pozwalające na całkiem wygodną pracę w znanym im systemie operacyjnym, z kompletem narzędzi Microsoft Office. Komputerków tych jest jednak mało, i pewnie nie każdemu będą one pasować. Dlaczego ten system operacyjny nie miałby np. działać na androidowych telefonach ze Snapdragonami?
Duże zainteresowanie wywołało więc wydanie w zeszłym roku specjalnej implementacji UEFI o nazwie Tiano Core na Raspberry Pi 3B+, która po raz pierwszy pozwoliła na zainstalowanie na sprzęcie innym niż te oficjalnie wspierane maszyny ze Snapdragonami pełnej wersji Windowsa 10 (wcześniej była dostępna tylko okrojona wersja Windows 10 Internet of Things). To jednak wciąż nie było to, działało bardzo powoli, nie miało dostępu nawet do urządzeń sieciowych.
Emulator QEMU wydawał się być lepszą platformą do eksperymentowania z ARM-owym Windowsem 10, szczególnie że w połączeniu ze środowiskiem KVM daje możliwość wykorzystania sprzętowo wspomaganej wirtualizacji. W teorii w ten sposób uruchomiona „dziesiątka” powinna działać więc niemal równie szybko co na przeznaczonym dla niej specjalnie sprzęcie, dzięki technologii Windows on Windows pozwalając uruchamiać także 32-bitowe aplikacje „normalnego” Windowsa x86. Niestety jednak pierwsze eksperymenty pokazały, że praktycznie nie da się przejść dalej niż poza etap instalacji systemu – ten Windows po prostu nie chciał dobrze pracować w środowisku KVM.
Zobacz też: Windows Sandbox, czyli izolowane maszyny wirtualne dla mas. Jak działają?
Gdy społeczność niezależnych deweloperów wymyślała różne sztuczki z KVM, aby z tym Windowsem coś jednak zrobić, pojawił się Pedro Justo, człowiek Microsoftu z zespołu deweloperów chmury Azure, który odkrył, że problem tkwi w kompilatorze używanym do budowania systemu. Za jego staraniem nowa wersja systemu, build 18348 (19H1), została skompilowana z opcjami pozwalającymi uniknąć instrukcji, które nie odpowiadają KVM. Od razu rozwiązało to wszystkie problemy z uruchamianiem Windowsa 10 na ARM pod KVM.
No może nie wszystkie. Do tej pory nie działa poprawnie sterownik sieciowy virtio-net, niektórzy zgłaszają też problemy z dźwiękiem, ale można te niedogodności obejść. Najważniejsze, że system działa z niemal pełną natywną wydajnością. Jeden z użytkowników, falkor 2k15 pochwalił się uruchomieniem tego nowo skompilowanego Windowsa 10 na Raspberry Pi 3B+, wykorzystującego jedynie 600 MB pamięci przy uruchomionych 13 kluczowych systemowych usługach.
Otwiera to bardzo ciekawe perspektywy dla wszystkich tych, którzy lubią kombinować ze sprzętem i oprogramowaniem: mocne androidowe smartfony z działającym gdzieś obok Linuksem mogłyby zamienić się w stacje robocze z Windows 10 i pełnym pakietem Office. Może zresztą rozwiązanie to nie będzie rozwiązaniem tylko dla nerdów. Pedro Justo przyznał, że dla Microsoftu KVM stało się ważnym narzędziem, wykorzystywanym przy testowaniu systemu i sterowników. Jako że zaś KVM/QEMU jest dostosowane do specyfikacji architektur ARM przez samych architektów ARM-a, to wszelkie problemy wychwycone w tych testach są problemami w dostosowaniu systemu do specyfikacji ARM.
Jeśli Microsoft będzie w stanie zagwarantować oficjalne wsparcie dla tej technologii, możemy sobie wyobrazić, że w przyszłości Windows 10 będzie mógł zostać uruchomiony nawet na średniej klasy androidowych smartfonach, dając ich właścicielom dostęp do ogromnej bazy oprogramowania win32.
Zobacz też: VirtualBox 6.0 – najlepszy darmowy hipernadzorca z nowym interfejsem