Én fordítva látom. Régen minden egyszerű és könnyen használható volt, ma meg egy bloated használhatatlan fos, ami ráadásul még bazi nagy és tetves lassú is.
micsoda szopás volt itt a BIOS idejénErhhhmmmm. És most? Egy konkrét példa: hogyan kapcsoljuk ki a számítógépet programból? - BIOS: meghívod a jól dokumentált APM BIOS megszakítását oszt csókolom. Ennyi. Tényleg ennyi. Egyetlen INT utasítás, paraméterbeállítással együtt kb. 10 bájtnyi kód. - UEFI: na most kösd fel a gatyád... 1. fogod az EFI System Table-t, abból veszed a Configuration Table-t 2. végigiterálsz a tábla elemein, közben 16 bájtos UUID-kat keresel (többfélével kell egyezést nézned, lehet SMBIOS, ACPI1, ACPI2 is, O(n*m) alaphangon is) 3. megvan az ACPI2 root pointer, akkor végigiterálsz a tábláin, FACP azonosítót keresve (ez már csak O(n) szerencsére, ráadásul egy művelettel összehaszonlítható) 4. megnézed a tábla méretét, ez alapján két lehetséges pozíción is tárolódhat a DSDT tábla címe 5. oké, megvan a DSDT tábla, ez azonban AML bájtkód, tehát kell egy KIBASZOTT VIRTUÁLIS GÉPet implementálnod, ami lefutattja, hogy aztán kiköpje az erőforrás címeket (nem, nem viccelek, tényleg kell egy VIRTUÁLIS GÉPet futtatnod hozzá, mert az UEFI csak az interpretálandó bájtkódot adja; ráadásul a gyári VM implementáció, az ACPICA meg ugyancsak egy bloated bughalmaz, és biztonság szempontjából lukas, mint a szita, most is van egy Linuxos CVE épp, de a Windows felhasználóknak sem ismeretlen az ACPI.sys BSOD...) 6. végre megvan az erőforrás címe, ez lehet MMIO vagy IOport. Maga a kikapcsolás végül is csak egyetlen egy OUT/MOV uatsítás, hogy kiírsz egy speciális értéket ebbe a hardverregiszterbe. Na de mire kitalálod, hogy mit és hova... Na melyik is a káosz és téboly? Csak még pár dolog a teljesség igénye nélkül: API - BIOS: pofonegyszerű, sima interrupthívás - UEFI: háddebaz, pointertáblák, veremigazításos csakis Microsoft patented ABI, UUID-al interfész meg instance keresgélés stb. Agyfasz a köbön. Szolgáltatások - BIOS: mindvégig elérhető, nem zavar be, ha nem akarod, nem használod, ha akarod, ott van - UEFI: a legtöbb használhatatlanná válik az ExitBootServices hívás után, ha akarnád se tudnád mondjuk a képernyőfelbontást váltani vele soha többé, hiába van ott a meghajtóprogram szabványos API-val a géped ROM-jában Tárolás - BIOS: első szektor olvassa be, bármilyen partíciós táblával és bármilyen fájlrendszerrel tökéletesen működik, faék - UEFI: kötelező a partíciós tábla, abból is csak a Microsoft patented lehetséges (BSD disklabel? Solaris slice? felejtsd el!), kötelező EFI System Partition, csakis Microsoft patented fájlrendszerrel (a legszarabb FAT ráadásul), csakis Microsoft patented formában lehet a futtatható kód (mivel azt lopták és lényegében COFF, csak elérakták a PE szottyukat, ez utóbbi a legkevésbé gáz) Meghajtók - BIOS: transzparens, valamelyik ROMkód ráül a megfelelő megszakításra és kész, a hívónak nem kell tudni, visszafele mindig kompatíbilis - UEFI: már harmadszor dolgozzák át a teljes UEFI Driver modellt, folyton változó UUID-k meg folyton törő interfészek (próbálj csak meg manapság UGA-t lekérni GOP helyett) Méret: - BIOS: pár kilobájt - UEFI: sok sok sok sok sok sok megabájtnyi Futási idő - BIOS: baszott gyors (kevesebb, mint 1 mp) - UEFI: tetves lassú (fél perc alaphangon, de konfigurációtól függősen simán több) Biztoság: - BIOS: abszolút biztonságos, csak akkor tud bármi BIOS kód futni, ha a kernel hagyja (és aktívan támogatja), nem tudja megborítani a gépet - UEFI: á, hagyjuk. Annyi rootkit meg támadás van rá, hogy csak na. Alapvetően az a baj, hogy a RuntimeServices-t muszáj a kernelnek belapolva tartania és a legmagasabb supervisor felügyeleti szinten hagynia futni, a kernel mindenféle felügyelete nélkül. Modularitás: - BIOS: simán, futási időben lehet a kölönböző ROM-okat összepakolni és inicializálni (pl. hálókártya ROM-ja netről képes bootolni, ehhez semmi más nem kell, csak berakni a kártyát a gépbe). - UEFI: ehhh, inkább nézd meg ezt és szörnyülködj ...stb. Nyilván nem volt tökéletes, na de a mostani meg egy kalap hígfos. De legalább hamarosan raknak bele AI-t, ami majd eldönti helyetted, hogy milyen oprendszert indíthatsz a saját gépeden.