Beköszöntõ

Végre megjelent a har- kedtem (márkás, drága, új, csilli-villi), mincnegyedik számunk, amihez adtak Windows XP-t. Ponto- © Kiskapu Kft. Minden jog fenntartva ami azt is jelenti, hogy sabban elõtelepítették nekem a teljes háromévesek lettünk. lemezre. Ha akartam újratelepíthettem, Ezt a matematikailag s egy csöpp szöveg figyelmeztetett, nehézkesen bizonyítható hogy a telepítõ egyedi, abban az érte- kijelentést úgy is megfo- lemben, hogy elsõ lépésként fûbe vágja galmazhattam volna, hogy az egész merevlemezt, ledarálja az három évvel ezelõtt, no- összes adatot, és feltesz nekem egy gyá- vemberben jelent meg az rilag elõtelepített Windowst. Hiába na, ország méltán legnépsze- angyalok ezek az OEM-rendszerek. rûbb Linuxszal foglalkozó Azért (így utolsóként) a „pénzes” terü- nyomtatott sajtóorgánu- letek is kezdenek alkalmazkodni. Már mának elsõ száma. De ez vannak helyek, ahol még azt a plusz talán egy csöppet felleng- két-háromtízezrest sem kell kifizetnünk, zõsen hangzana. ha esetleg más operációs rendszert Szy György Az elsõ szám még irkafûzéssel, sok akarunk a gépünkhöz. Idõ kérdése, és a Linuxvilág fõszerkesztõje, lelkesedéssel és még több sajtóhibával talán eljutunk a nyugaton (és keleten) a Kiskapu Kiadó vezetõje. látott napvilágot. Azóta sokat változ- immár több éve szokásos módihoz: Mindenki levelét örömmel tunk, például nem irkafûzéssel jele- megkérdezik a kereskedõk, mit szeret- várja a következõ levélcímen: nünk meg. A másik kettõ még megvan. nénk. Mert ugye az elég fontos. Lega- [email protected] Ugyanúgy, ahogy a parázs viták is, lábbis nekünk. A vevõ pedig olyan, amelyeket a fordításokkal kapcsán foly- hogy oda megy, ahol azt kapja, ami kell tatunk, vagy a siránkozások, hogy neki, nem azt, amirõl úgy tudja az nyugaton mennyivel szélesebb körben eladó, hogy kell neki. Jó esetben… használják a GNU/Linuxot, mint ide- Elsõdleges feladatunk tehát ma már haza. Bár a hangsúlyok eltolódtak. nem az, hogy kiharcoljuk a Ma már nem azon kapunk hajba, hogy számára az életteret, hanem az, hogy le kell-e fordítani a server szót, csupán megmutassuk az embereknek, hogy diplomatikusan dörmögünk, hogy de létezik, él és virul ez a rendszer, a ked- jó lenne a backportra a visszaültetésnél ves felhasználó választhatja ezt is, ilyen jobb fordítást találni. És ha körbené- és ilyen elõnyeivel, ilyen és ilyen hát- zünk láthatjuk, ahol az emberek rányaival együtt. Remélem, hogy ezen Linuxot akarnak használni, ott már a területen tudunk segítséget nyújtani szabad utat kapnak. Oktatásban, új olvasóink számára, amellett, hogy munkahelyen, otthon. a gyakorló rendszergazdák, programo- Na nem mintha mindenhol sajttal lenne zók továbbra is megtalálják a számukra kikövezve az út a GNU/Linux elõtt. érdekes cikkeket, írásokat. A minap például egy laptoppal vesze- Kívánok mindenkinek boldog linuxozást! Vezérfonal

Programvadászat

Mindi-Mondo 2. Ez a programpáros igen jól használható A telepítését egy apt-get összeomlás utáni helyreállítónak. Segít- install mondo paranccsal könnyedén ségükkel a rendszer pillanatnyi állapo- megoldhatjuk. táról biztonsági mentést készíthetünk, Mint az az elsõ képen is jól látható, szinte amit egy esetleges rendszerösszeomlás mindenféle médiára készíthetünk men- után csak beteszünk a CD-olvasóba, tést, nem állhat utunkba sem a CD, CD- elindítjuk a gépet, és szinte önmûkö- RW, merevlemez, sem az NFS kötetek. dõen visszakapjuk a régi rendszerünket. Kényelmes és gyorsan megszokható, A magazin 22. oldalán található cikkben megszerethetõ programokról van szó,

© Kiskapu Kft. Minden jog fenntartva a program használatáról bõvebben is használatával nem kell félnünk egy olvashatunk. esetleges rendszerösszeomlás következ- a cikkben leírtakat, lemezmellékletünk Nézzük meg, miként is telepíthetjük ményeitõl – amennyiben elég friss a SELinux könyvtárában megtalálható fel ezt a hasznos programpárost. Fûzzük mentésünk. minden csomag, ami ehhez szükséges. be a CD-t! OpenOffice.org 1.1 KDE 3.1-folytatás # mount /mnt/cdrom Megjelent a linuxos körökben legnép- A mostani korongon folytatjuk a KDE- # cd /mnt/cdrom/Magazin/ szerûbb (egyben legnagyobb és leglas- felület közreadását, most a Red Hat Mondo-Mindi sabb) irodai csomag következõ megbíz- Linux 9-es változatához adjuk közre a # ./setup ható változata, az 1.1-es. Az elõzõ válto- csomagokat. # cd / zatokhoz képest érezhetõ sebességnö- # umount /mnt/cdrom vekedést tapasztalhatunk, ami ennek a 3. programcsomagnak nagymértékben az Ez a módszer remekül mûködik az elõnyére válik. alábbi rendszereken: Telepítése a szokásos módon zajlik, azaz • Red Hat 7.x, 8.0, 9 kezdjük a fájlok kicsomagolásával: • Mandrake Linux 8.x, 9.x • SME/e-Smith 5.6 #mkdir install • SuSE Linux 8.2 #cd install • Trustix 2.0 #mount /cdrom • TurboLinux Server 6.5 #tar -xvzf • TurboLinux Workstation 7.0 /cdrom/OpenOffice.org Rendszermag Nem lett kipróbálva, de ettõl még van ekkor létrejön a Gyors ütemben fejlõdik a 2.6-os rend- esély a mûködésre a következõ Ooo_1.1.0_LinuxIntel_install könyvtár szermag, már a 2.6.0-test7-es változatnál változatoknál: tart, egyre közelebb kerülve a teljes • Caldera OpenLinux Workstation 3.1 #cd Ooo_1.1.0_LinuxIntel_ üzembiztossághoz. Valószínûleg ennek • Caldera OpenLinux Server 3.1 install a rendszermagnak kell majd beteljesí- • Mandrake Linux 8.0 #./setup tenie a 2.4-es sorozathoz fûzött nagy reményeket, hogy a Linux nagyvállalati Az alábbi terjesztésekkel viszont bizto- Amennyiben többfelhasználós üzem- környezetben is igazán elismert legyen. san nem mûködik: módban szeretnénk telepíteni, akkor a • Slackware 8.0 #./setup -net parancsot használjuk Játék • Debian 3.0 rendszergazdaként. Így ha több felhasz- A játékrovathoz kapcsolódó anyagok • TurboLinux Server 6.0.5 náló is dolgozik a gépen, akkor nem kell a szokásos helyen a Jatek könyvtárban mindenkinek az egész csomagot felte- találhatóak. Képeket és filmet egyaránt 1. lepítenie, ugyanis ez nagy erõforrás- találhatunk a hamarosan megjelenõ pazarlás lenne, hanem elég csak egyszer hazai fejlesztésû T3 játékról. felpakolni. Ezt követõen csupán a felhasználók fájljait kell másolni. Csontos Gyula SELinux ([email protected]) 33. oldalon kezdõdõ cikkünk témája az A Linuxvilág szakmai és NSA (National Security Agency) által CD-szerkesztõje. Szabadidejében fejlesztett SE Linux (Security Enhanced szívesen mászik hegyet és Linux). Hogy mindenki kipróbálhassa kerékpározik.

6 Linuxvilág Hír-lelõ

Palm-újdonságok Samsung a Napsterhez Vigyáz magára Az elmúlt idõszakban három új tenyér- A Samsung bejelentette, hogy olyan új Az IBM megújult ThinkPad termékcsa- gépet is bemutatott a Palm. Az alsó kate- digitális zenelejátszó készülékeket fog ládjában két újfajta adatbiztonsági meg- góriás Zire 21 nem éppen az élvonalba piacra dobni, amelyek szorosan kötõd- oldással felruházott típust – R50 és T41 – tartozik, ám kedvezõ, 99 dolláros árával, nek majd a hamarosan induló Napster is találunk. Mivel a hordozható 8 MB memóriájával és szürkeárnyalatos 2.0 szolgáltatáshoz. A cég világszerte a számítógépeket tulajdo- fiatalok meghódítását tûzte ki célul, és nosaik sokszor leejtik többek között beépített tévével rendel- vagy nekiütik valami- kezõ mobiltelefonokkal, hatalmas plaz- nek – a kimutatások matévékkel készül a digitális korszak szerint a vállalatok- ifjú híveinek zsebében lapuló pénztárca nál minden megcsapolására. A zeneszolgáltatáshoz évben a mintát az Apple iPod-lejátszókkal a hor- társuló iTunes szolgáltatása adja, amely- dozható nek példátlan sikere több cég számára is gépek egy lórúgással ért fel: valamirõl megint egytizedét lemaradtak. Az eredeti Napster annak használóik idején még törvénytelen fájlcserélõ összetörik –, az IBM egy külön lapkával kijelzõjével alkalmas arra, hogy a cég hálózatként mûködött, amíg egy bíró- szerelte fel gépeit, amely erõs gyorsulást minden érdeklõdõ számára valamilyen sági döntéssel fel nem számolták. érzékelve képes a gép merevlemezében eszközt tudjon ajánlani. A Tungsten E a Vagyonát a Roxio szerezte meg, a cég található író–olvasó fejet parkolópályára felsõbb kategória egy feljavított darabja, a néhai Napster alapjaira építkezve egy helyezni. Így nem kell attól tartani, 32 MB memóriával, frissített alkalmazá- immár jogtiszta szolgáltatás az év õszi hogy az ütés hatására elmozduló olva- sokkal és 199 dolláros árral. Igazi újdon- indításán munkálkodik. sófej a merevlemez korongjának tényle- ságként a Tungsten T3 könyvelhetõ el,  http://www.samsung.com gesen adatokat tároló részét megkar- amelynek kijelzõje nemcsak hagyomá- colja, és emiatt adatvesztés következik nyos álló, de fekvõ módban is használ- Elõtelepített LindowsOS gyártóknak be. Igaz, hogy maga a gép ettõl nem ható, és megnövelt, 320×480 képpontos A Seagate és a Lindows.com együtt- menekül meg, ám a rajta tárolt adatok felbontással bír. Processzora 400 MHz-es mûködésének eredményeként született fennmaradására jó esély mutatkozik. órajellel üzemel, 64 MB memóriával meg a LindowsHD. Az új termék való-  http://www.ibm.com/thinkpad látták el, így irodai dokumentumok jában egy teljesen átlagos, asztali gépek- kezelésére, mozgóképek lejátszására be szánt, 40 GB-os Seagate Barracuda is alkalmas. Ára ennek megfelelõen merevlemez, amelyre elõtelepített kevésbé barátságos, 399 dollár. LindowsOS 4.0 kerül. A meghajtót de- Ugyancsak a Palmhoz kötõdik, hogy a cembertõl elsõsorban (amerikai) számí- cég tenyérgépeire is elérhetõvé vált az tógépgyártóknak kínálják, akik a telje- IBM WebSphere Micro Environment sen üres lemezekhez képest felár nélkül Java virtuális gépe. Akik 2003. október vásárolhatják meg õket. Így nem kell 1-je után vásároltak Tungsten-gépet, külön foglalkozniuk az operációs rend- azok ingyenesen tölthetik le a telepítõ- szer telepítésével, beállításával, szerelés készletet, a többi felhasználónak 6 dol- után azonnal kész gépet adhatnak át a lárt kell fizetnie érte. A két cég elsõsor- vásárlóknak. A „nem márkás” gyártók ban a nagyvállalati felhasználókat céloz- a tengerentúlon is a gépeladások több za meg ajánlatával, akik a Java szélesebb mint felét mondhatják magukénak, körû elérhetõségével szorosabban egy- most a LindowsHD használatával min- beépített megoldásokat hozhatnak létre. den egyes számítógépen 100 dollárt  http://www.palm.com takaríthatnak meg – az összeg kísérteti- esen emlékeztet az OEM Windows XP Linuxos Homeworld Home árára, talán nem is véletlenül. A Relic Entertainment – miközben Ide kapcsolódik, hogy a Lindows.com Windows alá már a második változatot LindowsEspanol névvel bejelentette jelentette meg – elérhetõvé tette a operációs rendszerének spanyol nyelvû Homeworld játék forráskódját. A kód változatát. A spanyol nyelvet világszerte nem GPL szerzõdéssel jelent meg, és a 332 millió ember beszéli, ám a cég veze- hangrendszer fejlesztõi készletét sem tõit valószínûleg jobban érdeklik azok a tartalmazza, minden mást azonban igen, milliók, akik az Egyesült Államok hatá- így legalábbis tanulási célokra érdemes rain belül, illetve Közép- és Dél-Ameri- lehet beszerezni. Lelkes rajongók dol- kában élnek, és olcsó számítógépet goznak a Linuxra átültetett változaton szeretnének vásárolni. Lehet, hogy nem is, amelynek elõzetes kiadása forráskód- ez a réteg a legtehetõsebb, de a ként és bináris formátumban egyaránt Lindows.com hosszú távú terveihez letölthetõ. jelentõs tömegbázist adhat.  http://www.relic.com/rdn  http://www.lindows.com/lindowsHD © Kiskapu Kft. Minden jog fenntartva

www.linuxvilag.hu 2003. november 7 Hír-lelõ

Eldobható CD-k A brazilok is a Linux mellett döntöttek Ne rád várjak… A Sanyo optikai adathordozókat fej- A brazil kormány és az IBM közös A valós idejû rendszereket fejlesztõ lesztõ Sanyo Mavic Media nevû leány- szándéknyilatkozatában foglaltak FSMLabs olyan Linux-változatot készí- vállalata bejelentette, hogy hamarosan szerint a két fél együtt fog azon fára- tett, amely kevesebb mint 200 ms alatt megkezdi növényi alapanyagokból dozni, hogy segítse a nyílt szabványok- képes betölteni magát. készült CD-inek kereskedelmi forgalma- ra és programokra alapuló megoldások, A jelenlegi változatok zását. A MildDisc lemezek különleges, köztük a Linux elterjedését a dél- indítása akár öt másod- polimerizált tejsavból készülnek, amely- amerikai országban. Elsõ lépésben a percnél is tovább tarthat, nek az alapanyaga egyszerû kukorica. hátteret kívánják megteremteni ahhoz, ami egy asztali számítógépnél ugyan Megfelelõ kémiai eljárásokkal ezt az hogy a nyilvános szektorban – ami nem nem lenne sok, ám egy beágyazott ope- anyagot úgy alakítják, hogy a mûanya- tiszta, hogy mit takar – elterjedjen a rációs rendszert futtató készüléknél elfo- Linux, és általa alacsonyabb költséggel gadhatatlan – az ilyen gépektõl haszná- lehessen egymással együttmûködni lóik azt várják, hogy bekapcsolás után képes rendszereket építeni. Az IBM gyakorlatilag azonnal rendelkezésükre nemrég az orosz kormánnyal is meg- álljanak. Az FSMLabs fejlesztõi tanulmá- egyezett egy linuxos központ létre- nyozták az operációs rendszer indításá- hozásáról. Az eseményeket szemlélve nak a folyamatát, meghatározták azokat

© Kiskapu Kft. Minden jog fenntartva egyrészt arra következtethetünk, hogy a pontokat, amelyeken késleltetés lép fel, az IBM linuxos részlegénél év végén majd a megfelelõ eljárások módosításával elég szép jutalmakat fognak osztani, csökkentették a várakozások idõtartamát. másrészt pedig arra, hogy a fejlõdõnek A cég által alkalmazott módszerek pro- nevezett országok is rádöbbentek: a cesszortípustól függetlenül alkalmaz- nyílt operációs rendszer térhódítását hatók. További finomításuk révén vár- gokhoz hasonló tulajdonságokat vegyen õk sem hagyhatják figyelmen kívül. hatóan 0,1 másodperc alatti rendszerin- fel, és alkalmas legyen CD-k kialakítá- A kérdés már csak az, hogy hozzá dítási idõket is el lehet majd érni, sára. Egyetlen lemez legyártásához tudnak-e adni valamit a tortához, illetve megoldásaik az x86 alapú rend- mindössze 85 kukoricaszemre van szük- vagy csak egy szeletkét kérnek belõle. szerekben – vagyis az asztali számí- ség, vagyis egyetlen csõbõl elméletileg tógépeken – is megjelenhetnek. akár tíz lemez alapanyaga is elõállítható. Biztonsági szabvány asztali  http://www.fsmlabs.com A kukoricalemezek nemcsak elállításuk, operációs rendszerekhez de utóéletük során is kímélik a környe- P2200 jelzéssel új szabvány kidolgozá- Linuxos cégadatbázis zetet, ugyanis a természetben elõforduló sában vágott bele az IEEE. A Base Az UHU-Linux csapat elindította a li- mikroorganizmusok kiváló étvágyának Operating System Security, rövidítve nuxos cégeket összegyûjtõ weboldalát. köszönhetõen nyomtalanul, káros anyag BOSS az általános célú, kereskedelem- Célkitûzésük az, hogy segítsék közelebb hátrahagyása nélkül bomlanak le. Ha ben kapható, hozni egymáshoz a Linux iránt érdeklõdõ nemcsak magát a lemezt, hanem a tokot a polcról készen felhasználókat és a (bármilyen) Linux- és a csomagoló fóliát is ilyen mûanyag- leemelhetõ operá- terjesztéssel foglalkozó vállalkozásokat. ból készítik, akkor – a jelenlegi CD-kkel ciós rendszerekre  http://www.uhulinux.hu/cegek ellentétben – a teljes termék környezet- vonatkozóan fog barát módon tüntethetõ el, amikor már biztonsági elvá- Educatio 2003 nincs szükségünk rá. rásokat megfogal- Idén is megrendezik november 27. és mazni. Hiába ugyanis a megannyi biz- 30. között, a Budapesti Vásárközpont Bemutatkozik az új nemzedék tonsági intézkedés és felügyeleti eljárás A pavilonjában a magyar oktatás legje- A Pannon GSM és a Nokia együttmû- a vállalatoknál, ha az operációs rendsze- lentõsebb és legrangosabb hagyomá- ködésével hazánkban is mûködésbe rek nem nyújtanak kellõ segítséget a nyos szakmai seregszemléjét. Több száz lépett az elsõ harmadik generációs biztonságos környezet megteremtésé- kiállító – köztük valamennyi magyar (UMTS) mobil távközlési rendszer hez. A BOSS a belsõ hibákra és külsõ egyetem és fõiskola – képviseli a hazai – egyelõre bemutató jelleggel. Az új fenyegetésekre egyaránt kitér majd, a közép- és felsõoktatást, a taneszközgyár- hálózatok a jelenleginél gyorsabb adat- hiányosságokat gyökerüknél, a tervezési tást, a tankönyvkiadást, a szakképzést, továbbítást tesznek majd lehetõvé, meg- szakaszban próbálja megragadni. Össze- a nyelvoktatást, a minõségbiztosítást és nyitva az utat a gyors letöltések, a állítói minden biztonsággal foglalkozó az informatikát. A látogatók a kiállítási videokonferenciák és a különféle mul- szakembert az elõírás-gyûjtemény össze- standok mellett szakmai elõadásokon timédiás szolgáltatások elõtt. Nyugat- állításában való részvételre buzdítanak, és bemutatókon ismerkedhetnek az Európában a 3G hálózatok kiépítésének ám végeredményként nemcsak a mû- oktatás jelenével és jövõjével. jogát a távközlési cégek hatalmas össze- szaki, de a gazdasági vagy irányító szere- A rendezõk az elõzõ évi kiállítás alapján gekért vásárolták meg, ám a felhasz- pet betöltõ szakemberek számára is átte- 5-600 kiállítóra, és a négy nap során nálók száma rendre elmaradt a várttól. kinthetõ, jól értelmezhetõ dokumentu- 60–70 ezer látogatóra – középiskolás Hazákban – mivel még a tendert sem mot szeretnének létrehozni. A szabványt diákokra, szüleikre, pedagógusokra és írták ki – valószínûleg megfontoltabban – amely alapvetõen az ISO Common intézményvezetõkre – számítanak. fogják végrehajtani a fejlesztéseket, Criteria rendszerének gondolatát követi A kiállítás minden belépõ számára ingye- ugyanakkor a már jelen lévõ mobilcégek – az IEEE gyorsított ütemben készíti, nes és minden nap 10–17 óráig tart nyitva. megkezdték a felkészülést a majdani megjelenése 2004 végére várható.  http://www.sulinet.hu/tart/cikk/ szolgáltatások beindításához.  http://www.bosswg.org nd/0/16191/1

8 Linuxvilág Hír-lelõ

Az EU a szabadalmak ellen Megújuló PCMCIA Az Európa Parlament a számítástech- A PCMCIA kereskedelmi szövetség hi- nika jövõjét illetõen fontos döntést vatalosan is megjelentette a fõleg mobil hozott szeptember 24-én: az Európai eszközökben használatos PCMCIA, pon- Unióban a jövõben alapvetõen nem tosabban immár ExpressCard szabvány engedik a programokban megvalósított legújabb változatát. Az új szabvány megoldások levédését. Az eredeti terve- alapján vékonyabb, könnyebb, gyorsabb zet alapján a programgyártók viszony- kártyák illeszthetõk a mobilgépekhez. lag szabad kezet kaptak volna a külön- Az új kártyák valójában csak formájuk- féle szabadalmak bejegyzéséhez, ezzel ban jelentenek újdonságot, illesztõfelü- gátolva, hogy mások is hasonló meg- letükben oldásokat készítsenek. A tervezet nagy kevésbé. felháborodást váltott ki, hiszen a kisebb A szövetség cégeknek nincs elég erõforrásuk tagjai úgy ahhoz, hogy szabadalmaikat kivétel határoztak, nélkül bejegyeztessék, az ingyenes nem alkot- programok készítõi pedig legfeljebb nak teljesen

zsebbõl fedezhették volna a költsé- új illesztést, © Kiskapu Kft. Minden jog fenntartva geket. Az eredetileg beterjesztett javas- inkább két nagysebességû buszt hasz- latot nem kevesebb, mint kilencven nálnak fel: a PCI Expresst és az USB módosító indítvánnyal változtatták 2.0-t. Mivel a legújabb noteszgépek már meg, ennek eredményeként a szigorú most is mindkettõt támogatják, az Exp- amerikainál sokkal lazább szabályozás ressCard kártyákra való áttérés viszony- jött létre, amely maguknak a program- lag fájdalommentesen végrehajtható. termékeknek a szabadalmazását nem ExpressCard kártyát kétféle változatban teszi lehetõvé. vásárolhatunk majd. A kártyák vastag-  http://www.europarl.eu.int sága mindkét esetben 5 mm, hosszúsága 75 mm, illesztõcsatlakozása 34 mm lesz, Okosodó vezeték nélküli hálózatok ám az egyik változat szerinti kártyák Az Atheros bemutatta negyedik gene- 54 mm-re szélesednek ki – az öblösö- rációs WLAN-lapkáinak elsõ példányait. désre apró merevlemezes meghajtók Az új, a korábbiaknál érzékenyebb lap- korongjainak elhelyezése, illetve a kár- kák révén megkétszerezhetõ a vezeték tyaolvasó eszközök helyigénye miatt nélküli hálózatokkal áthidalható távol- van szükség. ság, és a korábbi A PCMCIA elnevezéssel (Personal eszközökhöz Computer Memory Card Industry képest mintegy Association) eredetileg kisméretû me- hatvan száza- móriakártyákat illettek. A szabványt lékkal csökken- hamarosan módosították, így modeme- hetõ az energia- ket, hálózati kártyákat és egyéb, nem fogyasztás is. memória jellegû eszközöket is lehetett Sokkal érdeke- ilyen felületen keresztül a gépekhez sebb azonban illeszteni. A név hamarosan PC-kártyára a lapkák két különleges szolgáltatása, a változott, hangsúlyozva, hogy ezek az Wake-on-Wireless és a Wake-on-Theft. eszközök többé nem csak adattárolásra Az elõbbi révén az elsõsorban vállalati használhatók. Akkoriban a kártyák még környezetekben használatos felügyeleti a jó öreg ISA buszt használták, majd megoldások terjeszthetõk ki a vezeték amikor ezt a PCI busz váltotta fel, az nélküli eszközökre is, míg az utóbbi le- elnevezés ismét módosult: ettõl kezdve hetõvé teszi a hordozható eszközöknek CardBus kártyákat vásárolhattunk. a vállalati hálózatból történõ engedély A legújabb nemzedék, az ExpressCard nélküli eltávolításának az észlelését, akár tehát csak késõi leszármazottja a az adott mobilgép kikapcsolt állapota PCMCIA-nak, ám az elnevezés bizonyá- mellett is. Az Atheros új eszközei – lega- ra sokáig élni fog a köztudatban. lábbis új szolgáltatásaikat tekintve – ter-  http://www.pcmcia.org mészetesen nem képesek együttmûköd- ni a korábbi készülékekkel, így használa- tukhoz a hozzáférési pontok cseréjére Medgyesi Zoltán is szükség lesz. A cég lapkáira épülõ ([email protected]) termékek várhatóan hamarosan több A Linuxvilág hírszerkesztõje. nagy gyártó – D-Link, Linksys, SMC és Szabadidejét legszívesebben mások – kínálatában is megjelennek. a barátnõjével tölti, szeret  http://www.atheros.com autózni és bográcsban fõzni.

www.linuxvilag.hu 2003. november 9 Láttuk-hallottuk

Az SCO-s botrány kronológiája

A Linuxvilág októberi számának 70. oldalán szer- • Törvénytelen lehet a Linux használata kesztõi figyelmetlenségbõl egy cikket közöltünk Az SCO Group bejelentésében figyelmeztette a SCO Linux 4 címmel. Ennek orvoslására a mostani Linux-felhasználókat, hogy jogi kérdéseket vethet fel, lapszámban az SCO pereskedésének hátterét és amennyiben továbbra is folytatják a nyílt forrású állomásait vesszük sorra. operációs rendszer használatát. Az SCO szerint ugyanis a Linux számos összetevõje a cég által 2002. augusztus szabadalmaztatott eljárást valósít meg, vagy egye- A Caldera nevet változat nesen az õ Unix-változatukból származó kódot A Caldera International Inc. bejelentette, hogy a részvé- hasznosít engedély nélkül. nyesek kívánságának megfelelõen a nevét The SCO • Linus Torvalds sejti, hogy miért függesztette Group (SCO)-ra változtatja. A Caldera OpenLinux követ- fel Linux-eladásait az SCO Group kezõ változata már az SCO Linux 4.0 nevet fogja viselni. Az ok valószínûleg az lehet, hogy amíg õk maguk is A bejáratott márkanévhez, a két évvel ezelõtt megvásá- terjesztik a Linuxot, addig rájuk is vonatkoznak a rolt SCO-hoz nyúl (SCO OpenServer és SCO UnixWare), Linux-rendszereket felépítõ programok legtöbbjéhez

© Kiskapu Kft. Minden jog fenntartva amely már több mint két évtizede van a piacon. csatolt GNU GPL szerzõdés feltételei, a GPL-ben 2003. március pedig egyebek közt az is szerepel, hogy a „vevõk” Feszültség a UnitedLinux-csoporton belül jogait a program kibocsátója nem korlátozhatja. • Az SCO Group, amely linuxos üzletén kívül az eredeti A UnitedLinux az SCO Group nélkül folytatja tovább? AT&T UNIX-hoz fûzõdõ jogok tulajdonosa és az SCO Az SCO megszüntette a UnitedLinux csoporttal való UNIX márkát továbbvivõ cég is, keresetet adott be az marketinges, üzletfejlesztési és pénzügyi együttmû- IBM ellen. Az SCO egymilliárd dollárt követel az óriás- ködését, és nem biztosít további erõforrásokat a cégtõl, mert szerinte az IBM megsértette a Unix techno- konzorcium számára, így kétségessé vált a cég lógia felhasználási szerzõdésének feltételeit, és lehetõvé további tagsága. • tette e módszerek Linuxba való átszivárgását. Online felhívásban támadják az SCO-t • A Microsoft megvásárolta a Unix felhasználási jogát 2003. április A Microsoft bejelentette, hogy licenceli az SCO Az SCO Group az IBM után a nagyobb Linux-terjesz- Grouptól a Unix operációs rendszerrel kapcsolatos tõkkel is el szeretne számolni technológiákat, szabadalmakat, valamint hozzáférést Egy áprilisban közzétett interjúban az SCO Group kap a forráskódhoz is. (korábban Caldera International) elnök–vezérigazgatója, • A Sun védett, a HP és a Red Hat nem Darl McBride elmondta, hogy amennyiben a bíróság Újabb, a Linuxokban érdekelt vállalatok adtak hangot elõtt is sikerül érvényt szerezniük az IBM-mel szembeni az ügyben, és úgy tûnik, a nagyok egy része az SCO követeléseiknek, benyújtják a számlát a kereskedelmi mellé áll (de legalábbis nem az IBM-hez csatlakozik). Linux-változatok piacát csaknem teljesen lefedõ két cégnek: a Red Hatnek, illetve a SuSE-nek is. 2003. június Jogtalan az SCO Linux ellenes eljárása? 2003. május Újabb gigász a harcban… • A SCO szerint a Linux-rendszermag tiszta, de a SuSE A Novell levelet küldött az SCO számára – ebben és a Red Hat „bûnös” szereplõ pontos kérdéseire pontos választ vár. A szintén A SCO-Caldera munkatársa, Chris Sontag érdekes Unix-jogokkal rendelkezõ cég ugyanis arra szólította fel nyilatkozatot adott a MozillaQuest.com-nak, amelyben „kollégáját”, hogy nevezze meg, mely Unix-forráskódok kifejtette, hogy a SCO a Linux-rendszermagban nem kerültek át a Linuxba. talált SCO-tulajdonú kódot, de a német SuSE és a pi- • Betyárokat toboroznak az SCO Group ellen ros kalapos Red Hat jobb, ha elkezd ügyvédre gyûjteni. Raymond olyan Unix-hackerek jelentkezését várja, • SCO: Unix-kód került a Linuxba akik munkájuk során már hozzáfértek valamelyik • UnixWare-kódrészek a Linux-rendszermagban? jogvédett Unix binárisain és dokumentációján kívül Darl McBride szerint Unix-kódsorok kerültek a Linux a rendszer forráskódjához úgy, hogy nem kellett szívébe, magába a rendszermagba. Ezek a kódok aláírniuk harmadik felet kizáró titoktartási szerzõdést részben módosítás nélkül, részben módosításokkal (non-disclosure agreement, NDA). álcázva szerepelnek a magban. • Az SCO-t kiengesztelné, ha az IBM felvásárolná McBride elutasított minden olyan kérdést, amely a céget… a részletekre utalt. Az állítólagosan beépített kódré- Az SCO elnök-vezérigazgatója a múlt héten megerõ- szekrõl csak ennyit mondott: „némelyikük néhány sítette, hogy amennyiben példának okáért az IBM évvel ezelõtti kódrész, de vannak újak is és – tette felvásárolná a céget, rövid úton véget érhetne a hozzá – a másolás mértéke nem kicsi.” Linux ellen indított hadmûvelet. • Internetes támadás bénította meg a Linuxot • A kényes rendszereknél ne használjunk Linuxot?! kódlopással vádoló SCO weboldalát. A neves Gartner elemzõcég azt javasolja, hogy a

10 Linuxvilág Láttuk-hallottuk

«

fontos rendszerek esetében a cégek minimalizálják processzorszámtól függõen alakul az alábbiak szerint: a Linux használatát az SCO Group indította jogi fele- 1 processzor 699 dollár lõsséget firtató eljárás bizonytalan kimenete miatt. 2 processzor 1149 dollár • Az SCO Group Linux-ellenes kampánya saját 4 processzor 2499 dollár weboldalának átmeneti bezárásához vezetett 8 processzor 4999 dollár • Péntek 13: az IBM péntek éjfélig kapott haladékot Minden további processzor 749 dollár. • Linux-forráskód az SCO Group Unix-változatában? • Az IBM viszontkereseteket nyújtott be Nyílt forráskódú programokkal foglalkozó fejlesztõk az SCO Group ellen egy csoportja szerint elõfordulhat, hogy az SCO • A Red Hat szerint az SCO fel fogja adni Group megsértette a Linux-rendszerek számos alko- Minden valószínûség szerint idõ elõtt vissza fog lépni tóelemére vonatkozó GNU GPL felhasználási szerzõ- az IBM ellen benyújtott, mostanra már hárommilliár- dés feltételeit azzal, hogy Linux-forráskódot használt dosra duzzadt keresetétõl az SCO – állítja Mark fel az SCO Unix Linux Kernel Personality (LKP) réte- Webbink, a Red Hat elnökhelyettese. Webbink szerint

gében, és a kódmódosításait nem hozta nyilvános- az SCO stratégiája arra utal, hogy a cég nem fogja © Kiskapu Kft. Minden jog fenntartva ságra, illetve nem tüntette fel a megfelelõ helyen a megvárni, amíg bírósági döntés születik az ügyben. vonatkozó szerzõi jogi adatokat. 2003. szeptember • Elveszítheti Unix-felhasználási szerzõdését az IBM • A Red Hat elindította az Open Source Now alapítványt • A jogászok szerint az SCO az esélyesebb… Augusztus elején a Red Hat azt ígérte, hogy egy • Perrel fenyegette meg az SCO-t egy Linux-rend- alapítványt hoz létre, amelynek a célja az lesz, hogy szermag-fejlesztõ megvédje az nyílt forrású programfejlesztéseket és • SCO: elsõként a vezetõség száll ki? a Nyílt Forrás Közösségét a SCO támadásától. • Egy névtelen felhasználó által beküldött híradás • A hatvanas évekbõl származó kódrészletekkel szerint ( http://newsvac.newsforge.com/ próbálja hitelesíteni vádjait az SCO Group. article.pl?sid=03/06/09/139257) az SCO-csoport • Fizetnie kell a SCO-nak egyik alelnöke a hónap elején megszabadult az ösz- Megszületett az elsõ bírósági döntés, amelynek szes általa birtokolt SCO-részvénytõl (15 000 darab- értelmében a SCO-t arra kötelezte a bíróság, hogy tól, egyenként 6 dollár értékben). Annak fényében, kártérítést fizessen valótlan állításai miatt, miszerint hogy az SCO mindenhol azt híreszteli, hogy meg a Linuxban lopott System V-kód van. fogja nyerni az IBM ellen indított egymilliárd dolláros • Az IBM új vádja: az SCO szerzõi jogot sértett kártérítési pert, ez igencsak elgondolkodtató. A kék óriás kiszélesítette a frontot az SCO ellen • Az SCO szerint törvénytelen az IBM AIX további indított ellentámadásában, miután csütörtökön használata beadott újabb keresetében már az IBM szerzõi • Linust is perli az SCO jogainak elbitorlásával vádolta meg a céget. • Már hárommilliárd dollár a jogtalanul „felturbózott” Linuxok ára 2003. október • Az SCO szerint az IBM úgy tette a Linuxok számára • A SCO már az SGI-t támadja elérhetõvé a csoporttól licencelt Unix- Egyes hírek szerint az SGI figyelmeztetést kapott technológiákat, hogy nem fizette meg azok után a a SCO-tól, amelyben az áll, hogy a SCO megvonni jogdíjakat. Márciusi egymilliárd dolláros kárigényét készül a Silicon Graphicstól a Unix System V fel- az SCO hárommilliárdra növelte. használási jogát. Hogy mi alapon teszi ezt? Szerinte • Linux-licencprogramon dolgozik az SCO az SGI megsértette a két cég közötti szerzõdést. 2003. július Kíváncsian várjuk, kik lesznek a következõk. Gates: Microsofttól „kölcsönzött” elemeket is tartalmaz Források a Linux  http://www.index.hu  2003. augusztus http://www.terminal.hu  http://www.hwsw.hu • A Red Hat perli az SCO-t  http://www.hup.hu A vezetõ Linux-cég keresetet adott be az SCO Group  http://www.linux.hu ellen, mert a bírósággal akarja kimondatni, hogy a  http://www.prog.hu technológiái nem sértenek SCO szellemi tulajdont, ugyanakkor kártérítést követel az SCO „tisztesség- telen és megtévesztõ” gyakorlata miatt. Csontos Gyula • Az SCO megjelentette felhasználási szerzõdésének ([email protected]) feltételeit A Linuxvilág szakmai és Egy munkaállomás felhasználási szerzõdésének CD-szerkesztõje. Szabadidejében költsége 199 dollár. szívesen mászik hegyet és kerékpározik. A kiszolgáló felhasználási szerzõdésének költsége a

www.linuxvilag.hu 2003. november 11 Láttuk-hallottuk

GNU/Linux Szakmai Konferencia

Egyesületünk már ötödik alkalommal rendezi meg megjelenésének idõpontjában a konferencia honlapján szokásos éves szakmai rendezvényét. A helyszín ismét ( http://konf2003.linux.hu/) már megtekinthetõ lesz. Budapest, választásunk most a Hotel Novotel Budapest Mivel mostanra elfogytak az ingyenes, azaz a támogatott Centrumra esett (Budapest, VIII., Rákóczi út 43–45.). belépõk, felhívjuk kedves leendõ vendégeink figyelmét Idõpont: 2003. november 08. 10–18 óráig az üzleti belépõkre. Az ilyen belépõvel érkezõ vendégeink Regisztráció: reggel 9 órától a következõ szolgáltatásainkat vehetik igénybe: Terveink szerint 400 támogatott és 100 üzleti belépõs • a konferenciakiadvány egy példánya, látogatóval számolhatunk. Az üzleti látogatók létszáma • az összes elõadás bemutatóinak kinyomtatott, szükség esetén kis mértékben emelhetõ. A rendezvény egybefûzött példánya, fõ támogatója a KonzumBank Rt., képviselõi részletesen • a konferencia logójával ellátott, galléros póló, beszámolnak majd a Linux bankjukban történõ sikeres • névre szóló kitûzõ, bevezetésének folyamatáról. • a büfé ingyenes használata (kávé, üdítõ, sütemény), Aranyszintû támogatóink: az IBM, az ORACLE és a SUN. • üzleti ebéd a hotel éttermében, E cégek mindegyike 1–1 hangsúlyozottan szakmai tartal- • reklámanyagok, jegyzettömb, toll, © Kiskapu Kft. Minden jog fenntartva mú elõadással fog a konferencián megjelenni. Ezüstszin- • és a konferencia zárásakor értékes ajándékot tû támogatóink: a Kiskapu Kft., az LSC Kft., a Matáv és sorsolunk ki az üzleti belépõt igénybe vevõk között. az ULX Kft. Bronzfokozatú támogatóink: a Balabit Kft., Üzleti résztvevõinknek érvényes, visszaigazolt regiszt- a Direkt Kft., és a Mission Critical Linux Kft. Fõ média- ráció után átutalásos számlát küld az LME, nyolcnapos támogatónk a ComputerWorld Számítástechnika, fizetési határidõvel. Ajánlott az elõzetes regisztráció médiatámogatónk a PRIM. a  http://konf2003.linux.hu/registration.php oldalon, A nap folyamán ezüst- és bronzfokozatú támogatóink ugyanis a helyszínen kizárólag üzleti belépõ vásárolható. kiállítói standjukon Linux vonatkozású termékek és Nemzeti Szabad Szoftver Stratégia kiadványok széles skálájával jelentkeznek. Várhatóan – MITS Központi Kiemelt Program négy helyszínen öt idõpontban összesen 16 elõadás Szervác Attila, az LME egyik legaktívabb tagja jelenti: kerül megrendezésre az alábbi témákban: az Informatikai és Hírközlési Minisztérium és az Infor- Bálint Sándor: Linux és a Common Criteria mációs Társadalom Koordinációs Tárcaközi Bizottsága Baráth Gábor: Megjelenésfüggetlen dokumentáció megkezdte a Magyar Információs Társadalom Stratégia készítése szabad szoftverekkel végrehajtásával kapcsolatos koordinációs munkáját. Bodnár Csaba: openMosix: Live free() or die() Ennek keretében megindult a Központi Kiemelt Progra- Bodnár Csaba: Mitõl megy a villamos, avagy a mok programfüzeteinek a kidolgozása, amely a MITS HA-telepekben használt technológiák fõ irányait fedi le. Deim Ágoston: Különleges levelezõkiszolgálók A MITS beavatkozási területeinek két fontos iránya a Deim Ágoston: Hálózatfelügyeleti megoldások közcélú, közhasznú adatok, szabványok és a program- Linux-alapon eszközök biztosítása; valamint a hozzáférés, illetve elérés Dr. Mlinarics József: Hazai pályázatok és a magyar fejlesztése. Ez az a két terület, ahol alapvetõ szerepet részvételi lehetõségek az EU programjaiban szán a Szabad Szoftvereknek, így a programfüzetek Fejõs Tamás: Csoportmunka, Együttmûködés, egyik Kiemelt Központú Programja a Nemzeti Szabad Projekttámogatás linuxos eszközökkel Szoftver Stratégia. Kabai József: Az SQL-ledger Rendkívül megfeszített munka után a Stratégia legfon- Kadlecsik József: Linux alapú tûzfalak Gbit-es tosabb pontjait 2003. október 15-én vitatta meg a prog- környezetben ramfüzeteket összeállító Információs Társadalom- és Keszei Csaba: Biztonságos hálózati elérés vezeték Trendkutató Központ (ITTK). Ezzel kezdetét vette a Nem- nélküli kapcsolat felett zeti Szabad Szoftver Stratégia élete, ez fogja eldönteni, László Gábor: Nyílt forráskódú szoftverek és a kormány- hogy a következõ három évben milyen ütemben lehet zatok – Egy kutatás tapasztalatai kidolgozni és megvalósítani egy szabad, demokratikus, Nagy Bence: Scribus – DTP Linux alatt az állampolgárok alapvetõ jogait, és a személyiségi Nemes Dániel: A tûzfalon túl – A kéretlen levelek jogokat teljes mértékben tiszteletben tartó, gazdaságilag szûrésétõl a teljes tartalomszûrésig erõs információs társadalmat, amely az Európai Németh László: A Szószablya projekt Modellnek megfelelõen szabad programokra épül. Noll János: Az OpenOffice.org múltja és jövõje Tomka Gergely: Információs forradalom Tóth Sándor: Tartalomkezelõ Rendszer(ek) TYPO3 Gibizer Tibor ([email protected]) Verók István: FSRv2 <> : Fordítást Segítõ Rendszer (v2) Újságíró, immár nyolc éve a Linux Vomberg István: Felhasználói programok fejlesztése elkötelezett híve. Imádja a kutyákat, Gnome/GTK környezetben a Glade fejlesztõrendszer a kerékpározást és az autós csavargást. segítségével A végleges elõadások és az idõbeosztás a magazin

12 Linuxvilág Láttuk-hallottuk

Fsf.hu események

Tavaly az olvasók már megszokhatták, hogy az FSF.hu Alapítvány kisebb-nagyobb bejelentésekkel, fordítóhétvégékkel tûnt fel a különbözõ médiumok- ban. A Linuxvilág segítségével a szabad programok iránt érdeklõdõket ezentúl havonta szeretnénk tájé- koztatni a fontosabb eseményekrõl. Azok számára, akik még nem ismerik az FSF.hu Alapít- ványt, elmondom, hogy tavalyi év közepe táján egy baráti társaságból alakult ki, azzal a célkitûzéssel, hogy a lehetõségeinkhez mérten a szabad programok magyar- országi helyzetét megpróbáljuk elõmozdítani. Mivel hiva- talosan csak majd egy évre rá jegyezték be az alapít- ványt a budapesti bíróságon, elmondhatjuk, hogy ez a

szervezet még igen fiatal. Nem kapkodtuk el a dolgokat, © Kiskapu Kft. Minden jog fenntartva aminek a legfõbb oka az volt, hogy nem szerettünk volna egy újabb civil szervezetet csupán nyúlfarknyi idõre összedobni, hanem egy igazán ütõképes és összeszokott csapatot akartunk összekovácsolni, akiknek a bírósági papír csupán kötelezõ formaság. A csapat rohamosan bõvült az elhíresült OpenOffice.org három napos fordító- hétvégén és a késõbbi Mozilla- és OpenOffice.org-lektorá- lópartikon. Ma már számtalan közösségi munkát végzünk, amelyek középpontjában a szabad programok állnak: • Fordítási, lektorálási munkák: az FSF.hu Alapítvány között véghez tudunk több teljes fordító- és lektorálóhétvégét szervezett, vinni. Eddigi sikerein- amelyeknek gyümölcseként az OpenOffice.org és a ket aktivistáinknak kö- Mozilla is magyar köntösbe bújt. szönhetjülk, akik töret- • Országjáró felvilágosító kampány a szabad progra- len kedvvel viszik elõre mokról: idén kezdtünk – eleinte a BSA agresszív a szabad programok kampányára való válaszként – ellátogatni az olyan ügyét. Aktivista bárki megyékbe, településekre, ahol az elõadásainkat igé- lehet, aki eljön fordí- nyelték. Mára ez olyannyira kinõtte magát, hogy tani vagy bármilyen jelenleg már egyetemek, fõiskolák, teleházak hívnak más módon segíti az minket elõadni. Ebben az évben Egerben, Veszprém- FSF.hu munkáját, ezzel ben, Békéscsabán, Hajdúnánáson és Sopron városá- a szabad programok ismertségét és népszerûségét. ban jártunk. Jelenleg a csapat Erdélybe (Kolozsvárra) készül, ahol a Protestáns Teológiai Intézet diákjai hall- Kapcsolódó címek gathatják meg elõadásainkat az alapoktól az áttérési Fordítások nehézségekig. Az elõadások minden esetben ingye-  http://mozilla.fsf.hu nesek, ugyanis adományokból finanszírozzuk õket.  http://openoffice.fsf.hu • A szabad programok hívõi számára szervezett kirándu- Szabad Szoftver Kampánykörút lások: ez idáig három alkalommal mentünk kirándulni,  http://www.fsf.hu/index.php/Roadshow ezek kifejezetten a szabad programok barátainak let- Kirándulások tek meghirdetve, azzal a nem titkolt szándékkal, hogy  http://www.fsf.hu/index.php/Kirandulas a jelentkezõket a természet lágy ölén megismertessük Magyar Linux Dokumentációs projekt egymással.  http://tldp.fsf.hu/ • Magyar Linux Dokumentációs projekt: a tldp Támogasd te is a munkánkat! magyarra fordítását végzõ csapat rendületlen erõvel  http://www.fsf.hu/index.php/SegitsegHogyan dolgozik rajta, hogy az informatikával foglalkozó szakemberek magyarul is hozzáférhessenek ehhez a kimeríthetetlen tudásanyaghoz. Varga S. Csaba ([email protected]) • FSF.hu-hírlevél: a visszajelzések alapján elindítot- Az 1.1-es Slackware óta linuxozik. tunk egy olyan havi hírlevelet, amely a fenti esemé- Kedvtelései közé tartozik a fotózás és nyekrõl számol be részletesen. a Linux telepítése PDA-kra. Legszívesebben a Gerecsében túrázik Fiatal szervezetrõl lévén szó, a jelmondatunk az, hogy a barátaival. csak annyit vállalunk, amennyit minden körülmények

www.linuxvilag.hu 2003. november 13 Láttuk-hallottuk

A hónap szakmai tanácsai

Rendszerindításkor hiányzik az init! szégyellnivaló, ha azt mondod: „Az adataimról van A Mandrake a következõ hibát jelzi a Linux indításakor: mentés, egy szót sem értek az fsck-ból és a betöltõ mount:error 22 mounting ext2 flags beállításaiból, inkább újratelepítek mindent!” Kernel panic:no init found. Jim Dennis, [email protected] Try passing init=option to kernel Helyi tartománynév? Már háromszor sikerült elindítanom a gépet, de ettõl Amikor kis otthoni hálózatot (Red Hat 9) építünk, amely- kezdve a rendszerindítás sikertelen, és a fenti üzenetet nek az egyetlen kapcsolata az internettel egy tárcsázós kapom. Mi a teendõ? PPP-kapcsolat, mi a legjobb megoldás a tartománynév Devi, [email protected] választására, hogy az ne ütközzön valamilyen bejegyzett A Linux-rendszermag befûzi a gyökérfájlrendszert, és tartománynévvel, amikor az internetre csatlakozunk? init A honlapján megpróbálja futtatni az programot, amely általá- Van valamilyen szabványos tartománynév, ami olyan, számtalan gond megoldá- ban a /sbin könyvtárban csücsül. A rendszermag forrá- mint a 127.0.0.1-hez tartozó helyi gépnév? sához találhattok további sából kiolvashatod, hogy melyik 3–4 másik helyen Steve Cavender, [email protected] keresi még a Linux az init nevû programot. A betöltõ segítséget. A Sunsite Nincs szükséged névre, az internetkapcsolat enélkül parancssorában a teljes elérési úttal te is megadhatod tüköroldalait, a gyakori is mûködni fog. Ha tényleg szeretnél tartománynevet, a rendszermagnak az elõször elindítandó programot kérdéseket és az egyéb jegyeztess be egyet. (például init=/bin/sh). Ezt próbálja a hibaüzenet útmutatásokat a Usman Ansari, [email protected] www.linuxjournal.com második része közölni veled. Felvetõdik a kérdés, init .test honlapon olvashatjátok el. hogy miért nem találja a rendszermag az Az RFC 2606 kísérleti célokra tartja fenn a felsõ .test A rovatban közzétett programot? A legvalószínûbb ok az lehet, hogy nem szintû tartományt. Az interneten sohasem fognak válaszokat Linux-szakértõk a gyökérfájlrendszert fûzöd be, hanem egy másikat. végzõdésû tartománynevet használni. A másik lehetõ- kis csapata készítette el. Ha a rendszerindításkor egy olyan eszköznevet (például ség, hogyha nem akarsz fizetni a tartományért, megké- root=/dev/hda6 További kérdéseiteket ) adsz át a rendszermagnak, red az egyik, bejegyzett tartománynévvel rendelkezõ szívesen fogadják amelyen egy érvényes fájlrendszer van, de nincs rajta barátodat, hogy adjon neked egy altartományt. Don Marti (angol nyelven) a a /sbin/init, akkor pontosan ezt a hibaüzenetet kapod. , [email protected] /dev www.linuxjournal.com/ Ha a könyvtár sincs rajta, akkor egy másik hiba- A Red Hat a localdomain tartományt használja Warning: Unable to open initial lj-issues/techsup.html üzenet is megjelenik: (a gép alapértelmezett neve localhost.localdomain). console. címen, ahol csak egy Ez nem végzetes hiba, talán ez is megjelent, Marc Merlin, [email protected] kérdõívet kell kitöltenetek, csak nem vetted észre. A minicom nem pppd de a [email protected] címre Amennyiben hibás gyökérfájlrendszert adsz meg, Gondjaim vannak a hálózatra való csatlakozással. levelet is írhattok. A levél amelyen olyan fájlrendszer található, amelyet a Linux A minicom programot használom, és PPP van beál- tárgyában szerepeljen nem támogat, másfajta hibaüzenetet kapsz: VFS Kernel panic. Unable to mount root. lítva (Red Hat 6.1 az operációs rendszerem). Amikor a a „BTS” kulcsszó. minicom Az is egy lehetõség, hogy a rendszerrel nincs semmi baj, programmal tárcsázom, a kapcsolat létrejön. csak véletlenül letörölted vagy átnevezted a /sbin/init Ezután a program nevet és jelszót kér, majd miután be- állományt vagy a /sbin könyvtárat, illetve a fájlrendszer írom õket, mindenféle karakter jelenik meg, de egy per- sérült, és nem érhetõ el a /sbin/init könyvtárbejegyzése cen belül a kapcsolat megszakad. Mit csinálok rosszul? vagy fájlleírója (inode). Chris, [email protected] Bármi is történt, indítsd el a rendszert a helyreállítólemez- Semmi rosszat nem tettél, csak nem a megfelelõ progra- rõl, esetleg egy rendszerindításra képes névjegykártyáról minicom  mot használtad a feladatra. A egy terminál- (BBC), amit például a http://www.lnx-bbc.org web- program, nem lehet vele PPP-kapcsolatot létesíteni, hogy helyrõl lehet letölteni. Égesd egy CD-re – általában név- a távoli hálózat ügyfelévé válj. A pppd programot kell jegykártya méretûre szokták, de a hagyományos is meg- erre használnod, amely minden bizonnyal része a terjesz- teszi. Indítsd a rendszert BBC-rõl vagy Tom Root/Boot  tésednek. Gondokat okozhat viszont az, hogy a Red Hat lemezérõl ( http://www.toms.net/rb), és minden fájl- 6.1 eléggé elavult. Lehet, hogy nem sikerül kapcsolódni az fsck rendszeren futtasd az -t. Ezután nézd végig õket, internetszolgáltatódhoz, ha túl régi pppd-t használsz. és állapítsd meg, hogy melyik a gyökérfájlrendszer. Majd Célszerû a pppd-nek egy újabb változatát telepíteni, vagy root= próbáld meg kézzel indítani a rendszert a és az az egész terjesztést frissíteni – amelyik kényelmesebb. init= értékeknek a betöltõnek (LILO vagy Grub) való Chad Robinson, [email protected] átadásával. Végül próbáld meg kijavítani a hibás bejegy- kpppd zést a /boot/grub/menu.lst (grub.conf) vagy a /etc/lilo.conf Próbáld ki a grafikus -t, vagy valami hasonlót. fájlban (feltéve, hogy ez okozta a gondot). Amikor a Esetleg nem ártana frissíteni a terjesztésedet is, ma már a rendszer a BBC vagy más helyreállítólemez segítségével Red Hat 9-nél tart a világ. Kellemes meglepetés fog érni. már felállt, jó ötlet megkérdezni magadtól, hogy nem Usman Ansari, [email protected] kellene-e menteni az adatokat ezekrõl a fájlrendszerekrõl. Linux Journal 2003. október, 114. szám A legrosszabb esetben újratelepíted a gépet. Nincs abban © Kiskapu Kft. Minden jog fenntartva

14 Linuxvilág Láttuk-hallottuk

Új termékek

Meteor Laptop része a beágyazott Linux-rend- PCS-620 vezeték nélküli A Sharp Actius MM10-en alapuló szermag, a Qtopia, a Jeode egykártyás számítógép Meteor hordozható számítógép JVM és az Opera. Az Octagon Systems új egykártyás mindössze 1 kg tömegû és másfél e-mail: [email protected], számítógépe vezeték nélküli elérést, centiméter vastag. A Meteor  http://www.metrowerks.com ethernetet, soros és ipari I/O-t tar- MM10-et elõre telepített Linuxszal talmaz, és Linuxot futtat. A kártya Magnia SG30 vezeték legfeljebb 512 MB SDRAM-ot tá- szállítják. A Linux támogatja a meg- nélküli kiszolgáló mogat, valamint a CompactFlash jelenítõt, a hangkártyát, az USB-t, a A Toshiba SG30 vezeték nélküli bõvítõhelyen keresztül legfeljebb PCMCIA-t, a vezeték nélküli hálózati kiszolgáló munkacsoportok számára 2 GB flashmemória csatlakoz- eszközt, a hálózatot stb. A gép teszi lehetõvé a gyors és egyszerû tatható hozzá. A PCS-620-ba kis 10,4"-os, aktív XGA TFT képer- fájl-, nyomtatómegosztást és inter- nyõvel van felszerelve, amely az fogyasztású 300 MHz-es Pentium X-et 1024×768-as felbontásban processzort, két 10/100BaseT futtatja. A grafikus kártya típusa ethernetkaput, négy soros kaput, RS-233/444/485-öt, CardBus bõví- SMI Lynx. További alkatrészadatok: netelérést. A Magniát kis- és köze- tõhelyet a vezeték nélküli, GPS 1000 MHz-es Crusoe processzor, pes vállalkozásoknak, illetve fiókiro- vagy más eszközök számára, két 512 KB L2-gyorsítótár, 256 MB dáknak ajánlják. A noteszgép méretû USB-kaput, AC97-megfelelõ hang- RAM, beépített 15 GB merevlemez, Magnia lehetõvé teszi az adatok vezérlõt, képcsöves és lapos kép- egy II-es típusú PCMCIA bõvítõhely megosztását az irodában és azon ernyõhöz való megjelenítõt (legfel- és két USB bõvítõhely. Az USB-böl- kívül. A gép képességei: internetát- jebb 1280×1024), párhuzamos csõ lehetõvé teszi, hogy az járó, nyomtatásvezérlõ, web gyors- hajlékonylemez és EIDE-kapukat, MM10-et kikapcsolt állapotban tárazása, tartalomszûrés, biztonsági valamint környezeti hõmérséklet- külsõ USB-s merevlemezként mentés lehetõsége, elektronikus érzékelõ áramkört építettek be. használjuk. Egy másik linuxos gép levelezés és távfelügyelet, valamint A CompactFlash nem igényel külön állományrendszerébe az MM10 me- 802.11b IEEE Wi-Fi. Három PCMCIA illesztõprogramot, és a legtöbb ope- revlemeze – például adategyeztetés bõvítõhely áll a felhasználó rendelke- rációs rendszerrel használható. céljából – befûzhetõ. A Meteorra zésére, támogatja a vezeték nélküli  http://www.octagonsystems.com EmperorLinux, Slackware vagy PC card formátumú hálózati kártyá- Mandrake telepíthetõ, de a Micro- kat. További jellemzõk: beépített QSA soft Windows XP is választható a vezeték nélküli elérési pont, Celeron A Trolltech új QSA (Qt Script for Linux mellé. A géphez egy hordtás- processzor 256 KB L2-gyorsítótárral, Applications) eszköztára lehetõvé ka, egy év támogatás és sok kiegé- 256 MB memória, 128 bites Wi-Fi- teszi a Qt-alkalmazások parancs- szítõ lehetõség jár (az USA-ban).  titkosítás, beállítható tûzfal és VPN, fájlokból történõ vezérlését. Pár http://www.emperorlinux.com legfeljebb 160 GB háttértár és két sort kell csak hozzáadni a Qt-alkal- OpenPDA Development 2,5"-os EIDE meghajtóhely. mazáshoz, és lehetségessé válik Studio  http://www.toshiba.com a kiterjesztése és a vezérlése. Az AMD és a Metrowerks közös A QSA négy összetevõbõl áll: SpamPlug munkája az OpenPDA Development a QSA SDK az alkalmazásokat A Mail-Filters.com Inc. SpamPlug Studio az AMD Alchemy Solutions a parancsfájlokból vezérlésre nevû terméke a kimenõ levélszemét DBAu1100-hoz, amely kis fogyasz- felkészítõ csomag. A Qt Script több ellen vethetõ be. A program a tású, nagy teljesítményû kézi felületen mûködõképes értelmezett SpamCure nevû, bejövõ levelekre számítógépek készítését teszi parancsnyelv. A QSA Workbench alkalmazható szûrõn alapul, és az lehetõvé. AZ OpenPDA Develop- a parancsfájlok készítését segítõ internet felé menõ levélforgalmat ment Studiónak a program, az környezet, végül pedig az Input figyeli meg. A levélszemetet eldobja Alchemy processzor, a memória Dialog Framework párbeszédablakok vagy késõbbi ellenõrzés végett és a többi alkatrész egyetlen kár- írásához való grafikus programozói visszatartja, míg a hasznos levelek tyára építve együtt alkotják a ré- felület. Ezzel a csomaggal a fejlesz- azonnal továbbítódnak. A SpamPlug szeit. A MIPS-megfelelõ processzor tõk már lefordított alkalmazásokat folyamatosan frissített levélsze- akár 500 MHz-es sebességgel is módosíthatnak, tesztelõprogramot métminta-adatbázist használ a képes mûködni 0,5 Watt fogyasz- készíthetnek az alkalmazáshoz, levélszemét felismerésére, így nõ tás mellett. Az OpenPDA prog- testreszabhatják azt, parancsfájlon a valószínûsége annak, hogy tény- ramja és vasa játékra, zene- és alapuló javítást tehetnek közzé a leg a szemetet dobja ki, és nem mozgóképlejátszásra, böngészésre már megjelent alkalmazáshoz stb. a hasznos üzeneteket. A SpamPlug és Java-alkalmazások futtatására telefon: 650-813-1676, gyorsan telepíthetõ a külön az alkalmas, de egy személyesadat-  http://www.trolltech.com erre a feladatra kijelölt kiszolgálóra kezelõ program is mellékelve van vagy a levélkiszolgálóra. hozzá. A csomagnak ugyancsak Linux Journal 2003, 113. szám © Kiskapu Kft. Minden jog fenntartva  http://www.mail-filters.com

www.linuxvilag.hu 2003. november 15 Láttuk-hallottuk

RSTA-MEP és a Linux-munkaállomás

Önmûködõen észleli az ellenséget a sötétben, Az árboc négy méter magas, ehhez adódik még a jármû és tájékoztatja a saját erõket annak helyérõl. magassága, így összesen öt méterre lehet kitolni. A jár- mûben három fõnyi személyzet utazik: a vezetõ, a pa- Nemrég fejeztük be a Linuxra épülõ Felderítõ, megfi- rancsnok és a megfigyelõkezelõ. A vezetõ szintén hasz- gyelõ és célbefogó küldetés felszereléscsomag nálni tudja az éjjellátó érzékelõket, hogy éjszaka, sötét- (Reconnaissance, Surveillance and Target Acquisition ben is tudjon vezetni és biztonsági okokból körbe tudjon Mission Equipment Package, azaz RSTA-MEP) munka- nézni. A parancsnok feladata a harcászati hálózat kap- állomásának a kifejlesztését. Írásunkban röviden bemu- csolatának fenntartása és a két másik kezelõ irányítása, tatjuk a teljes rendszert, majd a munkaállomást rész- valamint õ is hozzáfér az NightSight éjjellátó érzékelõk- letesebben is tárgyaljuk. höz. A megfigyelõkezelõ használja a Linux-munkaállo- A Raytheon RSTA-MEP programja módot ad a harctéri mást, amivel az árbocon lévõ érzékelõket és a hozzájuk helyzet gyors értékelésére, amit az egyesített fedélzeti tartozó beágyazott rendszereket kezeli. és nem fedélzeti érzékelõk által nyújtott valós idejû ada- Az RSTA-MEP rendszer az árbocra telepített érzékelõk- tok tesznek lehetõvé. Az érzékelõk és a programok fejlõ- bõl, a beágyazott számítógépekbõl és a Linuxot futtató

© Kiskapu Kft. Minden jog fenntartva dése lehetõvé teszi a széles területû keresésen (wide- PC-s munkaállomásból áll, és mindez egy H1 Hummer area-search – WAS) alapuló képalkotást és az önmû- terepjáróra lett telepítve. A részegységek az ábrán ködõ célészlelést (Automatic Target Detection – ATD), látható módon kapcsolódnak egymáshoz. valamint a támogatott célfelismerést (Aided Target Recognition – AiTR). Ezek a képességek a kezelõsze- A beágyazott oldal mélyzetet valós idejû adatokkal látják el, beleértve a A beágyazott számítógépek digitális jelfeldolgozó pro- cél helyzetét, osztályozását és elsõbbségének meghatá- cesszorok, amelyek az érzékelõk mechanikáját és elekt- rozását. Ezt az amerikai hadsereg harcászati hálózatával ronikáját vezérlik (például beirányozzák vagy lehûtik (US Army's Tactical Internet) kombinálva lehetõvé teszi a detektort), emellett a képfeldolgozásban is részt vesz- a kezelõk számára, hogy részt vegyenek a saját és az nek. Ezek VxWorksöt futtató PowerPC-kártyák, Micro- ellenséges erõkrõl alkotott átfogó hadmûveleti kép kiala- soft Windows NT-t és Sun Solarist futtató egykártyás gépek. A rajtuk futó alkalmazások között megtalálható a Force XXI Battle Command Brigade and Below (FBCB2), Látkép ami egy amerikai katonai digitális utasító- és irányító- rendszer, célkeresõ és azonosító, valamint képfeldolgozó és kapcsolattartó program is. A csomag tartalmaz egy Munkaállomás Üzemmód- Fordító GPS-vevõt, tehetetlenségi navigációs rendszert és digi- Beágyazott Grafikus felület modell rendszer tálistérkép-szolgáltatást. A beágyazott rendszerek opti- kai kábelen keresztül, ethernet és Virtual Interface (VI) protokoll segítségével tartják egymással a kapcsolatot. SFOV Videoátjáró választó Kapcsolódás a munkaállomáshoz A Linux-munkaállomás prototípusa egy már létezõ rend- szer utóda. Az eszményi eset az lett volna, ha munkaál- Mozgó- Kép- WAS-csík SFOV lomásunk pontosan beillett volna az elõzõ helyére. A VI kép darabkák és az optikai kábel használatára irányuló elsõ kísérleteink kudarcot vallottak. A beágyazott rendszerekkel foglal- kozó csoportunknak már tekintélyes tapasztalataik voltak a beszállítók együttmûködõ-képességérõl, vagyis az A munkaállomás optikai kábelt választva csupán azokra a beszállítókra számítógépes kításában. Ez a jármû egy technológiai bemutató eszköz, hagyatkozhattunk, akik VxWorks és Linux alatt mûködõ kapcsolatai és moduljai amely azt szemlélteti, hogy milyen új képességekkel kártyákat és meghajtóprogramokat egyaránt tudtak lehet felruházni a jelen és a jövõ felderítõ jármûveit. kínálni. Ezek közül egyet sem találtunk, aki a VI proto- A jármû jelenlegi kialakításában hõkép-elõállító, éjjellátó kollt támogatta volna. Második kísérletként megpróbál- berendezéssel van ellátva. Az elsõdleges érzékelõk az tunk lemezemulációt használni és annak a látszatát kel- árbocon egy nagy hatótávolságú elõrenézõ infravörös teni, hogy egy merevlemezt csatlakoztattunk az optikai érzékelõnek (Forward Looking Infrared – FLIR), egy iner- kábelre, így legalább ugyanazon az adathordozón belül ciális (tehetetlenségi) navigációs rendszernek (Inertial maradhattunk. Navigation System – INS) és egy helymeghatározó Az eredmény szintén nem volt kielégítõ, így áttértünk rendszernek (Global Positioning System – GPS) a gigabit ehternetre. Az ethernet tudná hordozni egyrészt vevõi, ezen felül számos Raytheon NighSight éjjellátó a videójelet az érzékelõktõl, másrészt a parancs- és infravörös érzékelõ van a jármûre erõsítve, hogy a állapotadatokat a munkaállomás és a beágyazott rend- kezelõszemélyzet többi tagja is figyelemmel tudja kísérni szerek között. Gigabit ethernet megoldás keresésekor a jármû közvetlen környékét. négy dolgot kell meghatároznunk: a csomagméretet,

16 Linuxvilág Láttuk-hallottuk

«

az átviteli közeget, az összekapcsolás módját és a háló- Bár a TCP lassabb, mint az UDP, megbízható, kijavítja zati csatolókártyát. az eldobott, kétszerezett vagy nem sorrendben érkezõ A hagyományos ethernet legnagyobb csomagmérete csomagok által okozott hibát. Szerettük volna a legjobb 1500 bájt. Az egyre inkább terjedõ gigabit ethernet videóminõséget elérni a lehetséges elektromágneses 9000 bájtnyi legnagyobb csomagméretet engedélyez, interferencia ellenére is, ezért úgy véltük, hogy a beépí- ezt nevezik „jumbo” csomagnak. A mi projektünkben a tett hibajavítás megléte alapvetõ. Ezenkívül az sem beágyazott oldal és a linuxos oldal közötti megfelelõség elhanyagolható, hogy így az utasító- és állapotadatok miatt a hagyományos csomagméret mellett döntöttünk. A következõ, amit meg kell fontolnunk, a média. A giga- bit ethernetkártyák két változatban kaphatók: réz- és optikai kábellel. A réz az elektromágneses interferenciára (EMI) érzékeny, míg az optikai kábel mechanikailag sérü- lékeny. Végül az ára miatt a rezet választottuk. Ha az

elektromágneses interferencia gondot okozna, bármikor © Kiskapu Kft. Minden jog fenntartva optikai kártyára lehet váltani a program módosítása nélkül. Azért is választottuk a rezet, mert könnyen tudtuk illeszteni laboratóriumunk meglévõ berendezéseihez. Meglévõ hálózatunk (a 10/100-as) is rézvezetékes volt. A harmadik szempont az összekapcsolás módja. A hely- zet nem sokat változott a 10/100-as ethernethez képest: vannak kapcsolók (switch), jelelosztók (hub) és átkötõ kábelek. A kapcsolók irányítják a forgalmat, amit így csak a címzett kap meg. Kezelik a különbözõ sebességû, egy- és kétirányú kapcsolatokat, és villogó fényekkel jelzik a mûködést, segítve a hibakeresést. A kapcsolók 1. kép hátulütõi az áruk, és hogy felügyelhetõ hálózati kapcso- is megbízhatók maradnak. Amikor a foglalat- (socket) Hummerre telepített lóra van szükség, ha csomagfigyelõt (packet sniffer) réteget kódoltuk hozzá, be kellett hangolnunk a foglalat RSTA-MEP rendszer kitolt szeretnénk használni. küldõ és fogadó átmeneti tárának méretét árboccal. Az érzékelõk A másik lehetõség a jelelosztók használata. Elõnyük, hogy (a setsockopt-ot használtuk a SOL_SOCKET az árboc tetején vannak, olcsóbbak, mint a kapcsolók, és nekik is vannak állapot- SO_RCVBUF és SO_SNDBUF kapcsolókkal), hogy a beágyazott rendszerek jelzõ lámpácskáik. A gond az, hogy eddig nem találkoz- az áteresztõképessége elég legyen a videó számára. hátul, a fehér dobozokban. tunk gigabit ethernetes jelelosztóval (csak kapcsolóval), Ezenkívül kikapcsoltuk a Nagle-algoritmust A munkaállomás ha pedig 10/100-as jelelosztót használunk, akkor fel kell (a setsockopt IPPROTO_TCP-vel és a számítógép a jármû belsejében található áldoznunk a sebességet. A jelelosztók ráadásul az összes TCP_NODELAY-jel), hogy csökkentsük a késleltetést csomagot minden vonalra elküldik, ami jó, ha meg akarjuk a munkaállomás és a beágyazott rendszer között, figyelni a csomagokat, de rossz, ha korlátozni akarjuk a amivel ez utóbbit érzékenyebbé tettük a munkaállomás- csatolón átfolyó forgalom mennyiségét. hoz csatlakoztatott vezérlõkarok által adott érzékelõ- A legegyszerûbb megoldás az átkötõkábel használata. irányzó parancsokra. Ez a legolcsóbb, nem igényel más eszközt és biztosak Munkaállomás-alkalmazói program lehetünk benne, hogy külsõ forrásból nem érkezik cso- Ez a munkaállomás-prototípus a Raytheon Tiger szimu- mag. Az is igaz viszont, hogy nincsenek villogó lámpács- látorból nõtte ki magát – a beágyazott oldallal ellentét- kák, nincs mód kívülrõl megfigyelni a csomagokat, és ben, amely az amerikai hadsereg fegyverek és rendsze- ha egy csatoló leáll (például újraindul a beágyazott gép), rek technikai kialakítását végzõ munkacsoport (Weapons akkor megáll a másik is. Systems Technical Architecture Working Group Végül a kapcsolók mellett döntöttünk, bár a kapcsolók – WSTAWG) által kidolgozott általános kezelõi környezet és átkötõkábelek közötti választás még mindig „vallási” (Common Operating Environment – COE) átültetése. vita tárgyát képezi. Szintén nagy gondot fordítottunk Bár mind a munkaállomás, mind a beágyazott oldal rend- a gigabit-kábelezésre. A profi módon elõállított CAT 5e szere üzenettovábbító alapú, ezek egymással nem mû- és CAT 6 kábelek használata elõnyösebb a házilag ködnek együtt. Ezért egy fordítómodult szükséges a készített kábeleknél. kettõ közé illeszteni. A késleltetés és a processzorterhe- A negyedik eldöntendõ kérdés a hálózati csatolókártya lés csökkentésére ez a fordítófolyamat (process) két választása. Ezek 32 vagy 64 bitesek lehetnek. A 64 bites szálra van szétválasztva, a Posix-szálak (threads) függ- kártyák jellemzõen jobb teljesítményt nyújtanak és ke- vénykönyvtárának a használatával. Az egyik szál a vésbé terhelik le a PCI-sín erõforrásait. Bár nem végez- beágyazott oldalon vár üzenetre, és azt lefordítva a tünk piackutatást az elérhetõ termékek körében, az Intel munkaállomás elemei által használt megosztott memó- Pro/1000 Server Adapterre esett a választásunk. riaterületre helyezi. A másik szál ugyaninnen veszi a A protokollok közül a TCP/IP mellett döntöttünk.

www.linuxvilag.hu 2003. november 17 Láttuk-hallottuk

«

beágyazott rendszereknek szóló üzeneteket, hogy fordí- oldalra, amely egy állapotjelentést ad vissza. Amennyi- tás után továbbítsa azok bemenetére. A fordítómunka ben az állapot eltér a kéréstõl, az üzemmódmodell két szálra osztásával és a program javításával (optimi- értesíti a kezelõfelületet, amely frissíti az elemet, hogy zations) a késleltetést a legkisebb értéken lehet tartani. a pillanatnyi állapotértéket mutassa. A videóátjátszó modul A harmadik tervezési nehézséget az egér nélküli környe- egy, csak ennek a zet iránti igény jelentette. A jármû mozgása és a tényle- feladatnak szentelt ges munkaasztal hiánya nehézzé teszi az egér, a track- külön gigabit ethernet ball vagy az érintõképernyõ használatát. Egy billentyûzet hálózati kapcsolaton rendelkezésre áll ugyan, de csekély mennyiségû adatbe- keresztül olvas. Megha- vitelre használatos. Ebbõl kifolyólag úgy terveztük, hogy tározza, hogy melyik a kezelõfelületet kézi vezérlõkarral lehessen kezelni. videóablakban kell Az egér nélküli módot a kezelõfelület korai változatában megjeleníteni a képet, kézi elembejárási útvonalak és gombnyomásesemények és oda továbbítja. hozzáadásával értük el. A vezérlõkaron lévõ sapkakapcsoló © Kiskapu Kft. Minden jog fenntartva A munkaállomáson (hat switch) mozgatása az XmProcessTraversal a kezelõfelület vezérlõ- hívásával változtatta az elem fókuszálást. A kiválasztó panelje a Builder's (Select) gomb megnyomása egy, az alábbihoz hasonló Xcessoryval lett létre- XEvent-et határozott meg és küldött el: 2. kép hozva. Három fõ szem- /* sending key press events */ A munkaállomás pont vezérelte a kialakítását: a korlátozott képernyõ- #include mozgó videomódban méret, a kész felület tükrözze a beágyazott oldal állapo- tát, valamint egér vagy hanyatt egér (trackball) helyett XKeyEvent ev; vezérlõkart (grip) lehessen használni. Window rootWin; Az elsõ fõ tervezési nehézség, amivel szembekerültünk, int x,y; a képernyõ területe volt. Egyetlen monitoron zajlik int root_x,root_y; minden megjelenítés, ezért csak a képernyõ alsó har- Window win; mada áll a kezelõfelület rendelkezésére. A rendszer üzemmódja és ennek az üzemmódnak a vezérlõelemei rootWin = RootWindowOfScreen tehát ebben a harmadban jelennek meg. A rendszernek (guiScreen); két fõ üzemmódja van: a WAS-mód és a hagyományos kameramód. WAS-módban az érzékelõ gyorsan pász- win = findPointerWindow(rootWin, tázza a kezelõ által meghatározott területet, miközben &x, &y, &root_x, &root_y); a vezérlõkarokkal ki lehet választani egy részt, amit szuper látómezõként (Super Field Of View – SFOV) ev.type = (long) KeyPress; lehet megjeleníteni. Kameramódban élõ videókép ev.send_event = True; látható és a vezérlõkarokkal lehet az érzékelõt mozgatni. ev.display = display; Egyik üzemmódban sincs szükség a másik mód vezérlõ- ev.window = win; elemeire, ezért két elemkészletet (widgets) terveztünk ev.root = rootWin; ugyanarra a képernyõterületre. A kezelõfelület-érzékelõ ev.subwindow = 0; üzemmód panelje a 2. és 3. képen látható. Amikor az ev.time = CurrentTime; egyik készletet használjuk, a másik el van rejtve. ev.x = 1; Egyéb szolgáltatások, mint például az önmûködõ ev.y = 1; célészlelõ program kezelõszervei, egy másik ablakban ev.x_root = 1; kaptak helyet, és a fõ kezelõfelületrõl egy gombnyo- ev.y_root = 1; mással elérhetõk. Ezek az ablakok a képmegjelenítõ ev.state = 0; terület fölé ugranak be. ev.same_screen = True; A képernyõterület szûkössége egy másik kérdést is felvet: szükség van a felhasználói utasításokra válaszoló ev.keycode = rendszer azonnali, látható visszajelzésére csakúgy, XKeysymToKeycode(display,XK_space); mint a beágyazott rendszer pillanatnyi állapotának jelzésére. Külön elemek helyett ugyanazokat alkalmaz- XSendEvent(display, window, True, tuk vezérlõ- és állapotjelzõ objektumokra. Amikor a KeyPressMask, (XEvent *)&ev); rendszer kezelõje használ egy elemet, a rendszer a kiadott parancsát önmûködõen visszajelzi a kezelõfelü- A kezelõfelület jelenlegi változatától eltérõen az elõzõ leten, közben az elem visszahívó kódja indításra kerül. változat mindössze egy topLevelShell-bõl állt, Ez a kért változással elküld egy üzenetet az üzemmód- amely csak egyszerû elemeket tartalmazott, például ilyen modellnek. Ez a kérés átkerül a beágyazott érzékelõ a PushButtons és a ToggleButtons. A jelenlegi

18 Linuxvilág Láttuk-hallottuk

«

kezelõfelületben több héj (felugró ablakok) és összetett könyvtárában ami ezt a technikát szemlélteti). Azért elemek találhatók, mint például az OptionMenus. választottuk az OpenGL-t a videóhoz, mert számos Az XmProcessTraversal egyszerû meghívása a lehetõséget kínál az adat feldolgozására és megjelení- fókusz megváltoztatására nem mûködik héjak között. tésére. A kép átméretezhetõ vagy elforgatható, ha Egy gombnyomást az OptionMenu-n elküldve a menü más tájolásban készült, felugrik, mindazonáltal egy második gomb megnyomása mint ahogy meg van nem választ ki egy újabb lehetõséget, és nem tünteti jelenítve. Az OpenGL el a menüt. számos primitívet Néhány jó tanács olvasóinknak – nem árt, ha az aláb- tartalmaz a szimbólumok biakról nem feledkezünk meg: képekre rajzolásához; a villogásmentes frissítés- 1. Az ablakkezelõ a fõnök. Amikor több héjjal akad hez képfeldolgozó képes- dolgunk, emlékezzünk rá, hogy az ablakkezelõk nem sége és kettõs átmeneti igazán adják át a fókuszt vagy bármilyen hasonló tárazása révén járul feladat vezérlését. hozzá. Az OpenGL hor- 2. Az elemhierarchia hatása: egy elemkészlet dozható és jól dokumen- csoportjában a bejárási út rendjét részben az tált, ráadásul a procesz- a sorrend határozza meg, ahogyan a kódban szorról egy csomó meg lettek adva (declared). munkát átirányíthatunk 3. Bánjunk óvatosan a színfalak mögötti kóddal! Nézzünk 3. kép a grafikus kártyára. egy RadioBox-ot, amely két ToggleButton A munkaállomás Az SFOV kiválasztója vezérli, hogy a WAS-csík mely gyermeket tartalmaz, ezek közül az A van kiválasztva. WAS-módban része kerüljön megjelenítésre az SFOV ablakban. Amikor egy, a B-t kiválasztó üzenet érkezik, a gyer- Ezenkívül azt is szabályozza, hogy a piros négyszög mek XmNset erõforrások értékeinek egyszerû felcse- a WAS-csík ablakán belül hova kerüljön kirajzolásra. rélése a képernyõn helyesnek látszik. A szülõelem A munkaállomás egy külön vezérlõ- és módválasztó eközben még mindig azt hiszi, hogy az A van kivá- modullal bír. Ahelyett, hogy a logikai egységek szét lasztva, ami nem várt Button mûködéshez vezethet. lennének szórva a rendszeren belül különbözõ modulok- Projektünk jelenlegi változatában egy külön folyamat ra, ebben a modulban koncentrálódnak. Ez a kialakítás foglalkozik a kézi vezérlõkarról érkezõ bemenettel, és a rendszer többi részét egyszerûbbé és könnyen újra fel- vezérli az egérmutatót – az XWarpPointer és az használhatóvá teszi. Ugyanakkor a módválasztó modul X-kiszolgáló XTest bõvítményének kombinációját nagyon összetett. A módmodellnek meg kell tudnia való- használva (lásd a Kapcsolódó címeket). A munkaállomás sítania mindazt az ismeretet, hogy miként hatnak egy- a beágyazott oldalról küldött adatokból létrehozott videó- másra az egységek és hogyan tükrözik a beágyazott jelet is megjelenít. A videóátviteli folyamat ezt egy fog- rendszer és a munkaállomás állapotát. Lehetõvé teszi lalatból olvassa ki és egy ablakba továbbítja. Négy ablak a munkaállomásnak, hogy az összegyûjtött adatokra van: mozgó videó, WAS, SFOV és képdarabok. alapozva engedélyezett akciókat végezzen, és hogy Mint már említettük, a mozgó videó az élõ képadat. a beágyazott oldalt hibák és a helyzet váratlan megvál- A WAS ablak képe egy összenyomott képcsík, ami egy tozása után kutatva megfigyelje. állandó területet gyorsan pásztázó érzékelõtõl érkezik. Milyen gyors az elég gyors? A WAS-csík jelrendszere többek között jelzi azokat a A munkaállomás az éppen valós idejû kategóriába esik: helyeket, amelyeken a célzó rendszer szerint célpontok a rendszer nem hibázik, ha valami késik. Mivel ez egy találhatók. Az SFOV egy több részletet mutató nagyobb emberi tényezõt is tartalmazó próbarendszer, amelynek nézet a WAS-csík egy részérõl, amit a kezelõ választhat a legtöbb idõkritikus összetevõje a beágyazott rendsze- ki. Ezen láthatók a célzó szimbólumok és adatok a digitá- rekben rejlik, csak olyan gyorsan kell futnia, hogy a ke- lis térképrõl. A képdarabok a terep azon részeit mutat- zelõ végre tudja hajtani a feladatokat. Ezért nem használ- ják, amelyeken a célzórendszer valami érdekeset talált. juk a valós idejû Linux-keretrendszerek egyikét sem, Ezeket megmutatja a kezelõnek értékelésre és jelenti ehelyett nagy teljesítményû alkatrészekkel oldottuk meg más, a jármûvön kívül lévõ rendszereknek. A 2. képen a feladatokat: SCSI merevlemezzel, elég memóriával, egy mozgó videómódban készített külsõ nézet látható a hogy kiküszöböljük a lapozást, és egy GeForce4 grafikus kezelõfelülettel, a videóablakkal és a WAS-csíkkal. kártyával a gyors OpenGL miatt, valamint két 2,4 GHz-es A 3. képen a rendszer WAS-módban van, látható rajta processzorral a Microwaytõl. a WAS-csík, az SFOV ablak, a kezelõfelület és egy kép- Egy korlát emelkedett a rendszer két része, a videó és az szeletablak. érzékelõ célzása elé. Az élõ videó RS-170 sebességgel A videót OpenGL-ben egy poligonon lévõ textúraként kerül betáplálásra a munkaállomásra, egy félképnyi kép- alakították ki, a videóból érkezõ adat erre a textúrára sor minden 1/60-ad másodpercben. Ezeket olyan gyor- kerül. Amikor a poligon képernyõre kerül, akkor a videó san kell összerakni, és megjeleníteni, hogy állandó se-

is látható (lásd a példakódot az 53. CD Magazin/RSTA © Kiskapu Kft. Minden jog fenntartva

www.linuxvilag.hu 2003. november 19 Láttuk-hallottuk

«

bességet lehessen elérni és fenntartani. Hogy ezt idõzítési adat a profileba. (Talán a profiler és az lehetõvé tegyük, biztosítottuk, hogy elegendõ hálózati XtAppAddTimeOut ugyanazt a jelet használták, és sávszélesség legyen a videójel szállítására és elégséges egymást zavarták?) A másik egyszerûsítési lehetõség, processzor- és grafikus teljesítmény a megjelenítés amire rájöttünk: a videóforráshoz a páros és a páratlan frissítésére. A monitor frissítését 60 Hz-re beállítva sorok – két kisebb helyett – egyetlen paranccsal helyben is voltunk (lásd az nVidia meghajtóprogramhoz történõ továbbítása a hálózaton. README.txt mellékelt fájlt, a legfrissebb a Elõnyök, kelepcék és következtetések  http://dowload.nvidia.com/XFree86_40/1.0-4194/ A Linux használata néhány gondot is okozott, például README címrõl tölthetõ le). nem találtunk olyan beszállítót, aki PCI Mezzanine kár- Az érzékelõ irányítása hasonló kihívást jelentett. Ennek tyát tudott volna szállítani PowerPC-hez VxWorks-meg- elég érzékenynek kell lennie a vezérlõkarokra, hogy a hajtóval, vagy PCI kártyákat Linux-meghajtóval, illetve kezelõ a cél elvesztése nélkül tudjon vele célozni. Míg aki kezelni tudta volna a VI protokollt. Végül el kellett a videó leginkább a sávszélességtõl függ, az érzékelõ vetnünk az optikai kábel használatának ötletét. irányítása a késletetésen múlik. Egy hosszú üzenetlánc

© Kiskapu Kft. Minden jog fenntartva Számos alkalommal viszont azt tapasztaltuk, hogy a késleltetéshez vezet. Például egy gombnyomás vagy a Linux használata elõnyt jelentett. Mivel a rendszert vezérlõkar-kezelõfelületrõl származó elfordulás parancs merevlemezrõl indítottuk, nem kellett EEPROM-ba eljut a vezérlõfolyamathoz, hogy megállapítsa, melyik égetni, mint a beágyazott rendszereknél. Amikor ott bemenet érvényes, majd továbbmegy a fordítóhoz, hogy EEPROM-ba kerül a kód, sokkal nehezebbé válik a EO formájú üzenet legyen belõle. Ezután keresztülhalad hibakeresés. Ezenkívül a Linux magfájlokat kínál a a gigabit ethernet hálózaton egy beágyazott folyamatba, hibakeresés segítésére, amit a VxWorks nem tesz meg. amely fogadja az üzenetet, majd továbbítja az OE-be és A Linux-munkaállomás jóval masszívabb felépítésû és a beágyazott rendszer kódjába, onnan a mûködtetõ szer- jobb képminõséget nyújt, mint elõdje. Végül a mûhely- kezetre kerül, végül az eredmény visszaérkezik a video- ben történõ összeállítás és az egységek kipróbálása adatfolyamba. A fordítófolyamatok két szálra választása könnyebb Linux alatt, mivel a kereskedelmi forgalom- és a teljes optimalizálással történõ fordítás (-Wall ban kapható PC-k jóval elterjedtebbek, mint a beágya- -ansi -O3 -ffast-math -mpentiumpro) zott PowerPC-k. Arra számítunk, hogy a jövõben a megtette a magáét. Linux, az X és az OpenGL-környezet teljesítménye és A gprof profilert használtuk, hogy megkeressük, rugalmassága egyre kifizetõdõbb lesz, ahogy több vannak-e kényes helyek a kódban (lásd a gprof módot és eszközt adunk prototípusunkhoz. információs oldalát). Itt a videókód profileozása közben komoly nehézségbe futottunk: amikor X-idõzítõt Linux Journal 2003. október, 114. szám használtunk (XtAppAddTimeOut), nem került  George Koharchik ([email protected]) KAPCSOLÓDÓ CÍMEK A Raytheon's Visualization és Simulation Lab (VSL) munkatársa, szabadidejében a biztosítótû mecha- BX  http://www.ics.com/products/bxpro nikáján elmélkedik.  Integrated Computer Solutions http://www.ics.com Quintelle Griggs  nVidia http://www.nvidia.com ([email protected])  Microway http://www.microway.com A Raytheon's VS munkatársa. Eric F. Johnson és Kevin Reichard Power Sonja Gross Programming...Motif; Management Information Source, ([email protected]) Inc. Második kiadás Version 1.2, 1993., New York. ISBN: 2001-tõl a Raytheon's VSL munkatársa, miután meg- 1-55828-319-6. szerezte baccalaureátusi fokozatát számítástechni- Raytheon  http://www.raytheon.com kából a Louisiana Tech Universityn.  NightSight http://www.raytheon.com/products/tiger Kathy Jones ([email protected]) Nem hivatalos VxWorks és Tornado GYK Programfejlesztõ a Raytheon's VSL-nél. Motif VAPS  http://www.xs4all.nl/~borkhuis/vxworks/vxfaq.html kezelõi felületeket és egyéb programeszközöket készít. A VxWorks és a Tornado a Wind River Systems termékei John Mellby ([email protected])  http://www.windriver.com A Raytheon's VSL munkatársa, virtuális szimuláció- VxWorks, illetve Tornado II GYK (különösen a 4.6-os rész val foglalkozik, rövid biográfiákat ír, és megméri a foglalatokról) a texasi napot a tavaszi napéjegyenlõség idején.  http://www.xs4all.nl/~borkhuis/vxworks/vxworks.html  WSTAWG weboldal http://wstawg.army.mil/index.asp Joe Osborne ([email protected]) XTest bõvítmények XFree86-hoz A Smiths Aerospace munkatársa a Michigan állam-  http://xfree86.org/pub/XFree86/4.2.0/doc/xtestlib.TXT beli Grand Rapidsben.

20 Linuxvilág Töprengõ

Egy nemzet programok nélkül: Linuxot Iraknak! Egy felelõtlen, korrupt kormány, a háborúk és a szankciók után Irakban nem létezik programipar, így a Linux tiszta lappal indulhat.

rak mostanáig a számítógépes prog- terén segítséget nyújthat az elsõ lépé- az utóbbi évtizedben nem változott ramok sötét középkorát élte, a ren- sek során. A helyzetet egy fehér a tanterv, és nem oktatnak alapvetõ delkezésre álló programok és a saját vászonhoz is hasonlíthatjuk, amit a számítástechnikai ismereteket sem. Ifejlesztések tekintetében is. Miközben legkülönfélébb színekkel boríthatunk Itt lehetõség nyílhat arra, hogy a Linux- a világ többi részében a programhasz- be, teljesen szabadon választva a rendszer alapjait ne egy másik rendszer- nálat és -fejlesztés óriási fejlõdésen használható színek közül. rõl való áttérés szemszögébõl mutassuk ment keresztül, Irak lema- be, de még csak nem is egy

radt. A háborús válságok és a új operációs rendszerként, © Kiskapu Kft. Minden jog fenntartva szankciók miatt a legnagyobb hanem olyan hatékony intézményeknek – a kor- operációs rendszerként, ami mányt is beleértve – nem volt lehetõvé teszi a választást, lehetõsége az igényeiknek még mielõtt a friss elmék leginkább megfelelõ megol- bezárkóznának egy másik dások felkutatására és beve- rendszerbe. Ez magasabb zetésére. Ehelyett a legelsõ szinten egyes fõiskolákra és ajánlat mellett döntöttek más intézményekre is igaz. – sajnos ez nem a Linux volt. Nagy munka vár ránk. A programok világában a Az új iraki Linux-felhasz- változások követhetetlenül nálói csoportnál az elsõdle- gyorsnak bizonyultak, külö- ges célunk egy Linux-okta- nösen az olyanok számára, tólabor és egy -könyvtár akiknek nem adatott meg alapítása. Felkértük a bag- az a háttér, ami a hatékony dadi Al Nahrain Egyetemet és sikeres programfejlesztés és a Bagdad Egyetemet, elõfeltétele. hogy lehetõséget biztosít- Az új iraki helyzetben vissza- sanak Linux-tanfolyamok tért a szerzõi jog intézménye, megtartására. Fontos iraki és a cégek hajlanak arra, köz- és magánintézmények hogy fellépjenek a jogosu- vezetõ informatikai szakem- latlan felhasználással szem- bereit hívjuk meg linuxos ben, vagy legalább megelõz- tanfolyamokra és szeminá- zék további burjánzását. riumokra. Amikor a résztve- Ez arra fogja ösztönözni az võk intézményei kialakítják iraki felhasználókat, hogy Linux-telepítési tervüket, a jogdíjas programokat más együtt fogunk mûködni megoldásokkal helyettesítsék, velük a leírások helyi válto- különösen azért, mivel itt a költségek Biztos vagyok benne, hogy megszám- zatának elkészítésében és a közösségi szerepe nyilvánvalóan jelentõs, mégha lálhatatlan jó ötlet vár megvalósításra, erõforrások megszervezésében, ide- nem is a legfontosabb szempont. amelyekkel bárki élete sok szempont- értve a levelezõlistákat és a terjesztések Noha manapság szinte lehetetlen szá- ból megkönnyíthetõ. Mivel infrastruk- tükrözését is. mítógépek nélkül élni, a korábbi iraki túráról beszélünk, az oktatás lehet Honlapunkon, a  http://linux-iraq.org- kormány hanyag és korrupt hozzáállása a legalkalmasabb hely a Linux terjeszté- on nemsokára megtudhatod, hogyan számos kulcsfontosságú területen visz- sére, ami lehetõséget teremthet arra, segíthetsz. szafogta a programbeli megoldások hogy a Linux bevezetése könnyû, elterjedését, vagy akár visszafejlõdést gyors és szakszerû legyen, és hasznos- Linux Journal 2003. október, 114. szám eredményezett. Így aztán, ha idõben nak bizonyuljon itt, Irakban. cselekszünk, a Linux számtalan terüle- A tudásháló megalapozása vagy újra- ten hatalmas segítséget jelenthet a való- építése önmagában is beletelik némi Ashraf T. Hasson ban mûködõképes háttér költségkímélõ idõbe, ami újabb lehetõséget kínál ah- Bagdadban él. A Mérnöki kialakításában. hoz, hogy a Linux legyen az egyik sa- Fõiskola Lézer Tanszékének Ehhez szükség lehet egy iraki Linux rokköve ennek a folyamatnak – részévé végzõs hallgatója. Az új iraki Közösségi Központra, ami a nehe- válhat a mindennapi számítógépes Linux-felhasználói csoport zebben alkalmazható megoldások munkának. Például több középiskolában alapítója.

www.linuxvilag.hu 2003. november 21 Vezérfonal

Rendszerindításra képes helyreállító lemezek Egy rendszert a puszta vasra visszaállítani vagy egy az egyben lemásolni a leggyorsabban egyedi helyreállító CD készítésével lehet. Bemutatjuk e folyamat gépesítését és a helyreállító CD-k naprakészen tartásának a módját.

Mondo nevû, katasztrófa utáni helyreállító program- Egyéb alkalmazások csomag létfontosságú része lett a Midwest Tool & Die A biztonsági mentések tárolása mellett a helyreállító CD úgy (MTD) adatmentési tervének. A Mondo biztonsági is felfogható, mint egy rendszerindításra képes pillanatfelvétel Amentést készítõ eszközét, a mondoarchive programot hozzá- a számítógép állapotáról. A mondoarchive könnyû használ- adtuk adatmentési tervünkhöz. E program segítségével a hatóságának köszönhetõen több alkalmazási terület is született

© Kiskapu Kft. Minden jog fenntartva katasztrófa után a puszta vasra vissza lehet állítani a rendszert, vállalatunknál. gyorsan visszatérhetünk egy ismert, jó beállításhoz, és teljes A mondoarchive a kísérletezést is jól támogatja. A rendszert Linux-rendszereket is könnyen lemásolhatunk. A Mondo képes rátöltjük a puszta vasra, állítgatjuk, és az ismert, jó beállítások klónozni az LVM, a RAID, az ext2, az ext3, a JFS, az XFS, bármikor visszatölthetõk. Ha a kísérletek eredményesen zárultak a ReiserFS és a VFAT fájlrendszereket. le, új lemezlenyomatot (CD image) készíthetünk. Ez lesz az éles- ben mûködõ kiszolgálónak a katasztrófa utáni helyreállítólemeze. Katasztrófa utáni helyreállítás A Mondo helyreállító segédeszköze rugalmas. Helyreállításkor Az MTD-nél szalagra mentjük a céges és felhasználói adatokat. a lemezrészek átméretezhetõk és átrendezhetõk, ami akkor Több vállalati biztonsági mentési megoldást is kipróbáltunk hasznos, ha például egy nagyobb merevlemezt szerelünk be már, de mindegyiknek gyenge pontja volt a katasztrófa utáni a régi helyére a számítógépben. helyreállítás. Régen a puszta vasra történõ helyreállítás azzal Teljes Linux-rendszereket is lemásolhatunk, ha a helyreállító kezdõdött, hogy a Linuxot a terjesztés CD-jérõl újra kellett CD-re mindent felteszünk. Ezután egy üres gépre visszatölt- telepíteni. Ezután lehetett telepíteni a szalagos mentéseket hetõ az egész. Ha az eredeti rendszer DHCP-t használt az IP- beolvasni képes programot, végül következett az adatok és cím megszerzésére, akkor az új rendszer is így viselkedik majd. programok helyreállítása a szalagról. Az állandó IP-címeket használó rendszerek másolásakor a Jelenleg rendszerindító CD-ket készítünk, amelyekrõl az egész másolat ugyanazzal az IP-címmel és gépnévvel fog rendel- rendszer – illesztõprogramokkal és alkalmazásokkal együtt – kezni. Vigyázzunk arra, hogy ez a másolat ne legyen csatlakoz- helyreállítható. A szalagon tárolt állományok ezután felülírják tatva a cég éles hálózatához. Mi egy külön kísérleti hálózatot azokat, amelyek a CD létrehozása után jöttek létre. Amikor a tartunk fenn erre a célra. rendszer jelentõsen megváltozik, új helyreállító CD-ket hozunk Ha ez a seregnyi felhasználási terület még mindig nem lenne létre a régiek helyett. elég, eláruljuk, hogy a mondoarchive képes összehasonlítani a mentés állományait a rendszeren pillanatnyilag lévõ állomá- Rendszeres biztonsági mentés nyokkal. Ez az idõben változatlan rendszerek épségének Helyreállító lemezlenyomatokat (CD image) létrehozni egysze- ellenõrzésére használható. rû, ezért ez a folyamat megismételhetõ, amikor a rendszer Láthatjuk, hogy a mondoarchive rugalmas és hasznos mentõ pillanatfelvételét kell létrehoznunk. A ma használatos nagy és másoló segédprogram. Ha értékesek az adataink, illetve merevlemezekre rendszeresen készíthetünk biztonsági mentést kiszolgálónk beállításai, akkor olvassunk tovább! a mondoarchive programmal. Késõbb egy cron-ból futó megoldást mutatunk be erre a feladatra. Függõségek Az MDT-nél bizonyos rendszerekhez a mondoarchive Az itt bemutatott példatelepítés a Red Hat 8.0-ra vonatkozik, ez programot használjuk a szalagos mentés helyett: a mi kísérleti környezetünk. Számos függõséget ki kell elégíteni • Az idõben változatlan adatokat kiszolgáló Linux-gépekhez a mondoarchive telepítése elõtt. A Red Hat rendszereken a felesleges a szalagos mentés. A mondoarchive program- következõ csomagok meglétét kell ellenõriznünk: afio, mal adott idõközönként biztonsági mentést készítünk. cdrecord, buffer, mkisofs, syslinux és bzip2. Ha ezek • Az internetre közvetlenül csatlakozó számítógépek a mind telepítve vannak, akkor továbbléphetünk a tûzfalon kívül vannak, elkülönítve õket a belsõ háló- mondoarchive csomagjainak a telepítésére. Ha ezek közül zattól. A szalagos mentést végzõ kiszolgáló nem látja valamelyik nincsen telepítve, akkor egy kis elõkészítõ munkára ezeket a számítógépeket. A mondoarchive segítsé- lesz szükség. Ezek a csomagok a legtöbb esetben megtalálhatók gével e rendszerek helyesen mûködõ változatát tárol- a Red Hat-korongokon. Letölthetjük õket a Red Hat webhelyé- juk. Ha betörést észlelünk, hamar vissza lehet állítani rõl vagy a  http://www.rpmfind.net címrõl, de a Mondo az eredeti állapotot. honlapjáról is. Miután az összes csomagot összegyûjtöttük, • A Linux-tûzfalak és -útválasztók állandó beállításokkal telepítsük õket az RPM programmal. üzemelnek, nincsenek felhasználói fiókok és a biztonsági A függõségek kielégítése után telepíthetjük a mondoarchive szint magas, emiatt nem érhetõk el a vállalati szalagos csomagjait. Két csomag kiemelten fontos: a mindi és kiszolgáló számára. Mivel a tûzfalak beállításai ritkán a mondo. Ezeket beszerezhetjük a változnak, a mondoarchive jól használható.  http://www.microwerks.net/~hugo/index.html oldalról.

22 Linuxvilág Vezérfonal

Mielõtt futtatnánk a mondoarchive parancsot, válasszunk ki a meghajtón egy sok üres helyet tartalmazó részt, hogy a nagy ISO-fájlok elférjenek. Például válasszuk a /home/mondo könyvtárat a 6 GB-os /home lemezrészen. A használandó parancs így néz ki:

# mondoarchive -Oi -d /home/mondo -E "/home/mondo"

A -Oi azt jelenti, hogy a fájlrendszert lemezlenyomatok for- májában kell menteni. A -d /home/mondo kapcsoló hatására a mondoarchive a /home/mondo könyvtárba teszi az elkészült ISO-fájlokat. A rendszer méretétõl függõen több lemezlenyo- mat is létrejöhet. Végül a -E kapcsoló arra utasítja a progra- mot, hogy hagyja ki a /home/mondo könyvtárat, amelyben régi, nagyméretû lemezlenyomatok lehetnek, és feleslegesen 1. kép A mondoarchive futás közben növelnék a biztonsági mentés méretét.

Ha kevés szabad lemezterülettel rendelkezünk, egy munka- © Kiskapu Kft. Minden jog fenntartva A mindi a Mondónak az a része, amelyik rendszerindító és könyvtárat is meg kell adni. Ez egy ideiglenes könyvtár, gyökér-fájlrendszert tartalmazó hajlékonylemezeket és CD-ket amelyet a mondoarchive a lemezlenyomatok felépítésére készít. Gyakorlatilag ez tartalmaz mindent, amire a használ, mielõtt véglegesen kiírná õket. Érdemes egy nagy mondoarchive programnak a mentéslemezek indításához lemezrészen elhelyezkedõ munkakönyvtárat megadni, szüksége van. Telepítsük elõször a mindi-t: ellenkezõ esetben a mondoarchive futása sikertelen lesz, amikor elfogy a hely. Az alábbi példában feltettük, hogy a # rpm -Uvh mindi /var/local/data egy nagy lemezrész. A munkakönyvtárat a A mindi telepítése után telepíteni -S kapcsoló után adhatjuk meg: kell a mondo-t is: # rpm -Uvh mondo # mondoarchive -Oi -d /home/mondo -S /var/local/data -E "/home/mondo" Végrehajtás A különféle rendszerekrõl sokféleképpen készíthetünk bizton- A parancs elindítása után a mondoarchive ellenõrzi a rend- sági mentést a mondoarchive programmal. Most csak azokat szert, és ha mindent rendben talál, akkor elkezdi a biztonsági a helyzeteket ismertetjük, amelyekrõl már szó volt a korábbiak- mentést. A folyamat elõrehaladtáról a felhasználó visszajelzést ban, azaz a kiszolgálók biztonsági mentését és rendszerek kap (1. kép). Eltart egy ideig, amíg végez. A folyamat végén a másolatának elkészítését. program megkérdezi, hogy akarunk-e indítólemezt készíteni. Környezetünkben számos kiszolgáló dolgozik különféle fela- Válaszolhatunk nemet, mert a felírt CD-krõl lehet rendszert datokon, és mindegyik beállítása más és más. Némelyikben indítani. Ha mégis szükségünk lenne az indítólemezre, több IDE- vagy SCSI-merevlemez van, mert nagy mennyiségû válaszoljunk igennel. adatot tárolnak, míg más kiszolgálók csak egy IDE- vagy Végül a /home/mondo könyvtárba (vagy amit megadtunk) SCSI-meghajtóval rendelkeznek. Akad néhány RAID rendszer kerülnek azok a lemezlenyomatok, ezeket lehet a korongra is. Bizonyos kiszolgálókon állandóan változnak az adatok, írni. Sokféleképpen égethetünk CD-t, például az Xcdroast, a máshol pedig szinte soha. A mondoarchive ezek mindegyi- Webmin vagy a cdrecord programok használatával. A leggyor- két képes lemásolni. sabb módszer elsõ lépése a cdrecord -scanbus parancs, Jó ötlet a lemezhasználatot elõször kiszolgálónként megvizs- amely felderíti a CD-író adatait – sín, cél, és logikai eszközszám gálni. Figyeljünk oda, hogy mi hova lett befûzve – nincs értelme (LUN) –, ez általában 0,0,0. Ezeket az adatokat kell átadni érdektelen adatokról biztonsági mentést készíteni. Ha olyan a második lépésben a tényleges CD-írás elvégzéséhez: nagyméretû könyvtáraink vannak, amelyekben nincsenek fon- tos adatok, hagyjuk ki õket. Nálunk például NFS és automount # cdrecord dev=0,0,0 speed=xx használatával több megosztott könyvár is be van fûzve minden /home/mondo/1.iso egyes kiszolgálóra. Nem szeretnénk ezt a tényt figyelmen kívül hagyni, és a mondoarchive programmal ezeket az adatokat is A CD-írás végeredménye egy helyreállítólemez, amelyrõl menteni. Ha azonosítottuk a feleslegesen befûzött lemezrészeket kiszolgálóhiba esetén helyreállítható a rendszer. vagy megosztásokat, a -E kapcsoló segítségével kizárhatjuk õket. A kapcsolót a -E /a /b /c alakban kell használni, ahol a Futtatás a cron segítségével /a, /b és /c könyvtárakat jelentenek. A mondoarchive önmûködõen is futtatható az általunk megadott idõben a cron szolgáltatás segítségével. Hozzunk Az lemezlenyomat tárolása és felírása létre az alábbihoz hasonló parancsfájlt, és helyezzük el a Most már tudjuk, hogy pontosan mit akarunk menteni, vizs- /etc/cron.daily/ könyvtárban: gáljuk meg a mondoarchive parancs néhány kapcsolóját. A biztonsági mentés készíthetõ CD-re, ISO-fájlba vagy NFS- #!/bin/sh megosztásra. Ebben a cikkben az lemezlenyomatok elkészítését mkdir -p /home/mondo/`date +%A` && tárgyaljuk, amelyeket egy késõbbi idõpontban CD-re lehet írni. mondoarchive -Oi -d /home/mondo/`date +%A` A mondoarchive teljes leírása megtalálható a súgóoldalán. -E /home/mondo

www.linuxvilag.hu 2003. november 23 Vezérfonal

2. kép A Mondo párbeszédes üzemmódja 3. kép Adatforrás kiválasztása © Kiskapu Kft. Minden jog fenntartva vissza szeretnénk térni a fejlesztés egy korábbi állapotába. A mondoarchive párbeszédes módja is hasznos lehet. Ebben az üzemmódban a helyreállítás elõtt szerkeszthetjük a lemez- rész-felosztási táblát (partition table). Ez a lehetõség akkor jön jól, ha különbözõ méretû merevlemezeket tartalmazó számító- gépeket akarunk klónozni. A mondoarchive párbeszédes módjában a helyreállítás célpontjaként megjelölt lemezrészeket a programba beépített lemezrészszerkesztõ segítségével át lehet méretezni. A mondoarchive a nuke üzemmódban is képes átméretezni a lemezrészeket, de ekkor nincs lehetõsé- günk a méretek megadására. A mondoarchive párbeszédes üzemmódjában az elõre javasolt érték megváltoztatható. A mondoarchive párbeszédes módjának elindításához írjuk be a parancssorba az interactive parancsot, miután a rendszer elindult a CD-rõl. Egy menü jelenik meg, amelybõl kiválaszthatjuk, hogy milyen módon kívánjuk helyreállítani az adatokat (2. kép); három lehetõség van: Automatically, 4. kép Lemezrészadatok szerkesztése Interactively és Compare. Most az Interactively menüpontot kell választanunk. Ezután a program megkérdezi, hogy A /etc/cron.daily/ könyvtárban elhelyezett parancsfájl minden honnan vegye az adatokat (3. kép). nap ugyanabban az idõpontban fut le. A végrehajtás során a Válasszuk ki a megfelelõ helyet, majd lépjünk tovább. Megje- /home/mondo könyvtárba az adott napnak megfelelõ könyvtá- lenik a lemezrészkezelõ képernyõ (4. kép), amelyen a lemezré- rat hoz létre. Ha a hét minden napján futtatjuk a feladatot, szek adatait lehet szerkeszteni. Megváltoztathatjuk az eszköz akkor hét alkönyvtár jön létre a /home/mondo könyvtárban, nevét, a befûzési pontot, a fájlrendszer formátumát és a lemez- mindegyiknek a neve a hét adott napjának a neve lesz, és az rész méretét. A változtatások után nyomjuk meg az OK gombot. aznapi biztonsági mentés lemezlenyomatai lesznek benne. Ezután a Mondo néhány kérdést tesz fel a helyreállítási Természetesen, ha korongon szeretnénk látni õket, akkor ismét mûvelettel kapcsolatban: a cdrecord parancsot kell futtatni. • Are you sure you want to save your mountlist and continue? (Biztosan mented a befûzési listát, és folytatod?) YES Helyreállítás • Do you want to erase and partition your hard drives? Miután elkészültek a CD-k, hogyan tovább? A CD-rõl elindít- (Törlöd és újra felosztod a merevlemezt?) YES ható a rendszer, ezért egyszerûen csak be kell tenni a meghaj- • Do you want me to restore all your data? (Minden adatot tóba, és máris megkezdõdhet a mondoarchive helyreállítási helyreállítasz?) YES képességeinek a tanulmányozása. Négy helyreállítási mód • Initialize the bootloader? (Alaphelyzetbe állítod a rendszer- közül lehet választani: nuke (teljes), interactive (párbeszédes), betöltõt?) YES expert (szakértõ) és advanced (haladó). • Did you change the mountlist? (Megváltoztattad a befûzési Ha a mondoarchive programot kizárólag katasztrófa utáni hely- listát?) YES reállításra használjuk, az egyetlen számunkra érdekes lehetõség • You will now edit fstab and lilo.conf/grub.conf, to make sure a nuke mód. A lemez elindulása után írjuk be a nuke parancsot they match your new mountlist. (Szerkeszd az fstab és a a parancssorba, és várjuk meg, amíg a mondoarchive teljesíti lilo.conf/grub.conf állományokat, hogy megegyezzenek az feladatát. A helyreállítás után a rendszer pontosan abban az álla- új befûzési listával.) OK potban lesz, mint a mondoarchive programmal készített mentés elõtt volt. Ez jól jöhet akkor, amikor a kiszolgáló súlyos hibája A Mondo megnyitja a /etc/fstab és a lilo.conf/grub.conf miatt gyorsan helyre kell állítani a mûködõ állapotot. Akkor is állományokat a vi szerkesztõben. A bejegyzéseket az új használható a módszer, ha kísérleti rendszerekkel dolgozunk, és befûzési listának megfelelõen meg kell változtatni:

24 Linuxvilág Vezérfonal

• Edit them again? (Ismét szerkeszted õket?) NO niük kell. Ezekben az esetekben az elõre tervezett leállás alkal- • Label your ext2 and ext3 partitions if necessary? (Címkékkel mával kell az ellenõrzést elvégezni. A másik lehetõség a rendszer látod el az ext2-es és ext3-as lemezrészeket, ha ellenõrzésére a népszerû Tripwire alkalmazás használata. Inkább szükséges?) YES a Tripwire programot javasoljuk az olyan idõben állandó rend- szerek ellenõrzésére, amelyeknél fontos a folyamatos üzem. A Mondo a folyamat befejeztével a számítógép újraindítására szólít fel. Nyomjuk meg a CTRL-ALT-DELETE billentyûkombinációt. Összegzés Megismertük a mondoarchive képességeit a katasztrófa utáni A programkészlet ellenõrzése helyreállítás terén. A program részletesebb felfedezését javasoljuk A teljes helyreállítás mellett a mondoarchive program másra – segítségével a katasztrófa után gyorsan és teljesen helyreál- is alkalmas. Ha a lemásolt gép adatai idõben változatlanok, líthatjuk a rendszereinket. Mindehhez látogassunk el a Mondo akkor feltehetõ, hogy nem is akarjuk, hogy megváltozzanak. Rescue honlapjára Ez a helyzet a Midwest Tool & Die linuxos útválasztóival. ( http://www.microwerks.net/~hugo/index.html). A mondoarchive programmal összehasonlíthatjuk a számító- gépen lévõ programkészletet a mentett adatokkal, és a változá- Linux Journal 2003. október, 114. szám sokról jelentést kaphatunk. A folyamat egyszerû: indítsuk el a rendszert az 1. CD-rõl, és írjuk be a # compare parancsot. Craig Swanson A végén a mondoarchive az összehasonlítás eredményét a ([email protected]) © Kiskapu Kft. Minden jog fenntartva /tmp/changed.txt állományba menti. Különbségek lesznek a Hálózattervezõ és Linux-tanácsadó az SLS CD és az elsõ fájlrendszer között. A naplóállományok és szinte Solutions cégnél. Emellett linuxos programokat minden a /var könyvtárban megváltozhat – ezek miatt nem kell fejleszt a Midwest Tool & Die számára. Craig 1993 aggódnunk. Leginkább a /etc és a /boot könyvtárak változásait óta használ Linuxot. kell figyelemmel követnünk. Ezekben a könyvtárakban olyan rendszerre jellemzõ beállítóállományok vannak, amelyeknek a rendszer beüzemelése után nem szabad megváltozniuk. Ha ez Matt Lung ([email protected]) mégis megtörtént, és nem emlékszünk rá, hogy mi változtattuk Hálózatmérnökként dolgozik a Midwest Tool & Die meg õket, akkor valószínûleg nagy gondban vagyunk. cégnél. Õ is Linux-tanácsadó az SLS Solutionsnél. Az összehasonlításnak az az egyetlen hátránya, hogy a rendszert az ellenõrzés idejére le kell állítani. Valahol ez nem gond, de akadnak olyan rendszerek, amelyeknek folyamatosan mûköd-

www.linuxvilag.hu 2003. november 25 Szaktekintély

Eszközosztályok Árnyaljuk egy kicsit a képet, avagy hogyan írhatunk olyan eszközillesztõt, amelyik hibátlanul mûködik a 2.6-os rendszermag alatt.

legutóbbi, „A rendszermag beállításai” címû írásom- Késõbb, ha az osztályt el kell távolítani, a class_unregister ban (Linuxvilág, 2003 júniusi szám) megismerkedtünk függvényt kell meghívni: a rendszermag illesztõprogram-keretrendszerével, Ailletve az általános busz és az illesztõprogramok és -eszközök class_unregister(&i2c_adapter_class); kódjának a mûködésével. A különbözõ alrendszerek mûködé- sének leírásakor az i2c magot hoztam fel példaként. Ebben Osztályeszközök a hónapban az illesztõprogram-osztálykód mûködése kerül Az osztályok a különféle osztályeszközök kezelésére szolgál-

© Kiskapu Kft. Minden jog fenntartva terítékre, és ismét az i2c kódja szolgál példaként. nak. A rendszermagban az osztályeszközök megadása a Mint a múlt alkalommal már szó esett róla, az eszközosztályok struct class_device adatszerkezettel történik. Ez az nem az objektumközpontú világ értelmezése szerinti osztályokat adatszerkezet számos, az illesztõprogram-mag által használt jelentik, inkább adott típusú szolgáltatást nyújtanak a felhasz- változót tartalmaz, ezekkel az illesztõprogram írójának nem náló számára. A rendszermag osztályai például a tty, a blokkos kell foglalkoznia. Az általa értékkel ellátandó változók a vagy a hálózati eszközök és – hamarosan – a fájlrendszerek. következõk: A 2.5.69-es rendszermagban teljesen újraírt illesztõprogram- • class: arra a struct class adatszerkezetre kell mutat- osztályrendszer mutatkozott be. A korábbi rendszermagvál- nia, amelynek a feladata lesz az osztályeszköz kezelése. tozatokban az osztályok támogatása szoros kapcsolatban állt • dev: az osztályeszközhöz hozzárendelt struct device az illesztõprogramok és az eszközök támogatásával. Az adott adatszerkezet címét kell értékéül adni, amennyiben van osztály egyben az eszközhöz is kötõdött, amikor egy illesztõ- ilyen. Egyetlen struct device adatszerkezetre több programnál bejegyzésre került. Ez sok eszköznél és osztálynál osztályeszköz-adatszerkezet is hivatkozhat. Ez a legfõbb jól mûködött, de a valós élet bõségesen szolgált olyan eszkö- különbség az elõzõ rendszermag osztálytámogatása és a zökkel, amelyek nem nagyon illettek ebbe a modellbe. Most jelenlegi megvalósítás között. Ennek a változónak nem az osztályok támogatása csak laza kapcsolatban áll az illesztõ- muszáj értéket adni, a rendszermag nélküle is jól mûködik. programokkal és az eszközökkel, eszközre vagy illesztõprog- Ha mégis kap értéket, egy a struct device adatszerke- ramra valójában már nincs is szükség az osztálykód haszná- zetre mutató közvetett eszközhivatkozás jön létre az latához, mint ezt a tty-osztálykód is mutatja. Az osztálykód osztályeszköz sysfs bejegyzésében. A példát lásd lejjebb. három különbözõ típusú szerkezetre osztható: osztályokra, • class_id: karaktertömb, az osztályeszköz leírását tartal- osztályeszközökre és osztályfelületekre. mazza. Az adott osztály-adatszerkezethez hozzárendelt osztályeszköz-adatszerkezetek között egyedinek kell lennie. Osztályok • class_data: egy mutatót tartalmaz, amely az osztály- A rendszermagban az osztályok megadása egy struct class illesztõprogram által az osztályeszközhöz hozzárendelendõ adatszerkezettel történik. Igen, C-ben a class nem fenntartott saját adatokra mutat. Ezt a változót közvetlenül nem kell szó. (Mindenki, aki C++ fordítóval szeretne rendszermagot elérni, értékének beállítására és lekérdezésére a fordítani, az új osztálykód készítõjéhez címezze jókívánságait.) class_set_devdata és a class_get_devdata Ha létre akarunk hozni egy osztály-adatszerkezetet, mindössze függvény használható. a struct class adatszerkezet name változójának kell értéket adnunk, és máris érvényes osztályt kaptunk. Ezt az alábbi Megfelelõen elõkészített struct class_device adatszerkezet kóddal tehetjük meg: bejegyzését a class_device_register függvénnyel lehet elvégezni. Egy struct class_device adatszerkezet kezdeti static struct class i2c_adapter_class = { értékadására és az illesztõprogram-magnál való bejegyzésére az .name = "i2c_adapter" alábbi, a drivers/i2c/i2c-core.c fájlból származó kódrészlet ad példát: }; /* A csatoló hozzáadása az i2c_adapter Az osztály adatszerkezetet megadás után a class_register osztályhoz */ függvény meghívásával lehet bejegyezni az illesztõprogram- magnál: memset(&adap->class_dev, 0x00, sizeof(struct class_device)); if (class_register(&i2c_adapter_class) != 0) adap->class_dev.dev = &adap->dev; printk(KERN_ERR "i2c adapter class adap->class_dev.class = &i2c_adapter_class; failed " strncpy(adap->class_dev.class_id, "to register properly\n"); adap->dev.bus_id, BUS_ID_SIZE); class_device_register(&adap->class_dev); Ha a class_register függvény hibajelzés nélkül tér vissza, akkor a /sys/class/i2c_adapter könyvtár sikeresen létrejött. Elõször a struct class_device változó (a struct

26 Linuxvilág Szaktekintély

i2c_adapter változóba van beágyazva) kap kezdeti érték- ként nullát. Bejegyzés elõtt minden illesztõprogrammodell- $ tree /sys/class/i2c-adapter/ adatszerkezet összes változójának nullát kell értékként adni, az /sys/class/i2c-adapter/ illesztõprogram-mag csak így tudja helyesen kezelni õket. |-- i2c-0 Ezután a dev változó olyan értéket kap, hogy az i2c_adapter | |-- device struct device változójára mutasson. Ebben az esetben a -> ../../../devices/pci0/00:07.3/i2c-0 struct i2c_adapter adatszerkezet egy struct device | `-- driver -> és egy struct class_device adatszerkezetet is tartalmaz. ../../../bus/i2c/drivers/i2c_adapter A class változó az i2c_adapter_class változó címére fog |-- i2c-2 mutatni, majd a class_id változó az eszköz bus_id azono- |-- device sítójával megegyezõ értéket kap. Mivel az i2c_adapter eszköz -> ../../../devices/legacy/i2c-2 bus_id azonosítója egyedi értékkel bír, egyben az i2c_adapter `-- driver class_device adatszerkezetének class_id összetevõje is -> ../../../bus/i2c/drivers/i2c_adapter egyedi lesz. Végül a class_device_register függvény meghívásával megtörténik az osztályeszköz-adatszerkezet bejegyzése a rendszermag eszközillesztõ magjánál. illesztõprogramot, vagy az i2c-dev illesztõprogramot kell hasz- A fenti kód és két i2c csatoló betöltése után a próbagépen az nálnunk. Az i2c-dev illesztõprogram karakteres illesztõfelületet

1. litstán láthatóak szerint alakult a /sys/class/i2c_adapter fa. biztosít a rendszerben jelenlévõ összes i2c-csatolóhoz. Mivel © Kiskapu Kft. Minden jog fenntartva nem árt pontosan tudni, hogy mely i2c-dev eszközök mely i2c- A fa alapján is látható, hogy az illesztõprogram-mag önmûködõ- csatolókhoz csatlakoznak, létrehoztuk az i2c-dev osztályt: en hoz létre egy eszköz- és egy illesztõprogram közvetett hivat- kozást, és ezek a sysfs fa megfelelõ pontjaira mutatnak. Ha a static struct class i2c_dev_class = { dev mutató nem a struct device adatszerkezetre mutat, akkor .name = "i2c-dev" a közvetett hivatkozások nem jönnek létre. Ha bepillantunk a }; /sys/class/tty könyvtárba, akkor az osztályeszköz-bejegyzések túlnyomó részéhez nem tartozik struct device adatszerkezet, Miután az i2c-dev illesztõprogram az összes i2c-csatolót vagyis ezek a szimbolikus hivatkozások hiányoznak. megtalálta, az eszközillesztõ mag egy új i2c osztályeszközzel bõvül. A hozzáadás az i2c_add_class_device függvényen Osztályfelületek belül történik: Az osztályfelületek révén tudja a rendszer értesíteni a saját kódunkat, ha egy struct class_device adatszerkezet egy static void adott osztálynál bejegyzésre, illetve eltávolításra kerül. Az i2c_add_class_device(char *name, int minor, osztályfelület megadása a struct class_interface adat- struct i2c_adapter *adap) szerkezettel történik, ami egészen egyszerû: { struct i2c_dev *i2c_dev; struct class_interface { int retval; struct list_head node; struct class *class; i2c_dev = kmalloc(sizeof(*i2c_dev), int (*add) (struct class_device *); GFP_KERNEL); void (*remove) (struct class_device *); if (!i2c_dev) };* return; memset(i2c_dev, 0x00, sizeof(*i2c_dev)); A class változó értékeként kell megadni azt az osztályt, amelynek az eseményeirõl értesülni szeretnénk. Az add if (adap->dev.parent == &legacy_bus) (hozzáadás) és a remove (eltávolítás) változó értéke egy függ- i2c_dev->class_dev.dev = &adap->dev; vény lesz, amelyet akkor kell meghívni, ha eszközt adunk else hozzá az osztályhoz, illetve távolítunk el belõle. Ha valamelyik i2c_dev->class_dev.dev = eseményrõl nem akarunk értesülni, akkor a neki megfelelõ adap->dev.parent; változónak nem kötelezõ értéket adnunk. i2c_dev->class_dev.class = &i2c_dev_class; Ha osztályfelületet szeretnénk bejegyezni a rendszermagnál, snprintf(i2c_dev->class_dev.class_id, a class_interface_register függvényt kell használnunk, BUS_ID_SIZE, "%s", name); míg az eltávolítást a class_interface_unregister függ- retval = vénnyel hajthatjuk végre. Az osztályfelületek használatára szép class_device_register példát találunk a processzor órajel-magkódjában, amely a rend- (&i2c_dev->class_dev); szermag forrásának kernel/cpufreq.c fájljában található meg. if (retval) goto error; Fájlok létrehozása class_device_create_file Mint már említettem, az i2c-adapter osztály segítségével köny- (&i2c_dev->class_dev, nyen felismerhetjük a rendszerben lévõ különféle i2c-csatoló- &class_device_attr_dev); kat, illetve meghatározhatjuk helyüket az illesztõprogram- fában. Csakhogy az i2c-csatolókat a felhasználó nem címezheti i2c_dev->minor = minor; meg közvetlenül. Amennyiben párbeszédbe szeretnénk ele- spin_lock(&i2c_dev_list_lock); gyedni egy i2c-csatolóval, akkor be kell töltenünk egy i2c-lapka list_add(&i2c_dev->node, &i2c_dev_list);

www.linuxvilag.hu 2003. november 27 Szaktekintély

$ tree /sys/class/i2c-dev/ $ tree /sys/bus/i2c/ /sys/class/i2c-dev/ /sys/bus/i2c/ |-- i2c-0 |-- devices | |-- dev | |-- 0-0050 -> | |-- device ../../../devices/pci0/00:07.3/i2c-0/0-0050 -> ../../../devices/pci0/00:07.3 | |-- 0-0051 -> | `-- driver -> ../../../devices/pci0/00:07.3/i2c-0/0-0051 ../../../bus/pci/drivers/piix4-smbus | |-- 0-0052 -> `-- i2c-2 ../../../devices/pci0/00:07.3/i2c-0/0-0052 |-- dev | |-- 0-0053 -> |-- device ../../../devices/pci0/00:07.3/i2c-0/0-0053 -> ../../../devices/legacy/i2c-2 | `-- 2-0290 -> ../../../devices/legacy/ `-- driver i2c-2/2-0290 -> ../../../bus/i2c/drivers/i2c_adapter `-- drivers |-- dev driver |-- eeprom

© Kiskapu Kft. Minden jog fenntartva | |-- 0-0050 -> spin_unlock(&i2c_dev_list_lock); ../../../../devices/pci0/00:07.3/i2c-0/0-0050 return; | |-- 0-0051 -> error: ../../../../devices/pci0/00:07.3/i2c-0/0-0051 kfree(i2c_dev); | |-- 0-0052 -> } ../../../../devices/pci0/00:07.3/i2c-0/0-0052 | `-- 0-0053 -> A függvény csak néhány részletben tér el az i2c_adapter ../../../../devices/pci0/00:07.3/i2c-0/0-0053 osztály bejegyzését végzõ kódtól. Elõször is a class_dev.dev |-- i2c_adapter mezõ vagy a csatoló szülõeszközére vagy magára a csatolóra `-- w83781d mutat. Ennek oka az, hogy az i2c-csatolóknak valójában nincs `-- 2-0290 -> szülõjük az általános rendszermag-eszközfában, hiszen vagy ../../../../devices/legacy/i2c-2/2-0290 a rendszermag illesztõprogram-modelljében (például az ISA busszal ellentétben) nem szereplõ buszon találhatók, vagy Az i2c-csatolókhoz tartozó /sys/devices/ könyvtárak tartalma: lényegében nem is csatlakoznak semmilyen buszra (mint pél- dául bizonyos beágyazott i2c-vezérlõk). Ha egy i2c-csatolónak $ tree /sys/devices/pci0/00:07.3 nincs helye a rendszermag eszközfájában, a rendszer az örökölt /sys/devices/pci0/00:07.3 buszhoz rendeli hozzá. Az örökölt busz – a /sys/devices/legacy |-- class alatt található – hivatott az összes ilyen eszköz kezelésére. |-- device A második eltérést ennél az osztályeszköznél az alábbi sorban |-- i2c-0 fedezhetjük fel: | |-- 0-0050 | | |-- eeprom_00 class_device_create_file (&i2c_dev->class_dev, | | |-- name &class_device_attr_dev); | | `-- power | |-- 0-0051 A class_device_create_file függvény egy fájlt hoz létre | | |-- eeprom_00 az osztályeszköz könyvtárában. A fájlnevet és a jellemzõket a | | |-- name CLASS_DEVICE_ATTR makró adja meg az alábbiak szerint: | | `-- power | |-- 0-0052 static ssize_t | | |-- eeprom_00 show_dev(struct class_device *class_dev, | | |-- name char *buf) | | `-- power { | |-- 0-0053 struct i2c_dev *i2c_dev = | | |-- eeprom_00 to_i2c_dev(class_dev); | | |-- name return sprintf(buf, "%04x\n", | | `-- power MKDEV(I2C_MAJOR, i2c_dev->minor)); | |-- name } | `-- power static |-- irq CLASS_DEVICE_ATTR(dev, S_IRUGO, show_dev, |-- name NULL); |-- power |-- resource A CLASS_DEVICE_ATTR* makró megadása a következõ: |-- subsystem_device |-- subsystem_vendor #define `-- vendor* CLASS_DEVICE_ATTR(_name,_mode,_show,_store)

28 Linuxvilág Szaktekintély

struct class_device_attribute i2c_dev = list_entry(tmp, struct class_device_attr_##_name = { i2c_dev, node); .attr = {.name = __stringify(_name), if (i2c_dev->minor == minor) { .mode = _mode }, found = 1; .show = _show, break; .store = _store, } }; } if (found) { A CLASS_DEVICE_ATTR* makrón belül az alábbi átadott list_del(&i2c_dev->node); értékeket találjuk: spin_unlock(&i2c_dev_list_lock); • _name: a sysfs-en belül létrehozandó fájl neve, illetve class_device_unregister része a name változónak, amely ezt a teljes jellemzõt írja le. (&i2c_dev->class_dev); • _mode: a fájlhozzáférési mód, amellyel a fájl létrehozása kfree(i2c_dev); történik. A megfelelõ érték megadásához a szabványos } else { hozzáférési makrók használhatók. spin_unlock(&i2c_dev_list_lock); • _show: arra a függvényre mutat, amelynek meghívására } a fájl tartalmának olvasásakor kerül sor. Ennek a függvény- }

nek az alábbi visszatérési értékkel és átadott értékekkel © Kiskapu Kft. Minden jog fenntartva kell rendelkeznie. A változónak nem kell értéket adni, ha Áttekintés a fájlból nem fogunk olvasni. Ha az i2c-dev illesztõprogram és két i2c-csatoló illesztõ- ssize_t program (az i2c-piix4 és az i2c-isa) be van töltve, akkor a show (struct class_device *class_dev, /sys/class/i2c-dev könyvtár tartalma a 2. listában láthatók char *buf); szerint alakul. • _store: arra a függvényre mutat, amelynek a meghívására a fájlba való íráskor kerül sor. Ennek a függvénynek az A /sys/class/i2c-dev/i2c-2/ könyvtárban lévõ dev fájl tartalma az alábbi visszatérési értékkel és átadott értékekkel kell ren- alábbi karakterlánc lesz: delkeznie. A változónak nem kell értéket adni, ha a fájlba nem fogunk írni. $ cat /sys/class/i2c-dev/i2c-2/dev 5902 ssize_t store (struct device *dev, Ez a 86-os fõ- és a 2-es alszámhoz tartozik, ezek az adott eszköz const char *buf, size_t count);* karakteres fõ- és alszámai. A /sys/bus/i2c/ könyvtár tartalma az alábbiak szerint alakul, Szinte minden illesztõprogram-modell adatszerkezete miután néhány i2c ügyfél-illesztõprogramot betöltöttünk rendelkezik egy ATTR() makróval, amely megad egy fájlt (3. lista). A 4. listát lásd az 53. CD Magazin/Eszköz a sysfs fán belül. könyvtárában. Ebben a példában egy dev nevû fájl jön létre a A rendszermag illesztõprogram-modellje által alkalmazott, class_device_create_file függvény meghívásakor. egymáshoz kapcsolódó adatszerkezet-mutatók rendszerérõl, A fájlból minden felhasználó csak olvashat. A fájl tartalmának illetve felhasználói alkalmazásukról Jonathan Corbet készítette olvasásakor az illesztõprogrammag a show_dev függvényt a legjobb leírást: „Web woven by a spider on drugs” hívja meg. A show_dev függvény feltölti a neki átadott ( http://lwn.net/Articles/31185/). Bízom abban, hogy két átmeneti tárat a felhasználónak továbbítandó adatokkal. Ebben írásom alapján kicsit áttekinthetõbbé vált ez a hatalmas kusza- az esetben a felhasználó az adott eszköz fõ- és alszámát kapja ság, és sikerült valamennyire megismerkedni az eszközök meg. Minden fõ- és alszámot használó osztályeszköznek között a rendszermagon belül fennálló kapcsolatokkal. rendelkeznie kell egy dev fájllal a megfelelõ sysfs osztályeszköz könyvtáron belül. Köszönetnyilvánítás A class_device_create_file függvény által létrehozott Szeretnék köszönetet mondani Pat Mochel-nek, amiért ilyen fájlok eltávolítására a class_device_remove_file kiváló és átfogó, a felhasználók számára is szemléletes keret- függvény használható. Az eszközök eltávolításakor semmilyen rendszert készített az összes rendszermag-illesztõprogramhoz fájlt nem kell kézzel törölni. Amikor egy eszközt eltávolítunk a és eszközhöz. Ugyancsak hálával tartozunk mindenkinek, sysfs alól, akkor a neki megfelelõ könyvtárból a sysfs-mag aki valamelyik rendszermagillesztõprogram-alrendszert tartja önmûködõen törli az összes fájlt. Ha tehát eltávolítjuk az i2c- karban, és örömmel alakította át alrendszerét az új modellnek dev osztályeszközt a rendszerbõl, mindössze az alábbi megfelelõen. Segítségük nélkül az eszközillesztõ kódja nem parancsokra van szükség: lett volna több tetszetõs egyetemi feladványnál. static void Linux Journal 2003. augusztus, 112. szám i2c_remove_class_device(int minor) { struct i2c_dev *i2c_dev = NULL; Greg Kroah-Hartman ([email protected]) struct list_head *tmp; Jelenleg a Linux USB és a PCI Hot Plug int found = 0; rendszermag felelõse. Az IBM-nél dolgozik, ahol számos, a Linux rendszermagjával kapcsolatos spin_lock(&i2c_dev_list_lock); kérdéssel foglalkozik. list_for_each (tmp, &i2c_dev_list) {

www.linuxvilag.hu 2003. november 29 Szaktekintély

Hitelesítés LDAP használatával (3. rész)

Az LDAP-ról szóló sorozat záró írásában LDAP-kiszolgálónk Mick segítségével végre eljut odáig, hogy valódi felhasználókat valóságos környezetben is képes hitelesíteni.

z elmúlt hónapokban egy LDAP-kiszolgálót építget- A tünk. Telepítettük az OpenLDAP-ot; beállítottuk a slapd-t, a kiszolgálódémont; életet leheltünk a TLS alapú titkosításba; végül létrehoztuk elsõ LDAP-bejegyzésün- ket, egy fõ szervezet bejegyzését. Elérkezett az idõ, hogy a rendszerhez hozzáadjuk a felhasználókat, és IMAP-munkame- netek hitelesítésére használjuk a kiszolgálót. © Kiskapu Kft. Minden jog fenntartva Az adatbázis szerkezete Az LDAP felhasználói adatbázisának létrehozásakor az elsõ lépés a címtár szerkezetének kigondolása, amely annak eldön- tését is magába foglalja, hogy a felhasználókat és az egyéb egye- deket kívánjuk-e csoportosítani, vagy egyszintû szerkezetet akarunk használni. Ha az LDAP-adatbázist kizárólag – és csakis kizárólag – hálózati telefonkönyv vagy hitelesítõ kiszolgáló A séma böngészése a gq segítségével üzemeltetésére használjuk, akkor egy egyszintû adatbázis is megfelel. Ebben az esetben a felhasználók megkülönböztetõ felhasználókhoz. Ugyancsak a múlt alkalommal mondtam el, nevei (Distinguished Name, DN) valahogy így alakulnak: hogy a /etc/openldap/schema könyvtárban lévõ sémafájlok határozzák meg, hogy milyen séma milyen jellemzõket tartal- dn=Mick Bauer,dc=proba,dc=org maz, illetve hogy az adott sémán belül milyen objektumosz- tályokhoz milyen jellemzõk tartoznak. Ha azonban az adatbázis nemcsak személyekkel, de Tegyük fel, hogy az LDAP-kiszolgáló IMAP-kapcsolatokhoz fog szervezeti csoportokkal, részlegekkel, számítógépekkel stb. hitelesítést végezni. Ekkor az uid és a userPassword LDAP- kapcsolatos adatokat is tartalmaz, akkor kifinomultabb jellemzõkre mindenképpen szükség lesz. Hasonlók mondhatók szerkezetû címtárra lehet szükség. Ilyet több módszerrel el bármely más alkalmazásról is, ha az a Bind-eljárással végez is lehet építeni. Az egyik lehetõség az, hogy a LDAP alapú hitelesítést, vagyis hitelesítõ programrésze egysze- domainComponent (dc) mezõkkel tartományunkon belül rûen megpróbál kapcsolódni az LDAP-kiszolgálóhoz úgy, altartományokat hozunk létre, függetlenül attól, hogy ezek hogy közben a felhasználó által megadott nevet és jelszót a DNS-ben valóban léteznek-e. Ekkor a bejegyzések dn=Bick alkalmazza. Ha a csatlakozás sikeres, a program a hitelesítést Mauer,dc=tervezes,dc=proba,dc=org formátumúak sikeresnek ítéli, és lezárja az LDAP-kapcsolatot. lesznek. Egy másik lehetõség az organizationalUnit Azt, hogy az uid és a userPassword jellemzõk mely sémában objektumok hasonló módon való használata, ilyenkor és objektumosztályokban találhatók meg, a legegyszerûbben dn=Dick Lauer,ou=tervezes,dc=proba,dc=org úgy mérhetjük fel, hogy a grep paranccsal a /etc/openldap/ lesz a kapott formátum. schema könyvtárban rákeresünk az uid és a userPassword Annak érdekében, hogy a további mondandóm is követhetõ karakterláncra, feljegyezzük a találatokat, kézzel végignézzük a legyen, maradok az egyszintû adatbázis használatánál; termé- megfelelõ állományokat, és kikeressük az említett két jellemzõt szetesen senkinek nem szeretném a kedvét szegni: mindenki MUST() vagy MAY() állításban tartalmazó objektumosztályokat. maga határozza meg, hogy igényeinek milyen szerkezetû Jómagam az uid karakterláncra az OpenLDAP 2.0-t futtató Red LDAP-adatbázis felel meg a leginkább. A Hat 7.3 rendszeren a következõ fájlokban találtam hivatkozást:  http://www.openldap.org címen elérhetõ és az OpenLDAP core.schema, cosine.schema, inetorgperson.schema, nis.schema programhoz mellékelt leírásokban bõven találni példákat. és openldap.schema. A talált fájlokon a less segítségével végigszaladva a követ- A séma és a felhasználórekordok kezõkre jutottam: a core.schema fájl uidObject objektuma Szintén fontos döntés a használni kívánt és a rekordokba beil- megköveteli az uid jellemzõt, a cosine.schema egyetlen, az lesztendõ LDAP-jellemzõk körének a meghatározása. A múlt uid jellemzõre vonatkozó hivatkozása megjegyzésbe van téve, alkalommal már szóltam arról, hogy ezek hogyan vannak így érdektelen; az inetorgperson.schema egy inetOrgPerson csoportosítva a sémákban, illetve milyen kapcsolatban állnak objektumosztályt tartalmaz, amely kiegészítõ jellemzõként egymással. Bizonyára mindenki emlékszik, hogy a támogatja az uid használatát, a nis.schema két objektumosz- /etc/openldap/slapd.conf fájlban megadott sémák határozzák tállyal rendelkezik – posixAccount és shadowAccount –, meg, hogy a rekordokban milyen jellemzõket lehet tárolni. mindkettõ megköveteli az uid elérhetõségét, nem különben A sémákat nem elég a /etc/openldap/slapd.conf fájlban az openldap.schema OpenLDAPperson objektumosztálya. felsorolni: minden létrehozott rekordban a megfelelõ sémákat Szerencsére ezeket az adatokat sokkal gyorsabban is beszerez- objectClass állításokkal hozzá kell rendelni az egyes hetjük. A gq LDAP-eszköz segítségével LDAP-kiszolgálónk

30 Linuxvilág Szaktekintély

tályokat. Természetesen ezzel rontjuk a más LDAP-kiszolgálók- 1. lista LDIF fájl egy felhasználói rekord hozzáadásához kal való együttmûködés esélyét, sõt bizonyos alkalmazások mû- ködését meg is akadályozhatjuk, arról nem is szólva, hogy meg- dn: cn=Wong Fei Hung,dc=proba,dc=org csúfoljuk az LDAP RFC-ket. Nem csoda, hogy a szakértõk általá- cn: Wong Fei Hung ban elutasítják a sémaellenõrzés kikapcsolásának ezt a módját. sn: Wong Talán nincs szükség arra, hogy az 1. kódrészlet minden sorát givenname: Fei Hung pontosan elmagyarázzam, a jellemzõk jelentése könnyen meg- objectclass: person érthetõ. Annyit azért megemlítenék, hogy bár nem kell az ösz- objectclass: top szes valaha használni kívánt jellemzõnek értéket adni, néme- objectclass: inetOrgPerson lyik beállítása mégis kötelezõ – ezeket a megfelelõ objektum- mail: [email protected] osztályok megadásában MUST(), MUST() állításokban találjuk telephonenumber: 651-344-1043 meg. Minden általunk megadott jellemzõnek legalább egy, o: Proba a rekordban megadott objektumosztály MUST() vagy MAY() uid: wongfh állításában szerepelnie kell, bizonyos jellemzõk – mint a cn – pedig egy-egy rekordon belül többször is megadhatók. Az 1. listában látható rekordot az ldapadd paranccsal adhat- összes sémájának összes jellemzõjét végigböngészhetjük. juk hozzá az adatbázishoz:

Képünkön látható, hogy a saját LDAP-kiszolgálómon a gq © Kiskapu Kft. Minden jog fenntartva szerint hol találhatók hivatkozások az uid jellemzõre. $ ldapadd -x -D "cn=ldapproba,dc=proba, Képünkön látható Used in objectclasses (Ezekben az objek- dc=org" -W -f ./wong.ldif tumosztályokban használva) lista elárulja nekünk, hogy a kiválasztott jellemzõ – jelen esetben az uid – az uidObject, Az elõzõ alkalommal is hasonló módon alkalmaztuk az a posixAccount, a shadowAccount és az inetOrgPerson ldapadd parancsot. A parancs használatának módjáról az objektumosztályokban tûnik fel, pontosan azokban, amelyeket ldapadd(1) súgóoldalon találni részletes leírást. a grep használatával is megtaláltunk. Az OpenLDAPperson Ha az LDIF fájlban megadott objektumosztályok által megkö- objektumosztály nem tûnik fel a gq ablakában, mivel a kér- vetelt jellemzõk mindegyikét megadtuk, ha a kiválasztott déses LDAP-kiszolgálón a /etc/openldap/slapd.conf fájlban nincs jellemzõket kivétel nélkül támogatják ezek az objektumosztá- olyan parancs, amely az openldap.schema fájl használatát elõ- lyok, és ha az erre utaló parancs megjelenésekor a helyes írná. Miután eldöntöttük, hogy milyen formátumú LDAP-re- LDAP bind jelszót adjuk meg, akkor a rekord bekerül az kordokat szeretnénk használni, bármikor eltávolíthatjuk a szá- adatbázisba. Ha valamelyik feltétel nem teljesül, akkor a mû- munkra szükségtelen objektumosztályokat tartalmazó sémákat. velet végrehajtása sikertelen lesz, az ldapadd pedig kiírja, Gondolom, mindez eléggé zûrös dolognak tûnik, és valóban hogy milyen hiba merült fel. Vagyis: hibáinkból tanulva, pró- az tud lenni, de túl kell esni rajta, hiszen olyan rekordokat kell bálgatással is összeüthetjük a megfelelõ formátumú rekordot. létrehoznunk, amelyek képesek a környezetünk által igényelt Ha egyszer már sikerült eredményre jutni, a többi rekordnál adatok tárolására. Mivel az LDAP meglehetõsen rugalmas, a is ugyanazt a formátumot tudjuk használni, nem kell újra jellemzõk igényeinknek megfelelõ összeválogatásához bizony megszenvednünk a sémával. szükség lehet egy kis bütykölésre. Egy apróságra azért felhívnám a figyelmet. Ha az LDIF fájlunk több rekordot is tartalmaz, ami megengedett, és az LDAP-kiszol- Rekordok létrehozása és hozzáadása gáló hibát észlel, akkor abbahagyja a fájl feldolgozását, és a Ahogy a sémák böngészése, úgy az LDAP-rekordok hozzá- hibás után következõ rekordok beolvasását meg sem kísérli. adása is végezhetõ kézzel és grafikus felületen egyaránt. Az elsõ néhány felhasználó hozzáadásakor tehát, amíg a rekord- A múlt alkalommal kézzel hoztuk létre a fõ szervezet bejegy- formátum valóban véglegessé nem válik, inkább csak egy-egy zését, így elsõ felhasználói rekordunkat is így fogjuk megal- rekordot tartalmazó LDIF állományokkal érdemes dolgozni. kotni. Az eljárás két lépésbõl áll: elõször készítenünk kell egy A rekordok kézi létrehozása kicsit unalmas, de legalább módot különleges, LDIF formátumú szövegfájlt, majd az ldapadd ad egy kis elemzésre és ismerkedésre. Ez a lehetõség különösen paranccsal be kell emelnünk a tartalmát az LDAP-adatbázisba. az LDAP-adatbázis felépítésének kezdetekor fontos. Vessünk egy pillantást az 1. listában látható LDIF-fájlra. Ha már van néhány felhasználórekordunk, akkor valamilyen Mivel minden mást ezek határoznak meg, az 1. lista elemzését a grafikus felületet nyújtó eszköz, például az LDAP benne található objectclass állításokkal fogjuk kezdeni. Ez a Browser/Editor ( http://www.iit.edu/~gawojar/ldap) vagy a felhasználó a top (minden rekord esetében kötelezõ), a person gq (a legtöbb Linux-terjesztésben megtalálható) segítségével és az inetorgperson objektumosztályokkal van összerendelve. is folytathatjuk munkánkat. Ha például a gq-ban rákattintunk A person osztályt azért választottam ki, mert benne található valamelyik rekordra, akkor egy menü bukkan fel, amely egy meg a userPassword (ezt az 1. kódrészletben nem adtuk meg, New Use current entry (Új Pillanatnyi bejegyzés használata) ám Mr. Wong hamarosan jelszót is kap) és a telephonenumber parancsot is tartalmaz, ezzel a kijelölt rekordból készíthetünk jellemzõ – az utóbbira ugyan egyelõre nincs szükségünk, de a másolatot. Így nyilván gyorsabban és egyszerûbben dolgozha- késõbbiekben még lehet. Az inetOrgPerson objektumosztály- tunk, mintha mindent begépelnénk egy LDIF fájlba. ban található az uid jellemzõ, valamint jó pár egyéb jellemzõ is, amelyek késõbb még jól jöhetnek. Jelszavak létrehozása A sémában található MUST és MAY megszorításokat – többek Az 1. kódrészlet kapcsán már utaltam arra, hogy az LDIF között – úgy kerülhetjük meg, hogy a schemacheck off utasí- fájlokban általában nem adjuk meg a felhasználók jelszavait. tással bõvítjük a /etc/openldap/slapd.conf fájlt. Így a slapd.conf Erre a célra egy külön eljárás használható, amely az fájlban hivatkozott sémafájlok bármelyikének bármely jellem- ldappasswd parancsban „testesül meg”. Használata alapve- zõjét használhatjuk, figyelmen kívül hagyva az objektumosz- tõen az ldapadd parancséhoz hasonló:

www.linuxvilag.hu 2003. november 31 Szaktekintély

$ ldappasswd -S -x -D "cn=rendszergazda,dc=upstreamsolutions, 2. lista ACL-ek a /etc/slapd.conf fájlban dc=com" -W "cn=Phil Lesh,dc=upstreamsolutions,dc=com" access to attrs=userPassword by dn="cn=ldapproba,dc=proba,dc=org" write Az ldappasswd parancs használatához nem kell a héjmun- by self write kamenetbe bejelentkeznünk az LDAP-kiszolgálón, elég, ha by * compare a -H kapcsolóval megadjuk a távoli LDAP-kiszolgáló URL-jét: access to * $ ldappasswd -S -x -H by dn="cn=ldapproba,dc=proba,dc=org" write ldaps://ldap.upstreamsolutions.com -D by users read "cn=rendszergazda,dc=upstreamsolutions, by * auth dc=com" -W "cn=Phil Lesh,dc=upstreamsolutions,dc=com" írásmódját, így csak néhány dolgot emelnék ki. Elõször is, az A kapcsoló az ldapadd paranccsal is használható. ACL-ek feldolgozása fentrõl lefelé történik, és az elsõ találat A fenti példában szereplõ ldaps:// URL megadása kötelezõ. jut érvényre, mintha szûrõk kupacáról lenne szó. Fontos tehát,

© Kiskapu Kft. Minden jog fenntartva A -x kapcsolóval egyszerû, nyílt szöveggel történõ hitelesítést hogy a különleges ACL-eket az általánosabbak fölé helyezzük. választottam, így szükségszerûen TLS titkosítással védett kap- A 2. listában például egy olyan ACL-t láthatunk, amely a csolatot létesítek a kiszolgálóval. A múltkor már megmutattam, userPassword jellemzõ elérését korlátozza, ezt pedig egy hogyan lehet TLS-kapcsolatok fogadására beállítani az LDAP- a teljes LDAP-adatbázisra vonatkozó szabály követi. kiszolgálót. A userPassword ACL-t elõre helyezve engedélyezhetjük Nehéz lenne elhallgatnom azt a tényt, hogy LDAP használa- a felhasználóknak saját jelszavuk módosítását (access to takor a felhasználók jelszavainak a kezelése okozza a legtöbb attrs=userPassword by self write), de ez a lehetõség gondot. Ha viszont a felhasználók hozzáférést kapnak az kivételt képez ahhoz képest, hogy a felhasználók bármit ldappasswd parancshoz, akkor helyi /etc/ldap.conf fájlokkal olvashatnak (access to * by users read). és parancsfájlokkal vagy megfelelõ felületet biztosító progra- Ugyancsak hangsúlyoznom kell, hogy a hozzáférési szintek mokkal egyszerûen megváltoztathatják a saját jelszavukat. hierarchiába szervezõdnek. A lehetséges szintek a none, az A más operációs rendszert futtató felhasználók jelszavait azon- auth, a compare, a search, a read és a write, ahol a none ban központilag kell kezelni, és – hacsak nem telepítünk LDAP a legalacsonyabb szint, a write pedig a legmagasabb, és ügyfélprogramot az õ gépükre is – a felhasználók minden jel- mindegyik szint magába foglalja a nála alacsonyabbak által szóváltoztatás alkalmával kénytelenek felvenni a kapcsolatot a megadott jogokat is. Az elsõ egyezés érvényre jutása és a rendszergazdával. A Microsoft Windows alapú munkaállomá- hozzáférési szintek egymást való tartalmazása az a két jelleg- sokhoz a Samba úgy is beállítható, hogy a felhasználók számára zetesség, amelyet az ACL-ek kezelése kapcsán meg kell érteni, lehetõvé tegye LDAP-jelszavuknak a Windows beépített jelszó- már csak azért is, mert gondosan ügyelni kell arra, hogy az kezelõjével történõ megváltoztatását (lásd az „OpenLDAP ACL-ek ne adjanak a kívántnál bõvebb jogokat, de a munká- mindenütt” címû írást a Linuxvilág 2003. januári számában). hoz szükséges hozzáféréseket biztosítsák.

Hozzáférés-vezérlés Összegzés Gyakorlatilag minden olyan tennivalót átvettünk, vagy Az LDAP az általam az utóbbi idõkben látott egyik legbonyolul- legalábbis érintõlegesen megemlítettünk, amelyet egy tabb megoldás. Ha saját elvárásaink szerint szeretnénk munkára OpenLDAP alapú LDAP-kiszolgáló üzembe helyezéséhez bírni, akkor fel kell készülnünk arra, hogy rengeteg próbálga- el kell végezni (kivéve a különféle kiszolgálóalkalmazások tásra lesz szükségünk, naplókban kell hosszasan turkálnunk, és LDAP alapú hitelesítésre való átállításának cseppet sem mind az LDAP-kiszolgáló, mind a segítségével hitelesítést végzõ lebecsülendõ feladatát). Ha erõteljes biztonságra törekszünk, alkalmazások oldalán idegölõ finomhangolást kell végeznünk. márpedig ha az egészbe belekezdtünk, csakis ez lehet a cél, Ha azonban figyelembe vesszük, hogy milyen rugalmas, nagy akkor még egy dologról szót kell ejtenünk: az OpenLDAP teljesítményû és széles körben támogatott hitelesítõ és címtárke- hozzáférés-vezérlési listáiról (ACL). zelõ eszközt kapunk, máris enyhülnek az álmatlan éjszakák Ahogy a slapd démonra vonatkozó beállítások többségének, kínjai. Remélem, hogy írásaim segítségével sikerül ezt a munkát úgy az ACL-eknek a megadása is a /etc/openldap/slapd.conf véghez vinni, vagy legalábbis közelebb jutni a kitûzött célhoz. fájlban történik. Az LDAP kapcsán talán nem meglepõ, hogy az ACL-ek kezelése (is) okozhat némi fejtörést, és a kívánt A cikkhez tarozó Kapcsolódó címek megtalálhatóak az 53. CD eredmény eléréséhez bizony szükség lesz némi kísérletezésre. Magazin/LDAP könyvtárában. A 2. lista az ACL-ek megadására mutat példát. Az ACL-ek részletes ismertetése a slapd.conf(5) súgóoldalon Linux Journal 2003. szeptember, 113. szám található meg, de mûködésük alapjait a 2. kódrészlet alapján is fel lehet ismerni. Minden védeni kívánt LDAP-elemhez meg kell adnunk, hogy pontosan kik kapnak hozzáférést, illetve ez Mick Bauer ([email protected]) milyen szintû legyen. Egyébként a teljes ACL-t egyetlen sorban Biztonsági szakember, a Linux Journal biztonsági meg lehetne adni, de a hagyomány az, hogy minden "by..." témákkal foglalkozó szerkesztõje, biztonsági tanács- állítást külön sorba írunk. A slapd elég okos ahhoz, hogy adó a Minnesota állambeli Minneapolisban található tudja, az "access to" karakterlánc a következõ ACL kezdetét jelzi. Upstream Solutions LLC Inc.-nél. Mick szabadidejében Helyszûke miatt részletesen nem ismertethetem az ACL-ek a gyermekeivel fogócskázik vagy zenél.

32 Linuxvilág Szaktekintély

NSA fokozott biztonságú Linux Rendszered kötelezõ, finomhangolt hozzáférés-beállításaival azt is korlátozni tudod, hogy a rendszergazda mit tehet.

z NSA fokozott biztonságú Linux gyökerei a korábban hez. A csomagokat folyamatosan fejlesztik a Debian üzembiz- megjelent, nagy bizalomnak örvendõ operációs rend- tos és fejlesztõi változataihoz. Mivel az SE Linux a GPL felhasz- szerig (DTOS) és a Flaskig (Flux advanced security nálási szerzõdés hatálya alá esik, bárki hozzáírhat és saját kernelA – Flux fokozott biztonsági rendszermag) nyúlnak vissza. módosításokat készíthet. Az SE Linuxot 2.4.19-es és frissebb A DTOS projekt az amerikai National Security Agency (NSA) rendszermagokon lehet használni, és e cikk írásakor – 2003 és a Secure Computing Corporation (SCC) 1990-es évek eleji- májusában – a 2.5-ös rendszermagra is fejlesztik. közepi együttmûködésének az eredménye. A cél egy, a stan- dard biztonsági módszereknél erõsebb biztonsági eljárásokkal Miért van szükség a módosított alkalmazásokra? bíró operációs rendszer készítése volt. A Flask-szerkezet az Mint azt már korábban említettük, az SE Linux egy rendszermag- NSA, az SCC és a University of Utah Flux projektjének a foltból és módosított segédprogramokból áll. A módosított segéd- végeredménye, amelyet „kibõvítettek, hogy jobban megfeleljen programok teszik lehetõvé, hogy a rendszer minden fájlja helyes a változó biztonsági elõírásoknak” (Stephen Smalley „Flask: biztonsági tartalommal bírjon. A segédprogramoknak módosított Flux Advanced Security Kernel”, NAI Labs, 2000. december 26.; változatai is léteznek, például a login, a cron és a logrotate,  ps ls login http://www.cs.utah.edu/flux/flask). valamint olyan programok, mint a és az . A eseté- © Kiskapu Kft. Minden jog fenntartva Az SE Linux megköveteli a hozzáférés-beállítást (Mandatory ben például létfontosságú a helyes biztonsági környezet, amikor Access Control – MAC), míg egy átlagos Unix-rendszer tetszés felhasználó bejelentkezik a rendszerbe. Ha ez nem él, akkor szerinti hozzáférés-beállítással dolgozik (Discretionary Access elképzelhetõ, hogy a felhasználó egyáltalán nem tud belépni. Control – DAC). A DAC esetében a felhasználó szabja meg, A login csomag telepítését a „Hogyan kezdjük?” fejezet írja hogy az egyes elemeknek mekkora hozzáférésük legyen az le az SE Linux HOWTO-jában (lásd a Kapcsolódó címeket), és ez egyes területeken. Egy Unix-rendszeren például alkalmazhat- nem is tartozik e cikk keretei közé. Ha azonban az SE Linux juk a chmod parancsot a saját könyvtárrendszerünk engedé- telepítésekor elfelejtjük felrakni a login csomagot, ez azt lyeinek megváltoztatáshoz. A MAC esetében a hozzáférés-be- eredményezi, hogy nem lesz megfelelõ kód kiadva a terminál- állítást egy magasabb szinten lévõ felhasználó szabja meg, nak (terminal device), ahol az újraindítást követõen bejelent- õ határozza meg a biztonsági beállításokat, amelyek megadják kezne, és ez lehetetlenné teszi a bejelentkezést. A módosítatlan az egyes elemek jogait. Ha létezik egy olyan szabály, amelyik login program szintén futtat egy héjprogramot a biztonsági megakadályozza, hogy Bob megnézze Alice otthoni fájljait, és környezetben, amely letiltja a fájlok hozzáférését a felhasználó Alice kiadja a chmod 777 utasítást az otthoni könyvtárában, saját könyvtárában. Például a login és cron foltjai megmond- Bob ennek ellenére sem tudja megnézni õket. ják a rendszermagnak, hogy melyik biztonsági környezetet A MAC-et használva a programok minimális jogosultságokkal alkalmazza. Ezek tényleges végrehajtását a rendszermag végzi. futnak, egy „megtámadott” folyamat nem tud hozzáférést adni A címkézés létfontosságú, ezért van szükség néhány módosí- a saját forrásaihoz olyan más folyamatok számára, amelyeknek tott programra. Mindenki elkészítheti a saját biztonsági irányel- ez eredetileg nincs engedélyezve. Ez mérsékli a károsodás veit, amelyek a módosított csomagok telepítése nélkül is alap- mértékét abban az esetben, ha egy démon megsérülne. A biz- szintû védettséget biztosítanak, de az alapbeállítás kifinomul- tonsági beállítások számos tényezõn múlnak, például a felhasz- tabb biztonsági rendszert eredményez. náló jogosultságain, a futtatott program jellegén, azon, hogy mennyire megbízható a program, és milyen a kezelt adatok Gyakran használt kifejezések titkossági szintje vagy épsége. Az alábbi kifejezésekkel mindig találkozhatunk, ha az SE Linux leírását vagy a levelezõlisták hozzászólásait olvassuk. Fontos, Mi az SE Linux? hogy ezekkel minél jobban megismerkedjünk, még mielõtt Az SE Linux egy rugalmas, finomhangolt hozzáférés-beállítás telepíteni próbálnánk az SE Linuxot, ezáltal ugyanis a késõbbi a Linux-rendszermagban, amely jelenleg az LSM-vázat alkal- munkánkat is megkönnyítjük. mazza (lásd Linux Journal, 2002. november, Greg Kroah-Hart- • Tartomány man „Using the Kernel Security Module Interface”). A jelenlegi Egy tartomány részletezi, hogy az egyes folyamatok mit felhasználáskor az LSM-csatoló csak a korlátozó hozzáférés- tehetnek meg, és mit nem, illetve azt, hogy egy folyamat beállítást támogatja, ezért ha a Unix-engedélyek leállítanak egy milyen mûveleteket hajthat végre eltérõ típusokon. Ha a mûveletet, azt az SE Linux sem engedélyezheti. Az SE Linuxot felhasznalo_t tartományban vagyunk (megkötések általában további korlátozások életbe léptetésére használják nélküli felhasználó tartomány) és a ps aux parancsot olyan rendszereken, ahol Unix-engedélyek élnek, és ez magá- futtatjuk, akkor csak a felhasznalo_t tartományban tól is meglehetõsen jól tudja a szükséges hozzáférés-beállítá- futó programokat látjuk. Egyéb példák a tartományra: sokat. Az SE Linux egy rendszermagfoltból és más segédprog- a sysadm_t, a rendszergazdai tartomány és az init_t, ramokhoz tartozó foltok áll, ilyen például a login és cron. amely az a tartomány, amelyben az init fut. A passwd_t Az NSA felel a hivatalos változatokért. Néhány, nem az tartományban a passwd programot egy jogosultságokkal NSA-ban dolgozó személy is hozzájárult kódokkal a projekt- nem rendelkezõ felhasználó futtathatja.

www.linuxvilag.hu 2003. november 33 Szaktekintély

• Jogosultságok uid=1000(faye) gid=1000(faye) A jogosultság határozza meg, hogy mely tartományokat groups=1000(faye) lehet használni. Az irányelveket tartalmazó adatbázis context=faye:felhasználó_r:felhasználó_t (policy database) határozza meg az egyes felhasználók által sid=45 hozzáférhetõ tartományokat. Ha egy adott felhasználónak nincs engedélye (a beállításfájlban) belépni egy tartomány- Ebben az esetben a biztonsági környezet azonosító része ba, akkor letiltják. Két példa a jogosultságokra: az átlagos, faye. Láthatjuk, hogy az uid 1000. Tegyük fel, hogy faye jogosultságokkal nem rendelkezõ felhasználói szerep ezután beüt egy su parancsot, és ismét futtatja az id (felhasznalo_r) és a rendszergazdai jogosultság parancsot. Most ezt látja: (sysadm_r). Nézzük a következõ példát: ahhoz, hogy egy felhasz- uid=0(root) gid=0(root) groups=0(root) náló a felhasznalo_t tartomány alól egy passwd context=faye:felhasználó_r:felhasználó_t parancsot hajtson végre, a felhasznalo_r jogosult- sid=453 ságú felhasználónak kell begépelni: passwd_t; – ez a vonatkozó beállításfájlban van megadva. Ezenkívül más A várttól eltérõen az azonosító nem változott rendszergaz- tartományátmeneti szabályokat is fel kell állítani, ezek dára, de az uid 0-ra változott. Ha azonban a faye felhasz- bõvebb ismertetésérõl azonban terjedelmi okokból le kell nálónak engedélye van a rendszergazda jogosultság alkal-

© Kiskapu Kft. Minden jog fenntartva mondanunk. Ez a hozzáadott kód szabja meg, hogy egy mazására vagy sysadm_r-re, akkor ezt megteheti: a kon- felhasználó „felhasználói” (user_r) jogosultságokkal zolnál történõ bejelentkezéskor megadja, hogy õ szuperfel- elérhesse a passwd_t tartományt ahhoz, hogy lefut- használó kíván lenni, vagy a newrole -r parancsot adja ki tassa a passwd parancsot. Más kérdés az, hogy vajon – errõl még szólunk a továbbiakban. Ha ezt követõen újból a régi tartománynak van-e jogosultsága átlépni az új futtatja az id parancsot, ezt látja majd: tartományba. Most, hogy meghatároztuk a tartományokat és a szabályo- context=3Dfaye:sysadm_r:sysadm_t kat, összehasonlíthatjuk az SE Linuxot és a Unix uid-ot (felhasználói ID). Ha a rendszergazda ural egy programot, Így az azonosító ismét ugyanaz marad, de a jogosultság amelynek az Unix engedélye 4777 (ez a programot „setuid” és a tartomány (a második és harmadik mezõ) megválto- rendszergazdává teszi), akkor a rendszer bármelyik felhasz- zik. Az azonosító ilyen módon történõ megtartása ott nálója végre tudja hajtani azt a programot, biztonsági hibát hasznos, ahol a felhasználó megbízhatósága megköve- okozva ezzel. Az SE Linuxon azonban ha egy mûvelet átlép telhetõ. Ez létfontosságú a rendszer biztonsága szempont- egy védett tartományt, és ha a mûvelet jogosultsága nem jából is, mivel a felhasználó azonosítója határozza meg, engedélyezett azon a tartományon, akkor a program nem hogy mely szerepeket és tartományokat lehet használni. fog futni. Az SE Linux-rendszereken minden mûvelet egy Egy átlagos Unixon, ha az embernek van egy setuid olyan tartományon fut, amelyik megszabja, hogy az egyes vagy egy setgid programja, amely nem mindenki álltal mûveletek milyen hozzáférési joggal rendelkeznek. futtatható, ennek elindíthatóságát nemcsak a bejelent- • Azonosító kezett felhasználó engedélyei szabják meg, hanem az Az SE Linux alatt az azonosító nem ugyanazt jelenti, mint is, hogy mely felhasználó felé végeztünk legutoljára egy a hagyományos Unix uid, amit az olvasók talán ismernek su keresést. Ez a megkötés nem létezik az SE Linux alatt, is. Az SE Linux alatt az azonosítók annak a biztonsági kör- mivel az az egyén azonosítóját minden mûvelet végre- nyezetnek részei, amelyek azt irányítják, hogy mit tehet hajtásakor rögzíti. Ha egy tartományon nincs engedé- meg az ember, és mit nem. Elképzelhetõ, hogy egy SE lyünk setuid/setgid program futtatására, akkor nem fog- Linux azonosítónak és egy hagyományos Unix bejelentke- juk tudni futtatni, mégha egy su-val a rendszergazdává zési névnek ugyanaz a szöveges megjelenítése (és legtöbb- váltunk. A jogosultságod határozza meg, hogy mely tarto- ször a könnyebbség kedvéért ez igaz is), de fontos megér- mányba van engedélyed belépni, az általad megadható tenünk, hogy két különbözõ dologról van szó. Alapértel- jogosultságokat pedig az azonosítód szabja meg. Ebbõl mezés szerint ugyanazok, ha a kérdéses SE Linux azono- kifolyólag az azonosító közvetve irányítja az általad hasz- sító létezik. Ebbõl kifolyólag, ha faye felhasználóként nálható tartományok listáját. jelentkezem be az SE Linux-rendszerbe, és az irányelv- • Típus adatbázisban szerepel faye, akkor az én mûveleteimhez Minden tárgy egy típus alá van sorolva, ez a típus hatá- a faye azonosítót rendelik. rozza meg, hogy mi férhet hozzá az adott tárgyhoz. Vegyük például a su parancsot a Unix-felhasználó ID-k A tárgyak jelen esetben fájlok, könyvtárak, foglalatok és az SE Linux azonosítók különbségeit bemutatandó. (sockets) és más mûveletek. Egy típus elgondolásában A su futtatása nem változtatja meg a felhasználói azono- a tartományhoz hasonlít, a különbség az, hogy a tarto- sítót az SE Linux alatt, de megváltoztatja az uid-ot, ahogy mány csak a mûveletekre vonatkozik. Másként fogal- azt a nem SE Linux-rendszeren is tenné. Ha a faye fel- mazva: a tartomány egy olyan típus, amelyik a mûvele- használó az SE Linux-rendszeren gépelné be, hogy su tekre vonatkozik. ahhoz, hogy rendszergazda lehessen, majd lefuttatná az • Átmenet id parancsot, amely kiadja az õ biztonsági környezetét és Egy lekért mûvelet során megváltozó biztonsági környezet egyéb adatait, akkor láthatná, hogy az azonosítója továbbra átmenetére vonatkozik. Az átmenet két csoport egyikébe is faye, nem pedig root, az uid azonban megváltozott. tartozik. Az elsõ csoport a tartománymûveletek átmenete. Hogy ezt jobban érzékeltessem: ha egy átlagos felhasználó Amikor egy adott programot futtatunk, az átmenet indul- a faye loginnal futtatja az id parancsot, akkor a követ- hat a jelenlegi tartományból egy új tartománymûvelet felé. kezõ biztonsági környezetet látja: Ennek bemutatására a newrole parancsot használom.

34 Linuxvilág Szaktekintély

A newrole parancs a szereped megváltoztatását szolgálja, megkötõ módban, ha meggyõzõdtél róla, hogy az rendesen mondjuk a felhasznalo_r-rõl a sysadm_r-re – feltéve, mûködik, és már egy ideje rendesen futott megengedõ mód- hogy sysadm_r-ként van hozzáférésed. Ha ban. Ne feledd, hogy ha a rendszermagba nincs befordítva felhasznalo_r-ként indulsz (ez az átlagos, jogosultsá- a fejlesztõi támogatás, akkor itt nem futtahatod megengedõ gokkal nem rendelkezõ felhasználó), és lefuttatsz egy módban a rendszert. Ha a rendszermagban be van kapcsolva newrole -r sysadm_r-t, hogy megváltoztasd a fejlesztõi támogatás, akkor a gép megengedõ üzemmódban sysadm_r-t, a rendszergazdai szerepet, átmenetet képezel indul, és kézzel kell megkötõ módra kapcsolnod. Ezt könnyen a felhasznalo_t tartományból a newrole_t felé (ez az megteheted egy indító parancsfájl segítségével. A másik a tartomány, ahol az új jogosultság mûvelet futni fog), és megoldás, hogy kiépítesz egy ilyen utat: onnan pedig a sysadm_t tartomány felé. A második átmeneti kategória a fájltípusok átmeneti jellege, /etc/rc.boot/avc and /sbin/ amikor fájlt nyitunk egy adott könyvtár alatt. Ha egy avc_toggle felhasználó egy fájlt hoz létre a saját könyvtárában, akkor annak a fájlnak a címkéje user_home_t lesz. De ha Újabb megoldás: írd be a rendszermag parancssorába, hogy ugyanez a felhasználó egy fájlt a /tmp-ben hoz létre, akkor enforcing=1. Az avc_toggle parancsot használhatod az a fájl a user_tmp_t címkét kapja. A user_tmp_t a a megengedõ és a megkötõ mód közti változtatásra, és /tmp típusból lett elvonva, amely a tmp_t, és abból a avc_enforcing parancsot használhatod annak megállapí-

tartományból, ahol a fájlt létrehozták, ez a user_t. Amikor tására, hogy megkötõ módban vagy-e éppen. © Kiskapu Kft. Minden jog fenntartva a felhasználó létrehoz egy fájlt a /tmp alatt, átmenet zajlik le a user_tmp_t típus felé. Hogyan tovább? • Irányelvek E cikk olvasása után remélhetõleg kedvet kaptál az SE Linux Egy irányelv határozza meg, hogy mely típusok mely kipróbálásához. Szándékosan hagytam ki a telepítési útmuta- mûveleteket hajthatják végre az egyes tartományokban. tót, mivel RPM-ek, az úgynevezett source tarballs vagy Debian- Minden démonnak megvan a saját irányelve és a névadási csomagok segítségével is telepíthetsz. Az alapvetõ lépések szabály az démon-name.te, postfix.te, apache.te stb. Egy SE leírása egy külön cikket is megtöltene. Egy sereg új dolgot meg Linuxot futtató gép rendszergazdájaként tetszés szerint lehet tanulni a telepítés elõtt, közben és után, és az új felhasz- szerkesztheted az irányelv fájlokat. Az irányelv-adatbázis nálók gyakran összezavarodnak. De ha – még mielõtt bármibe az irányelvek forrásfájljainak az összesített listája, amit a is belefognál – elolvasod a Kapcsolódó címek részben megneve- rendszermag tölt be indításkor. zett dokumentumokat és megismerkedsz a gyakran használt fogalmakkal, az egészet valamivel könnyebbnek találod majd. SE Linux rendszeren a spasswd programot használjuk a Ha elakadsz, izzítsd be kedvenc IRC-ügyfeledet, és menj a jelszó megváltoztatására. A spasswd gyakorlatilag a bur- #selinux csatornára a  http://irc.debian.org alatt, vagy kolója (wrapper) a Linux-rendszeren használt passwd-nek, iratkozz fel az SE Linux-levelezõlistára. ez biztosítja, hogy a passwd program a helyes tartományon fusson. Ugyancsak ez biztosítja azt is, hogy az SE Linux-azo- Linux Journal 2003. augusztus, 112. szám nosítód megegyezzen az egyébkénti Unix-azonosítóddal. Korábban említettem, hogy az átlagos Unix-felhasználó ID-k Faye Coker sokban különböznek az SE Linux-azonosítóktól, de akkor Jelenleg szabadúszó rendszergazda. Gyakran most, amikor a spasswd-t futtatom, miért kell egyezniük? futtat ISPs-rendszereket és állít át kiszolgálókat A spasswd követeli meg, hogy az SE Linux-azonosítóneved Linuxra. Dolgozott Európában és Ausztráliában. megegyezzen a Unix-azonosítóddal. Emlékezz csak, az SE A kelleténél többször kérdezik meg tõle Linux-kon- Linux-rendszeren az azonosítód az egyetlen módja annak ferenciákon, hogy „eltévedtél?”. azonosítására, hogy ki is vagy. Tehát ha legutóbb nem te voltál a megadott Unix-felhasználó, akkor nem tudod  megváltoztatni a jelszót. Ha rendszergazda vagy (sysadm_r), egy másik felhasználó KAPCSOLÓDÓ CÍMEK jelszavának a megváltoztatásra a sadminpasswd programot használhatod. A sadminpasswd esetében nem él ez az azonos Flask (Flux Advanced Security Kernel) felhasználónév/azonosító megkötés, mint a spasswd-nél, de  www.cs.utah.edu/flux/flask a sadminpasswd csak sysadm_t-ként futtatható. Getting Started with SE Linux HOWTO  sourceforge.net/docman/display_doc.php? Megengedõ és megkötõ módok docid=15285&group_id=21266 Az SE Linux kétféle üzemmódban futtatható: megengedõben NSA Official SE Linux oldal  www.nsa.gov/selinux vagy megkötõben. A megengedõ módot hibakeresés céljából  használjuk, mivel ott minden naplózódik, de az SE Linux NSA SE Linux GYK www.nsa.gov/selinux/faq.html valójában nem köti magát az irányelveidhez. A felhasználó NSA SE Linux White Papers  továbbra is tud rendszergazdaként végrehajtani dolgokat, csak- www.nsa.gov/selinux/docs.html úgy, mint egy átlagos Linux-rendszeren. Amíg meggyõzõdsz SE Linux levelezõlista  www.nsa.gov/selinux/list.html róla, hogy minden irányelv kielégítõen mûködik, legjobb a SE Linux archívum  marc.theaimsgroup.com/?l=selinux gépet megengedõ módban futtatni. Címkéket adunk a rend- SourceForge SE Linux Project oldal szerben található tárgyaknak, de semmit sem kényszerítünk ki.  http:/sourceforge.net/projects/selinux A megkötõ mód a már megadott irányelveket használja, példá- ul a hozzáférés-beállításokat. Csak akkor indítsd a gépedet

www.linuxvilag.hu 2003. november 35 Szaktekintély

ChessBrain

Ha egyetlen számítógép is megver sakkban, mi lesz, ha 646 fog össze ellened?

dén májusban 646 gép mûködött együtt egyetlen sakk- Amikor a kiszolgáló és az ügyfelek jól mûködtek, a hangsúly parti lejátszásában. Ez volt az elsõ alkalom, amikor ilyen arra tevõdött át, hogy a ChessBrain képes legyen sakkozni. I  eredményt könyvelhettek el, és ezt a Linux, a nyílt A hollandiai wbec-ridderkek ( http://www.wbec-ridderkek.nl) programkód és 37 ország több száz programozójának együttes honlap közel 200 szabadon elérhetõ sakkprogramot sorol föl. ereje tette lehetõvé. Átnéztem néhányat, A ChessBrain ( http://chessbrain.net) egy osztott számítási viszonylag tiszta és program, ami a hálózaton elérhetõ gépek kihasználatlan szá- több operációs rend- mítási kapacitását aknázza ki nagy számításigényû feladatok szeren fordítható

© Kiskapu Kft. Minden jog fenntartva megoldására. A ChessBrain-rendszer sakkjátszmák lejátszására kódot keresve. Töké- összpontosít, de a háttérrendszer más játékokhoz vagy nem letes programnak játék jellegû feladatokhoz is átalakítható. bizonyult a Beowulf, Képzeljünk el egy teljesen szokványos játszmát, azzal a különb- amit Colin Frayn írt, séggel, hogy az ellenfél minden lépése után telefont ragadunk aki akkor az angliai és elkezdjük fölhívni a barátainkat, hogy adjanak tanácsot. Cambridge Egyetem Elmagyarázzuk az állást az elsõként hívott barátunknak, és doktorandusza volt. megkérjük, hogy hívjon vissza, ha van valami ötlete. Azután Váltottunk jó néhány másvalakitõl kérdezzük meg, hogy aggódnunk kell-e egy kü- levelet, és Colin szöbön álló támadás miatt, és õt is megkérjük, hogy hívjon visz- beszállt a fejlesztés- sza, ha megvan a válasz. Valahogy így sakkozik a ChessBrain. be. Végig hálózaton A ChessBrain két része a SuperNode nevû, Linux alapú kiszol- keresztül folytattuk gálóalkalmazás és a PeerNode nevû ügyfélprogram. A Super- az együttmûködést, Node egy hálózati játékkiszolgálóhoz csatlakozik, ami lehetõvé elektronikus levelek teszi, hogy a bejelentkezett tagok egymás ellen játsszanak, és csevegõüzenetek kihívják a ChessBraint, vagy figyelemmel kísérjék a ChessBrain (instant messaging) és pillanatnyi ellenfele játszmáját. A ChessBrain játék közben segítségével, és el- megvizsgálja az állásokat, lehetséges lépések százait küldi el kezdtük a szükséges feldolgozásra a távoli PeerNode-ügyfelekhez, begyûjti a vála- változtatásokat. szokat, feldolgozza õket, és meglépi a legjobb lépést. A Chess- Colin osztott számí- Brain hálózatba kötött gépek folytonosan változó halmazaként táshoz igazította a létezik. Ez mind filozófiai, mind tudományos szempontból sakkprogramját, én nézve gyönyörû. pedig módosítottam A ChessBrainnel 2001 nyarán kezdtem el foglalkozni mint a SuperNode és osztott számítási kísérlettel. Az év végére elkészült egy mûködõ PeerNode programo- prototípus, szükségem volt tehát egy helyre a kiszolgálóprog- kat, hogy használ- ram számára. Régi barátom, Walter Howard, a HackerWacker hassák a sakkprog- honlap ( http://hackerwacker.com) gazdája felajánlotta a saját ramot. A London és T1 vonalát a kiszolgáló elhelyezésére. Los Angeles közötti 2002. június 9-én a ChessBrain föltûnt a Slashdoton, a kedvezõ idõeltolódás éppen hírverés hatása pedig több száz új PeerNode-ot futtató fehasználó megfelelt nekünk. megjelenésében mutatkozott. Egyikük, Gavin Roy, a bteg hálózat Üzentem Colinnak  ( http://www.bteg.net) tulajdonosa, felajánlotta, hogy ingyen délután háromkor, 1. kép Az elsõ ChessBrain-kiszolgálók helyet biztosít a SuperNode-kiszolgálónak. Június 27-én Gavinnel és utána a nap folya- ebédeltem, és átnyújtottam ennek a jószerivel idegen fickónak mán. Az én délutá- egy SuperNode-kiszolgálót egy Pentium III gépen. A ChessBrain nom közepe felé Colin lefekvéshez készülõdött, és én végig- gazdagabb lett egy kiszolgálóval, én pedig egy baráttal, Gavin dolgoztam az õ éjszakáját. Összeomlás elõtt küldtem neki ugyanis a ChessBrain egyik fontos támogatója lett. Áthelyeztem valami visszajelzést. Ez az egész napos ciklus hónapokig a SuperNode-kiszolgálót Gavin oldalára, Walt pedig tovább folytatódott. üzemeltette az eredetit tartalék- és kísérleti kiszolgálóként. Colin eredeti Beowulf sakkprogramjából két sakkozó összete- Az ezt követõ hónapok során hihetetlen mértékû figyelem võt hozott létre BeoServer és BeoClient néven. Úgy alakította irányult ránk. Nem úgy tûnt, mintha bárkit is zavarna, hogy ki ezt a párost, hogy a ChessBrain keretein belül játszhassanak a ChessBrain tulajdonképpen nem tud sakkozni. 2002 elsõ le sakkjátszmákat. 2002. december 22-én a ChessBrain leját- nyolc hónapja a SuperNode-kiszolgálón végzett munkával és szotta elsõ osztott számítással végzett sakkpartiját. 2003 január- a PeerNode-ügyfél Microsoft Windows és Apple Mac OS X jára a ChessBrain-közösség 62 gépet üzemeltetett és rendsze- rendszerre történõ átültetésével telt. resen tesztelte az új programváltozatokat.

36 Linuxvilág Szaktekintély

Áttekintés mûködése nem függ a bájtsorrendtõl, így az adott helyzetben A SuperNode és a PeerNode többszálas C++-program, amit ez volt a legjobb megoldás. GCC-vel fordítottunk Red Hat Linux 7.1, 7.2 és 8.0 rendszeren. A PeerNode eredeti felépítése szerint két külön folyamatban Az elsõdleges SuperNode-kiszolgáló Slackware 8.0 alatt fut futtatta az ügyfélprogramot és sakkprogramot. A PeerNode a bteg hálózat észak-kaliforniai telepén (1. kép). indította a sakkprogramot, és a szabványos kimenet átirányítá- Mivel az alkalmazások erõsen többszálasítottak, sok idõt kellett a sával hozott létre laza kapcsolatot. Eredetileg el akartuk kerülni szálakkal kapcsolatos gondok megoldására fordítanom. A GDD a sakk-kód beültetését a PeerNode-ügyfélbe, hogy a program és a DDD mellett egyedi naplózással kezeltem a hibakeresési késõbbi változataiban könnyen és gyorsan lecserélhessük. feladatokat. A fejlesztési folyamat korai szakaszában a Perl-pa- Késõbb biztonsági megfontolásból statikus csatolásra tértünk rancsfájlok különösen alkalmasnak bizonyultak az új szolgálta- át. A gondot az okozta, hogy lehetett olyan sakkproxy progra- tások kipróbálására és a program terheléses tesztelésére. 12 gé- mot írni, ami a PeerNode és a valódi sakkprogram között pem van otthon, ezek egy seregnyi, a helyi kiszolgálót bombázó helyezkedik el. Ez könnyen lehetõvé tette volna az eredmé- Perl-parancsfájllal tekintélyt parancsoló teszteszközt alkottak. nyek megváltoztatását, mielõtt a SuperNode-kiszolgálóra

XML, SOAP és webszolgáltatások A fejlesztés kezdetén világos volt, hogy a SuperNode kiszolgá- lónak kapcsolatot kell tartania más kiszolgálókkal. Akkoriban

az XML megfelelõ megközelítési módot jelentett, és késõbb az © Kiskapu Kft. Minden jog fenntartva XMLRPC (http://www.xmlrpc.org) további elõnyöket nyújtott. Az egyszerû objektumelérési protokoll (Simple Object Access Protocol, SOAP) a más kiszolgálókkal beszélõ kiszolgálók igényének kielégítése irányába fejlõdött. A kedvezõbb együtt- mûködés lehetõsége bátorított arra, hogy a SOAP legyen a SuperNode-kiszolgáló és a PeerNode-ügyfelek közötti kapcso- lattartás eszköze. Kívülrõl nézve a SuperNode úgy mûködik, mint egy webkiszolgáló SOAP alapú csatlakozófelületekkel. Bár a SuperNode-kiszolgáló GET- és POST HTTP-üzeneteket is használ, a POST a gyakoribb. A SuperNode HTTP és XML alapú SOAP-kéréseket fogad, feldolgozza õket, és HTTP-cso- magokat küld vissza, beágyazott SOAP kihelyezésekkel. 2. kép Java alapú CBMoc A SuperNode és a PeerNode feldolgozza a SOAP-kéréseket, és a parancsokat egy belsõ parancselosztónak továbbítja, ami biztosítja, hogy a megfelelõ parancskezelõ dolgozza fel a ké- rést. A SuperNode-ban a leggyakoribb kérések a PeerNode- ügyfelektõl érkeznek; a PeerNode-nak kapcsolódnia kell, hogy lekérhesse a következõ feldolgozási egységet. A feldolgo- zási egység olyan XML-blokk, ami egy játékállást ír le, és uta- sításokat ad arra nézve, hogy az állást hogyan kell elemezni. A PeerNode egy teljes sakkprogrammotort tartalmaz, amit statikus könyvtárként fordítunk. Amikor a PeerNode meg- kapja a feldolgozási egységet, értelmezi a SOAP-választ, kibá- nyássza a feladatra vonatkozó adatokat és utasításokat küld a sakkmodulnak. Ezután a SuperNode-kiszolgáló a pillanatnyi állást elküldi a külsõ BeoServer folyamatnak. A folyamatközi kapcsolattartás két csõ segítségével valósul meg. A közeljövõben a BeoServer terveink szerint külön gépre kerül, és UDP 1000Base-T ethernet alkalmazására állunk át. 3. kép Valós idejû OpenGL-leképezés Biztonság A biztonságos és hiteles üzenetváltás lényeges a ChessBrain kerülnek. A statikus csatolás mellett két fontos elõnye miatt számára. Egy rosszindulatú felhasználó egy meghamisított döntöttünk: az egyik a nagyobb biztonság, a másik pedig eredménnyel elronthatná a játékot és kínos helyzetet teremt- a függvényalapú adatátadás az I/O alapú helyett. hetne. Az érzékeny adatokat a továbbítás során az AES A Slashdotról kiinduló érdeklõdéshullám szükségessé tette Rijndael nevû fejlett titkosítási szabvány (Advanced Encryption a ChessBrain sávszélességigényének a korlátozását. Ebbõl a Standard) védi. Az AES a belga Joan Daemen és Vincent Rijmen szempontból nézve, bár a SOAP számos elõnyös tulajdonság- által kifejlesztett változó blokkhosszúságú, szimmetrikus gal bír, a mérete némi kívánnivalót hagy maga után. titkosítási algoritmuson alapul, aminek a kiöregedõ DES és Ma már a zlib tömörítõkönyvtárat ( http://www.zlib.org) háromszoros DES szabvány kiváltása a célja. használjuk a titkosítás elõtt a SOAP alapú üzenettovábbítás Mielõtt a Rijndaelt felfedeztük volna, a Blowfish szimmetrikus méretének csökkentésére. A tömörítés és a titkosítás korlátozza kódolót használtuk, de a PeerNode Mac OS X rendszerre törté- az együttmûködési lehetõségeket, ugyanakkor az XML-tömö- nõ átültetésekor az általunk használt Blowfish-megvalósításban rítési szabvány ( http://www.w3.org/TR/xmlenc-core) egy gondok merültek fel a bájtsorrend körül. Az AES algoritmus másik megközelítési módot kínál.

www.linuxvilag.hu 2003. november 37 Szaktekintély

1. lista A ChessBrain XML-válaszcsomag Honlap XML/Soap chessbrain.net proxy SuperNode Játékkövetõ Egyszerû SOAP- figyelõ C/C++ / Perl Parancselosztó PeerNode

Beo ügyfél xmlns:cbs="http://www.chessbrain.net"> MySQL Beo kiszolgáló adatbázis PeerNode Összeköttetési csatornák Figyelõ rn1qk2r/p2p1ppp/bb2pn2/1p6/1P6/ P2Q1NP1/1BP1PP1P/RN2KB1R b KQkq - TCP/IP titkosított/tömörített C/C++ / Java / Perl SOAP HTTP felett TCP/IP telnet TCP/IP SOAP HTTP felett I/O lépcsõ

© Kiskapu Kft. Minden jog fenntartva TCP/IP adatbázis-kapcsolat

A ChessBrain-rendszer felépítése 2. lista Egy XML kiszolgáló-állapotjelentés

Botok, jelenlét és önálló játék A SuperNode-kiszolgálónak van egy Shannon nevû botja Jó szórakozás volt a Shannon programozása, és a bot ma már sokféle parancsot ismer. Nagy lehetõségek rejlenek a felhasz- Brain fejlesztése során letöltöttem a Free Internet Chess Server Pentium 200 MMX Toshiba laptopon. A FICS C nyelvû, és a tartományon elhelyezett ChessBrain-kiszolgálóra vittük át. valamelyik játszmafigyelõ programunkat. ( http://www.chessbrain.net/viewers.html). Anthony Bravo írt egy Java nyelvû hálózati figyelõprogramot, ami a világszerte éppen mûködõ PeerNode-okat mutatja. A felhasználók a csomópontokra kattintva megtudhatják, hány aktív ügyfél van az adott országban. A ChessBrain-honlapon található összes játszmakövetõ prog- játékállást a SuperNode-kiszolgálótól, a következõt írjuk ram a SOAP segítségével tart kapcsolatot a SuperNode-dal. a böngészõ címsorába: Biztonsági megfontolásból az olyan bõvítmények, mint a Java és a Macromedia Flash ActionScript nem engedélyezik, hogy http://www.chessbrain.net/ a program más kiszolgálóhoz csatlakozzon, mint amelyikrõl xmlproxy.php?command=CBSGetPos letöltötték. Ezt az akadályt egy egyszerû XML proxy parancsál- lománnyal kerültem meg, ami HTTP GET-kéréseket fogad az A kiszolgáló válaszul egy SOAP-csomagot küld, amilyet a fenti egyik kiszolgálón, és az ügyfél nevében csatlakozik a Super- ábrán is láthatunk. A Mozilla böngészõben az oldal forráskódját Node-kiszolgálóra. Ha például le akarjuk kérni a pillanatnyi megnézve látható a SOAP állomány.

38 Linuxvilág Szaktekintély

A SuperNode megfigyelése Összegzés Egy kiszolgáló egészségi állapotának nyomon követése fontos Jelenleg a ChessBrain egy mûködõ prototípus, ami több száz része a rendszerfelügyeletnek. A fejlesztõk szerencséjére a gépen futtatva sakkozik Linux, FreeBSD, Mac OS X és Linux sokféle módon megkönnyíti a kiszolgálók megfigyelését. Microsoft Windows operációs rendszeren. Nemzetközimester- A Linux /proc virtuális fájlrendszere valóságos aranybánya az szinten játszik, és számos lehetõséget látunk a további értékes rendszeradatok szempontjából, ami a fejlesztõk fejlesztésére. számára könnyebbé teszi a rendszermûködés beállítását és A ChessBrain jó példa arra, hogyan oldható meg egy összetett nyomon követését. A /proc/net/dev olyan adatokat mutat, mint feladat nyílt forrású eszközökkel. Arra készülünk, hogy a a hálózati illesztõn küldött és fogadott bájtok és csomagok ChessBrain kódját is nyílt forrású modellben fejlesszük tovább, száma, a /proc/meminfo pedig bõséges statisztikával szolgál a azt remélve, hogy mások is csatlakoznak erõfeszítéseinkhez. memóriahasználatról. Aki az adatokat nem szereti a /proc fájl- A ChessBrainben az a csodálatos, hogy annyira sokféleképpen rendszerbõl kibányászni, a sysinfo() segítségével könnyen lehet hozzájárulni. Bárki részt vehet benne, akinek van egy és gyorsan tölthet fel adatszerkezeteket olyan rendszerstatiszti- gépe és internet-hozzáférése. Elég letölteni egy PeerNode- kákkal, mint a rendszerterhelés, a szabad memóriaméret és ügyfelet a ChessBrain-honlapról, futtatni egy vagy több gépen, a futó folyamatok száma. és a ChessBrain máris nagyobb lett. A SuperNode-kiszolgálótól a 2. listán látható példához Arra törekszünk, hogy a „legtöbb, egyetlen játékot játszó hasonló rendszeradatok kérhetõk le egy SOAP-hívással. számítógép” hivatalosan elismert világrekordját állítsunk

A ChessBrain-közösség egyik tagja, Greg Davis írta az elsõ fel. Már kapcsolatba léptünk a világrekordokat nyilvántartó © Kiskapu Kft. Minden jog fenntartva programot a SuperNode megfigyelésére Perl nyelven, ami londoni irodával és több hivatalos sakkszövetséggel is. a SOAP-kérésre kapott választ a top parancshoz hasonló A ChessBrain mögött erõs csapat áll, többek között Peter formában jeleníti meg. Wilson, a sakk világszövetség (FIDE) számítógépes sakk- és internetbizottságának korábbi elnöke. Pillanatnyilag A PeerNode megfigyelése megfelelõ helyszínt keresünk egy nyilvános és internet Mivel a ChessBrain-közösség számos tagja PeerNode-ügyfelet alapú bemutatóhoz, ami magában foglalná az osztott számí- futtat sok gépen, egyszerû módon szerették volna nyomon táshoz és sakkhoz kapcsolódó Guinness világrekord felállí- követni egy gépcsoport állapotát. A PeerNode-ügyfelet úgy tását is. Érdemes figyelni a ChessBrain-honlapon a hiva- módosítottuk, hogy a 3434 kapura SOAP-kéréseket küldjön, így talos bejelentést. az ezen a kapun figyelõ programok valós idejû állapotjelentést jeleníthetnek meg. Az elsõ PeerNode-megfigyelõprogramot én Köszönetnyilvánítás írtam, aztán mások is elküldték saját változatukat. Grag Davis Szeretném megköszönni Janus Daniels, Cedric Griss és a és Oliver Otte egy-egy Perl alapú programot tett közzé. ChessBrain-közösség más tagjainak a támogatását, amit a A legnépszerûbb PeerNode-megfigyelõt, a CBMoc programot cikk írásához nyújtottak. Az elérhetõségek és a ChessBrain- Kris Drent írta Java nyelven. kikicsoda megtalálható a  http://www.chessbrain.net/friends.html weboldalon. Hordozható grafika és adatmegjelenítés A ChessBrain rengeteg adatot gyûjt össze, és jelenleg is Linux Journal 2003. szeptember, 113. szám dolgozunk azon, hogy az adatok megjelenítési módját hasz- nosítsuk a rendszerfigyelés és -elemzés során. 3D-s navigációs eszközöket fejlesztünk, amik lehetõvé teszik a hálózati játék- Carlos Justiniano ([email protected]) menet nyomon követését. Sven Herrmann, házi 3D-szakértõnk A programipar húszéves tapasztalattal rendelkezõ OpenGL alapú leképezõt hozott létre, amit a SuperNode-meg- veteránja. A ChessBrainben számos jelmondatát figyelõ programunkban használunk. Ezt a leképezõt használja átülteti a gyakorlatba: „Fogadd el a bonyolultsá- majd a képernyõvédõnk és a játszmakövetõ programjaink got!”; „Ne kézenfekvõ feladatokat keress!” következõ nemzedéke is. és „Oldd meg nyílt forráskóddal!”.

www.linuxvilag.hu 2003. november 39 Szaktekintély

Játékmotor a Blenderben (1. rész)

smét a Blender képességeit fogom ismertetni, az elmúlt Blenderrel futtatható állományt készítünk a játékból. I egy hónapban azonban alkalmam volt jobban átgondolni A Collision típusú érzékelõ alkalmas rá, hogy egy megha- a tanmenetet. Ezért ebben a részben a játékmotorban hasz- tározott tulajdonsággal vagy anyaggal rendelkezõ tárggyal nálható érzékelõket (Sensors) és végrehajtó szerveket egyesével való érintkezést észleljünk a játékban. Az M/P kapcsolóval mutatom be, megalapozva a további játékkészítést. állíthatjuk be, hogy tulajdonságot vagy mintázatot szeret- Folytassuk a tanulást az elméleti anyag elsajátításával – a szük- nénk-e figyelni. Az érzékelõ akkor fog jelzést adni, amikor a séges ismeretek birtokában már könnyebben érthetõ lesz játé- kijelölt tárgy azzal a meghatározott tulajdonsággal vagy anyag- kunk elkészítésének a módja is. Mivel azonban a tárgyakhoz gal rendelkezõ tárggyal érintkezik, amelyet itt beállítottunk. rendelhetõ változókat már az elõzõ részben megismertük, A Touch érzékelõ mûködése csak annyiban tér el az elõzõtõl, folytassuk a sort a különféle érzékelõkkel! hogy nem adhatunk meg tulajdonságot, csakis a tárgyak

© Kiskapu Kft. Minden jog fenntartva A Blender játékmotorja tizenegyféle érzékelõt kínál, ezekbõl ter- anyagát figyeltethetjük vele. mészetesen tetszõleges számút rendelhetünk egy-egy tárgyhoz. A Near érzékelõvel akkor adhatunk jelzést, ha a tárgyunk Az elsõ ilyen az Always nevet viseli, mûködése szerint a egy adott tulajdonsággal rendelkezõ másik tárgy közelébe ér. kimenetén meghatározott idõközönként jelzést ad. Minden A Dist értékkel a bekapcsoláshoz szükséges távolságot adjuk érzékelõnek három olyan alapvetõ tulajdonsága van, ame- meg, míg a Reset értékkel azt a távolságot, amelynél ha a két lyekkel beállíthatjuk a kimenet viselkedését. Az egyik ilyen tárgy messzebb kerül egymástól, az érzékelõ kimenete tulajdonság az Active, amelyet az érzékelõ neve alatt található passzívvá válik. két kapcsolóval választhatunk ki. Értéke True vagy False A Radar típusú érzékelõ mûködése megegyezik a kinti világ- lehet. Ezzel határozhatjuk meg, hogy amikor az érzékelõ ban is használatos rádiólokátorokéval, vagyis egy kúp alakú kimenete az alapállapottól eltérõ lesz, annak logikai értéke csóván belül lévõ tárgyak érzékelésére szolgál. Itt is megad- igaz vagy hamis legyen. Fontossága abban rejlik, hogy min- ható, hogy milyen tulajdonsággal rendelkezõ tárgyakat den érzékelõ kimenete egy feltételt vizsgáló csomópont keressen, a X,Y,Z kapcsolókkal pedig megadhatjuk, hogy a bemenetéhez kapcsolódik, ahol a feltétel egy logikai vizsgálat forrásként szolgáló tárgynak (amelyikhez az érzékelõt hozzá- is lehet. A másik jellemzõ tulajdonság a – freq:, vagyis az rendeljük) melyik tengelye alkossa a kúp tengelyét. Az érzé- érzékelõ mûködési frekvenciája. Ezzel határozhatjuk meg, kelõ kúpjának a csúcsa egybeesik a tárgy érvényben lévõ hogy a játékmotor milyen gyakran vizsgálja az adott csomó- középpontjával. Az Ang értékkel adhatjuk meg a kúp nyílás- pont feltételeinek a teljesülését. Ezt az értéket 1/50-ed másod- szögét, míg a Dist értékkel a hatótávolságot. percben mérve kell megadni, és a beállítására szolgáló mezõ A Property érzékelõ alkalmas arra, hogy figyeljük a tárgy az érzékelõ neve alatt középen található. A harmadik alapvetõ egy adott tulajdonságát. A beállításoktól függõen jelzést tulajdonság pedig a név alatt jobbra található Inv, amellyel kaphatunk, ha a Prop mezõben beállított tulajdonság egyenlõ meghatározhatjuk, hogy a kimenet állapota a feltételek (Equal) vagy nem egyenlõ (Not Equal) a Value mezõben teljesülésekor vagy azok nem teljesülésekor váltson-e beállított értékkel, vagy akkor is, ha az érték megváltozott aktív jelszintre. (Changed), esetleg egy adott tartományon belül van A Keyboard érzékelõvel, miként a neve is mutatja, a billen- (Interval). A mûködést kiváltó feltételt a legnyíló listá- tyûzet eseményeit figyelhetjük – az alábbi beállításokat figye- ból választhatjuk ki, az elõbbieknek megfelelõen. Ameny- lembe véve. A Key az elsõdleges billentyû, amelyre az érzékelõ nyiben az Interval feltételt választjuk, a lista alatt két válaszolni fog. A Hold felirat mellett található két mezõben mezõt találhatunk, amelyekben a tartomány alsó és felsõ adhatjuk meg azt a két módosító billentyût, ami a jelzés kivál- határát adjuk meg. tásához elengedhetetlen. Természetesen amennyiben nem A Random érzékelõ mûködése minden jel szerint megegyezik bonyolult billentyûkombinációkban gondolkodunk, ezek az Always típusúéval, semmilyen szemmel látható különb- megadása nem kötelezõ. Ezeket a mezõket könnyedén beállít- séget nem fedeztem fel. hatjuk, ha az egérrel a mezõre kattintunk, ezután pedig a A Ray érzékelõ hasonlít a korábban bemutatott Radar-hoz, Press a key felirat megjelenésekor lenyomjuk a kívánt billen- itt azonban az érzékeny terület nem kúp alakú, hanem egyenes tyût. Módosító billentyû lehet a bal és jobb oldali CTRL, az ALT, vonal. Ennél is beállítható, hogy az érzékelõ állapota anyagtu- a SHIFT és természetesen bármelyik másik billentyû is, de lajdonságra vagy játékmotorbeli tulajdonságra változzon-e, célszerû a fentiek közül választani, mert ezek eredeti mûkö- továbbá a Range értékkel a hatótávolságot is meghatároz- dése is a többi billentyû mûködési módjának a megváltozta- hatjuk. A lenyíló listában szereplõ tengelyek szabják meg, hogy tása. A LogToggle felirat melletti mezõben beállíthatjuk, hogy az érzékelõ sugár a kiindulási tárgynak melyik tengelyével a megadott billentyû lenyomásakor valamilyen szöveges párhuzamosan haladjon, és ebben az esetben természetesen az üzenetet is átadjunk a Target mezõben megadott tárgynak. elõjel határozza meg a kiindulási irányt. Ez az érzékelõ A Mouse érzékelõvel az egér eseményeire válaszolhatunk a alkalmas például annak megállapítására is, hogy egy lézersugár játékban. Kevés beállítási lehetõsége közül az elsõ három az eltalált-e egy adott tárgyat vagy a fõhõs belépett-e az infra- egérgombokra vonatkozik, míg a Movement az egér mozgatá- vörös kapu sugarába. sakor hozza mûködésbe az érzékelõ kimenetét, a Mouse Over A Message típusú érzékelõ a sorban az utolsó, egy üzenet pedig akkor, ha az egérmutató a tárgy fölé kerül. Ezt az utóbbit elfogására szolgál. A Subject mezõben határozhatjuk meg azt csak abban az esetben tudjuk majd kipróbálni, amikor a a szöveget, ami a tárgyhoz érkezõ üzenetek azonos nevû

40 Linuxvilág Szaktekintély

mezõjében szerepelhet. Amennyiben megadunk egy ilyen létrehozott tárgy örökli az elõzõ tárgy tulajdonságait. Ebben értéket, a tárgyhoz rendelt érzékelõ csak ilyen üzenetek az esetben a OB: mezõ tartalmazza a tulajdonság forrását, érkezésekor reagál majd. emellett a Prop határozza meg a forrástulajdonságot, míg Az elõzõ részben ismertettem már a vezérlõk (Controllers) a cél a korábban beállított Prop értéke lesz. típusait, így ennek ismétlésétõl eltekintve a hatásokat kiváltó Az ismertetést a könnyebben érthetõ hatásokkal folytatom: csomópontok (Actuators) tárgyalására térek át. a Message alkalmas arra, hogy egy adott tárgynak

1. kép Hangállomány betöltése

Az elsõ ilyen hatás a Movement, amivel a tárgy mozgását tudjuk befolyásolni. Minden értéket a három térbeli tengelyre vonatkoztatva háromdimenziós vektorként adhatunk meg.

A Force a tárgy mozgási energiáját határozza meg, a Torque © Kiskapu Kft. Minden jog fenntartva pedig a forgatónyomatékát. A dLoc a tárgy helyzetének változtatására szolgál, míg a dRot a tárgy elfordulását változ- 2. kép A játék kezdete tatja meg. A linV a tárgy haladási sebességére vonatkozik, és ide tartozik még a három koordináta után található add kap- (ezt határozza meg a To mezõ értéke) – vagy amennyiben csoló – ennek alkalmazásával a tárgyat a megadott értékeknek nem adunk meg céltárgyat, akkor minden tárgynak – üze- megfelelõen gyorsíthatjuk vagy lassíthatjuk. Ha ezt a kapcsolót netet küldjünk. A Subject-ben megadhatjuk az üzenet használjuk, akkor a beállított értékek hozzáadódnak az érvény- tárgyát, ez alapján a Message érzékelõ el tudja dönteni, ben lévõ sebességhez. Az angV vektorral határozhatjuk meg hogy kell-e foglalkoznia a beérkezõ üzenettel. A T/P kapcso- a tárgy szögsebességét. A fent felsorolt vektorokra vonatkozóan lóval választhatunk szöveges üzenet vagy egy tulajdonság beállíthatjuk, hogy a Blender az értékeket a tárgy helyi koor- értékének az elküldése között. dinátarendszerében vagy a jelenet koordinátarendszerében A CD hatással zenei CD-t tudunk lejátszani a játékban. Lejátsz- értelmezze-e. Amennyiben a tárgy helyi koordinátarendszerét hatjuk az egész lemezt, egy kiválasztott számot, a hatás segít- szeretnénk használni, akkor az adott vektor sorának végén ségével pedig módosíthatjuk a lejátszás hangerejét, megállít- lévõ L kapcsolót is be kell kapcsolni. hatjuk, majd újra elindíthatjuk a lejátszást. A Constraint hatás alkalmazásával elérhetjük, hogy tár- A Game alkalmas a játék viselkedésének a megadására. gyunk mozgása valamely tengely mentén korlátozott legyen. Segítségével kiléphetünk a játékból, újraindíthatjuk azt, vagy A kívánt tengelyt a legördülõ listából választhatjuk ki, majd a egy másik játékot tölthetünk be. Amikor egy másik játék Min és a Max értékekkel adhatjuk meg a korlátozás mértékét. betöltése mellett döntünk, természetesen a játékot tartalmazó A Camera hatás alkalmazásával a kamerának adhatunk utasí- fájlnevet is meg kell adni. tást arra, hogy a OB: mezõben megadott tárgy felé forduljon. És végül a Visibility hatás segítségével a tárgy láthatóságát Itt is használhatunk különféle megkötéseket. Az egyik ilyen szabályozhatjuk, például eltüntethetjük a már kilõtt és felrob- a Height, amellyel a kamera magassága állítható be, a másik bant ûrhajót. pedig az X és Y kapcsolók egyike, ezzel azt érhetjük el, hogy Nos, ebben a hónapban megtárgyaltuk a játékmotor legfon- a kamera a céltárgy kiválasztott tengelye mögött próbáljon tosabb összetevõit, ami ugyan egy kissé száraz és nagyon is maradni. Természetesen elõfordulhat, hogy a kamera nem elméleti anyag volt, ám a következõ részben befejezzük a játé- tud megfelelõen a tárgy felé fordulni, például akkor sem, ha kot (a mûködés szempontjából nézve), és a most kimaradt az X tengelyt beállítjuk, és a kamera már alaphelyzetben is a hatásokkal is megismerkedünk. Mint azt korábban már említet- céltárgy X tengelyének meghosszabbításán helyezkedik el. tem, játékunk célja az lesz, hogy egy gömbszerû fõhõssel anél- A Sound meglepõ módon hangállomány lejátszására alkalmas. kül jussunk át az akadálypályán, hogy a kalapácsok összelapí- Amikor azonban ezt a hatást választjuk ki, alaphelyzetben tanának minket vagy leesnénk a pálya szélén. A játékot nehezíti hangfájl nem található a legördülõ listában. Hogy itt is megje- az is, hogy a fõhõs a nem mozgó akadályokkal ütközve pattog, lenjen valamilyen választási lehetõség, elõször a nézetek váltá- így könnyen elõfordulhat, hogy egy ütközést követõen pont sára szolgáló gombsoron ki kell választanunk a hangszóró egy kalapács alá kerül. A külsõ kinézetre vonatkozóan mellé- ikonnal jelzettet, és az anyagtulajdonságok hozzáadásához keltem egy képet (2. kép). A távolban látható a kijárat boltíve, hasonlóan a nézet fejlécének segítségével be kell töltenünk egy míg a fõhõs a nézõponthoz legközelebb esõ gömbszerû alak. hangállományt. Ennek megértését szolgálja az 1. kép is, ame- A decemberi viszontlátásig mindenkinek kellemes ismerkedést lyen piros és zöld keretek jelölik a megfelelõ gombokat. és alkotást kívánva búcsúzom. A Blender képes WAV-állományok betöltésére és lejátszására. A Property hatást (effect) alkalmazhatjuk olyan esetekben, Fábián Zoltán amikor a tárgy valamely játékmotorbeli tulajdonságát szeret- ([email protected], [email protected]) nénk megváltoztatni. A Prop mezõben megadott változó 25 éves, jelenleg programozóként dolgozik. értékét a legördülõ listából kiválasztott Assign menüponttal Szabadidejében szívesen kirándul, túrázik. Emellett változtathatjuk meg, vagy hozzáadhatunk egy elõre meghatá- szeret rajzolni, érdekli a 3D-grafika és a Linuxszal rozott értéket, feltéve, hogy a listából a Add pontot választjuk kapcsolatban minden olyan program és program- ki. Amennyiben ebbõl a listából a Copy-t választjuk, akkor a nyelv, amit még nem ismer vagy nem próbált ki.

www.linuxvilag.hu 2003. november 41 Szaktekintély

Mûsorszórás az interneten

Ismerkedjünk meg a digitális mûsorszórás rejtelmeivel és a kiszolgálóalkalmazásokkal!

izonyára sokan hallottak már A jövõ mondjuk nincs elõfizetve, de most B a címben foglalt dologról, ám Hogy miért igyekeznek mégis elterjesz- azonnal szeretné élvezni az adott adást, kevés olyan embert ismerek, teni a technológiát? A válasz egyszerû: akkor arra bankkártyával azonnal elõfi- aki részletesen ismerné a folyamat az új eljárás számtalan elõnnyel jár. zethet, és máris szemmel követheti – mikéntjét, tisztában lenne a szolgáltatás Egyik legfõbb elõnye például az, hogy nem kell a kábeltévéseket megvárni, alapjaival, vagy épp rendszeresen a szolgáltatást használó személy beavat- hogy mindezt lehetõvé váljon. Nem igénybe venné azt. Jelen cikk egyik célja kozhat a mûsorfolyamba, vagyis kétirá- kizárt annak megoldása sem, hogy a

© Kiskapu Kft. Minden jog fenntartva épp ezért az, hogy megismertesse az nyú adattovábbítás DVD-filmekhez megszokott módon internetes mûsorszórás alapvetõ techni- van jelen a feliratot, illetve nyelvet válasz- kai jellemzõit, vázolja a mûködését és szunk ahhoz a mûsorhoz, amit eloszlassa az esetleges tévhiteket, épp nézünk. Ezenkívül olyan amelyek a témával kapcsolat- információhoz is hozzájut- ban a hiányos adatok miatt hatunk, amelyet tévénézés kialakultak. A cikk fennmaradó vagy rádióhallgatás közben részében pedig a teljesség igé- egyébként nem érhetünk nye nélkül szeretném néhány el, például az adott mûsor fõ jellemzõjével bemutati a címéhez, a hozzá kapcso- témához kapcsolódó linuxos lódó összes adathoz, a programokat, megoldásokat. következõ programhoz. Az egyes programok részletes A legnagyobb elõnye bemutatása a sorozat késõbbi mégis az, hogy mindeh- részeiben történik majd. hez nincs szükség új be- Vágjunk bele! rendezésre, új eszközök- re, új adatkapcsolatra, Mi is ez tulajdonképpen? antennára – a jelenlegi, Valószínûleg mindenki számára interneteléréssel rendel- természetes és megszokott jelen kezõ számítógép is megteszi. ség a 21. században a televíziózás vagy kapcsolat során – szemben a televízió- és a rádiózás, arra azonban már keveseb- rádióadással, ahol csak a stúdióból a A jelen ben gondolnak, hogy mi történne, ha vevõ felé áramlik az adat. Nem kell Meg kell jegyeznem, hogy azért az itt ezt a tartalmat egy teljesen másfajta hozzá túl sok fantázia, hogy felmérjük, leírt elõnyök kiaknázása még nem közvetítõ közeg juttatná el a közönség- miféle új szolgáltatások bevezetését teszi történt meg. Mint már említettem, még hez. Ilyen közeg lehet például az inter- lehetõvé egy ilyen technikai adottság: csak a gyerekcipõs korszakban járunk, net, amely tulajdonságait tekintve min- végre egyszerûen megvalósulhat az és jelenleg a hálózatok jelentõs része den szempontból megfelel: emberek interaktív tévéadás, ahol a nézõ maga is sem teszi lehetõvé az ehhez szükséges milliói használják, széles körben elter- alakíthatja a mûsor menetét, a film tar- sávszélességet, néhol protokollt, de jedt, az elõrejelzéseket figyelembe véve talmának alakulását, vagy épp egy foci- ennek ellenére szegényesebb szolgál- szinte minden területet meg fog hódí- meccs közvetítése során megválaszthatja tatási színvonallal már most is számtalan tani; alkalmas adatok továbbítására, a a kameraállást, bármikor visszanézheti helyen alkalmazzák. Hogy tiszta vizet végpontokon elhelyezkedõ számítógé- az ismétléseket stb. (Ezzel egyébként öntsünk a pohárba, szeretnék néhány pek képesek a digitális kép- és hangtar- most is kísérleteznek a hagyományos szót szólni a folyamatról, a technikai talom lejátszására stb. Egyszóval olyan lehetõségek mellett: az adás megszokott nehézségekrõl, hogy ezek mibõl fakad- környezetrõl van szó, amely minden módon jut el a tévénézõkhöz, de egy nak, és hogy ezeknek a megoldására adottsággal rendelkezik, csupán ki kell visszirányú kapcsolatot is biztosítanak milyen kilátások vannak. aknázni ezeket. A helyzet természetesen ez lehet telefonos vagy mûholdas), Maga a mûsorszórás folyamata úgy mégsem egészen ilyen egyszerû. Bár a amelyen keresztül a felhasználó elküld- zajlik, hogy van egy kiszolgáló, amely fent leírt dolgok mindegyike igaz, van heti az igényeit a „központnak”. valamelyik elõre meghatározott hálózati néhány – az átlagfelhasználók számára A másik fontos elõny abból adódik, kapujára egy adatfolyamot továbbít. láthatatlan – technikai akadály, amelyek hogy a vevõ szinte közvetlen kapcsolat- A kiszolgáló ezen kapujára kapcsolódva áthidalása jelenleg is folyamatban van. ban áll az adóval, így a nézettség egy- az ügyfelek hozzáférhetnek ehhez az Ezek az akadályok miatt jár még csak szerûen mérhetõvé válik; azonnal meg- adatfolyamhoz. Az egész úgy mûködik, gyerekcipõben a Világhálón történõ oldható, hogy csak az nézhessen egy mintha csak letöltenénk egy weblapról, mûsorszolgáltatás. mûsort, aki elõfizetett rá. Ha valaki de az adatfolyam itt nem kerül mentésre,

42 Linuxvilág Szaktekintély

hanem egy átmeneti tárba jut, ahonnan egy – az adatfolyamot lejátszani képes – Ügyfél Ügyfél program kiolvassa és megjeleníti. A mû- (vevõ) (vevõ) sorfolyamnak tehát olyannak kell lennie, Továbbító hogy bármelyik pillanatától olvasva hiba (relay) nélkül lejátszható legyen, tehát a folyam Továbbító (relay) jellemzõi valamilyen ismétlõdõ módon Ügyfél Ügyfél (vevõ) rövid idõnként elérhetõek kell legyenek. (vevõ) Az ilyen adatfolyamokat szakaszol- Kiszolgáló hatónak (streamelhetõnek) nevezzük, (adó) Ügyfél ilyen például az MPEG layer 3, az (vevõ) Továbbító MPEG1, az MPEG2, a Winows Media (relay) Video/Audio vagy a RealMedia formá- Továbbító tum. Ezek közül az utóbbi kettõt csak (relay) hang, vagy kép és hang továbbítására Ügyfél Ügyfél a felhasználó számára átlátszó módon (vevõ) (vevõ) Ügyfél egyaránt alkalmazzák, ezeket a formátu- Ügyfél (vevõ) Ügyfél mokat már kifejezetten az internetes (vevõ) © Kiskapu Kft. Minden jog fenntartva (vevõ) mûsorszórásra találták ki (ami természe- tesen nem jelenti azt, hogy helyi adat- tárolásra nem alkalmasak). 1. ábra A fentiek lejátszásához magától értetõ- A kapcsolatok növekedésének egyik módja dõen sávszélességre van szükség mind az adó, mind a vevõ oldalán. A sávszé- olyan nagyok, ugyanúgy jelen vannak a megfelelõ csomópontban sokszoro- lesség az adás minõségének függvénye (a mûsor jogdíjai, a fájlformátum jog- zódik, ott, ahol a csomag útja kettéválik. – az egyik technikai akadály rögtön díja, a sávszélesség költsége stb.), s eze- Így ha a fa felépítésû hálózatban ebbõl adódik. A kiszolgálók általában ket meg kell fizetni. haladunk, minden egyes szakaszon csak megfelelõen nagy sebességû kapcsolattal egy darab ugyanolyan csomag van rendelkeznek, ám ha sokan kapcsolód- Egy lehetséges megoldás jelen. Ezt azonban a hálózati eszközök- nak hozzá, pillanatok alatt ki lehet merí- Erre a nehézségre azonban már meg- nek, csomópontoknak is támogatniuk teni. Gondoljunk csak bele: gyenge született a megoldás, már csak azt kell kell, ezért meg kell várni, amíg szép minõségû képanyag továbbításához megvárni, hogy elterjedjen. A megoldás fokozatosan elterjed. A jelenlegi állapot mostanában már elég 384 Kbit (egy maga a hálózatok felépítésében rejlik, szerint a csoportos üzenetküldés ugyan szabvány ADSL kapcsolat sebessége pontosabban az adattovábbítás mód- létezik, szabványok vonatkoznak rá, – nem véletlen, hogy épp ilyen méretûre jában. Az interneten használatos TCP/IP ám a használatához különleges beállítá- szabják az adatfolyamot). Ha egy kiszol- protokoll IP-rétege felépítésébõl adó- sokra van szükség, az adónak elõre gáló a hazai viszonyok mellett 100 Mbit dóan csak az „unicast” (egyéni) módú meghatározott ügyfélcsoporttal kell sávszélességgel rendelkezik, az mind- csomagküldést teszi lehetõvé a megszo- rendelkeznie, és ami a legnagyobb össze 260 ügyfél kiszolgálását teszi lehe- kott módszerrel, az egész hálózatra néz- probléma: nem tudjuk bárhol igénybe tõvé, ami igazából semmi a televíziók ve. Ez a gyakorlatban azt jelenti, hogy venni, ugyanis csak kis „szigetek” for- több milliós nézõtáborához képest, és ha egy kiszolgálótól két ügyfél ugyanazt májában létezik. Ez azt jelenti, hogy hosszú távon mindenképp halálra van az adatfolyamot kéri (tehát ugyanabban az internet egyes részein vannak meg ítélve. Az internetes rádiókkal is ugyan- az idõben két gép is ugyanazt tölti le csak a technikai feltételei, nincs teljes ez a helyzet, bár azok kevesebb sávszé- ugyanabban az idõpillanatban), akkor – de még nagy részt magába foglaló – lességet igényelnek (kb. a harmadát, a a kiszolgáló mindkét gépnek kétszer lefedettség sem. Régóta törekszenek felét), tehát nem oldódik meg, hogy elküldi ugyanazt a csomagot, ami tõle csoportos üzenetküldést támogató felhasználók százezrei kapcsolódhassa- kétszer annyi kimenõ sávot foglal le, gerinchálózat megteremtésére, nem is nak az adáshoz. Ezt most úgy próbálják s mivel ezek az adatfolyamok meglehe- sikertelenül: üzemel egy MBONE kiküszöbölni, hogy több szolgáltatónál tõsen nagyméretûek, ez okozza a jelen- (Multicast Backbone) nevû virtuális több kiszolgálót üzemeltetnek, a na- tõs sávszélesség-igényt. Természetesen gerinchálózat, ám ehhez többek között gyobbak gigabit nagyságrendû kapcso- ez nemcsak az adó és a vevõ közötti még Magyarországnak sincs kapcso- lattal, és a kapcsolatokat elosztják az útvonalon áll fenn, sok adó esetén a lódási pontja (nálunk is csak kísérleti egyes gépek között. Mondanom sem teljes gerinchálózat is eldugulhat tõle. jelleggel léteznek fent említett kell, hogy ez milyen költséges, és a kö- Létezik már azonban az alkalmazott IP „multicast-szigetek”). zönség növekedésével milyen korlátok- protokoll kiterjesztése, amely már támo- Emellett természetesen a végpontok ba ütközhet, tehát csak egy „átmeneti” gatja a „multicast” (csoportos) módú jelentõs részének is gyorsulnia kell megoldásról van szó. (Ma egyébként csomagküldést, s ez egy csapásra meg- körülbelül egy nagyságrendnyit, hogy szinte az összes ilyen internetes rádióál- oldja a felesleges sávfoglalást. Amikor az elején említett minõségû és szintû lomás így mûködik.) A viszonylagosan ugyanis egy kiszolgálótól két ügyfél is mûsorszolgáltatás jöhessen létre. kicsi közönség ugyanakkor nehézkessé ugyanazt a csomagot kéri, akkor a Most, hogy ilyen remekül leírtam, teszi egy ilyen állomás megélhetését, kiszolgáló mindössze egy üzenetet küld, hogy igazából nem is mûködik, itt az nem jelent ugyanis piacot a reklámipar amelyben a csomag összes címzettje fel ideje, hogy bemutassam: valójában számára, ám az adás költségei, ha nem is van sorolva, és a csomag útja során csak mégiscsak üzemel, s ezrek használják.

www.linuxvilag.hu 2003. november 43 Szaktekintély

RealOne Player Ez a lejátszó alkalmas az egyik legõsibb, szakaszolható formátum fogadására. Bizonyára sokan hallottak már a RealMedia által kifejlesztett, interneten sugározható formátumról, ugyanis Hálózat ez volt az elsõ, amelyik széles körben elterjedt. Az ilyen fájlokat a linuxos RealOne Player segítségével tudjuk egyszerûen lejátszani. Itt is hasonló elven kell meghallgatni a rádióadá- sokat, nevezetesen be kell írnunk egy RealMedia formátumban sugárzó kiszolgáló címét (ilyen címeket a  http://www.real.com címen találha- tunk). A lejátszó tudománya természe- tesen itt nem áll meg, ez ugyanis egy 2. ábra © Kiskapu Kft. Minden jog fenntartva Összetett lehetõségek a VideoLAN segítségével olyan formátum, amely kép továbbí- tására is szolgál, így tévéadások fogadá- Remekül mûködött például az elmúlt adást sokan webrádiónak is nevezik. sára is lehetõségünk nyílik. idõszak során lezajlott valóságshow- Most, hogy nagyjából ismerjük az effajta áradat közepette, amikor is a helyszíne- mûsorszolgáltatás mikéntjét, szót ejthe- SHOUTcast ken zajló eseményeket a nap 24 órájá- tünk arról, hogy milyen módszerekkel Ez egy kiszolgálóoldali adatfolyamszóró ban figyelemmel kísérhettük az inter- vehetjük igénybe ezt kedvenc operációs program, amely lehetõvé teszi, hogy a neten keresztül, csupán egy médialeját- rendszerünk, a Linux segítségével. hálózati csatlakozással rendelkezõ gé- szó segítségével. A legtöbb helyen egy Rögtön bajban is vagyok, mivel nem pünkbõl rádióállomást készíthessünk. gyenge és egy jobb minõségû adatfo- tudom, hogy melyikkel is kezdjem, Maga a program úgy mûködik, hogy lyam egyaránt elérhetõ volt (valójában ugyanis igen jó támogatást nyújt mind egy, a SHOUTcasttal együttmûködni ez is elég gyenge volt, de a célnak töké- a vevõ, mind az adó oldalán. Remek képes program egy elõre kiválasztott letesen megfelelt), hogy kielégítsék a lehetõségeket biztosít az adatfolyamok bemenetrõl érkezõ hangot (vagy adat- különbözõ sávszélességû kapcsolattal vételére és lejátszására, valamint az folyamot) MP3 formátumúvá alakít rendelkezõk igényeit. Ez egyébként ilyen jellegû adások szórására, tehát (ilyen lehet például egy XMMS bõvít- minden nagyobb ilyen szolgáltatás a kiszolgálói feladatra. Azt hiszem, mény), majd ezt „átküldi” a kiszolgáló- háza táján így mûködik. Ezenkívül helyesebb volna elõször a fogadó (vevõ) nak, amely – például HTTP protokollon számtalan rádióállomás mûködik folya- oldal programjait bemutatni, lássunk keresztül – elérhetõvé teszi a hozzánk matosan, mp3-, asf- vagy vma-adatfo- néhányat ezekbõl! csatlakozó számítógépek számára. Ezek lyamot „sugározva”. Igazából ezek a után ha valaki csatlakozni szeretne népszerûbbek, hiszen nem nagy mére- XMMS a gépünkhöz mint rádióállomáshoz, tûek, és a minõségük megközelíti, vagy Ez valójában a jól ismert MP3-lejátszó, nyugodtan megteheti, csak be kell írnia éppen meghaladja a földi sugárzású amely a híres windowsos Winamp a lejátszóba gépünk IP-címét és a csatla- rádiók hangminõségét (beleszámítva GPL-es változata. Számunkra most kozási kapu számát, majd élvezheti a az apró légköri zajokat). Ami a népsze- azért érdekes, mert kiválóan alkalmas gépbõl kiáramló zenét. A programnak rûség mellett szólhat még, az az, hogy internetes rádióadások hallgatására. számtalan beállítási lehetõsége van. a lejátszóprogramokkal egyszerûen Alapértelmezetten képes lejátszani az Az egyik nagy csoportba a hálózati jel- lehetõségünk nyílik az adatfolyam MP3 vagy OGG Vorbis alapú adatfolya- lemzõkre vonatkozó kapcsolók sorolha- mentésére, tehát változatlan minõség- mokat. Szerencsénkre számtalan olyan tók, például a kimeneti kapu beállítása, ben rögzíthetjük a meghallgatott adást rádióadás létezik, amelyik ebben a a hálózati ügyfélazonosítás bekapcsolása, (részben vagy egészben). A rádiók formátumban sugároz (az ilyen a lehetséges csatlakozások számának hallgatásához minõségtõl függõen rádióadók címei megtalálhatók például beállítása, és még sorolhatnám – ezt elegendõ a 80–500 kbit/s-os sávszéles- a  http://www.shoutcast.com címen részletesen egy késõbbi cikkben fogom ség, de egy igen jó minõségû adafo- kategorizálva, kereshetõ formában). bemutatni. lyam lejátszásához már 130–160Kbit is Csupán annyi a dolgunk, hogy a meg- megteszi, amit egy mai ADSL-es vagy szerzett címet URL-ként hozzáadjuk icecast kábelmodemes csatlakozás is bõségesen a lejátszási listához, majd elindítjuk azt. Ez egy GPL licenszes kiszolgálóprogram teljesít, és mellette még egyéb letöltések Léteznek azonban olyan rádióadók is, a SHOUTcast mintájára. Felhasználási is folytathatók (webezés, levélolvasás amelyek péládul asf formátumban szerzõdésén kívül egy fontos dologban stb.). Maga a szolgáltatás (kép, hang sugároznak. Nem kell megijednünk, különbözik az egyébként vele együttmû- egységesen) a legtöbb helyen HTTP ugyanis egy XMMS bõvítmény telepíté- ködõ SHOUTcasttól: az icecast téma protokollon keresztül mûködik, ame- sével képesek leszünk minden olyan keretein belül hozzáfejlesztett adatfo- lyet minden internetre kötött gép fel- formátum lejátszására, melyet az avifile lyam-készítõ program a szabad Ogg tétlenül ismer, hisz a világhálón elér- könyvtár támogat. Ezek után már Vorbis formátumot támogatja. Ennek az hetõ legelterjedtebb szolgáltatásról van mindegy lesz számunkra, hogy épp az elõnye, hogy a SHOUTcast által szó. Emiatt az ilyen módon elérhetõ melyik formátumú rádiót hallagtjuk. elõnyben részesített MP3 formátummal

44 Linuxvilág Szaktekintély

szemben az Ogg Vorbist nem védik sza- az 1. ábrát). Mindezt úgy oldja meg, hogy teljes IPv6-támogatást biztosít, amely badalmak, bármilyen nemû használata egy bemenõ kapun fogadja az adatfolya- a jövõre és a csoportos üzenetküldés nem ütközik törvénybe. Maga az icecast mot, majd mindezt a kimeneti kapuján fontosságára nézve igen elõnyös. valójában három részbõl áll: elõször is a továbbítja. Ez azt is jelenti, hogy így bár- A programcsomag mindezek felett még fent említett kiszolgálóból, amely a szá- milyen másik kiszolgálóval együtt tud egy különleges mûsorszórási eljárást is mára készített adatfolyamot a számítógé- mûködni, annak adatfolyamát továbbíta- támogat, amely bár nem illik bele az pünkhöz kapcsolódó ügyfelek számára ni képes. Ezenkívül lehetõvé teszi, hogy eddig ismeretett valós idejû mûsorszol- elérhetõvé teszi. A másik része a shoutlib a kiszolgálóhoz telnet protokollon gáltatások sorába, de valószínûleg névre keresztelt függvénykönyvtár, keresztül csatlakozva adatokat kérjünk le minden felhasználó álma. Ez nem más, amely a kiszolgálóval történõ kapcsolat- az állapotát illetõen (csatlakozott felhasz- mint a Video On Demand (betûszóval tartást teszi lehetõvé. A harmadik egység nálók, terheltség stb). Ha még ez sem VOD), ami a nevébõl is kiolvashatóan az a program, amelyik az ogg formátu- volna elég, a csomagban egy Java applet igény szerinti videózást jelent. Ez a mú adatfolyamot elõállítja a kiszolgáló- is megtalálható, amelyen keresztül egyéb gyakorlatban annyit tesz, hogy a fel- rész számára, a neve: iceS. érdekes dolgokat tudhatunk meg az használó vagy a vevõ az adott mûsort éppen sugárzott adatfolyamról. (például egy filmet) bármikor elindít- bitchasshola hatja, nézés közben megállíthatja, elõre- Ez a program webalapú felület az icecast VideoLAN tekerhet, visszatekerhet. A szolgáltatás kiszolgálóhoz; lehetõvé teszi, hogy A csomagban található kiszolgáló segít- egyetlen hátránya az igen magas erõ- © Kiskapu Kft. Minden jog fenntartva különbözõ lejátszási listákat állítsunk ségével képanyag sugárzására is képe- forrásigény, hiszen ezt a fajta adatfo- össze, majd ezeket adatfolyamként sek vagyunk, olyan formátumokban, lyamot csak egyéni módú üzenetküldés- elindíthatjuk, így a hozzánk csatlakozó amelyek már messze túlmutatnak a sel lehet továbbítani. Arról nem is be- ügyfelek rádióadásként hallgathatják. „hagyományos” internetes mûsorszórás szélve, hogy a kiszolgáló is megterhelõ- eddig ismertetett alapjain (lásd a 2. ábrát). dik, hiszen egyszerre akár több száz CGIcast Az elterjedt MPEG-1, MPEG-2, MPEG-4 szálon kell merevlemezérõl olvasni az A csomag néhány Perl-parancsfájl gyûj- vagy éppen DVD formátumú mozgó- adatokat, nem is szólva az egyéb ter- teménye, arra képes, hogy csupán egy képadás mellett ugyanis digitális mûhol- helést jelentõ kérésekrõl. A leírás szerint webkiszolgáló program segítségével das adásra vagy földi sugárzású digitális a megoldás lényege, hogy HTTP proto- lehetõségünk nyíljon valós idejû inter- csatornák jelének alapjául szolgáló kollon keresztül történik az adatszolgál- netes rádióállomás mûködtetésére. adatfolyamok szórására is lehetõség tatás, ehhez csupán egy webkiszolgálóra A módszer akkor elõnyös, ha valaki egy nyílik. Ezekhez természetesen különle- van szükség, amely az adatfolyamot szolgáltatónál bérel webes tárhelyet, és ges átjárókra van szükség, hogy mindez HTTP-csomagok formájában továbbítja, ezen keresztül szeretne sugározni. egy PC-rõl lehetõvé váljon. A DVB a HTTP 1.1 protokoll pedig a pozícioná- Ebben az esetben nincs lehetõség a (Digital Video Broadcasting) formátum- lást teszi lehetõvé az adatfolyamban fentebb említett kiszolgálók telepítésére, nak több válotzata is létezik. A DVB-S (így mûködnek a letöltést gyorsító prog- viszont a legtöbb szolgáltatónál engedé- szabvány a mûholdas mûsorszórást, a ramok is), ezt használják fel az elõre- és lyezett a CGI parancsfájlok futtatása. DVB-C a kábeltelevíziós mûsorszórást, visszapörgetésre. A lejátszáshoz csupán Három fõ részbõl áll: az elsõ a ügyfélgé- míg a DVB-T a földi digitális mûsorszó- a csomag VLC nevû programjára van pen fut, ahonnan maga a mûsor rást jelenti, emellett akár LAN hálózato- szükség, amely igen egyszerûen elin- „készül”. Innét továbbítja az MP3-szaka- kon is továbbíthatjuk DVB formátumú dítja az általunk kért mûsort. szokat a következõ részhez, amely már mozgóképeinket. A mûsorfolyamot Mint láthatjuk, az internetes mûsorszó- a kiszolgálón fut, s tárolja az adatfolyam tekintve mindegyik szinte ugyanolyan, rás feltételeit megteremtõ programok legutóbbi pár másodpercét. A program kizárólag a továbbítás módja az, amely- palettája meglehetõsen színes, bevallom, harmadik része fogadja a hallgatókat, ben az egyes szabványok eltérnek egy- magam is meglepõdtem, amikor a témá- és némi késleltetéssel elérhetõvé teszi mástól. A mûsorszórás természetesen a ba beleásva magamat a vártnál jóval számukra a mûsort. rádióadóknál ismertetett sémára épül, több megoldást találtam, többet, mint mondhatni teljesen ugyanaz. Maga a amelyek más operációs rendszerek ese- Fluid Server Streaming program két részbõl áll: az egyik a ki- tében rendelkezésre állnak. Hogy ezt az Ez egy Java nyelven írt GPL licenszes szolgálórész, másik a lejátszórész – érde- elõnyt sikerüljön megõrizni, a cikksoro- kiszolgálóprogram, amely MP3 formá- kessége, hogy a lejátszó is használható zat következõ részeiben a fent említett tumú hang szórására képes bármilyen kiszolgálóként. programokat szeretném a lehetõ legna- TCP/IP alapú hálózaton. Szolgáltatásai A csomag egyik érdekessége, hogy képes gyobb részletességgel bemutatni, így között szerepel például, hogy képes egy csatornaadat-szolgáltatás kezelésére. Ez nem csak tippeket fogunk kapni a Winamp/XMMS által használt lejátszási- annyit jelent, hogy az adásokhoz témával kapcsolatban, hanem minden lista-formátum (m3u) adásához, ami hozzáadható némi szöveges adat, pél- eszközünk meglesz ahhoz, hogy a számottevõen egyszerûsíti a program dául a csatorna neve, profilja vagy bármi, rendelkezésünkre álló programokat használatát. Másik érdekes képessége, ami a mûsorral kapcsolatos. Minderrõl hatékonyan is tudjuk használni. hogy az adatfolyamot továbbítani (relay) egy mini-SAP nevû program gondolko- K tudja egy másik Fluidot futtató kiszol- dik, amely a SAP/SDP szabvány haszná- omáromi Zoltán gálónak, így kiszolgálók egész hálózata latával küldi el a csatorna adatait a vevõ- ([email protected]) hozható létre, amely a bevezetésben is höz. A videoLAN kiszolgáló a hagyomá- 23 éves, a BME hallgatója, említett sávszélesség-igényt csökkenti nyos egyéni (unicast) módú üzenetkül- mellette PHP-programozóként azáltal, hogy a felhasználók nem csak dés mellett a csoportos (multicast) módú dolgozik. Kedvenc területe egy kiszolgálóhoz csatlakozhatnak (lásd üzenetküldést is támogatja, emellett a multimédia.

www.linuxvilag.hu 2003. november 45 Szaktekintély

Írjunk többszálú programot Linux alatt! (2. rész) Sorozatunkat a QThread és a többi szálkezelõ osztály áttekintésével folytatjuk.

z elmúlt hónapban a többszálú programok készítésé- A közösen használható erõforrások védelme nek és a Qt környezet által nyújtott lehetõségek alap- Az eddigi két program nem használt minden szál által látható, jaival foglalkoztunk. Most folytatjuk a Qt többszálú közös (globális) erõforrásokat, hiszen csak helyi változóink Aprogramok készítését támogató moduljának bemutatását, voltak. A párhuzamos programozás megvalósításához a szál célunk a részletek pontosabb megismertetése. fogalma nem elegendõ, hiszen biztosítani kell a közös erõfor- Minden szálosztálynak a QThread az õse, ezért nézzük rások megfelelõ sorrendben (összehangolás) való használatát. meg egy kicsit részletesebben is! Gondoljunk a közúti közlekedés példájára! Képzeljük el, hogy az egyes szálak a közlekedési eszközök vagy a gyalogosok.

© Kiskapu Kft. Minden jog fenntartva Public eljárások Ekkor a közösen használt erõforrások az útkeresztezõdések és • bool wait(unsigned long time = ULONG_MAX) a zebra. A KRESZ szabályai és a jelzõlámpák valósítják meg – a szálak összekapcsolását (JOIN) teszi lehetõvé. ebben a rendszerben az összehangolást. A Qt egyik összehan- Az elõzõ részben (Linuxvilág, októberi szám, 51. oldal) goló eszközét a QMutex osztály képviseli. már részletesebben ismertettük a mûködését. Amikor Az osztály célja a közösen használható objektumok védelme, a time valamilyen tényleges ezredmásodperc érték, illetve a forrásprogramok kényes szakaszainak kijelölése. akkor ez az eljárás csak a megadott ideig várakozik a A QMutex kétállapotú sorompó (nyitott vagy zárt) módjára meghívott szálra. véd. Amennyiben egy mutex zárt, úgy az általa védett kód- • A wait() sikertelen összeláncolás esetén false értéket részbe a többi szál nem léphet be, azaz várakozniuk kell. ad vissza. Lássuk a QMutex osztályt! • A void start() – elindítja a szál párhuzamosan futó kódját (lásd run() tagfüggvény). • QMutex(bool recursive = FALSE) • A bool running() const – a szál fut, illetve nem fut Létrehoz (constructor) egy mutex objektumot. Lehetõség állapotát kérdezhetjük le. nyílik a recursive beállítás használatára, ugyanakkor a TRUE érték megadása szükséges, amely esetben a mutex-re Statikus public eljárások kiadott lock() hívások száma nyilvántartódik, és ponto- • void postEvent (QObject *receiver, san ugyanennyi unlock() meghívására lesz szükség a QEvent *event) mutex felnyitásához. A Qt legfontosabb része természetesen a grafikus GUI-ké- • void lock()– lezárja a mutex objektumot. Amennyiben szítési lehetõség. A jel/foglalat (signal/slot) szerkezet nagyon a mutex objektumot egy másik szál már lezárta, úgy ez a érdekes tervezési minta, de a Qt lehetõséget ad az aszink- tagfüggvény blokkolja a hívó szálat, ami csak akkor futhat ron eseménykezelésre is. Ez az eljárás egy fogadó grafikus tovább, ha a mutex ismét nyitott állapotba kerül és utána elem (widget) számára tud egy eseményt szálbiztosan sikerül a zárolás. elküldeni. • void unlock() – felnyitja a mutex objektumot. • void exit() – leállítja az ezt a tagfüggvényt hívó szál • bool locked() – visszaadja, hogy egy mutex objektum futását, valamint felébreszti az összes olyan szálat, ami most éppen zárt vagy nyitott állapotú-e. eddig ennek a szálnak a lefutására várt. • bool tryLock() – a célja hasonló a lock() tagfüggvényéhez, de sikertelenség esetén a hívó szál nem Protected eljárások blokkolódik, ezért programunknak lehetõsége van egy • virtual void run() másik logikai ágon továbbfutnia. A Java nyelvhez hasonlóan itt is a run() tagfüggvény képviseli a szál kódját, amit nekünk kell mindig újra A Qt csomag egy másik összehangolási fogalmat is ad: a megvalósítani. QSemaphore osztályt. Egy QMutex objektum kétállapotú jelzõnek (semaphor) feleltethetõ meg. Általános értelemben Statikus protected eljárások viszont jól jön egy olyan eszköz is, ami nemcsak egyetlen • void sleep(unsigned long masodperc) szálat enged be a védett területre, hanem annyit, amennyit • void msleep( unsigned long ezred_masodperc) a jelzõ létrehozójában (constructor) megadtunk. Miért jó ez • void usleep( unsigned long nekünk? Képzeljük el, hogy egy vendéglõben N darab szék millomod_masodperc) van, és a vacsoravendégek jelképezik az egyes szálakat. Ekkor úgy kell szervezni a vendéglõ mûködését, hogy egyszerre Ezek az eljárások a megadott ideig felfüggesztik a szálak legfeljebb csak N darab vendég mehessen be az ajtón, a többi futását (a szálakat elaltatják), ez egyben a hívó szál futási kint várakozzon. Ha néhány vendég elhagyja a vendéglõt, jogáról való lemondását is jelenti. Egy nagyon rövid akkor a várakozók közül már kiválaszthatók a következõ sze- várakoztatáshívás az együttmûködõ szálfuttatási rendszerek rencsés és éhes vendégek. A számítástechnikához kicsit köze- klasszikus yield() (azaz lemondok a futási jogomról) lebb álló példa lehet a TCP/IP-kapcsolatkészlet esete. Tegyük függvényének felel meg. fel, hogy van 10 elõre elkészített Connection objektumunk.

46 Linuxvilág Szaktekintély

Ekkor egy jelzõ vezérelheti a szálak kapcsolatkérési igényeit. tele nem teljesül, elaltathatja magát. Egy másik szál figyeli azt, A QSemaphore osztály rendelkezik az atomi módon végrehajt- hogy a feltétel most már teljesül-e, ha igen, az alvó szálat ható növelõ, csökkentõ mûveletekkel, amiket részletesen a Qt felébreszti. Érezhetõ, hogy ebben a mûködésben a QMutex leírásából tanulmányozhatunk. által kialakított szál összehangolásának is jelentõs szerep jut, hiszen arra is vigyázni kell, hogy a felébredt szál futási felté- Az író–olvasó feladat megoldása telei ne váljanak ismét hamissá. A Qt a QWaitCondition Gyakori helyzet, hogy létezik egy osztottan használható erõfor- osztály segítségével teszi elérhetõvé a feltételes várakoztatást, rásunk (egy adatbázis, egy memóriaváltozó), amit néhány író- ezért nézzük meg, mit nyújt számunkra ez az osztály! folyamat idõnként frissít (általában egy lassú író mûvelettel), illetve sok olvasófolyamat olvas (ez általában egyetlen gyors mû- bool wait(unsigned long time = ULONG_MAX) velet). Az nyilvánvaló, hogy az erõforrás írása során nincs értel- me olvasni, hiszen ekkor átmeneti állapotban lehet a kiolvasan- Elaltatja a szálat, ami az alapértelmezett ULONG_MAX érték dó adat. Ugyanakkor több olvasószál természetesen párhuzamo- esetén addig alszik, amíg valaki fel nem ébreszti. A wait() san olvashat. Ilyen jellegû gond merülhet fel például egy inter- tagfüggvényben valós idõt is megadhatunk (ezredmásodperc- netes tõzsdei index szolgáltató alkalmazás esetén. Példaképpen ben), amely time-outként mûködik, azaz ha a megadott idõ legyen a feladatunk az, hogy egy integer változót (neve: letelik, a szál magától felébred. TheValue) írunk és olvasunk párhuzamosan. Egy lehetséges

megoldást mutat be az 1. listán található forrásprogram. bool wait(QMutex *mutex, unsigned long © Kiskapu Kft. Minden jog fenntartva A 15–20. sorokban létrehozott kiir() függvény biztosítja azt, time = ULONG_MAX) hogy a képernyõre írás megszakíthatatlan (atomi) mûvelet legyen. Ezt a kényes szakaszt a kiiroMutex védi. A Java- Hasonlóan mûködik, mint az elõzõ wait() tagfüggvény, de programozók ilyen kóddal oldották volna meg a feladatot: elalvás elõtt kinyitja a zárolt mutex-et. synchronized ( kiirastVedo void wakeOne() _ Objektum ) { void wakeAll() kiiras... } Legyen qwc egy QWaitCondition típusú változó (objektum). Ekkor a qwc.wakeOne() felébreszt egy olyan szálat, amit elõ- A countOfReader változó tárolja a pillanatnyi olvasók számát. zõleg egy qwc.wait() hívás altatott el. A qwc.wakeAll() A 31. sorban látható létrehozónak egy egész értékû szálazono- az összes ilyen szálat felébreszti. A feltételes elalvás–felébredés sítót tudunk átadni. A TReaderWriter osztály két lényegi jobb megértése érdekében nézzünk meg egy olyan példát, tagfüggvénye a reader() és a writer(). Ezek mûködését ahol három dolgozó szál csinál valami hasznosat (példánkban a reader_mutex és a writer_mutex objektum hangolja csak egy üzenetet jelenít meg a képernyõn, ezt most nem össze. A writer() tagfüggvényt teljes mértékben védi a hangoljuk össze egy kiir() tagfüggvénnyel). A main() writer_mutex. A TheValue értékét azért változtattuk meg függvény szála (azaz a fõ szál) egy gombnyomáseseményt öt lépésben, hogy életszerûbb legyen, ugyanis az írási folyamat figyel, ennek bekövetkeztekor felébreszti az erre a feltételre általában több lépésbõl áll, és emiatt a kényes szakasz bevezetése várakozó három dolgozószálat (2. lista, 53. CD Magazin/Qt nélkül könnyen megszakítható lenne. Ekkor pedig a TheValue könyvtára). változó öttel nem osztható állapota jöhetne létre. A 44. sorban A 12. sorban meghatározott gombnyomásváltozóval kezeljük kezdõdõ reader() mûködése azon az ötleten alapul, hogy az a feltételes elalvást, illetve felébredést. Itt jó programozási olvasó szálakat számoljuk, és amennyiben a számuk nulla, úgy a szokás, ha az ilyen változónak a feltétel vagy az esemény nevét writer_mutex-et is lezárt állapotba hozzuk. Lehetséges, hogy adjuk meg. A 43. sorban látható, hogy a TDolgozo::run() a writer_mutex.lock() nem sikerül, de ez pont jó, hiszen szálkód végrehajtása lényegében azzal kezdõdik, hogy egy ekkor egy írófolyamat dolgozik és nincs is értelme addig olvasni. gombnyomás eseményre várva elaltatja magát. A main() Ekkor itt várunk, amíg az író be nem fejezi a munkáját. Az is szál ciklusfeltételében egy gombnyomásra várakozás van. lehetséges, hogy a writer_mutex.lock() sikerült. Ezután A while ciklus mindaddig ismétlõdni fog, amíg nem a 'v'-t természetesen az írók fognak várni addig, amíg az olvasók (v=vége) nyomtuk le. Egy nem v billentyû lenyomása után száma nulla nem lesz, mert a 60–63. sorok tanúsága szerint a fõprogramban (82. sor) a gombnyomas.wakeAll() feléb- csak ekkor történik meg ismét a writer_mutex felnyitása. reszti mindhárom dolgozószálat, hiszen mindegyik a A 84–101. sorokban megvalósított run() tagfüggvény az eddi- gombnyomas.wait() hívásnál aludt el. A dolgozó szálak giek alapján már biztosan érthetõ, a feladata az, hogy egy szál (d1, d2, d3) az idõ haladtával ismét el fognak aludni, ha már reader() és writer() mûveletet hajtson végre. mindegyik alszik, akkor az ennyiSzalDolgozik változó A main() függvényben egy tízelemû, TReaderWriter muta- nulla lesz, így a fõ szál belsõ while ciklusából újra és újra tókból (pointer) álló tömböt hozunk létre, majd elindítjuk õket kiléphetünk, és az összes dolgozót felébreszthetjük. egy-egy új TReaderWriter objektummal, majd elindítjuk a tíz végrehajtási szálat. A 121. sorban egy tetszõleges billentyûleütésre A termelõ-, illetve fogyasztófeladat megoldása várunk, ennek hatására szabályosan befejezõdik a programunk. A párhuzamos programozás másik klasszikus kérdése (nevez- hetnénk desing patternnek, azaz tervezési mintának is) a ter- A szálak elaltatása és felébresztése: melõ-, illetve fogyasztófeladat. Van egy raktár, ahová a terme- feltételes várakoztatás lõszál bizonyos típusú objektumokat helyez el, míg ezeket a A párhuzamosan futó szálak különféle feladatokat hajthatnak fogyasztószál kiveszi innen, hogy valahol majd felhasználja végre, de általában kijelenthetõ az is, hogy a teendõknek vala- õket. A raktár véges méretû, azaz legfeljebb K darab objektum milyen elõfeltételük szokott lenni. Amikor egy szál futási felté- befogadására alkalmas. Az összehangolásnak két feltétele van:

www.linuxvilag.hu 2003. november 47 Szaktekintély

1. // 43. 2. // Író/olvasó feladat 44.void TReaderWriter::reader() 3. // 45.{ 4. 46. reader_mutex.lock(); 5. #include 47. if ( countOfReader == 0 ) 6. #include 48. { 7. #include 49. writer_mutex.lock(); 8. #include 50. } 9. #include 51. countOfReader++; 10. 52. reader_mutex.unlock(); 11.using std::cout; 53. 12. 54. kiir("Egy ovasás történt:", th_ID, 13.static QMutex kiiroMutex; TheValue); 14. 55. 15.void kiir(char *sz, int th_szam, 56. reader_mutex.lock(); int ertek) 57. countOfReader--;

© Kiskapu Kft. Minden jog fenntartva 16.{ 58. reader_mutex.unlock(); 17. kiiroMutex.lock(); 59. 18. cout << "\n" << sz << " (szál=" << 60. if ( countOfReader == 0 ) th_szam << ", érték=" << ertek << ")"; 61. { 19. kiiroMutex.unlock(); 62. writer_mutex.unlock(); 20.} 63. } 21. 64.} 22.class TReaderWriter : public QThread 65. 23.{ 66.void TReaderWriter::writer() 24. static QMutex reader_mutex; 67.{ 25. static QMutex writer_mutex; 68. writer_mutex.lock(); 26. static int countOfReader; // Az 69. TheValue++; olvasószálak pillanatnyi száma 70. TheValue++; 27. static int TheValue; // Az olvasandó 71. TheValue++; érték tárolója 72. TheValue++; 28. int th_ID; // A szál azonosítója 73. TheValue++; 29. bool leallitott; 74. kiir("Az er _ forrás értéke növelve:", 30.public: -1, TheValue); 31. TReaderWriter( int pID ) 75. writer_mutex.unlock(); { th_ID = pID; } 76.} 32. void reader(); 77. 33. void writer(); 78.void TReaderWriter::leallit(void) 34. void leallit(); 79.{ 35. virtual void run(); 80. leallitott = true; 36.}; 81.} 37. 82. 38. 83. 39.QMutex TReaderWriter::reader_mutex; 84.void TReaderWriter::run() 40.QMutex TReaderWriter::writer_mutex; 85.{ 41.int TReaderWriter::countOfReader = 0; 86. leallitott = false; 42.int TReaderWriter::TheValue = 0; folytatás a következõ oldalon

• A termelõnek aludnia kell addig, amíg a raktár tele van. zési minta egységbe zárja a védett erõforrást (adatot) és az ezt • A fogyasztónak aludnia kell addig, amíg a raktár teljesen üres. kezelõ mûveleteket (függvényeket). A szálak az erõforrást csak a monitor által biztosított mûveleteken keresztül kezelhetik. Példaprogramunkban a raktárat egy BUFFER_MERET nagyságú, (3. lista, 53. CD Magazin/Qt könyvtára.) egészekbõl álló tömb testesíti meg. A termelt objektumok egész A forráskód elején lévõ BUFFER_MERET állandó (constans) számok. A program ismertetése elõtt kiemelném két érdekessé- a raktár nagyságát, a TERMELENDO pedig a legyártandó egész gét. Az elsõ az, hogy a raktár egy ciklikus FIFO segítségével számok számát határozza meg. A program 24–29. sorában van megvalósítva. Ebben az adatszerkezetben a betett elemek megvalósítottuk az összehangolt képernyõre írást, a szálak csak számát is figyelemmel kell kísérnünk, különben az ÜRES és a ennek a használatával jeleníthetik meg a szöveges adatokat. MEGTELT eseteket nem tudnánk megkülönböztetni. A másik A 30. sortól egy segédfüggvényt találunk, ami a libc véletlen- érdekesség, hogy a program az összehangolt adatkezeléshez szám-generáló lehetõségét használja egy új (1 és 5000 közötti) (raktárkezeléshez) a monitorelgondolást használja. Ez a terve- egész érték létrehozásához.

48 Linuxvilág Szaktekintély

folytatás az elõzõ oldalról

87. 113. rw[i] = new TReaderWriter(i); 88. reader_mutex.lock(); 114. } 89. kiir("Elindult egy új szál:", th_ID, -1); 115. 90. reader_mutex.unlock(); 116. for (int i=0; i<10; i++) 91. 117. { 92. while ( !leallitott ) 118. rw[i]->start(); 93. { 119. } 94. for(int i = 0; i < 20; i++) 120. 95. { 121. getchar(); 96. reader(); 122. 97. } 123. for (int i=0; i<10; i++) 98. writer(); 124. { 99. } 125. rw[i]->leallit(); 100. kiir("Leált a következ _ szál:", 126. }

th_ID, -1); 127. © Kiskapu Kft. Minden jog fenntartva 101.} 128. for (int i=0; i<10; i++) 102. 129. { 103. 130. rw[i]->wait(); 104.// 131. } 105.// Indulás... 132. 106.// 133. for (int i=0; i<10; i++) 107.int main() 134. { 108.{ 135. delete rw[i]; 109. TReaderWriter *rw[10]; 136. } 110. 137. 111. for (int i=0; i<10; i++) 138. return 0; 112. { 139.}

A 39. sortól található meg a TMonitor osztály felülete és Az összes példa egyszerre történõ lefordításához mellékeltem megvalósítása. egy Makefile-t. Nézze meg mindenki, hogy nála is a /usr/lib/qt3 könyvtár tartalmazza-e a Qt csomagot! Ha nem, 39. class TMonitor akkor a Makefile-ban a jó elérési útra kell beállítani a -I és -L 40. { kapcsolókat. A make parancs kapcsolók nélküli futtatásával az 41. int buffer[BUFFER_MERET]; // Ide termelünk összes példa futtatható változata elõállítható. és innen fogyasztunk Mindenkinek kellemes programozást kívánok! 42. int elso, utolso, betettElemekSzama; 43. public: A cikkhez tartozó listák megtalálhatóak az 53. CD Magazin/Qt 44. TMonitor(); könyvtárában. 45. void betesz(int e); 46. int kivesz(void); Nyíri Imre ([email protected]) 47. }; Jelenleg a MOL Rt.-nél dolgozik. Informatikai vállalkozásában az Internet, a Linux, valamint Ez a típus lesz az a monitor, amelyik átmenetitárazza a termelõ a Java-programozás gyakorlati hasznosításával termelését, illetve szolgáltatja az objektumokat (most csak egy- egy egész szám) a fogyasztónak. Ezt a két mûveletet a betesz() foglalkozik. Örök szerelme a C++ maradt. és a kivesz() tagfüggvények valósítják meg. Vegyük észre, hogy a betesz() a fogyasztószálat, a kivesz() a termelõ-  szálat ébreszti, bár lehet, hogy erre nem lenne szükség, de nem lesz belõle baj. Az az igazság, hogy az így, feltétel nélkül kiadott KAPCSOLÓDÓ CÍMEK wakeOne(), azaz felébresztés valószínûleg nem nagyobb költségû, mintha megvizsgálnánk, hogy a másik szál alszik-e. 1. A Qt-csomaghoz adott leírás A 98–102. sorig a termelõosztály, míg a 107–111. sorig a fogyasz-  http://doc.trolltech.com tóosztály felülete van meghatározva. Látható, hogy mindkettõ-  http://www.trolltech.com run() run() ben csak a tagfüggvény került újraírásra. Mindkét 2. Dr. Kacsuk Péter–Ferenczi Szabolcs tagfüggvény annyira egyszerû, hogy nem is érdemes hozzájuk Párhuzamos és konkurens programozás magyarázó szöveget írni. A fõ szálat megvalósító main() függ- soktranszputeres rendszereken vény pedig még ennél is egyszerûbb. Röviden ennyit szerettem Budapest, 1993 BME jegyzet (ISBN 963 431 774 X) volna elmesélni a Qt többszálúság (multithread) lehetõségeirõl. A példaprogramok tanulmányozásához sok sikert kívánok.

www.linuxvilag.hu 2003. november 49 Dobbantó

Héjprogramozás Linux alatt (7. rész) Akármilyen nyelven fejlesztünk is programot, egy idõ után számos olyan építõelemet fedezünk fel a saját munkánkban, amit újra és újra felhasználunk.

ostanra e sorozatunkban is eljutottunk odáig, hogy 1: #!/bin/sh elkezdhetjük áttekinteni a héjprogramozás kifino- 2: PROGRAMNEV=`basename $0` multabb módszereit, valamint a programban 3: Mgyakran felbukkanó, „újrahasznosítható” kódelemeket. 4: # Kapcsolók kigyûjtése 5: kapcsolok() A parancssori kapcsolók kezelése 6: { A sorozat egy korábbi részében már megtanultuk, hogyan lehet 7: for i in $*

© Kiskapu Kft. Minden jog fenntartva a parancssori kapcsolókat kezelni. Tudjuk tehát, hogy ezekhez 8: do a $1, $2 stb. szimbólumok segítségével férhetünk hozzá. 9: if echo $i | grep ^- > /dev/null Mármost a parancssori kapcsolók is alapvetõen két csoportra 10: then oszthatók: vannak az „igazi” kapcsolók, amelyek a program 11: # Hibás kapcsoló keresése által megvalósított feldolgozási mûvelet célját vagy forrását 12: if echo $i | grep '[^-abc]' határozzák meg, és léteznek az értékek, amelyek a feldolgozás > /dev/null mikéntjét szabályozzák. Tekintve, hogy Unix alatt minden 13: then fájlnak minõsül, az értékek általában fájlnevek, a kapcsolók 14: return 1 pedig egybetûs parancsok, amelyeket a Unix hagyományainak 15: fi megfelelõen általában egy – (mínuszjel) elõz meg. 16: # Érvényes kapcsolók keresése Ahhoz, hogy programunk a kapcsolók hatására a megfelelõ 17: for kapcsolo in a b c mûveletsort hajthassa végre, rendelkeznie kell egy olyan 18: do résszel, amely a kapcsolókat felismeri és a végrehajtást a 19: if [ `echo $i | grep $kapcsolo | megfelelõ mederbe tereli. wc -l` -eq 1 ] Tegyük fel, hogy programunk mûködése legfeljebb három 20: then különbözõ kapcsolóval vezérelhetõ. Ezek a -a, -b és -c szim- 21: parancs="$kapcsolo=1" bólumok legyenek. Ezenkívül a kapcsolók, illetve a fájlnevek 22: eval "$parancs" megadásának sorrendjére vonatkozóan semmiféle további meg- 23: fi kötéssel nem élünk: például a kapcsolókat egybe szabad írni, 24: done vagyis a -a -b formátum helyett azonos jelentéssel használható 25: fi a -ab is. Továbbá egy vagy több fájlnevet is meg lehet adni 26: done kapcsoló elõtt és után, vagy akár két kapcsoló között is, sõt egy 27: } kapcsoló akár többször is szerepeltethetõ. Összefoglalva tehát, a 28: felhasználó gyakorlatilag azt tesz, amit akar, a programnak kell 29: # Fájlnevek kigyûjtése elég intelligensnek lennie ahhoz, hogy bármilyen formátumú 30: fajlnevek() parancssort helyesen értelmezzen. (Egyetlen dolgot azért mégis 31: { kössünk ki: fájl neve soha ne kezdõdjön mínuszjellel.) 32: lista="" Milyen elemekbõl kell tehát állnia egy ilyen programnak? Elõ- 33: for i in $* ször is a megoldandó feladat két, világosan elkülönülõ részre 34: do választható szét: azonosítanunk kell a kapcsolókat, és össze kell 35: if echo $i | grep -v ^- > /dev/null gyûjtenünk a fájlneveket. Ha két mûvelet ennyire élesen elkü- 36: then lönül, célszerû két függvény formájában megvalósítani õket. 37: lista=$lista" "$i A parancssorba a felhasználó által „beömlesztett” értékek szétválo- 38: fi gatásának alapelve nyilván az lehet, hogy a kapcsolók vagy azok 39: done csoportjai mínuszjellel kezdõdnek, a fájlnevek pedig nem. Ha fájl- 40: echo $lista nevet találunk valahol, azt elegendõ egy nagy listába begyûjteni, 41: } ami viszonylag könnyen megoldható, ha tudjuk, hogy héjprog- 42: ramokban a karakterláncok összemásolásához nem kell egyebet 43: # Tájékoztató szöveg tennünk, mint egy értékadás jobb oldalán egymás mellé írni õket. 44: if [ $# -eq 0 ] A kapcsolóknál eleve fel kell készülünk rá, hogy a felhasználó 45: then esetleg csoportokban adta meg õket, így a legegyszerûbb 46: echo "Használat: $PROGRAMNEV [-abc] megoldás az, ha egy-egy grep parancs segítségével minden " mínuszjellel kezdõdõ parancssori kapcsolóban az összes 47: exit 1 lehetséges kapcsolót végigvizsgáljuk, illetve az esetlegesen 48: fi jelenlevõ érvénytelen kapcsolókat is. Ennyi bevezetõ után 49: lássuk a feladat egyik lehetséges megoldását! 50: # Kapcsolók vizsgálata

50 Linuxvilág Dobbantó

51: a=0; b=0; c=0 változó nevét maga a ciklusváltozó ($kapcsolo) tartalmazza. 52: kapcsolok $* Többek között az ilyen közvetett értékadások megoldására 53: if [ $? -ne 0 ] szolgál az eval parancs, amely egy karakterláncban megadott 54: then parancssort (jelen esetben a $parancs-ot) hajtja végre. 55: echo "Hibás kapcsoló!" ; exit 1 56: fi A szabványos megoldás: getopts 57: A parancssori kapcsolók kezelése annyira általános feladat, 58: # Fájlnevek kigyûjtése hogy maga a Unix, illetve a héj is rendelkezik egy külön erre 59: fajlok=`fajlnevek $*` a célra szolgáló getopts nevû paranccsal, ennek használata 60: a következõ: 61: echo "Kapcsolók beállításai: a=$a b=$b c=$c" getopts "lehetséges_kapcsolók" változónév 62: echo "A feldolgozandó fájlok listája: $fajlok" A getopts tulajdonképpen pontosan ugyanazt teszi, mint az elõzõ programunk, vagyis a megadott mintában elõforduló A kapcsolókat a kapcsolok(), a fájlok neveit pedig a betûket keresi a mínuszjellel kezdõdõ parancssori értékekben. fajlnevek() függvény kezeli. Bár a fõprogramban ezt hívjuk Ha érvényes kapcsolót talál, azt elhelyezi a megadott héjvál-

meg késõbb, kezdjük a vizsgálatot az utóbbival. Mindenekelõtt tozóban. Ilyenkor a visszatérési értéke igaz, egyébként hamis. © Kiskapu Kft. Minden jog fenntartva figyeljük meg, hogy a függvény meghívásakor (59. sor) a Ezt az utóbbi tulajdonságát használhatjuk ki arra, hogy egy program teljes paraméterkészletét ($*) átadjuk neki. Erre azért while ciklussal az összes kapcsolót végignézessük vele. van szükség, mert – mint arról korábban már volt szó – a függ- (A getopts mindig csak a soron következõ kapcsolót vizs- vény „program a programban”, vagyis mindenbõl sajátja van. gálja, de megjegyzi, hogy hol tart.) Létezik saját bemenete és kimenete, valamint saját parancssora Ha hibás kapcsolót talál, akkor alapértelmezés szerint hibaüze- is. Ha ide nem emeljük át az egész héjprogramnak átadott netet küld a képernyõre, a munkaváltozóba pedig egy ?-t (kér- értékeket, akkor a függvény nem fogja látni õket. Számára dõjelet) tesz. A hibaüzenet kiküldését megtilthatjuk, ha a ugyanis $1 nem a fõprogram elsõ parancssori értékét jelenti, lehetséges kapcsolók felsorolását egy kettõsponttal kezdjük. hanem a sajátját. Mindezek ismeretében elõzõ programunkat a következõkép- A végrehajtandó mûveletsor lelke a 35. sorban látható. Itt meg- pen is megírhatjuk: vizsgáljuk, hogy a 33. sorban induló for ciklus által pillanat- nyilag kiválasztott érték elsõ karaktere mínuszjel-e vagy sem. 1: #!/bin/sh Ha nem (a negálást a grep -v kapcsolója végzi), akkor a tar- 2: # A getopts parancs használata talmát egy szóközzel kiegészítve a lista nevû gyûjtõváltozó- 3: hoz másoljuk. A ciklus lefutása után ennek a tartalmát adjuk 4: PROGRAMNEV=`basename $0` vissza egy közönséges echo-val a függvény szabványos kime- 5: netén keresztül. Megint fontos hangsúlyozni, hogy a függvény 6: if [ $# -eq 0 ] csatornájáról van szó, vagyis a fájlok listája nem a képernyõre 7: then kerül. Éppen ennek a kimenetnek az elfogására, és a fajlok 8: echo "Használat: $PROGRAMNEV [-abc] nevû változóban való elhelyezésére szolgál az 59. sorban a " parancsbehelyettesítés. 9: exit 1 A kapcsolók vizsgálatánál hasonló módszereket alkalmazunk. Ha 10: fi egy kapcsoló meg van adva a parancssorban, akkor egy, a nevé- 11: vel azonos héjváltozó értékét 1-re állítjuk. (Természetesen bármi- 12: while getopts ":abc" KAPCSOLO lyen más módszer is használható lenne.) A kapcsolok() függ- 13: do vénynek átadott értékeken a 7. sorban induló for ciklus megy 14: case $KAPCSOLO in végig. Minden mínuszjellel (-) kezdõdõ csoportnál elõször 15: "a") echo "-a kapcsoló megadva";; célszerûen azt kell megvizsgálnunk, hogy tartalmaz-e téves kap- 16: "b") echo "-b kapcsoló megadva";; csolót (grep '[^-abc]'). Figyeljük meg, hogy itt és valameny- 17: "c") echo "-c kapcsoló megadva";; nyi ehhez hasonló vizsgálatnál a grep kimenetét a /dev/null-ba 18: "?") echo "Hibás kapcsoló"; exit 2;; irányítottuk. Erre azért van szükség, mert a grep alapértelmezett 19: esac viselkedése szerint a találatokat kiküldi a szabványos kimenetére. 20: done Ez most azonos lenne a függvény szabványos kimenetével, és mivel az sincs átirányítva, a szöveg végül a képernyõre kerülne. A rövidség ára a kötöttebb mûködés. A kapcsolókat továbbra is Ha hibás kapcsolót találtunk, azt a függvény azonnali visszaté- egybe szabad írni, de a getopts azt elvárja tõlünk, hogy a résével és az 1-es visszatérési értékkel (return 1) jelezzük. fájlok felsorolását valamennyi kapcsoló megadása megelõzze. Ez utóbbit az 53. sorban a $? változó vizsgálatával detektálja Elõzõ, lényegesen hosszabb programunk ugyanakkor e a fõprogram. (A $? beépített héjváltozó a legutoljára lefutott tekintetben is teljesen „liberális” volt. parancs visszatérési értékét tartalmazza. Jelen esetben a Büki András kapcsolok() függvény egyetlen parancsnak minõsül.) ([email protected]) A 16–23. sorban immár az érvényes kapcsolókat vizsgáljuk. Körülbelül kilenc éve dolgozik Linux Egy for ciklussal egyenként végigpróbáljuk valamennyit, és operációs rendszerrel. Állandó szerzõtársa ha illeszkedés van az adott csoporton belül, akkor a megfelelõ Prof. Dr. H. V. Kuksinak, akivel a Duna vagy a nevû változó értékét 1-re állítjuk. Ezt az utóbbi mûveletet egy Tisza partján szoktak az élet és a tudomány kicsit trükkösen kell végrehajtanunk, hiszen most a beállítandó viselt dolgairól töprengeni.

www.linuxvilag.hu 2003. november 51 Dobbantó

Vírusok, férgek, hátsó ajtók, trójaiak (16. rész) Az elõzõ részben az operációs rendszerek védelmi módszereirõl esett szó, azaz megnéztük, miként tárolja a rendszer, hogy ki milyen erõforrásokhoz férhet hozzá, és azokkal mit tehet. A biztonság kérdése azonban itt nem merül ki. Hiába jó egy védelmi módszer, a rendszerre számtalan más veszély is leselkedik.

z a rész egy kicsit rendhagyó lesz, mivel olyan Jelszavas hitelesítés dolgokról ejtünk szót, amelyek nem feltétlenül esnek Ez mind közül a legelterjedtebb, mivel könnyedén megvalósít- bele az operációs rendszert alkotó „fogaskerekek” ható, és semmilyen különleges eszközt nem igényel, például Eismertetésébe. Erre mégis szükség van, mert a rendszer biz- mágneskártyát vagy ujjlenyomat-leolvasót. Csupán a felhasz-

© Kiskapu Kft. Minden jog fenntartva tonságát olyan dolgok is fenyegethetik, amelyek ellen az náló azonosítóját és jelszavát kell bekérni. A Unix esetében ezt operációs rendszer egymaga nem tud védekezni – a felhasz- a login nevû program végzi, amely a kapott jelszót egybõl nálónak is tennie kell az ügy érdekében. Ez azonban visszafelé titkosítja is, majd összehasonlítja a jelszófájlban tárolttal. Ha is igaz: hiába tesz meg mindent a felhasználó, ha az operációs ez egyezik, akkor beengedi a felhasználót, ha nem, akkor a rendszer nem biztonságos, nem ér semmit az egész. A bizton- belépési kérelmet visszautasítja. ság pedig nem egy utólag is hozzáadható tulajdonság. Erre A jelszavas azonosításnak akad egy rendkívül nagy hátránya, már akkor készülni kell, amikor lerakjuk a rendszer elsõ mégpedig az, hogy könnyû becsapni. A rendszer nem tud „alapköveit”. különbséget tenni a jogosult felhasználó és azon személy Vegyük például a vírusokat: az operációs rendszer számára a között, aki kitalálta vagy valamilyen módon megtudta a másik vírusok ugyanolyan programok, mint a szövegszerkesztõ vagy jelszavát. Ezért az olyan rendszerekben, ahol a védelmet jelszó a parancsértelmezõ. A víruskeresõ alkalmazás is felhasználói segítségével oldják meg, a felhasználókat is komoly felelõsség szinten fut. Mégis létezik olyan operációs rendszer, amelyik terheli. Egyrészt azért, hogy ne olyan helyre írják fel jelsza- kevésbé van kitéve a vírusok támadásának. A Unix-rendsze- vukat, ahonnan más is elolvashatja (de az a legjobb, ha le sem rekben például a felhasználók nem módosíthatják a programok írják), másrészt azért, hogy ne könnyen kitalálható jelszót kódját, így a vírus nem képes további alkalmazásokat megfer- válasszanak maguknak. tõzni. Az MS-DOS-felhasználók azonban hiába rettegnek a Erre a két dologra ugyan már végtelenszer felhívták a felhasz- vírusoktól és tennének meg mindent a fertõzés elkerülése nálók figyelmét, a többség még mindig egyszerû jelszavakat végett, ilyenfajta védelemrõl nem is álmodhatnak. Hiába hasz- (például neveket, szótári szavakat) használ. Ezért komoly nálunk azonban Linuxot, ha rendszergazdaként indítgatunk veszélyt jelenthet az úgynevezett szólistás módszer, amikor mindenféle kétes származású alkalmazást – a fertõzés veszélye a támadó egy listát készít a gyakori jelszavakról, majd ezeket emiatt ugyanúgy fennáll. egyenként titkosítja; ezután az egészet összeveti a felhasználók Még mielõtt azonban elmélyednénk a férgek és a vírusok rendszerben tárolt titkosított jelszavaival. természetében, az elõzõ részbõl maradt adósságunkat Itt védelmet nyújthat az, ha kikötjük, hogy a felhasználók törlesztjük. csak olyan jelszavakat használhatnak, amelyben egyszerre szerepel kis- és nagybetû, illetve szám. Egy másik megoldás Felhasználók hitelesítése lehet a jelszófájl sózása. Ez azt jelenti, hogy a felhasználók Mi, emberek olyan okosak vagyunk, hogy embertársainkat jelszavához titkosítás elõtt hozzáadunk egy n bites véletlen könnyedén felismerjük. A gépek azonban buták, ma még számot. Ezt az n bites számot is titkosítjuk, majd a jelszófájlban nem képesek úgy felismerni a felhasználót, mint ahogy tároljuk. Természetesen, ha a felhasználó jelszót változtat, ez mi a szomszédunkat a liftben. Ezért az operációs rendszer- a szám is változik. nek nincs más választása: meg kell kérdeznie, hogy éppen A sózás abban nehezíti meg a támadó dolgát, hogy jelentõsen ki akarja õt használni. Egyes rendszerek feltétel nélkül megnöveli jelszó-listájának a méretét. Ha például a támadó elhiszik, amit a felhasználó mond, más rendszerek azért úgy gondolja, hogy az „almafa” karaktersorozatot valaki ellenõriznék valamilyen módon. Ezt az eljárást nevezzük jelszóként használhatja, akkor a listában fel kell még tüntetnie hitelesítésnek. az „almafa1”, „almafa2” stb. jelszavakat is. Ez azt jelenti, A hitelesítés három dolgon alapulhat: vagy a felhasználó hogy a lista mérete az eredetinek 2n-szeresére fog változni. tudását ellenõrizzük (jelszó), vagy a tulajdonát (mágneskártya), A Unix-rendszerek is használják a sózást, õk az n értékének vagy egy olyan dolgot, amivel a felhasználó azonos (például a 12-t választották. Ez már tekintélyes növekedést jelenthet a ujjlenyomat). Most csak a jelszavas hitelesítéssel foglalkozunk, jelszófájlban. azt azonban érdemes megjegyeznünk, hogy igazán bizton- A sózásnak elsõsorban nem az az érdeme, hogy növeli az ságos csak akkor lehet a dolog, ha e három hitelesítési eljárás amúgy is csak pár megabájt méretû, gyakori jelszavakat tartal- közül legalább kettõt együttesen és egymástól függetlenül mazó lista méretét. Inkább az, hogy a nyers erõ (broute force) használunk. (A bankautomaták például ilyenek. A pénz felvé- módszerét alkalmazóknak keseríti meg az életét. Minden jelszó teléhez a PIN kódra is szükség van. Az egymástól független feltörhetõ, csak idõ kérdése. Ha viszont a felhasználó kizárólag tárolás jelen esetben azt jelenti, hogy a PIN kód nem a mág- kisbetûkbõl álló, öt karakter hosszúságú jelszót használ, akkor neskártyán van tárolva.) az összes lehetõség végigpróbálása már nem tûnik annyira

52 Linuxvilág Dobbantó

kivitelezhetetlennek. A sózás használatával azonban jelentõsen egy, talán még tíz évvel ezelõtt lehetetlennek is mondott növelhetjük ezt az idõt, bár az igazi megoldás az lenne, ha új linkvírus alfaj: a makróvírus. Legfontosabb tulajdonsága, a felhasználók kizárólag legalább nyolc, kis- és nagybetûket, hogy adatfájlokkal érkezik. Egy W betûvel kezdõdõ nevû illetve különleges jeleket egyaránt tartalmazó jelszavakat operációs rendszernek van például egy szintén W-vel használnának. induló nevû szövegszerkesztõje, amely lehetõvé teszi, hogy Az újabb Unixok abban is segítik a felhasználói jelszavak a dokumentumokban a felhasználó úgynevezett makrókat védelmét, hogy nem a mindenki számára olvasható helyezhessen el. A makró tulajdonképpen egy egyszerû /etc/passwd állományban tárolják a titkosított jelszavakat, ha- programnyelv, amelyet a szövegszerkesztõ értelmez, majd nem egy, a felhasználóktól elzárt helyen. Azok a programok, végrehajt. A makró eredetileg minden bizonnyal a „felhasz- amelyek ehhez hozzáférhetnek (például login, passwd) nálói beavatkozást igénylõ (interactive) dokumentumok” csak késleltetéssel adják vissza az eredményt, ezzel is lassítva létrehozását szolgálta, de elég fejlett volt ahhoz, hogy pél- a támadó munkáját. dául fájlkezelõ mûveletekre használhas- sunk. Ennek köszönhetõen megfe- Vírusok lelõ teret kínált vírusok számára, A biológiaórán megismert vírusok olyan életformák, amelyek magát a szövegszerkesztõt amelyek rendkívül egyszerû szerkezetûek: csak használták futási közegként. A mak- egyetlen DNS-bõl (vagy RNS-bõl) és az azt védõ róvírusok megjelenése két dolog

fehérjeburokból állnak. A vírusok ezért nem is miatt jelentett nagy csapást a © Kiskapu Kft. Minden jog fenntartva tekinthetõk valódi élõlényeknek, maguktól személyi számítógépek bizton- szaporodni sem képesek. Így hát önmaguk ságára nézve: egyrészt azért, reprodukálása céljából hihetetlenül gonosz mert makróvírus írásához nem tetteket hajtanak végre: volt szükség magas szintû egészséges sejteket programozási ismeretekre; támadnak meg, és beépítik másrészt azért, mert a doku- a saját DNS-üket a sejt mentumcserék akkor még élettani folyamatait teljesen gyanútlanul mentek szervezõ központjába. végbe, se a felhasználók, se a Tulajdonképpen átveszik vírusirtók nem számítottak a doku- az irányítást, azaz a sejtet mentumokból elõbújó szörnye- arra kényszerítik, hogy tegekre. Az internet elterjedése, és a különbözõ mindennapi tevékenysége internetes alkalmazások egy rendszerbe történõ helyett inkább további vírusok „összevonása” a makróvírusok szétáramlását még jobban elõállításával foglalatoskodjon. megkönnyítette… Az informatikaórán megismert vírusok olyan programrészek, Akadnak olyan vírusok is, amelyek másképp támadnak a amelyeknek a legfontosabb feladatuk az, hogy saját magukat rendszerre (bár többségük már csak az emlékezetünkben ismételjék. Például más programokat úgy változtassanak él). Ilyenek voltak például a társvírusok, amelyek nem meg, hogy azok tartalmazzák magának a vírusnak a kódját is nyúlkáltak a gazdaprogram kódjába, hanem az azt tartal- (vagy annak egy másik változatát), ezáltal már a fertõzött mazó futtatható állományt nevezték át és tették rejtetté, program is a vírus újbóli megismétlésével fog foglalatoskodni. majd a helyére saját magukat másolták. A gazdaprogram A számítógépes vírus mûködési elve tehát a biológiai víruséra elindításakor valójában a vírus indult el, amely termé- rímel. Ahogy a biológiai vírus sem önálló élõlény, és a szaporo- szetesen elindította az eredeti programot is. Ezek a vírusok dásához szüksége van egy gazdasejtre, úgy a számítógépes azonban hamar lebuktak, ha valaki a gazdaprogram eredeti vírus sem önálló program, inkább csak gépi kódú utasítások állományában keresett adatot vagy programkódot (azaz az halmaza, amelyeknek a végrehajtásához egy gazdaprogramra úgynevezett overlay technikát használták). A társvírusok van szükség. egyik rendszerre jellemzõ alfaját az „EXECOM” vírusok A vírussal megfertõzött sejt – miután több ezer új vírust képezték, amelyek az MS-DOS-nak azt a tulajdonságát hasz- gyártott le – rövid idõn belül elpusztul. Vannak azonban nálták ki, hogyha parancssorból történõ indításkor a felhasz- olyan vírusok (az úgynevezett csendesen fertõzõ vírusok), náló nem ad meg kiterjesztést, akkor a rendszer elõször a amelyek nem okoznak jelentõs károsodást a gazdasejtben, .COM kiterjesztéssel keres állományokat, s ha nem talál, csupán a vírus további szaporodását teszik lehetõvé. A szá- akkor .EXE-vel folytatja, végüla .BAT-tal zárja a próbálgatást. mítógépes vírusok az utóbbi elvet követik, mivel lételemük Ha például létezett egy valami.exe nevû állomány, a vírus a rejtõzködés. Ha ezt nem tennék, a felhasználó rövid úton mellérakott egy valami.com nevût, amely magát a vírust felfedezné õket. Ezért egy életképes vírus a megfertõzött tartalmazta. Ezután már csak abban kellett reménykedni, programot mindig csak annyira változtatja meg, hogy az a hogy a felhasználó a programot a valami parancs kiadá- további programok megfertõzése mellett eredeti feladatát is sával indítja el. Az EXECOM vírusok azonban egy Norton kifogástalanul végezhesse. Ez a gyakorlatban a legtöbbször Commander nevû alkalmazás elterjedése következtében úgy mûködik, hogy a vírus kódja a megtámadott futtatható teljesen kihaltak. állomány végére kerül, és úgy változtatja meg a fejlécet, Az eddig említett vírusok nagy hátránya, hogy addig hogy elõször a vírus kódja hajtódjon végre. Miután a vírus teljesen hatástalanok, amíg egy fertõzött állomány végre- elvégezte a dolgát (további állományokat fertõzött meg), hajtásra nem kerül. Ezért vannak olyan vírusok, amelyek az eredeti program is végrehajtásra kerül. Ezek az úgyne- már a gép indulásakor, még az operációs rendszer betöltõ- vezett linkvírusok – ez a legõsibb és legelterjedtebb vírus- dése elõtt szeretnek aktiválódni. Ezek az úgynevezett indí- fajta, ám bizonyos alkalmazások létrejöttével megjelent tóvírusok (boot virus), amelyek az indítórészben laknak,

www.linuxvilag.hu 2003. november 53 Dobbantó

így a gépszintû program (firmware software) (PC esetében már felfedezett vírusokat, de ez is csak abban az esetben a BIOS) már a gép indítása után egybõl nekik adja a vezér- lehetséges, ha az adott vírus ügyetlenül vagy egyáltalán nem lést. Az indítóvírusok általában egyben vírusok is, tehát védekezik az alkalmazott módszer ellen. nemcsak a hajlékonylemez-meghajtóba tett lemezek indító A legismertebb ilyen módszer a szignatúrakeresés. Ez arra szektorát, hanem a gépen található alkalmazásokat is meg- a feltevésre épül, hogy a vírusok kódjának valamely része fertõzik. Az indítóvírusok azonban nem jelenthetnek veszélyt biztosan egyedi, azaz nem fordulhat elõ olyan állományban, az igazi védett módú operációs rendszerekre (például a amelyik az adott vírussal nincs megfertõzve. Ez máig a legha- Linuxra vagy a Windows XP-re). tékonyabb vírusészlelõ módszer, és a vírust még a mûködésbe lépése elõtt felfedezhetjük. Hatástalan azonban az ismeretlen Rejtõzködés vírusokkal szemben, továbbá a korszerû polimorf vírusokkal A vírusok tehát olyan programkódok, amelyek saját magukat sem tud mit kezdeni, mivel õk képesek a saját kódjuk megvál- sokszorosítják. A vírusírók pedig olyasfélék, akik olyan prog- toztatására. Egy másik nem elhanyagolható dolog, hogy a ramkódokat írnak, amik saját magukat sokszorosítják. Ez már szignatúra-adatbázist folyamatosan frissíteni kell, és az adat- önmagában is kihívás, de a vírusírók a szaporodáson kívül bázis növekedésével a keresés ideje is növekszik. mindig szeretnek valamiféle „magasabbrendû” célt kitûzni gyermekeik számára. Ez lehet például adatszerzés, rombolás, vagy éppen valami ártatlan kis semmiség. Mindenesetre minél

© Kiskapu Kft. Minden jog fenntartva szaporább egy vírus, annál nagyobb esélye van arra, hogy a kitûzött célt teljesítse. A vírus tevékenysége azonban mindig valamilyen változással jár. Például, ha megfertõz egy futtatható állományt, akkor annak a mérete megváltozik. Mivel ezek a változások felismer- hetõk, fennáll a veszély, hogy a felhasználó gyanút fog, ami egyben (legalábbis azon a rendszeren) a vírus pályafutásának a befejezését jelentheti. A korszerûbb vírusok nemcsak arra ügyelnek, hogy a fertõzött programok futtatása közben a fel- használó semmi rendelleneset ne észleljen, hanem arra is, hogy a szaporodással járó változásokat minél jobban eltitkolják. Hogy erre milyen módszereket használhatnak, az nagymérték- ben függ magától az operációs rendszertõl is. Például az MS- DOS, ami tulajdonképpen nem más, mint egy eljáráscsomag, semmiféle korlátozást nem szabott a programok számára. Mi több, a teljes vezérlést az alkalmazás kezébe adja, így a vírusok nyugodtan módosíthatták az indítórészt, vagy magukra irá- Mivel a polimorf vírusok könnyedén kijátszhatják a szignatú- nyíthatták a különbözõ rendszerhívásokat. Ezáltal olyan dol- rakeresõket, a heurisztikus keresés kifejlesztése vált szüksé- gokra is képesek lehetnek, hogy például a fertõzött állomány gessé. A módszer lényege annyi, hogy a víruskeresõ elkezdi méretének a lekérdezésekor hamis eredmények szülessenek értelmezni a program kódját, gyanús tevékenységeket keresve (így leplezve a méretváltozást). benne. (Ilyen gyanús dolgok lehetnek például a különbözõ Ilyesmi nem lehetséges egy olyan valódi védett módú operá- titkosító és polimorfikus eljárások). Elõnye, hogy az ismeretlen ciós rendszer esetében, amelyben minden folyamat szigorúan vírusokat is képes felismerni, viszont nagyon nagy a hiba- csak a saját memóriaterületével rendelkezik. Ez természetesen százalék: nagyszámú a téves riasztás, és nem minden esetben nem jelenti azt, hogy például Linuxra nem lehet vírust írni. akad a vírus nyomára. Vírust minden operációs rendszerre lehet írni, csak nem Mivel a vírusok kivétel nélkül változásokat idéznek elõ, a mindig érdemes. Ha például a vírust alkotója azzal a képesség- változások megfigyelésével felismerhetjük õket. Ehhez az kell, gel ruházza fel, hogy egy ismert biztonsági rést használjon ki, hogy még a vírus nélküli rendszerrõl mindent fel kell jegyez- akkor a vírus sok csúnya dologra képes lehet, megfertõzheti nünk (például a futtatható állományok tartalmát, illetve annak magát az operációs rendszert is. „lenyomatát” a CRC algoritmus használatával). Ezután már Mindenesetre a többfelhasználós rendszerek nagyobb ellenál- csak rendszeres idõközönként össze kell hasonlítani a rendszer lást tanúsíthatnak a vírustámadásokkal szemben, hiszen az jelenlegi állapotát az eredetivel – ha vírus van a rendszerben, egyszerû felhasználók a programok többségét csak futtathatják, akkor a víruskeresõ észreveszi, de csak azután, miután a vírus de nem módosíthatják. Az elindított vírus így csak a felhasz- mûködésbe lépett. További gond, hogy változást nem csak náló tulajdonában lévõ állományokra jelenthet veszélyt, a vírus okozhat, ezért téves riasztás is elõfordulhat. rendszer egészére azonban nem. Kivéve, ha nem a rendszer- Láthattuk tehát, hogy mindegyik módszernek megvan az gazda indít fertõzött állományt. A makróvírusok azonban a elõnye és hátránya, így igazán hatékony megoldást csak többfelhasználós rendszerekben is életképesek, mivel a doku- együttes használatukkal érhetünk el. A jövõ azonban bíztató, mentumok a felhasználók tulajdonában vannak. mivel kutatások folynak olyan „intelligens” víruskeresõ programok kifejlesztésére, amelyek képesek csapdába ejteni Vírusok nyomában a gépet megtámadó vírust. Ezt úgy érheti el például, hogy Sem most, és valószínûleg a jövõben sem fog létezni olyan egy pontosan ismert csali mindenfelé programokat helyez el algoritmus, amelyik egyértelmûen és tévedhetetlenül képes a rendszerben, majd azokba véletlen írásokat kezdeményez, kimutatni bármilyen vírus jelenlétét a rendszerben. Bár ezáltal „bírja rá” a vírust a csaliprogram megfertõzésére. Mivel többféle módszer létezik, amelynek alapján megsejthetjük, ismeri az eredeti csalit, a vírus kódja könnyedén kinyerhetõ, hogy vírustámadás áldozatai lettünk, illetve felismerhetünk elemezhetõ – esetleg önmûködõen azt észlelõ és eltávolító

54 Linuxvilág Dobbantó

eljárást is készíthet hozzá. Ez a módszer sem lehet százszáza- A hálózatok többségében a felhasználóknak nem csak egy lékosan megbízható, amíg nem lehetünk biztosak abban, hogy géphez van hozzáférésük, így a féreg arra is vette a fáradságot, a memóriába ugyanazokat az adatokat kapjuk vissza, mint hogy nekiálljon feltörni a felhasználók jelszavát, és az ilyen ami a lemezen szerepel (és nem azt, amit egy kósza vírus módon megszerzett gyenge jelszavak segítségével megpró- módosított). Ugyanez a nehézség a többi módszer esetén is báljon a többi gépbe is beférkõzni. fennáll, így az igazi megoldás talán az lenne, ha a víruskeresõ A vírusokhoz hasonlóan a férgeknek is rejtõzködniük is az operációs rendszer belsejében foglalna helyet. Ám a siker kell, hogy minél tovább szaporíthassák önmagukat. Ezért ekkor sem lenne garantált. nem jó, ha a féreg túl korán lelassítja a megfertõzött gépeket. A most tárgyalt féreg például a fertõzés elõtt megnézte, A féreg hogy hány példányban fut már a kérdéses gépen. Ha már Féregvírusnak is szokás nevezni, mivel a férgeket is szaporo- több mint hét példányban futott, akkor inkább más célpont dásra tervezték. A féreg (worm) azonban nem vírus. Ha megint után nézett. egy, a biológiaórán megismert szereplõhöz szeretnénk hasonlít- Ez a féreg annyira hatékony volt, hogy rövid idõn belül több gatni, akkor a féreg a baktérium megfelelõje lehet. A baktérium ezer gépet volt képes megfertõzni és megbénítani (ami egy önálló élõ szervezet, amely képes saját magától szapo- akkoriban az internet jelentõs részét képezte). A féreg azért rodni, méghozzá gyorsan – elegendõ tápanyag jelenlétében is mérföldkõnek számított a számítógépes biztonságtechnika akár exponenciális ütemben is. A féreg tehát olyan önálló terén, mert képes volt olyan biztonsági hibákat kihasználni,

program, amelyik saját magát sokszorosítja és indítja el, egé- amelyek segítségével felhasználói beavatkozás nélkül © Kiskapu Kft. Minden jog fenntartva szen addig, amíg a rendszer össze nem omlik. tudott terjedni. A legtöbb féreg azonban mindig nagyban gondolkozik. Azóta több féreg is átsöpört a világon, volt olyan is, amelyik Míg a vírusok minél több állomány megfertõzésére töreksze- nem volt ennyire összetett, több közülük csupán egy levele- nek, addig a férgek az internet segítségével minél több gépre zõügyfél hibáját próbálta kihasználni. Általában azért a el szeretnének jutni. Mindig „egyedül” utaznak, és amint „felhasználó” is hibás volt, mert megnyitotta a férget tar- megérkeznek egy helyre, egybõl azon gondolkoznak, hogyan talmazó levelet. juthatnának el más gépekre. Az elsõ igazán nagy pusztítást végzõ féreg 1988-ban szabadult Hátsó ajtók és trójai falovak el, és a Berkeley Unixok biztonsági réseit használta ki. Ez a A hátsó ajtó egy olyan kód, amelyik rést nyit a rendszeren, féreg két részbõl állt: a féreg magjából és egy áthúzó program- és illetéktelenek belépését teszi lehetõvé, illetve adatokat juttat ból. Az utóbbit a megtámadni kívánt gépen kellett lefordítani ki a rendszerbõl. A trójai faló egy olyan alkalmazás, ami valami és lefuttatni. Feladata csak annyi volt, hogy kapcsolódjon mást is csinál, mint amit hirdet magáról, és azt a valamit ahhoz a géphez, ahonnan érkezett, majd töltse át a féregmagot, nagyon jól titkolja. majd fordítson és futtasson. A féreg magja megnézte a Fontos, hogy sem a hátsó ajtó, sem a trójai faló nem vírus /etc/hosts nevû állományt, amelybõl kiderült, hogy az adott és nem is féreg, mivel egyik sem szaporodik. Az más kérdés, gép mely további gépekkel áll kapcsolatban. Ezekre áttöltötte hogy sok vírus egyben hátsó ajtó is, tehát alkotója számára az áthúzó programot, és kezdõdött minden az elejérõl. belépést biztosít a fertõzött gépekre. A trójai programok Az igazán érdekes azonban az, hogy a féreg miként volt képes is tartalmazhatnak hátsó ajtót (ebben az esetben a hátsó- rávenni a távoli gépeket az áthúzó program lefuttatására. ajtó-készítés a titkos feladat), de lehetnek például vírusgaz- Három módszert is kipróbált rá. Elõször az rsh (remote shell) dák is. A vírusgazda nem egy vírussal fertõzött program, parancs segítségével próbálta meg elérni a távoli gép parancs- csak tartalmazza a vírust, és végrehajtáskor azt útjára engedi sorát. Ha sikerült, akkor az áthúzóprogramot áttöltve és a rendszerben. lefordítva megvalósult a fertõzés. A következõ részben szó lesz még a rejtett csatornákról és a Amennyiben ez nem jött volna be, a finger démon egy felhasználói réteg alkalmazásairól. Elsõsorban a démonokról ismert távoli átmeneti tár túlcsordulási hibáját aknázta ki. írok majd, amelyek fontos építõkövei a Unix-rendszereknek Ennek a módszernek az a lényege, hogy értékként egy jó nagy, (még ha nem is tekinthetõk közvetlenül az operációs rendszer különlegesen összeállított adatblokkot adunk át. Ez az adat- részének). Nem kanyarodunk el azonban véglegesen a bizton- blokk bõven nagyobb volt, mint az átmeneti tár, így az túlcsor- ság kérdésétõl, mivel megtudhatjuk azt is, hogy egy könnyen dult, és a verem felülírásra került. Ha képesek vagyunk távoli „korrumpálható” démon milyen mértékben áshatja alá a program vermébe írni, akkor megváltoztathatjuk annak a rendszer biztonságát (a válasz: nagymértékben). visszatérési címét. Így a finger feladata befejezte után nem az eredeti helyre tért vissza, hanem elindított egy parancssort. Garzó András ([email protected]) A féreg ehhez kapcsolódva könnyedén telepíthette magát. Körülbelül három éve foglalkozik Linux- és más Unix-rendszerekkel. A harmadik próbálkozás a Sendmail nevû levelezõrendszerrel Legjobban az operációs rendszerek lelkivilága érdekli, de nyitott történhet: a féreg egy másik gépre (levélként) átküldhette, egyéniség. Kedvenc étele a palacsinta, és van egy Richard nevû majd futtathatta magát. macskája. Minden észrevételt, megjegyzést, levelet szívesen fogad.

www.linuxvilag.hu 2003. november 55 Dobbantó

Hogyan térjünk át Linuxra lépésrõl lépésre? Mostanában egyre több embert foglalkoztat a címbeli kérdés, hiszen egyre több szó esik a szabad programokról mint az új irányzatról, élén a téma összefogójával, a szabad programmozgalom zászlóvivõjével: a Linux operációs rendszerrel. Vajon miért érdeklõdnek az emberek e témakör kerengõ szóbeszédei iránt?

ogyha valami újat hall az ember, azonnal érdekelni kezdi, rögtön kíváncsi lesz, és nincs ez más- Hképp akkor sem, amikor az ismerõseim

© Kiskapu Kft. Minden jog fenntartva a Linuxról kérdeznek. Egyszer csak eljön a pillanat, hogy engedve a kíváncsisá- guknak, megpróbálnak feltenni egy ilyen operációs rendszert a gépükre. Iga- zából itt kezdõdnek a nehézségek, ugyan- is a másoktól hallottak alapján próbál- nak meg elindulni, ám azok korántsem szilárd talajon álló útmutatók, inkább csak úgy lógnak a levegõben. Nem árt Melyiket válasszam? tisztában lenni néhány szakmai kérdés- Mindenekelõtt szükségünk lesz egy sel, mielõtt ilyen vállalkozásba kezde- terjesztésre a telepítéshez, amelyet cél- nénk, de ez általában nem így van, nem szerû úgy megválasztani, hogy késõbb csoda hát, hogy a Linux a legtöbb ember mi, kezdõ felhasználók ne szenvedjünk számára túl nagy falatnak bizonyul. vele sokat. Ezt a tényt szem elõtt tartva Ennek természetesen gyomorrontás a jelen cikkben a SuSE Linux 8.2 változa- vége, és teljesen elmegy a kedvük ettõl tának a telepítését szeretném bemutatni. az új hóborttól. Pedig valójában nem Megjegyzem, hogy a korábbi változatok nagy ördöngösség egy ilyen rendszer telepítése is csak alig különbözik a jelen- telepítése és használata, csak épp a hiá- legitõl, ezért ha valaki az itt leírtakat egy nyos adatok alapján végzett kísérlet számára elérhetõbb 8.1-es vagy 8.0-s gyakran kudarccal jár, és ez a felsülés változatra próbálja meg alkalmazni, az Telepítés hajlamos elvenni az emberek kedvét. nagy valószínûséggel mûködni fog. A SuSE telepítésének alapvetõen két Ezek elkerülése érdekében ezzel a cikkel Itt szeretném megjegyezni, hogy hama- módja lehetséges: hálózatról vagy egy új sorozat indul a magazinban, rosan a boltokba kerül a 9.0-s változat, CD-rõl történhet. A hálózat hátránya, amely a kezdõ Linux-felhasználókat amely a tapasztalatok alapján a telepí- hogy nem árt, ha minél gyorsabb kap- lépésrõl lépésre végigvezeti az átállás tést tekintve szinte egyáltalán nem fog csolat áll rendelkezésünkre, a progra- folyamatán – a telepítéstõl egészen az különbözni az itt leírtaktól (legfeljebb mok azonban rengeteg FTP-kiszolgálón egyes alkalmazási területeken adott még egyszerûbb lesz), így ha valaki a teljesen ingyen hozzáférhetõk. A CD-s lehetõségek kihasználásáig. Abban a cikket olvasva kedvet kap, és szeretne telepítéshez még internetkapcsolatra reményben kezdek neki cikkem írásá- magának vásárolni egy SuSE Linuxot, sincs szükségünk, viszont a CD-állo- nak, hogy az olvasóra gyakorolt hatás annak talán érdemes megvárni az új, mányok sehonnan nem tölthetõk le, eredményeképpen sokkal több ember feltehetõen szebb és jobb változatot, ehhez meg kell vennünk a SuSE termé- kóstol bele a szabad programok világá- mielõtt megvenné a mostanit, aztán két, amely pénzbe kerül. Ám ne ijedjünk ba, és a fiaskók elkerülésével csökken vágyna az újabb után. meg, a dobozban ugyanis nemcsak majd az effajta elõítélet, amely a „hasz- Ami az erõforrásokat illeti: ha rendelte- CD-k (DVD-k) vannak, hanem két igen nálhatatlanság” bélyegét sütötte a tésszerûen szeretnénk használni a vastag magyar nyelvû kézikönyv, amely Linuxra. Ehhez azonban az is kell, hogy gépet, ne adjuk alább egy 300 MHz-es fõként a Linuxot még soha nem látott aki belefog a telepítésbe, bizonyos szin- Pentium II Celeron processzornál és ember életét könnyítheti meg jelentõ- ten azért tisztában legyen néhány foga- 128 MB memóriánál. Ezenkívül szükség sen, ezen felül három hónapos ingyenes lommal. Azt tudom mondani, hogy aki lesz legalább 2 GB szabad lemezterü- telepítési támogatást is nyerünk. telepített már Windows 2000-et, vagy letre, de ha minden csomagot fel szeret- A hálózatról történõ telepítés során XP-t, az itt is boldogulni fog, de ez nem nénk tenni, az 5–6 GB-ra is rúghat – szükségünk lesz indító CD-re vagy haj- jelenti azt, hogy egy, a témában járatlan amely azonban végletes eset, átlagosan lékonylemezre, amit az olvasónak ne sikerülhetne, hiszen a legfeljebb 2,5 GB, de már ebben az  ftp://ftp.suselinux.org/pub/suse/boot/ bemutatott terjesztés egy átlagos rend- esetben is egy jól megrakott rendszer könyvtárban találunk. A lemezlenyo- szerre 1–2 egérkattintással telepíthetõ. birtokában vagyunk. matokat letöltve vagy CD-re írva

56 Linuxvilág Dobbantó

(boot.iso), vagy több hajlékonylemezre számunkra, hogy bármelyik javaslatot lemezrészre ahhoz, hogy használni másolva a rawrite program segítségé- megváltoztassuk. A képernyõn található tudjuk. A Linux ezt megoldja magának, vel megkapjuk a kívánt indítólemezeket. egyes részlegek a telepítés fõbb jellem- keres egy elegendõ méretû szabad le- A rendszerindítás után a hálózati kap- zõit tükrözik, a címek alatt kisebb betû- mezrészt, és a maga igényei szerint le- csolat megadását követõen a megfelelõ vel szedve található az egyes elemek foglalja, megteszi a szükséges beállítá- helyen ki kell választanunk az adatfor- részleteire vonatkozó tájékoztatás. sokat. Ha nincs ilyen felosztható terület, rást, amelyrõl az  ftp.suselinux.hu Ha át akarjuk õket állítani, a címsorra akkor megpróbál átméretezni egy olyan kiszolgálón lévõ ide vonatkozó leírásból kattintva új paneleket kapunk. Az új lemezrészt, amin elég szabad hely talál- tájékozódhatunk. felületet az alábbiak szerint kell értel- ható, hogy a számára elegendõ területet Nézzük azonban most az egyszerûbb mezni az egész telepítés folyamán: bal fel tudja szabadítani. Célszerû a telepí- telepítési módot, ahol az elsõ néhány oldalon található egy általános terület, tés megkezdése elõtt elõkészíteni a lépés elhagyható. Tegyük be a program ahol mindig a pillanatnyi lépéshez tar- merevlemez egy részét, amin nincs tozó magyar nyelvû segédletet találjuk, semmi, de ha ezt nem tudjuk megol- ebben röviden ismertetik az adott folya- dani, hagyjunk valamelyik meghajtón mat lényegét, tippeket adnak a beállí- 5 GB körüli szabad helyet, és a többit bízzuk a telepítõre. Most egy kicsit azokhoz szólnék, akik jártasak a lemez-

felosztás mûvészetében. A Linux számá- © Kiskapu Kft. Minden jog fenntartva ra fõként két elsõdleges vagy kiterjesz- tett lemezrész szükséges. Az egyik egy, a fizikai memóriával arányos méretû csereterület (swap), ahová a rendszer a ritkán használt memóriaterületek tartalmát helyezi át – felfoghatjuk vir- tuális memóriának is. A másik területen helyezkedik el maga az operációs rend- szer és a felhasználók állományai. A cse- reterület lemezrészének létrehozásánál a méret megadása után válasszuk ki a csereterület-fájlrendszert a bal alsó le- nyíló menübõl, majd mentsük a változ- tatásokat. A fõ (gyökér) lemezrész létre- hozásához foglaljunk le körülbelül 5 GB területet, és javasolt a ReiserFS fájlrend- szer használata, amelyet szintén a bal alsó lenyíló menüben találunk. A befûzési pontok mutatják meg, hogy elsõ korongját vagy a DVD-jét, és indít- a rendszer hová fûzze az egyes lemezré- suk róla a gépet. Amikor bejön az indí- szeket, vagyis a használat során hol lát- tóképernyõ, nyomjunk meg a le–fel bil- tásra, amiket természetesen ajánlott be- szódjanak. A két alaptípus létrehozá- lentyûket, hogy tájékozódni tudjunk. tartani. A képernyõ nagyobbik felén ta- sánál a lemezkezelõ program önmûkö- A képernyõ alján látszik a felbontás. lálható a beavatkozófelület, itt végezhet- dõen beállítja ezt nekünk, de ha nem Ha ez nekünk nem felel meg, az F2 bil- jük el a telepítés folyamán a beállításokat. így volna, mert más módon kezdtük el lentyû segítségével megváltoztathatjuk. a létrehozást, akkor a csereterület-lemez- A telepítés során a grafikus kártyánk Az észlelt beállítások rész csatlakoztatási pontja swap legyen, VESA-módban üzemel, amely 60 Hz-es A billentyûzetre és egérre vonatkozó a fõ lemezrészé pedig /. Ezek után min- képfrissítési frekvenciát használ, ennek adatok az esetek túlnyomó többségében den adott, hogy megkezdhessük a fényében kell tehát a monitorunknak helyesek (értsd: én még nem találkoztam telepítést. megfelelõ felbontást kiválasztani. Ha olyannal, hogy rosszul ismerte volna fel), TIPP: ha nem boldogulnánk a telepítõ nem vagyunk biztosak benne, válasszuk ezzel nem kell foglalkoznunk, sõt ha akaratos átméretezési vágyával, válasz- a 640×480-as üzemmódot, az biztosan tényleg teljesen kezdõ felhasználók va- szuk a lemezkezelõ panel jobb alsó mûködik. gyunk, semmi egyébbel se törõdjünk, sarkában található Szakértõ menü Ha most kiválasztjuk az Installation csak folytassuk a következõ telepítési Partíciós tábla újraolvasása menüpont- menüpontot, elindul a telepítés folya- lépéssel. Ha azonban egy-két beállítást ját, ami után a telepítés elõtti állapotból mata. Pár másodperc elteltével megkap- meg szeretnénk változtatni, akkor kalan- indulhatunk ki. Az egész folyamat nem juk a telepítõfelületet, elsõként a nyelv- dozzunk el egy kicsit ezen a képernyõn. bonyolultabb, mint egy Windows XP választási lehetõséggel. Javasolt a ma- telepítése során történõ lemezkialakítás, gyar nyelv kiválasztása a késõbbi eset- Lemezfelosztás csak ne ijedjünk meg tõle – ugyanazt leges nehézségek elkerülése végett. Az elsõ fontos rész a lemezterület felosz- kell tenni, csak épp NTFS fájlrendszer Ha ez megvan, a következõ lépésre tása, amelyben a Linux számára szüksé- helyett itt a ReiserFS-t kell kiválasztani, kattintva a telepítõ elõkészíti a rend- ges lemezrészek kialakítását végezhetjük. és szükségünk van még egy kisméretû szert, majd megmutatja a tervezett Kevesen tudják, hogy minden operációs csereterület típusú lemezrészre is. Újra telepítési menetet, és lehetõvé teszi rendszernek szüksége van valamilyen hangsúlyoznám azonban, hogy aki az

www.linuxvilag.hu 2003. november 57 Dobbantó

itt leírtakat nem érzi a magáénak, nyu- godtan folytassa a telepítést a felajánlott beállításokkal, a Linux úgyis fel fog menni a gépre. Kényelmes szolgáltatás az is, hogy a már létezõ windowsos, DOS-os és egyéb lemezrészeket önmûködõen hozzá fogja fûzni a rendszerhez, így minden elõké- szítés és fájdalom nélkül írhatjuk, olvas- hatjuk a többi lemezen lévõ fájlokat. Ezenkívül lehetõségünk adódik a gépen található régebbi operációs rendszerek használatára is, mivel a SuSE ezt is min- den külsõ beavatkozás nélkül felismeri, egymás fájljait ne lássuk, akarva akarat- nálni – ilyen esetekben a SuSE is azt és beteszi a rendszertöltõ menübe, ahol lan ne tudjunk kárt tenni más munkájá- javasolja, hogy vegyünk másikat. Ha minden indításkor lehetõségünk lesz ban és tönkre se tehessük a rendszert), tehát ilyen modemet birtoklunk, egye- választani. azonosítani kell magunkat a Linux lõre hagyjuk a beállítását, majd a telepí-

© Kiskapu Kft. Minden jog fenntartva A többi lehetõség megváltoztatására számára. Linuxunk alapesetben ismer tés végeztével, vezérlõprogramokkal a gyakorlatilag semmilyen átlagos számí- minket, és a megfelelõ minta egyezte- tarsolyunkban próbáljuk meg beállítani. tógép esetén nincs szükség. Egyetlen tése után elkönyveli, hogy mi használ- említésre méltó pont az idõzóna beállítá- juk, és megengedi az ismeretségnek Az elsõ felhasználó létrehozása sainál található óra beállítása lehetõség, megfelelõ mûveletek elvégzését. A rend- Ha továbbmegyünk, lehetõséget kapunk amelyet nem célszerû UTC-re állítani, szerben létezik egy olyan alapértelme- az elsõ felhasználó létrehozására. Ez is mégha azt is akarja, válasszuk inkább a zett felhasználó, aki a rendszerért fele- a fent említett többfelhasználós rendszer helyi idõ szerinti beállítást. Mindenképp lõs, aki megismerteti a rendszerrel, hogy következménye. Ismertessük meg ma- tegyünk így, ha mellette más operációs kik használhatják, és aki a gép „üzemel- gunkat a rendszerünkkel, hogy késõbb rendszert is használunk, mert ezáltal tetését” végzi, ennélfogva bármit megte- beengedjen bennünket. Írjuk be a ne- mindegyikben ugyanazt az idõt látjuk, het, és mindent lát. Ez a felhasználó vünket, majd adjuk meg a bejelentke- más esetben elõfordulhat, hogy a a rendszergazda (root). Jelen esetben a zési becenevünket és a jelszavunkat. Linuxban helyes idõ Windows alatt mi gépünket mi mûködtetjük, úgyhogy Késõbb, amikor a rendszer arra szólít fel greenwichi idõvé válik. egy személyben rendszergazdák is bennünket, hogy azonosítsuk magunkat vagyunk. Adjunk meg tehát egy jelszót, (jelentkezzünk be), ezt a becenév–jelszó Az összetevõk telepítése hogy mások ne birizgálhassák a fontos párost kell majd megadnunk. Fontos, Még a telepítésre kerülõ programok beállításokat. Késõbb látni fogjuk, hogy hogy ne rendszergazdaként jelentkez- listáját sem érdemes módosítani. Egy- leszünk mi még felhasználók is, ehhez zük be, ugyanis ha így használjuk a részt azért, mert nem tudjuk még, hogy azonban még nem érkeztünk el, inkább rendszerünket, az számos veszélyt rejt mi mire való, másrészt mindezt késõbb folytassuk a telepítést. magában: például végzetesen elronthat- ugyanilyen kényelmes formában meg- juk némelyik beállítást, hiszen minden- tehetjük, és jelen esetben talán jobb, ha A hálózati eszközök beállítása hez jogunk van. most arra törekszünk, hogy felépítsünk Most következik a hálózati eszközök be- egy alaprendszert, amellyel aztán meg- állítása. Egyszerû modem, ADSL kapcso- Az eszközök beállítása kezdhetjük az ismerkedést. lat, hálózati kártya beállítása nem jelent- A felhasználó létrehozása után követ- Ha készen vagyunk, a telepítés követ- het gondot, erre itt külön nem is térnék kezzen az eszközök beállítása, és ha kezõ szakasza a fájlok másolása és ki, hiszen az eszközt a rendszer valószí- már ideértünk, álljunk is meg egy kicsit. kicsomagolása a merevlemezre, közben nûleg felismeri (nagyon ritka darabnak A telepítõ az összes létezõ összetevõt majd kérni fogja az egyes CD-ket, ha kell lennie, hogy ez ne így történjen), a megpróbálja felismerni, és az esetek épp nem DVD-rõl telepítünk. beállítás pedig ugyanúgy zajlik, mint a többségében sikerül is az összeset elta- Az alapfájlok másolása után a rendszer többi operációs rendszer alatt. Minden lálnia. Az eszközellenõrzés után egy újraindul, ám a telepítés itt még nem üres mezõ értelemszerûen van elnevez- hasonló mûködésû panelt kapunk, mint fejezõdik be. Egyrészt tovább zajlik ve, tehát aszerint is kell õket kitölteni! az elején, a telepítés elõkészítésénél. majd a fájlok másolása és kicsomagolása, Ezentúl egészen pontos segítséget kapha- Az egyes összetevõcsoportok címkéi másrészt ezután adódik majd lehetõsé- tunk a bal oldali sávban lévõ súgótól. alatt találjuk az abba a csoportba tartozó günk az eszközök beállítására. Elõbb És most térjünk rá a nehezebb felada- felismert eszközöket (a videokártyát és azonban a fájlok másolásának végezté- tokra: ha olcsó PCI-os WinModemet a monitort, a nyomtatót, a hangkártyát vel a rendszer kéri a rendszergazda (softmodem) használunk, ne csodálkoz- és a tévékártyát). A videokártya beállítá- jelszavát. Hogy ezt megértsük, nézzünk zunk, ha nem ismeri fel a telepítõ, sai szinte mindig helyesek, a monitort egy kicsit a dolgok mögé! A Linux több- ugyanis ez igazából nem is modem. azonban már nehezebben ismeri fel, ha felhasználós operációs rendszer, ami azt Végleg azért ne temessük el a dolgot, háromévesnél öregebb. Ehhez találunk jelenti, hogy egyszerre egy vagy több akad némi WinModem-támogatás a néhány szabványos vezérlõt, amellyel géprõl többen is használhatják a masi- Linuxhoz, de ez nagymértékben attól használhatjuk a monitort, de ha nagyon nánkat mindenféle nehézség nélkül. függ, hogy milyen típusú az eszköz. értünk hozzá, beállíthatjuk a függõleges- Ahhoz azonban, hogy az ebbõl adódó Általában, ha a gyártó nem írt hozzá vízszintes eltérítési frekvenciákat, hozzá- nehézségeket elkerüljük (például vezérlõt, akkor nem fogjuk tudni hasz- adhatjuk a kívánt felbontást, amivel

58 Linuxvilág Dobbantó

máris megoldottuk a képernyõ-informá- meg, hogy azok is teljes egészében élvez- Egyéb eszközbeállítások ciós fájl hiányát. Itt csak annyi megjegy- hessék az új rendszert, akiknél hiányos- Ha valamilyen okból nem tudtuk a zést szeretnék tenni, hogy ha jól is is- ságok léptek fel a telepítés folyamán. telepítés során beállítani, hogy milyen meri fel a telepítõ a monitort, az elér- Ehhez mindenekelõtt két nagyon fontos hálózati kapcsolattal rendelkezünk, mert hetõ legnagyobb felbontást igyekszik rendszerösszetevõt kell megismernünk: például a külsõ modemünk ki volt beállítani. Ez nem mindig elõnyös, és a KDE Vezérlõközpontot és a YaST2 kapcsolva, akkor ezen úgy segíthetünk, olyan módon védekezhetünk ellene, Vezérlõközpontot. Az elõbbivel inkább hogy a SuSE munkamenü/YaST hogy a grafikus kártya panelén belüli a grafikus felhasználói felület kinézetét, menü/YaST modulok/Hálózati eszközök Színek/felbontások menüre kattintva a alapvetõ mûködési beállításait, a felü- menü megfelelõ elemének kiválasz- bejövõ Munkaasztal tulajdonságai ablak lettel együtt járó programok beállításait tásával a nyomtató hozzáadásához Felbontások fülében csak azt a felbontást változtathatjuk meg, míg a másodikkal hasonlatosan telepítjük. Az elsõ lépés itt hagyjuk meg, amit használni szeret- az eszközbeállításokat, a hálózati eszkö- is a felismert eszközök elfogadása vagy nénk. Késõbb, amikor a Vezérlõközpont zöket, a hálózati szolgáltatásokat, a új eszköz kiválasztása egy listából, majd segítségével át akarjuk állítani, ugyan- rendszerbeállításokat módosíthatjuk, be kell állítani az adott eszközt, beleért- ezen a módon megtehetjük. Befejezés- és programokat telepíthetünk vagy ve a kapcsolatra jellemzõ adatok (fel- kor a Teszt gombbal ellenõrizzük le, távolíthatunk el a rendszerbõl. használónév, jelszó stb.) megadását is. hogy a beállított felbontás és a monitor Mindezeknek a szolgáltatásoknak az egy- Fontos megjegyeznünk, hogy itt adódik

együtt képes-e mûködni, látjuk-e a szerû eléréséhez a tálcán található a SuSE lehetõségünk az eddigi eszközök beállí- © Kiskapu Kft. Minden jog fenntartva képet. A kipróbálás során lehetõség munkamenü. A menü legelsõ pontja egy tásainak a megváltoztatására. Alapve- nyílik némi kalibrálásra is, amellyel a almenü, ezen keresztül juthatunk el az tõen az összes összetevõre jellemzõ ez megjelenõ kép méretét és pozícióját egyes rendszerbeállítások elvégzéséig a megoldás: a panel felsõ részében az pontosíthatjuk. A Mentés gombra kat- vagy magáig a YaST2 vezérlõközpontig. újonnan felismert, de még be nem állí- tintva a következõ indítás során már az tott eszközök láthatók, alul pedig a már új jellemzõk lépnek érvénybe. Ha a Ismét egy kis nyomtatóbeállítás eddig telepített összetevõket sorolja fel a próba során mégsem látszódna a kép, Nézzük elõször a nyomtatónk telepí- rendszer. Minden esetben ide térhetünk egy kis idõ elteltével önmûködõen, vagy tését, mert mondjuk a rendszer nem tehát vissza, ha bármi gond adódna. a CTRL+ALT+BACKSPACE billentyûvel ismerte fel, ugyanis hálózati nyomtatót azonnal visszakapjuk a beállítópanelt, szeretnénk használni. Ehhez válasszuk Végszó amelyben célszerû vagy a felbontást, a SuSE munkamenü/YaST menü/YaST Ha idáig eljutottunk, a grafikus felhasz- vagy a képfrissítési frekvenciákat modulok/Hardver/Nyomtatók menü- nálói felület beépített programjaival a visszábbvenni, majd újra ellenõrizni, pontját, az elõugró ablakban adjuk meg legtöbb általános szolgáltatást már elvé- hogy mûködik-e. a rendszergazda jelszavát (mert ez olyan gezhetjük: böngészhetünk a neten, leve- Ami a nyomtatót illeti: ha nem ismerné feladat, amit csak a rendszergazda tehet leket olvashatunk, játszhatunk, és legfõ- fel a párhuzamos vagy USB-s nyomta- meg), várjuk meg az önmûködõ felis- képp nézelõdhetünk, illetve ismerked- tónkat, ne ijedjünk meg, elképzelhetõ, merést, és vagy fogadjuk el az érzékelt hetünk a rendszerünkkel, amely filozó- hogy az adott típus ellen van némi ki- nyomtatókat, vagy ha nem szeretnénk, fiájában esetenként eltér az eddig meg- fogása. Ilyen esetekben azt tehetjük, akkor kattintsunk a Beállítás gombra, és szokottaktól, de semmivel sem rosszabb hogy valamilyen általános nyomtató- válasszuk ki, hogy milyen típusú kapura náluk. Fontos megértenünk, hogy csakis programmal hajtjuk meg. Ehhez ritka csatlakozik a nyomtató. A következõ fokozatosan, lassan-lassan tapasztalva típusok esetén jól kell ismernünk nyom- lépésben meg kell adnunk magát a tudunk elõrehaladni, ilyen módon el tatónkat, ám a legtöbb esetben megteszi, kaput, de a legtöbb esetben csak el kell tudjuk kerülni a közben ért kudarcokat, ha tudjuk, milyen is valójában. Ha pél- fogadnunk az általa felajánlottat. Ezután ami visszavethetne bennünket a fejlõdés- dául van egy HP LaserJet 3150-es nyom- jön a nyomtató típusának megadása, ben. A sorozat további cikkeiben megpró- tatónk, akkor nyugodtan használhatjuk és itt már ugyanazok az irányelvek érvé- báljuk részfeladatonként bemutatni a a HP LaserJet-meghajtót, hibátlanul fog nyesek, amelyekrõl a telepítés során rendszert, kezdve a Vezérlõközpont és a mûködni (ez igaz a DeskJet sorozat tag- történõ nyomtatóbeállításnál is szó volt. YaST bemutatásával, valamint a rendszer jaira is). Ezzel azonban most ne foglal- Ha semmilyen módon nem tudjuk alapvetõ szolgáltatásaival és beállításaik- kozzunk, majd a telepítés végeztével a mûködésre bírni a nyomtatónkat, cél- kal. Addig pedig mindenkinek csak azt YaST program segítségével beállítjuk. szerû a gyártó honlapján utánanézni, tudom javasolni, hogy ismerkedjen a hogy milyen támogatást nyújtanak. feltelepített Linuxával, próbálgassa; ne Ami végezetül ránk vár… Ha netán hálózati nyomtatónk van, aggódjon, felhasználóként olyan nagyon Továbblépkedve a Hardverbeállítások akkor válasszuk a További kapcsolatok nem tudja elállítgatni, de ha mégis úgy fülrõl, némi képernyõváltás után értesí- megjelenítése lehetõséget, majd a meg- adódna, egy bátor újratelepítéssel tést kapunk arról, hogy befejezõdött a jelenõ panelben válasszunk protokollt, nemcsak orvosolja a hibát, de gyakorlatot telepítés, birtokba vehetjük a számítógé- ezután tegyük meg protokollfüggõ be- is szerez az ilyen jellegû rendszerek pet. Ehhez viszont be kell jelentkeznünk, állításainkat, és újfent válasszunk nyom- üzemeltetésében. azaz be kell mutatkoznunk a rendszer- tatótípust ama bizonyos irányelvek alkal- Komáromi Zoltán nek. Most kell tehát beírni azt a bizonyos mazásával. Kényelmes szolgáltatás, hogy becenév–jelszó párost, amelyet a telepí- windowsos hálózaton történõ nyomtató- ([email protected]) tés során megadtunk. Az OK gombra telepítésnél mind a nyomtatókiszolgálót, 23 éves, a BME hallgatója, kattintva elindul a grafikus felhasználói mind az ott található megosztott nyom- mellette PHP-programozóként felület. Ha ez megtörtént, gyakorlatilag tatókat böngészhetjük, semmit sem kell dolgozik. Kedvenc területe készen vagyunk, ám itt még ne álljunk fejbõl tudnunk a telepítéshez. a multimédia.

www.linuxvilag.hu 2003. november 59 Dobbantó

Saját IRCBot Perl nyelven Napi több óra csevegés közben jól jöhet egy társ, aki a rendszeres, könnyen önmûködõvé tehetõ feladatokat ellátja helyettünk.

botokról röptében annyit, hogy a csevegõként futó programok több egyszerû feladatot láthatnak el: a csevegõszoba foglalását, a elárasztás (flood) elleni Avédelmet, önmûködõ kirúgást (kick), illetve opot (az op biztonságos jogokkal rendelkezõ IRC felhasználó); hivatkozá- sokat és egyéb adatok megjegyzését stb. Mindehhez emberi beavatkozás nem szükséges, esetleg futás közben befolyásol-

© Kiskapu Kft. Minden jog fenntartva ható a mûködése. A cikkben egy IRC-re (Internet Relay Chat) írt botot mutatok be. A magyar IRCNeten csak a sote.irc.hu és a hub.irc.hu kiszolgálókon szabad botokat futtatni. Arról, hogy az adott IRC-kiszolgálón futtathatunk-e botot, általában a MOTD (Message of the day) tájékoztat. Percdíjas internet esetén érdemes saját IRC-kiszolgálót telepíteni, és a fejlesztés ideje alatt azon próbálgatni a botot. Az IRC-rõl további ada- tokat, az alapfogalmakról leírásokat, illetve az illemtanról a  http://www.irc.hu címen olvashatunk. Perl nyelven írt botom felépítéséhez a Net::IRC (v0.73-2) modult használtam. E csomag fejlesztõi felületét fogom ismer- tetni, természetesen nem kimerítõen, csupán amennyire e Ezeken kívül választhatjuk még a dancer-ircd és a cikk keretei engedik és amennyi ismeret az induláshoz elenged- dancer-services csomagokat is. Annyival tudnak többet hetetlen. A csomag négy fõ összetevõbõl áll: Net::IRC, az egyszerûbb IRC-kiszolgálónál, hogy különbözõ szolgáltatá- Net::IRC::Connection, Net::IRC::Event, sokat nyújtanak a csevegõk számára: csevegõszoba, név (nick) Net::IRC::DCC. Az utóbbi bemutatására nem térek ki rész- bejegyzése stb. Forrásból való telepítése sokkal bonyolultabb letesebben, mert nem feltétlenül szükséges a bot mûködéséhez, feladat – ennek ismertetése túllép e cikk keretein, de a bátrab- és az elõzõek ismeretében könnyen megtanulható. A Net::IRC bak megpróbálkozhatnak vele. modul adja a keretet a bot mûködéséhez. Eseményvezérelt felépítésének köszönhetõen nem szükséges az IRC-protokollt Elsõ lépések mélységeiben ismerni, és a kiszolgáló által küldött üzeneteket Az 1. listán egy nagyon egyszerû IRC bot (Timmy) forrása ellenõrizni, hanem az elõre meghatározott eseményekre látható (ez egyébként a CD-mellékleten is megtalálható, az (connect, join, msg stb.) mindössze egy-egy eljárást kell írni, 53. CD Magazin/IRCbot könyvtárában). Alapvetõen nem csinál amelyek önmûködõen meghívódnak. Ezeket a függvényeket mást, mint kapcsolódik egy IRC-kiszolgálóhoz, belép egy önkényesen hozzárendelhetjük az egyes eseményekhez, de csatornára, és idõnként azt mondja, hogy Timmy (a hasonlóság nem is mindegyikhez kötelezõ. A késõbbiek folyamán részle- a South Park egyik szereplõjével nem a véletlen mûve.) Most tezem, hogy ezt milyen utasításokkal lehet megtenni. tekintsük át lépésrõl lépésre, hogy melyik utasítás mire való. A $DEBUG változót a hibakeresés megkönnyítésére használom. Telepítés Futás közben különbözõ üzeneteket ír ki. Ha a hibaelhárítás A csomag telepítéséhez Debian GNU/Linux alatt egyszerûen be van kapcsolva, a debug() függvény az elsõ értékként meg- adjuk ki a következõ utasítást: adott üzenetet írja ki. Ezek után létrehozok egy IRC-objektumot, ami ekkor még nem apt-get install libnet-irc-perl mûködik, azaz nem kapcsolódik sehova. Ahhoz, hogy a bot elinduljon, a start() függvényt kell meghívni, ahogy a forrás Ezenkívül szükségünk lesz még a Perl 5.6.0-16-os vagy ennél fris- legvégén is látni lehet. Az IRC-objektum számára egy kapcso- sebb változatára is. Más terjesztés esetén is nagy valószínûséggel latot is létrehozok. Megadott értékei, gondolom, nem szorul- megtalálható a csomagban, vagy a  http://www.cpan.org nak bõvebb magyarázatra: nick, server stb. A Port mezõt weblapról, a  http://search.cpan.org/author/JMUHLICH/Net- nem kötelezõ megadni, alapbeállításként a 6667-et használja. IRC-0.74/IRC.pm címrõl tölthetõ le. További útmutatást a súgó- Ha a bot jelszóval védett IRC-kiszolgálóra vagy BNC-re fog oldalain, illetve a leírásában (Debian: /usr/share/doc/libnet-irc-perl) csatlakozni, még a Password mezõ is megadható. Természe- lehet találni, sõt a könnyebb megértés kedvéért még egy egy- tesen egy IRC-objektumhoz több kapcsolat is létrehozható, szerû példaprogramot is tanulmányozhatunk. de a leírás szerint egyetlen kapcsolattal mûködik teljesen Az IRC-kiszolgáló csomagból történõ telepítése nagyon megbízhatóan. Mire a program eléri az 1.0-s változatot, való- egyszerû feladat: színûleg ezt a gyermekbetegségét is kinövi. Nem fontos minden kapcsolatot a bot indítása elõtt megadni, apt-get install ircd futás közben (a start() függvény meghívása után) is dinami-

60 Linuxvilág Dobbantó

1. lista

#!/usr/bin/perl -w # Annak a neve, aki kilepett. use Net::IRC; my $nick = $event->{nick}; &debug( "$nick leaved " # Hibakereses ki/bekapcsolasahoz egy valtozo .$conn->{channel}. "." ); my $DEBUG = 1; $conn->privmsg($conn->{channel}, sub debug{ "Timmmy!!:("); my $msg = shift; } if ( $DEBUG ){ sub on_msg { print "DEBUG: " . $msg . "\n"; # Mindket argumentum kiszedese. } my ($conn, $event) = @_; } # Annak a neve, aki kuldte # az uzenetet. # IRC objektum letrehozasa my $nick = $event->{nick}; my $irc = new Net::IRC; # Az uzenet szovege.

my $text = $event->{args}[0]; © Kiskapu Kft. Minden jog fenntartva # Kapcsolat objektum letrehozasa. &debug( "<$nick> $text" ); my $conn = $irc->newconn( # Barmit irnak Timmy mindig ugyanazt Server => '10.0.1.254', # valaszolja vissza. Port => '6667', $conn->privmsg( $nick, Nick => 'Timmy', "Thiimmyyyy!" ); Ircname => 'Timmy', } # on_msg vege Username => 'Timmy' sub on_public{ ) or die "Nem lehet kapcsolodni az IRC # Mindket argumentum kiszedese. szerverhez.\n"; my ($conn, $event) = @_; $conn->{channel} = '#botk'; # Az uzenet kuldoje. sub on_connect { my $nick = $event->{nick}; # Elso argumentumot kiszedjuk. # Maga az uzenet. my $conn = shift; my $text = $event->{args}[0]; &debug( "Connected..." ); &debug( "<$nick> $text" ); # Belep a csatszobaba. # most megnezzuk, hogy neki lett $conn->join($conn->{channel}); # e kuldve az uzenet $conn->{connected} = 1; if( $text =~ /Timmy/i ){ } # Ha neki jott az uzenet sub on_disconnect { # akkor beszol. # Mindket argumentum kiszedese. $conn->privmsg my ($conn, $event) = @_; ($conn->{channel}, # Ha megszakadt a kapcsolat ujra "Thiimmmmyyy!"); # csatlakozik. # Ha azt irjak neki lepjel le, &debug( "Disconnected from " . # akkor lelep. $event->from() . " (" . if ($text =~ /lepj le/){ (($event->args())[0]) . "). $conn->quit("Timmy!!!"); Attempting to reconnect...\n"); # ezzel lep ki $conn->connect(); exit 0; } } sub on_join { } # neki szolas vege # Mindket argumentum kiszedese. } # sub on_public vege my ($conn, $event) = @_; # Annak a neve, aki belepett. # Esmenykezelok belalitasa. my $nick = $event->{nick}; $conn->add_handler('msg', \&on_msg); &debug( "$nick joined " $conn->add_handler('public', \&on_public); .$conn->{channel}. "." ); $conn->add_handler('join', \&on_join); # Ha belepett valaki, akkor Timmy $conn->add_handler('part', \&on_part); # elkialtja magat. $conn->add_handler('376', \&on_connect); $conn->privmsg($conn->{channel}, $conn->add_global_handler('disconnect', "THIMMY!!:))"); \&on_disconnect); } sub on_part { # IRCBot inditasa. # Mindket argumentum kiszedese. &debug( "Bot started..." ); my ($conn, $event) = @_; $irc->start();

www.linuxvilag.hu 2003. november 61 Dobbantó

Minden egyes eseménykezelõ két értékkel hívódik meg: az IRC-parancsok egyik a kapcsolatot ($conn) írja le, a másik pedig az eseményt ($event). A $conn->privmsg() függvénnyel lehet üzenetet küldeni a csatornára, illetve egy adott személynek. Elsõ érté- • Kapcsolódás a kiszolgálóhoz: /server [port] kében meg kell adni, hogy kinek (vagy melyik szobának) szól az üzenet, a második érték pedig az üzenet szövege maga. A kapu értéke elhagyható. Alapértelmezés szerint 6667. Az $event adatokat tartalmaz az eseményrõl: a csevegõ nevét Például: /server extra.irc.hu nick • /join #szobanev ( ), a gépének a nevét stb. A következõképpen lehet Belépés egy szobába: például egy csevegõnek opot adni: Ha az adott szoba nem létezik, akkor létrejön, és mi leszünk az opok. $conn->mode( $conn->channel, "+o", • Kilépés a szobából: /part $event->nick ); • Kilépés a kiszolgálóról: /quit [uzenet] Ha nem hagyjuk el az üzenetet, kilépéskor kiírja. Ha elhagyjuk, Az 1. listában látható függvényeket nem részletezem tovább, akkor nem ír semmit, illetve néhány IRC-ügyfél (bitchx) véletlen ugyanis a megjegyzések alapján könnyen el lehet igazodni üzeneteket ír be helyettünk. bennük. • Üzenet küldése egy csevegõnek: /msg • /topic © Kiskapu Kft. Minden jog fenntartva Téma beállítása: További lehetõségek A beállításhoz opra van szükség. Innentõl kezdve a határ a csillagos ég: botunk már mindenre • Op adása: /op képes lehet, amit Perl nyelven meg lehet írni. Megkérdezhetjük • Kirúgás egy szobából: /kick az idõt, a tévémûsort ( http://www.port.hu szûrése) és a napi • Kitiltás egy szobából: /ban horoszkópot, sõt botunk akár az összes csatornán elhangzott Itt a név egészen összetett lehet: nick!ident@hostname hivatkozást is megjegyezhetné. Ennek az utóbbinak a megva- Nem kötelezõ minden részét megadni. Ha például a „valaki” lósítását mutatja be a 2. lista, amelynek teljes forrása a CD-mel- nevû egyént akarjuk kitiltani: valaki!*@* lékleten található meg. A hivatkozásokat MySQL-adatbázis- apt-get install Ezeket a parancsokat természetesen nem kell minden esetben ban tárolom, DBI segítségével (Debian: libdbi-perl ismernünk. A legtöbb ügyfél (mIRC, XChat) – elsõsorban ). Az egyszerûség kedvéért az adatbázis, a felhasználó neve és a jelszó is timmy lett. A hivatkozások táblát a grafikusak – esetén gombokkal is elérhetõek. a következõképpen lehet létrehozni:

create table linkek( URL test, datum integer); kusan bõvíthetõ. Errõl bõvebb útmutatóra a súgóoldalakon lelhetünk. A $conn channel mezõben lehet megadni azt A MySQL használatának részletes bemutatása meghaladná a csatornát, amire a bot be fog lépni. e cikk kereteit. Aki még nem foglalkozott vele, az egyszerûen Most az eseménykezelõ függvények következnének, de hogy egy fájlban is tárolhatja a hivatkozásokat. Ha sikerült beállítani érthetõbb legyen, mit miért tettünk, ugorjunk a forrás végére. az adatbázist, akkor a botnak be lehet írni a csevegõszobába: Az eseményeket háromféleképpen kezelhetjük: az elsõ esetben, http://www.linuxvilag.hu, amit szépen tárol is. A lekérdezés a ha nem határoztunk meg saját eseménykezelõt, az alapértel- következõképpen néz ki: ??URL [minta] [sorszám], itt mindkét mezett hívódik meg, ami pusztán a legminimálisabb feladato- érték elmaradhat, és mindig csak egy hivatkozást listáz ki. kat látja el. A második esetben meghatározzuk, hogy egy A sorszámozás pedig nullától indul és dátum szerint csökkenõ esemény bekövetkeztekor melyik függvény hajtódjon végre sorrendben halad. (add_global_handler()). A harmadik esetben kapcsolaton- Ha eddig eljutottunk, és a hivatkozásokat már ragyogóan meg- ként határozzuk meg, hogy az adott eseményre melyik függ- jegyzi a bot, akkor egy kis átalakítással az is elérhetõ, hogy a vény fusson le (add_handler()). Mivel csak egyetlen kapcso- csevegõk aranyköpéseit is tároljuk és megõrizzük az utókornak. latom van, bármelyik függvényt felhasználhattam volna a Aki nem szereti vagy nem ismeri a Perlt, annak a következõ példában, de én mindkettõt alkalmaztam. Az add_handler() írásomat ajánlom, ami a mostanihoz hasonlóan saját IRC bot függvénynek meg kell adni az esemény azonosítóját és az megírásáról fog szólni, de a Java nyelv használatával. eseménykezelõ függvényt. Itt még nincs vége a variálhatóság- nak, mivel utolsó értékeként megadható, hogy az alapértel- Kolcza Péter ([email protected]) mezett eseménykezelõt felülírja (0), illetve a sajátunk elõtt (1) Imádja a South Parkot. A Miskolci Egyetem vagy után (2) futtassa le. Ha elhagyjuk ezt az értéket, akkor informatika szakos hallgatója. Elvakult GNU/Linux- csak a saját eseménykezelõ fut majd le. Hasonlóan kell meg- rajongó. Ha egyetemi elfoglaltságai engedik, add_global_handler() hívni az függvényt is. Az esemé- rendszerépítéssel foglalkozik. A cikkel kapcsolatban nyek nevei a Net::IRC::Event modul forrásában találhatók minden észrevételt szívesen fogad.

meg. Ez több mint 160-féle eseményt különböztet meg. Én az  1. listán a következõket használtam: • msg: privát üzenetet kap a bot. KAPCSOLÓDÓ CÍMEK • public: a csevegõszobába érkezik egy üzenet. • join: valaki belép a csevegõszobába, még akkor is, ha  maga a bot lép be. http://www.irc.hu  • part: a csevegõszoba elhagyása. http://www.cpan.org  • 376: a MOTD végét jelzõ üzenet – ez egyértelmûen http://www.mysql.com azt mutatja, hogy a bot sikeresen csatlakozott.

62 Linuxvilág Kovácsmûhely

Alkalmazzunk XML-t! (3. rész)

Ebben a részben szót ejtünk a program hiányosságairól, azután a Perl SQL-csatlako- zás használatáról, végül pedig készülõ weblapjaink képanyagának az elkészítésérõl.

lsõként – nem hagyhatom a végére, nehogy a kedvezõt- ben itt is igyekeztem minél szabadabbá tenni a használatot. Ezt E len benyomás maradjon meg – a hiányosságokról kell hivatottak segíteni a különbözõ vermek. Ezek révén lehetséges szólnom. Programunk felépítésének az a legfõbb hibája, több SQL-kérdés és eredménysor keverése, a név megadásával hogyha egy tároló típusú elemet (amilyen például az elõzõ ré- a megfelelõ kiválasztása, illetve egyszerûbb esetben az alapér- szekben említett lap1) egy másik elem meghatározásában sze- telmezett alkalmazása (a verem tetején lévõ). Lássunk egy retnénk használni, az csak akkor mûködik az elképzeléseink egyszerû példát! Ez a fent megadott adatbázisokból készít egy szerint, azaz a végsõ hívásból véve a kimenet tartalmát, ha mi táblát olyan módon, hogy cikkcsoportonként külön kiírja az magunk (feltehetõen hosszas gondolkodás után) megadjuk, hogy árukat. Ez idõ tájt láthatjuk használat közben a korábbi milyen szintrõl (veremszint) vegye a kimeneti adatot. A szintet a részekben említett _while tagot is. level kapcsolóval adhatjuk meg. Ez a hiányosság természetesen nagyon zavaró, de mivel csupán az elemek meghatározása során bukkan fel és a végsõ használatnál nem, úgy gondoltam, hogy

<_sqldb name='susandb' dbname='susan'

A másik nehézség abból adódik, hogy a program Perl-parancs- © Kiskapu Kft. Minden jog fenntartva fájlként mûködik, ennek megfelelõen (különösen az elsõ indí- user='avernus'> táskor) elég lassú. Ezt hivatott kiküszöbölni a -x és -o kap- <_sqlquery name='csoportok' query='select * csoló, amelyek korlátozzák az elkészítendõ fájlok számát. from csoport'/> Ugyancsak gond, hogy bármilyen jó is az XML MakeFile <_sqlrow name='csoport' qname='csoportok'/> a honlap oldalfelépítésének a leírására, nem biztosítja azt a <_while test='sqltest("is_next","csoport")'> rugalmasságot a célfájlok készítésére, amit az „igazi” Makefile

és a make program használata (például a módosítások követése).  <_sqlquery name='aruk' query='@sprintf("select Az SQL-illesztés * from arlista where Programunkhoz, tételezzük fel, létezik egy PostgreSQL adatbá- csoport='%s'",sqlfn("kod","csoportok", zisunk, valamint telepítve vannak a megfelelõ programkönyv- "csoport"))'/> tárak (Pg Perl-modul). Ezután készítsük el a következõ két <_sqlrow name='aru' qname='aruk'/> táblát, az alábbiak szerint: <_while test='sqltest("is_next","aru")'> nev text ); csoport text, <_sqlrow name='aru' qname='aruk'/> nev text, ar float ); <_sqlrow name='csoport' qname='csoportok'/> Vélhetõleg egy egyszerû, cikkcsoportokra osztott árujegyzék- nek megfelelõ ez a két tábla. Az arlista táblában a csoport
Nos, ennyi talán legyen elég az önbecsmérlésbõl. Ki-ki keres- <_sqlfn qname='csoportok' rname='csoport' heti a további hibákat, remélem, használat közben, nem pedig f='nev'/> ex cathedra…
create table csoport ( <_sqlfn qname='aruk' rname='aru' f='nev'/> kod text, <_sqlfn qname='aruk' rname='aru' f='ar'/> create table arlista (
mezõ idegen kulcs, a csoport tábla kod mezõjével áll kapcsolat- * ban, ez viszont saját kulcs. Mindenesetre használhatjuk az általam mellékelt próbaadatokat. Figyelem, az árak elavultak! Egy adatbázis-kapcsolatot hozunk létre az _sqldb taggal. Az SQL sajátosságainak megfelelõen az illesztõfelület az alábbi A name érték a késõbbi hivatkozásra szolgál, így tetszõleges módon réteges felépítésû: egyedi szó lehet. A másik két érték (dbname és user) a • adatbázis; PostgreSQL-adatbázis neve és az engedéllyel bíró felhasználó- • kérdés/eredmény (query/result); név (nincs külön azonosítás). Mint látható, az _sqldb tartal- • eredménysor (row); mazza a többi SQL-es elemet, így nem kell megadni bennük • mezõérték (field); az adatbázisnevet (a verem felsõ eleme). Ezután az _sqlquery taggal felteszünk egy kérdést az A korábban már megfigyelt rugalmasság megvalósítása érdeké- adatbázisnak ("select * from csoport"). Az _sqlrow

www.linuxvilag.hu 2003. november 63 Kovácsmûhely

határozza meg, hogy mennyire hû az eredetihez. Természete- 1. sen a jobb minõség nagyobb fájlméretet eredményez. A 75 százalék megfelelõ szokott lenni.

...

Ez az elem a vágástároló eleme. Itt adjuk meg a vágandó fájlt, valamint az esetleges elérési útját. Ezután az alábbi crop elem segítségével tudjuk darabolni. Ez a felépítés azért jó, mert sokszor egy nagyobb képet több, esetleg sok részre kell vágni a grafikus felépítésû oldalakhoz.

taggal lehívjuk az elsõ eredménysort. Ezután az _while tag segítségével végigmegyünk az eredménytáblán. Ebbe a Ez a tényleges vágóelem. A fenti cropper elemben lehet

© Kiskapu Kft. Minden jog fenntartva while ciklusba ágyazva készítünk egy másik kérdést, amely használni. Az ott megadott fájlból vágja ki az xy pozíció és a pillanatnyi csoport tagjait adja eredményül. Ehhez sajnos a szélesség/magasság számnégyessel megadott részletet, és használnunk kell egy beépített függvényt, amely visszaadja a megadott célfájlba rakja. A célfájl kiterjesztése adja meg egy adott kérdés–eredménysor–mezõ hármas értékét. Mivel a kimeneti formátumot. ez a függvény nem ismeri az XML-elemzés helyzetét, így az SQL-vermekrõl sincs tudomása, sajnos mindhárom értéket ... Az _sqlfn tagokkal a kimeneten elhelyezzük a megfelelõ mezõk értékét (meg van adva a kérdés, a sor és a mezõnév is, Ez a beillesztés tárolóeleme. A vágással ellentétben itt már meg mivel jelenleg nem tartalmazzák ezeket az elemeket). Ha sike- van adva a célfájl, így egy (változatlanul maradó) kiinduló rül lefordítanunk ezt az állományt, akkor az 1. képen láthatóhoz fájlba beszúrjuk az alábbi place elemmel megadott részle- hasonló táblázatot kapunk eredményül. teket, majd a target értékben megadott néven mentjük Mint látható, a csoportokat külön sorban emeli ki, a mezõk (a formátumot itt is a kiterjesztés adja meg). megfelelõen vannak igazítva. Ennek a megoldásnak az igazi szépsége abban rejlik, hogyha az adatbázis módosítása után – például ismertetõ CD írásakor – a pillanatnyi listát készíteni, és nyomban fel is lehet írni, mindezt önmûködõen. Íme, a beillesztõelem. Elég bonyolult, mert a beszúrás elõtt mûveleteket is tud végezni a bemeneti fájlokon. A rot érték A képátalakító illesztése segítségével forgathatunk, fokban lehet megadni. Megjegyzem, Létezik egy nagyszerû képátalakító programkönyvtár, még- hogy az ImageMagick bizonyos változatainál a forgatás eltoló- pedig az ImageMagick. Legfõbb elõnye az, hogy mindenféle dással is jár, ha nem 90 vagy 180 fokról van szó. Ezt ki kell programnyelvhez megoldott az illesztése, így az átalakítások próbálni. A scale értékkel át lehet méretezni a beillesztendõ remekül gépesíthetõk. Én magam is használtam a C, C++ és képet. A megadandó indexelõ nyalábolás (hash) formája: Perl nyelvi felületét. Ráadásul az illesztõfelületek felépítése hasonló (az objektumközpontú változatok hash értéklistát tud- 'geometry => "800x600"' nak fogadni). Természetesen ne várjunk olyan mérvû hatáso- kat, mint amilyeneket a Gimppel érhetnénk el, viszont egysze- Természetesen a kívánt méreteket szükséges megadni. rûbb forgatásra, átméretezésre, vágásra, beillesztésre, kerete- A raise a kiemelést, illetve a besüllyesztést végzi, például zésre, képformátumváltásra kitûnõen használható, viszonylag gyors és kényelmes. raise='geometry => "5x5", raise => "1"' E rövid bevezetõ után vágjunk azonnal a közepébe! A legfon- tosabb, gyakran használt mûveleteket a szokott módon: külsõ Az 1 azt jelenti, hogy kiemelésrõl van szó, a 0 pedig bemélyí- XML-modulok segítségével vittem be a programba. Lássuk a tést jelent. modulokat: ... target='kimenetifájl_neve' format='formátum' szöveg ... quality='szám'/> Ezzel az elemmel lehet a képre szöveget felírni. Ha akad Mint nyilvánvaló, ez egy nem tároló típusú elem, azaz önma- TrueType betûkészletünk, azt megadva használhatjuk. A nyitó- gában zárt. A be- és kimenet egy-egy képfájl, a formátum a és zárótag között kell lennie a szövegnek. Ha ez különleges jellegzetes kiterjesztéssel kerül megadásra, például jpg vagy karaktereket is tartalmaz, célszerû a CDATA határolót használni, png. A quality tulajdonság fõleg jpg-nél szükséges, a minõ- hogy ne zavarja meg az XML-elemzõt. Sajnos jelenlegi, egy- séget adja meg, mivel a jpg veszteséges tömörítés, és a minõség szerû formájában semmiféle tördelést nem végez a szövegen,

64 Linuxvilág Kovácsmûhely

scale='geometry => "192x144"' 2. raise='geometry => "5x5", raise => "1"'/>

Ha ezt az xtend fájlnév paranccsal lefordítjuk, akkor a 2. képet kapjuk eredményül (ebben az esetben egy HTML-fájlba helyezve). Azt hiszem, az alapelv érthetõvé vált. Maga az xml formátum csak adathordozóként szerepelt itt. De – és ezt fontos megér- teni – másutt is csak errõl van szó! Az XML nem csodaszer,

azaz soronként kell bevinnünk, ügyelve, hogy ne lógjon le a önmagában nem több, mint egy jól meghatározott leíró formá- © Kiskapu Kft. Minden jog fenntartva képrõl (egy write elem/sor). Erre is lássunk egy egyszerû tum. De éppen azért, mert jól meghatározott és bõvíthetõ, és példát! Tegyük fel, hogy van három képünk, amelyeket lépcsõ- mivel kitûnõ elemzõ könyvtárak állnak hozzá rendelkezésre, zetesen szeretnénk elhelyezni. Készítsünk a cél méretének nagyon jól használható különféle programjaink adattárolására megfelelõ üres képet (például a Gimppel), legyen, mondjuk és bemeneti állományának. 400×300 pont. A háttért állítsuk átlátszóra. Nevezzük el További ötleteket szívesen fogadok a [email protected] címen. ures.png-nek! Havránek Ferenc Ezután használhatjuk a következõ XML-fájlt a kívánt cél ([email protected]) elérésére: Automatikamérnökként dolgozik. Kedvtelései közé tartozik mindenféle kétkerekû jármûvön (kerékpár és <_dummy> motor) való közlekedés. Ezenkívül szívesen tölti idejét programozással, nemcsak PC-s, hanem egyéb

www.linuxvilag.hu 2003. november 65 Kovácsmûhely

Az XML és a Perl (3. rész)

Húzd szorosabbra!

legutóbbi részben olvas.pl néven közösen elkészítet- A tünk egy nem túl összetett programot egy igen egy- szerû XML jelölõnyelvvel írt dokumentum nyomtat- A függõleges vonal a logikai „vagy” jele. A #PCDATA jelentése ható szöveggé alakításához. Nagy vonalakban így írtuk le a a „csak karakterek, semmi egyéb”, és valójában a „parsed nyelvet: a dokumentum egy vagy több fejezetbõl áll, amelyek character data” rövidítése, amelyben a „parsed” abban az érte- egymást követõ bekezdéseket és beágyazott fejezeteket tartal- lemben áll, hogy már átfutott egy értelmezõn, és nem tartalmaz maznak. Minden fejezetnek van egy címe, és természetesen elemeket vagy hasonló XML-eszközt. Emiatt a <, & és a hasonló minden bekezdés karakterekbõl épül fel. karaktereket a HTML-bõl esetleg már megismert kóddal kell

© Kiskapu Kft. Minden jog fenntartva Bizonyára sokaknak feltûnt, hogy a program nem tiltakozik, helyettesíteni, úgymint < és &. ha a bemenet jól formázott XML ugyan, de nem felel meg a A és a tartalommodellje az, fenti leírásnak. Ha például egy olyan dokumentumot készítesz, amit elemtartalomnak hívnak. Az ilyen tartalommal bíró amelyik a elemen kívül is tartalmaz szöveget, elemek szöveget nem tartalmazhatnak, csak más elemeket. az olvas.pl szó nélkül figyelmen kívül hagyná a karaktereket. A tartalommodellje viszont úgynevezett vegyes Eddig azért nem beszéltem sokat az „alkalmazásszintû ellenõr- tartalom – ez már szöveget is tartalmaz, és lehetséges volna zésrõl”, mert nem akartam, hogy a túl sok részlet között elvesz- olyan modellt készíteni, amiben elem és szöveg egyaránt szen a lényeg. Az alkalmazásszintû ellenõrzés azonban az megtalálható. XML-feldolgozásnak nagyon fontos része, így itt az ideje, A szóköz, tabulátor, sortörés stb. kivétel képez az alól a szabály hogy bõvebben is bemutassam. alól, hogy elemtartalomban nem szerepelhet szöveg. Másképp nem lehetne szépen megjeleníteni egy XML-dokumentumot, Szabályos nyelvtan sok esetben még kézzel elkészíteni sem. Egy XML-értelmezõ Említettem, hogy el lehet készíteni a jelölõnyelv nyelvtanát, az nem hagyhatja figyelmen kívül az ilyen karaktereket, át kell úgynevezett DTD-t (Document Type Definition), amely a meg- õket adnia az alkalmazásnak, mintha vegyes tartalomban engedett elemeket egy XML leírónyelvben írja le. Egy ellenõrzõ fordulnának elõ. Ugyanakkor egy ellenõrzõ értelmezõ köteles értelmezõ ez alapján vizsgálhatja meg a dokumentumot. Bár mi szólni az alkalmazásnak, ha az említett karakterek az elemtar- nem használunk ellenõrzõ értelmezõt, egy DTD megírása így is talomban jelennek meg; egy szövegformázó program valószí- hasznos gyakorlat lehet a nyelv szerkezetének leírásához. nûleg figyelmen kívül hagyja õket. Egy XML DTD-jelölõmeghatározásokból épül fel, amelyek megengedett és **> között állnak. A jelölõmeghatározásoknak számos tulajdonságait (attributums): típusa létezik az XML-ben (és még több SGML-ben), de mi egyelõre csak az elemtípus-meghatározásokkal és a Egy elemtípus-meghatározás adja az elem nevét és a tartalom- modellt, ez az elem lehetséges tartalmáról ad leírást. A tarta- Egy tulajdonságlista-meghatározás több tulajdonságot is lommodell valamennyire hasonlít a Perl szabályos kifejezései- felsorolhat, ebben az esetben azonban csak egyet tüntettünk hez. Készítsünk egy elemtípus-meghatározást fel, a cim-et. A CDATA jelentése „character data”, ami egyszerû elemünkhöz: szöveget takar (ez viszont nem tartalmazhat közvetlenül például < nagyobb jelet). A #IMPLIED azt jelenti, hogy nem kötelezõ a tulajdonság megadása, és elhagyása esetén a fel- dolgozó alkalmazás alapértelmezett értékkel látja el. Ennek Ez emberi nyelvre lefordítva mindössze annyit állít a ellenére a tulajdonság nem állhat érték nélkül (lásd a Linux- elemrõl, hogy egy vagy több világ 32., októberi számának 70. oldalán). Ha ezen a helyen elemet tartalmazhat. A + pontosan ugyanazt jelenti, amit a Perl #REQUIRED állna, a tulajdonság elhagyása hibát okozna. a szabályos kifejezésekben tesz, így a * és a ? is. Ha ezt írnánk: Továbbá a #IMPLIED helyén egyszerû szöveg is szerepel- hetne, amely hiányzó tulajdonság esetén alapértelmezett értékként viselkedne. Az XML DTD sokkal több, mint amennyit itt össze tudtam azzal azt mondanánk, hogy a nulla vagy több foglalni. Nagyobb részletességgel szolgál az XML-ajánlás, és -bõl állhat. A DTD elkészítésekor nagyon gondo- remek leírásokat találsz a weben, ha beizzítod a Google-t. san járjunk el, hogy a késõbbiek folyamán ne kelljen felesleges ellenõrzõkódot írni a programunkba. Kötelezõ nyelvtan Most határozzuk meg a és Ha az olvas.pl elõzõ változatát kötelezõ nyelvtannal akarjuk elemeinket: felvértezni, ellenõriznie kell az elemek és a karakterek megfelelõ helyen történõ elõfordulását. Jogos a kérdés, hogy miként tehetem ezt meg egy folyamalapú értelmezõvel?

66 Linuxvilág Kovácsmûhely

Igazság szerint az XML::Parser sokkal több, mint aminek az xpcarp()-ra, de ez a figyelmeztetés mellett megszakítja a az elõzõ részekben elmondtam, és tartalmaz némi korláto- program futását. A within_element() nem figyeli a beágya- zott lehetõséget az ellenõrzésre. Pontosabban fogalmazva zás mértékét. Akkor ad hamis értéket, ha a beágyazás egyik a segítségével kitalálhatod, hogy a jelenlegi elem mely ele- szintjén sem talált elemet. mekbe lett beágyazva. Mint azt tudod, az elsõ érték, amit az értelmezõ egy esemény kiváltásakor a meghívásra kerülõ if ($eltype eq "fejezet") { függvénynek átad, egy hivatkozás az értelmezõ objektumra. if (not Ennek az objektumnak a típusa valójában az ($expat->in_element("dokumentum") XML::Parser::Expat, és nem az XML::Parser maga. or $expat->in_element("fejezet"))) { Az XML::Parser::Expat POD-jának gondos átolvasásával $expat->xpcarp(" itt az ellenõrzés számos módszerét ismerheted meg. nem fordulhat elo"); Az in_element() és a within_element() elemfügg- } vények különösen hasznosak a feladat megoldására. Álljon itt az olvas1.pl, amely az olvas.pl hibaellenõrzéssel Az in_element() azt nézi meg, hogy a jelenlegi elem melyik kibõvített változata: elembe van közvetlenül beágyazva. A fenti ellenõrzéssel megbizonyosodhatunk arról, hogy a csak a #!/usr/bin/perl -w -on vagy egy másik -en belül

use strict; fordulhat elõ. © Kiskapu Kft. Minden jog fenntartva use XML::Parser; ++$sectnums[++$indlevel]; use Text::Wrap; $sectnums[$indlevel+1] = 0; use Getopt::Std; print ' 'x(4*$indlevel),join ('.',@sectnums[0..$indlevel]), my ($indlevel,@sectnums,$parabuf,%opts); " ",$_{cim},"\n"; print "\n" unless $opts{c}; getopts('c',\%opts); } elsif ($eltype eq "bekezdes") { die "Usage: ".$0." [-c] file\n" $expat->xpcarp(" unless @ARGV == 1; itt nem fordulhat elo") unless my $p = new XML::Parser $expat->in_element("fejezet"); (Style => 'Stream',ErrorContext=>2); } else { die "Ismeretlen elem: ",$eltype,"\n"; Az ErrorContext azt mondja meg az értelmezõnek, hogy } hiba esetén hány sort mutasson meg a hibát tartalmazó sor } elõtt és után: sub Text { $p -> parsefile ($ARGV[0]); my $expat=shift; tr/\n/ /; sub StartTag { s/^\s+//; my ($expat,$eltype) = @_; s/\s+$//; if ($eltype eq "dokumentum") { return if $_ eq ""; $expat->xpcarp(" itt nem $expat->xpcarp("szoveg itt nem fordulhat elo") fordulhat elo") if $expat->depth(); unless $expat->in_element("bekezdes");

Az xpcarp() elemfüggvény segítségével egy figyelmeztetõ Figyeld meg, hogy csak azután ellenõrzünk, miután megbi- üzenetet jeleníthetünk meg a hiba környezetével együtt. zonyosodtunk róla, hogy a szöveg nem csak az angol szak- A depth() elemfüggvény adja meg, hogy a jelenlegi elem zsargonban whitespace-nek nevezett karaktereket tartalmaz. hány elembe van beágyazva. A beágyazás számlálója a Ha nem így tennénk, gyakorlatilag minden elem után figyel- StartTag() meghívása után növekszik, így ez az ellenõr- meztetést kapnánk. zés minden -ot visszadob, a gyökérelemet leszámítva. $parabuf = $_; } $indlevel = -1; $sectnums[0] = 0; sub EndTag { $parabuf = ""; my ($expat,$eltype) = @_; return; if ($eltype eq "dokumentum") { } } elsif ($eltype eq "fejezet") { $expat->xpcroak(" kell, --$indlevel; hogy a gyoker elem legyen") unless } elsif ($eltype eq "bekezdes") { $expat->within_element("dokumentum"); my $ind = ' ' x (4*$indlevel); print wrap($ind,$ind,$parabuf), Ha az elemünk nincs egy -on belül, feladjuk "\n\n" unless $opts{c}; az értelmezést (ha nem tennénk, minden ezt követõ elem } esetén egy figyelmeztetést adnánk ki). Az xpcroak() hasonlít }

www.linuxvilag.hu 2003. november 67 Kovácsmûhely

A zárócímkéknél semmilyen ellenõrzésre nincs szükség, hiszen (a gyökérelemünk neve), a második pedig egy hivatkozás magának az értelmezõnek kell szólnia, ha ezek nem a megfelelõ egy tömbre a tartalmával. helyen állnak. Egy jellegzetes folyamalapú értelmezõvel dol- gozó alkalmazásnál igen gyakori, hogy az ellenõrzés és a vál- $indlevel = -1; tozók használatra való felkészítése a nyitó címkék feldolgozá- $sectnums[0] = 0; sánál, míg az eredmény visszaadása a zárócímkéknél történik. for my $pass (0..1) { my $p = $tree->[1]; Faalapú értelmezés for (my $i = 1; $i < @$p; $i += 2) { Az elõzõ hónapban több, kizárólag faalapú feldolgozásra ter- if (not $p->[$i]) { vezett modult is megemlítettem. Valójában az XML::Parser warn "szoveg nem allhat itt" is nyújt két faalapú stílust. A „Tree” stílus egy nagyon egyszerû unless $pass or $p->[$i+1]=~/^\s*$/; faszerkezetet hoz létre, melynek csomópontjai Perl-tömbökre next; mutató hivatkozások. Két típusú levél létezik: } • A szövegcsomópont: a tömb elsõ tagja üres, míg a második warn "<".$p->[$i]."> nem allhat itt" maga a szöveg. unless $pass or $p->[$i] • Az elemcsomópont: a tömb elsõ tagja az elem neve, a eq "fejezet"; második pedig hivatkozás egy tömbre, amely az elem process_sect($p->[$i+1],$pass);

© Kiskapu Kft. Minden jog fenntartva tartalmát foglalja magában. Az utóbbi tömb elsõ tagja egy } hivatkozás egy asszociatív tömbre (hash), amely az elem } tulajdonságait sorolja fel az értékeikkel együtt. A további tagok szöveg- vagy elemcsomópontok. Átugorjuk a tulajdonságait tartalmazó asszociatív tömböt (hiszen elvileg nincsenek is neki tulaj- Amikor a Tree stílust használod, az XML::Parser parse() donságai, az esetleges hamis tulajdonságokat pedig figyel- és a parsefile() elemfüggvényei egy, a gyökérelem men kívül hagyjuk). A megmaradt tagokon párosával csomópontjára való hivatkozást adnak vissza. megyünk végig. Ha a dokumentum nyelvtanilag helyes volt, Habár a Tree stílus leírása az XML::Parser utóbbi változataiban vagy üres szövegcsomópontokból, vagy -ekbõl határozottan tisztább és áttekinthetõbb a réginél, ennek ellenére a tevõdik össze. Az utóbbiak feldolgozását a process_sect() használt adatszerkezeteket megérteni nem a legegyszerûbb dolog függvényre bízzuk, mivel egy -ben elõfordulhat a világon. Ne legyen rossz érzésed, ha elsõ nekifutásra nem értet- újabb , s ezt a legegyszerûbben rekurzívan ted meg teljesen a fenti magyarázatot. Ha megnézted a követ- oldhatjuk meg. kezõ példaprogramot, újra elolvastad a fentieket, ismét átnézted a kódot, elõbb-utóbb rájössz, mit is jelent a „heuréka!” kifejezés. sub process_sect { Az egyik ok, amiért érdemes lehet faalapú értelmezõt használni my ($p,$pass) = @_; a folyamalapúval szemben, az az, hogy az értelmezõ egyszeri my ($href,$ind); meghívásával ugyanazt a tartalmat többször akarod elemezni. if ($pass == 0) { Változtassuk meg az olvas.pl feladatát: ahelyett, hogy vagy ++$sectnums[++$indlevel]; a tartalomjegyzéket írja ki, vagy a tartalmat, inkább írja ki $sectnums[$indlevel+1] = 0; mindkettõt: elõbb a tartalomjegyzéket, s ezt kövesse a tartalom. $href = join('.',@sectnums[0..$indlevel]); Ezt megtehetnénk egy folyamalapú értelmezõvel is, ha két $ind = $indlevel; átmeneti tárban (buffer), külön tárolnánk a kimenetet, de az $p->[0]{_href} = $href; nem lenne olyan szórakoztató. Inkább felépítünk egy fát és $p->[0]{_ind} = $ind; kétszer bejárjuk. Az elsõ bejárás alkalmával kiírjuk a tartalom- print ' ' x (4*$ind),$href, jegyzéket és a második bejárás során a teljes tartalmat. Lássuk " ".$p->[0]{cim}."\n"; (ez ugyancsak megtalálható az 53. CD-melléklet Magazin/XML_Perl/olvas2.pl könyvtárában)! Elsõ körben kiszámoljuk a fejezetszámot és a bekezdés nagy- ságát, és a elem külön tulajdonságaként tároljuk. #!/usr/bin/perl -w A tulajdonságok a tömb elsõ tagja által mutatott asszociatív use strict; tömbben tárolódnak, ezzel a módszerrel dinamikusan bõvítet- tük az értelmezõ által visszaadott fát, ugyanis csökkenti a létre- use XML::Parser; hozandó és karbantartandó adatszerkezetek számát. Ezután use Text::Wrap; a tartalomjegyzékhez kiírjuk a fejezet számát és a címét.

my ($indlevel,@sectnums); } else { $href = $p->[0]{_href}; die "Usage: ".$0." file\n" unless @ARGV == 1; $ind = $p->[0]{_ind}; my $parser = new XML::Parser print ' ' x (4*$ind),$href, (Style => 'Tree',ErrorContext=>2); " ".$p->[0]{cim}."\n\n"; my $tree = $parser->parsefile($ARGV[0]); } die " nem a gyokerelem" unless $tree->[0] eq "dokumentum"; A második körben elõkaparjuk a fejezet számára és a bekezdés nagyságára vonatkozólag az elsõ körben elrejtett adatokat. Ha minden rendben van, a $tree egy hivatkozás egy Ezt használjuk fel a kiíratáshoz a teljes dokumentum kételemû tömbre, amelynek az elsõ tagja „dokumentum” megjelenítésekor is.

68 Linuxvilág Kovácsmûhely

Bricolage-riasztások Kövessük nyomon honlapunk eseményeit kulcseseményekhez rendelt riasztásokkal.

múlt hónapban elkezdtük nézegetni David Wheeler A Bricolage rendelkezik ilyen Bricolage nevû, hatékony, mod_perl, HTML::Mason lehetõségekkel, mégpedig igazi és PostgreSQL alapokra épülõ, nyílt forrású tartalom- nyílt forrású stílusban, lenyûgözõen kezelõA rendszerét (CMS). A tartalomkezelõ program viszonylag testreszabható módon. A riasztások új típusú webalkalmazás, célja a méretesebb honlaprendszerek létrehozásához és módosításához válasszuk a képernyõ jobb kezelési nehézségeinek a kiküszöbölése. A Bricolage megjele- alsó sarkában található rendszermenü alól a Alert types menüt nését széles körben új nyílt forrású sikertörténetként ünnepel- (riasztástípusok). Ez a menü a rendszergazda menüi közé

© Kiskapu Kft. Minden jog fenntartva ték, amely fényesen bizonyítja, hogy egy üzleti program nem tartozik, tehát csak a rendszergazdai jogosultságokkal rendel- feltétlenül rugalmasabb vagy hatékonyabb ingyenes társainál. kezõ felhasználóknak jelenik meg. A kapott képernyõn – mint Nem szabad elfelejtenünk, hogy bár a CMS olyan webalapú azt már a Bricolage karbantartó menüinél megszokhattuk – alkalmazás, amely dinamikusan létrehozott kiszolgálóoldali lehetõvé teszi, hogy rákeressünk egy riasztás nevére, vagy alapoktól függ, a CMS kimenete általában statikus oldal lesz. kikeressük az összes, az adott betûvel kezdõdõ riasztást. Ezért aztán annak ellenére, hogy a Bricolage viszonylag nagy web-, illetve adatbázisprogram, amelynek testreszabásához Riasztások létrehozása nem árt némi kiszolgálóoldali programozási ismeret, mégis Új riasztástípust a create new alert type hivatkozásra kattintva olyan alkalmazás, amelyet nap mint nap nem programozók készíthetünk. Itt egy rövid HTML-ûrlaphoz jutunk, ahol meg használnak. A Salon.com-tól kezdve a MacWorld On-line-ig kell adnunk azt a Bricolage-objektumot, amelyikre a riasztást rengeteg szervezet használja már most is a Bricolage-t. kérjük. Tehát például akkor szeretnénk riasztást kapni, ha Ugyanakkor további weboldalak ezrei, a Cnettõl a valami, a történeteket (story) érintõ dolog történik, ekkor LinuxJournal.com-ig, tartalomkezelõ megoldásokat használnak kérjük a Story objektum riasztását. Ugyanígy, ha új felhasználó a Vignette rendszerétõl (összetett, üzleti és drága) a PHPNuke- felvételekor szeretnénk riasztást, kérjük a Users objektumhoz ig (egyszerû, nyílt forrású és ingyenes). tartozó riasztását. Tömören, szinte minden Bricolage-objek- Ebben a hónapban az egyik kedvencemnek, a Bricolage-nak tumhoz rendelhetünk riasztásokat. a riasztásképességét nézzük meg. Ez lehetõvé teszi, hogy a fel- Példaképpen készítsünk egy olyan riasztást, amelyik akkor használó különbözõ eseményeket kövessen nyomon a Brico- figyelmeztet, amikor valamely, a címében a „Linux” szöveget lage rendszerén. A riasztások nemcsak tájékoztatnak bennün- tartalmazó cikk az egyik asztalról a másikra kerül át. Ne feled- ket az események bekövetkeztérõl, hanem egyúttal képet kap- jük, a Bricolage segítségével szinte minden objektum megfi- hatunk belõlük a teljes rendszer mûködésérõl is – megtekint- gyelhetõ. A következõ példa kétségtelenül adja magát. hetjük az objektumok listáját, feladatokat rendelhetünk ezek- Válasszuk a create new alert type hivatkozást az Admin menü- hez az objektumokhoz, valamint láthatjuk, hogy pontosan bõl, és készítsünk új riasztást a Story objektumhoz. Itt a Brico- mikor hívódnak meg az egyes riasztások. lage által megfigyelhetõ eseménylistához jutunk, a kategória- hozzáadástól kezdve a történetünk kiadásán át a történet Riasztások valamely részének törléséig. Példánkban mi a Story moved A Bricolage, csakúgy mint a legtöbb CMS-program, a cikkeket to desk (a történet mozgatása asztalok között) lehetõséget különféle állomásokon keresztül mozgatja. A Bricolage alatt eze- választjuk, majd a Linux story moved nevet adjuk neki. ket az állomásokat asztaloknak (desks) nevezik, utalva ezzel a Minden riasztástípushoz tartozik egy tulajdonos; jelen esetben program újságírói gyökereire. A történetet ennek megfelelõen a tulajdonosok mi leszünk, hiszen a saját nevünkön léptünk a szerkesztõasztalon (edit desk) kezdik, majd átkerülnek a máso- be. A Bricolage egyetlen felhasználót készít el magától, a lóasztalra (copy desk), onnan a jogi asztalra (legal desk), végül a Bricolage Administrator-t, mégpedig admin bejelentkezési kiadói asztalra (publish desk), ahonnan már a hálózatra jutnak. néven. Az admin felhasználó a Unix-rendszerek root felhasz- Maroknyi csapatok által vezetett honlapok esetében még könnyû nálójának, vagyis a rendszergazdának felel meg. Nyilvánvaló nyilvántartani, hogy melyik cikk éppen hol található. De ha egy- módon riasztásokat is birtokolhat, de sokkal jobban járunk, szer túlléptünk a kis szerkesztõgárdán vagy a csekély cikkszámon, ha készítünk magunknak egy másik felhasználót (a bal alsó igen nehézkessé kezd válni az egyes cikkek nyomon követése. sarokban található Admin/User menüpontban), majd megadjuk Az egyik lehetõség, amivel ellenõrizhetjük a munkafolyamatot, a rendszergazdai jogosultságokat és a továbbiakban így jelent- ha a munkaasztalokat egyesével rendszeresen végignézzük, kezünk be (a root helyett). hogy lássuk, éppen milyen történetek vannak rajtuk, majd Valamely esemény bekövetkeztekor ennek a lapnak az alján ta- ennek megfelelõen megtesszük a szükséges lépéseket. Ez a lálható next gombra kattintva a fõ riasztástípus-szerkesztõ oldalra nézegetés azonban idõvel elég fárasztó, ráadásul könnyen jutunk, ahol új riasztástípusokat hozhatunk létre, illetve módo- elõfordulhat, hogy az összes cikk helyett nekünk csak a hírek síthatjuk a már meglévõket. Minden riasztás négy részbõl áll: kategóriát kellene átnéznünk, esetleg csak egy adott szerzõ mûveit. Továbbá nem lenne rossz a munkafolyamat-esemé- • Properties (Tulajdonságok): a riasztástípus neve és tulaj- nyekrõl elektronikus levélben értesítést kapni. donosa, amit az elõzõ oldalon gépeltünk be.

70 Linuxvilág Kovácsmûhely

• Rules (Szabályok): megadja, hogy mikor kell a riasztásnak bejegyzett felhasználó levélben üzenetet fog kapni, amely a fent megszólalnia. Minden szabály tartalmaz egy változót (amit bemutatott levélben tájékoztatja õket a változás bekövetkezté- lenyíló menübõl választunk ki, így elkerülhetjük az esetle- rõl. A Bricolage ugyanakkor fel is jegyzi ezeket az eseményeket ges elgépeléseket), összehasonlító tesztet és egy szöveg- a saját adatbázisában, ami igen megkönnyíti a riasztások mezõt, ahová az összehasonlítandó értéket írhatjuk be. webes követését. Amikor a fent leírt linuxos riasztás életbe lép, • Content (Tartalom): az elektronikus levélben levõ üzenet, levélben jelzést kapunk. Ugyanakkor valamennyi riasztást amit a riasztás címzettjei megkapnak. Ebben több különféle megtekinthetjük a riasztási oldalunkon. Ezt a képernyõ tetején változót is használhatunk, a cikk címétõl kezdve a kiadás található, a my alerts gombra kattintva tekinthetjük meg. dátumáig. A riasztások egészen addig maradnak ezen az oldalon, amíg • Recipients (Címzettek): azok a felhasználók és csoportok, nem jelezzük, hogy tudomásul vettük õket. A riasztásoldalt akiknek a riasztást szánjuk. Tudunk például riasztást kül- nem hosszútávú tárolóhelynek szánták; sokkal inkább egy- deni az összes szerkesztõnek, az összes szerzõnek vagy szerû üzenetküldõ rendszernek, amely lehetõvé teszi a szer- éppen Gyurinak és Ferinek, de Debinek és Máriának nem. kesztõknek, hogy egyszerre lássák a honlapon akkortájt történt összes lényeges eseményt. Riasztási szabályok A riasztásokat olyan módon vehetjük tudomásul (ezzel törölve A Bricolage riasztási rendszerének talán legérdekesebb része õket az oldalról), ha a listában egy vagy több jelölõnégyzetet a szabályok alkotása, hiszen olyan egyszerûen alkalmazhatjuk bekapcsolunk, majd a lista alján lenyomjuk az acknowledge

õket, hogy a programozáshoz semmit sem értõk is elboldogul- checked gombot. A jelölõnégyzetek használata nélkül is tudo- © Kiskapu Kft. Minden jog fenntartva hatnak velük. Ugyanakkor a =~ és !~ mûveleti jeleknek (ame- másul vehetjük az összes üzenetet egyszerre, ha az acknowledge lyeket látva egy Perl-programozó rögtön szabályos kifejezé- all gombot választjuk. sekre gondol) akad egy nagy veszélyük. Egyértelmûen kétélû fegyverrõl van szó, hiszen a szabályos kifejezések rendkívül Tanulságos riasztások hatékonyak a felvilágosultak kezében, de hihetetlenül veszé- A riasztások nagyszerû és hasznos eszközök, amelyekkel a lyesek (és elkedvetlenítõk) a tudatlanokra nézve. Bricolage képes a vonatkozó adatokat eljuttatni a megfelelõ Riasztásunk létrehozásához a bal oldali tulajdonságlistából ki- felhasználókhoz, és így nem kényszeríti rá õket, hogy maguk választjuk a Story title elemet, majd a =~ jelet az összehasonlító keresgéljék ki õket. Mindeközben áldásos mellékhatásként a mûveleti jelek (operator) listájából, végül a Linux szöveget friss Bricolage-rendszergazdáknak és -programozóknak segít gépeljük be a szövegmezõbe értékként. Így a következõt kapjuk: megérteni, miképpen jönnek létre különféle események az egyes objektumokban. Egyszerû példa erre a User (felhasználó) Story title =~ Linux objektum: készíthetünk olyan riasztást, amely akkor figyelmez- tet, ha egy felhasználót létrehozunk vagy törlünk, illetve A =~ mûveleti jelet és nem az egyszerû = kell használnunk, megváltoznak a beállításai vagy a jelszava. Az ilyesfajta riasztás mivel a Linux szót a cím bármely részében keressük és nem csak egy szerkesztõ szemében nem ér különösebben sokat, ugyan- a teljes címmel való egyezést fogadjuk el. Amennyiben a Linux akkor elsõdleges fontosságú lehet a rendszergazda számára. és a Perl is érdekel minket, a következõre is kereshetnénk: Valamivel összetettebb példa a Template (sablon) objektum, amellyel a következõ hónapban ismerkedhetünk meg. A sab- Story title =~ Linux|Perl lonok határozzák meg, hogyan jelenjenek meg a történetek, ezért igen fontos a megfigyelésük és a változásaik nyomon A tapasztalt Perl-programozók biztosan örömmel hallják, követése. Ezért aztán a sablonokhoz több beállítás tartozik, hogy a =~ és a !~ mûveleti jelek itt nem figyelik a kis- és mint a felhasználókhoz – nyomon követhetjük a sablon telepí- nagybetû közti különbségeket. tését, szerkesztését, akár azt is, hogy mikor kerül fel az aszta- A riasztás témája és szövege tetszõleges szöveget tartalmazhat, lára. Amennyiben esetleg korábban nem értettük volna meg, ideértve Bricolage által elõre meghatározott behelyettesíthetõ hogy akárcsak a történeteknek, a sablonoknak is van saját Perl-változókat is. Egy szép JavaScript-megoldással a Bricolage asztaluk, a riasztórendszerbõl ez világosan kiderül. lehetõvé teszi, hogy a változókat lenyíló menübõl válasszuk ki, Én elég sokat tudtam meg a Bricolage rendszerrõl, miközben elkerülve ezzel a gépelési és egyéb hibákat. Egyben igen hasz- különbözõ szemszögekbõl megvizsgáltam, ideértve a riasztás- nos jegyzék, hiszen nem kell megjegyeznünk az összes elér- megadásokat is. Ha még újak vagyunk a Bricolage rendszer- hetõ, a cikkekhez tartozó változónevet. Ezzel a módszerrel ben, és a dokumentumok végigolvasása és a menük kinyito- könnyen összeállíthatjuk a következõ alakú riasztáscímet: gatása után (ami igen fontos, amennyiben tisztában szeretnénk lenni a Bricolage oldalszerkezetével és jogosultságrendszerével) A $title cikk átkerült a $desk asztalra sem igazán értettük meg a dolgok belsõ lelkivilágát, a riasztás- meghatározások végignézése rengeteg dologra rávilágít. Bár a riasztásüzenet valószínûleg más szöveget tartalmaz, itt A cikkhez tartozó kapcsolódó címek megtalálhatóak is használhatjuk a változóneveket. A szövegtestbe beírhatjuk az 53. CD Magazin/Bricolage könyvtárában. például a következõket: Ön kérte, hogy figyelmeztessük, amennyiben a Linux témájú Linux Journal 2003. október, 114. szám cikkek új asztalra kerülnek át. Nos, $trig_full_name épp most  helyezte át a "$title" címû cikket a $desk asztalra. Reméljük, Reuven M. Lerner ( http:/www.lerner.co.il/atf) segítettünk! Nyílt forrású programokra, valamint web- és adat- bázis-alkalmazásokra szakosodott tanácsadó. A riasztások fogadása Könyve, a Core Perl, 2002 januárjában jelent meg Amikor egy riasztás életbe lép, a kiválasztott címzettek két a Prentice Hall gondozásában. Reuven feleségével különbözõ módon kaphatják meg az üzenetet. Valamennyi és lányaival Izraelben, Modi’inben él.

www.linuxvilag.hu 2003. november 71 Fogadó a Linuxhoz

Tükröm, tükröm…

Készítsünk egyszerû biztonsági mentéseket, és tartsuk naprakészen az összes web- és FTP-oldalunkat olyan eszközökkel, amelyek már alighanem a rendszerünkön vannak.

rançois, mit mûvelsz? Amikor arra kértelek, hogy tük- rözd a weboldalainkat, azt nem úgy értettem, hogy a F képernyõ elé kell tartanod egy tükröt. Néha nagyon bután tudsz viselkedni! Azt szeretném, ha arra a másik gépre másolatot készítenél a honlapunkról. François, most meg mit nézel annyira? Á, megérkeztek a vendégeink! Miért nem szól- tál? Isten hozott titeket Chez Marcelnél, a linuxos fogások és

© Kiskapu Kft. Minden jog fenntartva a különleges borok otthonában. Ha már a bornál tartunk, François, siess gyorsan a pincébe! Hozd fel, kérlek az 1999-es California Stag's Leap District Cabernet Sauvignont. Ez a merész és zamatos bor mai menünk tökéletes tükre. Mint már tudjátok, mes amis, mostani írásom témája a rendszerfelügyelet. A mai menü révén belekóstolunk számos, az adattükrözés céljára szolgáló eszköz mûködésébe. Rengeteg okot találhatunk az adatok tükrözésére: az elsõ nyilvánvaló ok a biztonsági másolat készítésének talán nem túl vonzó, mégis nagyon fontos kérdése. Az egyéb okok közt találhatjuk meg a helyi hálózati frissítések számára létrehozott A wget a weboldal tetejétõl kezdve a teljes oldalon végighalad, FTP-tükrözéseket, amilyen a saját RPM frissítõcsomagok tár- és mentést készít az ott lévõ HTML-fájlokról és képekrõl. A -m helyének létrehozása, vagy a weboldalak tükrözése a gyors, ebben az esetben a tükrözést jelenti, de sok egyéb lehetõség is hálózati kapcsolat nélküli böngészés céljából. rendelkezésünkre áll a -r, -N, -1 inf és -nr kapcsolók Sokan azok közül, akik rendszeres idõközönként biztonsági formájában. Ezek sorrendben arra utasítják a wget-et, hogy másolatokat készítenek, az adatokat egy másik gépük merev- rekurzív letöltést végezzen, kapcsolja be az idõbélyegzést, lemezén helyezik el, míg mások ugyanannak a gépnek egy korlátlan számú szintet tegyen lehetõvé, és ne távolítsa el az másik lemezére dolgoznak. Mivel egy újabb merevlemez FTP-könyvtárak .listing fájljait. vásárlása manapság már rendkívül olcsó, és a nagy tárolóka- A weboldal minden fájljáról másolat készül egy helyi könyv- pacitású szalagos egységek lényegesen többe kerülhetnek, ez tárba, amelynek neve az oldal nevével egyezik meg. A fenti a megoldás is elterjedt. példában ez www.websitename.dom lenne. Ha a webkiszol- Egy lemezrõl biztonsági másolatot készíteni egy másik lemezre gálónkon egy új fájlt hozunk létre és újra lefuttatjuk a paran- olyan egyszerû is lehet, mint egy rekurzív másolás a cp pa- csot, akkor csak ezt az új fájlt tölti le, így a másolat naprakészen ranccsal. Ha például a /home könyvtáram minden adatát egy tartása sokkal gyorsabb. sok szabad hellyel bíró másik lemezre szeretném másolni, az Ez az eszköz nagyszerûen használható arra a célra, amire írták, alábbi parancsot használhatnám: ez pedig elsõdlegesen a weboldalakkal kapcsolatos, de a wget FTP-kiszolgálókról való adatletöltésre is lehetõséget nyújt. Ha cp -rfupv /home/mgagne /disk2/ névtelenül látogatható oldalról szeretnénk letölteni valamit, a parancsformátum szinte megegyezik a weboldal tükrözésére Ahogy azt már sejtitek is, a -r kapcsoló utal a rekurzív máso- használt parancséval: lásra (az összes alkönyvtár másolására), a -v pedig a parancs végrehajtása során keletkezõ üzenetek kiírásáért felelõs. Mivel wget -m ftp://ftp.ftpsitename.dom nem akarom, hogy a rendszer minden egyes fájl felülírásakor figyelmeztessen, a -f kapcsolóval hagyom jóvá az összes Ellenben ha olyan oldalról készítjük a biztonsági másolatot, másolást, a -p kapcsoló pedig azt biztosítja, hogy az engedé- amelynek az eléréséhez felhasználói név és jelszó is szükséges, lyek másolása is megfelelõen megtörténik. Végül a -u kapcsoló egy kicsit cifrább a parancs formája: arra utasítja a cp parancsot, hogy csak a megváltozott fájlokat másolja, ezáltal felgyorsítható a másolás folyamata. wget -m Az eljárás viszonylag jól mûködik, de az egyik géprõl a másikra ftp://username:[email protected] történõ másoláshoz további lépések is szükségesek. Linux- rendszerünkben a cp parancson túl számos eszköz áll még Ennek a megközelítésnek van némi árnyoldala. Elõször is a rendelkezésünkre. A kezdõk számára egy teljes weboldal jelszavunkat kódolatlan szövegként küldjük át a hálózaton, másolására az eredetileg Hrvoje Niksic által írt wget parancs ami a hálózatunk megbízhatóságától függõen elég kockázatos kipróbálása az egyik lehetséges út: lehet. Szorult helyzetben az scp paranccsal készíthetünk biztonságos rekurzív másolatot. Mivel az scp az OpenSSH wget -m http://www.websitename.dom részét képezi, a parancs használatával élvezhetjük a

72 Linuxvilág Fogadó a Linuxhoz

nyugalmat, hogy a fájlokat biztonságos, kódolt formátumban tükrözni vagy menteni szeretném a saját könyvtáramat továbbítjuk. Feltéve, hogy – az Apache kiszolgáló gyökerétõl egy távoli számítógépre. Az alap ftpcopy parancs valahogy kezdve – az egész weboldalt le szeretnénk másolni, a parancs így néz ki: valahogy így festene: ftpcopy -u marcel -p secr3t! remote.hostname scp -rpv /var/www /home/marcel /mirdir/ root@remote_host:/mnt/backupdir A -u és -p kapcsolók nyilvánvalóan a felhasználói nevemet A -r kapcsoló felelõs a rekurzív másolásért, a -p pedig arra és a (hamis) jelszavamat jelentik a távoli gépen. Ezt követi a utasítja az scp-t, hogy õrizze meg az eredeti fájlok és könyv- másolni kívánt könyvtárra mutató elérési útvonal, ezután az tárak módosításának az idejét, a tulajdonosi és jogosultsági a helyi könyvtár, ahol a könyvtárszerkezetet létre szeretném beállításokat. Amennyiben nagy mennyiségû adat átvitelérõl hozni. Az áttöltés folyamán ilyen üzeneteket fog kapni: van szó, érdemes megfontolni a -C kapcsoló használatát, amely röptömörítést hajt végre, s ezzel lényegesen növeli /mirdir/scripts/backup.log: download az áteresztõképességet. successful Az adattükrözés e módszereivel talán az a legnagyobb baj, /mirdir/scripts/checkhosts.pl: download hogy nagyon sokáig tartanak. A wget képes arra, hogy az successful

új fájlokat egy FTP-kiszolgálóról letörölje, de arra már nincs /mirdir/scripts/ftplogin.msg: download © Kiskapu Kft. Minden jog fenntartva lehetõség, hogy egy könyvtárat a fájlok esetleges törlésével successful teljes összhangban tarthassunk. Az scp is hasznos biztonságos /mirdir/scripts/gettime.pl: download másolása miatt, de arra nincs megoldás a programban, hogy successful csak a megváltozott fájlok kerüljenek átvitelre. Ez az eddigi megoldások második hátulütõje. Ha biztosak szeretnénk lenni Ha ennél egy kicsit részletesebb adatokra van szükségünk, abban, hogy az adataink folyamatosan összhangban lesznek használhatjuk a -bps kapcsolót, amely az adatátvitel sebes- anélkül, hogy minden egyes fájlt és könyvtárat átmásolnánk, ségét jeleníti meg bájt per másodperc mértékegységben. egy kicsit okosabb programra lesz szükségünk. Érdemes legalább egyszer a -help kapcsolóval is lefuttatni az Ennek megoldására az általam ismert talán legjobb program ftpcopy-t, és óvatosnak kell lennünk bizonyos lehetõségek Andrew Tridgell rsync nevû alkotása. Mick Bauer nagyszerûen használatával. A -s például a közvetett hivatkozásokra vonat- bemutatta a programcsomagot (a Linuxvilág májusi és júniusi kozik, a -l pedig a naplózási szint növelését teszi lehetõvé. számában), úgyhogy én most nem szeretném az ott leírtakat Ha a tükrözést egy cron munkafolyamatként szeretnénk beál- ismételni, csak annyit mondanék, hogy esetleg érdemes ezt lítani, talán érdemes a naplózást 0-ra állítani. Egy másik hasz- a kétrészes cikket újra fellapozni. nos kapcsoló a -n. Ha egy fájlt töröltünk a távoli gépen, az ftpcopy futtatásakor helyileg is törlõdni fog. Ha a rendsze- Az ftpcopy reket tényleg összhangban szeretnénk tartani, akkor erre van Sok esetben öreg barátunk, az ftp társaságában találhatjuk szükségünk. Ezt a mûveletet kapcsolhatjuk ki a -n kapcsolóval, magunkat. Az egyik oldalon (azon a gépen, amelyiket ebben az esetben nem következik be a törlés. tükrözni akarjuk) az FTP-kiszolgálónkat futtatnánk, vagy Nos, mes amis, elérkezett az idõ, amikor mindnyájunknak haza a ProFTPD-t, vagy a wu-ftpd-t. A másik oldalon pedig kell térnünk. Azért egy utolsó pohár borra még futja az idõbõl, Uwe Ohse ftpcopy programja futna. Az ftpcopy gyors, non? François, mon ami, ha volnál szíves a házigazda szerepét könnyen beállítható és egyszerûen használható program, magadra vállalni! És mindjárt két pohárral, hogy tükrözni amely igen jól teljesít, amikor teljes könyvtárszerkezetek tudjuk az elsõt! másolása a feladat. A másolás folyamán gondoskodik a jogo- Egészségetekre, mes amis! A votre santé! Bon appétit! sultságok és a módosítás dátumának és idõpontjának a keze- lésérõl, ráadásul mindezt gyorsan teszi. Mindezeken túlme- Linux Journal 2003. október, 114. szám nõen nyomon követi a korábban letöltött fájlokat, ami cél- szerû, ugyanis a legközelebbi futtatáskor csak az idõközben megváltozott fájlokkal kell foglalkoznia, így téve még gyor- Marcel Gagné ([email protected]) sabbá a biztonsági másolat készítését. Mississaguában, Ontario államban él. Néhány rendszercsomag már tartalmazza az ftpcopy-t, Õ a szerzõje a Kiskapu kiadásában tavaly szep- de a legfrissebb csomag letöltéséhez érdemes meglátogatnunk temberben megjelent Linux-rendszerfelügyelet a  http://www.ohse.de/uwe/ftpcopy/ftpcopy.html oldalt. (ISBN 96-9301-40) címû könyvnek (jelenleg is A csomag fordítása egyszerû, mindössze néhány lépésbõl egy könyvön dolgozik). álló feladat:  tar -xzvf ftpcopy-0.6.2.tar.gz cd web/ftpcopy-0.6.2 KAPCSOLÓDÓ CÍMEK make OpenSSH  www.openssh.org  A command nevû könyvtárban három futtatható állományt rsync rsync.samba.org fogunk találni: az ftpcopy-t, az ftpcp-t és az ftpls-t. Ezeket wget  wget.sunsite.dk akár innen is futtathatjuk, vagy átmásolhatjuk a /usr/local/bin ftpcopy  www.ohse.de/uwe/ftpcopy/ftpcopy.html könyvtárba, netán az $PATH útvonal valamelyik másik helyére. Marcel borlapja  www.marcelgagne.com/wine.html Nézzük, hogyan mûködik a program. Tegyük fel, hogy

www.linuxvilag.hu 2003. november 73 Játék

Shogo: mobil harci hadosztály Egy kis lövöldözés mindenkinek kell!

Shogo: mobil harci hadosztály nyomást gyakorol az animált történetre, – átlátszóság és visszaverõdés a egyszemélyes lövöldözõs játék, és ez elborzasztóan meggyõzõ. Ezen- víz- és üveghatásokhoz; némi eltéréssel a többi hason- kívül a Shogo jó minõségû hanganyag- – valós idejû árnyékok; Aszõrû játékhoz képest. A programot gal (narrátor) bír, ami a játék egészét – tájak, városok; olyan rajzelemek szövik át, olyan hatá- végigköveti és irányítja a karakter életét. – animált felhõk, színes köd; sok nyoma figyelhetõ meg rajta, amelye- – nagymértékben testreszabható ket a klasszikus japán rajzfilmekben, A játék jellegzetességei dióhéjban szemcsehatásrendszer; animációkban láthatunk. A fejlesztõk 1. A LithTech 3D-motorját használja, – PolyGrids (elmozdítható, változó

© Kiskapu Kft. Minden jog fenntartva a Macross (aka Robotech) és a Gundam amelyet a Monolith készített grafikai elemek például a vízfelszín grafikai eljárásokat használták, amelyek ( http://www.lith.com/lithtech). létrehozásához). lehetõvé teszik, hogy harci ütközetet 2. Kiválasztható a pilóta, és egy a négy vívj egy tíz méter magas robotban. átalakítható Mobile Combat Armor A játék idõszerû, hihetõ történettel eszköz közül (MCA-k). próbál meg végigvezetni bennünket 3. Két módban lehet játszani: saját lábon az események folyamán. állva és az MCA-ba bújva. A Shogóban Sanjuro alakjával játsz- 4. Igazi 3D-környezet fogad bennünket hatsz, aki befolyásos parancsnokként valós fényekkel, belsõ szintekkel, a háború közepén elfogja az ellenséges hatalmas külsõ tereppel és félelmetes terrorista fedõszerveket. Ahogy a fejlesz- hatásokkal. tõk kialakították Sanjuro világát, úgy fo- 5. Több mint harmincféle kihívó ellen- god te is megismerni mindezt. A Shogó- ség, akik ügyesen kiaknázzák a kör- ban megvan minden, aminek egy ádáz nyezet nyújtotta lehetõségeket. 3D-s akcióban lennie kell. 6. Mozgalmas történet és célközpontú A játék néhány részében elõfordul, hogy küldetési szerkezet, ez határozza meg gyalogos katona vagy, míg másutt egy a támadás alapjait. teljes, az életedet védõ MCA egység, ami 7. Elkülönített MCA- és gyalogos fegy- nem más, mint egy tíz méter magas verarzenál (18 felturbózott változat). fémruha. Ez a „csomag” valóban csodá- 8. Többjátékos akció, ami tartalmazza latos tûzerõvel rendelkezik, ami egy a beépített internet-, helyi hálózat- és lézerágyút és egy multifunkciós harci- modemtámogatást. fegyver-állványt foglal magában. A valós Ismerkedjünk meg a szereplõkkel! animált világban az MCA-k elképesztõ • LithTech-jellemzõk: 3D-modellezés Sanjuro Makabe mértékben irányíthatóak, és furcsa – Támogatja a mozgásalapú Sanjuro Makabe fiatal parancsnok az érzést kelt, amint összelapítják a gyalo- animációt. UCA védelmi erõknél. Láthatod, amint gos katonákat – emlékezz erre, és fuss, – Részletes megjelenítés a külsõ egyre tiszteletreméltóbbá válik, te ha te is gyalogos katonaként küzdesz, világokhoz. irányítod az útját a teljes elismertségig. és egy terrorista MCA jelenik meg… – Egyéni textúrák a modellekhez. Így te vagy az is, aki késõbb, a küldetés A Shogo a Monolith LithTech 3D-motor- – Többszintû modellek: mindegyik során felelõs leszel egy tragédiáért, ami ját használja, amely a Quake II grafikai modell százszintes, kidolgozott társaidat, Toshirót és Kurát is érinti e motorját kiegészítve képezi le a 3D-meg- megjelenéssel bír – mindehhez rövid életû társaságból, Baku pedig jelenítést. Említsük is meg az eltéréseket, nem szükséges többletmemória, eltûnik az akció során, és halála nagy bõvítményeket: a robbanások, a a modellek lassúbb rendszerekre érzelmi válságot vált ki Sanjuróban sebesülések, a szemcse- és a fényhatások is visszaalakíthatók. (azaz benned). A tragédia nem szakítja olyanok, mintha valósak-valódiak – Az összes modell hierarchikus, a félbe a karrieredet, de megkeseredetté lennének (ne feledjük, ez csak a Quake kulcsfontosságú animációs részek és legyõzötté tesz. II szinthez képest elõretörés). A Litgh- interpoláltak. Tech-motor lehetõvé teszi, hogy az – Támogatja mind a merev, mind a Admiral Akkaraju MCA-ba bújva valóban meggyõzõ belsõ deformált animációs megjelenítést, Akkaraju parancsnok az UCASF és külsõ látványt élvezhessünk, miköz- lehetõvé teszi az élvezetesebb és Leviathanon, az UCA parancsnoki ben ellenséges tankok vagy katonák jobb minõségû életszerû animációt. hajóján. Felesége halála mély nyomot támadnak. • LithTech-jellemzõk: fények hagyott benne, és ez megváltoztatta A Shogo hangsávjai finomak és hatáso- és különleges hatások életszemléletét is. Az életet elutasította, san illeszkednek a képernyõn megjelenõ – csillogások, színes fények, és ebben az elutasításban adta át magát akcióra. Néhány hanghatás szabályosan dinamikus fénykezelés; a feladatának, azonban a bázisa elleni

74 Linuxvilág Játék

terroristatámadás e hozzáállás feladá- meggátolja a tanulásban és elvakulttá szolgált, amíg Sanjuro és Toshiro támo- sára kényszerítette. Megerõsíti hírnevét, teszi. A katonai iskola után Kura szerel- gatni nem kezdték. Baku ugyancsak és alapos férfiú lévén becsülettel kiér- mes lesz Sanjuróba, szeszélyességébõl szerelmes volt Kurába gyermekéveik demli az admirálisi rangot. „kigyógyítja”, majd gondtalan utat alatt, de soha nem osztotta meg vele mutat az élet felé, és végül felülkere- igazi érzéseit. Kathryn Akkaraju kedik a saját nehézségein is. Anyja halála után Kathryn megesküszik, Hank Johnson hogy soha többé nem fog fegyvert em- Toshiro Hank életre szóló álma, hogy UCASF- bertársaira. Mindenki aggódik, amikor Mélyen érintette, hogy elveszítette a pilóta lehessen. Hibátlan, örökölt tulaj- harcos katonaként csatlakozik az szüleit. Toshiro (Sanjuro bátyja) mogor- donságai révén elõtérbe kerül, és kima- UCASF-hez, és apja csillaghajóján, va, zárkózott gyerek volt, aki békésebb- gasló fizikuma csak fokozza sikerességét. a Leviathan zászlóshajón megszerzi nek találta, hogy a saját fantáziavilágá- Feleségével az elhagyott Avernus város- a kommunikációs szakértõi tisztséget. ban éljen, mint a többiekkel. Bár megiri- ban geotermikus monitorállomást mû- Kathryn fõ célja a küldetés során a gyelte Sanjuro népszerûségét és nyers ködtet az Andra Biomechanika cég meg- kapcsolattartás, jelenleg a vizsgájával magabiztosságát, de soha nem vált bízásából. Keresi a lehetõséget, hogy foglalkozik. veszélyesen féltékennyé, míg Sanjuro hõssé váljon. és Kura szerelmesek voltak. Kura Akkaraju Mivel is irtsuk embertársainkat, Az Akkaraju családban mindenki Ryo Ishikawa avagy a mobil harci eszközök katonai érvényesülés útjára lép – Kura A hatalmas Shogo üzleti birodalom örö- • Armacham Ordog javított 7-es © Kiskapu Kft. Minden jog fenntartva jól megérdemelt dicséretet kapott párat- köse. Házsártos és leleményes – az általa változat lan lövésztudományáért, harcászati kitervelt cselszövések csak kegyetlensé- Az Ordog egy a mérnökök által leleményességért és kitartásáért. Meg- gével mérhetõk össze. sokáig és magas szintre fejlesztett próbálja kezelni a bánatát, amit anyja eszköz. Gyors és ellenálló, fényes halála okozott, s ugyanilyen határozott- Baku Ogata megjelenésével, illetve visszafogott sággal döntötte el, hogy kiváló katona Baku vézna volt az akadémia alatt, ezért kialakításával azonban ijesztõ az lesz. Tartós haragja, amit apja iránt érez, gyakran kegyetlen tréfák célpontjául ellenfél számára. A jármû üzem-

Friss hírek a játékok világából

Kiadták a Legends for Linuxot • et-linux-2.56.x86.run A Legends fejlesztõi beje- ( http://3ddownloads.com/linuxgames/wolf/et/et-linux-2.56.x86.run) lentették a Legends) kiszolgáló LG/3DD (258 MB) alapú Linuxhoz programot. • et-linux-2.56-update.x86.run A Legends egy FPS stílusú, ( http://3ddownloads.com/linuxgames/wolf/et/ többjátékos program, ami et-linux-2.56-update.x86.run ) LG/3DD (6,7 MB) a Torque grafikai motort hasz-  http://www.castlewolfenstein.com/ nálja (GarageGames fejlesztés; Linux Unreal Tournament 2004 kiadási hírek  http://garagegames.com/). Az UT2004 támogatni fogja a Linuxot (mind ügyfél-, mind kiszolgáló  http://hosted.tribalwar.com/legends terén). Ugyanazon elv szerint, mint az UT2003 esetében, a linuxos Wolf: ET 2.56-os kiadás támogatás benne lesz a megvásárolt UT2004 dobozában. Mire ez a Kiadásra került a 2.56-os változatú Wolfenstein: Enemy Territory. cikk megjelenik, feltehetõen kiadásra kerül az elsõ elõzetes is. A fájlok a következõ helyekrõl tölthetõk le: Neverwinter Nights-frissítés • et-linux-2.56.x86.run.torrent Kiadták a Neverwinters Night Linux-ügyfél 1.32 változatát. A má- ( http://zerowing.idsoftware.com/BT/torrents/et-linux- sodik ügyfél olyan javításokat tartalmaz, amelyek kiküszöbölik a 2.56.x86.run.torrent) (teljes változat, 258 MB) felhasználók jelezte hibákat (például a játékot nem lehetett futtatni). • et-linux-2.56-update.x86.run.torrent Az ügyfél úgy lett elkészítve, hogy jobb megfelelõséget nyújtson az ( http://zerowing.idsoftware.com/BT/torrents/ ismertebb videokártyáknak és -meghajtóknak. et-linux-2.56-update.x86.run.torrent) (2.55; 2.56-os folt, 6,7 MB)  http://nwn.bioware.com/support/patch.html

www.linuxvilag.hu 2003. november 75 Játék

Botfa Zsolttal készítettünk „elektronikus interjút” a most állnak, míg a másik oldalon a fürge, bár gyengébb emberek megjelenõ hazai fejlesztésû program kapcsán. próbálják felvenni a harcot a gépek ellen. Ez az ellentét nagyon érdekessé teszi a játékmenetet. A terminátoroldalon szó szerint Várhatóan e hónapban jelenik meg a Terminator 3: War of the mint a gép nyomulunk elõre, nem ismerve félelmet és nem is Machines program, aminek a fejlesztését ugyanaz a Clevers cég keresünk fedezéket. Az emberek oldalán pedig a pálya összes készíti, mint a korábban elhíresült Screamer 4×4 programot búvóhelyét kihasználjuk és tökéletes csapattaktikával gyõzhetjük (magyar fejlesztés). Lehet, hogy csak az én figyelmemet kerülte el le a gépek hadát.Tehát a játék végkifejlete azon múlik ki hogyan a dolog, de eddig nem sokat halottam a játékról. Külön köszönet tudja kihasználni az általa játszott karakter képességeit. Botfa Zsolt-nak, hogy a kipróbálás idõszakában – mégha csak egy-két levél erejéig is – a rendelkezésemre állt. K. N.: Milyen grafikai motor fog futni a játék „lelkében”? B. Zs.: A játék egy saját fejlesztésû motort használ (Vision Kosztadinovszki Norbert: Hogy haladtok a kipróbálással? Graphics Engine). Egy sor hatás bizonyítja a motor képességeit, Botfa Zsolt: Nos, nyakig ülünk a munkában, így csak nagyon amelyek a játék minden elemén megjelennek (fegyvereken, kevés adattal tudok szolgálni... Mindenféle hivatalos tájékoztatás karaktereken, jármûveken stb.). A fegyvereknél látható a közzé tétele a kiadói oldal jogkörébe tartozik, ezért arra kérnélek, torkolattûz, a kirepülõ hüvelyek, a fegyver mozgása, a lövedékek hogy elsõdlegesen a Kapcsolódó címeknél felsorolt oldalakon becsapódása. A jármûveknél megfigyelhetõk a lövedékbecsapó- © Kiskapu Kft. Minden jog fenntartva kutakodj. Az ott szereplõ anyagokat tudom egy kicsit bõvíteni, dások és az ütközések nyomai, lángok, robbanások. A pálya illetve módosítani néhány morzsányi hírrel, tõmondatokban. különbözõ pontjain füstöt, gõzt, különbözõ felvillanásokat, • Karakterek keresõfényeket is láthatunk. Életszerû látványt nyújt a használt Human (ember): Hunter, Heawy Hunter, Supply, Scout és egy fény–árnyék technika. Például a torkolattûz megvilágítja a különleges karakter (ez a Terminátor-rajongóknak ismert lesz, környezetet. Világosabb helyrõl árnyékosabb helyre történõ hiszen õ Arnold). mozgáskor jól követhetõ a fényváltozás. Terminátor: T900, T900 Supply, FK, T1. De a grafikus megjelenés mellett meg kell említeni a Nem játszható karakter: HK (ami a levegõbõl sorozza a humá- hanghatásokat is, amelyek együttesen alapozzák meg a játék nok állásait, s csak az egyik terminátorosztály hívhatja meg). hangulatát. A játék részét képezik a Mesterséges Intelligencia által irányí- tott karakterek is, amelyek segítenek a humán játékosoknak. K. N.: A  http://www.3dgamers.com/games/terminator3wm/ • Jármûvek címen elérhetõ anyag szerint a játék az ATARI szárnyai alatt kerül Mindkét oldalon rendelkezésre állnak. Akadnak közöttük kiadásra. Mivel az ATARI van az UT2003 és UT2004 mögött is, olyanok, amelyek nehézpáncélzattal erõsítettek, és olyanok, felmerül a kérdés, hogy a T3-nak lesz-e futtatható linuxos része, amelyek fegyverrel felszereltek; és természetesen vannak amivel a windowsos telepítõ CD-rõl fel lehet rakni a programot szállítójármûvek is. A játékosok a vezetõ, az utas és a lövész Linux alá? bõrébe bújhatnak. B. Zs.: Nincs tudomásom róla, hogy az ATARI tervezi • Fegyverek a játék linuxos megjelenítését. A fegyverek használata elkerülhetetlen, közel húszféle került K. N.: Az ellenfelek és játékosok felépítése hogyan történik, be a játékba. Ha a fegyverarzenált nézzük, kézi lõfegyverekkel, mennyire érvényesül a manapság mérvadónak tûnõ gránátokkal, gépjármûre vagy állványra szerelt fegyverzettel csontvázfelépítés? találkozhatunk. B. Zs.: Természetesen mi is követjük az úgynevezett A fegyverek egy része a mai korszerû fegyverek közül került ki, csontvázmodellt. Ez az animációk megvalósításához és a különbözõ de találkozunk néhány futurisztikus változattal is (például mozgások megvalósításához elengedhetetlen. plazmafegyverekkel). Természetesen egyes fegyverek többfunk- ciósak, némelyik fegyver gránátlövedékek kilövésére is képes. K. N.: Megtudhatunk-e valami újabbat a játéktörténetrõl? És meg kell említeni, hogy a játékban célkövetõvel ellátott B. Zs.: Különálló történet nem tartozik az egyjátékos módhoz. fegyverek is szerepelnek, amelyeket sikeresen használhatnak A lényeg a Terminátor-mítosz hangulatának a megteremtése. a repülõ szerkezetekkel szemben. K. N.: Felhasználták-e és ha igen, milyen mértékben a Screamer • Pályák 4×4-ben szerzett tapasztalatokat? Több különbözõ stílusú pályát találhatunk: lesznek nyitottabb B. Zs.: Az ott megteremtett fizika jó alap a mostani játékhoz. és zárt pályák, pályák épület belsejében, a belvárosban vagy A jármûvek viselkedésénél nem kell szimulátorhoz hasonló viselke- a városon kívül. Lesznek olyan pályák, amelyek a jelenben dés, de a jármûvek, a karakter, a fegyverhasználat mind a fizika játszódnak, míg mások a sötét jövõt tárják elénk, tehát min- törvényeinek megfelelõen mûködik. denki megtalálhatja azt a fajta pályát, melyen játszani szeretne. • Játékmódok K. N.: Hol tart a kipróbálás és, milyen állapotban van a játék? Kik Termination, Mission, Team Deathmatch. Lehetõség nyílik vesznek részt a tesztelésben? egyjátékos, helyi hálózatos többjátékos és internetes több- B. Zs.: Ki sem látszunk a munkából. Amúgy a kipróbálás  játékos módra is. szervezését az ATARI ( http://www.betatests.net) irányítja. Amennyire lehetséges, igyekszünk valóssá tenni a harcoló felek Remélem, ez a néhány hírmorzsa is felkeltette az olvasók készségeit és képességeit. Jelen esetben nem egy szokványos FPS érdeklõdését a játék iránt. játékról van szó, ahol a két oldalon hasonló harcértékkel bíró fél áll. Az egyik oldalon az erõs, pontos, bár lassú mozgású terminátorok Kosztadinovszki Norbert

76 Linuxvilág Játék

telepítõkönyvtárába lépve a ./uninstall parancsot kell futtatnunk.

A Shogo indítása és beállításai • Az indító Mint már említettem, ha a Gnome vagy a KDE grafikus felületet használjuk, a telepítõprogram egy parancsikont helyez el a menübe. Vagy ezt, vagy a konzolon kiadott shogo parancsot futtatva juthatunk feladatokra: erõs szerkezetû karral, el a Shogo indítópanelhez. megfélemlítõ külsõvel egyedülálló harci gép. Sajnos teherbírása nincs Az elsõ alkalommal, amikor használatba egyenes arányban az árával, a gyor- kívánjuk venni a Shogót, az indítókép- saságával és a sokoldalúságával. ernyõ fogad bennünket – ezt ki lehet • Fegyverek kapcsolni, ha a jövõben semmilyen beál- © Kiskapu Kft. Minden jog fenntartva – Kawamori A74 Pisztoly lítást nem akarunk módosítani a prog- – Vollmer GA-14 CAW Vadászfegyver ramon. Az indító öt beállítófüllel bír, – Aegis AT-S4 Mesterlövész puska ezeket használva tudjuk egyéni ízlé- – Skalla kézi M25 Géppuska sünknek vagy gépünk erõforrásainak – Celsior AS-10 Impulzus karabély megfelelõen beállítani a program futását. módot használva gyorsabb és eléri – Vollmer VK-75 Lézerágyú azt a végsebességet, amit az UCA – Ludenarms MOD-4 „Bikabelezõ” • Címoldal nem képes felülmúlni. – MT-101 „Eltipró”. Ha a Shogót a legutolsó aktív beál- • UCA Enforcer Mark VII • Energiafeltöltések lításokkal szeretnénk futtatni, nem Az Enforcer kemény, lekerekített – elsõsegélycsomag kell mást tennünk, mint a Launch MCA, ez egyensúlyozza ki érzékeny – testvédõ gombra kattintani. Ugyanitt lehet a mozgását az erõs páncélban. Azok- – energiaegységek többjátékos módot is indítani. Végül, nak a pilótáknak eszményi, akik – páncél-helyreállító egység ha semmiképpen nem akarunk ját- szeretik a gépet, mert minden – frissítések, kiegészítések. szani, nyomjuk meg a Cancel gom- helyzetben megbízható. bot. A kiválasztó négyzetbe kattintva • Shogo Akuma 12 változat Telepítés megszabadulhatunk a többszöri pa- Az Akuma könnyû, gyors, ügyesen Tegyük be a Shogo CD-t a CD-ROM nelnézegetéstõl, de ha valamit sike- manõverezhetõ MCA, olyan helyze- meghajtóba, és csatoljuk fel a lemezt. rült elállítanunk, azt már csak kézzel, tekre tervezve, ahol a bonyolultság Természetesen rendszergazdai (root) a konfigurációs fájlokban történõ és a gyorsaság fontosabb, mint a jogosultsággal lépjünk be a befûzött CD hosszas kereséssel lehet kijavítani. tartósság. Tökéletes választás azok könyvtárba, és a következõ parancsot • Megjelenítési beállítások a pilóták számára, akik kedvelik a adjuk ki: A lap lehetõvé teszi, hogy kiválasz- zûrzavar elõli megfutamodást vagy szuk a leképezéshez használt eljá- a gyors ugrásokat. ./setup.sh rást, valamint a hozzá tartozó felbon- • Andra 25 Ragadozó tást. A teljes képernyõ lehetõség Az Andra az utolsó választható Amennyiben Gnome vagy KDE grafikus minden esetben mûködik, érdemes MCA. Tökéletesen alkalmas harci felületet használunk, egy ikon fog beköl- kiválasztani. A támogatott OpenGL- tözni a menübe. gyorsítással rendelkezõ kártyák Csak követni kell a képernyõn megje- kínálata olyan széles, hogy felsorolni Rendszerkövetelmények lenõ utasításokat, és a 453 MB felmáso- sem érdemes õket. Ez annak köszön- lását követõen felköltözik rendszerünkre hetõ, hogy a játék nem mai „gyerek”. Processzor: Pentium 200 3D-gyorsítással, a Shogo. A telepítés után a Hyperion Programbeli gyorsításra csak akkor PentiumII/233 programbeli gyorsítással. szokásának megfelelõen meg kell ad- lehet szükség, ha nem rendelkezünk Memória: 32 MB, de 64 MB az ajánlott. nunk a sorozatszámot. Enélkül nem 3D-kártyával, de ebben az esetben is Merevlemez: 450 MB a teljes tudunk játszani és hiába hagyjuk ki, a legalább 15 vagy több bites színmély- telepítéshez. shogo parancsra a játék nem fog futni. séget tudó kártyára van szükség. • Rendszermag: 2.2.13 vagy frissebb változat. A telepítõ természetesen konzol alól is Audiobeállítások mûködik, ebben az esetben szöveges A Shogo az SDL függvénykönyv- C könyvtár: glibc 2.1. alapú telepítõt használva tudjuk a tárat használja mind a megjelenítés- Grafika: grafikus kártya, amely X-kiszol- Shogót a Linuxra telepíteni. Gondolom, hez, mind a hangok leképezéséhez. gáló-megfelelõ, XFree86 3.3.6 vagy 4.0-s mindenkinek egyértelmû, hogy a futta- Mivel a program jócskán benne van ajánlott; GTK 1.2 felhasználói felület könyvtár. táshoz ebben az esetben is szükségünk a korban, így olyan régi SDL-fájlokat Hang: OSS- vagy ALSA-megfelelõ van X-kiszolgálóra. keres, amiket már senki sem használ hangkártya. Ha valamikor úgy döntenénk, hogy le (ugyanaz a gond, mint a SiN eseté- akarjuk törölni a programot, akkor a ben). A CD szerencsére tartalmazza

www.linuxvilag.hu 2003. november 77 Játék

azokat a régi SDL-fájlokat, amelyek halljuk, amit Hank vagy más szerep- szükségesek, de egy egyszerû közve- lõk mondanak–üzennek nekünk. tett hivatkozás létrehozásával is Music: letilthatjuk a CD-audioleját- orvosolható a hiányosság (lásd szást. Hm, ennek alapvetõen túl sok a SiN-rõl szóló cikket). értelme nincs. Ha nem akarunk Ugyanezen a lapon adhatjuk meg, japán zenét hallgatni a játék közben, hogy milyen mértékben történjen akkor mindenképpen elõnyös. meg a hangcsatornák keverése. Movies: letilthatóak a kezdõ és a A virtuális csatornák használatával logófilmek a játék indításakor. Ebben egyszerre több hang préselhetõ ki a az esetben a fõmenü hamarabb fog hangkártyából. Természetesen minél megjelenni. több hangot próbálunk meg belepré- Light Mapping: letiltható a fény- selni a csatornákba, ezzel egyenes hozzárendelés. A fény-hozzáren- arányban nõ a processzor kihasz- delés egy olyan folyamat, amelynek náltsága. Drasztikus esetben a hang során egy sokszögön egy második akadozhat, a minõség viszont egyre textúrát alkalmaznak, ami olyan jobb lesz. A Hyperion a következõ hatást ad a fénynek vagy az árnyék-

© Kiskapu Kft. Minden jog fenntartva beállításokat ajánlja: nak, mintha valós, vetett fény je- • általános nyolccsatornás hanghoz lenne meg a felületen. A fény-hoz- Pentium II, 300 MHz-es gép. zárendelés nagymértékben feljavítja • 16 csatornához K6-II/400-ast, Celeron a kimenõ kép minõségét, ezért a 300-as processzort vagy még ennél is minõségért azonban némi sebesség- jobbat tartalmazó gép szükséges. gel kell fizetnünk. A fény-hozzáren- Általános esetben körülbelül 20 csa- delést letiltva a program a vertex torna mind a játékhoz, mind gépünk lighting használatával megpróbálja erõforrásainak a kíméléséhez elegen- szimulálni a hatást, de a minõség dõ. A játékban a Audio menüben nem lesz olyan jó, viszont a sebesség lehetõség nyílik a hangerõ beállítá- javulni fog. sára, a csatornákat azonban futás Csak megjegyzés, hogy az eredeti közben már nem lehet beállítani, leírás szerint néhány grafikus kártya csak azt megelõzõen. alapértelmezettként letiltja a szóban megrajzolásra, ami olyan benyomást • Haladó szintû beállítások forgó szolgáltatást, mivel nem tudja kelt, mintha röntgensugarakkal A haladó szintû beállítások – mint kezelni. Ez alapvetõen a Permedia2 rajzolnánk. Ez a kiválasztódoboz neve is mutatja – csak valóban azok- alapú kártyákra érvényes. Manapság letiltja a vonalrendszert, amire csak nak a felhasználóknak van fenntart- ugyanakkor senki nem használ ilyet. akkor van szükség, ha az OpenGL va, akik tudják, hogy mit és miért csi- Fog: letiltható a köd. A ködtechnika könyvtár hibás. nálnak. Rossz vagy téves beállítások szimulálja a környezet mélységét, és Model FullBrights: letiltható a teljes esetén a program nem fut, lelassul, atmoszférikus hatásokkal kevert ragyogáshatás a modelleken. A teljes illetve bizonyos dolgok, képek, hatá- pixelszínekkel látja el a ködöt. A köd ragyogás módszere szimulálja az izzó sok nem jelennek meg tökéletesen. színe függ attól, hogy milyen távol objektumokat, például a plazmafegy- Az alábbiakban összefoglaljuk, hogy vagyunk tõle. A ködhatásnak a ver csövét. Ez a lehetõség a képle- a letiltható beállítások milyen lehetõ- FOG_COORD_EXT támogatásra van képezésnél idõcsökkenéssel jár – ha ségeket és veszélyeket is tartalmaz- szüksége, amit az OpenGL könyvtár- letiltjuk, szintén sebességnövekedést nak. Minden esetben fontoljuk meg, nak kell nyújtani. Ha ez nem érhetõ kapunk. Számos izzó, fényes modell hogy mit és miért kapcsolunk ki! el vagy nem támogatott, akkor ön- válik láthatóvá a letiltást követõen, Sound: letiltja a digitálishang-kime- mûködõen letiltásra kerül. Itt is letilt- ha a hatás rosszul mûködik és rosz- netet. Megjegyzésként szeretném ható ez a hatás. szul rajzolódnak ki a tárgyak. Álta- megemlíteni, hogy játék során vannak Line Systems: letiltható a vonalrend- lában nincs szükség a modellek ilyen olyan helyek, ahol fontos a hallott szer. Néhány hatás – például torko- jellegû hatásának a letiltására. hang megértése, és természetesen lattûz esetében – több vonallal kerül  A következõkben az „engedélyez- hetõ” lehetõségeket foglalja össze, KAPCSOLÓDÓ CÍMEK ezek olyan beállítások, amelyek pluszlehetõségekkel látják el a prog-  http://www.t3war.com ram futását. Ezek egyes rendsze-  http://www.atari.com reken esetleg galibát is okozhatnak.  http://www.gamespy.com/games/5999.shtml Polygap Fixing: hogyha a Polygap-  http://gamespy.com/interviews/june03/t3wotm/ fixálás engedélyezve van, a játék a  http://www.gamespy.com/e32003/preview/pc/1002504/ réseket a sokszögeken megpróbálja  http://www.gamespydaily.com/news/fullstory.asp?id=5185 hálóvá alakítani, hogy eltûnjenek a sokszögek csúcsain keletkezõ pontat-  http://us.atari.com/press/print.php?id=370 lanságok. Ez a folyamat lelassítja a leképezést. Csak akkor kell bekap-

78 Linuxvilág Játék

csolni ezt a lehetõséget, ha a sokszö- suk is eltérõ lehet. Lehetnek bõvítõ- parancsfájl javított változata. Mirõl is gek találkozásánál látszanak a lyukak. adatok a játékhoz, ilyenek az új van szó? A parancsállomány az eredeti Pixel Doubling for Movies: a filmek többjátékos vagy egyjátékos szintek, shogo fájlon alapul, de kijavítja annak csak 320×240 pixeles méretûek, így esetleg újabb küldetések, játékjaví- hibáit. A gond az, hogy a feltelepített nagyobb felbontású képernyõn tások és további nem hivatalos bõvít- shogo parancsállomány devfs haszná- rosszul láthatók és túl kicsik. Ezen a mények. A kezelés nagyon egyszerû: latával akarja kezelni és olvasni a CD gondon segít a beállítás, ami a a bal oldali ablak az elérhetõ, feltele- tartalmát. Mihelyt ez nem sikerül neki, filmeket az eredeti gyári méretrõl pített bõvítményeket tartalmazza, értelmetlen üzenetet ad vissza: „Tegye mindkét irányban teljes, 640×480 míg (ha az Add gombot használjuk) be a Shogo CD-ROM-ot!” – holott benn felbontású filmmé feszíti ki. a jobb oldalon a játék indításakor van és be is lett fûzve. betöltendõ bõvítmények szerepelnek. Akit bõvebben érdekel a téma, az olvassa • Konzolgomb Mindig ellenõrizni kell, hogy a jelölõ el a /usr/src/linux/Documentation/cdrom/* Fontos megemlíteni, hogy a konzol- négyzetbe ki van-e pipálva, mivel és a /usr/include/linux/cdrom.h, hogy gomb több célból is fontos. Ameny- csak akkor töltõdnek be a bõvítõ REZ megértse a subchannel és a toc kezelését. nyiben egyéni vagy letöltött MOD fájlok a játékba, ha igen. A CD-mellékleten megtalálható a lehetõségeket akarunk használni, azt Fontos, a REZ fájlok egyéni alkönyv- Shogo-demó, a SiN-demó, valamint a a konzolról is megtehetjük. A Choose tárakban találhatók, vagyis ide tele- CD-ken lévõ mpg-fájlok. A demók ki

gombra kattintva megadható, hogy píthetõk fel rendszergazdai jogosult- vannak próbálva, és futtatásuk után © Kiskapu Kft. Minden jog fenntartva milyen gombbal szeretnénk meg- ság birtokában. Minden esetben, ugyanabba a könyvtárba csomagolják ki hívni a játékon belül a konzolt. amikor ilyen REZ fájlokat haszná- a tartalmukat, ahonnan a játékot is A konzol használatával lehet begé- lunk, gyõzõdjünk meg az eredetérõl, indíthatjuk. Így a Hyperion jelenlegi pelni a cheat-kódokat is, ezeket a mivel ezek a fájlok futtatható állomá- teljes linuxos játékkínálata dokumen- CD-mellékleten is megtalálhatjuk. nyok, s elõfordulhat, hogy a betö- tálva és a demók közre lettek adva. • A testreszabó oldal rések melegágyává tesszük a gépün- Kosztadinovszki Norbert Ez az oldal lehetõvé teszi, hogy ket. A Shogót a saját felhasználói egyedi, hozzáadott modulokat tölt- könyvtárunkból futtassuk, így ([email protected]) sünk be a játékba. Ezeket a fájlokat mérsékelhetõ a betörés kockázata. Linux- és játékmániás nevezzük egyszerûen REZ fájloknak. számítógépõrült. A REZ fájlok több hozzáadott értéket, A CD-mellékleten megtalálható egy adatot is tartalmazhatnak, és a típu- parancsállomány, ami a Shogó indító

www.linuxvilag.hu 2003. november 79 Falatka

Hasznos apróságok

Teljes fejlesztéskezelési nehézség nélkül. Az ilyen programok szükséges: rendszer: Gforge segítségével bárki létrehozhat egy libgtk-x11, Megjelent a GForge ( http://gforge.org) miniatûröket tartalmazó indexoldalt, és libgdk-x11, webes együttmûködési programfejlesz- a teljes könyvtárat közvetlenül kiteheti libatk, tési rendszer 3.0-s változata. A Gforge egy webkiszolgálóra. Erre a könyvtárra libgdk_pixbuf, libm, libpangoxft, szolgáltatásai közé tartozik a hibaköve- libpangox, libpango, libgobject, tési rendszer, a CVS változatkezelés, a libgmodule, libdl, libglib, libmysqlclient, webes CVS-felület, illetve az archivált glibc, libXi, libXext, libXft, libX11, libz, libXrender, libfontconfig, libfreetype, libcrypt, libnsl, libexpat.

© Kiskapu Kft. Minden jog fenntartva qballsinventory.sourceforge.net David A. Bandel

sudo Eme kis program segítségével kitünte- tett felhasználóként olyan engedé- lyezett parancsokat futtathatunk más felhasználók nevében, amelyet jogo- sultsági szintünk egyébként nem tenne hivatkozva azután mindenki megtekint- lehetõvé. Ez olyankor válhat hasznossá, heti a fényképeket. ha például csak a rendszergazda Mailman levelezési listák. Ezenkívül a  http://shawley.myip.org/projects/ menthet egy adatbázist, ám azt szeret- 3.0-s változat egy új projektkezelési photogen.php nénk, hogy az egyik munkatárs is rendszert tartalmaz, amely Gantt diag- David A. Bandel naponta meg tudná tenni anélkül, ramok készítésére, nemzetköziesítésre hogy rendszergazdai jogosultságokkal alkalmas, és egyszerûen telepíthetõ. jigl kellene rendelkeznie. Ilyenkor csak A GForge a SourceForge.net mûködését Ez a Perl-parancsfájl túlságosan is egy- engedélyezni kell számára az adott biztosító program rendszeresen kar- szerû. Létrehozol egy könyvtárat, ebbe parancsnak sudóval rendszergazdaként bantartott, szabad forrású fejlesztõ- bemásolod az összes olyan fájlt, amit fel történõ futtatását! eszköze. Futtatásához PostgreSQL, akarsz tenni egy weboldalra, végül a Komáromi Zoltán Apache, OpenSSL és PHP szükséges. könyvtárból lefuttatod a jigl.pl parancs- Don Marti fájlt. A program azonnal elkészíti a Linux Journal 2003. 112, 114. számok miniatûröket, az azokhoz tartozó webla- iBackup pokat, és egyesével végignézheted õket. Ez a mentési segédprogram nem a Különbözõ, könnyen kezelhetõ sab- Komáromi Zoltán rendszerrõl készít biztonsági másolatot, lonok segítik a testreszabást. Elõfelté- ([email protected]) hanem a beállításfájlokról. A mentendõ telei: Perl, ImageMagick, jhead. 23 éves, a BME hallgatója, adatokat egy HTML-fájlban tárolja,  http://xome.net/projects/jigl/ mellette PHP-programozóként amit a tarprogrammal becsomagol, David A. Bandel dolgozik. Kedvenc területe illetve igény szerint tömörít is. Az a multimédia. iBackup azt is lehetõvé teszi, hogy ezt Inventory a fájlt egy másik rendszerre megõrzés Ez a program mindenre képes. Ren- Don Marti céljából feltöltsd. Így könnyen és dezheted, kereshetsz benne, kiteheted, gyorsan elvégezhetõ a fontos adatok behozhatod. Osztályokat és alosztá- ([email protected]) (például a jelszó, a csoport, az árnyék- lyokat hozhatsz létre, az oszlopok típusa A Linux Journal szakmai fájlok, BIND-fájlok stb.) mentése és lehet logikai, egész vagy karakterlánc. szerkesztõje. visszaállítása. Futtatásához BASH, Valójában ez a csinos kis segédprogram tar, gzip, ifconfig, netstat, bármilyen alkalmazásként használható, szabványos Unix-eszközök szükségesek. nemcsak leltárkészítésre, és szigorúan  http://www.linuks.mine.nu/ibackup magánügy, hogy ki mit kezd vele. Két- David A. Bandel David A. Bandel lem, hogy bárki ellenezné, ha például ([email protected]) feladatlistaként vagy címjegyzék gya- Jelenleg Panamában él, PhotoGen nánt használnád. A papíron és a ceru- Linux- és Unix-tanácsadással A PhotoGen is remek, könnyen zán kívül kevés ilyen sokoldalú dolog foglalkozik. Társszerzõje a használható program, amellyel webes van, olyan pedig talán nincs is, ami Que Special Edition: Using fotóalbumot készíthetsz minden ennyire hatékony lenne. Futtatásához Caldera OpenLinux címû könyvnek.

80 Linuxvilág