A POSIX-UEFI egy minimális (~132K a forrás), ANSI C keretrendszer, ami kényelmesebbé és egyszerűvé teszi az UEFI alkalmazások fejlesztését Linux alatt. Szabad és Nyílt Forráskódú, a licensze MIT, így akár kereskedelmi termékekben is használható.
https://gitlab.com/bztsrc/posix-uefi
Kettős célja van:
- egyrészről biztosít egy fordítókörnyezetet (GNU/make Makefile), ami lehetővé teszi az UEFI alkalmazások fordítását POSIX kompatíbilis oprendszerek alatt (nincs szükség a bloated EDKII-re)
- másrészről szállít egy függvénykönyvtárat, ami biztosítja, hogy az UEFI alkalmazásodban szabványos POSIX libc hívásokat használhass UTF-8 sztringekkel (úm. fopen, fprintf, rmdir, malloc, setjmp/longjmp stb.)
- a függvénykönyvtár mellé jár egy C header fájl is, ami a libc definíciókon és prototípusokon túl az összes fontosabb UEFI definíciót is tartalmazza, de az ANSI C szabvány nevezéktan szabályainak megfelelően (pl. WCHAR helyett wchar_t, vagy EFI_BOOT_SERVICES helyett efi_boot_services_t a típus), ezért semmilyen további headerre nincs szükség.
- bónuszként jár hozzá pár függőség nélküli parancssoros segéd, amikkel UEFI szabványos ROM képek vagy GPT+ESP lemezképek állíthatók elő a lefordított programodból. Persze ezek nékül is használható, ezek csak grátisz toolok.
A Makefile úgy lett megírva, hogy autodetektálja a fordítót (Clang és host native gcc is támogatott), és hogy kell-e keresztfordítani, valamint tartalmazza a szükséges linker scripteket is (x86_64 és AArch64 platformok támogatottak, RISC-V experimental státuszú, új architektúra bármikor különösebb módosítás nélkül, egyszerűen hozzáadható). A függvénykönyvtár minimális (lefordítva pár Kb csak), nem teljes libc, inkább csak egy wrapper az UEFI GUID-es interfésze fölé. A repóban található jópár példaprogram, olyanok mint könyvtár listázása; diszkek alacsony, szektor szintű elérése; PNG kép megjelenítése GOP framebufferen; vagy éppen egy ELF bináris futtatása a boot környezet hátrahagyásával.
Ha valakinek kapóra jön (mert tudomisén épp rootkitet hegeszt a szabadidejében suttyomban :-) ), az használja egészséggel!
bzt