A CSMWrap egy olyan eszköz, amely egy CSM (Compatibility Support Module) és VESA VBIOS segítségével emulálja a hagyományos BIOS környezetet UEFI-only rendszereken. Ez lehetővé teszi, hogy olyan régi operációs rendszerek, mint a FreeDOS, Windows XP vagy Windows 7, elinduljanak olyan gépeken, amelyek nem rendelkeznek natív BIOS támogatással.

A CSMWrap a SeaBIOS projekt CSM moduljára és VESA VBIOS-ára épül. További hozzájárulások érkeztek a Nyu-EFI-től az EFI C futásidejű környezet, build rendszer és fejlécek terén, valamint az EDK2-től kódrészletek formájában. A közösség tagjai, mint például @CanonKong, tesztelési visszajelzésekkel és általános ismeretekkel járultak hozzá a projekthez.

Jelenleg az alábbi feladatokat látja el működése során:

  • A hagyományos BIOS memória régió (0xC0000–0xFFFFF) feloldása írásra.

  • A SeaBIOS CSM modul betöltése a memóriába.

  • Memóriatérkép konfigurálása a hagyományos alkalmazások számára.

  • VGA BIOS beállítása az EFI GOP (Graphics Output Protocol) információi alapján.

  • E820 memóriatérkép létrehozása az EFI memóriatérkép alapján.

  • Alapvető kompatibilitási táblák biztosítása, mint az ACPI és SMBIOS.

  • A CSM modul és a hagyományos szolgáltatások inicializálása.

  • Az irányítás átadása a hagyományos boot folyamatnak.

Jelenleg a FreeDOS, Windows XP és Windows 7 indítását teszi lehetővé QEMU-ban (q35 és piix4 gépeken egyaránt) illetve bizonyos valós hardvereken. Reméljük, hogy a jövőben már sokkal több információnk lesz ezzel kapcsolatban.

Mivel egy jelenleg is aktív fejlesztés alatt álló projektről van szó, ez a lehetőség még kidolgozás alatt áll és nagyon vegyesek lehetnek a tapasztalatok.

Above 4G Decoding: A CSMWrap működéséhez szinte elengedhetetlen, hogy a BIOS/UEFI beállításokban az Above 4G Decoding le legyen tiltva. Ennek oka, hogy a hagyományos BIOS csak az első 4 GB memóriához fér hozzá, míg az UEFI firmware-ek gyakran a GPU VRAM BAR-t a 4 GB fölé helyezik. 

A GPU VRAM BAR (Base Address Register) egy technikai fogalom, amely a PCIe (Peripheral Component Interconnect Express) rendszeren belül határozza meg, hogyan éri el a CPU a GPU videómemóriáját (VRAM-ját).

Lehetővé teszi, hogy a rendszer (elsősorban a CPU) közvetlenül hozzáférjen a GPU VRAM-jához, például:

  • nagy adatblokkok másolására

  • gyors adatfeldolgozásra (pl. DMA)

  • fejlettebb virtualizációra (pl. GPU passthrough)

A GPU hagyományosan DMA (Direct Memory Access) használatával másolta az adatokat a rendszermemória és a VRAM között, A VRAM BAR lehetővé teszi, hogy a CPU közvetlenül írjon/olvasson a VRAM-ba, ha az elérhető a címtérben.

Legacy régió feloldása: A CSMWrap jelenleg az EFI_LEGACY_REGION2_PROTOCOL-ra támaszkodik a hagyományos régió írásának engedélyezéséhez. Ez a protokoll nem minden rendszeren érhető el. Azokban az esetekben, ahol ez nem áll rendelkezésre, a CSMWrap megpróbálja a chipset PAM regisztereit használni a dekódoláshoz, ami nem mindig sikerül.

Windows videó módbeállítási problémák: A Windows XP/7 videó módbeállítási logikája néha inkompatibilis módokat próbál beállítani az int10h használatával, ami villogást vagy fekete képernyőt okozhat a hagyományos OS-re való átváltás után. Ez ismert probléma, és a jövőben javításra kerülhet. Addig is megpróbálhatod a GPU illesztőprogramját beépíteni az OS képébe, hogy elkerüld a VESA BIOS használatát.

A CSMWrap használatához egyszerűen másoljuk fel a csmwarp.efi fájlt és használjuk bootloaderként az EFI partíción, vagy nyilván ahonnan indítani szeretnénk.

Ne felejtsük el letiltani a Secure Boot-ot és az Above 4G Decoding-et a BIOS/UEFI beállításokban!

A CSMWrap kódja és további infók és letöltés a GitHub linken: CSMWrap GitHub

Jó töltögetést és tesztelgetést!

BIOS emulációbios on uefiCSMWraplegacy bootlegacy os on uefi