Avagy mit lehet kezdeni az OS X boot logójával?
Pár napja tulajdonosa vagyok egy már-már múzeumba való kis csodának: 1990 novemberében gyártották, Macintosh Classic névre hallgat. Node erről majd máskor írok. Ezen a gépen még Mac OS 6 fut, amit szintén kivesézek majd máskor, most mindössze annyit szeretnék megemlíteni, hogy nagyon kedves ötletnek tartom, hogy induláskor egy kis Macintosh figura köszönt minket a képernyőn. Ez a jó szokás sajnos már “kiveszett” az OS X-ből, és ezt szerettem volna valahogy visszahozni.
Legkézenfekvőbb megoldásnak a boot logó kicserélése tűnt. De hogyan? A google mindössze egy találatot dobott, volt egy valaki, aki mindent áttanulmányozva arra jutott, hogy az induláskor használt apple logó a /System/Library/Coreservices mappában lévő boot.efi fájlban található. Ezt nem lehet módosítani, de rá lehet venni a rendszert, hogy ennek a másolatát használja bootoláskor.
Szóval adott a feladat: kikeresni a logót tartalmazó fájlrészt (data fork-ot 😛 ), és valahogy beletenni az új logót, amit persze jól kiterveztem, és megcsináltam. Igen ám, de ez nem olyan egyszerű dolog. Megnyitottam a boot.efi másolatát HexFiend-del, ami egy hexeditor program, elég jól használható. Tudtam a cikkből, hogy hol kell keresni a képet a soksok szám között.
Ráadásul a kép még RLE (run length encoding) tömörítéssel is kódolva volt 😛 Az RLE tömörítés kb. arról szól, hogy nem egyenként tárolja el a pixelek színeit, hanem aszerint, hogy miből hány darab van egymás után, így például: fehérfehérfehérfehérfehérfeketefeketefeketefeketefehérfehér = 5xfehér4xfekete2xfehér.
Ötletes algoritmus. Soksok helyet meg lehet így spórolni.
Bonyolódik a helyzet. Tehát adott volt 1300valamennyi bájt, amit felülírhattam az új képpel. Ezért viszonylag egyszerűnek kellett lennie az ábrának. A mellékelt képen jól látszik a kétszínű ábra kódja (csak részlet) az 50-es szín jelöli ebben az esetben a sötétszürkét, a 01 a világosat. Ha elindulunk az elejétől ezt látjuk: 2A 50.
Ez egyenlő azzal, hogy 2A darab sötét színű pixel van egymás mellett. És így tovább…
Mivel hexában vagyunk, át kell számolni ezt a 16-os számrendszerbeli számot tizes számrendszerre: pl. 2A = 16+16+A(10) = 42. A képemen, ami 128×128 méretű lehet, én ezek után szépen elkezdtem pixelről pixelre leszámolni a színeket. Jó vicc 😀 Jópár órán keresztül hexában pixelt számolni, aztán munka közben persze legalább 100x újraindítani a gépet, hogy megnézzem, hogy haladok, esetleg hibás-e a kirajzolt ábra. Vicces volt na! Aztán persze az eredeti verzióban nagyobbra terveztem a Mac ábrát, ami megnövelte jócskán a lépések számát, amivel ki lehetett volna rajzolni: emiatt nem lehetett befejezni, mert akkor már megváltozott volna a fájl hosszúsága, és nem tudott volna boot-olni a gép. (Rajzolás elölről, kisebb méretben 😀 ) Persze ez elő is fordult, elnéztem a méretet, és nézhettem nagyokat, mert nem indult a gép… Ilyenkor segítségül jött az install dvd, amivel ha újra beállítottam az indítólemezt, akkor minden rendbe jött, kijavíthattam a hibámat.
Végül gyümölcse termett a sok fáradozásomnak: készen lett az új logó! Nagyon örültem neki, és rögtön el is határoztam, hogy programozás-tanulás címén fogok majd csinálni egy olyan programot, persze Cocoa-ban, nanná, amivel ezt tudom megcsinálni, soksok óra pixeltologatás helyett.
Aztán ma még egyszer rákerestem a logócserére, erre mit ad Google? Hát ezt! BootXChanger. Hát kicsit leesett az állam, hogy ezt már kitalálták 🙁 😛 Annak viszont nagyon örültem, hogy ez a program open-source, majd tanulmányozni fogom a kódját, érdekel mostanában ez a téma 😀 Hirtelenjében le is fordítottam magyarra a programot, idő kérdése, és a letölthető verzió is tartalmazni fogja a magyar nyelvet, írtam már a készítőjének 🙂
Hát ennyi volt a jó kis történet, én jól szórakoztam, és végülis Happy End Mac lett a vége 😛
apple, boot, BootXChanger, classic, happy-mac, hexa, kocka, logo, mac, macintosh, os-x, program, rle, run-length-encoding, tömörítés