áúðчðть - Xakep Online
áúðчðть - Xakep Online
áúðчðть - Xakep Online
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
ñòàíäàðòíîå ëîãî<br />
âèäîèçìåíåííîå ëîãî<br />
Àëãîðèòì ðàáîòû ïîíÿòü íåòðóäíî. Êàê ìû âèäèì, â ïðîöåññå èçìåíåíèÿ<br />
ëîãî ìîäèôèöèðóþòñÿ ôàéëû logo_2_4.ppm, logo_bw_2_4.pbm<br />
è logo16_2_4.ppm, êîòîðûå ìû è äîëæíû ñîõðàíèòü íà «ñïàñàòåëüíóþ»<br />
äèñêåòó ïåðåä çàïóñêîì óòèëèòû. Ïîäðîáíåå îá ýòîì õàêå ìîæíî<br />
ïî÷èòàòü â ñòàòüå HOWTO Linux Logo Hack (gentoo-wiki.com/<br />
HOWTO_Linux_Logo_Hack).<br />
À âîò äðóãîé ñïîñîá èçìåíåíèÿ ëîãî, ïîäõîäÿùèé äëÿ ñòàðûõ ÿäåð 2.2.x,<br />
êîòîðûå âñå åùå âñòðå÷àþòñÿ â ïðèðîäå. Ñíà÷àëà çàáýêàïèì îðèãèíàëüíûé<br />
ôàéë /usr/include/linux/linux_logo.h (âïðî÷åì, åñëè áýêàïà íå áóäåò,<br />
åãî âñåãäà ìîæíî ñêà÷àòü èç Ñåòè), çàòåì ïîäãîòàâëèâàåì ñâîå<br />
ñîáñòâåííîå ëîãî â ôîðìàòå xpm ñ ðàçðåøåíèåì 80õ80 ïèêñåëåé è ïàëèòðîé<br />
*ðîâíî* èç 214 öâåòîâ (â ýòîì íàì îïÿòü-òàêè ïîìîæåò Gimp),<br />
íàòðàâëèâàåì íà íåå óòèëèòó boot_logo-1.01 (lug.umbc.edu/~mabzug1/<br />
boot_logo-1.01), ïðåäñòàâëÿþùóþ ñîáîé îáûêíîâåííûé ïåðëîâûé<br />
ñêðèïò, çàïóùåííûé ñëåäóþùèì îáðàçîì:<br />
# boot_logo-1.01 your_image.xpm > linux_logo.h<br />
íåñòàíäàðòíîå ASCII-ëîãî<br />
÷àñòåé: êîíâåðòîðà âõîäíîãî èçîáðàæåíèÿ, êîòîðûé íàõîäèòñÿ â<br />
ôàéëå pnmtologo.c, è íåïîñðåäñòâåííî ñàìîãî ïàò÷åðà ÿäðà, ñîñðåäîòî÷åííîãî<br />
â ôàéëàõ logo_2_2.c è logo_2_4.c (êàæäûé äëÿ ñâîåé<br />
âåðñèè ÿäðà). Ñòðîãî ãîâîðÿ, logo_2_4.c âêëþ÷àåò â ñåáÿ ýêñòðàêòîð<br />
òåêóùåãî ëîãî è ïàò÷åð, à logo_2_2.c òîëüêî ýêñòðàêòîð ëîãî ñòàðîãî<br />
ôîðìàòà, íî ýòî óæå äåòàëè. Ñàìî æå logo â îáîèõ ñëó÷àÿõ ïðåäñòàâëÿåò<br />
ñîáîé îáûêíîâåííûé pcx-ôàéë ñ ãëóáèíîé öâåòíîñòè íå áîëåå<br />
256 öâåòîâ è îáùåé ïëîùàäüþ íå áîëåå ÷åì 786432 ïèêñåëåé (÷òî<br />
ñîîòâåòñòâóåò ðàçðåøåíèþ 1024x768).<br />
Êîíâåðòîð íàì ñîâåðøåííî íåèíòåðåñåí (êñòàòè ãîâîðÿ, âìåñòî íåãî<br />
ìîæíî âîñïîëüçîâàòüñÿ ïëàãèíîì äëÿ ðåäàêòîðà Gimp: registry.gimp.org/<br />
detailview.phtmlplugin=Linux+Logo), à âîò ê ýêñòðàêòîðó/ïàò÷åðó ìû<br />
ïðèñìîòðèìñÿ ïîâíèìàòåëüíåå.<br />
[îäèí èç êëþ÷åâûõ ôðàãìåíòîâ ôàéëà logo_2_4.c, èçìåíÿþùåãî ëîãî]<br />
static struct entry{unsigned char red; unsigned char green; unsigned char<br />
blue;} palette16[16] = {<br />
{ 0, 0, 0, }, { 0, 0, 170, }, { 0, 170, 0, }, { 0, 170, 170, },<br />
{ 170, 0, 0, }, { 170, 0, 170, }, { 170, 85, 0, }, { 170, 170, 170,},<br />
{ 85, 85, 85, }, { 85, 85, 255, }, { 85, 255, 85, }, { 85, 255, 255, },<br />
{ 255, 85, 85, }, { 255, 85, 255, }, { 255, 255, 85, }, { 255, 255, 255 },<br />
};<br />
static void write_logo16(const char *filename, const unsigned char<br />
*data)<br />
{<br />
FILE *stream; int i, j, d;<br />
stream = fopen(filename, "w");<br />
if (!stream) { perror("file open error: "); exit(1); }<br />
fputs("P3\n80 80\n255\n", stream);<br />
for (i = 0; i < 80*80/2; i += 2)<br />
{<br />
for (j = 0; j < 2; j++)<br />
{<br />
d = data[i+j] >> 4;<br />
fprintf(stream, " %3d %3d %3d", palette16[d].red,<br />
palette16[d].green, palette16[d].blue);<br />
d = data[i+j] & 15;<br />
fprintf(stream, " %3d %3d %3d", palette16[d].red,<br />
palette16[d].green, palette16[d].blue);<br />
} fputc('\n', stream);<br />
} fclose(stream);<br />
}<br />
int main(int argc, char *argv[])<br />
{<br />
write_logo("logo_2_4.ppm",linux_logo,linux_logo_red,linux_logo_green,l<br />
inux_logo_blue);<br />
write_logo_bw("logo_bw_2_4.pbm", linux_logo_bw);<br />
write_logo16("logo16_2_4.ppm", linux_logo16);<br />
return 0;<br />
}<br />
È, åñëè âñå ïðîéäåò áåç îøèáîê, â òåêóùåé äèðåêòîðèè îáðàçóåòñÿ<br />
ôàéë linux_logo.h, êîòîðûé íàì ïðåäñòîèò ñêîïèðîâàòü â êàòàëîã:<br />
/usr/include/linux. Òåïåðü íåîáõîäèìî ïåðåêîìïèëèðîâàòü ÿäðî è ïåðåçàãðóçèòüñÿ.<br />
Åñëè ìû íå ïîâèñíåì, íà ýêðàíå âûñâåòèòñÿ íîâîå ëîãî, êîòîðîå<br />
ìîæåò âûãëÿäåòü, íàïðèìåð, òàê, êàê ïîêàçàíî íà ðèñóíêå «âèäîèçìåíåííîå<br />
ëîãî». Åñëè âîçíèêíóò òðóäíîñòè, ìîæíî îáðàòèòüñÿ çà ïîìîùüþ<br />
ê lug.umbc.edu/~mabzug1/boot_logo.html.<br />
[ïðåïàðèðóåì 2.6] Ñ ÿäðîì 2.6 âñå íàìíîãî ïðîùå. Ñîçäàåì èçîáðàæåíèå<br />
â ôîðìàòå png ëþáîãî ðàçóìíîãî ðàçìåðà è ïðîïóñêàåì åãî ÷åðåç<br />
øòàòíóþ óòèëèòó pngtopnm, çàïóùåííóþ ñî ñëåäóþùèìè êëþ÷àìè<br />
êîìàíäíîé ñòðîêè:<br />
# pngtopnm logo.png | pnmtoplainpnm > logo_linux_clut224.ppm<br />
À çàòåì ïîëó÷åííûé ôàéë ïåðåáðàñûâàåì íà ìåñòî ïîñòîÿííîé äèñëîêàöèè:<br />
# cp logo_linux_clut224.ppm /usr/src/linux/drivers/video/logo/<br />
Îñòàåòñÿ íàñòðîèòü ÿäðî, äëÿ ÷åãî ìîæíî âîñïîëüçîâàòüñÿ èíòåðàêòèâíûì<br />
êîíôèãóðàòîðîì. Ñðåäè ïðî÷èõ ïîëåçíûõ (è íå î÷åíü) ïóíêòîâ â<br />
íåì áóäåò Bootup logo è Standard 224-color Linux logo. Âîò èõ-òî è íåîáõîäèìî<br />
«âçâåñòè».<br />
[èíòåðàêòèâíîå êîíôèãóðèðîâàíèå ëîãî â kernel 2.6]<br />
Device Drivers -><br />
Graphics Support -><br />
[*] Support for frame buffer devices<br />
[*] VESA VGA graphics support<br />
Console display driver support -><br />
[*] Video mode selection support<br />
Framebuffer Console support<br />
[*]Select compiled-in fonts<br />
[*]VGA 8x16 font<br />
Logo configuration -><br />
[*] Bootup logo<br />
[*] Standard 224-color Linux logo<br />
Ïåðåêîìïèëèðóåì ÿäðî, çàïóñòèâ make, è íàñòîèì êîíôèãóðàöèîííûé<br />
ôàéë /boot/grub/menu.lst, äîáàâèâ êëþ÷ vga=0x318. Â èòîãå ïîëó-<br />
÷èòñÿ òàêàÿ çàïèñü: kernel (hd0,0)/vmlinuz root=/dev/sda3 vga=0x318.<br />
Ïåðåçàãðóçèìñÿ. Íîâîå ëîãî òîðæåñòâåííî ïîÿâèòñÿ íà ýêðàíå, ñèÿÿ<br />
âñåìè ñâîèìè 224-öâåòàìè. Êðàñèâî Îäíàêî íàñòîÿùèå õàêåðû<br />
ïðèçíàþò òîëüêî òåêñòîâîé òåðìèíàë è êîíñîëüíûé ðåæèì ñ ANSIïñåâäîãðàôèêîé,<br />
à GUI ïðîãîíÿþò ïðî÷ü. Áîëüøîé ïîïóëÿðíîñòüþ<br />
ïîëüçóþòñÿ ASCII-ëîãî, êîòîðûå ìîæíî óñòàíîâèòü ñ ïîìîùüþ ïðîãðàììû<br />
Linux_logo (www.deater.net/weave/vmwprod/linux_logo/). Òàì<br />
æå íà ñåðâåðå íàõîäèòñÿ êîëëåêöèÿ ãîòîâûõ îáðàçöîâ, äâà èç êîòîðûõ<br />
ïðèâåäåíû íèæå.<br />
[çàêëþ÷åíèå] Âîò ìû è õàêíóëè ïèíãâèíà, ïðè÷åì, íå îäíèì, à ñðàçó<br />
íåñêîëüêèìè ñïîñîáàìè. Ïðîñòîð äëÿ òâîð÷åñòâà çäåñü ïîèñòèíå<br />
áåçãðàíè÷åí, è ïîèñê ïî êëþ÷åâûì ñëîâàì linux logo â Èíòåðíåòå âûäàåò<br />
îãðîìíîå êîëè÷åñòâî ðåñóðñîâ, îäèí èíòåðåñíåå äðóãîãî. Òàê<br />
÷òî íàëåòàéòå<br />
[XÀÊÅÐ 09 [81] 05 > UNIXOID 103]