02.01.2015 Views

Скачать - Xakep Online

Скачать - Xakep Online

Скачать - Xakep Online

SHOW MORE
SHOW LESS

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]

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!