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!