Diit.cz - Novinky a informace o hardware, software a internetu

Haiku získá podporu hardwarové virtualizace

Zdroj: Shutterstock

Operační systém Haiku je velmi často provozován ve virtuálních strojích, teď ale sám získává schopnost virtuální stroje hostovat.

Google Summer of Code je každoroční program, v němž Google uděluje stipendia programátorům, kteří se v období května až srpna úspěšně přispejí do open-source projektů. Má za sebou už dvacet ročníků a ač byl původně určen zejména pro studenty a čerstvé absolventy, od roku 2022 se ho může účastnit každý. V letošním roce bylo k realizaci schváleno 1168 projektů od 194 organizací a mezi nimi byl i projekt operačního systému Haiku a jedním z realizovaných projektů bylo zavedení podpory hardwarové virtualizace v QEMU.

Doposud bylo v Haiku možné x86 stroje pouze emulovat, což je vcelku pochopitelně několikanásobně pomalejší než je virtualizovat. Vývojář Daniel Martin (dalme) se proto v rámci GSoC projektu pustil do portace hypervizoru NVMM z DragonFlyBSD a jak se lze dočíst z jeho závěrečného reportu, ačkoliv se mu nepovedlo úplně vše, dobral se k funkční virtualizaci na procesorech od Intelu s instrukcemi VT-x (prakticky cokoliv od pozdních Pentií 4 výše).

Celý proces vyžadoval doplnění hlavičkových souborů, které jsou v BSD, ale nejsou v Haiku; dále úpravy plynoucí z toho že NVMM je v C, kdežto Haiku převážně v C++, portaci libnvmm knihovny a také virtualizačních backendů SVM a VMX. První jmenovaný backend je určený pro procesory AMD a není funkční, portováno bylo jen holé minimum, nezbytné k překladu celého hypervizoru. Druhý backend, tedy VMX, je určen pro procesory od Intelu a práce na něm zabrala většinu času, který byl projektu vyhrazen.

Prvotní otestování proběhlo pomocí jednoduchého virtuálního stroje calc-vm, který je přímo součástí testů funkčnosti NVMM. Tento stroj nedělá nic jiného, než že inicializuje virtualizovaný procesor, naplní registry EAX a EBX parametry z příkazové řádky, provede instrukce ADD EBX, EAX a HLT a vypíše obsah registru EBX.

Zdroj: Haiku

Test proběhl úspěšně, dalším krokem tedy bylo upravit samotné QEMU tak, aby na Haiku bylo schopné NVMM použít a pak už se testovaly reálné operační systémy. Zde se narazilo na řadu problémů, z nichž některé se nepodařilo v rámci projektu vyřešit a zůstávají tak pro další vývojáře:

  • Některé systémy ve virtualizaci bezdůvodně padají již v raných fázích startu.
  • Nefunguje SMP.
  • Virtualizace se chová jinak na reálném hardware a jinak ve vnořené virtualizaci. Na reálném hardware by měla být významně rychlejší, než jde-li o virtualizaci několikanásobnou, ale v praxi tomu tak ne vždy je.

Veškerý kód je k dispozici na GitHubu, jeho části byly již začleněny přímo do kódu Haiku a vývojář má v plánu věnovat se mu i po konci GSoC. Ačkoliv bude mít výsledný produkt přínos i sám o sobě, je mimo jiné i zajímavou ukázkou toho, co vše je schopen realizovat jednotlivec v relativně krátkém období.

Martin "logout" Kukač

Většinu dne trávím tím, že přeměňuju kofein na kód. Když s tím skončím a ještě není čas jít spát, tak zbylý čas nerovnoměrně dělím mezi rodinu, sbírku počítačového harampádí, vysílání na volně přístupných pásmech a geocaching.

více článků, blogů a informací o autorovi

Diskuse ke článku Haiku získá podporu hardwarové virtualizace

Čtvrtek, 29 Srpen 2024 - 21:20 | Ziik | Nechápu potřebu psát vlastní browser....
Čtvrtek, 29 Srpen 2024 - 17:45 | hor411 | Jako chápu, že to bylo v rámci GSoC. Ale kdyby se...

Zobrazit diskusi