<<

Beköszöntõ © Kiskapu Kft. Minden jog fenntartva

Ahogy azt ígértük... össze, másrészt pedig lehetõséget is Megváltozunk. Ígérem. Na, nem úgy, biztosítunk egymás megismerésére. ahogy Bajor Imre ígérte tíz éve egy Az új „nyílt” szerkesztés jegyében kabaréban, hogy új életet kezd, de kialakítottunk tehát egy weboldalt mivel a piát szereti, ezért az új életé- ( linuxvilag.hu/szerzoknek), ahol ben is inni fog. Mi inkább azon tulaj- bárki jelentkezhet, aki szívesen írna donságainkat igyekszünk átmenteni, cikket, vagy elmondaná, hogy milyen melyeket olvasóink is a lap értékének cikket látna örömmel az újságban. tartanak. A cikkírók itt további anyagot is találnak a leadandó cikkekkel kap- Az elmúlt idõszakban folytatott piac- csolatban. kutatások és olvasói levelek alapján három fõbb változási cél rajzolódott Reményeink szerint a szeptemberi ki elõttünk. Olvasóink szerint: számtól már egy teljesen új arculattal indul, mindhárom célterületen változ- • A cikkek túl tömörek, nehezen va, olvasóink igényéhez jobban alkal- olvashatóak mazkodva. Mint mindig, most is örömmel várunk bármilyen véle- • Kevés a kezdõknek, próbálkozó ményt, ötletet, kritikát! kedvûeknek szóló cikk A „mostani generáció” utolsó két lap- • Több hazai vonatkozású, olvasmá- számához is kellemes olvasást kívánok! nyos cikkre van igény

A tervek megvitatása közben még egy Szy György gondolat folyamatosan felvetõdött: fõszerkesztõ valahogy jobban be szeretnénk vonni a hazai szakembereket a Linuxvilág szerkesztésébe. Ezzel egyrészt egy érdekesebb, színesebb anyag állhat Hír-lelõ

Kütyüimádóknak Táblájuk még nem volt Titkos biztonság A Nokia újfajta, internet tábla névre Az IBM PC-s üzletágát nemrég átve- Minden adatra kiterjedõ, hardveres keresztelt mobil eszközt mutatott be. võ Lenovo bemutatta az elsõ ThinkPad titkosítást végzõ, hordozható számító- A teljes nevén Nokia 770 Internet Tablet tábla PC-t. Az IBM ThinkVantage meg- gépekbe és külsõ meghajtókba szánt oldásait a terméksorozat egyéb tagja- merevlemezt mutatott be a Seagate. ihoz hasonlóan támogató táblagép pontos jelölése ThinkPad X41 Tablet, alapjául az Centrino platform- jának legújabb, Sonoma kódnevû változata adja. A gépbe alacsony és ultraalacsony feszültségû Intel processzorok és DDR2 RAM kerül, A szintén nemrég megjelent, 2,5”-os készülék internetezésre, elektronikus továbbá természetesen a 802.11 a/b/g Momentus termékcsalád 5400-as tagjai- levelek kezelésére, médiafájlok megte- csatoló sem maradhat el belõle. ra épülõ meghajtó a lemez egy elkülö- kintésére és lejátszására, RSS hírcikkek A 12”-os kijelzõjû gép súlya 1,58 kg nített területén egy titkosító kulcsot olvasására, internetes rádiózásra hasz- lesz, akkumulátoros üzemideje elvi- tárol, ennek alkalmazásával minden nálható. Operációs rendszere a nokiás leg a 8,5 órát is elérheti majd. Operá- a csatolófelületen keresztülhaladó © Kiskapu Kft. Minden jog fenntartva hagyományokkal szakítva Linux alapú, ciós rendszere a Windows XP Tablet adatot automatikusan, a felhasználó kijelzõje 800x480 képpont felbontású, PC Edition 2005 lesz, ára pedig 1899 további beavatkozása nélkül titkosít. a hálózathoz Wi-Fi és Bluetooth össze- dollártól indul. A kulcs megadása nélkül a lemezen köttetésen keresztül képes csatlakozni, tárolt adatokhoz még a meghajtó gép- az adatbevitelt pedig a képernyõn Legközelebb milyen mosóport bõl való kiszerelésével sem lehet hoz- megjelenõ billentyûzettel teszi lehetõ- vásárol? záférni, illetve az operációs rendszer vé. A tábla szoftverét a Nokia rendsze- A VeriFone beágyazott Linux multi- elindítására sincs lehetõség. Az új resen frissíteni tervezi, az elsõ megúju- médiás PIN-táblát mutatott be. meghajtóval elsõsorban az üzleti fel- lást jövõ évre tervezik, amikor IP feletti használókat célozzák meg, hiszen hangtovábbítási és azonnali üzenetkül- a vállalkozásoknak sokszor bizalmas dési képességgel ruházzák majd fel adatokat kell hordozható gépeken a készüléket. A sokoldalúsága ellenére tárolniuk, amelyek viszont erõsen ki inkább szórakoztató haszontalanság- vannak téve az ellopás veszélyének. nak tûnõ tábla Amerikában és Európában Természetesen az adatok titkosítása a harmadik negyedévben jelenik meg, eddig sem volt megoldhatatlan fel- egyelõre ismeretlen áron. adat, ám azt általában szoftveresen  www.nokia.com vagy valamilyen kiegészítõ eszközzel végezték; ez az elsõ példa a titkosítási Van képzeletük szolgáltatás merevlemezes meghajtó- Az AMD véglegesítette és nyilvánosan A készülék mostantól õsinek számító ba építésére. Ha a megoldás sikeres- is elérhetõvé tette Pacifica virtualizációs példányai mindannyiunk számára nek bizonyul, akkor elképzelhetõ, megoldásának leírását. A célközönsé- ismerõsek az üzletekbõl: kártyás hogy hamarosan a Seagate egyéb get elsõsorban a programozók alkot- vásárlásnál ezt a kisméretû billen- termékeiben is megjelenik. ják, akik így talán kellõ idõt kapnak tyûzetet nyomják a kezünkbe,  www.seagate.com arra, hogy alkalmazásaikat képessé hogy írjuk be a PIN-kódunkat, tegyék az elõször 2006 elsõ félévében majd „nyomjuk meg a zöldet”. Csábító hangok megjelenõ AMD x86 processzorok által Az MX870 a kor színvonalának Kifejezetten a Windows-felhasználók támogatott technológia nyújtotta lehe- megfelelõen támogatja a rádiós azo- elcsábítására állította össze a Xandros tõségek kihasználására. A hardveres nosítókat, az intelligens kártyákat a fõként otthoni, egyszerûbb irodai virtualizáció az AMD ígéretei szerint és a biometrikus azonosítást, színes feladatok ellátására szánt SurfSide a kiszolgálókba és az ügyfélgépekbe érintõképernyõje pedig alkalmas Linuxot. A terjesztés tartalmaz vírus- szánt lapkák esetében egyaránt elérhe- arra, hogy a fizetéssel bíbelõdõ vá- keresõt és tûzfalvarázslót, lehet vele tõ lesz, bár használatához nem lesz sárlónak multimédiás hirdetéseket dokumentumokat szerkeszteni, DVD-t elég új processzort vásárolni, új alap- jelenítsen meg. Az élmény fokozását írni, fájlokat titkosítani és így tovább. lapra és lapkakészletre is szükség lesz. egy 5,7”-es, 240 x 320 képpontos, Különlegessége, hogy nemcsak tar- A fejlesztésnek további lendületet ad- 65000 szín megjelenítésére képes talmazza a Skype internettelefon- hat, hogy Vanderpool néven, ugyancsak kijelzõ, egy 200 MHz-es ARM pro- alkalmazást, de a dobozos változathoz jövõre az Intel is hasonló képességek- cesszor, valamint 16 MB RAM és mellékelnek egy USB-s Plantronics fej- kel fogja felruházni Itanium és Xeon 32-128 MB Flash memória bizto- beszélõt, valamint egy Skypeout kupont processzorait, és a két megoldás nagy- sítja – mindezekhez kiegészítõ is, amivel a felhasználó 120 percnyi mértékben hasonlítani fog egymásra. jelleggel beépített, térhatású hang- beszélgetést folytathat a világ bármely  http://www.xbitlabs.com/news/ szórókat is lehet kérni. telefonszámára. A Xandros SurfSide video/display/20050519225638.html  www.verifone.com Linux ára öt cent híján 100 dollár.

6 Linuxvilág Hír-lelõ

Nyíltan, szépen újonnan bemutatott címtárkiszolgáló Az OASIS (Organization for the és a hamarosan megjelenõ tanúsít- Advancement of Structured Information ványkezelõ rendszer is, a felhasználók Standards, szervezet a strukturált infor- mindkét programot GPL hatálya alatt mációs szabványok fejlesztéséért) bejelen- érhetik majd el. Ide kapcsolódik a Red tette, hogy szabványként fogadta el Hat Software Patent Commons kezdemé- az Open Document Format for Office nyezése is, melynek mintájául a grafi- Applications, röviden OpenDocument kákat, hangokat, szövegeket összefogó 1.0-s változatát – ezt az XML alapú Creative Commons gyûjtemény szolgált, formátumot fogja alkalmazni az és melynek célja segítséget nyújtani OpenOffice.org irodai csomag 2.0-s, a szoftverszabadalmak használati joga- hamarosan megjelenõ változata is. inak kezeléséhez, átadásához. A gyûj- Az új formátum, bár az OpenOffice 1.x temény életre hívása talán stratégiai formátumokra épül, azokkal nem húzás is, hiszen a Red Hat a jelenlegi kompatibilis, ugyanakkor tökéletesen – szerintük a nyílt forrású fejlesztéseket nyílt, bármilyen irodai programcso- gátló – szabadalmi és szerzõi jogi mag által használható, szövegek, táblá- szabályok megváltoztatása mögé állt. zatok, grafikonok és grafikai anyagok © Kiskapu Kft. Minden jog fenntartva tárolására egyaránt alkalmas. Érdemes Oracle? Mi az nekünk! megjegyezni, hogy a Office Az EnterpriseDB Corporation kiadta következõ változata is XML alapú for- EnterpriseDB 2005 adatbázis-kiszolgá- mátumot fog használni, ám az ettõl el- lójának béta változatát. A szabadon ki- térõ és részben zárt lesz, használatáért próbálható csomag nyílt forrású prog- jogdíjat kell majd fizetni. Az új formá- ramokra épül, konkrétabban az adat- tum mögött máris felsorakozott többek bázis alapját a PostgreSQL adja, ennek közt a Sun, az IBM és a Red Hat. továbbfejlesztésével a cég állítólag A Siemens bejelentette, hogy eladja nagyvállalati szintû, az Oracle adatbá- – egyébként masszívan veszteséges – zisokkal versenyképes, ám azoknál mobiltelefon-üzletágát a tajvani BenQ- olcsóbb terméket tudott elõállítani. nak, miközben 2,5 százalékos részese- Az Oracle-nek vetett kesztyû – bár dést is szerez benne. Az üzlet révén a két cég viszonyát leginkább a bolha a Siemens megszabadul a pénznyelõ és az elefánt párharcához hasonlíthat- ágazattól, a viszonylag kis, mindössze nánk – nem merül ki az ígérgetésben, három éve létezõ BenQ viszont a világ az EDB2005 támogatja az Oracle alapo- legnagyobb mobiltelefon-eladói közé kon fejlesztett alkalmazásokat, illetve nõhet fel. A BenQ a megegyezés szerint az Oracle-féle SQL-szintaxist, adattípu- még 5 évig használhatja a telefonokon sokat, ravaszokat és natív tárolt eljárá- a Siemens nevet, illetve bizonyos sport- sokat, miközben általános körülmé- támogatói szerzõdéseket is átvesz. nyek között gyorsabbnak ígérkezik Az inkább az olcsó termékek szegmen- a hasonló nyílt forrású termékeknél. sében terjeszkedõ BenQ tempós fejlõ- A különféle terjesztésekhez jelenleg dést vár a mobiltelefonok területén, az szabadon letölthetõ csomagban az elsõ BenQ-Siemens készülékek már ez év adatbázis-kezelõ motor mellett egy végén megjelenhetnek az üzletekben. grafikus felhasználói és rendszergaz- dai konzol, továbbá JDBC, ODBC, Önállósodó Fedora .NET, ESQL/C++, PHP, Perl és Python A Red Hat önálló, független alapítványi csatlakozók találhatók. A cég idén feladattá tette a Fedora terjesztés gon- nyáron végleges változatban is, egy- dozását. Bár ez egyfajta távolodást je- elõre ismeretlen áron megjelenõ rend- lent a cég részérõl, szerencsére arról szerével az ingyenes, de kis tudású és szó sincs, hogy a kalaposok levennék a komoly tudású, de drága termékek kezüket az ingyenes operációs rend- közé szeretne beékelõdni a piacon. szerrõl, a lépés sokkal inkább a kódok  www.enterprisedb.com szerzõi és használati jogainak rendezé- sére irányuló lépésnek tûnik. A Red Hat Medgyesi Zoltán terjesztések a Fedora tervezet keretein ([email protected]) belül továbbra is elérhetõk lesznek, A Linuxvilág hírszerkesztõje. ahogy az alapítvány a cég pénzügyi Szabadidejét legszívesebben és mûszaki segítségére is számíthat. a barátnõjével tölti, szeret Ugyancsak átadásra kerül például az autózni és bográcsban fõzni.

www.linuxvilag.hu 2005. július 7 Láttuk-hallottuk

Mi újság a rendszermag fejlesztése körül?

A iswraid illesztõprogram jó úton halad afelé, hogy hozzájárul ahhoz, hogy a Linux kifinomult, kiváló, a 2.4-es fa részévé váljon, annak ellenére, hogy mindannyiuk igényeinek megfelelõ operációs újabb szolgáltatásokkal bõvít egy üzembiztos soro- rendszerré váljon. Pontosan ezek az optimalizálá- zatú rendszermagot. Marcelo Tosatti végül Jeff sok adják a Linux színe-javát, és megérdemlik, Garzik mellé állt e kérdésben, dacolva számos más hogy az új illesztõprogramok és a különleges fejlesztõ ellenvéleményével. Jeff úgy érvelt, hogy az fájlrendszerek mellett említsük õket. iswraid nélkül a 2.4-es használói nem tudják majd Az out-of-memory process killer (OOM Killer, beüzemelni új hardvereszközeiket, míg az ellenzõk „memórián kívüli folyamatok gyilkosa”) továbbra is (köztük Arjan van de Ven, Bartlomiej Zolnierkiewicz az egyik legkeményebb dió a Linux fejlesztésében. és Christoph Hellwig) rámutattak, hogy pontosan Mauricio Lin nemrég kiadott egy felhasználói térben ugyanez történik minden más hardverrel is, aminek futó változatot, amely állítása szerint ugyanolyan jól még nem oldódott meg a támogatása. A jelenlegi mûködik, mint a rendszermag térben futó. A kérdés helyzet szerint Jeff feladata a kérdés rendezése, azonban sajnos nem ilyen egyszerû. A felhasználói vagyis az iswraid szerepelni fog a 2.4 jövõbeli térben futó eszköz ugyanis legalább annyira esélyes

© Kiskapu Kft. Minden jog fenntartva kiadásaiban. a memórián kívüli állapotba kerülésre, mint az Számos új illesztõprogram látott napvilágot. Vojtech összes többi program. Ugyanakkor a rendszermag Pavlik például készített egy a soros Elo érintõképer- oldali OOM Killert sokkal nehezebb az egyes rend- nyõk támogatására alkalmas illesztõprogramot, szerek egyedi jellemzõinek megfelelõen hangolni. amely az összes soros Elo-t ismeri. A rendszermag- Mauricio egyfajta kompromisszumot kötött azzal, nak ez a területe egyelõre még nem bontakozott ki, hogy az osztályozó algoritmust a felhasználói térbe ugyanis, bár az érintõképernyõk támogatására eddig helyezte, ahol könnyebben lehet módosítani a beállí- is láthattunk példákat, azok inkább belsõ, vállalati tásait, magát a gyilkost azonban a rendszermagban tervezetek keretében valósultak meg. Új valós idejû hagyta, ahol védettebb az éppen általa vadászott óra illesztõprogram készült az ST M41T00 I2C RTC memórián kívüliségtõl. Bár az egész problémát lapkához; Mark A. Greer szerzeménye gyakorlatilag rendkívül nehéz megfelelõen kezelni, az OOM- készen áll arra, hogy a 2.6-os fa részévé váljon. kezelõ eszközök ugyanis mindig bonyolultak, Mark a PPC és MIPS rendszerekben található Mauricio megoldása a vezetõ fejlesztõk között is Marvell gazdahíd I2C vezérlõjéhez is készített egy támogatásra lelt, például Marcelo Tosatti részérõl. illesztõprogramot. Mauricio a témához kapcsolódó területeket is körbe- Willy Tarreau – Marcelo Tosatti áldásával – új gyors- járta, nemrég például olyan foltot készített, amely- javítási ágat indított a 2.4-es fán belül. A -hf ág nek segítségével a felhasználók a /proc könyvtárban ugyanazokat a javításokat fogja tartalmazni, mint figyelemmel követhetik a folyamatok fizikai memó- a 2.4-es, ám rövidebb megjelenési idõkkel készül. riahasználatát. Mondani sem kell, ennek kapcsán is A -hf ág az új illesztõprogramokat és a meglévõ voltak viták, ám Andrew Morton támogatja a dolgot, illesztõprogramok frissítéseit nem fogja tartalmazni, és mások is felvetettek olyan alkalmazási lehetõsé- kizárólag biztonsági és a kód letisztulását szolgáló geket, amelyek a gyakorlatban is hasznossá teszik javításokat foglal majd magába. Magától értetõdõ a szolgáltatást. kérdés, hogy a -hf ág elindítása elõtt maga Marcelo Jeff Garzik nemrég felhívást tett közzé, mely szerint is megfontolhatta volna a kiadások felgyorsítását. több félbehagyott, hibás illesztõprogramot kell A helyzet az, hogy a kialakult megoldás összhang- hamarosan eltávolítani a 2.6-os fából. Az iphase ban volt Marcelo azon szándékával, hogy a 2.4-es illesztõprogram például már évek óta gazdátlan, rendszermagot inkább az üzembiztosság irányába mára már a lefordítása is lehetetlenné vált. terelje, amivel viszont semmiféle kapkodás nem A xircom_tulip_cb illesztõprogramot senki sem tartja egyeztethetõ össze. karban, ráadásul nem ismeri az összes 32 bites Christoph Lameter scrubd névvel készített egy Xircom kártyát. A xircom_cb illesztõprogram ellen- lapnullázó démont, illetve összeállította a haszná- ben igen, vagyis kiváló helyettesítõt jelentene. latához szükséges rendszermagbeli környezetet is. A eepro100 illesztõprogram szintén magára maradt, Célja az, hogy a lehetõ legjobb teljesítményt le- szerepét az e100 veszi át. Szerencsére azoknak hessen kihozni a laphibakezelõbõl, segítségével a felhasználóknak sem kell izgatniuk magukat, akik a memórialapok nullázása még használatba véte- az e100-at valamiért nem tudják használni, ugyanis lük elõtt megtörténik, nemcsak akkor, amikor a felmerült hibákat még az eepro100 eltávolítása egy folyamat kéri õket. Szép dolog még az ilyen elõtt el fogják hárítani. aprónak tûnõ fejlesztésekre is figyelmet fordítani. Nem egy új illesztõprogramról van szó, semmilyen Zack Brown API módosítását nem igényli, sõt, a külvilág számára gyakorlatilag észrevehetetlen, mégis Linux Journal 2005. június, 134. szám

8 Linuxvilág Láttuk-hallottuk

Új termékek

SUSE Linux Professional 9.3 videófelvevõ készülékekhez A Novell kiadta a SUSE Linux lehet alkalmazásokat készíteni. Professional 9.3-at, mely teljes A linuxos fejlesztõi készlet támo- értékû operációs rendszert, gatja a Video for Linux 2 (V4L2) több mint háromezer nyílt forrá- és az Advanced Linux Sound sú csomagot, több száz nyílt Architecture (ALSA) elõírásait. forrású alkalmazást és termelé- A ma már elavultnak számító kenységnövelõ programokat Open Sound System (OSS) alapú foglal magába, illetve támogatja sa és felügyelete központilag alkalmazások támogatását az az otthoni hálózatokhoz szánt történik, és minden feladat meg- ALSA által biztosított OSS együtt- szolgáltatásokat is. Az újoncok jelenítése és futtatása egy köz- mûködési réteg révén teszi lehe- és a régi Linux-felhasználók ponti keretrendszerben folyik. tõvé. Az új illesztõprogram, mely számára egyaránt jól használható A támogatott ügyfélkapcsolatok immár 2.6-os rendszermagot igé- SUSE Pro 9.3 számos újdonsá- között szerepel az XDMCP, teljes nyel, nyílt és zárt alkalmazások-

got tartalmaz. Az operációs képernyõs és/vagy ablakos mód- ban egyaránt felhasználható kód- © Kiskapu Kft. Minden jog fenntartva rendszer a 2.6.11-es rendszer- ban; a biztonságos és közvetlen részleteket tartalmaz, ezek alapján magra épül, mely köré KDE X; a biztonságos X bejelentke- a fejlesztõk remélhetõleg 3.4-et és GNOME 2.10-et, zés, teljes képernyõs és/vagy könnyebben el tudnak indulni Firefox 1.0-t, OpenOffice.org ablakos módban; az RDP, szin- munkájukkal. 2.0-t, F-Spot fényképszervezõt, tén teljes képernyõs és/vagy www.plextor.com The GIMP 2.2-t, Mono 1.1.4-et, ablakos módban; az xRDP, ARCOS 4.0 beépített Ericom modullal, KDevelop 3.2-t, Eclipse 3.0.1-et A Plus Three, LP kiadta az mely lehetõvé teszi az észre- és továbbfejlesztett VoIP- ARCOS 4.0-t – az alkalmazás vétlen együttmûködést a WTS támogatást tartalmazó program- Linuxra, Apache-ra, MySQL-re 2000/2003-mal, illetve ingyenes csomagot állítottak össze. és Perl-re épül, célközönségét RemoteView terminálkiszolgáló- A SUSE Pro 9.3 a Wi-Fi kap- az adománygyûjtõ szervezetek ügynököt biztosít; az ICA, kiszol- csolatok és a Bluetooth készü- adják. Az ARCOS alkalmas a tá- gáló- és alkalmazásböngészõvel; lékek magasabb szintû támo- mogatókkal kiépített kapcsolatok az Ericom PowerTerm Emulator gatásával, a zsebtitkárokkal és kezelésére, az elektronikus leve- csomag; a NoMachine NX telefonokkal végzett szinkronizá- lek és a kapcsolattartások köve- Client, mely az NX Server 1.3 és lás lehetõvé tételével, az iPod tésére, az eseménykezelésre, 1.4 támogatására képes; illetve készülékek támogatásával, a csoportos kapcsolattartásra, a natív Tarantella. A támoga- beépített tûzfallal, levélszemét- illetve internetes „tevékenység- tott Linux-terjesztések körét szûrõvel és víruskeresõvel, központ” fenntartására. Új szol- a MandrakeLinux, a Fedora, továbbá Novell Evolution 2.0-val gáltatás a továbbfejlesztett valós a Novell/SUSE és a Xandros és Kontact 3.4-el segíti a fel- idejû jelentéskészítés az adatbá- alkotja. használókat mobilitásuk meg- zisok alapján, a nagyvállalati www.smartflextech.com õrzésében. A 9.3-mas kiadás szintû biztonsági mentés, illetve ezek mellett tartalmazza a XEN ConvertX SDK a nagyobb és gyorsabb felhasz- virtualizációs környezetet, a kere- A Plextor Corporation bejelentette náló-adatbázis. Az ARCOS elekt- sésekben könnyen használható egy szabadon hozzáférhetõ, ronikus hírlevél moduljával a fel- motorokkal segíti a felhasználó- a ConvertX videórögzítõ eszközök- használók számtalan különbözõ, kat, illetve egyaránt támogatja az adatbázisban tárolt szempont az AMD Athlon 64-et és az szerint állíthatják össze a e-mail Intel Extended Memory 64 címlistákat. A webes közzétételi Technology-t. modul testreszabható támogatói www.novell.com oldalak létrehozását és „mondd OPTion el a barátodnak” oldalak létreho- Az OPTion egy képzetes vékony zását is lehetõvé teszi. Emellett ügyfél linuxos munkaállomások- az e-mail és a webes közzétételi hoz. GNOME és KDE alatt egy- höz készült linuxos szoftverfej- modulokat összeépítették, így aránt használható, egyetlen al- lesztõ készlet elérhetõségét. a felhasználók óránként akár kalmazáson keresztül az összes A készlet segítségével az USB 2.0 kétmillió üzenet feldolgozását ismertebb ingyenes vagy keres- felületre csatlakozó, hardveres is elvégezhetik. kedelmi terminálkiszolgáló kör- MPEG-1, MPEG-2, MPEG-4 és www.plusthree.com nyezet elérését lehetõvé teszi. Motion JPEG tömörítésre ké- Linux Journal 2005. 134. szám Minden ügyfélkapcsolat beállítá- pes Plextor ConvertX személyi

www.linuxvilag.hu 2005. július 9 Láttuk-hallottuk

A hónap szakmai tanácsai

Nagyméretû meghajtók? A második csoportba a zárt fejlesztések tartoz- Red Hat 9.0, Fedora 1 és Debian 3.0r4 rendszereket nak, ezeknél egyedi illesztõprogramok tartják használok. Segítséget kértem az Inteltõl a 160 GB-os a kapcsolatot a távoli lapkakészlettel. Itt már merevlemezek használatával kapcsolatban, de õk azt bajosabb a hordozhatóság, hiszen a gyártók válaszolták, hogy a lehetõségeket az operációs rend- jellemzõen csak Windows alá készítik el az szer határolja be. Utána a Windows 2000-re és illesztõprogramokat, amelyek nélkül persze a Windows XP-re utaltak, ezért arra gondoltam, talán nem lehet adatkapcsolatot létesíteni az eszközzel. a BIOS is szerephez juthat. Mit gondoltok a témáról, Szerencsére ezekbõl egyre kevesebb van, bár és vajon hol találhatnék további anyagokat róla? sajnos az ilyen megoldások olcsóbbak, mint A Linux Journal Georg Robertson a virtuális kapukat létrehozó lapkakészletek,  honlapján számtalan [email protected] ezért teljes eltûnésük sem várható. A legjobb gond megoldásához az, ha a hírcsoportok, fórumok és egyéb források találhattok további A gép BIOS-a valóban korlátozza, korlátozhatja segítségével tájékozódsz, utánaolvasol, hogy má- a merevlemezek méretét. A jó öreg DOS Int 13 eljá- soknál mi mûködik és mi nem, és elkerülöd az segítséget. A Sunsite rása nagyjából 8 GB-ban szabta meg a meghajtók ilyen termékeket. tüköroldalait, a gyakori maximális kapacitását, míg a korszerû BIOS-ok és Chad Robinson  kérdéseket és az egyéb merevlemezek képesek a 32 bites szektorcímzésre, [email protected] útmutatásokat a amivel több mint 2 TB az elméleti határ – ez persze www.linuxjournal.com új kihívásokat jelent a szoftverek számára. Mind- Számtalan GPRS telefon használható Linux alatt; emellett az operációs rendszer lemez-illesztõ- a következõ webhelyeken rengeteg hasznos infor- honlapon olvashatjátok programjai, rendszertöltõje, fájlrendszere és egyéb mációt találsz a témával kapcsolatban: el. A rovatban közzétett szolgáltatásai – például szoftveres RAID – szintén válaszokat Linux-szak- befolyásolhatják a lemezmeghajtók vagy meghajtó- kotinetti.suomi.net/mcfrisk/linux_gprs.html, értõk kis csapata készí- csoportok kihasználható kapacitását. users.tkk.fi/~kehannin/bluetooth/bluetooth.html és Felipe Barousse Boué markus.wernig.net/en/it/usb-serial-handy-ppp.phtml. tette el. További kérdé-  seiteket szívesen fogad- [email protected] Javaslom, hogy a telefon és a Linuxot futtató gép ják (angol nyelven) a Én sokszor dolgozom furcsán formázott, általában közötti kapcsolat létrehozását Bluetoothon keresztül  www.linuxjournal.com/ windowsos meghajtókkal; szerencsére a rendszer- is próbáld meg – természetesen ehhez megfelelõ lj-issues/techsup.html magnak kézzel is meg lehet adni, hogy mit kezdjen csatoló és Bluetooth-képes telefon kell. címen, ahol csak egy velük. A témakörhöz készült egy kiváló útmutató, Felipe Barousse Boué  kérdõívet kell kitöltene- javaslom, hogy kezdésként ezt tanulmányozd át: [email protected] www.tldp.org/HOWTO/Large-Disk-HOWTO.html. tek, de a [email protected] Chad Robinson A Tuxmobil.org webhelyen szerepel egy lista  címre levelet is írhattok. [email protected] a mûködõképesnek bizonyult összeállításokról, illet- A levél tárgyában ve útmutatást is találsz az egyes telefonmodellek szerepeljen a „BTS” Mobiltelefon használata USB kábelen keresztül? használatához. Don Marti kulcsszó. Több GPRS mobilt is tudtam már használni, köztük  [email protected] Motorola V66-ot és Timeportot, de csak soros kábe- len keresztül. A legújabb GPRS mobilok azonban már csak USB-s adatkábellel rendelkeznek. Próbál- Hibajelzés a MySQL ügyféltõl tam az egyiket Linux alatt használni, de mindhiába, A Fedora Core 3 grafikus MySQL ügyfélprogramját a számítógép nem találta meg a modemet. Tudtok próbálom használni, de állandóan összeomlik, valamit javasolni? Vajon hol találok megfelelõ a következõ üzenettel: illesztõprogramokat?  [email protected] [anupam@localhost mysqlgui-1.7.5-1-linux- static]$ ./mysqlgui Ezek az eszközök szinte mindig sorosak, csak tartal- mysqlgui: dynamic-link.h:57: maznak egy az USB felületet biztosító USB-soros át- elf_get_dynamic_info: alakító lapkát. Az átalakítás kétféle módon történhet. Assertion `! “bad dynamic tag”’ failed. Az egyik megoldásnál, ilyen például az FTDI lapka- Aborted készlet, egy virtuális soros kapu jön létre az USB fe- lületen keresztül. Ezeket a termékeket már támogat- Vajon mi a baj? ja a Linux, de ha mégse, akkor csupán idõ kérdése, Anupam De  hogy a dolog rendezõdjön. [email protected] © Kiskapu Kft. Minden jog fenntartva

10 Linuxvilág Láttuk-hallottuk

«

A mysqlguit binárisan töltötted le, vagy szöveges www.linksys.com/support/support.asp?spid=17 vagy ASCII módban? Ha ugyanis szöveges vagy ASCII módban töltötted le, akkor valószínûleg meg- Ha ezzel nem jutsz elõbbre, esetleg próbáld meg- sérült a fájl. A félig statikus bináris fájl helyett pró- szerezni egy jól mûködõ, azonos méretû lemezt tar- báld meg a statikusan fordított változatot letölteni. talmazó GigaDrive merevlemezét, majd szereld be Így a függõségek túlnyomó részével nem kell foglal- mindkét meghajtót egy linuxos gépbe. A mûködõ koznod, ugyanis a – valamivel nagyobb – futtatható meghajtó legyen a második IDE csatoló mester fájl minden szükség elemet tartalmaz. meghajtója, a nem mûködõ pedig a szolga; majd Felipe Barousse Boué add ki a következõ parancsot:  [email protected] dd if=/dev/hdc of=/dev/hdd Soros kapuk IRQ-inak megadása Don Marti  [email protected] Win4Lin-t futtatok SUSE 9.2 alatt, és keményen küz- dök a 2-es COM kapu IRQ-jának megváltoztatásával. © Kiskapu Kft. Minden jog fenntartva A Windowsra egy energiafelügyeleti program miatt Kettõs rendszerindítású gép mentése van szükségem, ami külsõ hívásokkal ellenõrzi több Jelenleg Microsoft Windows XP Professional operá- épületbéli rendszer állapotát is. A Linux 10-es IRQ-t ciós rendszert használok, de ha sikerült megismer- állított be, de 4-nek kellene lennie. Meg tudjátok kednem a használatával és felügyeletével, szeretnék mondani, hogyan változtathatom meg az IRQ-t? áttérni Linuxra. Jelenleg a System Works 2004-ben John Langston található Norton Ghostot használom mentésre.  [email protected] Feltelepítettem a Fedora Core 1-et, ugyanis ez volt Az IRQ-t a BIOS beállításai között kell megváltoztat- az általam megvásárolt könyvhöz mellékelve. A tele- nod. Ha nem sikerül, akkor használd a linuxos pítés gond nélkül lezajlott, amit kaptam, az tetszett. setserial segédprogramot. Csakhogy, amikor a Ghostot akarom használni, és Greg Kroah-Hartman  ezért visszaváltok Windowsra, a Ghost a következõ [email protected] hibaüzenetet adja:

A segédprogram kapcsolóit a man setserial pa- Biztonsági mentési hiba. Nincs hely az MBR-ben. ranccsal tekintheted át. Ne feledd, ha a fizikai soros kapuk fix IRQ-val és/vagy memóriacímmel rendel- Gondoltam, hagyom a Nortont, majd Linux alól el- keznek, akkor a setserial használatakor és/vagy más végzem a mentéseket – de vajon melyik programot eszközök beállításainak módosításakor ütközéseket használjam? Ti mit ajánlotok? okozhatsz. Lev Ranara Felipe Barousse Boué  [email protected]  [email protected] Linux alatt általában egyszerû a mentések elvégzé- Mûködésképtelen GigaDrive se. A Windowszal ellentétben nincsenek különleges Nemrég vettem egy Linksys GigaDrive-ot az eBayen. rendszeradatok (mint például a rendszerleíró adatbá- A készülék látszólag mûködik, legalábbis bekapcsol, zis), amelyeket hagyományos eszközökkel nem le- de az alkalmazások egyikét sem tudom elérni vagy het menteni. Egy teljes mentés sok esetben egy futtatni. Arra gondoltam, talán megformázták vagy egyszerû fájlmásolással letudható, hacsak nem fut- kicserélték a meghajtót, ezért újra kellene telepíteni tatsz adatbázis-kiszolgálót. Ha mégis, akkor a men- a linuxos rendszert és az alkalmazásokat. Tudtok vala- tés idejére azt le kell állítanod. milyen tanácsot adni a mûvelet elvégzéséhez, azon túl, hogy küldjem vissza a Linksysnek? Van ugyan A+ Összetettebb megoldásokból is van bõven, ezekkel vizsgám, de linuxos tapasztalatom nem nagyon. felügyelt, katalógusszerû mentéseket lehet végezni, Talán, ha sikerülne szereznem egy telepítõ CD-le- illetve az egyes fájlok önálló visszaállítására is bizto- mezt, akkor életet tudnék lehelni a gépbe, nem? sítanak lehetõséget. Egy részük ingyenes (mint pél- Egyelõre a CD beszerzését sem tudom, hol kezdjem. dául az Amanda és a Bacula), másokat hagyomá- Van valami ötletetek vagy javaslatotok? nyosan windowsos mentési programokat készítõ Randy Warner,  [email protected] cégek kínálnak (VERITAS, CA stb.), megint másokat pedig kifejezetten linuxos megoldásokat fejlesztõ A Linksys webhelyén van egy oldal, ami ismerteti cégektõl (mint például a BRU ) vásárolhatsz meg. a GigaDrive belsõ programjának feltöltését: Ha most Ghostot használsz, akkor vélhetõen nem

www.linuxvilag.hu 2005. július 11 Láttuk-hallottuk

«

fájl alapú mentéseket készítesz. A legegyszerûbb 05/3/16@14:11:14: FAIL: tftp address  megoldás talán egy tömörített tar archívum létreho- from=153.90.196.30 zása lenne. A teljes rendszer visszaállításához ekkor 05/3/16@14:11:14: START: tftp pid=20184  elég lenne megadni a lemez felosztását, megfor- from=153.90.196.30 mázni a meghajtót, kibontani az archívumot majd 05/3/16@14:11:14: EXIT: tftp pid=20184  telepíteni a rendszertöltõt. duration=0(sec)

Ha helyes a gondolatmenetem, akkor talán kezdd A kiszolgálón a következõket végeztem el. Létrehoz- a tar megismerésével; majd kiderül, hogy megfelel- tam egy tftp felhasználót, a kezdõkönyvtára e az igényeidnek. A… a /tftpboot lett, majd lefuttattam a /sbin/nologint. A /etc/hosts.allow fájlhoz hozzáadtam az tar -jlcvf /tmp/mentes.tgz /bin /boot in.tftpd:ALL bejegyzést. Létrehoztam a /tftpboot /dev /etc \ könyvtárat, és megadtam hozzá a megfelelõ enge- délyeket és tulajdonosi beállításokat. Létrehoztam

© Kiskapu Kft. Minden jog fenntartva parancs például a legtöbb esetben megfelelõ. a /etc/xinetd.d/tftp fájlt a következõ tartalommal: Kiadása után a létrejövõ /tmp/mentes.tgz fájlt egyszerûen másold CD-lemezre, szalagra vagy service tftp egy fájlkiszolgálóra. Ha gondolod, a tar állományt { közvetlenül a szalagon is létrehozhatod. disable = no  Chad Robinson, [email protected] socket_type = dgram protocol = udp Tapasztalataim szerint a linuxos világban a legjobb wait = yes megoldás mentések készítésére a jó öreg tar pa- user = root rancs használata. Szóba jöhetnek még más tömörí- server = /usr/sbin/in.tftpd tõprogramok is, mint a zip és a bzip; az egyedi igé- server_args = -s /tftpboot -u tftp nyeimre pedig írtam néhány parancsfájlt. Megbízha- per_source = 11 tó, hordozható, egyszerû és ingyenes – mondhatni, cps = 100 2 a szabad és anyagiak terén tudatos felhasználó vá- flags = IPv4 lasztása. A Linux alatt végzett biztonsági mentések #only_from = 153.90.196.30 témakörében mindent megtalálsz a www.linux- } backup.net webhelyen. A Unix Backup and Recovery címû könyv szintén ezzel a témával foglal- Az only_from sort megjegyzésbe tenni és onnan ki- kozik, a www.linuxjournal.com/article/3839 címen venni is próbáltam. Ellenõriztem, hogy a tûzfal enge- rövid áttekintést is találsz róla. délyezi-e a 69-es UDP- és TCP-kapu használatát. A /etc/xinetd.conf tartalma helyes, a chkconfig-gel Mivel az FC1 mára elavulttá vált, próbálj FC3-at ellenõriztem, a tfptd valóban fut. A netstat szerint telepíteni. Az FCx terjesztések számtalan tetszetõs a 69-es kapu elérhetõ. Az in.tftpd-t önálló kiszolgáló- megoldást tartalmaznak, ezek közül például a kat- ként is megpróbáltam futtatni (server_args = -l). tints és húzd módban végezhetõ CD-írás mentési célokra is alkalmazható. A dologgal már napok óta szenvedek, de nem sike- Felipe Barousse Boué rül egyrõl a kettõre jutnom. A Linux világában még  [email protected] viszonylag új vagyok, megkértem néhány tapasztal- tabb ismerõsömet, hogy nézzék meg a rendszert, Az ügyfél csatlakozik, az átvitel mégis sikertelen de hiába. Az interneten is órákat kutattam már, de Egy TFTP-kiszolgálót próbálok üzembe helyezni, de nem sikerült rájönnöm, mi a megoldás. Remélem, nem járok szerencsével. A helyzet röviden a követ- ti végre meg tudjátok mondani, merre induljak el. kezõ. Fedora Core 3-at futtatok egy PIII-as gépen. Todd Trotter, [email protected] Telepítettem az rpmfind.net oldalon talált legújabb tftpd-t, majd megadtam a – gondolom – megfelelõ Úgy tûnik, majdnem mindent jól csináltál – de csak beállításokat az xinetd/in.tfptd fájlban. Egy másik majdnem. Elõször is, a /etc/xinetd.d/tftp fájlban linuxos gép tftp-ügyfelével ugyan sikerül csatlakoz- a felhasználót írd át nobody-ra, egyébként az in.tftpd nom a kiszolgálóhoz, ám az olvasási kérés már meg- démon rootként fog futni, ami nem biztonságos. válaszolatlan marad. Az ügyfél többször is próbálko- Ezután ellenõrizd, hogy a zik, majd idõtúllépést jelez. A /var/log/xinetd fájlban minden az ügyfél által elküldött olvasási kérés hatá- tftp 69/tcp sára a következõ bejegyzések jelennek meg: tftp 69/udp

12 Linuxvilág Láttuk-hallottuk

«

sorok nincsenek-e megjegyzésbe téve a /etc/services www.linuxjournal.com/article/6679 fájlban. Javaslom, hogy a /etc/hosts.deny fájlt is nézd át, nincsenek-e letiltva az in.tftpd démonnak intézett Don Marti kérések, esetleg az összes szolgáltatás vagy adott  [email protected] IP-cím (ügyfélgép) kérései. A futási szint módosítása A tesztelés idejére – de kizárólag ekkor – ki is üríthe- A 2005. májusi szám szakmai tanácsaiban, ted a fájlt, indítsd újra az xinetd-t (service xinetd a „Régi Red Hat” címû részben Timothy Hamlin reload), majd próbálkozz újra. Szintén a tesztelés a /etc/inittab bejegyzésének módosítását javasolja, idõtartamára megpróbálkozhatsz a tûzfalad (servi- a következõrõl ce iptables stop) leállításával. A próbálgatás során elõször a helyi mûködést kell elérni, vagyis x:5:respawn:/etc/X11/prefdm -nodaemon a tftp localhost parancs használhatóságát, a távoli elérés csak ez után következhet. Remélem,

erre: © Kiskapu Kft. Minden jog fenntartva segítettem. Felipe Barousse Boué x:3:respawn:/etc/X11/prefdm -nodaemon  [email protected]

A módosítással elvileg kikapcsolható az X alapú, A szemétgyûjtés volna a válasz? grafikus bejelentkezés. Azt hiszem, itt becsúszott Az újságban olvastam a szemétgyûjtésrõl. Van egy hiba. Az általa javasolt módosítás után az X 3-as egy gondom, hadd írjam le röviden. Kezdetben futási szinttel indul el. Helyette a következõt kellene a tervezet 192 MB memóriát foglal. A futása folya- megváltoztatni: matos. 12 óra után a memóriahasználat 335 MB-ra nõ. Mi lenne a megoldás? A szemét miatt van ez? id:5:initdefault: A BDW szemétgyûjtõvel megoldódna a gondom? A tervezet char mutatókat tartalmaz, malloc erre: hívásokat viszont nem. id:3:initdefault: A BDW szemétgyûjtés csak akkor mûködik, ha malloc, calloc és realloc hívásokat alkalmazok? Ezzel valóban az alapértelmezett futási szintet Létezik olyan program, amit a saját tervezetemmel változtatjuk meg. párhuzamosan futtatok, és felszabadítja a feleslege- sen lefoglalt memóriát? Az „A fájlleírók és a blokkméretek módosítása” Mythily J. címû részben Don Marti pedig arra utal, hogy  [email protected] a Red Hat 9 támogatása megszûnt, ami a régebbi, 486-os gépek esetében gondot jelenthet. Nos, en- Utolsó kérdésedre a válasz: nem. Hacsak nem vala- nél sokkal nagyobb bajt jelent a Red Hat által igé- mi szövevényes, túlbonyolított rendszerrõl van szó, nyelt memória mérete. Nem vagyok biztos abban, kizárólag a saját programod tudja felszabadítani hogy 32 MB RAM-mal hajlandó települni; legalább- a saját maga által lefoglalt memóriát. is 16 MB-tal biztosan nem telepíthetõ, ennyi volt ugyanis a jó öreg 486-os, hordozható gépemben. A többi kérdésed valóban jó, csak azt tudom mon- Roland Roberts dani, hogy amint kipróbálod az ötleteidet, azonnal  [email protected] megkapod kérdéseidre a választ. Lehet, hogy bár a malloc függvénycsaládot nem használod, mégis Az inittab mindkét módosítása megfelel a célnak. indítasz olyan könyvtári hívásokat, amelyek memóri- A másodiknak megvan az az elõnye, hogy megõrzi át foglalnak le, majd elhagyod azokat, amelyek fel- a Red Hat-féle hagyományt, mely szerint az 5-ös szabadítanák ezt a területet. futási szint a grafikus bejelentkezéshez tartozik. A Fedora kibocsátási tájékoztatója szerint A jó hír az, hogy a programodból készíthetsz olyan (fedora.redhat.com/docs/release-notes/fc3/x86) változatot is, amely a malloc-ra „ráakaszkodva” min- a minimális, szöveges telepítéshez legalább den memóriakezelõ mûveletnél szemétgyûjtést Pentium processzor és 64 MB memória szükséges. használ, ide értve a könyvtári kódok által végzett (Alternatív megoldást az utolsó levélnél találsz.) memóriafoglalásokat is. Példaként lásd a következõ Don Marti cikkben szereplõ kódrészletet:  [email protected]

www.linuxvilag.hu 2005. július 13 Láttuk-hallottuk

«

Na és a Fedora Legacy? gépen, 32 MB memóriával. A tervezetnek köszönhe- A 2005. májusi szakmai tanácsok között Don Marti tõen a KOffice segítségével bemutatókat készítet- azt írja: „Sem a Red Hat 9-hez, sem a Red Hat 6.2- tem, Firefox alól pedig gond nélkül intéztem banki höz nincs már támogatás, vagyis nem adnak ki hoz- ügyeimet: zájuk biztonsági frissítéseket.” Bár a Red Hat való- www.rule-project.org/article.php3?id_article=55 ban felhagyott a Red Hat 9 támogatásával, a közös- ségi Fedora-Legacy tervezet Alig egy hónapja bemutattuk telepítõnk Fedora Core (www.fedoralegacy.org) továbbra is készít biztonsá- 3-hoz készült változatát is: www.rule-project.org/ gi frissítéseket a Red Hat 9-hez, ahogy a Red Hat breve.php3?id_breve=19 7.3-hoz, valamint a Fedora Core 1-hez és (hamaro- san) a 2-höz is. Marti úr elég sokat ártott a tervezet- Kétségtelen, hogy egy tarkabarka KDE, GNOME nek azzal, hogy egyszerûen figyelmen kívül hagyta vagy OpenOffice.org alapú telepítés bármilyen az annak keretein belül történõ erõfeszítéseket. gépen lehet lassú, még a jóval újabbakon is. John Dalbec Ugyanez igaz a videószerkesztésre, a 3D-s játé- © Kiskapu Kft. Minden jog fenntartva  [email protected] kok futtatására is, amelyekhez a mindenkori legjobb gép szükséges. Ha viszont a korszerû Amikor nyomdába adtuk a lapot, a Fedora Legacy munkakörnyezeten az otthoni vagy kis irodai még nem kezdte meg a biztonsági frissítések tény- szolgáltatások használatát értjük – IMAP, digitá- leges közzétételét. lis aláírások, HTML4/CSS-támogatás, CUPS, Don Marti azonnali üzenetküldés, Bayes-döntésekre alapuló  [email protected] levélszemétszûrés, csicsa nélkül –, akkor teljesen szükségtelen a pénzszórás. Az olyan tervezetek, A Linuxvilág 2005. májusi számának szakmai taná- mint a RULE, illetve a például a mini-KDE létre- csai között szerepel néhány helytelen és hiányos ál- hozására irányuló munkák sokkal gazdaságosabb lítás abban a válaszban, amelyet a 486-os gépeken lehetõségeket biztosítanak. Nem igaz tehát, hogy Red Hat 9-et futtatni kívánó felhasználó kapott. a korszerû, a fõsodorba tartozó terjesztéseket Don Marti azt írta, hogy „[A Red Hat-] utód, a Fedora nem lehet régebbi gépeken futtatni, csak egy futtatásához legalább Pentium processzor kell... odafigyelésre, a probléma gondosabb kezelésére Tulajdonképpen mindegy, hogy mit teszel fel, ezek van szükség. a gépek egy korszerû munkakörnyezet futtatásához Marco Fioretti  túlságosan lassúak.” A RULE tervezet (www.rule- [email protected] project.org) ezen próbál segíteni. Egy évvel ezelõtt Linux Journal 2005. június, 134. szám már Red Hat 9-et futtattam Pentium I-es hordozható

Õk mondták

A legnagyobb baj az, hogy újra kell írni a költség- Úgy vélem, minden programozónak ki kell vívnia az vetést, és ki kell találni, hogy mit kezdjünk azzal elismerést, függetlenül attól, hogy melyik cég adja a pénzzel, ami eddig a Microsoftnak ment. a fizetését. Nézzük csak meg a szórakoztatóipart. Boyce Williams, beszélgetés Doc Searls IT Garage- Az, hogy ki hol jelenik meg a stáblistában, fontos, ében (garage.docsearls.com/node/550) nagyon fontos kérdés. Közvetlenül befolyásolja a munkához való viszonyt, és kiváló képet ad arról, Ne úgy gondolkozz, mint egy költségközpont, hogy ki mekkora részt vállalt a munkából. Szerintem úgyis csak megvonják a keretedet. Úgy gondolkozz, ez az egyik legszebb dolog a nyílt forrás világában. mint egy vállalkozó. Danese Cooper, danesecooper.blogs.com/divablog/ Névtelen, szintén Doc Searls IT Garage-ének egyik 2005/03/about_attributi.html beszélgetésébõl (garage.docsearls.com/node/550) A Linux rendszermag API-ja ismét olyan rejtélyes A környezetükben mûszaki zseninek tekintett módon változott, hogy a rendszermagfán kívüli személyek és a professzionális szolgáltatásokat illesztõprogramok fejlesztõit lassan a bolondok igénylõ amatõrök között egyre kisebb a távolság. házába lehet zárni. Ez van, amíg az illesztõprog- Rael Dornfest ramjuk be nem kerül a rendszermagfába. Greg Kroah-Hartman, ww.kroah.com/log/2005/02/15 Buheráld a gépedet! Szerintem jó dolog. Linux Journal 2005. június, 134. szám Peggy Rogers, „Ms. Computer”, The Miami Herald

14 Linuxvilág Láttuk-hallottuk

DRM pro és kontra A mostanában oly sokat emlegetett DRM a digitális jogkezelõ rendszerek (Digital Rights Management) összefoglaló megnevezése. A fejlesztés eredeti célja a jogvédett tartalmak illegális terjesztésének és másolásának megakadályozása volt... © Kiskapu Kft. Minden jog fenntartva

ára azonban kiderült, hogy a DRM sajnos más Ha tehát a gyanútlan felhasználó megvásárol egy filmet tar- területeken is hatékony eszköz. Segítségével talmazó DVD-t, vagy egy elektronikus könyvet, nem biztos, a nagyvállalatok megszabhatják, hogy az álta- hogy használni is tudja majd azt, mert megeshet, hogy lunkM amúgy hivatalosan megvásárolt terméket hol, hogyan a lejátszójába nem építették bele a kérdéses adatformátum és hányszor használhatjuk fel. dekódolásához szükséges modult. Ilyenkor – ha nem akar A DRM rendszerek fejlesztése eredetileg azért indult el, hogy összeütközésbe kerülni a törvénnyel – nem tehet mást, a korábbinál egyszerûbb és biztonságosabb módon lehessen új lejátszót kell vásárolnia. megakadályozni a kalózmásolatok készítését, illetve hogy Ez nyilvánvalóan a felhasználó szabadságának korlátozása, a felhasználóknak ne kelljen „megmerülni” a végfelhasználói hiszen vannak olyan termékek, amiket kizárólag egy bizo- szerzõdések megértéséhez szükséges jogi ismeretekben. nyos formátumban lehet megvásárolni, tehát ha a felhasz- Bár ez a cél önmagában kifejezetten jó, a DRM mostanra náló meg szeretné venni, kényszerítve van a digitális ter- meglehetõsen sok vihart kavart, mert sokan a „Digitális méket lejátszó eszköz megvásárlására. Ez a DRM legtöbb- Nagy Testvért” látják benne. Az ügyben pillanatnyilag ször említett hátulütõje. a legmeglepõbb talán az, hogy szinte minden résztvevõnek Hasonló a helyzet a digitális könyvekkel. Ha valaki megvá- más a véleménye, de abban a legtöbben mégis egyetérte- sárol egy hagyományos könyvet, akkor joga van azt elol- nek, hogy jelen formájában a digitális jogkezelõ rendszerek vasni bárhol és bármikor. Ezzel szemben a DRM védelme tervezete nem jó. Még olyanok is akadnak, akik szerint alatt álló digitális könyv csak egy bizonyos programmal ol- a „kalózkodást” egyáltalán nem kellene megtiltani vagy vasható, ami egyes platformokon esetleg nem hozzáférhetõ. szankcionálni, a digitális termékeket pedig semmilyen Ha tehát a vásárló elmegy egy idegen helyre, ott nem módon nem kellene védeni. biztos, hogy tudja olvasni a szöveget. És ez még csak az elsõ probléma. A digitális jogkezelõ rendszerek hátrányai Ha valaki megvesz egy papír alapú könyvet, miután elolvas- A DRM csak abban az esetben lenne mûködõképes, ha ta, továbbadhatja vagy el is ajándékozhatja azt. Ugyanennek a jelenlegi tervezettel szemben egységes rendszer lenne. a mûnek a digitális változata viszont ezek ellen a galádságok A jelenlegi elképzelések azonban olyan hibákat tartalmaz- ellen is hatékonyan védve van, hiszen a következõ tulajdo- nak, amelyek hátrányos helyzetbe hozhatják mind a digitá- nos minden valószínûség szerint képtelen lesz elolvasni. lis termékek alkotóit mind azok felhasználóit. Ez egyrészt meglehetõsen egyoldalúan befolyásolja a felhasz- Talán meglepõ ez a kijelentés, de egyes kutatások szerint nálót abból a szempontból, hogy milyen formátumú könyvet a vásárló általában hajlandó kifizetni azt az összeget, amit vegyen, másrészt pedig úgy tûnik, a digitális forradalom be- a termék elõállítója azért kér. A probléma az, hogy a „pénz- köszöntével nyugdíjba vonulhat az összes antikvárius... tártól való távozás után” a vásárló rádöbbenhet: nem olyan A DVD-k esetében a régiókód is a digitális jogkezelõ rend- árut kapott, amit korlátozások nélkül felhasználhat. szer része. Mûködésének lényege, hogy a lemezrõl a leját- Lássuk, mi minden érheti a – hangsúlyozzuk – jóhiszemû szó egyértelmûen meg tudja állapítani, milyen országból vásárlót! származik. Így például a Magyarországon megvásárolt DVD itthon tökéletesen mûködik, de mondjuk New York-ban Kompatibilitási problémák... már nem lehet lejátszani. Mivel a különbözõ cégek pillanatnyilag mind más módon A dolog pikantériája, hogy jelenleg egyszerûen nincs olyan próbálják megvédeni saját termékeiket, csak a saját eszközük- szerzõi jogi törvény, amely a szerzõnek illetve forgalmazó- kel engedhetik megnyitni/lejátszani saját, egyedi adatformá- nak lehetõvé tenné, hogy a vásárlót ilyen módon és mérték- tumukat. Az ehhez szükséges eszközt azonban, ami bizonyos ben korlátozza. A digitális jogkezelõ rendszerek mûködése esetekben csak szoftver, általában szintén pénzért kínálják. tehát pillanatnyilag egyszerûen jogsértõ.

www.linuxvilag.hu 2005. július 15 Láttuk-hallottuk

Biztonsági másolatok... változata. Amerikában a DMCA elsõsorban azzal Az is elõfordulhat, hogy egy legális termékrõl (például egy vívta ki a társadalom ellenszenvét, hogy a törvény DVD-rõl) a vásárló biztonsági másolatot szeretne készíteni. megtiltotta a kutatók számára a másolásvédelmi tech- Ilyenkor az egyik forgatókönyv szerint már maga a DVD-író nológiák tanulmányozását, valamint azt, hogy nyilvá- program nem engedi lemásolni a lemezt, hanem kiírja, nos ságra hozzanak olyan információkat, amelyek hogy annak tartalmát szerzõi jog védi, illegális másolat ezeknek a technológiáknak a hibáival, biztonsági készítése pedig tilos... réseivel kapcsolatosak. A másik lehetõség, hogy a másolás ugyan sikerül, de a le- Az EUCD arra kötelezi az Európai Unió országait, játszóban már nem mûködik a másolat. hogy olyan törvényeket léptessenek életbe, melyek Hasonló esettel kerülhetünk szembe, ha egy mobiltelefonra megfelelõ jogi védelmet biztosítanak a különbözõ titko- töltünk le alkalmazásokat. Ha a felhasználó letöltött egy prog- sításoknak, másolásvédelmeknek és egyéb, a szerzõi ramot, általában lementi azt a számítógépére is, gondolván ar- jogokat védõ mûszaki megoldásoknak. Az EUCD azt ra az esetre, ha netán valami baleset érné a „kézi készüléket”. is kimondja, hogy az Európai Unió országaiban minden Emberünk, mivel egyszer már kifizette az alkalmazás árát, lehetséges eszközzel meg kell akadályozni az olyan joggal gondolhatja úgy, hogy minden további nélkül vissza- elektronikai eszközök forgalomba kerülését, melyeket töltheti azt a telefonjára. Ezzel szemben ha az alkalmazást készítõik nyilvánvalóan egyes digitális védelmi rendsze- DRM védi, a számítógéprõl való visszatöltés után hibaüze- rek kiiktatására terveztek. © Kiskapu Kft. Minden jog fenntartva netet fog kiírni, mondván a program egy illegális másolatát 2004. július 29-én létrejött egy digitális jogkezelõ rendsze- próbáltuk meg futtatni. Ezután a felhasználónak nincs más rekkel foglalkozó munkacsoport (DRM munkacsoport), választása, mint hogy újból kifizesse a termék árát, hogy az amely a digitális jogkezelõ rendszerek hatását és szüksé- ismét mûködõképes legyen. gességét vizsgálja jogi és technikai szempontból. A munka- A képzettebb – és fõleg öntudatosabb – fogyasztók persze csoport 2005. július 1-ére készíti el összefoglaló jelentését ilyenkor a megfelelõ segédeszközökhöz nyúlnak majd. a kormány számára. Nem, nem a házi jogtanácsosukról van szó... Akárcsak eddig a szoftverkalózok tették, megpróbálják Lehetséges megoldások a DRM és az EUCD „kijavítására” majd kikerülni a másolásvédelmi rendszert. Léteznek majd Oktatási célokra valamilyen mértékben mindenképpen olyan programok, amiket csak le kell futtatni, és a digitális hozzáférhetõvé kellene tenni azokat a mûveket, amelyek jogvédelem már el is tûnt a termékbõl. Ez természetesen a tanuláshoz szükségesek, de egyébként a szerzõi jogvédel- ugyanúgy illegális, mint a szoftverek másolása. A különb- met élveznek. Ennek egyrészt történelmi jelentõsége van, ség csak annyi, hogy most a jogos tulajdonos lopta el az hiszen a felnövekvõ nemzedék nem lehet a jelen jogi csatá- anyagot. De pontosan kitõl is?... rozásainak áldozata, másrészt hazánkban z az iskolák anya- Ami a biztonságtechnika alapelveit illeti, a DRM megalkotói gi helyzete is indokolja. úgy tánik elkövettek egy szarvashibát: átadják a vásárlónak A kompatibilitási problémák elkerülése érdekében a fej- a kódolt terméket, a dekódoló eszközt, és a kulcsot is. Ez a fel- lesztõk számára elérhetõvé kellene tenni a különbözõ állás tulajdonképpen a teljes rendszer értelmét kérdõjelezi formátumok és digitális jogkezelõ rendszerek mûködésé- meg, hiszen ezek után hatékony védelemrõl szó sem lehet. nek leírását. Ez a DRM rendszerek biztonsága érdekében Ha egy felhasználót eleve tisztességes szándék vezet, attól is kívánatos volna, hiszen csak a technológia ismerete fölösleges a kérdéses anyagot megvédeni. Aki pedig jogta- ad lehetõséget a fejlesztõknek arra, hogy a benne talált lanul akar egy tartalomhoz hozzáférni, az némi ügyeskedés hibákat kijavítsák. árán a DRM ellenére is megteheti, hiszen várhatóan pilla- A vonatkozó törvényekben engedélyezni kell saját célra natokon belül meg fognak születni a DRM kikerülését lehe- a biztonsági másolatok készítését, mûszaki oldalról pedig tõvé tevõ programok. lehetõvé kell tenni azok felhasználását. Minderre a digitális jogkezelõ rendszereket alkalmazó Az utóbbi idõben egyre több az olyan dokumentum, amely cégek azt mondják, hogy a DRM nem a szervezett kalóz- eleve csak digitális formában jelenik meg. Ha mindent ilyen csoportok, nem az ügyes egyetemisták sõt még csak nem anyagot DRM védene, a digitális mûvek terjedése nagy is azok ellen készült, akik képesek kreatív módon használni mértékben lelassulna, ez pedig lassan az írók és fejlesztõk a Google-t vagy a Kazaa-t, hanem az „átlagos felhasználók” hátrányára is válna. Azt tulajdonképpen ma sem vitatja ellen. A DRM tehát az õ olvasatukban nem egyéb, mint senki, hogy a szerzõknek is az a jó, ha mûvük ismert és a villanypásztor digitális megfelelõje. gyorsan terjed. A gondolatmenetben mindössze annyi a hiba, hogy a gyár- Összességében elmondható, hogy a DRM jelenlegi terveze- tók sokak szerint messze alulbecsülik az „átlagos felhaszná- tével mindenki elégedetlen, legyen akár szerzõ, kereskedõ, ló” képességeit. Az említett programoknak ugyanis csak vagy egyszerû vásárló. A legtöbben arra várnak, hogy meg- a megírása igényel különleges felkészültséget, a használata jelenjen egy egységes és fejlett jogkezelési rendszert, és erre nem. Tény, hogy ismerni kell hozzájuk az egér és a billentyû- talán van is némi esély. A jelenlegi DRM azonban semmi- zet kezelését, de aki erre sem képes, attól nem a DRM fogja képpen sem ilyen. megvédeni a digitális tartalmakat, hanem a saját butasága. Guba Norbert ([email protected]) Valami Amerika – avagy az EUCD Tanuló, körülbelül 3 éve használ Linuxot. Szabadidejét Az EUCD az Amerikai Egyesült Államokban érvényes leginkább programozással tölti, hobbija az operációs DMCA (Digital Millennium Copyright Act) európai rendszerek gyûjtése.

16 Linuxvilág Láttuk-hallottuk

Gazdálkodj okosan! Mindig értetlenül állok olyan üzleti célú szoftverek elõtt, melyek csak egyetlen operációs rendszer alatt mûködnek. A fejlesztõcégek bele sem gondolnak abba, hogy létezhetnek más megoldásokat használó potenciális ügyfelek is? © Kiskapu Kft. Minden jog fenntartva

ontosan úgy, ahogyan egy operációs rendszernek amely az õ igényei szerint mûködik, és sokkal jobb megol- az összes lehetséges hardver felett el kellene futnia, dásnak tûnt, hogy keresünk egy szabad szoftvert, amit mi úgy kellene a könyvelõ, útnyilvántartó, ügyfélkap- átalakíthatunk, ahelyett, hogy egy zárt forráskódú szoftvert Pcsolati szoftvereknek is mûködnie lehetõleg az összes ope- fejlesztõ céggel kezdünk egyezkedni, hogy „szabja testre” rációs rendszer felett. Lehetõség éppen lenne rá... saját termékét a cég igényei szerint. A mi termékünk végül Úgy látszik, ahogy egyfelõl az innovációnak nincsenek ebbõl a fejlesztésbõl alakult ki. korlátai, úgy bizonyos esetben a korlátoltságnak sem. Nézzünk meg tehát egy gyöngyszemet a sötét tenger fene- Tehát akkor tulajdonképpen ti is hozzáraktatok valamit kén, melynek neve SQL-Ledger és a két gyöngyhalász, aki az SQL-Ledgerhez. Tudsz mondani erre konkrét példát, most felszínre hozza nekünk ezt a gyöngyöt: Kabai József vagyis valamit amit ti fejlesztettetek ki? és Sásdi András. K.J.: Az Sql-Ledger egy globális könyvelési rendszer, olyan funkciókkal rendelkezik, ami a legtöbb országban mûködik. Elõször is azt szeretném, ha egy pár szóban összefoglalnád Magyarországon vannak olyan speciális tulajdonságai a magyar ügyviteli szoftver piac helyzetét jelenleg, mik azok a könyvelési, ügyviteli szabályoknak, amelyek ebben a prog- amik jók, mik azok amik hiányosságok? ramban természetesen nem voltak benne. Magyarországon K.J.: Az ügyviteli szoftverek hagyományosan Windows ope- van az egyik legszigorúbb számlázási rendelet, a magyar rációs rendszeren futnak. Ez az ügyviteli szoftverek túlnyo- könyvelõk más szempontból tekintenek a könyvelésre, más mó többségét, vagyis körülbelül 90-95%-át jelenti. Az a ta- módszer alapján könyvelnek le egy számlát, mint az angol- pasztalatunk, hogy a Linux világában nagyon nagy hiány szász országokban. Lévén az Sql-Ledger egy kanadai prog- van az ügyviteli szoftverekbõl, és ezért az Sql-Ledger egy ram, sok módosítást kellett rajta elvégezni ahhoz, hogy nagyon jó jelölt azoknak, akik Linuxot használnak. a magyar viszonyok között is kényelmesen mûködjön. Ezeket a módosításokat természetesen vissza lehetne rakni Vannak-e olyan más szabad ügyviteli szoftverek, amik az eredeti programba, de nem kerülnek bele, hiszen itt ha- hasonlóak az SQL-Ledgerhez? zánkra nézve teljesen specifikus dolgokról van szó. K.J.: Természetesen vannak, hiszen az egész világon fejlesz- tenek szabad szoftvereket ügyviteli célokra. Mi körülbelül Az eredeti programot ugyebár nem ti fejlesztitek, ti csak két évvel ezelõtt kezdtünk ezzel komolyabban foglalkozni, hozzáraktok bizonyos részeket. Nem okoz-e nagy problémát, és úgy ítéltük meg, az Sql-Ledgernek van a legbíztatóbb ha a szoftver kanadai fejlesztõk átalakítanak valamit? fejlesztési modellje és a legjobb fejlõdési üteme. Most már Könnyen hozzá tudjátok-e igazítani az új változathoz is saját elmondhatjuk, hogy megérzésünk nem okozott csalódást, fejlesztéseiteket, mondjuk egy modul formájában, vagy azért hiszen azóta is nagyon dinamikusan fejlõdik, és elmondhat- ennél egy kicsit problémásabb a helyzet? juk, hogy a kis- illetve középvállalatok számára a legjobb, K.J.: Igen, ez valóban probléma, hiszen figyelni kell arra, legtöbb funkcióval rendelkezõ szabad szoftver. hogy az eredeti szerzõ mit fejleszt bele, illetve a mi változ- tatásainkat is figyelni kell, hogy jól mûködjön az új verziók- Nem sok cég van idehaza, akik a szabad szoftverekhez nyúj- kal. Ezt a problémát úgy oldottuk meg, hogy le lehet tölteni tanak támogatást, tehát tulajdonképpen honnan jött az ötlet, az eredeti verziót az oldalunkról valamint az eredeti verzi- hogy ti egy szabad szoftvert karoltok fel, nem pedig egy ónak a magyar fordítását, illetve a magyar sablonokat, tehát külföldi kereskedelmi szoftverrel kezdtek foglalkozni? ha valakinek erre van szüksége, akkor nyugodtan ingyene- K.J.: Természetesen nem az volt az elsõ szándékunk vagy sen használhatja, ha viszont már számlázni akar vele, vagy ötletünk, hogy mi ezt termékké alakítsuk át. Egy több milli- szeretne egy kicsit a magyar viszonyokhoz közelibb felüle- árdos forgalommal rendelkezõ kereskedelmi cég keresett teteket kapni a munkája során, akkor minket keres meg, és meg minket azzal, hogy szeretne egy olyan rendszert, a mi verziónkat adjuk oda, amibe természetesen egy kicsit

www.linuxvilag.hu 2005. július 17 Láttuk-hallottuk

késõbb kerülnek bele azok a magyar felhasználók számára Az SQL-Ledger mellett szól az is, hogy nagyon jól lehet is hasznos tulajdonságok, amelyeket a kanadai szerzõ folya- használni intranet hálózatokon, illetve interneten keresztül matosan fejleszt a programba. is. Elég föltelepíteni egy szerverre, és a webes felületének kö- szönhetõen bárhonnan elérhetõ a program. Az utazó eladók, Mivel bárki szabadon letöltheti, például a Ti oldalatokról otthonról netezõ ügyvezetõk is meg tudják nézni, hogy mi- is a forráskódot, ezért elvileg holnaptól bárki elkezdheti bõl mennyi van raktáron. Persze rögtön hozzá kell tenni, terjeszteni. Nem féltek ettõl, vagy nem jelent ez valamilyen hogy megfelelõ biztonsági eszközöket azért használni kell. kockázatot számotokra? Végül többen a nyitottsága miatt szeretik, azaz könnyen S.A.: Természetesen sok energiát és munkát fektettünk összeköthetõ más rendszerekkel, mint például Webáruház. a szoftver fejlesztésébe, de mi tudjuk, hogy a szolgáltatás árát kell úgy megállapítani, hogy az versenyképes legyen. S.A.: Nem is az a lényeg, hogy Linuxon is fut, hanem, hogy A cél tehát az, hogy a hozzáadott érték, vagyis az a többlet, alapvetõen Linuxon fejlesztették, és így a rendszert kiszol- amit mi az SQL-Ledgerhez adunk, a legjobb legyen a pia- gáló programok is szabadok és ingyenesek. Még az adat- con, és ezért potenciális ügyfeleink bennünket válasszanak. báziskezelõje (PostgreSQL) is ingyenes, sõt ismereteim Természetesen itt is versenyhelyzet van, mint mindig és szerinti ez a legfejlettebb adatbázis motor, ami Linux alatt mindenütt, de ezt a versenyt mi álljuk. elérhetõ. Nagyon sokan pontosan azért váltanak erre a szoftverre, mert egy fejlettebb felületet és egy fejlettebb © Kiskapu Kft. Minden jog fenntartva Gondolom az ügyfeleitek egy része egy kicsit félt kezdetben rendszert szeretnének. A rendszer a cég vezetését átlátható a szabad szoftverektõl. Nem tudták mondjuk, hogy elég meg- információkkal látja el, ami nagyon fontos lehet a vállalat bízhatóak-e, illetve ha van benne valami hiba, akkor kié a fele- vezetõinek az üzleti döntések meghozatala során. lõsség. Ennek ugye jelen esetben akár komoly anyagi vonzata is lehet. Hogyan sikerült az ügyfeleiteket mégis megnyugtatni? Nincs a webes felületnek valami hátránya? Mondjuk K.J.: A szolgáltatásunk nagyon fontos része a havi támoga- valamelyik böngészõ esetleg nem tud kezelni bizonyos tás, tehát bármilyen probléma esetén minket fel lehet keres- adatmennyiséget? A nyomtatásnál is a böngészõre vagytok ni e-mailben, szükség esetén távoli eléréssel megnézzük utalva, vagy nem? a rendszert, kijavítjuk a hibákat, vagyis gyorsan tudunk K.J.: Nos igen, a programnak az a legnagyobb hátránya, reagálni a problémákra. Ami a megnyugtatást illeti, jellem- hogy az adatokat webes felületen kell rögzíteni, egy köny- zõen olyan emberek, olyan ügyfelek, cégek keresnek meg velõ pedig ahhoz van szokva, hogy könnyen és gyorsan bennünket, akiket eleve vonz a szabad szoftverekkel kap- tudjon felvinni dokumentumokat, számlákat. Már dolgo- csolatos filozófia. Ha úgy döntenek, akkor nem a mi szol- zunk ennek a kiváltásán. A nyomtatás természetesen gáltatásunkat veszik igénybe, tehát megkereshetnek bárki nem csak úgy mûködik, hogy a böngészõben megjelenít- mást, a kényszerfüggõség számukra nem létezik. Ettõl füg- jük és onnan nyomtatjuk ki az anyagot. A program képes getlenül legtöbben minket választanak, hiszen mi értünk PostScript és PDF formátumot is elõállítani, amelyet vagy hozzá a legjobban, ami a testreszabást illeti mi tudunk megjelenítünk a képernyõn (és onnan nyomtatjuk ki), a legjobb árakkal szolgálni, illetve mi tudunk a leggyorsab- vagy közvetlenül a nyomtatóra irányítjuk. ban reagálni a problémákra. Akkor gyakorlatilag milyen százalékban van a windowsos Akkor tehát úgy tûnik, hogy lassan kezd kialakulni a biza- és linuxos kiszolgálóra telepített programok aránya? lom a szabad szoftverek iránt. Ti is így látjátok? S.A.: 99% Linux, 1% Windows. S.A.: Tény, hogy amit mi a szabad, vagy nyílt forráskódú rendszerek népszerûsítése terén teszünk, az egyfajta misszi- K.J.: Ehhez annyit azért hozzátennék, hogy természetesen ós tevékenység is. Azt próbáljuk minden potenciális ügyfe- Windowsra is lehet telepíteni. Azok a segédprogramok, lünkkel megértetni, hogy éppen akkor van biztonságban, amik Linuxra ingyenesek, ugyanúgy Windowson is meg- ha a nyílt forráskódú, szabad szoftver mellett teszi le a ga- vannak, és ugyanúgy ingyenesek. A Windowsnál egyedül rast, és éppen akkor futhat be egy veszélyes zsákutcába, ha az operációs rendszert kell megvásárolni. A windowsos valamilyen zárt forráskódú kereskedelmi szoftvert vásárol változatnál annyi a probléma, hogy egyelõre nincs alaposan meg. Ilyenkor ugyanis a szolgáltató monopol helyzetben letesztelve, hiszen az adatbázismotor Windowsra írt natív van és – durván fogalmazva – „elszemtelenedhet”. verziója (a 8.0-ás) gyakorlatilag a közelmúltban jött a ki. Úgy érezzük ezt még alaposan le kell tesztelni ahhoz, hogy Mik voltak azok az igények, amelyeket az ügyfeleitek a régi biztonsággal tudjuk támogatni. Alapos tesztelés után vi- ügyviteli szoftverükkel nem tudtak megvalósítani, ugyanak- szont ugyanolyan egyenértékû lesz, mint Linuxon. Persze kor az SQL-Ledger az erre már alkalmas volt? lehet keverni is a megoldásokat. Például meg lehet azt is K.J.: A legfontosabb, hogy Linux alatt stabilan fut, valamint, oldani, hogy minden a Windowson fut, kivéve az adatbá- hogy szabad szoftver. Vonzó az is, hogy másképp van fel- zismotort, amely Linux kiszolgálón van. Ha a szerveren építve ez a program, tehát egy könyvelési tudással nem kész a telepítés, attól kezdve a rendszer egy egyszerû bön- rendelkezõ ügyvezetõ is biztonsággal tudja használni. gészõvel ellátott bármilyen operációs rendszert futtató A program a bizonylatok rögzítésekor a háttérben automa- munkaállomásról használható, legyen az Linux, Windows tikus lekönyveli a tételeket, ezért a kezelõnek nem kell tud- vagy egy Macintosh. nia, hogy milyen fõkönyvi számokat kell beírnia az ûrlapra, hogy ez rögzítésre kerüljön. A program ezt „magától” tudja. Az interjút Horváth Ernõ készítette

18 Linuxvilág Szaktekintély

Program által meghatározott processzorok A rendszerlogika menet közben megvalósított újraépítésével ez a módszer képessé tehet egyetlen FPGA-t tíz vagy akár több száz közönséges processzor feladatainak ellátására. © Kiskapu Kft. Minden jog fenntartva

z alkalmazás által meghatározott processzorok amelyben ezek a memóriacellák tárolják a lapka beállításait. az átszerkeszthetõ számítási elv (reconfigurable Az FPGA-k logikai kapukat, flip-flopokat, RAM-ot, arit- computing, RC) elvén alapulnak. Az RC egy olyan metikai magot, órajel-generátort és az ezek összekötésére számításiA eljárás, amely elmossa a hardver és szoftver köz- szolgáló beállítható huzalozást tartalmaznak. Az FPGA-k ti határvonalat és megteremti az alapjait annak, hogy tetszõleges logikai funkció megvalósítására beállíthatók, újabb nagy lépést tegyünk a számítási hatékonyság növe- így olyan egyedi processzorok hozhatók létre, melyek egy lése terén, csökkentett teljesítmény- és tárterület-igény adott alkalmazásra optimalizálhatók. mellett. Az RC gyakorlati megvalósítása az átszerkeszthetõ Egy FPGA-készlet így alkothat akár MIPS, SPARC PowerPC (reconfigurable) hardvereszközök alkalmazásával történik. vagy Xeon processzort, esetleg egy teljesen egyedi felépítés- Egy RC-rendszerben lévõ processzorok olyan hardver- sel rendelkezõt is. Valójában az sem szükséges, hogy eszközök, amelyek a rajtuk futtatott programra lettek utasításfeldolgozó egységrõl legyen szó, közvetlen futtató optimalizálva. logika (DEL, direct execution logic) is lehet, amely csak szá- Cikkemben elmagyarázom az RC eljárás elvét, megvizs- mítási logikát tartalmaz, és nincs szüksége az algoritmust gálok néhány SRC-rendszert, amelyek az RC gyakorlati meghatározó utasításokra. megvalósítását jelentik, és megmutatom, hogy milyen A közvetlen futtató logikát tartalmazó (DEL) processzorok teljesítménybeli elõnyökkel bír az RC a hagyományos igen nagy teljesítmények elérését teszik lehetõvé. Ezek mikroprocesszorokhoz képest. Bemutatom emellett az a processzorok pontosan az adott algoritmus végrehajtásá- RC programozási modelljét és az RC-ben rejlõ lehetõsé- hoz szükséges erõforrásokkal hozhatók létre. A hagyomá- geket az Open Hardware támogatására. nyos utasításfeldolgozó egységek rögzített erõforrásokkal rendelkeznek, összeadókkal, szorzókkal, regiszterekkel és Mit jelent az átszerkeszthetõ számítási elv és miért átmeneti tárakkal, és jelentõs lapkafelület és teljesítmény fontos ez a számunkra? szükséges az olyan többletmunka végrehajtásához, mint az Az RC egy a hardveren alapuló számítási módszer, amely utasítások visszafejtése, a végrehajtási sorrend megállapítá- minden egyes futtatandó alkalmazás számára dinamikusan sa és az átmeneti tár kezelése. hozható létre. Az RC olyan hardverelemekbõl épül fel, ame- A DEL-processzorok olyan átrendezhetõ számítógépek, lyek dinamikusan megadható logikájú áramköri lapkákat amelyekben minden alkalmazáshoz más-más felépítés tartalmaznak, vagyis az alkalmazott számítási módszer nem tartozik szemben a rögzített felépítésû processzorokkal, a gyártáskor kerül rögzítésre. Az RC már sok éve létezik, amelyeknél mindent ugyanazzal az egységgel kell meg- és számos hardverösszetevõben került már megvalósításra. oldani. A DEL-processzorok a leghatékonyabb áramköri Ilyenek az FPGA-k (Field Programmable Gate Array, általá- felépítést szolgáltatják egy adott alkalmazáshoz az algo- nos célú programozható áramkör), az FPOA-k (Field ritmusban található párhuzamosságok kezelésének és Programmable Object Array, az FPGA-hoz hasonló jellegû, a funkcionális egységek pontosságának tekintetében. de számos fontos tulajdonságában eltérõ programozható Az átépíthetõségbõl adódóan minden program számára áramkör - a ford.) és az összetett programozható logikájú egyedi DEL-processzor hozható létre a másodperc tört- eszközök (complex programmable logic devices, CPLD). része alatt. Az alkalmazásfejlesztõk számára fontos tényezõ, hogy De miért fontos számunkra, hogy a DEL-processzorok a modern újraszerkeszthetõ áramköri lapkák olyan óra- dinamikusan hozatók létre egy alkalmazás számra és hogy jellel és teljesítménnyel rendelkeznek, amelyek lehetõvé hatékonyabban használják ki a rendelkezésükre álló áram- teszik, hogy RC-hardverekben nagyteljesítményû számítá- köri lapkákat, mint a hagyományos mikroprocesszor? sokra is alkalmazzák azokat. A válasz egyszerû: hatékonyabb teljesítmény- és energia- Az RC megvalósítására használt legelterjedtebb lapkatípus felhasználás. Egy DEL RC processzor úgy építhetõ fel, az FPGA. Az FPGA SRAM memóriacellákból felépülõ lapka, hogy tartalmaz minden párhuzamosságot, ami az adott

www.linuxvilag.hu 2005. július 19 Szaktekintély

© Kiskapu Kft. Minden jog fenntartva 1. ábra A közvetlen futtatású logika (DEL) minden logikai kaput a valódi 2. ábra Számos 2,8 GHz-es processzor szükséges a MAP közvetlenül probléma megoldására mozgósít futtató processzor teljesítményének az eléréséhez

4. ábra A fürtözött SRC-6 rendszer felépítése

Habár egy mikroprocesszor 3GHz körüli órajelen képes 3. ábra A MAP szerkezeti felépítése mûködni szemben az FPGA lapkák 100-300 MHz-es frek- venciájával, a párhuzamosságnak és a belsõ sávszélesség- algoritmusban elõfordul, a mikroprocesszorban lévõ nek köszönhetõen egy DEL-processzor az összteljesítményt felesleges többletmunka nélkül. A cikk további részében tekintve nagyságrendekkel múlhatja felül a mikropro- a téma részletesebb tárgyalásának érdekében az RC pro- cesszort. A 2. ábrán néhány összehasonlító teljesítményteszt cesszorokat FPGA elemekkel megvalósított egységeknek látható, amelyben az SRC DEL-processzora a MAP és egy feltételezzük. jellegzetes Neumann-féle utasításvégrehajtó processzor, az Intel Xeon 2,8 GHz mikroprocesszor méri össze erejét. Hogyan érhetõ el az a bizonyos nagy teljesítmény? A párhuzamos futás, a pontosan a szükséges számú funkci- Az RC processzorok teljesítménye a logika párhuza- onális egység alkalmazása, a nagy belsõ sávszélesség, az mos futtatási képességébõl adódik. Az RC processzorok utasítás feldolgozásából, betöltésébõl és tárolásából adódó teljes mértékben párhuzamos mûködésûek. Valójában többletmunka kiküszöbölése együttesen vezetnek a MAP egy adott algoritmusnak megfelelõ logika létrehozása és Intel processzorok közti 30-szoros órajelkülönbséghez. nem áll másból, mint a párhuzamos futások összehan- golásából, vagyis hogy a részeredmények a megfelelõ Képes a DEL processzor a Linux futtatására? pillanatban jöjjenek létre, kerüljenek megosztásra illetve Elvileg a DEL alapú processzorok képesek lennének visszatartásra. a Linux futtatására, de szükség van-e erre egyáltalán? A DEL processzor az adatutak és vezérlõjelek által össze- A Linux rendszermagjának kódszegmensei minden kapcsolt funkcionális egységek hálózata. A hálózatban lé- bizonnyal nagyobb teljesítménnyel futnának egy DEL võ minden számítási egység minden egyes órajelre aktívvá processzoron, és a Linux rendszercsomag programjai is válik. Az 1. ábra egy logikai részletet mutat egy kifejezés éreznék ennek az elõnyét. Mégis, egy operációs rend- kiszámítására és a lapka kihasználtságára egy olyan szernek, és különösen a rendszermagnak az a szerepe, Neumann-féle utasítás-processzorban, mint amilyen hogy kezelje a hardvert, és elérhetõvé tegye a programok az Intel Pentium 4 mikroprocesszor is. számára a megfelelõ teljesítményszintet. Más szóval

20 Linuxvilág Szaktekintély

az operációs rendszernek félre kell állnia az útból és hagyni, Az SRC Computers RC-rendszere hogy az alkalmazások kihasználhassák a hardver nyújtotta Az SRC létrehozott DEL-processzorokat és mikroprocesszo- szolgáltatásokat. rokat egyaránt tartalmazó rendszereket. Ezek a rendszerek A programok nem csak elmélyült számítási mûveletekkel operációs rendszerként a Linuxot futtatják, emellett biztosí- foglalkoznak, hanem emellett kapcsolatot tartanak a fel- tanak egy Carte nevû programozói környezetet, amely használókkal, fájlokat olvasnak és írnak, megjelenítik az alkalmas a mikroprocesszoros utasításokat a DEL-lel ötvö- eredményeket és a Világhálón keresztül információt cserél- zõ programok írására, és egyetlen rendszeren belül támo- nek a világgal. Az alkalmazásoknak tehát egyaránt szüksé- gatja a mikroprocesszorra és DEL-processzorra épülõ gük van számítási erõforrásokra és egy operációs rendszer hardverhátteret. szolgáltatásaira. A nehéz számítási mûveletek és a magas fokú párhuzamosság ki tudja használni a DEL processzorok A DEL-processzor: MAP elõnyeit. Bár a soros kódok is futhatnak közvetlen futtató A MAP az SRC nagyteljesítményû, szabadalmazott DEL- logikán, ezeket mégis a hagyományos processzorok tudják processzora. A MAP átszerkeszthetõ összetevõket tartalmaz a legjobban kiszolgálni. a vezérlés és felhasználó által meghatározott számítások A legtöbb alkalmazás számára az optimális megol- megvalósítására, az elõzetes utasításkód-lehívásra és az adat- dást a hagyományos és DEL processzorok keveréke elérésre. Ez a számítási képesség igen nagy belsõ és külsõ jelenti. Ez a kombináció lehetõvé teszi az alkalmazások sávszélességgel párosul. A MAP kétkapus alaplapra integrált számára, hogy nagyságrendekkel nagyobb teljesít- memóriái 11,2 GB/sec helyi átviteli sebességet biztosítanak. © Kiskapu Kft. Minden jog fenntartva ményt érjenek el, miközben a hagyományos Linux A MAP külön bemeneti és kimeneti kapukkal van felszerelve, környezetben futnak és rendelkezésükre áll az operációs amelyek 1,4 GB/sec adatforgalom kezelésére képesek. Ezen rendszer összes szolgáltatása és megszokott eszköze. felül minden MAP rendelkezik két általános I/O (GPIO) ka- Az alkalmazásnak azok a részei, amelyben túlsúlyban puval további 4,8 GB/sec sávszélességet biztosítva a közvetlen vannak a soros kódok, vagy amelyek az operációs MAP-MAP kapcsolat vagy a forrásadatok számára. A MAP- rendszer szolgáltatásait igénylik, a rendszer hagyomá- processzor szerkezeti felépítését a 3. ábrán láthatjuk. nyos processzort tartalmazó részén futhat, míg azokat az alkalmazásokat, sõt az operációs rendszer bizonyos A mikroprocesszorok kapcsolódása a SNAP segítségével részeit, amelyek számára elõnyös a DEL párhuzamos- Az ezekben az eszközökben használt DLD-k (Dense sága, a szorosan a rendszerhez kapcsolt DEL processzo- Logic Device, hagyományos fix logikájú eszközök) rok szolgálják ki. kétprocesszoros Intel IA-32 egységek. Ezek a külsõ

www.linuxvilag.hu 2005. július 21 Szaktekintély

A SNAP külön kimeneti és bemeneti kapukat használ, amelyek jelenleg 1,4 GB/sec átviteli sebességet tesz- nek lehetõvé. A SNAP intelligens DMA-vezérlõje olyan összetett utasítás- kód-elõreolvasásra és adatelérési mûveletekre képes, mint az adattömörítés, lépdelõ (strided) adatelérés és a szó- rás/összegyûjtés, amelyek mindegyike a rendszerkapcsola- tok rendelkezésére álló átviteli sávszélességének minél jobb kihasználását célozza. A kapcsolódás hatásfoka több mint tízszer jobb egy átmeneti tárat használó mikroprocesszoré- 5. ábra A Hi-Bar kapcsolóval felépített SRC-6 elrendezése nál, amely az ilyen mûveletekhez általánosan használt kap- csolatokat alkalmazza. A SNAP csatlakozhat közvetlenül egyetlen MAP-hez, vagy az SRC Hi-Bar elosztójához több MAP, mikroprocesszor, vagy a közös memória eléréséhez.

Az SRC-6 rendszer szintû felépítésének megvalósítása © Kiskapu Kft. Minden jog fenntartva A rendszer-szintû beállítások vagy egy MAP-állomásokból álló fürtöt, vagy egy kapcsolóval megoldott kereszt-elren- dezést valósítanak meg. A 4. ábrán is látható fürt-alapú rendszerek a mikroprocesszort és a korábban ismertetett DEL-processzort közvetlen kapcsolatban használják. Habár ez az elrendezés a hagyományos és DEL-processzor szoros kapcsolatára épül, mégis ki tudja használni a szab- ványokra épülõ fürtözési technikát a nagyon gyors rend- szerek megvalósításához. Amikor ennél nagyobb rugalmasságra van szükség, alkalmazhatók a Hi-Bar kapcsolókra épülõ rendszerek. A Hi-Bar az SRC saját fejlesztésû skálázható, nagy sáv- 6. ábra A Carte programozói környezet szélességû és kis válaszidejû kapcsolója. Minden Hi-Bar támogatja a 64 bites címzést és 16 bemeneti valamint 16 kimeneti kapuval rendelkezik a 16 csomóponthoz való csatlakoztatáshoz. A Hi-Bar-hoz csatlakozhatnak mikro- processzorok, MAP-ek és közös memóriák bármilyen, a 4. ábrán is látható elrendezésben. Minden be- és ki- mentei kapu 1,4 GB/sec átviteli sebességgel rendelkezik, amely így egy kettéosztott 22,4 GB/sec sávszélességgé adódik össze a 16 kapun. A kapu-kapu késleltetés 180 ns a kapunkét megvalósított egyszeres hibajavítással és két- szeres hibaészleléssel (SECDED, Single Error Correction Double Error Detection). A Hi-Bar kapcsolók többsoros elrendezésben is összekap- csolhatók, lehetõvé téve, hogy két sor 256 csomópontot ke- zeljen. Minden Hi-Bar kapcsoló egy 2U magas, 19 hüvelyk széles keretszerelésû készülékházban foglal helyet a táp- egységével és a hûtõrendszerével együtt, így könnyen beépíthetõ a kiszolgálókeretekbe. A Hi-Bar kapcsolókkal megvalósított összekapcsolást 7. ábra A Carte fordításának folyamata használó SRC-kiszolgálók egyesítik a közös memória csomópontokat a mikroprocesszorokkal és a MAP-ekkel. gyártótól származó áramkörök az SRC által kifejlesz- Minden egyes közös memória csomópont saját intelligens tett SNAP-felülethez csatlakoznak. A SNAP lehetõvé DMA-vezérlõvel és akár 8 GB DDR SDRAM-mal rendel- teszi a hagyományos alaplapok csatolását és a memó- kezik. Az SRC-6 MAP-, SNAP- és közös memória csomó- riamegosztást a MAP processzorokkal és a közös pontjai (CM) 64 bites virtuális memóriacímzést használ- memóriacsomópontokkal, amelyek az SRC-rendszer nak a rendszerben lévõ összes memória címzéséhez, ami további észét képezik. lehetõvé teszi az alkalmazások számára, hogy egyetlen A SNAP-felületet úgy tervezték, hogy az ne a mikro- egybefüggõ memóriaként kezeljék a teljes rendelkezésre processzor ki/bemeneti alrendszerére, hanem közvetle- álló tárterületet. Minden csomópont 1,4 GB/s elsõbbségi nül a memória-alrendszerhez csatlakozzon, ezáltal lénye- írási és olvasási átviteli sebességgel rendelkezik. gesen nagyobb csatlakozási sávszélességet biztosítva. A CM intelligens DMA-vezérlõje olyan összetett DMA-

22 Linuxvilág Szaktekintély

amely összeköthetõ a futásidejû (C-ben 1. táblázat Karakter-összehasonlítási eredmények írt) programkönyvtárakkal, lefordítható és futtatható a rendszer mikroprocesszo- Megvalósítás Szövegméret Minta Keresési idõ Sebesség ros részén. Brute Force (Xeon) 20MB 6 0.827 sec 1.00× Az SRC Carte programozói környezet az- Boyer-Moore (Xeon) 20MB 6 0.597 sec 1.38× zal a tervezõi feltételezéssel készült, hogy az alkalmazásfejlesztõk az RC platformra Brute Force (MAP) 20MB 6 0.0143 sec 57.75× fogják fejleszteni és átültetni a programjai- Brute Force (Xeon) 20MB 10 1.398 sec 1.00× kat. Emiatt az SRC-6 rendszerre való fej- Boyer-Moore (Xeon) 20MB 10 1.051 sec 1.33× lesztés során a hagyományos fejlesztési és tervezési elvek érvényesülnek, Brute Force (MAP) 20MB 10 0.0141 sec 98.81× a magasszintû programnyelven (HLL) való kódolás, a programfordítás, a szabvá- nyos hibakeresõvel való ellenõrzés, a kód javítása. Csak amikor már hiba nélkül 2. táblázat Egy titkosított szövegben való keresés eredményei fut az alkalmazás egy mikroprocesszoros Megvalósítás Szövegméret Minta Keresési idõ Sebesség környezetben, akkor kerül sor a program © Kiskapu Kft. Minden jog fenntartva DES-Brute Force (Xeon) 20MB 6 2.77 sec 1.00× DEL-processzorra, a MAP-re történõ átfordítására. DES-Boyer-Moor (Xeon) 20MB 6 2.63 sec 1.05× Egy RC-rendszerre történõ programfordítás DES- Brute Force (MAP) 20MB 6 0.0143 sec 193.09× két olyan lépésbõl áll, amely meglehetõsen DES-Brute Force (Xeon) 20MB 10 3.31 sec 1.00× idegen az utasításvégrehajtó processzorra történõ programozáshoz képest. A HLL- DES-Boyer-Moor (Xeon) 20MB 10 3.11 sec 1.06× fordítóprogram kimenetének egy hardver- DES- Brute Force (MAP) 20MB 10 0.0143 sec 231.76× definíciós nyelvnek kell lennie. A Carte-ben ez vagy a Verilog vagy az EDIF (Electronic Design Interchange Format, elektronikus ter- mûveletek végrehajtására is képes, mint az adattömörítés, vezés adatcsere-formátuma). Az EDIF-fájlok azok a hardver- lépdelõ adatelérés éss a szórás/összegyûjtés a rendszer leíró objektumfájlok, amelyek az RC-lapkákban megvalósí- belsõ sávszélességének minél hatékonyabb kihasználására. tott áramköröket írják le. Ha a kimenet Verilog, akkor ezt A belsõ kapcsolatok hatékonysága tízszer akkora, mint a HDL-t EDIF formátumúra kell hozni egy olyan Verilog- az átmeneti tárhelyekre épülõ mikroprocesszoré, amely fordítóval mint a Synplicity Synplify nevû programja. ugyanezt az ilyen mûveletekhez általánosan használt Egy utolsó lépés, az elhelyezés és útvonalkijelölés, veszi az kapcsolatot alkalmazza. EDIF-fájlokból álló készletet és létrehozza az RC lapkán az Ráadásul az SRC közös memória csomópontjai kizárólagos áramkörök fizikai elrendezését. A folyamat bemeneti fájljai szemafor-kapcsolással rendelkeznek, amely szintén elérhetõ olyan konfigurációs bitfolyamok, amelyek az FPGA-ba Az összes MAP-processzor és mikroprocesszor számára tölthetõk az RC-processzorba programozandó algoritmus a szinkronizáláshoz. hardveres kialakításának létrehozása céljából. A C vagy Fortran nyelvbõl az FPGA által használható Az átszerkeszthetõ számítási mód programozási modellje bitfolyammá történõ fordítást a Carte programozói környe- Az RC programozási modellje a hagyományos elgondo- zet végzi el anélkül, hogy a programozónak a folyamatba lás szerint egy hardvertervezési szempont. Mivel az RC bele kellene avatkoznia. A program a mikroprocesszorokba alapját képezõ FPGA-technológia által megkövetelt esz- szánt kódokat tovább fordítja objektummodulokká. közök az elektronikai tervezési iparból származnak, egy A Carte számára az utolsó lépés annak az egységesített szoftverfejlesztõ tényleg nem sok eszközt találhatott isme- futtatható fájlnak a létrehozása, amely egyetlen linuxos rõsnek ezen a területen. Az eszközök az olyan hardverleíró futtatható fájllá olvassza össze a mikroprocesszor objektum- nyelveket (HDL) támogatták, mint a Verilog, VHDL és moduljait, a MAP-bitfolyamokat, és az összes szükséges a Schematic Capture. futtatói programkönyvtárat. A 6. és 7. ábrán a Carte fordító- A SOC-rendszerek (system-on-a-chip, egylapkás folyamatát láthatjuk. rendszer) technológiájának megjelenésével és az egyre összetettebbé váló hardverleíró meghatározásokkal A nyílt forráskód hardver-lehetõségei elérhetõ közelségbe kezdtek kerülni a magasszintû A Linux élen járt és jó hasznot húzott a nyílt forráskód programozási nyelvek. A Java és C-szerû nyelvek hasz- mozgalmából, amelynek során a programfejlesztõk egy nálata egyre általánosabb az RC-lapkák programozása elkötelezett csoportja létrehozta, és továbbfejlesztette terén. Ez egy nagymértékû elõrelépést jelent, ami azon- a Linux rendszermagját, mégpedig az újítások és minõség ban az alkalmazásprogramozóktól is jelentõs mértékû olyan szintjén, ami nem mérhetõ egyetlen kereskedelmi váltást követel. programokkal foglalkozó vállalathoz sem. Az átszerkeszt- Az SRC-programozási modell egy hagyományos prog- hetõ számítási módban megvan annak a lehetõsége, hogy ramfejlesztõ modell, amelyben a MAP-processzor progra- a hardver tervezési szintjén használja ki ezeket az újításo- mozására a C és a Fortran használatos, és bármely nyelv, kat és technikai elõnyöket. Ennek a cikknek a jelentõs

www.linuxvilag.hu 2005. július 23 Szaktekintély

része azzal foglalkozik, hogy bemutassa azt az elvet, a mikroprocesszor végrehajtási ideje megnövekszik, ahogyan az alkalmazások programozói a szabványos azonban a MAP futási idejére nincs hatással, köszönhetõ- programozói eljárásokat használva hozzák létre az alkal- en a párhuzamos végrehajtásnak. Bár a Xeon 2,8 GHz-en mazástól függõ hardvert, anélkül, hogy ismerniük kellene fut, a MAP pedig 100 MHz-en, a DEL párhuzamossága a hardver felépítését. Az RC-ben ennek ellenére az alkal- mégis 99-szeres teljesítményelõnyt biztosít a MAP számá- mazásprogramozók által létrehozott építõelemek a funk- ra. A példa a MAP egyetlen FPGA-jának 60%-át vette cionális egységek. Ezek az egységek olyan számítási alap- igénybe. Egy kétlapkás összeállítás több mint 200-szoros mûveleteket végeznek, mint az összeadás, lebegõpontos teljesítményt eredményezne. szorzás vagy a trigonometrikus függvények. A funkcionális Annak a bemutatására, hogy egy további számítás hoz- egységek ezen felül lehetnek olyan speciális nagyteljesít- záadása a csõvezetékkel ellátott ciklushoz miként befo- ményû egységek is, mint a háromszoros titkosítást lyásolja a teljesítményt és hogy szemléltetni tudjam az (DES) megvalósító függvény vagy egy olyan, nem szabvá- egyedi funkcionális egységek képességeit, egy másik nyos pontosságú aritmetikai egység, mint a 24 bites IEEE összehasonlítást is elvégeztem, amelyben a keresési eljá- lebegõpontos operátorok. rás egy DES-titkosítással kódolt szöveggel teszteltem. A funkcionális egységeket a logikai tervezõk hozzák létre. A szöveget a keresés elõtt dekódolni kell. A MAP megva- Az RC-fordítóprogramok, mint amilyen az SRC Carte lósításban egy DES csõvezetékes egységet alkalmaztam. MAP fordítója, képesek arra, hogy lehetõséget biztosítsa- A Verilog nyelvû leírás az Opencores.org oldalról szárma- © Kiskapu Kft. Minden jog fenntartva nak a fordítóprogram által támogatott szabványos operá- zik, ezt építettem be a keresési ciklusba. Mivel a ciklus torok mellett felhasználó által létrehozott funkcionális csõvezetéket alkalmaz, órajelenként egy egész eredmény- egységek hozzáadására. Ha ilyen újszerû és erede- halmazt szolgáltat. Emiatt a 20 MB-os szövegben való ti funkcionális egységeket teszünk elérhetõvé az alkalma- keresés és a DES-dekódolás becsült ideje nem változik zásprogramozók számára, még nagyobb teljesítmények a keresések számának növelésével. Ez vezet a megdöb- válhatnak elérhetõvé. bentõ 232-szeres sebességnövekedéshez a mikropro- A funkcionális egységek újszerû hardverfelépítésének létre- cesszoros megoldással szemben. A 10 mintás keresés hozása az a terület, ahol a nyílt hardver mozgalom jelentõs MAP megvalósítása csak az FPGA teljesítményének 70%- elõrelépést hozhat a számítástudományba. Az újítás és ter- át vette igénybe, így egy kétlapkás felépítés 460-szoros mékenység, amit a nyílt forráskód területén tapasztalhat- többletet eredményezne. tunk, most a nyílt hardver köntösében jelenhet meg újra. A Xeon processzoron megvalósított dekódolás Az RC még nagyon sok kreatív tervezõnek kínál esz- Stuart Levy (Minnesota Supercomputer Center) optimali- közt arra, hogy új és eredeti hardvert hozzon létre, zált kódját alkalmazta. amit azután az alkalmazásfejlesztõk hasznosíthatnak. Az Opensources.org-hoz hasonló csoportokon keresztül Összegzés pedig megoszthatók és továbbfejleszthetõk ezek a funk- Cikkemben elmagyaráztam az átszerkeszthetõ számítási cionális egységek. Az a jelentõs elõny, ami a nyílt forrású mód elvét, valamint példákat mutattam a módszerekre és programoknak köszönhetõen a számítástudományban az elérhetõ eredményekre. Látható, hogy nagyon jelentõs megmutatkozott, könnyen jelentkezhet egy nyílt hardverre teljesítménytöbblet érhetõ el ilyen módon. Jelenleg az RC összpontosító mozgalomban is. nagymértékben hozzájárulhat a számítástudomány további fejlõdéséhez és a jövõ is sokkal többet tartogat a számunk- Kódolási példa ra, mint az a mikroprocesszorok fejlõdésének Moore- A DEL-processzorban rejlõ teljesítményelõnyt egy ka- törvénye alapján várható lenne. Az RC már most elérhetõ rakterlánc-összehasonlító példán keresztül fogom megvi- a programozók számára, akik használhatják a megszokott lágítani. A példákhoz tartozó forráskód letölthetõ a Linux fejlesztõi modellt, és egy olyan keretrendszer is rendel- Journal FTP-oldaláról (lásd a kapcsolódó címeket). A példa kezésre áll, amellyel a hardvertervezõk szélesebb köre is Christian Charras és Thiery Lecroq honlapjáról származik bekapcsolódhat a nagyteljesítményû számításokba a nyílt és a NIST Dictionary of Algorithms and Data Structures forrás biztosította kreativitás és alkotóerõ kihasználásával. (az algoritmusok és adatszerkezetek NIST szótára) hi- Az RC már hosszú ideje jelen van, a jelenlegi szoftver- és vatkozik rá. Összehasonlításképpen a „nyers erõ” és hardvertechnológia megteremtette annak a lehetõségét, a Boyer-Moore féle karakterlánc-összehasonlító algorit- hogy minden számítógépnek a részévé váljon a beépített must valósítjuk meg egy 2,8 GHz-es Intel Xeon processzo- processzoroktól a Peta-Scale szuperszámítógépekig. ron az Intel C++ 8.0 Linuxos fordítóprogramjával. A „nyers erõ” algoritmust az SRC-rendszerhez a Carte 1.8 Linux Journal 2005. január, 129. szám verziójú programozói környezettel állítjuk elõ. A „nyers erõ” algoritmus egy egyszerû karakterenkénti összehason- Kapcsolódó címek:  www.linuxjournal.com/article/7867 lítást végez a karakterlánc és a minta között. A Boyer- Moore algoritmust tekintik a leghatékonyabb karakter- Dan Poznanovic ([email protected]) a szoftver- láncösszehasonlító eljárásnak. A példában egy 20 MB-os fejlesztés vezetõje az SRC Computers-nél. véletlenszerûen elõállított szövegben keresünk hat illetve A nagyteljesítményû számítások kutatásában tíz mintát. A fordításokat -O3 optimalizáló beállítással 1987 óta vesz részt, amikor a Cray Research végeztük. Az összehasonlító eredményeket az 1. táblázat céghez csatlakozott. tartalmazza. További keresési mintákat adva a feladathoz

24 Linuxvilág Szaktekintély

ATA Over Ethernet: merevlemezek a helyi hálózaton Napjainkra az ATA felületû merevlemezek olcsóbbak lettek, mint a szalagok, a címben szereplõ egyszerû, új megoldással pedig archívumok, biztonsági mentések vagy éles használat céljára építhetünk tárolótömböket. © Kiskapu Kft. Minden jog fenntartva

lõbb-utóbb mindenki kifogy a tárolóhelybõl. Szeren- Például hatalmas kapacitású blokkos eszközöket hasz- csére a merevlemezek egyre olcsóbbak, miközben nálhatunk, messze túlnyúlva a régi két TB-os határon, kapacitásuk folyamatosan növekedik. Hiába azon- és nagyobb számú lemez egyidejû csatlakoztatása sem Eban a több hely, hiszen egyre többet használunk el, így újra okozhat gondot. Szintén fontos fejlesztés a tárolókötetek szûkébe kerülünk. kifinomult kezelése, ahogy a fájlrendszerek is hatalmas Bizonyos adatfajták természetüknél fogva méretesek. méretûekre hízhatnak, akár becsatolt állapotban, haszná- A mozgóképek például mindig nagy mennyiségû helyet lat közben is. foglalnak. A vállalkozásoknak sokszor kell mozgóképeket Írásomban ismertetem, hogyan aknázhatjuk ki a rendszer- tárolniuk, különösen, mióta elkezdõdött a videómegfigyelõ mag új szolgáltatásaiban rejlõ lehetõségeket, hogyan vehet- rendszerek térnyerése. Sõt, még otthoni gépükön is sokan jük ki a lemezeket a számítógépekbõl, és hogyan léphetünk szeretnek filmeket nézni vagy szerkeszteni. túl a tárolók használatával és kapacitásával kapcsolatos A biztonsági mentés és a redundancia minden számítógé- korábbi korlátokon. Az ATA over Ethernetet (ATA Ethernet peket használó vállalkozás számára fontos fogalom. A való- felett, AoE) talán úgy szemlélhetjük, mint megoldást arra, ság nagyjából az, hogy bármennyi tárolókapacitásunk is hogy az IDE kábel helyére egy Ethernet hálózat kerüljön. van, sose árt még egy kicsit több. Elég csak arra gondolni, Ha az adattárolást leválasztjuk a számítógéprõl, és kihasz- hogy még az elektronikus leveleknek szánt tárolóhely is náljuk a két rendszerelem közötti Ethernet rugalmasságát, folyton kevés – az internetszolgáltatók bizonyára tudnának akkor a lehetõségeket csupán képzelõerõnk és új dolgok errõl mesélni. elsajátítására irányuló hajlandóságunk végessége fogja A korlátlan tárolóhely akkor válhat valósággá, ha a meghaj- korlátozni. tók kikerülnek a számítógépházból, és ezzel a tárolóeszkö- zök függetlenekké válnak az õket használó számítógépektõl. Mi az AoE? A rugalmasságnak az egymással együttmûködõ összetevõk Az ATA over Ethernet egy az IEEE-nél 0x88a2 azonosí- szétválasztásával elért növelésére több területen is láthatunk tóval bejegyzett Ethernet hálózati protokoll. Az AoE példát, nem csak az adattárolásén. A moduláris forráskód alacsony szintû, jóval egyszerûbb a TCP/IP-nél, sõt, rugalmasabban használható az elõre nem látott igények ki- az IP-nél is. A TCP/IP és az IP az internet esetében elégítésére, és egy több részbõl álló sztereó rendszer is érde- fontos megbízhatóságot növelõ feladatokat lát el, kesebb összeállításokban telepíthetõ, mint egy mindent ám a számítógépeknek komoly munkát jelent az ebbõl egyetlen dobozban tartalmazó. fakadó bonyolultság kezelése. A leginkább ismert példa a készen kapható adattárolásra ta- Az iSCSI-t használóknak nyilván ismerõs ez a TCP/IP-vel lán a tárolóhálózat (storage area network, SAN). Emlékszem, kapcsolatos gond. Az iSCSI egy másik megoldás be- és amikor a SAN-ok megjelentek, hatalmas zsongás vette õket kivitelek TCP/IP feletti továbbítására, segítségével olcsó körül, és elég nehéz volt kideríteni, hogy valójában mik is. Ethernet készülékekkel lehet helyettesíteni a költséges Fibre Amikor végre sikerült, csalódottan kellett tudomásul ven- Channel berendezéseket. Sok iSCSI-használó TCP teher- nem, hogy a SAN-ok bonyolultak, egy-egy gyártóhoz kö- mentesítõ motorokat (TCP offload engine, TOE) kezdett tõdnek és drágák. vásárolni. A TOE kártyák olcsók, és alkalmasak arra, A SAN-ok támogatása érdekében a linuxos közösség hogy az iSCSI-t használó gépek válláról levegyék a TCP/IP mindennek ellenére fontos módosításokat hajtott végre kezelésének terhét. a rendszermagban. A 2.6-os rendszermag újdonságainak Érdekes megfigyelés, hogy a gyakorlatban a legtöbb jelentõs részét a 2.4-es rendszermagsorozat nagyvállalati esetben az iSCSI-t nem internet felett használják. Ha a cso- használatra szánt tagjainak szolgáltatásai ihlették, és nap- magoknak egyszerûen a szomszéd szekrényben található jaink üzembiztos rendszermagjai számos olyan dolgot gépbe kell befutniuk, akkor a nehézsúlyú TCP/IP protokoll tudnak, amit néhány éve még nélkülöznünk kellett. használata túlzásnak tûnik.

www.linuxvilag.hu 2005. július 25 Szaktekintély

A TCP/IP tehermentesítés helyett tehát nem volna jobb, Stan, a levéltáros ha teljesen elhagynánk az internetes protokollt? Az ATA A következõ példa igaz történetre alapul. Stan egy képzelt over Ethernet protokoll pontosan ezt teszi, kihasználva rendszergazda, aki a helyi önkormányzatnak dolgozik. a napjainkban kapható olcsó kapcsolók által kínált lehetõ- Az új rendelkezések szerint minden hivatalos dokumentu- ségeket. A korszerû kapcsolók képesek a folyamvezérlés- mot maradandóan archiválni kell. A város bármely polgára re, maximális átviteli sebességet és minimális csomagüt- bármikor betekintést kérhet bármelyik dokumentumba. közést biztosítva. A helyi hálózaton (local area network. Stannek tehát hatalmas és korlátok nélkül bõvíthetõ LAN) a csomagok sorrendje nem változik meg, és a háló- tárolóhelyre van szüksége, ugyanakkor a tárolóeszköz tel- zati hardver minden csomag sértetlenségét ellenõrzõ jesítményének nem kell jobbnak lennie, mint egy átlagos, összeggel védi. helyi, ATA felületû lemezének. Célja az, hogy minden ada- Minden AoE-csomag vagy egy ATA meghajtónak szóló pa- tot könnyen és gyorsan elõ lehessen keresni. rancsot, vagy egy ATA meghajtótól érkezõ választ hordoz. Stan ismeri az Ethernet hálózatokat és a linuxos rendszere- A Linux rendszermag AoE illesztõprogramja minden AoE- ket, ezért az ATA over Ethernet kipróbálása mellett dönt. mûveletet elvégez, és a távoli lemezeket normál, blokkos Vásárol néhány eszközt; összesen kevesebb mint 6500 eszközökként teszi elérhetõkké, ilyen például a /dev/etherd/ dollárt fizetve az alábbiakért: e0.0. Az IDE illesztõprogram hasonlóan gondoskodik az IDE kábel végén található helyi meghajtó például /dev/hda • Egy darab kétkapus Ethernet kártya, a kiszolgáló régi, © Kiskapu Kft. Minden jog fenntartva alatti elérhetõségérõl. Az illesztõprogram szükség esetén 100 Mbps sebességû kártyája helyett a csomagok újraküldését is elvégzi, vagyis az AoE eszközök a rendszermag többi része számára tökéletesen egyenérté- • Egy darab 26 kapus hálózati kapcsoló kettõ darab kûek a többi lemezzel. gigabites kapuval Az ATA parancsok továbbítása mellett az AoE lekérdezõ csomagokkal a rendelkezésre álló AoE eszközöket is képes • Egy darab Coraid EtherDrive polc és tíz darab egyszerû módon azonosítani. Ennyi is az egész: ATA pa- EtherDrive fiók rancscsomagok és lekérdezõ csomagok. Aki már dolgozott SAN-nal, vagy legalábbis tanult az • Tíz darab 400 GB-os ATA meghajtó ilyen rendszerekrõl, bizonyára megdöbbenve mered maga elé: ha minden lemez a LAN-ra csatlakozik, hogyan A tíz fiókot befogadó polc három egység magas. Minden lehet korlátozni az elérésüket? Vagyis hogyan biztosítha- EtherDrive fiók egy-egy kisméretû számítógép, mely az AoE tó, hogy az A gép feltörése után a B gép lemezei bizton- protokoll kezelésével hatékony módon illeszt a hálózatra ságban maradjanak? egy-egy ATA lemezt. Az adatokat csíkozással elosztva a polc A válasz onnan indul, hogy az AoE nem irányítható. fiókjai között hasonló teljesítményt kapunk, mint helyi ATA Azt, hogy mely számítógépek mely lemezeket látják, meghajtókkal, tehát a gigabites összeköttetéssel hatékonyan egyszerûen, alkalmi (ad hoc) Ethernet hálózatok összeállí- ki tudjuk használni a rendelkezésünkre álló átviteli kapaci- tásával határozhatjuk meg. Mivel az AoE készülékek nem tást. Bár Stan megtehette volna, hogy az EtherDrive fióko- rendelkeznek IP-címmel, nem okoz nehézséget az elszi- kat ugyanarra a hálózatra csatlakoztatja, amire mindenki getelt Ethernet hálózatok létrehozása. Egyszerûen adjunk más is kapcsolódik, ám biztonsági és teljesítménybeli szem- áramot a kapcsolónak, majd csatlakoztassuk hozzá a kí- pontok miatt inkább úgy döntött, hogy a tárolórendszert vánt rendszerelemeket. Emellett sok újabb kapcsoló kapu külön hálózatra helyezi, és a kiszolgáló második kapujához, alapú VLAN szolgáltatást is nyújt, amivel a kapcsolót ha- az eth1 csatolóhoz kapcsolja. tékonyan lehet különálló, egymástól elválasztott szórási Stan átolvassa a Linux Software RAID HOGYAN-t tartományokra osztani. (lásd az internetes forrásokat), majd úgy határoz, hogy Az AoE protokoll annyira egyszerû, hogy olcsó vassal RAID 10 csíkozást használ, tükrözött lemezpárok felett. is használható. Jelenleg a Coraid az egyetlen gyártó, Bár ezzel a megoldással kevesebb tárkapacitást kap, mint- mely AoE eszközöket kínál, ám várható, hogy hamaro- ha RAID 5-öt használna, viszont a RAID 10 a lehetõ leg- san további gyártók és alkalmazásfejlesztõk is felfede- jobb megbízhatóságot nyújtja, miközben a processzorra zik majd, hogy az AoE leírása csupán nyolc oldal a RAID kezelése miatt háruló többletterhelés minimális hosszú. Érdemes ezt az egyszerûséget szembeállítani marad, valamint a tömb újraépítése is rövidebb ideig tart, az iSCSI több száz oldalas, többek közt titkosítási szol- ha egy-egy lemez kiesik. gáltatásokat, forgalomirányítást és felhasználó alapú Az LVM HOGYAN (lásd a forrásokat) átolvasása után Stan hozzáférés-kezelést taglaló leírásával. A bonyolultság kidolgoz egy tervet, amellyel elkerülheti, hogy valaha is el- mindig költséggel jár, és most már választhatunk, fogyjon a szabad tárhely. A JFS fájlrendszer képes dinami- hogy igényeljük ezt a bonyolultságot, vagy inkább kusan méretezõdni akár egészen nagyra is, vagyis Stan JFS-t megtartjuk az árát. tesz egy logikai kötetre. A logikai kötet ebben az esetben A legegyszerûbb eszközök is lehetnek hatásosak. csak egy fizikai kötetre terjed ki, ez pedig a RAID 10 blokkos A Linux-felhasználók számára aligha újdonság, hogy eszköz lesz. A RAID 10 a Coraid polcban lévõ EtherDrive fió- egyszerûsége ellenére az AoE lehetõségek elképesztõ kokból jön létre, a Linux szoftveres RAID megoldásával. választékát kínálja, ha az adattárolás egyszer átkerült Ha késõbb újabb polcra lesz szüksége, akkor majd létrehoz a hálózatra. Nézzünk tehát egy tényleges példát, majd egy másik RAID 10 készletet, abból lesz egy fizikai kötet, vizsgáljuk meg a lehetõségeket. amelyre kiterjeszti a JFS-t tartalmazó logikai kötetet.

26 Linuxvilág Szaktekintély

1. kódrészlet Egy nagyszámú AoE meghajtóból 2. kódrészlet A szoftveres RAID és az LVM álló szoftveres RAID eszköz létrehozásának elsõ lépése kötetcsoport beállítása az AoE telepítése, beállítása # A RAID kezdeti értékadásának felgyorsítása # A gazdagép beállítása AoE használatára for f in `find /proc | grep speed`; do # az AoE illesztõprogram lefordítása echo 100000 > $f # és telepítése done tar xvfz aoe-2.6-5.tar.gz # Tükrök létrehozása (az mdadm kezeli a forró cd aoe-2.6-5 # tartalékokat) make AOE_PARTITIONS=1 install mdadm -C /dev/md1 -l 1 -n 2 \ # Az AoE nem igényel IP-címet! :) /dev/etherd/e0.0 /dev/etherd/e0.1 ifconfig eth1 up mdadm -C /dev/md2 -l 1 -n 2 \ # A hálózati csatoló felélesztése /dev/etherd/e0.2 /dev/etherd/e0.3 sleep 5 mdadm -C /dev/md3 -l 1 -n 2 \ # Az ATA over Ethernet illesztõprogram betöltése /dev/etherd/e0.4 /dev/etherd/e0.5 modprobe aoe mdadm -C /dev/md4 -l 1 -n 2 -x 2 \ © Kiskapu Kft. Minden jog fenntartva # A rendelkezésre álló AoE lemezek megtekintése /dev/etherd/e0.6 /dev/etherd/e0.7 \ aoe-stat /dev/etherd/e0.8 /dev/etherd/e0.9 sleep 1 # A csík létrehozása a tükrök felett mdadm -C /dev/md0 -l 0 -n 4 \ Az 1. kódrészlet azokat a parancsokat tartalmazza, amelyeket /dev/md1 /dev/md2 /dev/md3 /dev/md4 Stan a kiszolgáló ATA over Ethernet elõkészítésére használ. # A RAID 10 megfeleltetése LVM fizikai kötetnek Az AoE illesztõprogramot az AOE_PARTITIONS=1 átadott pvcreate /dev/md0 értékkel fordítja le, ugyanis 2.6-os rendszermagot futtató # Bõvíthetõ LVM kötetcsoport létrehozása Debian sarge rendszere van. A sarge jelenleg nem támo- vgcreate ben /dev/md0 gatja a nagyobb értékû eszköz-alazonosítókat (lásd az # A fizikai kiterjedés vizsgálata Alazonosítók címû széljegyzetet), ezért kikapcsolja a leme- vgdisplay ben | grep -i ‘free.*PE’ zek részekre osztásának támogatását, így ugyanis több le- # A teljes helyre kiterjedõ logikai kötet mezt tud használni. Figyelembe véve a Debian 292070-es # létrehozása számú hibáját, Stan telepíti a legújabb eszközleképezõt lvcreate —extents 88349 —name franklin ben és az LVM2 felhasználói programokat. modprobe jfs mkfs -t jfs /dev/ben/franklin Alazonosítók mkdir /bf Ha egy program használni akar egy eszközt, akkor ezt mount /dev/ben/franklin /bf jellemzõen az eszközhöz tartozó különleges fájl megnyitá- sával teszi. Jól ismert példa a /dev/hda fájl. Ha kiadjuk az ls -l parancsot, akkor a /dev/hda esetében két számot látunk, ezek a 3 és a 0. A /dev/hda1 fájl alazonosítója 1, A fájlrendszer és a logikai kötet létrehozására használt fõazonosítója viszont szintén 3. parancsokat a 2. kódrészlet tartalmazza. Stan a kötet- A 2.6-os rendszermag megjelenése elõtt az alazonosító áb- csoportnak a ben, a logikai kötetnek pedig a franklin rázolása nyolc biten történt, vagyis értéke 0 és 255 között le- nevet adja. Ezután módosítania kell néhány dolgot hetett. Mivel senkinek nem volt ilyen sok eszköze, a korlát az LVM2 beállításaiban. Elõször is, szükség lesz egy tulajdonképpen senkit nem zavart. Most, hogy a lemezeket types = [ “aoe”, 16 ] sorra, ami lehetõvé teszi, hogy le lehet választani a kiszolgálókról, megváltozott a helyzet, az LVM felismerje az AoE lemezeket. Ugyancsak szükség ezért a 2.6-os rendszermag már 20 biten ábrázolja az eszkö- van az md_component_detection = 1 sorra, amelynek zök alazonosítóját. hatására a gép a RAID 10 készleten belüli lemezeket Így az alazonosító 1048576-féle értéket vehet fel, ami nagy se- figyelmen kívül hagyja, miután a teljes RAID 10 készlet gítség ahhoz, hogy a rendszerekhez nagyszámú eszközt tud- egyetlen a fizikai kötetet alkot. junk csatlakoztatni – csakhogy a változást nem minden prog- Stan rendszerét magam is összeállítottam, Debian ram követte. Ha a glibc vagy valamelyik alkalmazás azt hiszi, sarge operációs rendszerrel, kettõ darab 2,1 GHz-es hogy az alazonosítók még mindig nyolcbitesek, akkor gond- Athlon MP processzorral, 1 GB memóriával és egy jaink lesznek a 255-nél nagyobb alazonosítók használatával. Intel PRO/1000 MT kétkapus hálózati kártyával, ma Az átmenetet segíti, hogy az AoE illesztõprogramot a le- már elavulófélben lévõnek számító 40 GB-os meghaj- mezrészek támogatása nélkül is le lehet fordítani. Ilyenkor tókkal. Hálózati kapcsolóként egy Netgear FS526T készü- egy-egy lemezhez 16 helyett csak egyetlen egy alazonosító léket használtam. Ha a RAID 10 készletet nyolc darab tartozik. Nem baj tehát, ha a rendszer nem ismeri még EtherDrive fiókra terjesztettem ki, akkor 23,58 MBps a 2.6-os nagyméretû eszköz-alazonosítóit, akár 256 AoE folyamatos olvasási és 17,45 MBps folyamatos írási lemezt is használhatunk. sebességet sikerült elérnem. A mérések elvégzése elõtt

www.linuxvilag.hu 2005. július 27 Szaktekintély

hasonlóan egyetlen állomással való használatra tervezték. 3. kódrészlet Leválasztása nélkül úgy tudjuk bõvíteni Az ilyen „egygépes” fájlrendszerek megsérülhetnek, ha a fájlrendszert, hogy létrehozunk egy második RAID 10 ugyanazt a blokkos tárolóeszközt több állomás is befûzi. készletet, hozzáadjuk a kötetcsoporthoz, majd kiterjeszt- Ennek oka a puffer gyorsítótárban keresendõ, ami a 2.6-os jük a fájlrendszert rendszermagokban egyesítve van a lapgyorsítótárral. A Linux meglehetõsen rámenõs módon, minden lehetõsé- # A második polc RAID 10 készletét get megragadva gyorsítótárazza a fájlrendszer adatait # létrehozása után a memóriában, kerülve a lassú blokkos tárolóeszközök # /dev/md5-ként adjuk hozzá a kötetcsoporthoz használatát, és ezzel javítva a teljesítményt. vgextend ben /dev/md5 A gyorsítótárazás hatékonyságáról bárki meggyõzõdhet, vgdisplay ben | grep -i ‘free.*PE’ ha kétszer egymás után lefuttat egy find parancsot # A logikai kötet majd a jfs megnövelése ugyanazon a könyvtáron. lvextend —extents +88349 /dev/ben/franklin Bizonyos fájlrendszereket úgy terveztek, hogy több állomás mount -o remount,resize /bf is használhassa õket. Az úgynevezett fürtfájlrendszerek pél- dául megfelelõ eljárásokat tartalmaznak annak biztosítására, hogy az összes állomás gyorsítótára összhangban maradjon a fájlrendszerrel. Kiváló példa erre a nyílt forrású GFS. © Kiskapu Kft. Minden jog fenntartva egy 1 GB-os fájlt a /dev/nullba másolva kiürítettem A GFS külön fürtkezelõ programot használ annak követésé- a gyorsítótárat, az írási idõbe pedig egy sync parancs re, hogy ki szerepel a fájlrendszert használó állomások cso- végrehajtását is belevettem. portjában. A fájlrendszert elérõ állomások együttmûködését Ebben az esetben a RAID 10 készletnek négy csíkeleme zárak segítségével biztosítja. volt, mindegyik egy pár tükrözött meghajtóból állt. Általá- Fürtfájlrendszer, például GFS használatával megoldható, nos esetben egy EtherDrive fiókokból álló készlet átviteli hogy az Ethernet hálózat több állomása is használhassa ATA sebességét a csíkelemek száma alapján tudjuk megbecsülni. over Ethernet felett ugyanazt a blokkos tárolóeszközt. Ilyen- Egy RAID 10 készletben feleannyi csíkelem van, mint le- kor nincs szükség például NFS-kiszolgálóra, hiszen mind- mez, hiszen minden lemez tükrözve van egy másikra. egyik állomás közvetlenül, a be- és kiviteleket szépen eloszt- A RAID 5 esetében egy lemez tárolja a paritásadatokat, va éri el a tárolóeszközt. Van azonban egy kis bökkenõ. Mi- a több lemez pedig csíkelemként veendõ figyelembe. nél nagyobb számú lemezt használunk, annál nagyobb a va- A várható olvasási sebesség a csíkelemek száma szorozva lószínûsége annak, hogy az egyik meghibásodik. Ezt a prob- 6 MBps-mal. Ha tehát Stan a nyolc fiókból álló RAID 10 lémát általában RAID használatával szokták orvosolni, némi készlet helyett két polcot vásárolt volna, és a készletet 18 redundanciát hozva a rendszerbe. Sajnos a Linux szoftveres meghajtóból állította volna össze, akkor valamivel több, RAID-je nem képes a fürtök kezelésére. Nincs tehát mód mint kétszer ekkora átviteli sebességet kapott volna. Stan arra, hogy a hálózat összes állomása RAID 10 készletet és azonban nem igényel ekkora átviteli sebességet, és egy mdadm-et használjon. viszonylag kisméretû, 1,6 TB-os fájlrendszer is megfelel A Linux fürtkezelése ugyanakkor elképesztõ tempóban fej- az igényeinek. lõdik. Biztos vagyok abban, hogy egy-két év múlva kiváló, A 3. kódrészlet azt szemlélteti, hogy Stan milyen könnyen ki fürtképes RAID áll majd rendelkezésünkre. Addig is azon- tudja bõvíteni a fájlrendszert, ha vásárol egy második pol- ban más megoldásokat kell keresnünk az AoE alapú fürtök cot is. A kódrészletben Stan mdadm-aoe.conf fájlja és indító megosztására. Az alapötlet az, hogy központosítsuk a RAID és leállító parancsfájljai nem szerepelnek. A figyelõ módban szolgáltatást. Vásárolhatunk például egy vagy két Coraid futó mdadm folyamattal az mdadm beállító fájl közli a forró RAIDBlade vezérlõt, majd a fürtcsomópontokkal az ezeken tartalékok kezelési módját, így ezekkel bármikor helyettesí- keresztül exportált tárolóeszközt érhetjük el. A RAIDBlade teni lehet bármelyik meghibásodott tükör bármelyik meg- vezérlõk minden mögöttük lévõ EtherDrive fiókot képesek hajtóját. Lásd még az mdadm man oldalának tartalékcsopor- kezelni. Ha szeretünk barkácsolni, akkor ugyanezt a felada- tok (spare groups) címû részét. tot egy linuxos, szoftveres RAID-et futtató géppel is meg- Az indító és leállító parancsfájlokat könnyen össze lehet oldhatjuk, mely ATA over Etherneten keresztül maga teszi állítani. Az indító parancsfájl egyszerûen összeállítja a tük- elérhetõvé a lemezhibáktól mentesített blokkos tárolóesz- rözött RAID 1 majd a RAID 0 készleteket, végül elindít egy közt. Például a vblade program (lásd a forrásokat) képes mdadm figyelõ folyamatot. A leállító parancsfájl leállítja az tetszõleges tárolóeszközt elérhetõvé tenni ATA over mdadm figyelõt, melyet követõen leállítja elõször a RAID 0, Etherneten keresztül. majd a tükrözött készleteket. Biztonsági mentés Blokkos tárolóeszköz megosztása Mivel az ATA over Ethernet olcsó merevlemezeket csatla- Láttuk, hogyan mûködik az ATA over Ethernet, és az ol- koztat az Ethernet hálózatra, akár biztonsági mentések vasóban bizonyára felmerül a kérdés: vajon mi történik, készítésére is alkalmazható. A mentési stratégia sokszor ha egy másik állomás is hozzá szeretne férni a tárolóháló- másodvonalbeli adattárolást is magába foglal, vagyis olyan zathoz? Van arra lehetõség, hogy a második állomás is tárolóeszközt, amely ugyan nem olyan gyors, mint az éles befûzze a JFS fájlrendszert, és hozzáférjen ugyanazokhoz rendszer, de könnyebben hozzáférhetõ, mint a szalagos. az adatokhoz? Nos, biztonságosan erre nincs mód. A JFS-t Az ATA over Ethernet segítségével olcsó ATA meghajtókat az ext3-hoz és a többi fájlrendszer túlnyomó részéhez használhatunk másodvonalbeli adattároló eszközökként.

28 Linuxvilág Szaktekintély

Sõt! Ha ilyen olcsó merevlemezeink vannak, és ennyire Az ATA over Ethernet olyan egyszerû alternatíva, üzembiztos szoftveres RAID-et tudunk alkalmazni, miért is amely eddig egyszerûen hiányzott a linuxos adattárolá- ne használhatnánk mentési adathordozóként a merevleme- si lehetõségek közül. Az egyszerûség egyben lehetõsége- zeket? A szalagokkal ellentétben ezek azonnali hozzáférést ket is jelent. Az AoE által biztosított alapra tetszõleges biztosítanak bármely archivált fájlhoz. adattároló megoldást felépíthetünk. Mindenkit szeretnék Sok új biztonsági mentési alkalmazás a fájlrendszerek arra buzdítani, hogy engedje szabadjára a képzeletét, mentési szolgáltatásait is képes kihasználni. Közvetlen majd írja meg nekem, hogy milyen rendszert sikerült hivatkozásokkal több teljes mentést is képesek elvégezni, felépítenie. a növekményes mentések hatékonyságával. További tud- nivalók az internetes források között szereplõ Backup PC Köszönetnyilvánítás és rsync hivatkozások révén érhetõk el. Értékes visszajelzéseiért köszönettel tartozom Peter Andersonnak, Brantley Coile-nak és Al Dixonnak. Szintén Összefoglalás szeretném megköszönni Brantley-nek és Sam Hopkinsnak, Olcsó merevlemezek közvetlenül a hálózaton – jogos a kér- hogy ilyen kiváló tárolóprotokollt fejlesztettek ki. dés, hogyhogy korábban senkinek nem jutott eszébe? Az adattárolás a kiszolgálóktól való elválasztását érdemes lehet Linux Journal 2005. június, 134. szám valamilyen egyszerû hálózati protokoll segítségével végez- ni, drága eszközök nélkül – még ha az egyszerû protokoll A cikkhez tartozó források elérhetõsége: © Kiskapu Kft. Minden jog fenntartva használhatósága a helyi Ethernet hálózatra korlátozódik is.  www.linuxjournal.com/article/8201 A helyi hálózaton ugyanakkor nincs is szükség a mindenre kiterjedõ szolgáltatásokat nyújtó internetes protokollok, Ed L. Cashin 1997 óta különféle tudományos például a TCP/IP bonyolultságára és többletterhelésére. és linuxos szakmai területekkel foglalkozott, Ha az adattárolást a helyi hálózatra akarjuk korlátozni, volt már webalkalmazás-fejlesztõ, rendszergaz- és az Ethernet hálózatok kiépítése révén kapott hozzáfé- da és rendszermag-programozó egyaránt. Jelen- résvezérlés kielégíti az igényeinket, akkor az ATA over leg a Coraid munkatársa, itt történt az ATA over Ethernet számunkra a megfelelõ választás. Ha a tárolópro- Ethernet kifejlesztése. Az [email protected] tokolltól titkosítási, irányíthatósági és felhasználó alapú címen érhetõ el. Miközben harcmûvészeti hozzáférés-vezérlési szolgáltatásokat várunk, akkor az óráira tart, legszívesebben zenét és hangos iSCSI-val érdemes barátkoznunk. könyveket hallgat.

www.linuxvilag.hu 2005. július 29 Szaktekintély

e-könyvek átalakítása nyílt formátumokra Az e-könyvek a gyártófüggõ formátumok elképesztõ kavalkádját hozták maguk- kal. Alakítsuk hát HTML formátumúra õket, így bármilyen eszközön meg tudjuk jeleníteni tartalmukat! © Kiskapu Kft. Minden jog fenntartva

digitális formátumú könyvek, e-könyve (elektronikus könyvek, e-book) olyan készü- lékeken jeleníthetõk meg, amelyek általában túlAkevés erõforrással rendelkeznek egy normál webböngészõ futtatásához. Sok kiadó, a Project Gutenberghez hasonló tervezeteket már nem is említ- ve, több ezer új és klasszikus kiadványt jelentetett meg digitális formában. Baj egyrészt a hardverrel van – legyen szó akár általános célú zsebtitkárról, akár cél- készülékrõl –, másrészt magával az e-könyvek kiadásá- val foglalkozó ágazattal, amely jóval széttöredezettebb, mint a személyi számítógépek és a webböngészõk piaca. Lehet tehát, hogy megveszünk ma egy e-könyvet, és tíz év múlva már nem tudjuk elolvasni – sõt, lehet, hogy már holnap sem, ha például új hordozható gé- pet vagy zsebtitkárt vásárlunk. Mivel a széttagoltság elleni fellépés sokak érdeke, írásomban néhány olyan parancssori eszközt szeretnék ismertetni, amelyek se- gítségével a népszerûbb formátumú e-könyveket ASCII vagy HTML formátumú anyagokká tudjuk alakítani. Jelenleg gyakorlatilag nem léteznek eszközök az e-könyv formátumok PDF vagy OpenDocument for- 1. ábra PalmDoc fájl böngészõben jobban megjeleníthetõ mátumba (az OpenOffice.org által használt új OASIS HTML formátumúra alakítva szabvány) történõ kimentésére; szerencsére ez nem jelenti azt, hogy az átalakítás ne volna megoldható. A szabványból késõbb több változat is kialakult, többek Ha egyszer a szöveg már ASCII vagy HTML formátumot közt az alapszintû formátumot HTML címkékkel bõvítõ kapott, szövegböngészõ – például w3m – vagy egyéb MobiPocket. program – mint a html2ps – segítségével már könnyedén Minden Palm e-könyv három részbõl áll: a fejrészbõl, átalakítható egyszerû szöveggé vagy PDF fájllá. Ha ezt a szövegrekordok sorozatából és a könyvjelzõk soro- az utat választjuk az átalakításra, akkor azt akár már zatából. Alapesetben a fejrész 16 bájtos, bizonyos ma is elvégezhetjük, hiszen utóbbi nyílt formátum, Doc-olvasók ezt futási idõben, egyedi adatok tárolása ahogy 20 év múlva is az lesz. céljából kibõvítik. Alapesetben a fejrész adja meg többek közt a tömörítetlen szöveg teljes hosszát, a pillanatnyi- PalmDoc lag megjelenített rész pozícióját, illetve tartalmaz egy PalmOS alatt az eredeti és legelterjedtebb e-könyv két bájtos, elõjel nélküli egész számokból álló tömböt, formátum a PalmDoc, más néven AportisDoc vagy mely az egyes szövegrekordok tömörítetlen méretét jelzi. egyszerûen Doc; nem keverendõ össze a Microsoft A rekordok maximális mérete jellemzõen 4096 bájt, Word hasonló nevû, .doc formátumával. A Doc formátu- és a rekordok tömörítése egyenként történik. mú fájlok a .pdb (Palm Database, Palm adatbázis) vagy A könyvjelzõ rekordok egy 16 bájtos névbõl és egy a .prc (Palm Resource Code, Palm erõforráskód) kiterjesz- 4 bájtos, a szöveg kezdetétõl számított eltolásból állnak. tésrõl ismerhetõk fel, mindkettõ lényegében összefûzött Mivel a könyvjelzõk elhagyhatók, sok Doc e-könyv rekordokat tartalmazó PalmPilot adatbázist rejt. nem is tartalmazza õket, a Doc-olvasók pedig sokszor

30 Linuxvilág Szaktekintély

A parancsfájl betölti a teljes korábban a Publisher 1. kódrészlet Egyszerû Perl parancsfájl segítségével létrehozott ASCII szöveget, és minden a Pyrite által kimentett szöveg alkalommal, amikor új sor karaktert talál, a helyére HTML-lé alakítására a bekezdés HTML címkéjét illeszti. Az alapszintû HTML formázású eredményt a szabványos kimenetre írja ki. Ha meg akarjuk változtatni az igazítást, a betû- #! /usr/bin/perl típust vagy a színeket, akkor csak annyit kell tennünk, undef $/; hogy a megfelelõ stíluslapot beillesztjük a $TEXT = <>; sor mögé. $TEXT =~ s/\n\n/

/gm; A várhatóan 2005 tavaszán megjelenõ OpenOffice.org 2.0 print < Ha olvasni is képes lesz az ilyen fájlokat, akkor tömeges $TEXT átalakítási szolgáltatásával (File›AutoPilot›Document Converter) az egész átalakítási kérdés egy csapásra elegáns END_HTML megoldást nyer. Kipróbáltam a szolgáltatást az 1.9.m65-ös elõzetes kiadásban, de egyelõre csak egy általános ki/bevi- teli hibára utaló üzenetet sikerült kapnom. Remélhetõleg a késõbbi változatokban már tökéletesen fog mûködni © Kiskapu Kft. Minden jog fenntartva másféle, vagyis nem hordozható módszereket is támo- ez a szolgáltatás is. gatnak megadásukra. Az egyes olvasóprogramok saját kiterjesztései kategória, változatszám, illetve e-könyvek A P5 Perl csomag közötti hivatkozások megadására is alkalmasak lehetnek. A Pyrite Publishert elsõsorban normál HTML vagy Utóbbi adatok szinte mindig a .pdb vagy .rc fájlon kívül szöveges fájlok Palm gépeken olvasható formátumra tárolódnak, vagyis ne várjuk megõrzésüket, amikor alakítására készítették, a több lehetõség inkább mel- e-könyveinket átalakítjuk. lékhatásként fogható fel. A fent ismertetett eljárás A Pyrite Publisher, korábbi nevén Doc Toolkit egy csak nehézkesen alkalmazható, ha például nagy tartalomátalakító eszközöket magába foglaló készlet mennyiségû, egyedi HTML címkéket, hiperhivat- Palm rendszerekhez. Jelenleg csak néhány szövegformá- kozásokat és metaadatokat tartalmazó palmos e-köny- tum átalakítására van lehetõség, ám szolgáltatásait vet kell átalakítani. Ilyenkor a legjobb megoldás egy Python beépülõ modulok segítségével bõvíteni is lehet. Perl parancsfájl alkalmazása, igénybe véve a nyelv A Pyrite Publisher alkalmas az átalakítandó dokumen- szabványos XML vagy HTML és P5-Palm moduljait. tumok közvetlenül, webrõl történõ letöltésére és a letöl- A modulokat a Comprehensive Perl Archive Network tött könyvjelzõk közvetlenül a kimeneti adatbázisba (lásd az internetes forrásokat) webhelyrõl lehet elérni. való beillesztésére is. A csomag használatához 2.1-es A P5-Palm modulkészletben található osztályok segít- vagy újabb Python szükséges, futtatása pedig parancs- ségével a PalmOs alapú készülékek által használt .pdb sorból vagy a wxWindows alapú grafikus felülettel és .prc adatbázisfájlok olvasása, feldolgozása és írása történik. A program Linux és Windows alá érhetõ el, egyaránt megoldható. forrás és bináris fájl formájában egyaránt. Ha az utóbbit választjuk, akkor ne feledjük el, hogy a legtöbb elõre A Rocket Ebook és a MobiPocket lefordított program a /usr könyvtárban keresi a Pythont. A RocketBook e-könyvek több érdekes jellegzetesség- A linuxos változat az átalakított fájlokat a JPilot vagy gel is rendelkeznek, például támogatják a tömörített a pilot-link segítségével azonnal át tudja másolni zseb- HTML fájlokat, valamint a bekezdések formázásait és titkárra is. a hivatkozási nevek pozícióit összegzõ indexeket. Ezek- A Pyrite telepítése és futtatása Fedora Core 2 alatt problé- rõl és az .rb fájlok pontos felépítésérõl az internetes mátlan volt. Az egyéb, késõbb említendõ parancssori átala- források között található, az RB formátumot ismertetõ kítókkal ellentétben a Pyrite csak ASCII formátumba tud oldalon lehet bõvebben olvasni. A Rocket Ebook és menteni, HTML-be nem. A futtatható fájl neve pyrpub. a Mobipocket fájlokat szétbontani az Rbmake nevû A .pdb fájlok átalakításához a következõ parancsformátu- parancssori eszközkészlettel lehet. A készlet honlapján mot kell használni: forráskódot, bináris csomagokat, levelezési listát és hiba- jelentések elküldésére alkalmas címet egyaránt találunk. pyrpub -P TextOutput -o don_quixote.txt \ Az rbmake használatához szükség van a libxml2 2.3.1-es Don_Quixote.pdb vagy újabb változatára, a pcre (Perl-Compatible Regular Expressions) könyvtárra, illetve a tömörítések kezelése Ha csak gyorsan tárgymutatót akarunk készíteni egy digitá- miatt a zlib-re. A forrásból történõ fordítás elvégzéséhez lis könyvtárról, akkor a Pyrite-on kívül másra nem is lesz – legalábbis Fedora Core 2 alatt – külön telepíteni kell szükségünk. Ugyanakkor a kimenetet nem nehéz tovább a pcre-devel csomagot is. formázni, amivel böngészõben is könnyebben olvashatóvá válik. Az alábbi, Perlben készült kódrészlet ugyan csúnya, Az Rbmake könyvtár ám tökéletesen megfelel a Don Quixote HTML változatának Az Rbmake egyik pozitívuma modulárisan összeállított elõállítására. (1. kódrészlet) forráskódja. Ha úgy akarjuk, egy teljes objektumorientált

www.linuxvilag.hu 2005. július 31 Szaktekintély © Kiskapu Kft. Minden jog fenntartva

2. ábra Az Rbmake a RocketBook fájlok összes 2. ábra A Convert Lit jól olvasható HTML összetevõjét kibontja, ide értve a szöveget fájlt állít elõ, hiperhivatkozásokból és a képeket is álló tartalomjegyzékkel

mindegyikét kibontja. A 2. ábrán két Mozilla ablakban 2. kódrészlet Az OPF egy XML alapú látható, hogy H. G. Wells The Invisible Man címû formátum könyvek könyvén az rbburst-öt futtatva milyen fedlapot jellemzõinek leírására és tartalomjegyzéket kapunk.

Microsoft Reader A Midsummer-Night’s Dream A Microsoft Reader fájlokat a .lit kiterjesztésrõl jellemzõ tulajdonságuk van, mint például oldalszámok, William Shakespeare, 1564-1616 kiemelések és jegyzetek. A kulcsszó alapú keresést és a hiperhivatkozásokat is támogatják, ám egyetlen olva- fiction, poetry sóprogramhoz kötõdnek. Az ilyen fájlok átalakítására szolgáló eszköz neve spár- tai egyszerûséggel Convert Lit. A programot a -help kapcsolóval futtatva – hûen a unixos hagyományokhoz – C könyvtárat le tudunk fordítani, függetlenül a cso- az összes parancssori kapcsolót megtekinthetjük. mag egyéb részeitõl, így bármilyen más programból is A program háromféle üzemmódot ismer: robbantás kezelni tudjuk az .rb fájlokat. Ezzel a módszerrel saját, (explosion), lefelé átalakítás (downconversion) és dedi- akár minden részletében testreszabott Rocket Ebook kálás/beleírás (inscribing). Meglévõ .lit fájlt OEBPS- átalakítót is tudunk írni, esetleg az összes e-könyvünkrõl megfelelõ csomagba a robbantás móddal tudunk átala- jegyzéket készíthetünk egy adatbázisba; minden esetben kítani. Az OEBPS-rõl (Open eBook Publication Structure) csak arra a kódrészre van szükségünk, amely az .rb for- késõbb még lesz szó. mátum tényleges írásáért és olvasásáért felelõs, vagyis A 3. ábra Shakespeare A Midsummer’s Night Dream az RbFile osztályra. Ez a kódrész megnyitja a fájlt, címû mûvének a Convert Lit programmal robbantott visszaadja a könyvet alkotó szakaszok listáját, majd fu- változatát szemlélteti. A lefelé átalakítás ezzel ellenté- tás közben csak a fõprogram által ténylegesen igényelt tes eljárás, általa Microsoft Reader-megfelelõ eszközö- részeket bontja ki. Ha éppen arra van szükségünk, kön használható .lit fájlt kapunk. A beírásnál a lefelé a könyvtár keresési és cserélési eljárásokkal is rendelke- átalakítás közben felhasználó által megadott feliratot zik, ezeket a Perl-ben megszokott reguláris kifejezésekkel csatolunk a .lit fájlhoz. A pontos szintaxist illetõen tudjuk használni. a program honlapján találunk részletes tájékoztatást Az Rbmake eszközöknek minden korszerû GNU/Linux (lásd a forrásokat). terjesztésen gyorsan és gondok nélkül le kell fordulni- Már volt róla szó, hogy a Convert Lit egy különbö- uk. A forrás .tar állományban részletes HTML leírást zõ fájlokból álló OEBPS csomagot állít elõ. A fenti is találunk. A HTML fájlok elõállítására alkalmas biná- példánál a teljes fájllista a következõ: Contents.htm, ris fájl az rbburst. A program az eredeti .rb konténerben copyright.html, ~cov0024.htm, cover.jpg, lévõ összetevõk – szöveg, képek és leíró adatok – MidSummerNightDream.opf, MobMids.html, PCcover.jpg,

32 Linuxvilág Szaktekintély

PCthumb.jpg, stylesheet.css és thumb.jpg. A HTML, célja „egységes, kölcsönösen támogatott elõírásgyûjte- a CSS és a JPG fájlok különösebb meglepetést nem mény összeállítása az elektronikus kiadói közösség jelentenek, de vajon mi célt szolgál az .opf fájl? számára”. Még meglátjuk, mi sül ki belõle. Ez egy XML konténer, ez írja le az eredeti könyvben Bármi is történjék, az OEBPS háttereként szolgáló található metaadatok egyes részeinek szerkezetét. nyílt szabványok szilárd alapokra épülnek. Az XML, Az OPF kiterjesztés az electronic book package formatra, az Unicode és az XHTML mellett a CSS1 és a CSS2 bizo- az elektronikus könyv csomag formátumra nyos részei is szerepelnek benne. Az Unicode kódolások utal. Az OPF az e-könyv egyéb részeire mutató hivat- családja, alkalmazásával több tízezer karaktert is félreérté- kozásokat is tartalmaz, illetve magába foglalja jellem- sek és keveredések nélkül lehet kezelni. Az XHTML zõik leírását is. Szerepét könnyebben átláthatjuk egy a HTML 4 új, XML alapú megtestesülése. Az OEBPS rö- példán keresztül, ezért a 2. kódrészletbe bemásoltam viden talán úgy jellemezhetõ, mint az XHTML e-könyvek a MidSummerNightDream.opf egy kisebb részét. kezelésére testreszabott változata – olyasvalami, ami ak- A gyakorlatban mindebbõl az fakad, hogy a Convert Lit kor is fennmarad, ha a támogatását adó vállalatok néme- akkor is jól használható lehet, ha teljes gyûjteményünket lyike esetleg el is tûnik az üzleti élet porondjáról. A képek zárt, gyártófüggõ formátumban akarjuk hagyni. Ekkor PNG vagy JPEG formátumúak lehetnek. A metaadatok elég futtatnunk a programot az összes .lit formátumú (szerzõ, cím, ISBN stb.) kezelése a Dublin Core szótáron e-könyvünkön, majd az .opf fájlok kivételével törölnünk keresztül fog történni. mindent. Ezt követõen egy rövidke parancsfájllal vagy Az OEBPS tehát alkalmas arra, hogy az összes e-köny- © Kiskapu Kft. Minden jog fenntartva akár egy nagyobb tudású XML feldolgozó programmal vünket megõrizzük, és biztosítsuk idõtállóságukat, még végig tudunk menni ezeken, és az általunk kívánt adatbá- akkor is, ha némelyik hardver- vagy szoftvergyártó neve zisba tudjuk másolni a tárgymutatót. néhány év múlva homályos emlékké válik. Sajnos az A Convert Lit a digitális jogkezelõ (digital rights ilyen „nyílt” e-könyvekre alkalmazott DRM megoldások management, DRM) részeket is eltávolítja az e-könyvek- egy-egy gyártóhoz köthetnek bennünket. Amíg az OEBPS bõl, legalábbis ami a régebbi, DRM1 változatot illeti. e-könyveket DRM nélkül tudjuk beszerezni, addig az Ha Microsoft Reader e-könyveket gyûjtünk, valószínûleg OEBPS a legjobb megoldás annak biztosítására, hogy Microsoft Windows operációs rendszerrel és a Microsoft gyûjteményünk még akkor is használható maradjon, Reader egy jogtiszta példányával is rendelkezünk. ha az ezen a piacon érdekelt cégek akár mindegyike A Convert Lit weboldala szerint a Convert Litet Windows a süllyesztõbe kerül. alatt lefordítva, a Windows DRM segítségével az újabb DRM5-öt alkalmazó e-könyveket is át tudjuk alakítani Linux Journal 2005. június, 134. szám DRM1-essé. Marco Fioretti hardver-rendszermérnök, Tömeges átalakítás a szabad szoftverekkel mint EDA alaprend- Eddig inkább parancssori átalakításokról volt szó. Aki szerekkel és a hatékony asztali környezet viszont nagyobb, többféle formátumból összeálló e-könyv- létrehozására irányuló RULE Project gyûjteménnyel rendelkezik, az egyetlen héjparancsfájllal vezetõjeként áll kapcsolatban. Marco egyszerre is elvégezheti ezek átalakítását. Mint már láttuk, Olaszországban, Rómában él a családjával. ha a szöveg átkerül ASCII vagy HTML formátumba,  a határ a csillagos ég. A ciklust egy-két sorral bõvítve KAPCSOLÓDÓ CÍMEK a tárgymutató elkészítése a glimpse vagy a ht::dig használatával is megoldható; akár mindent beírhatunk  egyetlen PostScript könyvbe és így tovább. www.cpan.org

 www.linuxmafia.com/pub/palmos/development/ OEBPS doc-format and www.timwentford.uklinux.net Jelenleg még fejlesztés alatt álló megoldás e-könyvek – legalábbis a közeljövõben beszerezhetõ példányok –  www.blorf.net/~wayne/rb_format.html nyílt formátumba alakítására. Pontos neve Open eBook Publication Structure (nyílt e-könyv kiadási szerkezet,  www.pyrite.org/doc_format.html OEBPS). Célja egy XML-alapú, a meglévõ nyílt szab-  ványokra épülõ szabálygyûjtemény összeállítása többfé- www.pyrite.org/publisher le e-könyv rendszeren történõ tartalomszolgáltatáshoz.  freshmeat.net/projects/rbmake Az OEBPS-t, mely immár 1.2-es változatban érhetõ el, az Open eBook Forum tartja karban. A csoportban több  www.kyz.uklinux.net/convlit.php mint 85 szervezet található meg, hardver- és szoftver-  gyártók, kiadók, szerzõk és az elektronikus kiadvány- www.openebook.org/oebps/oebps1.2/index.htm ok piacán érdekelt felhasználók egyaránt. Az OEBPS  önmagában, közvetlenül semmilyen digitális jogkezelést userpage.fu-berlin.de/~mbayer/tools/html2text.html nem szolgál. Az OeBF Rights and Rules Working Group  user.it.uu.se/~jan/html2ps.html (jogok és szabályok munkacsoport) azonban szorgalma- san tanulmányozza a vonatkozó kérdéseket, munkájának

www.linuxvilag.hu 2005. július 33 Szaktekintély

Készítsünk Impress és PowerPoint bemutatót LaTeX és Perl segítségével Aki valamiért kénytelen védett formátumokat használni, a nyílt forráskód annak is megkönnyítheti a dolgát. © Kiskapu Kft. Minden jog fenntartva

ezdjük az elején. nehéz ráakadni. Találtam egy Microsoft Windows Help for- Második könyvem, melyet Dr. Michael mátumú állományt amely a Microsoft Office dokumentu- Moorhouse-al közösen készítettünk, végre elké- mok XML szabványát ismertette. Ebbe a formátumba lehet Kszült. Hat hónap plusz idõt töltöttem vele, ami egyben azt a PowerPoint dokumentumokat exportálni. Sajnos igen mé- is jelentette, hogy hat hónap késésben voltam. Az összes retes és bonyolult írás volt. Miután láttam, hogy a Google-lel idõt szedéssel, átolvasással, írással és Michael Microsoft nem sokra megyek, átnyergeltem a Comprehensive Perl Word állományainak LaTeX formátumúra alakításával töl- Archive Network (CPAN) hálózatára. A Perl, a választott töttem, elolvasva majd újra elolvasva mindent. Végül mind- programozási nyelvem, szinte minden fájlformátumra és et még egyszer átnéztem. Amikor végre minden elkészült, számítási platformra felkészült. Ha valaki korábban már teljesen kimerültem. Nem sokkal ez után megkaptam a bo- játszadozott kicsit a Perl és PowerPoint párossal, munkájára rító végleges mintáját. És akkor kiderült, hogy a hátlapon esetleg ráakadhatok a CPAN-on. Sajnos ez a keresés is ered- azt ígérjük, hogy a weblapon a szöveggel együtt használha- ménytelen maradt. tó Microsoft PowerPoint bemutatók jelennek majd meg. És akkor rájöttem a megoldásra: ha a nyílt és széles körû- A borító megváltoztatásához már túlságosan késõ volt, kö- en dokumentált OpenOffice.org Impress dokumentumfor- vetkezésképpen valahogy meg kellett csinálni a bemutató- mátummal tudnék dolgozni, utolsó lépésként az Impress kat. Úgy tûnik elfelejtettem, hogy ebben egyeztünk meg diákat kimenthetném PowerPoint formátumba. a projekt indításakor, több mint 18 hónappal korábban. Az OpenOffice.org weblap gyors átolvasása után hamarosan meg is találtam a OpenOffice.org fájlformátumainak XML A PowerPoint „szabvány” leírását. A szabvány a maga 600 oldalával, súlyosabb mint Nyolc hónappal ezelõtt, akadémia berkekben a bemutatók a saját könyvem! de facto szabvány formátuma a PowerPoint volt. Manapság Az XML dokumentum szépen meg van írva, de egy már a PDF is népszerû. Mint oly sokan a Linux közösség- kicsit nehéz olvasmány. Visszakanyarodtam hát ben, már régebben átálltam az OpenOffice.org-ra és el- a CPAN-ra, hátha dolgozott már valamelyik programozó hagytam a PowerPoint környeztet. A könyvben 20 fejezet az OpenOffice.org formátumaival, és volt olyan nagylelkû, szerepelt, úgy becsültem, hogy körülbelül 20 napba telik hogy feltöltötte munkáját a CPAN-ra. Ezúttal nem kellett elkészíteni a diákat. Ráadásul mindezt a PowerPointtal csalódnom. Jean-Marie Gouarne a Genicorptól nemrégiben megcsinálni nem igazán volt ínyemre. Természetesen dol- adta közre az OpenOffice::OODoc modult, amely a Perl gozhattam volna az OpenOffice.org Impress-ében, majd azt csatoló felületet biztosít az OpenOffice.org formátumához. exportálhattam volna PowerPointba, de ez az ötlet sem tet- Egy már létezõ dokumentum esetében az szett különösebben. Az alapvetõ probléma az volt, hogy OpenOffice::OODoc modullal módosíthatjuk a tartalmat, jól tudtam, minden adat megvolt LaTeX állományokban, igény szerint hozzáadhatunk, törölhetünk és frissíthetünk és ha arra gondoltam, hogy ezeket mind újra létre kell hoz- a lemezes állományban. ni egy fóliakészítõ alkalmazásban csak még kimerültebbnek éreztem magam. Ha valahogy ki tudnám találni, hogyan A diakészítõ terve lehet programozottan kiszedni az adatokat a LaTeX állomá- Egy egyszerû Perl szûrõvel kezdtem amely LaTeX állomá- nyaimból és beletenni a PowerPoint diákba, az jelentõsen nyokat fogad bemenetként és dia adatokat készít kimenet- leegyszerûsítené a dolgokat. ként saját szöveges formátumban. A szöveges állomány létrehozásával biztosítani tudtam, hogy bármilyen szöveg- Munka a bemutató fájlformátumokkal szerkesztõvel könnyedén módosítani tudom a szûrõ kime- A Google keresés nem hozott eredményt. Talán nem is netét, illetve szükség esetén finomhangolhatom a szöve- meglepõ, hogy a PowerPoint fájlformátum részleteihez igen ges kimenetet. Amikor elértem a kívánt eredményt, egy

34 Linuxvilág Szaktekintély

másik, szintén Perlben készült szûrõ a szöveges állo- print “BULLETTITLE: $1\n”; mányból elkészíti az Impress bemutatót. Az Impress bemu- next; tatót aztán meg lehet nyitni Impress-ben és exportálni } PowerPoint vagy PDF formátumban. if ( /\\subsection\{(.*)\}/ ) { Dia tervek print “BULLETCONTENT: $1\n”; A bemutatómat tudatosan próbáltam a lehetõ legegysze- next; rûbb alakban elkészíteni, ezért úgy döntöttem csak három } diatípust használok. A cím dia tartalmazza a fejezet címét a bemutató állomány elején. A bemutatóban a title_slide A forráskódlistákkal sem sokkal nehezebb boldogulni, (cím dia) kettõs szerepet tölt majd be, ez tartalmazza majd igaz itt figyelnünk kell rá, hol kezdõdik és végzõdik a nyers a bemutatóba illesztett képeket is, azaz képenként külön szöveg bevitele. A következõ kódrészlet kezeli a LaTeX title_slide-ot készítünk. A bullet_slide (pont dia) tar- „verbatim” blokkját: talmazza a szakaszok címeit a dia fejlécében valamint az alcímeket a pontokban. Végül, a sourcecode_slide típusú, if ( /\\begin\{verbatim\}/ ) rögzített karakterhosszúságú, betû szerinti diákat haszná- { lom fel a programforrások megjelenítéséhez. print “STARTCODE\n”; © Kiskapu Kft. Minden jog fenntartva A három diás bemutatót kézzel készítettem el Impress-ben és $in_verbatim = TRUE; blank.sxi-nek néven mentettem el. Az elkészített három dia next; az elõzõ bekezdésben bemutatott három diatípusnak felelt } meg. Úgy terveztem, hogy a fejezetek programozott bemu- tatókészítése során ezeket fogom majd másolni. A másolás A verbatim blokkból kilépést pedig a következõ kóddal segítségével biztosíthatom a bemutatóm egységes külalakját. keressük:

A szöveges tartalom kigyûjtését végzõ szûrõ if ( $in_verbatim ) A getcontent olyan stílusú héjprogram, amilyeneket igen { gyakran készítenek a Perl programozók, felhasználják, if ( /\\end\{verbatim\}/ ) majd eldobják õket. (A hálózati források közt megtaláljuk { a cikkben említett programok forrását) Soronként olvasva print “STOPCODE\n”; végiglépked a szabványos bemeneten, és mintakereséssel $in_verbatim = FALSE; próbálja meg felderíteni a lényeges sorokat. Ha a sor meg- } felel a keresésnek, elkészíti a megfelelõ kimenetet. else A getcontent mûködésének bemutatására álljon itt példa- { ként a LaTeX állomány fejezetcímeit kezelõ kód: print; } if ( /\\chapter\{(.*)\}/ ) next; { } print “CHAPTERTITLE: $1\n”; next; A $in_verbatim nevû egyszerû bool típusú változó segít- } ségével vizsgáljuk, hogy a parancsfájlunk még a verbatim blokk belsejében van-e. Hasonló kód kezeli a könyvben A LaTeX fejezet makróját egyszerû szabályos kifejezés megjelenõ tételeket a képeket, azok feliratai és egyéb érde- keresi ki; Ha volt egyezés, a fejezet címét kigyûjtjük és elké- kes dolgokat pedig néhány feltétles blokk kezeli. vegyük szítjük a kimenetet. A next hívás rövidre zárja a kört, így például a következõ LaTeX leírást: ha találtunk valamit, a szabványos bemenetrõl a következõ sort olvassuk be. Ezáltal a következõ LaTeX részlet: \chapter{The Basics} \textit{Getting started with Perl.} \chapter{Working with Regular Expressions} \section{Let’s Get Started!} There is no substitute for practical experience a következõ szöveges tartalomra cserélõdik le:  when first learning how to program. So, here is the first CHAPTERTITLE: Working with Regular Expressions  Perl program \index{welcome@\texttt{welcome}, and the first Azaz a LaTeX jelrendszerét eltávolítottuk, és egy sokkal  program, called egyszerûbb jelöléssel cseréljük le. A alfejezet és szakasz- \texttt{welcome}: címeket jelölõ LaTeX formátumot ugyanilyen módszerrel \begin{verbatim} kezeljük. A kód a következõképpen néz ki: print “Welcome to the World of Perl!\n”; \end{verbatim} if ( /\\section\{(.*)\}/ ) \noindent When executed by \texttt{perl} { \footnote{We will learn how to do this is in

www.linuxvilag.hu 2005. július 35 Szaktekintély

just a moment.}, this small program displays a save metódust és a lemezre menti a változtatásokat. the following, perhaps rather not unexpected, Az appendParagraph metóduson felül az message on screen: OpenOffice::OODoc modulban találunk egy insertElement \begin{verbatim} nevû metódust is, amellyel egy adott típusú lapot szúrha- Welcome to the World of Perl! tunk a dokumentumba. A lap egy már meglévõ lap másola- \end{verbatim} ta vagy tényleges nyers XML lehet. Alig jutottam el a 6. oldalig a több mint 600 oldalas A getcontent parancsfájlja a fenti LaTeX állományból OpenOffice.org XML fájlformátum leírásban, máris megta- a következõ szöveges állományt készíti: láltam, hogy az Impress a //draw:page XML típust hasz- nálja a bemutatók diáinak megjelenítésére. Sajnos az CHAPTERTITLE: The Basics OpenOffice::OODoc modul ezzel az objektumtípussal köz- CHAPTERCONTENT: Getting started with Perl. vetlenül nem tudott dolgozni, úgyhogy valamilyen más BULLETTITLE: Let’s Get Started! módszert kellett kieszelnem az adatok kezeléséhez. STARTCODE Egészen pontosan a blank.sxi dokumentumban lévõ lapo- print “Welcome to the World of Perl!\n”; kat szerettem volna kiemelni és szükség szerint másolni STOPCODE az oldalait, miközben a dia tartalmát a getcontent parancs- STARTCODE fájl által gyûjtött tartalommal helyettesítem. Ehhez persze © Kiskapu Kft. Minden jog fenntartva Welcome to the World of Perl! egy kicsit jobban meg kellett ismernem az Impress XML STOPCODE formátumát. Két választássom volt: tovább olvasom a 600+ oldalas Figyeljük meg hogy valamennyi LaTeX jelölés eltûnt, szabványdokumentációt, vagy belenézek egy létezõ állo- és helyére egy egyszerû jelölésrendszer került, amelyet mányba hátha eleget megtudok a feladat kivitelezéséhez. majd a diák létrehozására használhatunk fel. Feltételezve, Az utóbbit választottam. Emlékezve egy korábbi Linux hogy a LaTeX részlet a chapter3.tex nevû állományban Journal cikkre mely szerint az OpenOffice.org több részbõl kapott helyet, a getcontent parancsfájlt elindítva, az átala- álló állományait a népszerû ZIP algoritmussal tömöríti, kítás eredményét átirányítjuk a megfelelõen elnevezett készítettem egy ideiglenes könyvtárat és kitömörítettem célállományba: a blank.sxi állományt:

perl getcontent chapter3.tex > chapter3.input mkdir unzipped cd unzipped A chapter3.input állományba így a szöveges tartalom unzip ../blank.sxi kerül, amit aztán tetszõleges szövegszerkesztõvel finom- hangolhatunk a diák létrehozása elõtt. Ezáltal kaptam néhány fájlt és könyvtárat:

Az Impress bemutató készítõ szûrõ content.xml A diák létrehozását az Impress dokumentumban több té- META-INF nyezõ is nehezítette. Elõször is az OpenOffice::OODoc mo- meta.xml dullal nem hozhatunk létre új OpenOffice.org állományt, az mimetype ugyanis csak a már létezõ állományokat tudja módosítani. settings.xml Továbbá a modult elsõsorban az OpenOffice.org Writer állo- styles.xml mányok (tehát szövegszerkesztõ fájlok és nem Impress be- mutatók) szerkesztésére készítették. Példaként álljon itt a legérdekesebb a content.xml állomány, hiszen ez tartal- egy rövid, appendpara nevû program, amely rövid szöveget mazza a dokumentumot alkotó tényleges szöveget. képer- fûz a Writer dokumentumunkhoz: nyõn vagy egy szövegszerkesztõben nézve rengeteg nehe- zen értelmezhetõ XML kódot látunk. Azért, hogy a részek #! /usr/bin/perl -w lehetõ legkisebbek legyenek, az XML formázására egyálta- use strict; lán nem fordítottak semmilyen figyelmet, a zippelt állo- use OpenOffice::OODoc; mány egyik részében sem. Az XML általában tagolás és my $document = ooDocument( file => ‘blank.sxw’ ); szóközök nélküli szövegfolyamként kerül mentésre. Mielõtt $document->appendParagraph értelmezhettem volna, valamilyen olvasható formában ( kellett kinyomtatnom ezt az XML-t. Pillanatnyi ihlettõl text => ‘Some new text’, vezérelve, átléptem parancssorba és begépeltem az xml style => ‘Text body’ szót két tabbal kísérve. A képernyõn megjelentek az xml-el ); kezdõdõ elõre telepített szóközök: $document->save; xml2-config xml-config xmllint A rövid program az OpenOffice::OODoc modul segítségével xmlto xml2man xml-i18n-toolize készít dokumentum objektumot egy már meglévõ Writer xmlproc_parse xmlwf xml2pot állományból. A program ezután az appendParagraph metó- xmlif xmlproc_val xmlcatalog dus meghívásával beszúr némi szöveget majd meghívja xmlizer xmltex

36 Linuxvilág Szaktekintély

Az xmllint egybõl felkeltette az érdeklõdésemet. A kézi- perl produce_slides 3 chapter3.input könyv oldalán hamar rábukkantam a --format kapcsolóra, amely – ahogy azt biztosan kitalálták – formázza az eszköz- Eredményképpen egy új Impress dokumentumot nek átadott XML adatokat. Következésképpen az xmllint kapunk, amely chapter3.sxi néven jelenik meg a me- --format content.xml paranccsal olyan kimenetet kaptam revlemezünkön. amit aztán a less-be csövezve már nehézségek nélkül el le- Miután létrehoztam az Impress állományt, a grafikus hetett olvasni. Alább bemutatjuk a content.xml olvasható képek helyfoglaló elemeit le kellett cserélnem a tényle- formában kinyomtatott rövidített részletét, ahol a blank.sxi ges képekre. A getcontent parancsfájl azonban csak Impress dokumentum title_slide XML részletét láthatjuk: a képek neveit bontotta ki, és nem magukat a képeket. A képek importálása Impress alá nem lenne túl nehéz azokhoz képest amelyek végül a könyvbe kerültek. A könyvbe kerülõ képeket jelentõsen feljavította a kiadó ChapterTitleSlide végsõ szedõfázisa. Nekem pedig természetesen nem vol- tak meg ezek az állományok. Aztán eszembe jutott, hogy a kiadó elküldte nekem a végsõ © Kiskapu Kft. Minden jog fenntartva PDF változatot, amelyben ott volt valamennyi jó minõségû majd beindítva a The GIMP-et leolvastam az xpdf megjele- nítõ ablakát. Kivágtam a grafikus képeket és elmentettem ChapterTitleSlideText JPEG formátumban. Igaz beletelt egy kis idõbe, amikor azonban elkészült, gyönyörû, könyv-minõségû képekhez jutottam, amelyeket már be lehetett importálni az Impress bemutatóba. Miután ezzel elkészültem, elmentettem az Impress dokumentumot PowerPoint formátumban és a fel- Ráadásul most már, ha gyorsan kell diákat összeraknom, a szöveges tartalmat akár kézzel, vi segítségével is összerak- hatom, majd a produce_slides parancsfájl lefuttatása után Figyeljük meg a ChapterTitleSlide és már készen is vagyok. a ChapterTitleSlideText tartalmat, amelyeket a blank.sxi létrehozásakor gépeltem be az Impress-be. Ha az Zárszó insertElement metódus segítségével e részlet alapján be Ami elõször lehetetlen feladatnak tûnt – programozottan tudnék vinni nyers XML adatokat, miközben az üres tartal- létrehozni egy PowerPoint bemutatót – kiderült, hogy mat a saját szöveges adataimmal helyettesítem, lényegében a nyílt forráskódnak köszönhetõen nagyon is lehetséges. már készen is volnék. A megszokott Red Hat 9 terjesztésemben valamennyi szük- A példa kedvéért gondoljuk végig mi is történik, amikor séges eszköz rendelkezésemre állt: vi, unzip, Perl, xmllint, a bemutató címét és alcímét feldolgozza a produce_slides xpdf, The GIMP és az OpenOffice.org csomag. rutin. Az insertElement a következõ formában hívódik meg, létrehozva a az új diát: Linux Journal 2005. április, 132. szám

$presentation->insertElement( ‘//draw:page’, Paul Barry ([email protected]) $last_slide++, A Carlow-i Mûszaki Intézetben tart elõadá- title_slide( $title_title, $title_content ), sokat, Írországban. Weblapján elõadásaival, position => ‘after’ ); könyveivel és cikkeivel kapcsolatos informáci- ókat találunk: glasnost.itcarlow.ie/~barryp. A title_slide alprogram nyers XML adatot ad vissza, amit a dokumentumba szúrhatunk.  Ha a getcontent által készített szöveges tartalommal KAPCSOLÓDÓ CÍMEK egyezõ formátumú bemenetei állományt használunk, a produce_slides parancsfájl lemásolja a blank.sxi Impress  állományt majd tetszõleges számú diával tölti fel, így prog- ftp.ssc.com/pub/lj/listings/issue132/7972.tgz ramozottan hozza létre a bemutatót. A parancsfájl szerkeze- tében nem különbözik sokban a getcontent-tõl mindössze  search.cpan.org annyi a különlegessége, hogy a blank.sxi állományban tárolt, három különféle diatípushoz tartozó nyers XML  www.openoffice.org adatot átemeli. Az elõadás elkészítéséhez a következõ alak- ban hívjuk meg a produce_slides programot:

www.linuxvilag.hu 2005. július 37 Szaktekintély

Készítsünk Live CD-t!

Készítsük el saját, különleges live CD terjesztésünket az itt bemutatásra kerülõ nem túl ismert rendszerindító CD trükkök alapján.

© Kiskapu Kft. Minden jog fenntartva iztosan mindenki hallott már a Knoppixról, ilyen másolat, amelyet rendszerindításkor csatolunk fel B arról a Debian alapú terjesztésrõl, amely 2GB – ezzel a trükkel tud a Knoppix 2GB-ot elhelyezni egy alakalmazást zsúfol egyetlen CD lemezre. Használ- 650MB-os CD-n. ják Linux bemutató eszközként, mentõlemezként, sõt még Ha csak egyszerûen körbe szeretnénk nézni a fájlrendsze- Debian telepítõként is. Hasonló projektek egész kis seregét ren, nem muszáj a rendszermagunkba fordítanunk a cloop ihlette, az egy-két plusz és mínusz csomagot tartalmazó képességet. Elegendõ a cloop-utils csomagot feltennünk és Knoppix CD-ktõl kezdve egészen a rendszer teljes újrater- az extract_compressed_fs segédeszközt használnunk. Az ál- vezéséig. lomány elhelyezéséhez körülbelül 2GB szabad helyre lesz Jómagam mostanában fogtam neki egy termékbemutató szükségünk a /var/tmp vagy valamely egyéb könyvtárban: CD készítésének. Kíváncsiságtól hajtva darabokra szedtem a Knoppix CD-t míg végül egy Makefile és néhány mellékes # mkdir /tmp/knoppix-cloop állományra jutottam, amelyek ugyan elég egyértelmûen # extract_compressed_fs \ Knoppix ihletésûek de azért van bennük némi új kód is. /tmp/knoppix-cd/KNOPPIX/KNOPPIX \ Itt tartok most. >/var/tmp/KNOPPIX-cloop # mount -o loop /var/tmp/KNOPPIX-cloop \ Rövid Körséta /tmp/knoppix-cloop Ha a Knoppix CD-t betesszük a meghajtóba és felcsatoljuk, # find /tmp/knoppix-cloop -print hamar feltûnik, hogy nem nagyon hasonlít a hagyomá- nyos Linux telepítésekre. Van ugyan néhány grafikus fájl Mindent a szemnek, semmit a kéznek – az ISO9660 fájl- és néhány zenesáv, de nincs init, nincs /dev és nincs /bin. rendszer csak olvasható. A terjesztés módosításához elõször A mágia a /KNOPPIX/KNOPPIX nevû, igen méretes állo- is mindkét fájlrendszer szerkezetet egy hagyományos mányban van, amely a cloop eszközzel tömörített ISO9660 könyvtárba kell másolnunk: lenyomat. A rendszermagban található megszokott loop eszköz lehe- # mkdir $HOME/my-knoppix-tree \ tõvé teszi, hogy néhány fájlrendszeren úgy érjük el az állo- $HOME/my-knoppix-cd-tree mányokat mintha azok valódi eszközök lennének. Az esz- # tar -C /tmp/knoppix-cloop -cf - . | \ köz blokkjainak elérési kérelmei az alatta elhelyezkedõ állo- tar -C $HOME/my-knoppix-tree -xvpf - mány blokkjaira fordítódnak le. Mivel az eszközt fel tudjuk # tar -C /tmp/knoppix-cd -cf - . | \ csatolni a fájlrendszerek másolatait lényegében ugyanúgy tar -C $HOME/my-knoppix-cd-tree -xvpf - érhetjük el mintha valódi lemezes eszközök lennének. # umount /tmp/knoppix-cd /tmp/knoppix-cloop Amennyiben a hálózatról töltöttük le a Knoppixot, akkor minden bizonnyal van egy ISO9660 lenyomatunk amit Most már nekiláthatunk megvalósítani szívünk vágyát. a loop segítségével fel tudunk csatolni, ha kíváncsiak A legkényelmesebb módszer, ha a Knoppix belsõ fában vagyunk a tartalmára: a chroot paranccsal megváltoztatjuk a gyökeret:

# mkdir /tmp/knoppix-cd # mount -t proc none $HOME/my-knoppix-tree/proc # mount -o loop -r \ # cp /etc/resolv.conf \ $HOME/KNOPPIX_V3.3-2003-09-24-EN.iso /tmp/knoppix-cd $HOME/my-knoppix-tree/etc/resolv.conf # chroot $HOME/my-knoppix-tree /bin/sh A cloop tömörített loop eszköz még egy lépéssel tovább megy. Ez a loop eszköz úgy modellezi az alkatrészt, Ettõl kezdve a szokásos Debian csomagkezelõ parancsok hogy minden blokkot a gzip-pel tömörít, amit eléréskor segítségével (dpkg, apt-get és a többiek) telepíthetünk és átlátszó módon kibont. A /KNOPPIX/KNOPPIX pontosan törölhetünk tetszés szerint. Miután elkészültünk, lépjünk ki

38 Linuxvilág Szaktekintély

a chroot-ból és csatoljuk le a proc-ot ( hacsak nem akarjuk alkönyvtár külön fájlrendszer volt, újraindíthatjuk a gépet halhatatlanná tenni a fejlesztõi rendszerünk folyamatlistáját és közvetlenül is használhatjuk. Akár CD-re is kiírhatjuk, a CD-n). A create_compressed_tree és mkisofs paran- és pontosan ezt akarjuk majd tenni. De addig még van egy csokkal készítsük el a külsõ és belsõ fát: két elvégzendõ feladatunk. A parancsfájljaink próbálgatása folyamán jó sok debootstrap # mkisofs -L -R -l -V “KNOPPIX ISO9660” -v \ és csomagtelepítésre számíthatunk. Mielõtt továbblépnénk, -allow-multidot $HOME/my-knoppix-tree | \ egy kis idõt és sávszélességet takaríthatunk meg, ha felte- create_compressed_fs - 65536 > \ szünk valamilyen proxy csomagarchívumot (például az apt- $HOME/my-knoppix-cd/KNOPPIX/KNOPPIX proxy-t) egy kényelmesen elérhetõ gépre. # mkisofs -l -r -J -V “KNOPPIX with local stuff” \ -hide-rr-moved -v -b KNOPPIX/boot-en.img \ Csomagok felvétele -c KNOPPIX/boot.cat -o knoppix.iso \ A Makefile-ban található fix_inner cél csomagokat ad az $HOME/my-knoppix-cd alaprendszerhez. Elsõ lépésként lecseréljük a start-stop- daemon programot a /bin/true-ra, nehogy az telepítés utáni Végül, írjuk ki a knoppix.iso-t egy CD-ROM-ra és indíthat- (post-installation) parancsfájlok szolgáltatásokat indítsanak juk a rendszert. Akár írás nélkül is kipróbálhatjuk Bochs el a chroot környezetünkben. Ez után többször chroot-olunk vagy VmWare segítségével. a rendszerbe és futtatjuk az apt-get és dpkg parancsokat. Tesztelési és kísérletezési célokra a run-chroot.pl Perl © Kiskapu Kft. Minden jog fenntartva Következõ lépés parancsfájlt használhatjuk, amely rendszerindítást szi- Ez az egyszerû megközelítés azonban kezd nehézkessé vál- mulál chroot környezetben. A legtöbb szolgáltatást ni amikor komolyabb vállalkozásba fogunk. Például, ha azt nem indítja el, hiszen azok már elve futnak a gépen és szeretnénk, hogy az X egy adott ablakkezelõt indítson de ütközést okozhatnának, de az SSH kiszolgálót és az X nem akarjuk, hogy GNOME vagy KDE-t használjon, kény- indítószkripteket lefuttatja. Sokkal kényelmesebb mint telenek leszünk belenyúlni a parancsfájlokba. Ez persze mindig kiírni egy CD-t és újraindítani a gépet valahány- nem nehéz feladat, viszont azt jelenti, hogy lényegében szor ki akarjuk próbálni. Knoppix leágazást készítünk. Amikor egy új Knoppix ver- zió jön ki, mindent újra meg kell csinálnunk. Továbbá, ha autologin üzleti céllal szeretnénk eladni a Knoppix alalpú CD-nket, Nem sok értelme van bejelentkezésre kényszeríteni az em- meg kell felelnünk valamennyi terjesztésre szánt program bereket egy egyfelhasználós, bemutatóra szánt rendszeren. engedélyének, ami feltételezi hogy pontosan tudjuk mi Úgyis meg kell mondani nekik a jelszót, és mivel a CD csak van a lemezen. Az általam vizsgált Knoppix verzió tartal- olvasható legfeljebb ideiglenesen tudják megváltoztatni azt. mazott néhány olyan állományt amelyek nem Debian A GDM rendelkezik ugyan autologin képességgel, de mivel csomagokból származtak, sõt, némelyik még csak nem a méretet nem szeretnénk túlságosan megnövelni, jobb is volt szabad program. lenne elkerülni a rengeteg GNOME függõséget. Ehelyett Nem közelíthetnénk meg a problémát más oldalról? egyszerûen a su paranccsal indítjuk az X-et nem-root fel- Szerencsére megtehetjük. Hála a Progeny kezdeményezés- használóként, és lefuttatjuk az .xsession parancsfájlt, amely nek, amely telepítõjét ajándékozta a Debian Projektnek, beindítja az xterm-et, az Emacs-ot és az alkalmazásainkat. Klaus Knoppernek a Knoppix szerzõjének és a cloop meg- Az autologin-x parancsfájl /etc/init.d.autologin-x néven tele- hajtó alkotójának, és más Debian fejlesztõknek akik kódját pül, és elkészíti a rendszerindítás folyamatába illesztéshez a fõ Debian tárhelybe felvették, ma már nulláról össze tu- szükséges közvetett hivatkozásokat. dunk állítani egy teljes live CD rendszert kizárólag Debian A parancsfájl a DISPLAY változó értéke alapján dönti el, csomagok segítségével. A cikk további részében ezzel hogy melyik X kiszolgálót szükséges futtatni. Ha már be fogunk foglalkozni. van állítva, az Xvnc-t indítja az XFree86 helyett. Ez a teszte- lést segíti: amikor az autologin-x-et a run-chroot.pl futtatja Letöltések egy xterm ablakban, hozzákapcsolódhatunk egy VNC A cikkünkben szereplõ parancsfájlok és állományok ügyféllel és meggyõzõdhetünk róla, hogy valamennyi tarlabdája a következõ címrõl tölthetõ le: X alkalmazás megfelelõen indul. Természetesen ha az ftp.linux.org.uk/~dan/livecd. Helyszûke miatt cikkünkben CD-ROM-ról indítva szeretnénk futtatni az X-et, tudnunk a legtöbb kódot nem mutatjuk be. Többnyire Makefile által kell, a felhasználó milyen videókártyával rendelkezik. vezérelt, pár héjprogrammal és néhány egyszerû Perl kóddal megtûzdelve, úgy gondolom elég jól követhetõ. Alkatrészfelderítés Kicsit nehezebb dolga van annak aki nem Debiant használ. A Linux alkatrész-felderítési képességei igen sokat fejlõdtek Ha sikerül más terjesztés alatt is mûködésre bírni a dolgot, az utóbbi tíz évben, amit az alkatrész-technológiák fejlõdé- kérem küldjék el a foltot. se is elõsegített. Egy mai PCI vagy USB alkatrészt sokkal A debootstrap program az további munkához szükséges könnyebb megbízhatóan és biztonságosan azonosítani Debian alaprendszert biztosítja. Ha megadjuk a Debian mint egy korabeli ISA csatolót. kiadás nevét és a csomagtükör URL-t, a debootstrap a kivá- A legtöbb Linux terjesztésben találunk valamilyen megol- lasztott alkönyvtárba tölti le és telepíti az alaprendszer. dást, amely végigvizsgálja a rendszer PCI és USB eszközeit Ez igen rugalmas megoldás. Beléphetünk chroottal, és betölti a megfelelõ modulokat. A Knoppix a Kudzut hasz- használhatjuk UML gyökérként, avagy, ha a kiválasztott nálja, amit eredetileg Red Hat-hez írtak, az eredeti Debian

www.linuxvilag.hu 2005. július 39 Szaktekintély

pedig a discover parancsot alkalmazza. A két megoldás A szabványos Debian make-kpkg eszközcsomagok felépítik alkatrész lefedettsége közel azonos; tekintve, hogy mind és telepítik a rendszermagot. A gazdagépen található a kettõ nyílt forrású, nyugodtan másolhatnak egymás alkat- Debian függõségrõl van szó (szükségünk lesz a cloop-src rész adatbázisából. A Debian X kiszolgáló csomagja eleve csomagra), és mivel valószínûleg ez az egyetlen ilyen nem- a discover segítségével állapítja meg az X beállítási kérdé- egyértelmû függõség, a késõbbi verziókban esetleg érdemes sek alapértékét, így inkább ennél maradunk. lehet áthozni a chroot-ba.

debconf A fájlrendszer Mit kezdünk a felderített alkatrészekkel? A Debian csoma- A legtöbb UNIX fájlrendszer szívesen elindul csak olvasha- goknak kézzel szerkeszthetõ beállításállományuk van, de tó módban is, ám nekünk néhol szükségünk van fájlírásra. általában telepítés-utáni parancsfájlokkal interaktív módon Például az X kiszolgáló beállításállományait indításkor hozzák létre azok kezdeti verzióját telepítéskor. Amikor a használt alkatrészeknek megfelelõen át kell alakítanunk, megoldható, mint például az X és hálózati beállítások a debconf adatbázist frissítenünk kellene illetve vannak esetében, a parancsfájlok lefuttatják az alkatrész keresõ különféle napló és zár-állományaink is. eszközöket. A tmpfs fájlrendszer segítségével RAM-alapú fájlrendszert A gond csak az, hogy mi jelenleg chroot környezetben hozunk létre. A rendszer ezt a memórialemezt fogja hasz- telepítünk a gazdagépen, és a gazda alkatrészeinek fel- nálni gyökérként és a /ro alkönyvtárban várja a CD lemez © Kiskapu Kft. Minden jog fenntartva derítése nem sokat segít a célgépen. Ezért a debconf adat- felcsatolását. A csak olvasható könyvtárakhoz közvetett bázisát valami írható helyre kell tennünk, így indításkor hivatkozásokat hozunk létre, például a /usr-t a /ro/usr-hez a debconf-communicate segítségével törölhetjük a csoma- rendeljük. gok beállításait, majd a .config parancsfájlok futtatásával A csak olvasható könyvtárakról listát készítünk, és kétszere- elhitetjük velük, hogy elsõ ízben állítjuk be õket. Ez alapo- sen ellenõrizzük. Elõször egy tarlabdát készítünk a rend- sabb megközelítés mint a dpkg-reconfigure futtatása, szerrõl amely nem tartalmazza ezeket a könyvtárakat, he- ami néha olyanokat kérdez mint: „Biztos, hogy újra be lyükön a megfelelõ közvetett hivatkozásokkal. Ezt a tarlab- kívánja állítani a csomagot?”. Ez megzavarhatja a végfel- dát aztán a futó rendszer gyökerébe másoljuk. Másodszor, használót aki természetesen még semmit sem állított be. amikor a ISO9660 képmást cloop-tömörítéssel kiírjuk, ezt A debconf-communicate kézikönyvoldalain és a tarlabda a könyvtárlistát fogjuk csatolni. target/etc/init.d/configure-xserver állományában további részleteket találunk. initrd Mielõtt a rendszer beindulna két igen fontos dolgot kell Maradandó tároló: Hotplug elintéznünk. Elõször is fel kell csatolnunk a cloop másolatot, A CD-ROM csak olvasható, a ramdisk megsemmisül amint szükség szerint be kell töltenünk a CD-ROM modulokat, a gépet lekapcsoljuk. Az emberek viszont el szeretnék men- majd meg kell találnunk és fel kell csatolnunk a CD-t. Ezek teni az állományaikat, illetve el akarják érni a meglévõ me- után telepítjük a cloop eszközt majd felcsatoljuk rá a belsõ revlemezeiken és cserélhetõ tárolóikon (például USB kul- fájlrendszert. Másodszor elkészítjük a gyökér fájlrendszer- cson vagy ZIP meghajtón) õrzött állományokat. Akárcsak hez a memórialemezt és rámásoljuk a root_fs.tgz tartalmát az elõbb, a munka legnehezebb részét már elvégezték he- a CD-rõl. lyettünk; most a hotplug és az autofs lesz a megmentõnk. Az initrd (initial ramdisk) támogatás segítségével készítünk A hotplug az új eszközök behelyezését és eltávolítását figye- egy mini gyökér rendszert amit a rendszermag felcsatol li. Amikor új USB tárolóeszközt vesz észre, betölti a megfe- és lefuttat mielõtt a valódi init elindulna. Ez gzippelt fájl- lelõ modulokat és emulált SCSI gazdát hoz létre. Továbbra rendszer lesz. Amikor initrd támogatással rendelkezõ is nekünk kell tudnunk azonban, hogy milyen eszközök rendszermagot indítunk a initrd=filename paraméterrel, állnak a rendelkezésünkre és nekünk kell kézzel felcsatolni a megadott fájlnév tartalmát fogja betölteni és memóriale- õket, itt jön a képbe az autofs. mezt készít belõle. Ez után memórialemezen elindítja Az autofs igény szerint fel- és lecsatolja a fájlrendszereket. a /linuxrc állományt. A map program használatával egy Perl parancsfájlt futtat- Amikor a linuxrc befejezõdött, a pivot_root hívást használja nunk valahányszor a felhasználó lekérdezi a /media/list a valódi gyökér fájlrendszerbe váltáshoz (amely addig könyvtárat; itt létrehoz egy könyvtárat, valamint elkészíti a /ramdisk volt) majd lefuttatja a valódi init-et. a csatlakoztatott eszközök nevének megfelelõ közvetett hi- A rendszermag és az initrd, az indítómásolat valamennyi vatkozásokat. A hivatkozások autofs csatlakoztatási pontok- állományát beleszámolva, elég kicsi kell legyen, hogy ra mutatnak melyeken keresztül elérhetjük a fájlrendszert. beleférjen 1.44MB memóriában. Ez nem valami sok hely, Vizsgáljuk meg a target/etc/auto.master és target/usr/local/ hiszen a GNU önmagában 1,200K, úgyhogy kreatívnak sbin/autofs-device-list állományokat a tarlabdában. kell lennünk.

A rendszermag , Busybox Lényegében ugyanazt a rendszermag beállítást használjuk Aki soha még csak nem is vágyott Linuxos PDA-ra mint a Knoppix (vizsgáljuk meg egy futó Knoppix rendszer vagy autóba építhetõ MP3 lejátszóra, most az is igazán /usr/src/linux/.config állományát, vagy a tarlabdánk kernel- hálás lehet a beágyazott Linux programozóinak. config állományát), de eltávolítunk belõle néhány számunk- A Busybox és dietlibc segítségével fogjuk ugyanis átjuttat- ra nyilvánvalóan felesleges dolgot, például a ZISOFS-t. ni a tevét tû fokán. A apró héjprogram amit fordí-

40 Linuxvilág Szaktekintély

ximális hordozhatóság érdekében a Knoppix által kijárt utat boot.img fogjuk követni és egyetlen 1.44MB hajlékonylemezes máso- kernel syslinux.cfg latot alkalmazunk.

initrd boot.img Mit tegyünk ebbe az 1.44MB-ba? Indíthatunk nyers Linux busybox rendszermagot, esetleg használhatjuk a megszokott LILO /linuxrc vagy Grub Linux rendszerindítót. H Peter Anvin SYSLINUX modulok eszköze azonban használhatóság terén mindkét lehetõséget könnyedén veri. A SYSLINUX MS-DOS fájlrendszert hasz- náló indítólemezeket készít, így a hajlékonylemez másola- tot a felhasználói mtools segítségével is létrehozhatjuk. A lemeznek a rendszermag vmlinuz állományra, root_fs.tgz a syslinux.cfg, csatolt segítségnyújtó állományokra és az unpacked into root initrd másolatra van csak szüksége. Amint készen vagyunk /CIRCLE/CLOOP ramdisk by /linuxrc futtathatjuk rajta a SYSLINUX-ot. cloop-pal tömörített iso9660 fájlrendszer Már csak az maradt hátra, hogy elkészítsük és kiírjuk a fájlrendszerünket, amint azt korábban is tettük. A belsõ © Kiskapu Kft. Minden jog fenntartva 1. ábra Doboz a dobozban: a kész CD fájlrendszer másolatba ágyazott fájlrendszer másolatban megbúvó fájlrendszer másolatokat tartalmaz fájlrendszer a $(SCRATCH)/CLOOP-ban található. A külsõ fájl- rendszerünk a boot.img és root_fs.tgz állományokat tartal- táskor beállíthatunk úgy, hogy beépítettként tartalmaz- mazza majd. Ezt kiírjuk a CD-re (egy-két CD-RW lemez zon sok általános eszközt, a dietlibc pedig egy kis méret- sem árthat) majd elindítjuk róla a gépet. Hacsak nincs nagy re optimalizált C könyvtár változat. Örömmel vehetjük balszerencsénk, mûködni fog. észre, hogy a busybox mindent tud, amire az initrd-ben szükségünk lehet, valamint hogy statikusan fordítva Végszó a dietlibc-vel mindössze 100K helyet foglal. Összeha- Számomra, régi Linux felhasználó számára, aki szokásos te- sonlításképpen ugyanezekkel a Busybox kapcsolókkal lepítést már évek óta nem csinált, igazán lenyûgözõ, hogy statikusan fordítva a glibc-vel 500K méretû végrehajtható milyen sokat fejlõdött az automatikus alkatrész felismerés állományt kapunk. és támogatás. És ahogy telik az idõ, biztos vagyok benne, A Busybox bõvítményeit a (tarlabdában található) Config.h hogy még ennél is csak jobb lesz. állomány #define kulcsszavaival kapcsolhatjuk be. A ki- Merre lehet továbblépni? Az automount támogatáson kapcsolt értékek talán önkényesnek tûnhetnek, de amikor kell kicsit csiszolni; esetleg kipróbálhatunk valami mást, könyvtárlista kérésére használhatjuk az echo * és tar cvf például a Volumatic-ot. A többi leginkább a készülõ termé- /dev/null parancsokat is, az ls igazán luxusnak tûnik. künktõl függ. Azonban minden parancsfájl szabad prog- Az initrd-t a genext2fs programmal készítjük, így nem lesz ram, és érdeklõdve várom a visszajelzéseket. szükségünk loopback felcsatolásra. A program egy könyv- társzerkezetbõl készít ext2 fájlrendszert, amit gzip-el tömörí- Linux Journal 2005. április, 132. szám tünk és a rendszerindító lemezmásolatba mozgatunk (1.ábra). Daniel Barlow független szakértõ az Angliai Ox- fordban, ahol Linux és Common Lisp fordítókkal Rendszerindítás dolgozik. Szabadidejében, nagyon szeret elekt- A CD-ROM-ról történõ rendszerindítás szabványa El Torito romos gitáron rosszul játszani, ami nagy szeren- néven vált ismertté amit eredetileg a Phoenix BIOS készítõi cse, ugyanis csak így tud. Megjegyzéseket hoztak létre. Az El Torito egy vagy több lemezképmás létre- a [email protected] címen várja. hozását teszi lehetõvé a CD lemezen. Rendszerindításkor  a BIOS felderíti ezeket, szimulált lemezt hoz belõlük létre KAPCSOLÓDÓ CÍMEK és errõl indítja a rendszert. A másolatok hajlékony lemez (1.44MB vagy 2.88MB) illetve merevlemez másolatok lehet- nek. Ezen kívül létezik nem-emulációs mód is, ahol a BIOS debconf:  egy megadott állományból tölt be szektorokat és emulált www.kitenet.net/programs/debconf lemez kialakítása nélkül hajtja végre azokat. El Torito: Természetesen itt is van buktató: Az El Torito rendszert  www.phoenix.com/resources/specs-cdrom.pdf BIOS írók készítették. A laptoppal vagy egyéb érdekes al- Hotplug: katrésszel rendelkezõ Linux tulajdonosok jól tudják, hogy  linux-hotplug.sf.net a BIOS-ok nem éppen a leginkább hibamentes programok ezen a földön. Nem ok nélkül feltételezhetjük, hogy bizo- SYSLINUX:  nyos gyártók nyugodt szívvel hagyják figyelmen kívül a hi- syslinux.zytor.com vatalos rendszerleírásokat mindaddig, míg szerkezetük az VNC: éppen aktuális Windows rendszer alatt valahogy elindul.  www.realvnc.com Így aztán akármilyen fájdalmas is a méretbeli korlát, a ma-

www.linuxvilag.hu 2005. július 41 Szaktekintély

InfiniBand és Linux

Vajon miért is jó, ha a hálózatunk távoli rendszere irkálhat a memóriánkba, hogyan küldhetnek felhasználói programok a rendszermag zaklatása nélkül adatokat, valamint néhány újabb adalék a nagy sebességû kapcsolattartásról. © Kiskapu Kft. Minden jog fenntartva

osszú vajúdást követõen végül megszületett az Az elmúlt években az IB-t tekintették a PCI utódjának, de H InfiniBand (IB), sõt a Linux IB támogatása is már manapság már nem ez a helyzet. Az IB adapterek továbbra fejlesztés alatt áll. Fizikai szinten az IB nagyon is inkább külsõ eszközök maradnak amelyek PCI, PCI hasonlít a PCI Express-re. Az adatokat több nagy sebességû Express, HyperTransport vagy hasonló periféria buszokon soros csatornán továbbítja. Az InfiniBand elsõ változatának keresztül csatlakoznak a rendszerhez. leírása valamennyi csatornán azonos jelzésszélességet enge- A rendszereket az IB hálózathoz csatoló hálózati eszközt délyezett, mégpedig 2.5Gb/s-ot, akárcsak a PCI Express. Host Channel Adapternek (HCA) nevezik. Az eszköz igen A leírás legutóbbi változata (1.2), ugyanakkor már támogatja magas sebessége mellett az IB HCA egy üzenetközvetítõ a csatornánkénti 5Gb/s és 10Gb/s sebességeket. Ezen kívül felületet is biztosít, melynek segítségével az InfiniBand az IB az 1X, 4X, 8X és 12X, míg a PCI Express a X1, X2, X4, 10Gb/sec (vagy még nagyobb) sebességét ki tudják aknázni X8, X12, X16 és X32 szélességeket támogatja. A leggyakrab- a rendszerek. Az IB sebességének kihasználásának kulcsa ban használt IB sebesség manapság a 4X 2.5Gb/s/csatorna a zéró másolású hálózatkezelés támogatása; máskülönben sebesség mellett, azaz összesen 10Gb/s. A 12X szélesség az alkalmazások egyfolytában csak az adataikat másolnák. a 10Gb/s/csatorna sebességgel kombinálva azonban a jelen- A zéró másolást a HCA felület három kulcseleme teszi le- legi IB leírás szerint akár a lenyûgözõ 120Gb/s átviteli telje- hetõvé: az elvont, magasszintû munkasor, a rendszermag sítményt is támogatja. megkerülés és a távoli közvetlen memória elérés (Remote Minthogy az IB általában hálózatépítésre használatos, a réz DMA; RDMA). Az elvont munkasor annyit jelent, hogy és optikai kábelezést egyaránt támogatja, míg a PCI Exp- az alkalmazások nem csomagról csomagra formálják ressz kábelmeghatározásai még fejlesztés alatt állnak. meg és dolgozzák fel a hálózati csomagokat, hanem A legtöbb IB telepítés rézkábelezést alkalmaz (1. ábra) kérelmeket küldenek a HCA által kezelt soroknak. amely körülbelül 10 méterig használható. Az IB ezen Egy munkakérelmen belül küldött üzenetet legfeljebb kívül lehetõvé tesz optikai kábelezést is, amely elméletileg 4GB hosszú lehet. A HCA felügyeli az üzenet csomagok- akár 10 kilóméterig is használható. ra tördelését illetve várakozik a jóváhagyásokra és küldi

1. táblázat Összehasonlító tábla Technológia Adatátviteli sebesség Kábelezés USB 12Mb/s 5m Hi-Speed USB (USB 2.0) 480Mb/s 5m IEEE 1394 (FireWire) 400Mb/s 4m Gigagbit Ethernet 1,000Mb/s 100m (cat5 kábel) 10 Gigabit Ethernet 10,000Mb/s 10m (réz IB kábel), 1+ km (optikai) Myrinet 2,000Mb/s 10m (réz), 200m (optikai) 1X InfiniBand 2,000Mb/s 10m (réz), 1+ km (optikai) 4X InfiniBand 8,000Mb/s 10m (réz), 1+ km (optikai) 12X InfiniBand 24,000Mb/s 10m (réz), 1+ km (optikai)

42 Linuxvilág Szaktekintély

A rendszermag megkerülése lehetõvé teszi, hogy az al- kalmazások közvetlenül küldjenek munkakérelmeket és fogadjanak befejezési eseményeket a HCA sorairól, így a rendszerhívásokkal járó felesleges környezetváltás elke- rülhetõ. A rendszermag meghajtó beállítja a sorokat, ahol a szokásos memória védelem gondoskodik arról, hogy min- den folyamat csak a saját erõforrásait érje el. Valamennyi nagysebességû irányítási (path) mûvelet ugyanakkor a fel- használói térben megy végbe. Az utolsó elem, az RDMA, lehetõvé teszi, hogy az üzenet magával vigye a célcímet ahová a memóriában majd kerül- nie kell. Az adat helyének megadása például az IB alatti tá- rolók kialakításakor lehet hasznos, ahol a kiszolgáló lemez- olvasásai teljesen rendszertelenek lehetnek. RDMA nélkül vagy a kiszolgálónak kell idõt pazarolnia mikor áll elküldés- re készen az adat vagy az ügyfélnek kell CPU erõt pazarol- nia az adatok végsõ helyre másolásához. Bár a távoli rendszerek memóriájába firkálással szem- © Kiskapu Kft. Minden jog fenntartva ben vannak bizonyos fenntartások az IB használó alkal- mazások szigorú határokat és jogosultságokat állíthatnak 1. ábra Felülrõl lefelé: cat5 Ethernet kábel, be az RDMA szolgáltatásnak. Az IB RDMA legalábbis 4X InfiniBand kábel és 12X InfiniBand kábel biztonságosabb dolog mint a lemezvezérlõ DMA-ját (méretarány kedvéért egy negyeddolláros érme látható) a memóriába engedni. Nagy sebességén felül, az IB egyúttal a fürtök (clusters) 1. lista IPoIB Meghajtó alaphelyzetbe állítása készítését és kezelését is leegyszerûsíti, hiszen egyetlen eszköz szállítja a hálózati és tároló forgalmat valamint a fürt kommunikációt. Több csoport is hozott létre külön- struct ib_qp_init_attr init_attr = { féle IB felett futtatható felsõ szintû protokollokat, néhány .cap = { ezek közül: .max_send_wr = IPOIB_TX_RING_SIZE, .max_recv_wr = IPOIB_RX_RING_SIZE, • IP-over-InfiniBand (IPoIB): az Internet Engineering Task .max_send_sge = 1, Force (IETF) szabványfejlesztõ munkacsoportja az IB .max_recv_sge = 1 alatti IP forgalomküldés ösvényét tapossa ki. Ezek az }, ösvények idõvel a IpoIB RFC szabványává válhatnak. .sq_sig_type = IB_SIGNAL_ALL_WR, Az IPoIB ugyanakkor nem használja maximálisan ki .rq_sig_type = IB_SIGNAL_ALL_WR, az IB képességeit, hiszen a forgalom továbbra is az IP .qp_type = IB_QPT_UD vermen keresztül utazik és csomagról csomagra kerül }; elküldésre. Az IPoIB egyszerû lehetõséget biztosít priv->pd = ib_alloc_pd(priv->ca); régebbi alkalmazásaink futtatására vagy a vezérlõfor- priv->cq = ib_create_cq(priv->ca, galom átküldésére IB-n keresztül. ipoib_ib_completion, NULL, dev, • Sockets Direct Protocol (SDP): az InfiniBand Trade IPOIB_TX_RING_SIZE + Association maga adott meg egy olyan protokollt, amely IPOIB_RX_RING_SIZE + 1); a szabványos socket mûveleteket helyi IB RDMA mûve- if (ib_req_notify_cq(priv->cq, IB_CQ_NEXT_COMP)) letekké alakítja. Ezáltal a socket alkalmazások változta- goto out_free_cq; tás nélkül futtathatók, ugyanakkor az IB teljesítményé- priv->mr = ib_get_dma_mr(priv->pd, nek szinte minden elõnyét élvezhetik.

IB_ACCESS_LOCAL_WRITE); • SCSI RDMA protokoll (SRP): a SCSI szabványokért fele- init_attr.send_cq = priv->cq; lõs InterNational Committee for Information Technology init_attr.recv_cq = priv->cq, Standards (INCITS) T10 bizottság, kiadott egy szab- priv->qp = ib_create_qp(priv->pd, &init_attr); ványt, amely leírja hogyan kell a SCSI protokollt az IB-hoz rendelni. A második generációs SRP-2 protokoll fejlesztése jelenleg folyik.

újra az elveszett csomagokat. Mivel a HCA alkatrész Sok más csoport is tanulmányozza az IB kihasználási lehe- felügyeli a nagyméretû üzenetek kézbesítését bármiféle tõségeit, például a DAT Collaborative és az Open Group CPU felhasználás nélkül, az alkalmazások több CPU Interconnect Software Konzorciuma készített API-kat, idõt használhatnak fel a küldött és fogadott adatok RDMA csatolásokat az NFS-hez valamint IB támogatást elkészítéséhez és feldolgozásához. különféle MPI csomagokhoz.

www.linuxvilag.hu 2005. július 43 Szaktekintély

priv->pd = ib_alloc_pd(priv->ca); 2. lista IPoIB meghajtó küldési kérelem feladása if (IS_ERR(priv->pd)) { printk(KERN_WARNING “%s: failed “ “to allocate PD\n”, ca->name); priv->tx_sge.lkey = priv->mr->lkey; return -ENODEV; priv->tx_sge.addr = addr; } priv->tx_sge.length = len; priv->tx_wr.opcode = IB_WR_SEND; Ezek után a rendszermag meghívja az ib_create_cq() priv->tx_wr.sg_list = &priv->tx_sge; függvényt, amely létrehozza az befejezõdési sort priv->tx_wr.num_sge = 1; (completion queue, azaz CQ). A meghajtó igényli, hogy az priv->tx_wr.send_flags = IB_SEND_SIGNALED; befejezõdési esemény bekövetkeztekor meghívódjon az priv->tx_wr.wr_id = wr_id; ipoib_ib_completion() függvény, valamint, hogy a CQ priv->tx_wr.wr.ud.remote_qpn = qpn; legalább IPOIB_TX_RING_SIZE + IPOIB_RX_RING_SIZE + 1 priv->tx_wr.wr.ud.ah = address; darab munkabefejezési struktúrát tárolhasson. Erre a mé- retre abban a különleges esetben van szükség, amikor ib_post_send(priv->qp, &priv->tx_wr, &bad_wr); a meghajtó a lehetõ legnagyobb számú üzenetet küldi és és fogadja majd nem tud lefutni, míg valamennyi el nem ké- © Kiskapu Kft. Minden jog fenntartva szül. Elég zavaró módon, a CQ-k olyan IB erõforrások, amelyek nincsenek kapcsolatban a PD-kel, ezért a függ- Természetesen nyílt forráskódú támogatás nélkül az egész vénynek nem is kell átadnunk PD adatot. csinos eszköz nem lenne különösebben érdekes a Linux Amikor a CQ elkészült a meghajtó az ib_req_notify_cq() világban. Szerencsére az OpenIB Alliance ipari szövetség függvényhez fordul és kérelmezi, hogy amikor a következõ feladata pontosan az, hogy egy teljesen nyílt forrású IB munkabefejezés a CQ sorba kerülésére hívódjon meg a be- vermet hozzon létre. Az OpenIB jelenleg 15 tag-céggel fejezési esemény függvény. Az ipoib_ib_completion() rendelkezik, amelyek között egyaránt találunk IB alkatrész eseményfüggvény feldolgozza a befejezéseket amíg a CQ terjesztõket, kiszolgálócégeket, programcégeket és kutatási ki nem ürül, majd meghívja az ib_req_notify_cq()-t. szervezeteket. Így újra elindul, amint újabb befejezések válnak elérhetõvé. Az OpenIB programon 2004 februárjában kezdõdtek A meghajtó ekkor meghívja az ib_get_dma_mr()-t amely be- meg a munkálatok, az elsõ rendszermag meghajtó állítja a rendszermag DMA osztó API-tól kapott DMA cím- pedig 2004 decemberében került a rendszermag fába, mel használható memóriaterületet (MR). Ennek kezeléséhez közvetlen azután, hogy a 2.6.10-es kiadás után megszüle- az IB HCA-ban to elkészülnek az átalakító táblák, és egy he- tett a 2.6.11-es fa. A rendszermagba illesztett elsõ IB meg- lyi kulcsot (L_Key) adunk vissza, amelyet aztán tovább lehet hajtó kód csomag éppen csak annyit tud, hogy már azért adni a HCA-nak, és hivatkozhat az adott MR-re. mûködõképes. Tartalmaz egy középréteget, amely elfedi Végül a meghajtó az ib_create_qp()-t hívja meg, amely az alacsonyszintû alkatrészmeghajtókat a felsõszintû létrehoz egy sorpárt (QP). Ezt az objektumot azért neve- protokollok elõl, egyetlen alacsonyszintû meghajtót zik sorpárnak mert két darab munkasort tartalmaz. a Mellanox HCA-hoz, valamint egy IPoIB felsõszintû Egyet a küldési kérelmeknek és egyet a fogadási kérel- protokoll meghajtót amellyel egy alhálózat kezelõt futtat- meknek. A QP létrehozásához elõször ki kell töltenünk hatunk a felhasználói térben. a meglehetõsen méretes ib_qp_init_attr szerkezetet. Az IPoIB meghajtó kódjának néhány apró részlete sokat A fedõstruktúra a készítendõ küldõ és fogadó sorok mére- elárulhat a rendszermag IB támogatásának felhasználási tét adja meg. A sq_sig_type és az rq_sig_type mezõket lehetõségeirõl. Amennyiben egészében szeretnénk látni IB_SIGNAL_ALL_WR értékre állítjuk, így minden munkakére- a kódot, a teljes IPoIB meghajtót kell megnéznünk, amelyet lem befejezési eseményt vált ki . egyébként a Linux forrásfájának drivers/infiniband/ulp/ipoib A qp_type mezõt IB_QPT_UD értékre állítjuk, létrehoz- könyvtárában találjuk meg. va ezzel a megbízhatatlan adatcsomag (unreliable Az 1. lista bemutatja, mit is csinál az IPoIB meghajtó datagram avagy UD) QP-t. Az IB QP esetében négyféle az IB erõforrások lefoglalásához. Elõször meghívja az szállításról beszélhetünk: megbízhatóan összekapcsolt ib_alloc_pd() függvényt, amely lefoglalja a védelmi tarto- (RC), megbízható adatcsomag (RD), megbízhatatlanul mányt (protection domain vagy PD), ez egy átlátszó tároló kapcsolt (UC) és megbízhatatlan adatcsomag (UD). amelyre valamennyi IB felhasználónak szüksége van az A megbízható szállítások esetében az IB alkatrész erõforrások tárolásához. garantálni tudja, hogy minden egyes üzenet vagy sike- Itt most kihagytuk a listából a helyes hibakezelést, resen kézbesítõdik, vagy hibát jelez amennyiben a hibát annak ellenére, hogy minden valódi rendszermag egy javíthatatlan hiba okozza (például kihúzzuk a ká- kód valamennyi függvény visszatérési értékét ellen- belt). A kapcsolt adatszállítás esetében minden üzenet õrizné. Minden erõforrást foglaló és mutatót visszaadó egyetlen célállomásra irányul, amelyet a QP beállítása- IB függvény a szokásos Linux módszert alkalmazza kor határozunk meg, az adatcsomag szállítás esetében a hibák visszaadására az ERR_PTR() makrón keresztül, minden egyes csomag különbözõ célokra irányulhat. következésképpen az állapotot az IS_ERR() segítségével Amikor az IPoIB meghajtó elkészítette a QP-t, a kapott le lehet kérdezni. Például a ib_alloc_pd() hívás a valódi csomagokat a QP-n keresztül küldi a hálózati verembe. rendszermag kódban a következõképpen nézne ki: A 2. lista mutatja be, hogy mit kell tennünk akkor,

44 Linuxvilág Szaktekintély

ha egy kérelmet akarunk helyezni a QP küldési sorába. alapvetõ IB támogatással, nekiláthatunk a felsõszintû proto- Elõször is a meghajtó a küldési kérelemhez felállít egy kollok elkészítésének, ideértve például az SDP-t és a tároló gyûjtõlistát. Az lkey mezõ annak az MR-nek az L_Key protokollokat. A másik komolyabb terület amely jelenleg értékét veszi fel, amelyet az ib_get_dma_mr()-bõl kaptunk. foglalkoztat bennünket, a közvetlen felhasználói térbeli IB Minthogy az IPoIB olyan csomagokat küld, amelyek elérés, azaz a korábban említett rendszermag megkerülõ egyetlen összefüggõ részben találhatóak, a gyûjtõlistában képesség. Rengeteg érdekes dolgot lehet még csinálni az mindössze egyetlen bejegyzés található. A meghajtónak IB-hez és az OpenIB Projekt mindenki számára nyitott, csak a címet és csomag hosszát kell megadnia. A gyûjtõ- kalandra fel tehát, csatlakozz a mókához. listában található cím nem a virtuális cím hanem a dma_map_single() függvénnyel megkapott DMA cím Linux Journal 2005. május, 133. szám lesz. Általánosságban a programok hosszabb gyûjtõlistákat is használhatnak, ezáltal rákényszerítve a HCA-t, hogy Roland Dreier Linux InfiniBand meghajtók karbantartója és egyetlen üzenetbe gyûjtsön össze több puffert és így nem vezetõ fejlesztõje az OpenIB.org projekt keretében. Roland kell egyetlen pufferbe másolnia az adatokat. a Kaliforniai Berkeley egyetemen szerezte matematika A meghajtó ezután kitölti a munkakérelem maradék mezõ- doktorátusát és több különféle titulusa volt már akadémiai it. Az opcode-ot send-re állítja, az sg_list és num_sge érté- körökben valamint a mûszaki világban. 2001 óta a Topspin keket az éppen kitöltött gyûjtõlista címe kerül a send_flags Communications alkalmazásában áll. © Kiskapu Kft. Minden jog fenntartva értéke pedig signaled lesz, így a munkakérelem befejezést  vált ki amikor végez. A távoli QP számot és címkezelõt be- KAPCSOLÓDÓ CÍMEK állítjuk, majd a wr_id mezõbe a meghajtó munkakérelem azonosítója kerül.  A munkakérelem kitöltése után a meghajtó meghívja az www.openib.org -et, amely végül a kérelmet felveszi a sorba. ib_post_send()  www.infinibandta.org Amikor a kérelmet teljesítette az IB alkatrész, a munka teljesítése a meghajtó CQ sorába kerül, amelyet végül az  www.ietf.org ipoib_ib_completion() dolgoz fel.  www.t10.org Az InfiniBand rengeteg mindenre képes és az OpenIB Alliance éppen csak elkezdte megírni a képességeit kihasz-  www.datcollaborative.org náló programokat. Most, hogy már a Linux rendelkezik az

www.linuxvilag.hu 2005. július 45 Szaktekintély

VIA PadLock – Boszorkányosan gyors titkosítás A VIA olcsón beszerezhetõ processzora támogatja az Advanced Encryption Standardet, így segítségével kiemelkedõ szintû titkosítást végezhetünk, méghozzá hardveres szintû sebességgel. © Kiskapu Kft. Minden jog fenntartva ki használt már titkosítást, az valószínûleg hamar szám-elõállítóját is a hw_random illesztõprogram támogatja. észrevette, hogy a mûvelethez nem csekély pro- A Nehemiah 8-as és újabb fokozatai már két független RNG-t cesszorteljesítményre van szükség. A régebbi rend- tartalmaznak, valamint az Advanced Cryptography Engine-nel szerekAen például a titkosított fájlrendszerek használata las- (speciális kriptográfiai motor, ACE) bõvültek. Az ACE az sabb fájlmûveleteket eredményez, az újabb rendszereken Advanced Encryption Standard (speciális titkosítási szabvány, pedig legalábbis magasabb processzorterheléssel kell számol- AES) algoritmus alkalmazásával, háromféle szabványos kulcs- nunk. A hálózati forgalom IPsec alapú titkosítása szintén le- hosszal – 128, 192 és 256 bit – négyféle módban képes adato- lassítja a dolgokat, és sokszor még egy hétköznapi, 100 Mbps kat titkosítani és visszafejteni. Az üzemmódok a következõk: sebességû hálózaton is észlelhetõ a teljesítmény visszaesése. • Elektronikus kódkönyv (electronic codebook, ECB) • A titkosítás/teljesítmény kompromisszum kezelésére • Titkosítási blokkláncolás (cipher block chaining, CBC) többféle út kínálkozik: • Titkosítási visszacsatolás (cipher feedback, CFB) • Nem használunk titkosítást: látszólag a legolcsóbb meg- • Kimeneti visszacsatolás (output feedback, OFB) oldás, ám hosszú távon rendkívül drágává is válhat. • A lassúbbodás elfogadása: a legjellemzõbb megoldás. Az ezeknek megfelelõ utasítások az xcryptecb, az • Különálló titkosításgyorsító eszköz használata: például PCI xcryptcbc stb. A továbbiakban ezeket közös névvel buszra illeszkedõ kártya, amely sajnos nem javít annyit xcrypt-nek fogom nevezni, az egyes módokhoz tartozó a helyzeten, mint várnánk, ugyanis az adatoknak a feltét- parancsokat nem fogom használni. lenül szükségesnél többször kell megjárniuk a PCI buszt. Az Esther mag 0-s és újabb fokozatai örökölték a Nehemiah • VIA PadLock technológiát használó processzor haszná- két RNG egységét. Az ACE kibõvült a számláló (counter, CTR) lata. De vajon mi az a VIA PadLock? Rögtön kiderül. mód támogatásával, valamint az üzenethitelesítõ kódok (Message Authentication Code, MAC) számításának lehetõsé- VIA PadLock gével. Itt két újabb rövidítéssel kellett megismerkednünk, Nem is oly rég a VIA egyszerû és egyben vitatható ötlettel állt ezek a PHE és a PMM. A PadLock Hash Engine (PadLock ki- elõ: válasszunk ki néhány kriptográfiai algoritmust, majd dró- vonatoló motor, PHE) adott bemeneti blokk kriptográfiai célú tozzuk be õket a processzorba. Létrejött tehát egy i686 osztá- kivonatának elkészítésére alkalmas; az SHA1 vagy az SHA256 lyú processzor, amely néhány új, kifejezetten titkosítási célt algoritmussal dolgozik. Az ide kötõdõ parancs az xsha. szolgáló utasítást is képes megérteni. A technológia a VIA A PadLock Montgomery Multiplier (PMM, PadLock PadLock nevet kapta, míg maga a processzor teljes mértékben Montgomery szorzó) az aszimmetrikus, más szóval nyilvá- kompatibilis az AMD Athlon és az Intel Pentium lapkákkal. nos kulcsú titkosítási eljárások során a legszélesebb körben A rendelkezésre álló PadLock szolgáltatások körét a gép használt parancsok egyikének felgyorsítását szolgálja; ez az processzorának változata határozza meg. A processzorvál- AB mod M, ahol az A, a B és az M hatalmas nagy, általában tozatokat általában család-modell-fokozat hármassal jelölik. 1024 vagy 2048 biten ábrázolható szám. Szolgáltatásait Az i686 osztályú processzorok mindegyike a 6-os családba a montmul utasítással vehetjük igénybe. tartozik. Ha a modellszám 9-es, akkor a processzor Mint már utaltam rá, a továbbiakban leginkább az xcrypt uta- Nehemiah, ha 10-es, akkor pedig Esther maggal rendelkezik. sításokról lesz szó. Az ismertetésre kerülõ alapelvek túlnyomó A fokozatok az egyes modellek megújított változatai. A pro- részt a többi egységre is érvényesek, és az xcrypt csupán pél- cesszor változatát a /proc/cpuinfo fájlban találjuk meg. daként szolgál. Sõt, a titkosítás kapcsán említett kifejezések A Nehemiah 3-as fokozata, illetve az újabb példányok elekt- és fogalmak a visszafejtés területén is megõrzik érvényüket. romos zaj alapú véletlenszám-elõállítóval (random number generator, RNG) rendelkeznek, ami meglehetõsen jó vélet- A PadLock használata len értékeket képes elõállítani különféle célokra. Az RNG A külsõ, általában a PCI buszra csatlakozó kriptográfiai gyor- elérésére az xstore parancs szolgál. Az Intel és az AMD sítókkal ellentétben a PadLock motor a processzor beépített processzorokhoz hasonlóan a VIA processzorok véletlen- része. Ennek köszönhetõen jóval egyszerûbb a használata,

46 Linuxvilág Szaktekintély

Minél nagyobbak a blokkok, annál jobbak az 1. táblázat Az OpenSSL teljesítményteszt eredménye 1,2 GHz-es órajelû eredmények, ugyanis eltûnnek az OpenSSL VIA Nehemiah processzoron [kBps] könyvtár által okozott többletterhelések. A 8 Típus 16bájt 64 bájt 256 bájt 1024 bájt 8192 bájt kB-os blokkok ECB módban végzett titkosítá-

aes-128-ecb (szoftveres) 11274,53 14327,79 14608,64 14672,55 14693,72 sa körülbelül 1,7 GBps sebességgel lehetséges, míg CBC módban 800 MBps-ot kapunk. aes-128-ecb (PadLock) 66892,82 346583,52 910704,21 1489932,59 1832151,72 A szoftveres titkosítással összehasonlítva aes-128-cbc (szoftveres) 8276,27 12915,75 13264,13 13313,02 13322,92 a PadLock ECB módban ugyanazon a pro- aes-128-cbc (PadLock) 48542,30 241898,79 523706,28 745157,61 846402,90 cesszoron 120-szor gyorsabb, míg a CBC mód esetében 60-szoros az eltérés. A gyorsulásnak köszönhetõen az IPsec 100 hiszen nem kell a busz elérésével vagy éppen a megszakítá- Mbps sebességû hálózaton teljes értékûen, nagyjából 11 sok és az aszinkron mûveletek lekezelésével foglalkozni. MBps sebességgel mûködik. A titkosított fájlrendszerek Egy-egy memóriablokkot titkosítani egy xcrypt utasítással esetében hasonló sebességjavulásokat lehet tapasztalni. ugyanolyan egyszerû, mint átmásolni a movs utasítással. A Bonnie teljesítménytesztet egy UDMA100 módban üze- Ezen a szinten a titkosítás majdnem oszthatatlan mûvelet. Az melõ Seagate Barracuda merevlemezzel futtatva, nyílt ada- utasítás végrehajtása elõtt a puffer a nyílt adatokat tartalmaz- tokkal 61543 kBps-os átviteli sebességet kapunk. PadLockot za, néhány órajellel késõbb, az utasítás végrehajtásának befe- használva ez 49961 kBps-ra mérséklõdik, míg tisztán szoft- © Kiskapu Kft. Minden jog fenntartva jezése után pedig már a titkosítottakat. Ha a kért mûvelet veres titkosítás használatakor csupán 10005 kBps-ot lehet egyetlen blokk feldolgozása, ami az AES algoritmus esetében elérni. A PadLock alkalmazásakor tehát a titkosítatlan átvi- 16 bájtot jelent, akkor a mûvelet teljesen oszthatatlan. Vagyis, telhez képest csupán 20 százalékos teljesítménycsökkenés- a processzor nem szakítja meg a mûveletet, és semmi másba sel kell számolni, míg a szoftveres megoldásnál ez közel 85 nem kezd bele, amíg a titkosítással nem végzett. De mi törté- százalék. A források között szerepel egy a teljesítménymé- nik, ha a puffer több gigabájtnyi titkosítandó adatot tartal- rések eredményeit tartalmazó oldalamra mutató hivatko- maz? Nem volna túl jó ötlet minden más mûveletet leállítani zás; ott további részletek és számok is megtalálhatók. a hosszan tartó titkosítás befejezéséig. Ilyenkor a processzor minden egyes 16 bájtos blokk után jogosult megszakítani Linux alatti támogatás a titkosítást. Elmenti a pillanatnyi állapotot, majd elvégzi A linuxos támogatást eddig – az alábbi csomagokhoz – csak a rá várakozó feladatokat, mint a megszakítások kezelése az xcrypt utasítás révén használható AES algoritmushoz vagy az egyéb folyamatok futtatása. A titkosítási folyamat készítettem el, Esther magos processzorhoz ugyanis még újraindításakor az utasítás elvégzése attól a ponttól folytató- nem jutottam hozzá. Amint megkapom az új processzor dik, ahol felfüggesztésre került. Ez az, amiért csak majdnem egy példányát, szükség szerint meg fogom oldani a többi oszthatatlan a mûvelet: a hívó folyamat számára annak lát- algoritmus támogatását is. szik, ám nagyobb fontosságú esemény megszakíthatja. A pillanatnyi feldolgozási állapot és a futó folyamat regiszte- Rendszermag rei elmentésre kerülnek a memóriába, vagyis egyszerre több Ha a rendszermagnak szüksége van az AES algoritmusra, folyamat is végezhet titkosítást, nem kell adataik összekeve- akkor alapesetben az aes.ko modult tölti be, amely az algo- redésétõl tartani. Ismétlem, mindez sokban hasonlít a me- ritmus szoftveres megvalósítása. Ha az AES-t a PadLockkal móriablokkoknak a movs utasítással végzett másolására. akarjuk futtatni, akkor az aes.ko helyett a padlock.ko modult kell betöltenünk. Ezt kézzel, a modprobe paranccsal Mennyire gyors? tehetjük meg, illetve az alábbi sort hozzáadva a /etc/ A VIA adatai szerint egy 1,2 GHz órajelû processzor maxi- modprobe.conf fájlhoz: mális átviteli sebessége több mint 15 Gbps, vagyis majdnem alias aes padlock 1,9 GBps. Az általam végzett teljesítménymérések igazolták, hogy valós alkalmazásoknál is láthatunk hasonló sebessége- Ezt követõen minden alkalommal, amikor AES-re lesz szük- ket, nemcsak a VIA marketinganyagaiban, ami rendkívül sége, a rendszermag a padlock.ko modult is betölti. kellemes meglepetés volt. Foltok a rendszermag 2.6.5-ös és újabb változataihoz létez- A tényleges titkosítási sebesség két tényezõtõl függ, a titko- nek; lásd a források közötti linuxos PadLock oldalt. Az alap- sítási módtól és az adatok igazításától. Az ECB a leggyor- szintû illesztõprogram a 2.6.11-es rendszermag alapváltoza- sabb, a legszélesebb körben használt CBC pedig nagyjából tában, mindenféle foltozás nélkül is elérhetõ lesz. az ECB sebességének felét képes hozni. A PadLock megkö- veteli az adatok 16 bájtos határokra igazítását, ezért az iga- OpenSSL zítás nélküli adatokat elõször a megfelelõ címekre kell moz- Azok, akik elég merészek ahhoz, hogy az OpenSSL újabb, CVS gatni, ami némi idõveszteséget okoz. Egyes esetekben az alatti változatait használják, már rendelkeznek a PadLock tá- Esther processzorok képesek az adatok önmûködõ igazítá- mogatásával. Az OpenSSL 0.9.7-es változatát futtatóknak meg sára is, ám a sebességcsökkenés ekkor is fellép. kell foltozniuk és újra kell fordítaniuk a könyvtárat; illetve le- Az 1. táblázat méréseim eredményeinek egy részét tartal- hetséges, hogy terjesztésük csomagjai már eleve tartalmazzák mazza. Az eredményeket az OpenSSL teljesítményteszttel, a foltot, ilyen terjesztés például a SuSE Linux 9.2. Azt, hogy 1,2 GHz-es VIA Nehemiah processzoron kaptam, a mennyi- saját OpenSSL példányunk rendelkezik-e PadLock támoga- ségek mértékegysége kBps. tással, az alábbi egyszerû paranccsal vizsgálhatjuk meg:

www.linuxvilag.hu 2005. július 47 Szaktekintély

$ openssl engine padlock összes többi utasítása is pontosan így használható, illetve az (padlock) VIA PadLock (RNG, ACE) egyéb PadLock-szolgáltatások is hasonlóan mûködnek.

Az (RNG, ACE) helyett lehet, hogy (no-RNG, no-ACE) jelenik xcryptcbc meg, ez azt jelenti, hogy bár OpenSSL-ünk képes a PadLock tá- Az xcryptcbc semmilyen explicit operandussal nem mogatására, gépünk processzora nem nyújt ilyen szolgáltatást. rendelkezik. Ehelyett minden regiszternek meghatározott Lehet, hogy csúf hibaüzenet jelzi, hogy nincs ilyen motor szerepet ad: a gépünkön, ekkor el kell végeznünk az OpenSSL könyvtár • ESI – forráscím. frissítését vagy foltozását. A titkosítási mûveleteik végrehaj- • EDI – célcím. tására az OpenSSL-t használó programoknak a PadLock támo- • EAX – kezdeti értékadási vektorcím. gatás használatához az úgynevezett EVP_interface-t kell hasz- • EBX – titkosító kulcs címe. nálniuk, valamint valamikor futásuk elején el kell végezniük • ECX – a feldolgozandó blokkok száma. a hardveres gyorsító kezdeti értékadását: • EDX – vezérlõszó címe. #include int main () Alapesetben minden címet 16 bájtos határra kell igazítani. { [...] ESI/EDI – A forrás- és céladatok címei © Kiskapu Kft. Minden jog fenntartva ENGINE_load_builtin_engines(); A forrás- és a célcím akár azonos is lehet, vagyis a titkosítást ENGINE_register_all_complete(); helyben is végezhetjük. A célpuffernek legalább akkorának [...] kell lennie, mint a forrásnak. Mindkettõ méretének a blokk- } méret (16 bájt) többszörösének kell lennie. Egyes esetekben az Esther processzor az igazítás nélküli pufferek használatát További részletek az OpenSSL leírásának evp(3) man oldalán is lehetõvé teszi, de ilyenkor a mûvelet végrehajtása lassabb. találhatók. Például SuSE Linux 9.2 alatt az OpenSSH-nak van egy hasonló foltja, amivel gyorsabb hálózati scp- EAX – kezdeti értékadási vektorcím átviteleket lehet végezni. A kezdeti értékadási vektor (initialization vector, IV) egyike a titkosítás eredményét meghatározó átadott értékeknek. Binutils Az IV mérete megegyezik a blokkmérettel, vagyis 16 bájt. Ha a PadLockot saját programjainkban akarjuk használni, A kezdeti értékadási vektorokról a megfelelõ szakirodalom- akkor a megfelelõ utasítást név szerint is meghívhatjuk ban lehet részletesebben olvasni. – mint például xcryptcbc –, de hexadecimális formában, közvetlenül is írhatjuk: EBX – titkosító kulcs címe .byte 0xf3,0x0f,0xa7,0xd0 A titkosító kulcs mérete 128, 192 vagy 256 bit lehet. Az AES algoritmus belül úgynevezett kiterjesztett kulcsot használ, A régebbi fejlesztõeszközökkel való együttmûködés biztosí- amit a titkosító kulcsból származtat. A 128 bites kulcsoknál tása érdekében inkább a mûveleti kódos formátumot hasz- a kiterjesztett kulcsot a PadLock számítja, a hosszabb kul- náljuk. A Binutils 2.15-ös és újabb változatai ugyanakkor, csoknál ezt nekünk kell megtennünk. ahol kell – ilyen például a gas (GNU assembler) és az objdump –, ott ismerik a szimbolikus neveket is. A binutils ECX – feldolgozandó blokkok száma többek közt az utasításszintû mûveletekért felelõs BFD Az xcrypt utasításokat mindig a rep elõtaggal használjuk, könyvtárát használja a GNU gdb hibakeresõ is. Egy titkosító ami lehetõvé teszi ismételt végrehajtásukat egészen addig, függvény kiíratása például így nézhet ki: amíg az ECX regiszter értéke nulla nem lesz. Az ECX által (gdb) x/3i $pc tárolt érték az egyes blokkok titkosításakor vagy visszafej- 0x8048392 : lea 0x80495f0,%edx tésekor fokozatosan csökken. 0x8048398 : repz xcryptecb 0x804839c : push %eax EDX – vezérlõszó címe A PadLock csak akkor tudja, hogy pontosan hogyan kell Mint sejteni lehetett, a SUSE Linux 9.2 minden vonatkozó feldolgoznia az adatokat, ha az úgynevezett vezérlõszó csomagja rendelkezik PadLock foltokkal, így a PadLock tá- adatszerkezetet feltöltjük a következõ elemekkel: mogatás ennél a terjesztésnél már gyári állapotban is meg- • Algoritmus (algo) – csak az AES-t választhatjuk. oldott. Akinek a terjesztése nem rendelkezik a foltokkal, az • Kulcsméret (ksize) – a támogatott méretek egyike. látogasson el a források között szereplõ Linux PadLock hon- • Irány (encdec) – titkosítás vagy visszafejtés. lapomra, és keresse meg a számára szükségeseket. • Kulcselõállítás (keygen) – elkészítettük a kiterjesztett kulcsot, vagy a PadLocknak kell kiszámítania? A PadLock programozása • Körök (rounds) – az algoritmus egyik belsõ értéke, je- Az alábbiakban néhány a PadLock programozásával kapcsola- lentését lásd a késõbbiekben vagy a PadLock leírásában. tos irányelvet szeretnék ismertetni, és kicsit részletesebben is foglalkozni fogok az xcryptcbc-vel. Példát mutatok a PadLock C-ben egy union tökéletesen megfelel az adatszerkezet he- alkalmazására egy adatpuffer AES algoritmussal, 128 bites lyének lefoglalására, elemeit pedig egy bitmezõ segítségével kulccsal, CBC módban végzett titkosítására. Az xcrypt csoport könnyen meg tudjuk adni és el tudjuk érni:

48 Linuxvilág Szaktekintély

union cword { tésére utasítja. Ezután sor kerül az xcryptcbc utasítás kiadá- uint8_t cword[16]; sára, majd az EAX regiszterben talált értékkel térünk vissza, struct { mint az új kezdeti értékadási vektorra irányuló mutatóval. int rounds:4; Ügyeljünk a vezérlõszó adatszerkezet helyes kitöltésére. int algo:3; A legjobb az, ha elsõ lépésként töröljük az union-t, így elke- int keygen:1; rülhetjük a memóriában esetlegesen elõforduló értékek int interm:1; használatát: int encdec:1; memset(&cword, 0, sizeof(cword)); int ksize:2; } b; Most egyenként töltsük fel a mezõket. A lista elsõ eleme }; a rounds. Ez adja meg, hogy az AES algoritmus hányszor menjen végig a bemeneti blokkon. Az algoritmus minden Assembler példa körben a kiterjesztett kulcs egy egyedi részét használja. Elméletbõl mindent tudunk, nézzünk egy valódi példát. Ha a FIPS AES szabványát akarjuk követni, akkor 128 bites Kezdjünk néhány tiszta assembler-sorral: kulcsnál 10, 192 bitesnél 12, 256 bitesnél pedig 14 kört kér- .comm iv,16,16 jünk. Ha a key_size változó a titkosító kulcs méretét bájtban .comm key,16,16 adná meg, akkor a körök számát az alábbi képlettel kapnánk: © Kiskapu Kft. Minden jog fenntartva .comm data,16,16 cword.b.rounds = 10 + (key_size - 16) / 4; .comm cword,16,16 .text A következõ mezõ az algo. Segítségével a késõbbiekben cryptcbc: más, az AES-tõl eltérõ algoritmusokat is választhatunk movl $data, %esi #; forráscím majd, ám jelenleg kizárólag az AES áll rendelkezésünkre. movl %esi, %edi #; cél Értékét tehát hagyjuk nullán. movl $iv, %eax #; IV A keygen mezõt akkor állítsuk egyre, ha a kiterjesztett movl $key, %ebx #; titkosító kulcs kulcsot magunk állítjuk elõ. A nullás érték azt jelenti, hogy movl $cword, %edx #; vezérlõszó a PadLocknak magának kell azt elõállítania; erre viszont movl $1, %ecx #; blokkszám csak 128 bites kulcsnál van lehetõség: rep xcryptcbc cword.b.keygen = (key_size > 16); ret Az interm lehetõvé teszi az algoritmus futtatásának egyes A fenti kódrészlet megadott titkosító kulccsal és kezdeti ér- körei után kapott köztes értékek tárolását. Van egy olyan tékadási vektorral, a cword vezérlõszóban megadottak sze- gyanúm, hogy a processzor tervezõi ezt a mezõt a pro- rint titkosít egy adatblokkot. Megjegyzem, hogy mivel hely- cesszormag hibáinak felderítésére használták, alkalmazáso- ben titkosítunk, a forrás- és a célcím azonos. Mivel a data kon belüli használatának nem látom értelmét. mezõ mérete egyetlen blokknyi, az ECX regiszter értékeként A titkosítás és a visszafejtés megkülönböztetése az encdec egyet adtunk meg. bittel történik. A nulla titkosítást, az egy visszafejtést jelent. Végül a kulcsméretet a ksize két bittel adja meg: C példa cword.b.ksize = (key_size - 16) / 8; Ha a PadLockot közvetlenül, C programból akarjuk hasz- nálni, akkor megtehetjük például, hogy a PadLock eljáráso- Ennyi. A vezérlõszó elõkészítése és a pufferek igazítása kat külön assembler forrásfájlokba helyezzük, majd a fordí- után meghívhatjuk a padlock_xcryptcbc()-t. Ha a gépben tást különálló modulokba végezzük, végül összekapcsoljuk keringõ elektronok is úgy akarják, néhány pillanat múlva a bináris fájt. Egyszerûbb azonban a GCC beépített assemb- megkapjuk a titkosított adatokat. lerét használni, és az utasításokat közvetlenül a C kódba illeszteni. A források között szerepel egy a beépített Összefoglalás assemblerrel kapcsolatos oktatóanyagra mutató hivatkozás. A PadLock leírása nyilvánosan elérhetõ a VIA webhelyén, static inline void * ahol további a PadLock programozásával kapcsolatos padlock_xcryptcbc(char *input, char *output, anyagokat is találni. Saját honlapomon szerepel egy teljes, void *key, void *iv, void *control_word, a PadLock segítségével egyetlen adatblokkot titkosító pél- int count) daprogram. A források között további figyelemre érdemes { hivatkozások is szerepelnek. asm volatile (“xcryptcbc” : “+S”(input), “+D”(output), “+a”(iv) Linux Journal 2005. május, 133. szám : “c”(count), “d”(control_word), “b”(key)); A cikk forrásai:  www.linuxjournal.com/article/8137 return iv; } Michal Ludvig ([email protected]) nemrég költözött Prágából a világ másik felére, Aucklandbe, ahol az Asterisk Ltd. veze- A fenti kódrészlet a fordítót a megfelelõ bemeneti, számláló tõ mérnöke. Feleségével és lányával mostanában Új-Zéland és egyéb átadott értékek megfelelõ regiszterekbe való betöl- titkainak felfedezésével töltik szabadidejüket.

www.linuxvilag.hu 2005. július 49 Szaktekintély

WLAN-ok védelme WPA és FreeRADIUS alkalmazásával – III. rész

Új, a korábbiaknál biztonságosabb vezeték nélküli hálózatunk üzembe helyezésének végsõ lépéseként fel kell készítenünk néhány nem linuxos ügyfelet az új szabvány kezelésére. © Kiskapu Kft. Minden jog fenntartva

lõzõ két írásomban áttekintettem, hogy a WPA mint talán néhányan még emlékeznek rá, a TLS protokollt E (Wi-Fi protected access, Wi-Fi védett elérés) segítsé- használja a vezeték nélküli kérvényezõk (ügyfelek) és gével hogyan védhetjük meg a vezeték nélküli a hozzáférési pontok kölcsönös hitelesítésére; illetve mind- (wireless) helyi hálózatokat, röviden WLAN-okat a jogo- ehhez X.509 digitális tanúsítványokat alkalmaz. sulatlan hozzáférésektõl és a lehallgatásoktól. Elkezdtem Még hátralévõ feladataink a következõk: ismertetni, hogy a FreeRADIUS segítségével hogyan való- síthatjuk meg a WPA-t saját WLAN-unkon. Az eddigiek • A múlt alkalommal létrehozott kiszolgáló és CA során a FreeRADIUS telepítésérõl, a hitelesítõ szervezet tanúsítványok telepítése a FreeRADIUS kiszolgálóra (certificate authority, CA) létrehozásáról, valamint a WPA-val történõ használatra szánt digitális tanúsít- • A FreeRADIUS beállítása ezeknek a tanúsítványoknak ványok elõállításáról és aláírásáról volt szó. Ebben a hó- a használatára, EAP-TLS felett, a hozzáférési pont napban megnézzük, hogy hova kell elhelyezni ezeket felhasználóinak hitelesítése céljából a tanúsítványokat, hogyan kell beállítani a FreeRADIUS-t, a vezeték nélküli hozzáférési pontot és az ügyfeleket. • A hozzáférési pont beállítása a hitelesítés átirányítására Mindezek alapján, úgy vélem, bárki nekiláthat saját a FreeRADIUS kiszolgálóra WLAN-ja biztonságának megerõsítéséhez. • Az ügyfélprogram és a múlt alkalommal létrehozott Rövid ismétlés CA tanúsítványok telepítése egy Windows XP alapú Azok számára, akik csak most kapcsolódnak be a cikk- ügyfélre, illetve beállítása úgy, hogy a WLAN-hoz sorozatba, esetleg fel kell frissíteniük az emlékezetüket, történõ csatlakozáskor WPA-t használjon. hogy pontosan mit is próbálunk elérni, röviden tekint- sük át céljainkat és lehetõségeinket. A WPA erõteljes A FreeRADIUS kiszolgáló elõkészítése hitelesítési eljárásokkal bõvíti a régebbi, kriptográfiailag A WPA-ról szóló sorozat második részében létrehoztunk megtört WEP protokollt; teszi ezt a 802.1x protokoll és három X.509 digitális tanúsítványt: a hitelesítõ szervezetét alprotokolljai révén, mint az EAP, a PEAP és az EAP-TLS. (cacert.pem), egy kiszolgálótanúsítványt A WPA a TKIP protokoll révén képes a munkamenetkul- (kiszolgalo_kulcstanusitvany.pem) és egy ügyféltanúsítványt csok dinamikus egyeztetésére és a kulcsok önmûködõ (ugyfel_tanusitvany.p12). A kiszolgáló és az ügyfél fájlja megújítására is. Ha vezeték nélküli ügyfelünk támogatja a tanúsítványt és annak titkos kulcsát egyaránt tartalmazza, a WPA-t – vagyis rendelkezik WPA kérvényezõvel –, ezért mindkettõ telepítését kellõ körültekintéssel kell elvé- továbbá a vezeték nélküli hozzáférési pontunk is rendel- gezni. A CA tanúsítványt ugyanakkor a kulcstól elkülönítve kezik ilyen képességgel, akkor kétharmad részben már tároljuk, vagyis a cacert.pem-et szabadon terjeszthetjük. sikerrel jártunk. Ha viszont teljes mértékben ki akarjuk A FreeRADIUS beállító fájljai a /etc/raddb/ vagy használni a 802.1x által kínált lehetõségeket, akkor szük- a /usr/local/etc/raddb/ könyvtárban találhatók, terjesztéstõl ségünk lesz egy RADIUS háttérkiszolgálóra is – itt lép függõen. A könyvtárnak van egy certs/ nevû alkönyvtára, be a képbe a FreeRADIUS. ide kell bemásolnunk a CA tanúsítványát, valamint A múlt alkalommal kialakított példakörnyezetben egy a kiszolgálótanúsítványt és kulcsát. Ellenõrizzük, hogy FreeRADIUS kiszolgálót helyezünk üzembe, amelynek fel- a cacert.pem tulajdonosa a root felhasználó-e, a fájlra adatául a tetszõleges WPA-képes vezeték nélküli hozzáféré- vonatkozó engedélyek pedig a következõk legyenek: si ponthoz csatlakozó Windows XP ügyfelek hitelesítését tûztük ki. 802.1x eljárásunk az EAP-TLS lett. Az EAP-TLS, -r--r--r--

50 Linuxvilág Szaktekintély

sokasága, de riadalomra semmi ok. Az EAP-TLS alapú WPA 1. kódrészlet A raddb/certs könyvtárban található használatához csak a következõ három fájlt kell módosíta- tanúsítványokra megadott tulajdonosok és engedélyek nunk: radiusd.conf, eap.conf és clients.conf. A radiusd.conf fájlban csupán azt kell megadnunk, hogy -r--r--r-- 1 root users 1294 2005-02-10 01:05 a radiusd folyamat melyik felhasználó és csoport jogaival fus- cacert.pem son. A jogok alapesetben a démont indító felhasználótól -r------1 nobody users 1894 2005-02-10 01:00 öröklõdnek. Ha a radiusd-t parancsfájlból indítjuk, akkor kiszolgalo_kulcstanusitvany.pem a root jogait örökli – nyilván ezt el szeretnénk kerül. Felhasz- nálóként és csoportként tehát a radiusd.conf-ban egyaránt nobody-t adjunk meg, ahogy ezt a 2. kódrészlet is szemlélteti. Természetesen a nobody/nobody helyett más, kiemelt jogokkal 2. kódrészlet A radiusd.conf két nem rendelkezõ felhasználót és csoportot is választhatunk, módosítandó beállítása ám ha így teszünk, akkor a korábban említett tanúsítványfáj- lok tulajdonosait és a vonatkozó jogokat is módosítanunk user = nobody kell. Bárhogy is döntünk, ellenõrizzük, hogy a kiválasztott fel- group = nobody használóhoz a /etc/password fájlban tartozó bejegyzés szerint a felhasználó nem kaphat héjhozzáférést (a bejegyzés például /bin/false vagy /bin/true lehet); a fiókot SSH, telnet és hasonló © Kiskapu Kft. Minden jog fenntartva programok nem használhatják. Mondanom sem kell, azt sem A kiszolgalo_kulcstanusitvany.pem fájlnak ugyanakkor árt ellenõrizni, hogy a felhasználó és a csoport egyáltalán léte- a nobody felhasználó tulajdonába kell tartoznia, -r------zik-e, és ha nem, létre kell hozni õket. engedéllyel. Az 1. kódrészlet ennek a két fájlnak a hosszú A radiusd.conf további beállításokat is tartalmaz, ám csak könyvtárlistáját szemlélteti. a fenti kettõ módosítása az, ami igazán lényeges. További Ha már a fájlok tulajdonosaival foglalkozunk, ellenõrizzük, tudnivalókat a radiusd.conf(5) man oldalon vagy Jonathan hogy a /var/log/radius/radius.log fájlra és a /var/run/radiusd/ Hassell RADIUS címû könyvében találni. könyvtárra van-e írási engedélye a nobody felhasználónak. A következõ átírandó fájl az eap.conf – itt merülünk a sûrûjé- Ha a FreeRADIUS-t forrásból fordítottuk, akkor lehetséges, be. A 3. kódrészlet az eap.conf módosítandó sorait tartalmazza. hogy az elõbbiek helyett a /usr/local/var/log/radius/ A 3. kódrészletben a private_key_password átadott érték- radius.log fájllal és a /usr/local/var/srun/radiusd/ könyvtár- kel megadtam egy kiszolgáló-kulcs jelszót. Ez valójában ral kell dolgoznunk. A radius.log és a radiusd/ tulajdonosa üres, feltéve, hogy a kiszolgáló tanúsítványát és kulcsát az egyaránt a nobody legyen. OpenSSL -nodes kapcsolójával hoztuk létre. Sajnos a múlt Mielõtt beleásnánk magunkat a FreeRADIUS beállító fájljai- hónapban magam is ezt javasoltam, ám most, talán még ba, létre kell hoznunk további két, a FreeRADIUS által a TLS idõben, szeretném ezt visszavonni. A jelszó nélküli X.509 használatához igényelt fájlt. Az elsõ a Diffie-Hellman (dh) kulcsok használata ront a biztonságon, még ha a kulcsot átadott értékeket tartalmazza, ezekre a TLS munkamenet- nyílt szöveges beállító fájlban tároljuk is, mint például az kulcsok egyeztetésekor van szükség. A dh fájlt úgy hozhat- eap.conf. Bizony, ha a FreeRADIUS kiszolgálón egy behatoló juk létre, hogy átváltunk a FreeRADIUS raddb/certs/ könyv- root jogokhoz jut, akkor – köszönhetõen az eap.conf fájl- tárába, majd kiadjuk a következõ parancsot: nak – még egy jelszóval védett tanúsítvány bizalmassága is sérülhet. Ha viszont a tanúsítványt/kulcsot út közben # openssl dhparam -check -text -5 512 -out dh – például, amikor a CA állomásról a FreeRADIUS kiszol- gálóra másoljuk – hallgatják le, akkor, ha jelszóval védett, A második fájl egy véletlenszerû bitfolyamot tartalmazó, szin- a támadó nem tud mit kezdeni vele. tén a TLS mûveleteknél szükséges adatfájl, random névvel. Bármelyik megoldást is válasszuk, ellenõrizzük, hogy az Itt hívnám fel rá a figyelmet, hogy a véletlenszerûnek szánt eap.conf a root tulajdonában van-e, illetve csak õ rendelke- tartalmak létrehozását nem szabad egyszerûen az aktuális idõ- zik-e hozzá írási joggal, és nem a radiusd.conf fájlban meg- bélyeg vagy valamilyen hasonló, a legkevésbé sem véletlen- adott felhasználó. Furcsa, igaz? A nobody-nak nem kellene szerû karakterlánc beírásával letudni; még akkor sem, ha jogot adni a beállító fájlok olvasására? A válasz nem, hiszen a WPA-val kapcsolatos, az interneten fellelhetõ leírások né- ha a radiusd-t rootként indítjuk, akkor elõször beolvassa melyikében ezt javasolják. Ehelyett a rendszermag kiváló mi- a beállító fájlokat (radiusd.conf, eap.conf és clients.conf), nõségû véletlenszám-elõállítóját kell használni. A raddb/certs csak ezután vált át a nobody jogosultságaira. könyvtárból tehát a következõ parancsot adjuk ki: Végül létre kell hoznunk egy bejegyzést a hozzáférési pont számára a clients.conf fájlban. A 4. kódrészlet erre mutat # dd if=/dev/urandom of=random count=2 példát. A 4. kódrészletben a client (ügyfél) utasítás adja meg Mindkét fájlra olvasási jogot kell adni a nobody felhasználó- a hozzáférési pont IP-címét. A hozzá tartozó secret (titok) nak, az írási jogot pedig mindenkitõl meg kell vonni. átadott érték adja meg azt a karakterláncot, amelyet a hoz- záférési pont a FreeRADIUS kiszolgálónak küldött kérések- A FreeRADIUS beállítása ben titkosítási kulcsként használ. A shortname (rövid név) Végre készen állunk a FreeRADIUS beállításainak megadá- egyszerûen csak egy álnév a hozzáférési ponthoz, például sára. Elég ijesztõ lehet a /raddb könyvtárban sorakozó fájlok a naplóbejegyzésekben találkozhatunk vele.

www.linuxvilag.hu 2005. július 51 Szaktekintély

hozzáférés biztosítására is képes Actiontec DSL forgalomirá- 3. kódrészlet Az eap.conf fájl módosításai nyító. Ennek webes felületén a Setup›Advanced Setup›Wireless Settings (Beállítások›Speciális beállítások›Vezeték nélküli beál- eap { lítások) pontra kattintottam, majd a Security (Biztonság) beál- # Itt számos általános EAP átadott érték lításnál a WPA-t választottam. Ezután elõre megosztott kulcs # megadására van lehetõség, helyett átállítottam 802.1x használatára. Kellett adnom neki # ám számunkra most csak egy kiszolgálócímet, ez 10.1.2.3 lett, továbbá be kellett írnom # a default_eap_type fontos: a FreeRADIUS kiszolgáló IP-címét, valamint a 4. kódrészlet- default_eap_type = tls ben már látott titkot (felhasznalojelszo). A kapuszámot az # Ezután következnek az egyes alapértelmezett 1812-n hagytam. # EAP-típusok beállításai. Ha már szóba került a téma: ha a hozzáférési pontot és # Mivel EAP-TLS-t akarunk használni, a RADIUS kiszolgálót tûzfal választja el egymástól, akkor # csak a tls{} szakasszal lehetõvé kell tennünk, hogy a hozzáférési pont elérhesse # kell foglalkoznunk: a RADIUS kiszolgáló 1812-es és 1813-as kapuját. Ekkor egy- tls { ben a RADIUS kiszolgáló is módot kap válaszainak ezeken # Az alábbi értékek azt adják meg a kapukon keresztül történõ továbbítására. # a radiusd-nek, hogy hol © Kiskapu Kft. Minden jog fenntartva # találja a tanúsítványokat és a kulcsokat, A Windows XP alapú ügyfelek beállítása # illetve a dh és a random fájlokat: Végre elérkeztünk oda, hogy a Windows XP alapú, vezeték private_key_password = nélküli ügyfeleket beállíthassuk a WPA használatára képes- ide_jon_a_kulcs_jelszava sé tett hozzáférési ponthoz való csatlakozásra. Tudom, hogy private_key_file = linuxos magazinba írok, ezért nem akarok túlságosan sokat ${raddbdir}/certs/bt_keycert.pem rágódni a témán, akit részletesebben is érdekel, az olvassa certificate_file = el Ken Roser HOGYAN-jának 4.3-as szakaszát (lásd a forrá- ${raddbdir}/certs/bt_keycert.pem sokat). Teendõink röviden: CA_file = ${raddbdir}/certs/cacert.pem dh_file = ${raddbdir}/certs/dh 1. Start›Futtatás (Start›Run), majd az mmc parancs futtatása. random_file = ${raddbdir}/certs/random } 2. A Microsoft Management Console-ban válasszuk } a Fájl›Beépülõ modul hozzáadása/eltávolítása (File›Add/Remove Snap-in) parancsot, válasszuk ki a Tanúsítványok (Certificates) beépülõ modult, majd válasszuk a saját fiókunkhoz tartozó tanúsítványok 4. kódrészlet Hozzáférési ponthoz tartozó bejegyzés helyi gépre vonatkozó kezelését. a clients.conf fájlban 3. Másoljuk át CA tanúsítványunkat (cacert.pem) client 10.1.2.3/32 { a windowsos rendszer merevlemezére, például secret = felhasznalojelszo C:\cacert.pem névvel. shortname = hozzaferesi_pont } 4. Az MMC-ben bontsuk ki a Kezelõpultgyökér (Console Root) és a Tanúsítványok - Aktuális felhasználó (Certificates - Current User) csomópontot, majd kattint- A radiusd készen áll az indításra, amit az rc.radiusd sunk az egér jobb gombjával a Megbízható legfelsõ parancsfájllal tehetünk meg: szintû hitelesítésszolgáltatók (Trusted Root Certification Authorities) elemre. A helyi menübõl válasszuk az rc.radiusd start Összes feladat›Importálás (All Tasks›Import) parancsot. A varázslóban válasszuk ki a C:\cacert.pem fájlt, Az újraindítás az rc.radiusd restart paranccsal történik. majd mentsük el a megbízható legfelsõ szintû Ha a radiusd hiba nélkül elindult, továbbléphetünk. hitelesítésszolgáltató alá.

A hozzáférési pont beállítása 5. Másoljuk át az ügyfél tanúsítvány/kulcs fájlját A következõ lépés az egész folyamat legkönnyebb része: a windowsos rendszerre, például a vezeték nélküli hozzáférési pont beállítása WPA használa- C:\ugyfel_tanusitvany.p12 névvel. tára és a FreeRADIUS kiszolgáló címének megadása. Mind- ehhez csupán kétféle adatra van szükség, a FreeRADIUS 6. A kezelõpulton kattintsunk az egér jobb gombjával kiszolgáló clients.conf fájljában megadott RADIUS titokra a Tanúsítványok (Certificates) csomópont Személyes (secret átadott érték), valamint a kiszolgáló IP-címére. (Personal) ágára. A helyi menübõl válasszuk az Összes Az, hogy ezeket az adatokat ténylegesen hogyan kell megad- feladat›Importálás (All Tasks›Import) parancsot. ni a hozzáférési pontnak, az alkalmazott eszköztõl és a rajta A megjelenõ varázslóban importáljuk be futó szoftvertõl függ. Az én hozzáférési pontom egy WLAN- a C:\ugyfel_tanusitvany.p12 fájlt.

52 Linuxvilág Szaktekintély

7. Az importáló varázsló bekéri tõlünk a tanúsítvány jel- Miután megtörtént a vezeték nélkül hálózati profil össze- szavát, illetve ugyanezen a párbeszédpanelen felkínálja állítása, a Windowsnak önmûködõen kapcsolódnia kell a titkos kulcs erõteljes védelmét is. Sajnos ennek az en- a hozzáférési ponthoz, és végre kell hajtania a WPA- gedélyezése megakadályozza a WPA mûködését, vagyis kapcsolat egyeztetését. Amennyiben ez sikerrel jár, a használatától el kell tekintenünk. A kulcs exportálását a Hálózati kapcsolatok (Network Connections) között olyan engedélyezõ négyzetet is hagyjuk érintetlenül, jobban jelzésnek kell megjelennie, mely szerint a vezeték nélküli járunk ugyanis, ha a jelszóval védett fájlról készítünk hálózati kapcsolat hitelesítése sikeresen megtörtént. biztonsági mentést, mintha az importált, jelszóval nem védett változat exportálását engedélyeznénk. Összefoglalás Messzire jutottunk, remélem, mindenki követni tudott, 8. A következõ képernyõn hagyjuk, hogy a varázsló magá- és a továbbiakban senki számára nem okoz gondot a WPA tól kiválassza a tanúsítványtárolót. használata. Bár a WPA távolról sem tökéletes – valójában a jelszóval védett ügyféltanúsítványoknak a jelszavak Ezzel a Windows XP alapú rendszer készen áll, már csak nyílt szövegben való tárolása nélküli kezelésére is képes egy vezeték nélküli hálózati profilt kell létrehoznunk. WPA kérvényezõkre volna szükség –, azért elmondhatjuk, Ennek módja a vezeték nélküli kártya illesztõprogramjaitól hogy a vezeték nélküli hálózatok végre elindultak a bizton- és attól függõen változik, hogy a Windows XP melyik szer- ság irányába. vizcsomagját telepítettük. Nálam Windows XP SP1 fut, © Kiskapu Kft. Minden jog fenntartva Centrino lapkakészleten, és az XP saját WPA kérvényezõjé- Linux Journal 2005. június, 134. szám vel hoztam létre vezeték nélküli hálózati profilt, megadva saját WLAN-om SSID-jét. Hálózati hitelesítésre (Network A cikkhez tartozó források elérhetõsége: Authentication) WPA-t, adattitkosításra (Data encryption)  www.linuxjournal.com/article/8200 TKIP-t választottam, az EAP típusa (EAP type) pedig intel- ligens kártya vagy más tanúsítvány (Smart Card or other Mick Bauer ([email protected]) Certificate) lett. A Windows magától felismerte, hogy Biztonsági szakember, a Linux Journal milyen ügyféltanúsítványt akarok használni – ez annak biztonsági témákkal foglalkozó szerkesztõje, köszönhetõ, hogy a múlt alkalommal külön lépésekkel biztonsági tanácsadó a Minnesota állambeli gondoskodtunk arról, hogy az ügyféltanúsítványunk Minneapolisban található Upstream Solutions tartalmazza a Windows XP kiterjesztett jellemzõit. LLC Inc.-nél.

www.linuxvilag.hu 2005. július 53 Szaktekintély

Dinamikusan elõállított naptárak Jó lenne, ha weboldalunk figyelmeztetni tudná a felhasználókat a közeljövõ eseményeire, esetleg az egész cégnek közös, szinkronban tartott naptárat biztosítana? Python alatt iCalendar fájlokat elõállítva mindez valósággá válhat. © Kiskapu Kft. Minden jog fenntartva

múlt alkalommal a Sunbirddel, a Mozilla :2.0 Foundation naptárkövetésre alkalmas önálló PRODID alkalmazásával ismerkedtünk meg. Mint láttuk, :-//Mozilla.org/NONSGML Mozilla Calendar V1.0//EN Aa Sunbird képes az iCalendar formátumú naptárak kezelé- BEGIN:VEVENT sére. A naptárak a helyi fájlrendszerben is lehetnek, de UID HTTP-n keresztül távoli kiszolgálóról is lekérhetõk. Láttuk :05e55cc2-1dd2-11b2-8818-f578cbb4b77d azt is, hogy a Sunbirddel milyen egyszerû egy távoli ki- SUMMARY szolgálón található naptárat használni. Egyszerûen be :Linuxvilág határidõ kell írnunk a megfelelõ URL-t egy párbeszédpanelen, STATUS majd miután a Sunbird letöltötte az iCalendar fájlt, :TENTATIVE az új események máris megjelennek a képernyõnkön. CLASS Az interneten már jelenleg is számos különbözõ távoli, :PRIVATE iCalendar formátumú naptárat találunk, megkeresésük X-MOZILLA-ALARM-DEFAULT-LENGTH és elõfizetésük viszonylag egyszerûen letudható. Persze :0 mindennek csak akkor van haszna, ha már meglévõ, a nyil- DTSTART vánosság számára elérhetõvé tett naptárat szeretnénk igény- :20050211T140000 be venni. De mi legyen, ha szervezetünk az iCalendar formá- DTEND tumra akarja alapozni a belsõ adatcserét? Hogyan tudunk :20050211T150000 iCalendar fájlokat létrehozni és terjeszteni, lehetõvé téve, DTSTAMP hogy mások is értesülhessenek az õket érintõ eseményekrõl? :20050209T132231Z Ebben a hónapban az iCalendar fájlokkal kapcsolatos, a kiszol- END:VEVENT gáló oldalra vonatkozó tudnivalókat tekintjük át, valamint END:VCALENDAR naptáralkalmazások – mint a Sunbird – általi letöltésre, szerve- zeten belüli használatra szánt naptárakat fogunk készíteni. Mint látható, a fájl a BEGIN:VCALENDAR címkével kezdõdik és az END:VCALENDAR címkével végzõdik. A fájl tetején néhány iCalendar fájlok a teljes naptárra érvényes adat található, ilyen a VERSION és Ha két számítógép között naptárakat akarunk cserélni, nyil- a PRODID, alattuk azonban már kezdõdik is az elsõ és egyben ván szükségünk lesz egy szabványra, mely meghatározza, egyetlen esemény, melyet a BEGIN:VEVENT és a END:VEVENT hogy ezeket a naptárakat hogyan kell formázni. A továbbí- címke fog közre. Nyilván nem okoz nehézséget elképzelni, tásra használt protokoll jelenleg nincs meghatározva, ám hogy nagyobb számú eseményt hogyan tárolna a fájl. a szabványok és a napi gyakorlat egyaránt arra utal, hogy Az iCalendar rendszeres idõközönként megismétlõdõ ese- a HTTP csaknem kizárólagos szerepet nyert a hasonló átvi- mények megadását is lehetõvé teszi. Egyetlen VEVENT be- telek kezelésében. A naptárcsere formátuma, mely az RFC jegyzés is elég tehát ahhoz, hogy jelezzünk egy minden 2445 dokumentumban található, tükrözi korának színvona- hét hétfõ délutánján megtartott értekezletet vagy figyel- lát. Míg egy új naptárformátum kétségtelenül XML-re épül- meztessük magunkat arra, hogy kedden és pénteken ki ne, az 1998-ban született RFC még név-érték párokat alkal- kell tennünk a kukát. Minden eseménynek van kezdõ maz, az elemeket egyszerû hierarchiába rendezve. Példa- és záró idõpontja, ez a DTSTART és a DTEND, az események ként vegyük elõ a múlt hónapban, a Sunbird megismerése- hossza gyakorlatilag tetszõleges. kor is látott iCalendar fájlt: Bár a fenti példából nem tûnik ki, az iCalendar az ismétlõdõ eseményeknél kivételek megadását is lehetõvé teszi. Ha BEGIN:VCALENDAR például a hétfõ délutáni értekezletre nyaralás közben nem VERSION akarunk elmenni, akkor egy EXDATE bejegyzéssel jelezhet-

54 Linuxvilág Szaktekintély

iCalendar létrehozása 1. kódrészlet static-calendar.py, egyszerû, Pythonban A valódi megoldás, ami persze érdekesebb is, az, hogy az készült CGI program iCalendar fájl megnyitására és iCalendar fájlt menet közben, a felhasználó kérésének hatá- HTTP feletti elküldésére sára hozzuk létre. A CGI program tehát nem egy meglévõ iCalendar fájl tartalmát adja vissza, hanem maga állítja azt #!/usr/bin/python elõ, majd átadja a felhasználó naptár-ügyfélprogramjának. # A CGI modul beemelése Elsõ ránézésre ennek megvalósítása egyszerûnek látszik. import cgi Végül is, az iCalendar fájlformátum egyszerûnek tûnik, va- # Az esetleges hibák naplózása lószínûleg nem okoz gondot a program összeállítása. Ha vi- import cgitb szont jobban megvizsgáljuk, rájövünk, hogy az iCalendar cgitb.enable(display=0, logdir=”/tmp”) fájlt létrehozni sokkal nehezebb, mint beszélni róla, különö- # Hol van a naptárfájl? calendar_directory = sen, ha ismétlõdõ eseményeket is meg akarunk adni. ‘/usr/local/apache2/calendars/’ Figyelembe véve az iCalendar szabvány növekvõ népszerû- calendar_file = calendar_directory + ‘test.ics’ ségét és a nyílt forrású tervezetek megszámlálhatatlan soka- # content-type fejrész küldése a felhasználó ságát, meglepve tapasztaltam, hogy az iCalendar a legna- böngészõjének gyobb nyílt programozói közösségek részérõl is csak mini- print “Content-type: text/calendar\n\n” mális figyelmet érdemelt ki. Meglepetésem annak is volt © Kiskapu Kft. Minden jog fenntartva # A fájl tartalmának elküldése a böngészõnek köszönhetõ, hogy az iCalendar évek óta létezik, számtalan calendar_filehandle = open(calendar_file, “rb”) vállalat és naptárprogram támogatja, kezdve a Novell print calendar_filehandle.read() Evolutiontõl, a Lotus Noteson keresztül egészen a Microsoft calendar_filehandle.close() Outlookig. Az ilyen nagymértékû támogatottság általában sokféle nyelvre kiterjedõ, gazdag választékot eredményez. Elõször a Perl környékén tapogatóztam; a CPAN archívum jük távol maradásunkat. A naptárat megjelenítõ alkalmazás számos moduljának, köztük a különféle internetes szabvá- ezt követõen figyelmen kívül hagyja az adott dátumra esõ nyokkal kapcsolatosaknak köszönhetõen méltán szerzett el- ismétlõdõ eseményt. ismerést. Furcsa, hogy bár iCalendar fájlok feldolgozásához több Perl modul közül is válogathatunk, létrehozásukhoz iCalendar fájlok közzététele egyetlen naprakész modul sem létezik. A Net::ICal::Libical Ha már van iCalendar fájl a rendszerünkön, ennek közzé- például egy burkoló lett volna a C-ben készült libical tétele rendkívül egyszerû. Az 1. kódrészlet egy egyszerû, könyvtárhoz, ám utolsó kiadása egy alfa változat elõtti cso- Pythonban készült CGI programot tartalmaz, mely meg- mag. A Net::ICal a ReefKnot tervezet része volt, ami a jelek keres egy iCalendar fájlt a megadott könyvtárban, majd szerint szintén félbemaradt. visszaadja a fájl tartalmát a kérést intézõ naptáralkalmazás- Szerencsére egy dán fejlesztõ, Max M (lásd az internetes nak. Aki még nem írt CGI programot Pythonban, az a fenti forrásokat) nemrég úgy döntött, hogy pótolja a hiányossá- példa alapján talán már rájött, mennyire egyszerû is az gokat, és készített egy iCalendar fájlok egyszerû létrehozá- egész. Az alapvetõ CGI szolgáltatások eléréséhez be kell sára használható Python csomagot. Én minden gond nélkül tölteni a CGI modult. A következõ lépés a cgitb, a CGI le tudtam tölteni és telepíteni tudtam a csomagot a gé- visszakövetõ modul betöltése, amellyel hiba esetén hiba- pemre, és jómagam is úgy találtam, hogy rendkívül könnyû keresõ adatokat tudunk írni egy fájlba. vele naptárat készíteni. Korábbi egyszerû kis CGI progra- A következõ a text/calendar tartalomtípus (content-type) munkkal együtt alkalmazva kiválóan megfelel naptárak fejrész elküldése. Feltételezhetjük, hogy a webes tartalmak létrehozására és közzétételére. túlnyomó részének tartalomtípusa text/html (HTML formá- zású szöveg) vagy text/plain (egyszerû szöveges fájl), ami- Dinamikus naptár létrehozása hez különféle image/jpeg, image/png és image/gif elemek A maxm.dk oldalról letöltöttem az iCalendar csomagot, majd társulnak. Az iCalendar szabvány szerint a naptárfájlokhoz telepítettem. Sok korszerû Python csomaggal ellentétben text/calendar típust kell rendelni, még akkor is, ha a Sunbird telepítése nem önmûködõ, vagyis kézzel kell bemásolnunk és a hozzá hasonló programok a text/plain formátumot is rendszerünk site-packages könyvtárába, ami az én Fedora elfogadják. A program utolsó lépése a naptárfájl tartalmá- Core 3 alapú gépemen a /usr/lib/python-2.3/site-packages volt. nak elküldése, amelyet a helyi fájlrendszerbõl olvas ki. Amint a 2. kódrészletbõl is látható, az újonnan telepített Aki még egyáltalán nem foglalkozott webes programozás- iCalendar csomaggal Calendar (naptár) és Event (esemény) sal, annak alighanem tökéletesen értelmetlennek tûnik típusú objektumokat hoztam létre. Az elsõ teendõm a meg- a fenti példa. Például teljesen eszement dolognak tûnik az, felelõ csomagok beemelése volt az aktuális névtérbe: hogy külön programot írunk egy állandó fájl tartalmának elérésére – csakhogy így megtehetjük, hogy a külvilág felõl from iCalendar import Calendar, Event elfedjük a naptárfájl valódi helyét. Persze vannak erre jobb megoldások is, például az Apache Alias utasításának hasz- Az iCalendar csomag Calendar és Event modulja rendre nálata. A programot továbbfejleszthetnénk úgy, hogy a teljes iCalendar fájlhoz és azon belül egy-egy eseményhez a naptárfájl nevét átadott értékként közöljük vele, ám ilyen- tartozik. A Calendar objektumból tehát egy példányra van kor is szükségünk lenne állandó jelleggel rendelkezésre szükségünk, míg minden eseményhez egy-egy Event objek- álló, elõre elkészített fájlokra. tumnak kell tartoznia.

www.linuxvilag.hu 2005. július 55 Szaktekintély

sorban a változatazonosítót adtuk hozzá, amivel azt jelez- 2. kódrészlet dynamic-calendar.py, iCalendar zük, hogy az iCalendar elõírások melyik változatát követ- formátumú naptárat elõállító program jük. Az RFC 2445 értelmében ennek a mezõnek 2.0 értéket kell adnunk – már amennyiben követni kívánjuk a doku- #!/usr/bin/python mentum elõírásait. # A CGI modul beemelése Most, hogy megvan a naptárunk, adjunk hozzá egy ese- import cgi ményt, amelyet egészítsünk ki egy összegzés sorral; utóbbi from iCalendar import Calendar, Event az iCalendar fájlra elõfizetõ személyek naptáralkalmazásá- from datetime import datetime ban fog megjelenni: from iCalendar import UTC # idõzóna # Az esetleges hibák naplózása import cgitb event = Event() cgitb.enable(display=0, logdir=”/tmp”) event.add(‘summary’, ‘ATF határidõ’) # content-type fejrész küldése a felhasználó # böngészõjének Mint a példafájlnál is láttuk, minden eseményhez három print “Content-type: text/calendar\n\n” dátum/idõ mezõ tartozik: a kezdés dátuma és idõpontja # Naptárobjektum létrehozása (dtstart), a befejezés dátuma és idõpontja (dtend) és az az cal = Calendar() idõpont, amikor a bejegyzés bekerült a naptárba (dtstamp). © Kiskapu Kft. Minden jog fenntartva # Milyen termék hozta létre a naptárat? Az iCalendar szabvány egy meglehetõsen furcsa formátum cal.add(‘prodid’, szerint tárolja a dátumokat és az idõpontokat, ám az Event ‘-//Python iCalendar 0.9.3//mxm.dk//’) objektum tudja ezeket kezelni, ha õ maga datetime objektu- # Az RFC 2445-nek a 2.0-s változat felel meg mot kap a normál datetime Python csomagtól. Tehát: cal.add(‘version’, ‘2.0’) # Esemény létrehozása event.add(‘dtstart’, event = Event() datetime(2005,3,11,14,0,0,tzinfo=UTC())) event.add(‘summary’, ‘ATF határidõ’) event.add(‘dtend’, event.add(‘dtstart’, datetime(2005,3,11,16,0,0,tzinfo=UTC())) event.add(‘dtstamp’, datetime(2005,3,11,8,0,0,tzinfo=UTC())) datetime(2005,3,11,0,10,0,tzinfo=UTC())) event.add(‘dtend’, Megjegyezném, hogy idõzónaként mindhárom esetben datetime(2005,3,11,10,0,0,tzinfo=UTC())) UTC-t adtam meg. Amikor az ügyfélalkalmazásban meg- event.add(‘dtstamp’, jelenik az iCalendar fájl tartalma, akkor természetesen a felhasználó a saját idõzónája szerint látja a bejegyzéseket, datetime(2005,3,11,0,10,0,tzinfo=UTC())) és nem UTC szerint. event[‘uid’] = ‘[email protected]’ Az eseményeknek létrehozásuk után egyedi azonosítót kell # Kapjon kiemelt fontosságot! adni. Az egyediség alatt itt valódi, a világ minden számító- event.add(‘priority’, 5) gépének minden naptárára kiterjedõ egyediséget kell érte- # Az esemény hozzáadása a naptárhoz ni. Ez elég fogós dolognak hangzik, de nem kell megijedni cal.add_component(event) tõle. Sokféle megoldás létezik, az egyik az, hogy a létreho- # A naptár utasítása önmaga leképezésére zás idõbélyegét, az esemény létrehozására használt számí- iCalendar tógép IP-címét és egy nagy véletlenszerû számot kombiná- # fájlként, majd a fájl átadása a HTTP válaszban. lunk. Én egy egyszerû UID elõállítása mellett döntöttem, de print cal.as_string() ha olyan alkalmazást készítünk, amelyet több számítógépen is használni fognak, akkor érdemes alaposabban átgondolni és egységesíteni az azonosítók létrehozását: Ezután megalkothatjuk a Calendar objektumot: event[‘uid’] = ‘[email protected]’ cal = Calendar() cal.add(‘prodid’, A végsõ lépés az esemény fontosságának, prioritásának ‘-//Python iCalendar 0.9.3//mxm.dk//’) megadása, mely 0 és 9 között lehet. A normál, átlagos cal.add(‘version’, ‘2.0’) fontossági szint az ötös, a sürgõsebb elemeknek nagyobb, a kevésbé sürgõseknek kisebb fontosságot kell adni: A második és a harmadik sorban, ahol a cal.add() eljárást hívjuk meg, módunk nyílik azonosító adatok hozzáadására event.add(‘priority’, 5) az iCalendar fájlhoz. Az elsõvel megadhatjuk az ügyfél- programnak, hogy milyen alkalmazás hozta létre az Az eseményt létrehozása után csatolni kell a naptár objek- iCalendar fájlt. Ez fõleg hibakeresésnél hasznos; ha rendsze- tumhoz, mely jó ideje csak arra vár, hogy végre kezdjünk resen hibás iCalendar fájlokat kapunk egy megadott prog- vele valamit: ramcsomagtól, akkor kapcsolatba tudunk lépni a készítõvel vagy a terjesztõvel, és jelenthetjük neki a hibát. A második cal.add_component(event)

56 Linuxvilág Szaktekintély

Szükség szerint további eseményekkel is bõvíthetjük Be kell vallanom, az elõzõhöz hasonlóan ez a példa is egy a naptárat, csak az UID mezõ egyediségére ügyeljünk. kicsit mesterkélt volt. Igaz ugyan, hogy a naptárat dinamiku- Végül Calendar objektumunkat az as_string() eljárás san állítottuk elõ, de az esemény bele volt drótozva a prog- segítségével beírjuk egy iCalendar fájlba: ramba, így módosítása, hozzáadása vagy törlése csak a prog- ramozó számára lehetséges. Fogalmazzunk tehát úgy, hogy print cal.as_string() újabb lépést tettünk az események és dátumok programból történõ elõállítása felé. A következõ az lesz, hogy a dátumo- Mivel a print alapesetben a szabványos kimenetre ír, a CGI kat fájlban vagy akár relációs adatbázisban helyezzük el, programok szabványos kimenete viszont a HTTP ügyfél és a programmal az adatokat futás közben alakítjuk át. felé irányul, végeredményként az iCalendar fájlt a HTTP kérést indító ügyfélnek küldjük el. MIME típusként Összefoglalás text/calendar-t választottunk, vagyis a HTTP ügyfél tudni Ebben a hónapban megvizsgáltuk a dinamikus naptárak fogja, hogy a kapott adatokat naptárként kell értelmeznie, a Python egy egyszerû CGI programba burkolt iCalendar illetve képes lesz azok helyes megjelenítésére. Ha megvizs- moduljával végzett elõállítását. Ugyanakkor láttuk azt is, gáljuk a kimenetet, láthatjuk, hogy valóban iCalendar for- hogy milyen korlátai vannak egy olyan naptárnak, amely- mátumú: nek bejegyzéseit a merevlemezen tároljuk. Jobb megoldás lenne, ha az események adatait egy relációs adatbázisban © Kiskapu Kft. Minden jog fenntartva BEGIN:VCALENDAR helyeznénk el, amely önmagában is képes a dátumok keze- PRODID:-//Python iCalendar 0.9.3//mxm.dk// lésére, valamint megfelelõ eljárásokat biztosít a felhaszná- VERSION:2.0 lók és a csoportok hozzáférésének szabályozására. A követ- BEGIN:VEVENT kezõ alkalommal tovább bõvítjük a naptárprogramot, DTEND:20050311T160000Z adatait adatbázisból fogja venni, az iCalendar fájlokat DTSTAMP:20050311T001000Z PostgreSQL táblák alapján fogja elõállítani. DTSTART:20050311T140000Z PRIORITY:5 Linux Journal 2005. junius, 134. szám SUMMARY:ATF határidõ UID:[email protected] A cikk forrásai:  www.linuxjournal.com/article/8197 END:VEVENT END:VCALENDAR Reuven M. Lerner

www.linuxvilag.hu 2005. július 57 Dobbantó

FreeBSD – a szomszéd vár (9. rész) A várbörtön cellái

Gyakran kerülhetünk olyan helyzetbe, amikor meg kell védenünk a rendszerünket egy szolgáltatástól, esetleg önmagától, vagy a többi programtól, a külsõ-belsõ tá- madásoktól, illetve a sérülékeny vagy könnyen támadható az adatokat mindezektõl. A probléma megoldása egyszerû, a szolgáltatásokat bezárjuk egy börtön cellájába: © Kiskapu Kft. Minden jog fenntartva ez a jail alrendszer.

Mi az a jail? A börtön felépítését sok különféle módon tehetjük meg, A Linux esetén már ismert chroot program távoli rokona, ebbõl három módszert szoktunk használni: mezei másolás, amellyel FreeBSD alatt tudunk programokat elzárni a rend- a make world parancs segítségével, illetve egy külön telepí- szer többi részétõl; egy kicsit másképp és egy kicsit jobb kö- tett programot használva. rülmények között. A jail ugyanis FreeBSD virtuális gépe- A mezei másolás okán egyszerûen átmásoljuk a jail ket hoz létre, amelyeknek közös rendszermaggal bírnak, könyvtárába azokat az állományokat, amelyek szükségesek viszont minden mást külön kezelnek. A gépen kívülrõl néz- a bezárandó programunk futásához (és magát a futtatandó ve egy jail alrendszer olyan, mintha lenne még számítógé- programot is). Gyakorlatilag ez a legegyszerûbb megoldása pünk, amelyeken ugyan az a FreeBSD van, mint a mellette a börtönünk létrehozásának, bár kétségkívül nagyobb szak- lévõkön (holott csak egy gépünk van). Minden virtuális értelmet kíván. Sajnálatos, hogy a börtön karbantartása is gépnek van egy külön IP címe, amelyre hallgat, a rendszer nehezebb így, mint a többi módszert használva. többi részével csak (virtuális) hálózati felületeken tud kom- A klasszikus (leginkább támogatott) módszer szerint egy munikálni, leszámítva a megadott könyvtárstruktúrát, ame- új alaprendszert építünk fel a börtön egy-egy cellájában. lyek a rendszermagon keresztül képes kezelni. Azt tudom Teljesen azonosan kell eljárnunk, mint az alaprendszer fris- mondani, hogy a FreeBSD jail megvalósítása többet tud, sítésénél, egyetlen paraméterrel kell többet megadnunk: mint a Linux chroot (teljesen elszeparált virtuális gép); hol készüljön el az új alaprendszer, illetve néhány más kevesebbet tud, mint az UML (User Mode Linux), mivel parancsot is végre kell hajtanunk. a rendszermag közös, az nem cserélhetõ. # export JAILDIR=/usr/local/jails/10.1.1.213 # cd /usr/src Miképp készül? # mkdir -p $JAILDIR A bebörtönzést elõ kell készíteni, amely tevékenység alatt # make world DESTDIR=$JAILDIR az alaprendszer könyvtárainak és állományainak a jail # cd $JAILDIR könyvtárába való másolását értjük; ezen túl néhány beállí- # ln -sf dev/null kernel tás is szükséges lehet, hogy a bebörtönzött folyamat megfe- lelõen tudjon mûködni. Ezzel a tevékenységgel számítógépünk ugyan annyi idõt Általában két módszer közül választhatunk, mind a kettõ tölt el, mint az alaprendszer frissítésével, tehát akár több célravezetõ, de más-más módon éri el a biztonságos üze- órán át is tarthat. Ha gyakran kell jail rendszert elkészíte- meltetést. Megtehetjük, hogy a teljes telepítés után eltávo- nünk, akkor érdemes egy példányt eredeti állapotában lítjuk az állományok és könyvtárak egy részét, egészen megtartani, s így csak át kell másolnunk a teljes könyvtár- addig, amíg még mûködõképes a bebörtönzött program szerkezetet. Ezzel a módszerrel egy börtöncella mérete (kövér modell). Esetleg egyenként másoljuk át az állomá- azonos lesz a teljes alaprendszer méretével, vagyis közel nyokat, és a könyvtárakat, egészen addig, amikor már 200MBájt helyet fog elfoglalni. Ezen a hatalmas méreten mûködõképes a program (sovány modell). Akár a kettõ sokat tudunk csökkenteni, ha a felesleges részeket eltávolít- módszert kombinálhatjuk is, felmásolunk egy-egy könyvtá- juk (dokumentáció, kézikönyv oldalak, stb.). rat, majd elkezdjük törölgetni a mappából az állományokat. Második legnagyobb szakértelmet kívánó kihívás Az interneten keresgélve nagyon valószínû, hogy megtalál- a sysinstall program használata a jail beállításához. juk a kész recepteket az adott szolgáltatás mûködéséhez Ekkor alapvetõen egy programot kell felmásolni a börtö- minimálisan szükséges állományok listájával együtt. nünk könyvtárába: a /stand/sysinstall állományt.

58 Linuxvilág Dobbantó

# mkdir $JAILDIR/stand ja, a második paramétere a börtön neve, harmadik paramé- # cp /stand/sysinstall $JAILDIR/stand tere a kiválasztott IP cím, majd ezeket követi a végrehaj- tandó parancs elérési úttal együtt. A bebörtönzés elindításához szükséges a helyi hálózathoz # jail /usr/local/jails/10.1.1.213/ private213 hozzáadni egy IP címet (például 10.1.1.213), ahol elérjük 10.1.1.213 /rescue/sh majd a börtönükbe bezárt programjainkat. # ifconfig vr0 alias 10.1.1.213/32 A kapott üres parancssorba kezdésképp a sysinstall programot írhatjuk. Két fontos könyvtár van, amit nem tudunk könnye- $ /stand/sysinstall dén létrehozni, a dev és a proc, amelyek speciális fájlrendszert hordoznak: a devfs és a procfs nevût. Nem kell meglepõdni, megkapjuk a FreeBSD telepítésénél is Ezt a két fájlrendszert fel kell csatolnunk msinden kapott programot, amellyel most újra feltelepíthetjük a Free- egyes jail könyvtárba. BSD rendszerünket: a jail alrendszer ugyanis olyan, mint # mkdir dev egy teljesen új telepítés. A rendszermag már fut, az alaprend- # mount_devfs devfs $JAILDIR/dev szer rendelkezésre áll, de semmi egyéb nincs beállítva, enge- # mkdir proc délyezve: mindent újra be kell állítanunk és engedélyeznünk. # mount_procfs proc $JAILDIR/proc Az elsõ használatbavétel elõtt – amikor már a bebörtönzött © Kiskapu Kft. Minden jog fenntartva programunkat szeretnénk futtatni – érdemes a /sbin/init Az alaprendszer elkészítése nem vonja maga után a /etc programot elindítani a jail elsõ beállításához (SSH kulcsok könyvtár elkészítését (amely teljesen érthetõ a make world elkészítése, stb.). Nem kell megijedni, a képernyõkép telje- alapvetõ feladatát tekintve), így ezt külön parancs segítsé- sen azonos lesz, mint amikor a FreeBSD rendszerünk elin- gével kell nekünk elkészítenünk. dul, hiszen a virtuális gépünkben is egy FreeBSD indul el. # cd /usr/src/etc Programok telepítése és karbantartása azonos módon törté- # make distribution DESTDIR=$JAILDIR nik, mint azt a börtönünkön kívül tettük, így az alaprend- szer frissítése és a ports adatbázis is járható út. Nincs más hátra, mint beállítani a börtön kényelmi szolgál- tatásait, ehhez már be kell térnünk a cellába is. A jail pa- Segédprogramok rancs szolgál a bebörtönzés elindítására, amelynek az elsõ Érdemes néhány segédprogramot telepíteni, amelyek paramétere az elkészített könyvtárszerkezet belépési pont- sokat segítenek a börtönünk felügyeletében. Néhány

www.linuxvilag.hu 2005. július 59 Dobbantó

programot a börtöncellába kell telepíteni, némelyiket akkor ezt a beállítást tegyük meg. Ez az engedélyezés a börtönön kívülre. A legfontosabb a jailutils csomag, viszont biztonsági kockázatot is jelent, így csak vég- amely a börtönön belül futó programok kezelésében segít szükség esetén használjuk; célravezetõbb egy olyan (jps, jtop, jkill), mivel a jail belsõ mechanizmusai helyettesítõ eszköz használata, amely TCP porton át ezen programok normál futását jelentõsen befolyásolják. is képes a hálózat mûködõképességét ellenõrizni (például A jailadmin vagy a jailctl csomag a börtönök elindítá- az echoping csomag). sában, leállításában; illetve elkészítésében is segítséget A hálózat többi beállítása (gazdagép neve, útválasztás, név- nyújtanak. feloldás, stb.) azonos módon történik az alaprendszer tele- pítéskori beállításaival, használjuk nyugodtan erre a célra A börtöncella beállítása a sysinstall programot. Fontos tulajdonsága a jail rendszernek, hogy nem hallgatózik a számítógépünk összes elérhetõ hálózati Lemezkezelés felületén, csak a parancssorban megadott IP címen. A börtönben futó program nem látja a külsõleg felcsatol Ha megnézzük a börtönünkön kívül a vr0 eszközhöz állományrendszereket, csak a saját fõkönyvtárát tartalmazó rendelt címeket, akkor láthatjuk, hogy több címe is van, fájlrendszert tudjuk lekérdezni. azonos fizikai címmel. $ df © Kiskapu Kft. Minden jog fenntartva # ifconfig vr0 Filesystem 1K-blocks Used Avail Capacity vr0: Mounted on flags=8843 /dev/ad0s1f 150307738 16267994 134039744 11% mtu 1500 /usr inet 10.1.1.211 netmask 0xffffff00  broadcast 10.1.1.255 Néhány tanács és pár megjegyzés inet6 fe80::211:5bff:fe09:782a%vr0 A jail nem óvja meg a gépünket a feltöréstõl, mindössze prefixlen 64 scopeid 0x2 – helyes tervezés esetén – az érzékeny adatokat védi inet 10.1.1.213 netmask 0xffffffff meg a támadótól. Minél több jail készül el a gépünkön, broadcast 10.1.1.213 annál nehezebb lesz azok karbantartása, hiszen egy-egy ether 00:11:5b:09:78:2a alaprendszert érintõ biztonsági hiba kijavítását az alap- rendszerünkön és az összes jail rendszerünkön is végre A jail rendszeren belül szintén megtaláljuk ezt az eszközt, kell hajtanunk. Érdemes a jail belsõ felhasználóit lere- de már csak a saját IP címével, a többi cím nem is látszik. dukálni minimálisra, hiszen a legtöbb inaktív lesz. A jail alkalmas arra, hogy a teljes FreeBSD rendszer rendszer- $ ifconfig vr0 gazda (root) jogú adminisztrálását kiadjuk egy másik vr0: személynek. Õ képes belépni a megadott IP címen, flags=8843 minden frissítést, telepítést és beállítást képes elvégezni, mtu 1500 viszont nem képes az alaprendszer is érintõ beállítások inet 10.1.1.213 netmask 0xffffffff elvégzésére (particionálás, fájlrendszer elkészítése, más broadcast 10.1.1.213 fájlrendszer felcsatolása, hálózati eszközök átállítására, ether 00:11:5b:09:78:2a stb.). Igazából egy olyan virtuális gépet tudunk készíteni a kiszolgáló gépünkön, amelyet egy FreeBSD rendszert Ha ki szeretnénk próbálni a jail hálózatának mûködõképes- ismerõ személy képes kezelni, s úgy tekinthet rá, mint ségét, nem várt problémába ütközhetünk. egy önálló számítógépre. $ ping 10.1.1.212 Auth Gábor ping: socket: Operation not permitted ([email protected]) Egy pécsi középiskolában informatikát és prog- A ping mûködéséhez igazzá kell állítani ramozást oktat. Tíz éve botlott elõször a UNIX a security.jail.allow_raw_socket rendszerváltozót még rendszerekbe, 7 év Linux használat után kapta a jail elindítása elõtt. el a FreeBSD lázat, amibõl máig nem tudott kigyógyulni.

# sysctl -a security.jail.allow_raw_sockets=1  security.jail.allow_raw_sockets: 0 -> 1 KAPCSOLÓDÓ CÍMEK # jail /usr/local/jails/10.1.1.213/ private213 10.1.1.213 /rescue/sh  $ ping 10.1.1.212 A FreeBSD projekt honlapja: http://www.freebsd.org PING 10.1.1.212 (10.1.1.212): 56 data bytes A magyar FreeBSD honlap:  http://www.freebsd.hu 64 bytes from 10.1.1.212: icmp_seq=0 ttl=64 A magyar BSD honlap:  http://www.bsd.hu time=7.635 ms A kézikönyv magyar fordítása E nélkül csak a TCP és az UDP csomagokat jutnak ki  http://www.enaplo.hu/FreeBSD/handbook/ a börtönbõl, ha például ICMP csomag is szükséges,

60 Linuxvilág Dobbantó

KimDaBa

Rendet a képek között.

a leszámítom a gyerekkori fotóimat és fényképezõ- gépemet, akkor azt kell mondjam, hogy éppen egy H © Kiskapu Kft. Minden jog fenntartva évtizede foglalkozom egy amatõr fotós szintjén fényképezéssel, többnyire hobbi céljából. Ennek az idõnek a felét egy – a profi kategória küszöbét éppen átlépõ – tü- körreflexes fényképezõgéppel fényképeztem el. Többnyire diafilmre dolgoztam, amit felhasználás elõtt hûtõben kellett tárolni. Azt hiszem, részben azért tanultam meg jól fényké- pezni, mert egy-egy elrontott kép okozta veszteség igencsak forintosítható volt. Digitális gépet egészen sokáig nem vol- Nyitókép tam hajlandó venni, mivel a beszerezhetõ típusok egyszerû- en nem feleltek meg a fotózásról alkotott elképzeléseimnek. Aztán egyszer csak fordult a kocka, és számomra már megfelelõ minõséget kaptam elérhetõ áron. Minõségi eta- lonnak természetesen továbbra is a tükörreflexes gépemet tekintettem. Annyi történt mindössze, hogy egyszerre annyi pénzért tudtam megvenni egy hasonló tudású digi- tális gépet, mint amennyiért annak idején a közönséges filmre dolgozó gépemet. Az évtized elsõ öt évének fényképei egy átlagos család fotó- albumával vannak egy „súlycsoportban”. A kartondobozon túl nem fordítottam különösebb figyelmet ezeknek a cso- portosítására vagy kategorizálására. A tükörreflexes géppel készültekre már több gondot fordítottam, hiszen ezek több- ségében sok munka fekszik. A diakockákat tekercsenként egy-egy légmentesen lezárható dobozkába táraztam be diakeretekbe, amelyekre ráírtam a tekercs témáját, majd a diakocka száma szerint az adott képpel kapcsolatos félso- ros összefoglaló szöveget is feljegyeztem. A fõablak Igazából mindig sajnáltam, hogy nem tudtam magamat arra rávenni, hogy minden egyes kockához leírjam bizseregni kezd a mutatóujjam, és valahogy nagyon a helyszínen a készítés körülményeit, így ezeket nem könnyen lenyomódik az exponáló gomb... jegyeztem fel a kockák mellé. Havonta-kéthavonta egy Amikor a digitális fényképezõgép már a második tekercsnyi (36 diakocka) kép tárolása és leírása nem volt hónapját kezdte eltölteni a kezeim között, rájöttem: ha nehéz, sajnos a visszakereshetõség nem volt adott; elég így folytatom, akkor bele fogok fulladni a képekbe. Elsõ jól ismertem a „gyûjteményem”, de mindig akadt néhány felindulásomban arra a következtetésre jutottam, hogy ke- elfeledett fotó, amely pont akkor nem került a kezeim resek egy programot, amely a fényképek kategorizálásában közé, amikor szükség lett volna rá. segít, visszakereshetõvé teszi az egyes eseményeket és hely- A digitális fényképezés egy kicsit felborította ezt az idilli színeket. Sajnos az elsõ felindulás nem oldott meg semmit, állapotot, mivel csak a fényképezõgép tudásának megisme- a letöltött és kipróbált tucatnyi program nem váltotta be résére való tekintettel 1200 képet készítettem az elsõ két hét a hozzá fûzött reményeimet, így elkezdtem játszadozni alatt (amelyek nagy részét aztán könnyû szívvel töröltem). a gondolattal, hogy írok egy ilyen programot. A kattintások száma idõvel csökkent, bár nem nagyon Nem, nem a saját programomról írom a cikket, mivel a mun- jutottam még a heti 50 képet jelentõ álomhatár alá. Pedig kát idõ hiányában el se kezdtem. Viszont egy puszta vélet- nagyon igyekszem, csak egyszerûen minden apróságra lennek köszönhetõen megtaláltam a KimDaBa csomagot.

www.linuxvilag.hu 2005. július 61 Dobbantó

És most vissza a KimDaBa-hoz. Bizonyosság híján csak remélni merem, hogy a fõbb Linux terjesztések tartal- mazzák ezt a remek programot. Ha mégsem, akkor a  http://ktown.kde.org/kimdaba címrõl is letölthetõ. Verziószám szerint már a 2.1-es változatnál tart a fejlesztõ- csapat, így bizton remélhetjük, hogy kiforrott és könnyen kezelhetõ a program. Én egy ideje a 2.0 verziót használom 3.4-es KDE rendszer alatt. Sajnos magyarítás nincs hozzá, de az általános használatához elegendõ néhány alapvetõ Képek újratöltése angol szó ismerete. (Amúgy pedig várom azokat a jelent- kezõket, akik segítenének a program magyar változatának elkészítésében.) Mindenképpen javaslom a programmal érkezõ demó megnyitását, mivel ezzel egy már jól beüzemelt fotóalbu- mot tudunk megtekinteni (átlagos családi fotóalbummal). Ezek után készítsük el a saját adatbázisunkat, amelynek egy külön mappában adjunk helyet (ennek a neve találóan © Kiskapu Kft. Minden jog fenntartva lehet mondjuk KimDaBa). Érdemes megjegyezni, hogy a megadott könyvtárba kezdésképp nem tanácsos túl sok fényképet tenni, mert a program az összeset betölti, átnyálazza és begyûjti a hoz- zájuk tartozó információkat. Mármost ha az elsõ futtatás során minél hamarabb meg szeretnénk ismerni a program szolgáltatásait, nem szerencsés, ha induláskor ki kell várni azt a tizenhét percet, amíg a rendszer az említett könyvtár- ban található 2553 képet feldolgozza. (Igen, tapasztalatból EXIF információk írom ezt...) A program fõ ablaka puritán, vagy ha így jobban tetszik kényelmes és átlátható. Mellõz mindennemû céltalan díszítést. A képeinket mappa, kulcsszó, helyszín vagy személy szerint tudjuk csoportokba rendezni. Alapesetben egyetlen nagy csoportunk van, hiszen nem adtunk meg kategóriákat. Az elsõ és legfontosabb feladat a képek mappákba rendezé- se, mivel így késõbb sokkal hatékonyabban tudunk szortí- rozni. Érdemes egy „ömlesztett” könyvtárat is fenntartani, ahova az újabb képeket tudjuk bemásolni a fényképezõ- géprõl. (Erre a célra én az induló könyvtárat tartom fenn.) A kezdeti néhány képen kívül másoljunk bele a KimDaBa könyvtárába néhány képet, amelyet már elõzõleg mappákba szortíroztunk, s szólítsuk fel a képek újraol- vasására, amelyet a Maintenance/Rescan for Images me- nüpontban tehetünk meg. A bemásolt képek mennyisé- gétõl függõen a program rövidebb-hosszabb ideig keresi Elõképek a változásokat. Válasszunk ki egy szimpatikus mappát – esetemben Egyszerûen a Beep Media Player médialejátszó programot ez a Mecsek/Égervölgy 2005. 04. 23. nevû lesz – s szerettem volna megkeresni a FreeBSD rendszerem csomag- a Maintenance/Read EXIF info from files... menüpont adatbázisában és erre a „bmp” szöveget találtam a legkifeje- segítségével dolgoztassuk fel a programmal a képekben zõbbnek. Sajnos a BMP programot nem találtam a kapott lis- található EXIF információkat (blende, expozíció ideje, gyúj- tában, viszont az „Image database for KDE” szöveget annál tótávolság, stb.). Sajnos ez a lépés egyben törli a képekhez inkább. Ez mindössze annyi kapcsolatban volt a „bmp” kere- rendelt saját információinkat, így mindenképpen ezzel sési feltétellel, hogy történetesen BMP formátumú képeket a mûvelettel kell kezdjük a képek kezelését. is kezel. Kaptam az alkalmon, és feltelepítettem a KimDaBa Alapesetben csak a képhez rendelt idõ és a dátum kerülne programot, a médialejátszó program telepítése pedig teljes beolvasásra, ezért mindenképpen jelöljük be a képhez feledésbe került. Igazából csak most jutott eszembe amint tartozó leírást, illetve akár az orientációt is. A beolvasás ezt a cikket írom. Tehát: ezennel megragadom az alkalmat, gyorsan megtörténik, s ha rákattintunk a „View images” és minden kedves olvasóm szíves figyelmébe ajánlom a Beep szövegre, akkor azonnal láthatjuk is a képeket kicsiben. Media Player programot, amirõl a fenti malõrnek köszönhe- Sok kép esetén ez a mûvelet eltarthat egy ideig, mivel tõen a nevén kívül egyelõre nem sokat tudok. a program alapértelmezésként röptében gyártja le

62 Linuxvilág Dobbantó

Kép elõnézete A kép jellemzõinek szerkesztése © Kiskapu Kft. Minden jog fenntartva

TV torony

Szembetûnõ változás, hogy a kulcsszavak, illetve a helyszí- nek és a személyek neve kék színnel jelenik meg, ráadásul aláhúzva: ezek bizony kapcsok a hasonló képekhez. Gyorsan keresünk emlékezetbõl néhány azonos tartalmú képet, s már Helyi menü láthatjuk is mûködés közben a képek közötti kapcsokat. Ha például egy kulcsszóra kattintunk rá, akkor a program az elõképeket. Ezt a Maintenance/Build thumbnails menü- kigyûjti azokat a képeket, amelyeken a kulcsszó szerepel, így ponttal változtathatjuk meg, mikor is a program elkészíti került egymás mellé a három kép a pécsi TV toronyról. Ha a mappa összes tagjának az elõképét. egy képen találunk valami fontos részletet, amelyet minden- Ha rákattintunk egy képre, akkor a rendszer azt megmutatja képpen szeretnénk megmutatni az ismerõsöknek, akkor akár valamivel nagyobb méretben (600x450 pixeles felbontásban). rajzolhatunk is rá a Draw on image menüponttal. Nem büsz- Jól nézzük meg ezt a kis elõnézeti ablakot, mert ez a program kélkedhet a program túl összetett rajzeszközökkel (vajon mi- lelke, noha ez elsõre nem igazán látszik rajta. De kattintsunk ért nem integrálták a KolourPaint és a Karbon14 programot csak a jobb egérgombbal az ablak területén, s rögtön elõbuk- erre a célra?), de azért kellemesen el lehet vele szórakozni. kan az egyik legnagyobb méretû helyi menü. Egyetlen elõnye ennek a rajzoló modulnak, hogy utólag Ennek a legfontosabb és leggyakrabban használt pontja az el lehet tüntetni a képre rárajzolt dolgokat, azok ugyanis Edit Image Properties lesz, amely egy hatalmas ablakot nyit nem kerülnek bele magába a képállományban. Az egysze- meg. Ebben szépen sorban megadhatjuk a kép kiegészítõ rû geometriai formák csak hozzárendelõdnek a kép nevé- információit: adunk neki címkét és leírást; hozzáadjuk hez. Ellenben a képhez meg tudunk hívni külsõ programot, a személyek, a helyszínek, illetve kulcsszavak listájához így szükség esetén professzionális eszközökkel is tudjuk a képen található látnivalókat, majd bezárjuk az ablakot. szerkeszteni vagy retusálni. Ha pedig valamelyik fotó na- Ha mindent jól csináltunk, akkor a kép elõnézetén már gyon megtetszik, egyetlen kattintással a munkaasztalunk láthatjuk is a változásokat. hátterévé tudjuk tenni.

www.linuxvilag.hu 2005. július 63 Dobbantó

TV torony kulcsszó alapján

A kép jellemzõinek szerkesztése © Kiskapu Kft. Minden jog fenntartva

Kategóriák szerkesztése HTML oldal

A program egyik lényeges tulajdonsága, hogy át tudjuk Az exportálás során a kiválasztott album (amelyet szabni a kategóriákat a Settings/Configure KimDaBa... éppen nyitva tartunk) kerül ki a megadott könyvtárba. menüpont hatására megnyíló ablak Option Groups részén. Alapesetben csak a kis elõképek kerülnek bele egy .kim A magam részérõl elkezdtem a magyarítást azzal, hogy kiterjesztésû állományba a szükséges index.xml állo- itt a csoportok megnevezéseit átírtam. mánnyal együtt. Természetesen hozzámásoltathatjuk Érdemes hasonló módon kibõvíteni a program által a képeket is, amelyek azonban sok helyet foglalnak el, felkínált kategóriákat, így ugyanis sokkal több jellemzõ így érdemes megadni az átméretezést is. Készüljünk fel szerint tudjuk csoportba rendezni a képeket. Egy kép arra, hogy az átméretezés több másodpercet is elvehet jellemzõinek szerkesztésekor azzal szembesülhetünk, képenként, így egy 100-200 képet tartalmazó album hogy nem látjuk a módosított, illetve az újként hozzá- exportálása több perc is lehet. adott saját kategóriákat. Ennek valószínûsíthetõ oka, Az exportált állományt aztán oda tudjuk adni másoknak, hogy a program név szerint tárolja ennek az ablaknak akik képesek ezt importálni a saját képadatbázisukba. az alkotórészeit. A megoldás kézenfekvõ: az Options Egyszerûen csak ki kell választanunk a kapott állomány nyomógomb nyomán felbukkanó menüben tegyük lát- helyét, majd betölteni a képeket a megjelenõ varázsló segít- hatóvá a saját kategóriáinkat is. A külön nyíló ablakokat ségével, amely lépésrõl-lépésre vezet minket kézenfogva. rá tudjuk húzni a fõ dialógusablakra, így ez már minden Nagyon érdekes a HTML album készítése, amellyel kívánalomnak megfelel. a weboldalak készítését spórolhatják meg a fotográfusok. Ha már sikerül néhány tucat képünket a megfelelõ kategó- (Õszintén szólva én nagyon szeretek weboldalakat készíte- riákba besorolni, akkor tovább próbálkozhatunk a program ni, így engem a KimDaBa-nak ez a szolgáltatása nem annyi- egyéb képességeivel. ra vonz.) Számos jellemzõjét adhatjuk meg az elkészülõ Három igencsak hasznos szolgáltatást találunk a File HTML oldalnak: címét, leírását; grafikai megjelenését, meg- menüben (a mentést és a kilépést leszámítva): a képeink adhatjuk a megosztani kívánt képek legnagyobb felbontá- exportálását, importálását illetve egy HTML oldalba foglalt sát, s végül azt a könyvtárat, ahova menteni szeretnénk galéria elkészítését. (alapbeállításként a saját public_html könyvtárunk lesz ez).

64 Linuxvilág Dobbantó © Kiskapu Kft. Minden jog fenntartva

Naptár készítése A kész naptár egy lapja

A program legérdekesebb része vitathatatlanul helyét és kiválasztani a kívánt képeket. A többit bízzuk a Plugins menüpont, ahol több tucat eszköz, program nyugodtan a KimDaBa programra, illetve a K3b-re amely és módszer várja, hogy valamelyiket munkára fogjuk. az elkészült MPEG állományt felírja egy CD lemezre. Én ezek közül hármat tudok nyugodt szívvel ajánlani: A digitális képeink archiválása nagyon fontos feladat, mivel a naptár készítését (Tools/Create Calendar...), csak és kizárólag digitális formában tudjuk veszteség nélkül a videóállományba mentett bemutatót (Tools/Create tárolni õket. Minél fontosabb egy-egy képünk, annál inkább MPEG SlideShow...), és a CD/DVD lemezre történõ igyekezzünk minél több helyre és formában menteni. archiválást (Export/Archive to CD/DVD...). Az egyik legjobb módszer a CD vagy DVD lemezre történõ A képes naptár készítése ugyan nagyon hálás feladat, csak írás, amely azonban csalóka lehet, mivel a lemezek nagyon a program egyes szövegeket a KDE nemzeti beállításaiból sérülékenyek. Itt egy karcolás eredménye nem egyetlen vesz, másokat pedig maga ír meg angol/amerikai formá- karc lesz egyetlen képen, mint azt a filmes világban esetleg tumban. Az eredmény így aztán kissé felemás lesz. A nap- megszoktuk... tárvarázsló elsõ lapján az olyan feltételeket tudjuk megad- A lényeg, hogy egyszerûen és csoportosítva mentsük a képe- ni, mint a lap mérete, a kép elhelyezkedése vagy a szöveg ket, és erre a KimDaBa tökéletesen megfelelõ. A lemezekre stílusa. Ezt követi a képek kiválasztása, ahol a hónapokat felkerül egy HTML oldal is, amely segít a képek közötti eliga- látjuk egymás mellett. Ha rákattintunk egy hónapra, akkor zodásban, illetve kapunk egy listát is az adott mappában ta- a kapott listából ki tudjuk választani a kívánt képet. lálható állományokról. Ha valami baj történne a gépünkkel, (Itt az aktuális mappában szereplõ képek közül választha- akkor a mentésbõl szépen vissza tudjuk állítani a képeinket. tunk, tehát még a naptárkészítés elõtt válasszunk ki olyan A KimDaBa itt is a K3b íróprogramot használja a mentés elké- kulcsszót vagy jellemzõt, amely alapján a képek leválogat- szítésére, illetve a már ismert HTML galériát a navigációhoz. hatók.) A képek kiválasztása után következhet a nyomtatás. Javaslom e menüpont gyakori alkalmazását! A program csak azokat a hónapokat nyomtatja, amelyhez választottunk képet. Zárszó Családi képeket nézegetve bennem gyakran támad olyan Lassan két hete használom teljes megelégedéssel a KimDaBa megmagyarázhatatlan inger, hogy legszívesebben mindet programot. Bár egyelõre vannak hiányosságai, világosan lát- megmutatnám a család aprajának-nagyjának. Igen ám, szik, hogy a fejlesztõk munkája ígéretes, és határozott a fejlõ- de ehhez vagy vinnem kell magammal a számítógépet, dés. Szinte alig tudok olyan szabad programot mondani, vagy minden érintett állományról papírképet kell készíttet- amelyik felvenné a versenyt a KimDaBa könnyed használa- nem. Esetleg ki is nyomtathatom õket... Az elsõ lehetõség tával és átlátható felületével; a program tudása pedig folya- nehézkes, a többi meg drága. matosan bõvül. Így nem kell aggódnunk: amit ma nem tud, A problémának ugyanakkor van egy olyan megoldása is, azt holnapra talán már kezelni fogja. ami egyenértékû a gordiuszi csomó átvágásával: készítsünk olyan bemutatót, amelyet le lehet játszani a legtöbb otthon- Auth Gábor ([email protected]) ban már megtalálható CD/DVD lejátszó készülékekkel. Egy pécsi középiskolában informatikát és prog- Ehhez egyszerûen a megfelelõ menüpontot kell kiválaszta- ramozást oktat. Tíz éve botlott elõször a UNIX nunk, majd néhány opciót beállítani (képek közötti szünet, rendszerekbe, 7 év Linux használat után kapta a képek közötti átmenet ideje, háttérszín, hangállomány el a FreeBSD lázat, amibõl máig nem tudott helye), illetve megadni a kész MPEG állomány végleges kigyógyulni.

www.linuxvilag.hu 2005. július 65 Dobbantó

Hordozd a tenyereden – Linuxos PDA-k Korábban egy rövid cikksorozatban már bemutattuk, hogyan tudunk egyszerûen és gyorsan egy hordozható számítógépre Linuxot telepíteni, illetve milyen beállí- tások szükségesek ahhoz, hogy kedvenc operációs rendszerünk a laptopunkon is mûködjön. Most megnézzük, hogyan telepíthetünk Linuxot egy tenyérszámító- gépre, avagy közismertebb nevén egy PDA-ra. © Kiskapu Kft. Minden jog fenntartva

Milyen rendszer fut és milyen rendszer futhat egy PDA-n A palmtopokon gyári kivitelben két nagy gyártó rendszere fut, a PalmOS vagy a Microsoft PocketPC. A két rendszer közül ugyan az elõbbi nyúlik vissza nagyobb múltra, de mára inkább a Microsoft PocketPC terjed el, úgy vélem az Európában értékesített gépek többsége ezzel a rendszerrel van szerelve. Emellett még léteznek egyéb más operációs rendszerek tenyérméretû eszközökre, a legismertebb talán a SymbianOS, de a tenyérszámítógépek operációs rendsze- rének uralkodója a PocketPC. A PDA-kra készült rendszerek mindegyike különös, az aszta- li számítógépekétõl kicsit eltérõ rendszerrel van felszerelve, ezek úgynevezett beágyazott (embedded) rendszerek. Ilyen beágyazott rendszereket használnak a mobiltelefonokban, az úgynevezett smartphone-okban, illetve a tablet pc-k is egyfajta beágyazott rendszert futtatnak. Természetesen ezen rendszerek között óriási eltérések lehetnek és vannak is. Miután a Linux az új évezredben erõteljesebb hódításra indult, mint valaha, a fejlõdés irányvonalából nem eshettek ki a palmtopok sem, így megjelentek az elsõ Linuxok PDA- GPE – A beállítások ablak ra. Ezek eleinte sokkal jobban hasonlítottak egy nagy-nagy hegesztésre, mintsem kiforrott rendszerre, de valahol min- kifejlõdött Familiar Linux, amely egy kifejezetten dent el kell kezdeni. A 2000-es évek elején egy nagy, ma PDA-kra készült Debian õsbõl kifejlesztett terjesztés már önmagában nem létezõ gyártó piacra dobott egy jópo- (http://familiar.handhelds.org). fa termékcsaládot, az iPAQ-et. A Compaq annak idején ez- Ahogy az asztali gépekhez készített Linux terjesztések is zel a termékkel azt tûzte ki céljául, hogy meghódítsa azo- rendelkeznek különbözõ grafikus környezetekkel, úgy ter- kat az embereket, akik egy notebook-ot túl nagynak, hasz- mészetesen a PDA-ra készült Familiar Linux is rögtön két nálatát pedig túl körülményesnek ítélték, viszont egy esz- környezetet is tartalmaz, az egyik egy Qt alapú KDE-vel közt, amely könnyedén elfér egy zsebben is praktikusnak rokon rendszer az Opie, a másik egy GTK-alapú, Gnome találtak, így megszületett az eszköz, amely leváltotta rokon a GPE. a jegyzettömböket és a határidõnaplókat. Természetesen nem csak a vállalati vezetõk és az elfoglalt beosztottaik szí- Az elsõ lépések vét sikerült megdobogtatni, hanem azokat a technikai újí- Mielõtt elkezdenénk a PDA-nkra Linuxot telepíteni ne tások irányt érzékeny felhasználókat is, akik aztán elõször felejtsük el lementeni minden adatunkat, mert a telepítés hobbiból, majd késõbb komoly projektek keretében kezd- megkezdése után ezeknek búcsút mondhatunk! tek PDA-ra Linuxot fejleszteni. Ha megtörtént a biztonsági mentés, akkor kezdhetjük is Mára eljutottunk oda, hogy palmtopra is egész komoly, telepítést. Töltsük le a Familiar weblapjáról a legfrissebb többé-kevésbé jól használható linuxos rendszerek állnak telepítõcsomagot és csomagoljuk ki a PC-nk merevleme- rendelkezésre. Ilyen rendszer az Intimate projektbõl zére. Ez jelenleg a 0.8.2-es verzió, amit egy tar állomány

66 Linuxvilág Dobbantó

tartalmaz. Jelenleg hat különbözõ HP-Compaq IPAQ ké- Ezután már elkezdhetjük a rendszeröltõ felülírását, amelyet szülékhez érhetõ el telepítõcsomag, ettõl eltérõ eszközökre a Flash menü Program menüpontjával indíthatunk el. Itt való telepítés elõtt érdemes a fórumokban és a fejlesztõi meg kell adni azt a bináris állományt, amely a rendszertöl- oldalakon körülnézni. tõt tartalmazza és indíthatjuk is a memória felülírását. Amennyiben letöltöttük a telepítõcsomagot, akkor neki is Ez a mûvelet úgy fél percet vehet igénybe. Ha végeztünk, foghatunk telepíteni a rendszert. Ennek rögtön több külön- akkor az új rendszertöltõvel a PDA-t újraindítva a Pocket bözõ módjával is próbálkozhatunk. PC operációs rendszerének újra kell indulnia.

A bootloader telepítése Rendszertelepítés memóriakártyáról Mint egy hagyományos asztali PC esetén, itt is telepíteni Ez utóbbi módszer ha lehet, még az elõzõnél is sokkal kell valamiféle bootloadert (továbbiakban nevezzük rend- egyszerûbb. Mindössze a memóriakártyára kell másolni szertöltõnek), ami az indításkor a rendszermagot betölti. a telepítõcsomag két fenti állományát, majd az elõbb leír- Amennyiben olyan PDA-ra telepítjük a rendszert, amelyen takhoz teljesen hasonlóan kicserélni a rendszertöltõt. PocketPC operációsrendszer fut, akkor mindenképpen Ha kicseréltük a rendszertöltõt, akkor nagyon egyszerûen új rendszertöltõt kell telepíteni, ha viszont egy korábbi telepíthetõ az új operációs rendszer. Másoljuk a memóriakár- Linuxról frissítünk, akkor a megfelelõ bootloader megléte tya gyökérkönyvtárába a reflash.ctl, md5sums és jffs2 állomá- esetén ettõl a lépéstõl eltekinthetünk. nyokat, majd a Reset gombbal indítsuk újra a gépet úgy, Amennyiben telepíteni kell a rendszertöltõt a tenyérgépre, hogy közben a joypad-et lenyomva tartjuk. Újraindulás után, © Kiskapu Kft. Minden jog fenntartva akkor többféle adathordozót is választhatunk telepítési amint a boot képernyõ megjelenik engedjük fel a joypad-et forrásként. Én ezek közül most a gép saját memóriájából, és a hangfelvétel gombjával válasszuk ki a menübõl a memó- ria „újraflashelésével” való rend- szertelepítést. Ez a folyamat né- hány perc alatt lefut, majd a gép újraindul és feláll a kiválasztott grafikus felület. Mind az Opie, mind pedig a GPE programcsomag esetén néhány alapvetõ beállítást el kell végezni, de pár perc alatt üzemkész állapotba hozható a PDA. Ha ezzel megvagyunk, akkor készen állunk arra, hogy birtokba vegyük az új rendszert. Mint már említettem a Familiar Linux egy Debian alapokra építkezõ rendszer, így azok a felhasználók, akik ismerik a Debian belsõ felépítését na- gyon könnyen megbarátkoznak az új környezettel. A Familiar GPE – A naptár alkalmazás GPE – A gombok beállítása Linux csomagkezelõjét ipkg-nak hívják, amelynek használata illetve egy külsõ CF/SD/MMC kártyáról való telepítést nem meglepõ módon nagyon hasonló a Debian alatt meg- fogom röviden leírni. A többi telepítési mód megtalálható ismert dpkg és apt csomagkezelõhöz. Az ipkg-n keresztül a terjesztés hivatalos weboldalán. telepíthetünk tehát új csomagokat a rendszerre a megfelelõ tükörszerver kiválasztása után. Rendszertelepítés a gép saját memóriájából Amennyiben rendelkezünk a PDA-hoz valamilyen háló- Ehhez elõször a telepítõkészletbõl két állományt, zati kártyával, akkor a Debian Linuxnál megszokott a BootBlaster*.exe-t és a bootldr*.bin állományt másoljuk az /etc/networking/interfaces állományban beállíthatjuk az ActiveSync, vagy a SyncCE programok segítésével a PDA-ra, eszközt és innentõl kezdve teljes hálózati támogatása van majd a Pocket PC beépített állománykezelõjének segítésével a PDA-nak. Támogatott szinte az összes CF kártya alapú futtassuk a fenti exe fájlt. Ezzel a segédprogrammal lement- LAN és WLAN kártya, így ennek kiválasztása minden hetjük a rendszertöltõ jelenlegi állapotát késõbbi visszaállí- bizonnyal nem jelenthet különösebb problémát. tás céljából, illetve felülírhatjuk azt a letöltött csomaggal. Amennyiben nincs ilyen hálózati eszközünk, akkor Nagyon fontos, hogy ezt a mûveletet csak hálózati áramfor- a Familiar weblapján találunk leírást, hogy miként lehet rásról végezzük, mert ha véletlenül áramkimaradás lép fel, a soros, vagy USB csatlakozással az asztali gépünkön a PDA könnyen érvénytelen memóriaállapotban maradhat keresztül hálózatot biztosítani a PDA-nak. és akkor csak a szervíz segít rajtunk. Miután én elõször telepítettem és beállítottam a rendszert, Ha lementettük a jelenlegi rendszertöltõt, akkor töltsük is elsõ dolgom volt a hálózat belövése, majd pedig SSH telepí- át a PC-nkre, vagy mentsük valamilyen memóriakártyára. tése a PDA-ra, mert így SSH-n keresztül lényegesen kényel-

www.linuxvilag.hu 2005. július 67 Dobbantó © Kiskapu Kft. Minden jog fenntartva

Opie – A csomagkezelõ Opie – A naptár

mesebben lehet a szöveges parancsokat végrehajtani. a PDF fájlok 99%-át gond nélkül kezelte. A maradék 1%-ért Ugyan kifogástalanul mûködik a PDA tapogatós billentyû- pedig a linuxos PDF-olvasóm sem volt oda túlságosan... zete, illetve a kézírás felismerõ is, de ezek használata azért Az Opie tartalmaz egy Konqueror böngészõt, amellyel egy kicsit körülményes. Fõleg parancssori eléréshez. tökéletesen használható, teljes értékû webböngészõt kapunk a rendszerhez. Mind az Opie, mind a GPE támogatja azt A felhasználói programok áttekintése a megoldást, hogy 90 fokkal elforgathatjuk a képernyõt, így A következõkben átnézzük, hogy milyen csomagok is áll- pedig már egész kényelmesen lehet weblapokat nézegetni. nak rendelkezésünkre a Familiar Linuxhoz. Ez alkalommal Eddig azok a programok, amelyeket vártam a PDA-tól, most – bár a Gnome közelebb áll a szívemhez – az Opie felülettel pedig nézzünk pár olyat, amely kisebb meglepetésként ért. ismerkedünk meg, mert meglátásom szerint ez kiforrottabb, Található a csomagok között egy Familiar Linuxra optimali- mint a GPE, bár idõvel ez is biztosan hozni fogja a tõle zált XMMS, amelyet annyira eltaláltak a fejlesztõk, hogy elvárható minõséget. szinte tökéletesre sikerült. Használati értéke megegyezik az Az Opie felület egy négy lapból álló alkalmazáskezelõvel asztali Linuxokra telepíthetõ XMMS-el. Telepítettem továb- és egy tálcával (taskbar) rendelkezik, minden funkció ezen bá egy Familiar Linuxos rdesktop-ot, amely programmal keresztül érhetõ el. Az alkalmazáskezelõ elsõ füle a PIM, távoli kliensekkel létesíthetünk asztalkapcsolatot, így akár a Personal Information Manager. Ezen a fülön található meg a PDA-ról vezérelhetjük az asztali gépünk grafikus felüle- a naptár, a jegyzettömb, névjegyzék és egy teljes értékû tét. Természetesen a 320x240-es felbontás azért némi korlá- e-mail kliens. Utóbbi annyira teljes értékû, hogy támogatja tot szab az örömöknek, de szükséghelyzetben ez egy szin- a POP3 és IMAP protokollokat, méghozzá azon titkosított tén teljesen használható megoldás, nekem nagyon tetszett. változatát is, kezeli a mappaszerkezeteket és támogatja Találtam egy Gaim csomagot is, úgy tûnik, hogy eltekintve a HTML-levelek megjelenítését is. Õszintén szólva ennek pár gyerekbetegségétõl ez a program is teljesen használható a kliensnek a használhatósága engem is meglepett, bõven a mindennapokban, szinte megegyezik az asztali változattal. túlszárnyalta minden várakozásomat. A naptár egy teljesen Az összes program közül azonban legjobban a csomagból szabványos naptárprogram, hasonlóan a névjegyalbumhoz. telepíthetõ mplayer tetszett. Szinte bármilyen videót próbál- Jegyzeteket két programmal is készíthetünk, az egyik az tunk lejátszani vele, simán mûködött – persze a nagyon nagy úgynevezett DrawPad, a másik pedig a hagyományos Text felbontású videók némelyike szaggatott picit, de ezt tudjuk Editor. A DrawPad mint neve is mutatja inkább egy firka- be a 200MHz körüli processzornak. Egy kicsit erõsebb vassal program, ide kézzel, illetve a tollal írott szöveget rögzíthe- és egy méretes memóriakártyával kész a nyílt forrású mobil tünk, míg a Text Editor egy hagyományos szövegszerkesztõ médialejátszó. Ennél többet és jobbat kívánni sem lehet. program, ide az érintõbillentyûzettel, vagy a karakterfelis- Emellett még nagyon jópofa programnak találtam merõvel vihetünk fel szöveget. a GPSDrive Familiar linuxos változatát, amit azonban Az Alkalmazások fül alatt találhatóak meg azok a progra- sajnos hely hiányában már nem volt lehetõségem komo- mok, amelyeket mi telepítettünk a csomagkezelõ progra- lyabban kipróbálni. Amennyiben mûködése megközelíti mon keresztül. Én olyan programokat néztem ki magam- az asztali változatét, akkor egy megfelelõ GPS eszközzel nak, amelyeket a mindennapokban az asztali PC-men is már navigációs rendszerré is alakíthatjuk a PDA-t. használok, így telepítésre került az Opie Sheet, ami egy Excel vagy ha úgy tetszik OpenOffice.org Calc klón, vala- A beállítások mint az Opie Writer, ami egy OpenOffice Writer klón. A beállítások fül alatt grafikus felületen keresztül bekon- Telepítettem a PDA-ra egy PDF olvasó csomagot, amely figurálhatjuk a teljes tenyérgépes környezetet, így akik

68 Linuxvilág Dobbantó © Kiskapu Kft. Minden jog fenntartva

Opie – Az asztal Opie – Fényerõ és energiagazdálkodás

csomagkezelõjét, ahol csomagok ki- és bepiálásával válogat- hatunk a telepített és telepítendõ csomagok között. Ezt a cso- magkezelõt bármelyik felhasználó könnyedén használhatja. Hasonlóan egyszerûen állíthatóak be a hálózati beállítások. A rendszer érzékeli az összes elérhetõ hálózati eszközt és felajánlja ezek beállítását. A rendszer támogatja a legújabb WLAN eszközöket is, sõt a WEP titkosítást. Sajnos azonban WPA titkosításra még nincs lehetõség. Van helyette viszont VPN kezelés, méghozzá több protokollon is, így akár IPSec kapcsolatot is kiépíthetünk bármely elérhetõ kiszolgálóval, így a vezetéknélküli hálózati forgalmat is tudjuk titkosítani.

Összegzés Az elmúlt másfél hónapban, mióta a linuxos asszisztensemet használom nagyon megszerettem. Használata, filozófiája Opie – Az asztal elforgatva teljesen megegyezik egy hagyományos asztali Linuxéval, ha gondba kerültem bármi miatt továbbra is hagyatkozhat- nincsenek kibékülve a parancssorral, vagy nem merülnének tam a naplókra, ha valamit kézzel kellett beállítani, akkor el annak rejtelmeiben, szintén nem kell félniük, hogy ne parancssorból ezt is pillanatok alatt meg lehetett oldani, tudnák használni a rendszert. de még ha véletlen otthon felejtettem a gépet sem kellett Ahogy azt a KDE-bõl megszokhattuk, a rendszer megjele- kétségbe esni, mert SSH-n elérhetõ volt a gép. nését teljes egészében a saját igényeinkre szabhatjuk, kezd- Amellett pedig, hogy digitális asszisztensnek tökéletes, ta- ve a színektõl az ablakkereteken át egészen a felületelemek láltam egy más – kissé talán rendhagyó – felhasználási mó- megjelenéséig. Nincs az a Pocket PC-s PDA, amelyik ilyen dot is. Két CF hálózati kártya beszerzésével a gép bármikor tág keretek között szabható testre – bár ezen már nem egy határozottan kis fogyasztású, de teljes értékû linuxos lepõdöm meg. tûzfallá és/vagy útválasztóvá alakítható... Ezen a téren is Szintén testreszabható a PDA-n található nyomógombok mindent tud, amit elvárhatunk tõle. funkciója, így minden gombhoz egyedi parancsot tudunk Ha viszont éppen úgy döntök, hogy útra kelek, fogok egy rendelni. Szintén a beállítások fül alatt találjuk az olyan rend- nagy CF kártyát és ráteszek egy-két filmet, számtalan mp3- szerparaméterek állítását, mint az idõ, nyelv és régió beállítás. at és kész a mobil szórakoztató-központ. A fül alatt találjuk a rendszer energiagazdálkodási beállítá- Természetesen a rendszerben még vannak gyenge pontok, sait is. Itt külön szabályokat állíthatunk be tápellátás alatt vannak gyerekbetegségek, de aki tud kompromisszumot álló módra és akkumulátoros üzemre is. Testre szabhatjuk kötni, az egy windowsos PDA-val egyenértékû eszközt a fényerõ erõsségét, a háttérvilágítás lekapcsolásának és kaphat. Idõvel aztán sokkal többre is képessé válhat a PDA kikapcsolásának idõpontjait. Mindezt a két profilhoz ez a rendszer. Akinek van kedve és megfelelõ eszköze, teljesen szétválasztva. A fényerõ beállítását bízhatjuk az az próbálja ki, ennyit szerintem megér. automatikára is, ilyenkor az uralkodó fényviszonyoknak megfelelõen változtatja a PDA a megvilágítás erõsségét. Illés Viktor ([email protected]) 25 éves, Szintén a beállítások között találjuk a Familiar Linux grafikus az Assixo KFT munkatársa

www.linuxvilag.hu 2005. július 69 Dobbantó

Kávéfõzés lépésrõl lépésre (2. rész) Az öröklõdés, avagy mindig legyen nálad egy angol szótár ha programozol.

últ hónapban feltelepítettük a Java fejlesztõi tül vezet az út. Az általunk használt modellben minden állat környezet 5.0-ás változatát, megírtuk a kötele- ugyanazokkal a tulajdonságokkal rendelkezik. Így, ha a meg- zõnek számító „Helló világ!” alkalmazást, végül bízónk tehenek esetében meg szeretné jeleníteni a naponta © Kiskapu Kft. Minden jog fenntartva egyM tehén, egy ló és egy kutya képében megismertük az ob- adott tej mennyiségét, már gondban lennénk. Az Allat osz- jektum fogalmát. Megtudtuk, hogy az objektum nem más, tályt nem bõvíthetjük ilyen tulajdonsággal, mert azzal azt mint egy osztály példánya. Az osztály általános leírást je- állítanánk, hogy lovaink és kutyáink is tejtermelõ jószágok. lent, az objektum ennek az általánosításnak egy megvalósí- Kézenfekvõ megoldásnak tûnik, hogy képviseljen a tehén tása. Szó volt még a tagváltozókról, vagy tulajdonságokról, önálló osztályt. Kérdés viszont, hogy mi legyen a meglévõ és az ezeken mûveletet végzõ tagfüggvényekrõl, azaz me- tagváltozókkal és tagfüggvényekkel. Egyszerû, másolás-be- tódusokról. Ezek igen közel állnak a hagyományos progra- illesztés módszerrel kaphatunk egy megoldást, de érezhetõ, mozási nyelvek változó- és függvényfogalmához. hogy ez nem csak csúnya, de rossz hatékonyságú kódot Elevenítsük fel az állatok hangját utánzó program eredményezõ módszert is jelentene. Az objektumközpon- main(String[]) tagfüggvényt: túság egyik nagy elõnye pedig a nagy mértékû kódújra- ... felhasználás, aminek itt valahogy érvényt kell szerezni. public static void main(String[] args) { Ekkor lép képbe az öröklõdés (inheritance). Allat tehen = new Allat(“múúú”); Allat lo = new Allat(“nyihaha”); A tehén egy állat, de... Allat kutya = new Allat(“vauvau”); Öröklõdésrõl akkor beszélünk, amikor egy meglévõ osztály- tehen.szolaljMeg(); ból kiterjesztéssel egy új osztályt hozunk létre. Az eredeti, lo.szolaljMeg(); vagyis az õsosztály megfelelõ láthatóságú elemeit megörökli kutya.szolaljMeg(); az új, mintha csak saját tulajdonságokról és metódusokról } lenne szó. Az egyetlen kérdés a láthatóság, de mielõtt elvesz- ... nénk ennek részleteiben, fogadjuk meg azt a bölcsességet, mely szerint egy kép többet mond ezer szónál, és rajzoljuk A metódus nyilvános (public), ami azt jelenti, hogy az osztá- le a modellt, mielõtt megvalósítanánk. lyon kívülrõl elérhetõ. Továbbá statikus (static), ami azt je- Az UML a Unified Modeling Language rövidítése, és pont lenti, hogy az osztály minden példányára közös, és ezért akár az, amit a neve is mutat: egységesített modellezõ nyelv. példányosítás nélkül is használható. Mivel ez jelenti az alkal- Objektumközpontú problémák leírására szolgál, progra- mazás belépési pontját, ennek szükségképpen így kell lennie. mozási nyelvtõl és környezettõl függetlenül. A szabvány Nem rendelkezik visszatérési értékkel (void), paraméterként által bevezetett diagrammok segítségével könnyen pedig szövegfüzérek tömbjét kapja (String[]), mely a pa- emészthetõen fogalmazhatók meg objektumközpontú állí- rancssori paramétereket tartalmazza. A C-hez szokott szem- tások, melyek megvalósítása egy-egy programozási nyelv- nek talán furcsa, de ennek mindig így kell lennie, nem hozha- ben már kevés önálló ötletet igénylõ kódolási feladatot tó létre belépési pont például int típusú visszatérési értékkel. jelent. Nem célom az UML részletes bemutatása, csak A tagfüggvényben elõször létrehozunk három változót, me- annyira használom, amennyire segítheti az objektumköz- lyek Allat típusúak, és rögtön kezdõértéket is kapnak egy-egy pontúság alapfogalmainak megértését. Lássunk egy UML példányosítás révén. A tehen, a lo és a kutya úgynevezett re- diagrammot az öröklõdésre. ferenciák, segítségükkel objektumokra hivatkozhatunk. Az ob- Az ábrán két osztály látható, ezeket három rekeszre osztott jektumok létrehozása az osztály konstruktorának meghívásá- dobozok jelképezik. Az elsõ rekesz az osztály nevét, a máso- val történik, és ezen keresztül állítjuk be a hangjukat. Végül az dik a tulajdonságokat, a harmadik a mûveleteket mutatja. objektumoknak egyesével meghívjuk a szolaljMeg() metó- Az üres hegyû, folytonos vonalú nyíl mutatja az öröklõdést. dusát, így a képernyõn megjelennek az állatok hangjai. A nyíl irányára több magyarázat is létezik. Szerintem a leg- Teljhatalmú programozóként állatokat hoztunk létre, és lát- fontosabb annak a ténynek a hangsúlyozása, hogy ennél tuk, hogy ez jó. Mégis, a Java mögött álló szemlélet azt sugall- a kapcsolatnál a Tehen osztály hivatkozik az Allat-ra, és az ja, hogy a megoldás még nem tökéletes. Bármilyen objektum- õsosztály semmilyen formában nem értesül az öröklõdésrõl, központú alkalmazás fejlesztéséhez modellalkotáson keresz- pusztán elszenvedi azt. Az osztályok elemei mögött, egy ket-

70 Linuxvilág Dobbantó

tõspont után azok típusa látha- Ha nem lenne olyan tagfüggvény a Tehen osztályban, tó. Az elemek nevét pedig egy amely felhasználja a hang tulajdonságot, nem lenne szük- most minket jobban foglalkozta- ség a védett láthatóságra. Viszont ha egy tehéntõl megkér- tó jelölés elõzi meg. Egyetlen dezzük, hogy hány liter tejet ad, hozzáteszi, hogy „múúú”, különleges karakter, ami a látha- ezért kell a protected módosító. tóságot mutatja. A + a nyilvá- Lássuk a megvalósítást. Két osztályunk, így két forrásállo- nos, a - a személyes, a # pedig mányunk lesz. Az elsõ a már múlt hónapban is látott a védett (protected) tagváltozót Allat.java, azzal a módosítással, hogy a hang protected: vagy -függvényt jelenti. /** Ez utóbbiról még nem volt szó. * Ez az osztaly egy allatot ir le. Nézzük meg, hogyan alakul * Tulajdonsaga a hangja. a láthatóság öröklõdés esetén. * Meg lehet szolaltatni. Egy nyilvános elem mindenki számára szabadon hozzáfér- */ hetõ, és ezen az öröklõdés nem változtat. Egy személyes public class Allat { elem ezzel szemben a teljes elrejtés megvalósítása. Ha szár- maztatunk egy osztályt, abban nem lesz látható egy szemé- /** lyesre állított elem. Érezhetõ, hogy szükség van egy köztes * Az allat hangja. © Kiskapu Kft. Minden jog fenntartva megoldásra a láthatóság tekintetében. Ez a védett, ami ide- */ gen osztályoknak továbbra sem elérhetõ, öröklõdés esetén protected String hang; pedig megtartja védett tulajdonságát, ezért tetszõleges szá- mú öröklés után is látható osztályon belülrõl. /** Ezért, noha a múlt hónapban személyesre állítottuk az Allat * Letrehoz egy uj allatot osztály hang tagváltozóját, ennek láthatóságát védettre kell * a megadott hanggal. állítani. Nagyon fontos, hogy ezt nem a szolaljMeg() metó- */ dus érdekében tesszük! A Tehen örökli ezt a metódust, és az public Allat(String h) { meghívható egy Tehen típusú objektum esetén. A metódus hang = h; használja a hang változót, de a láthatóság kérdésének eldön- } tésekor az számít, hogy a mûvelet hol helyezkedik el, és nem az, hogy melyik osztály példányáról van szó. /**

www.linuxvilag.hu 2005. július 71 Dobbantó

* Kiirja a kepernyore az Az új osztály bevezetése akkor nyer értelmet, ha használatba * allat hangjat. is vesszük, így a program belépési pontja is változott. Tehenet */ immár a Tehen osztály példányosításával hozunk létre. public void szolaljMeg() { Az öröklés miatt meghívhatjuk az õsosztályban szereplõ System.out.println(hang); szolaljMeg() mellett a kibõvítés révén nyert mennyiTej() } metódust is. Így a képernyõn az alábbi kimenet látható: múúú /** 20 liter, múúú * A program belepesi pontja. nyihaha * Letrehoz harom allatot, es vauvau * megszolaltatja oket. */ Idõzzünk el még egy keveset az öröklõdés példaképét jelen- public static void main(String[] args) { tõ Tehen osztály elemzésével. Magának a kapcsolatnak a ki- Tehen tehen = new Tehen(“múúú”, 20); fejezése nagyon egyszerû, csupán az osztály fejében kell ezt Allat lo = new Allat(“nyihaha”); jeleznünk az extends (kiterjeszt) kulcsszó segítségével. Az Allat kutya = new Allat(“vauvau”); egyetlen kérdés az, hogy pontosan mi is történik a példányo- tehen.szolaljMeg(); sításkor meghívódó konstruktorokkal. Nyilvánvalóan akkor © Kiskapu Kft. Minden jog fenntartva tehen.mennyiTej(); hasznos az öröklõdés, ha a meglévõ metódusokat nem kell lo.szolaljMeg(); újraírni, így a tagváltozókat értékkel ellátó konstruktort sem. kutya.szolaljMeg(); Lehet valahogy hivatkozni az õs kosntruktorára? } A válasz igen, de nem magától értetõdõ, hogy hogyan. A konstruktor különleges függvény abban a tekintetben, } hogy minden más metódussal ellentétben nem jelezzük a visszatérési értékét, hiszen meghívásakor objektum Következzen a Tehen.java állomány: készül, amit viszont nem a függvény ad. Pontosan ezért /** különleges bánásmódot igényel. Meghívása a super hivat- * Ez az osztaly egy tehenet ir le kozással történik, melyet az õs konstruktorának megfelelõen * Tulajdonsaga a tej mennyisege, amit egy nap ad. kell paraméterezni. * Ezt ki lehet iratni a kepernyore. Két dolgot hangsúlyoznék ezzel kapcsolatban. Ha az õsosz- */ tály tartalmazna paraméter nélküli konstruktort, és a szár- public class Tehen extends Allat { maztatott osztály konstruktorában nem lenne super hívás, akkor a származtatott osztály példányosításakor elõször ön- /** mûködõen meghívódna az õsosztály kosntruktora. Továbbá * A naponta adott tej mennyisege. nagyon fontos, hogy ha így hivatkozunk egy õsosztálybeli */ konstruktorra, a super hívásnak a legelsõ mûveletnek kell private int tej; lennie, egyébként a fordító hibát is jelez. A mennyiTej() metódusban a kiíratásnál a + operátor /** segítségével fûzzük eggyé a szövegfüzéreket. Ez egy igen * Letrehoz egy uj tehenet a megadott kényelmes, és könnyen olvasható megoldást jelent. Ugyan- * hanggal, és napi tej mennyiseggel akkor ez azt is jelenti, hogy a + több értelemmel is bír, hi- */ szen számok aritmetikai összeadása mellett String típusú public Tehen(String h, int t) { objektumok összefûzését is lehetõvé teszi. Ez egy beépített super(h); megoldás, amit az objektumközpontúság szakzsargonjával tej = t; élve operátor túlterhelésnek hívunk (operator overload). } Jó tudni, hogy egyes nyelvek, például a C++ ezt a progra- mozó számára is lehetõvé teszik. Jelen helyzetre lefordítva, /** ha azt mondanánk, hogy két tehén egyenlõsége akkor telje- * Kiirja a kepernyore a napi sül, ha ugyanannyi tejet adnak, túlterhelhetnénk az == ope- * tej mennyiseget rátort, hogy kényelmesen hasonlítsunk össze két Tehen tí- */ pusú objektumot. Ugyanez Java-ban hatékonysági okokból public void mennyiTej() { nem megvalósítható. System.out.println(tej + “ liter, Mindezek alapján már bátran belegondolhatunk, mi is “ + hang); az ami miatt hasznos az objektumközpontú tervezés. } Egy kellõen átgondolt modell segítségével olyan alkal- mazást építhetünk, ami nem csak könnyebben átlátható, } de egyszerûen bõvíthetõ is. A sorozattal kapcsolatban vá- rom az észrevételeket, javaslatokat. Következõ hónapban A fordítás és futtatás a megszokott módon történik: az interfészek lesznek terítéken. $ javac Allat.java Tehen.java $ java Allat Fülöp Balázs ([email protected])

72 Linuxvilág Dobbantó

Számítógép-hálózatok (19. rész) Az Internet hálózati rétege, az IP protokoll, címzések és alhálózatok A sorozat elmúlt néhány részében áttekintettük, mi is a feladata, illetve miként is mûködik a hálózati réteg. Most egy konkrét megvalósítást veszünk szemügyre, amelyen megnézzük, miként is mennek a dolgok a gyakorlatban. Ebben a hónap- © Kiskapu Kft. Minden jog fenntartva ban tehát témánk tehát az Internet hálózati rétege és annak protokolljai.

hálózati réteg feladata nem más, mint a szállítási rétegtõl kapott adatokat eljuttassa a címzettig. Mindezt úgy kell megvalósítania, hogy a szállítási rétegA szempontjából teljesen mindegy legyen, hogy a cél a forrással egy hálózatban van-e, vagy sem. Magyarul a szállítási réteg csak az elküldendõ adatot és a cél címét adja meg, minden más a hálózati rétegre van bízva. Az Interneten zajló kommunikáció tehát a következõképp zajlik (1. ábra): a szállítási réteg (transport layer) kap egy adatfolyamot az alkalmazási rétegtõl (application layer). Ezt az adatfolyamot blokkokra, úgynevezett datagramok- ra bontja, majd átadja a hálózati rétegnek (network layer), amely gondoskodik azok célbajuttatásáról. Látható, hogy az Internet felépítése nem követi az OSI modellt, amelyre sorozatunkat is építettük. A fizikai és az adatkapcsolati réteg ugyanis össze van vonva, továbbá hiányzik 1. ábra a viszont és a megjelenítési réteg (ezek egyes feladatai Az Internet rétegei. Ez a felépítés némiképp eltér az OSI modelltõl, hiszen hiányzik az adatkapcsolati, a viszony a szállítási, mások pedig az alkalmazási rétegben kerül- és a megjelenési réteg. nek megvalósításra). A 2. ábrán láthatjuk az Internet protokolljainak egymáshoz való viszonyát. Ezek közül a mezei felhasználók csak az alkalmazás rétegbeli protokollokkal kerülnek közelebbi kapcsolatba, mint például az FTP-vel vagy az ábrán ugyan fel nem tüntetett, ám manapság leggyakrabban használt HTTP-vel, amely a weboldalak lehívásában játszik szerepet. A TCP (Transmission Control Protocol) két gép közötti megbízható bájtfolyam alapú kommunikáció kialakítására alkalmas protokoll, az UDP (User Datagram Protocol) pedig ennek megbízhatatlan „párja”. Ezek a szállítási réteg proto- kolljai, a késõbbiekben részletesen is foglalkozunk velük. Mi most azonban még maradunk a hálózati rétegnél, és azok protokolljainál. Közülük a legjelentõsebb az IP (Internet Protocol), amely a gépek közötti adatátvitelt végzi. Fontosak még a vezérlõprotokollok, mint például az ICMP (Internet Control Message Protocol), vagy a logikailag az adatkapcsolati és a hálózati réteg határán elhelyezkedõ ARP és RARP. 2. ábra Az Internet protokolljai

www.linuxvilag.hu 2005. július 73 Dobbantó

adott paraméterekkel. Ez gyakorlatilag azt jelenti, hogy bármit is írunk erre a mezõre, nem lesz kihatással a csomagunk célbajutásának módjára. A teljes hossz (total length) az egész csomag méretét adja meg, beleértve a fejlécet és a szállított adatokat is. Mivel ez egy két bájtos mezõ, ebbõl következõen egy csomag nem haladhatja meg a 65535 bájtot (egy bájt híján 64 kilobájt). Ez elsõ hallásra soknak tûnhet, de a sávszélesség növekedésével elõbb-utóbb kevésnek számítanak majd, és nem lesz gazdaságos ilyen „kis” csomagmérettel dolgozni. Az útválasztók idõnként feldarabolják a datagramokat. 3. ábra Az IP csomagok fejlécének felépítése Az azonosítás (identification) mezõ adja meg, hogy az adott csomag melyik datagram része. A jelzõk (flags) há- Az ennél mélyebb szinten lévõ dolgokról az Internet szab- rom bitbõl áll, amelyek közül az elsõ kihasználatlan, a má- ványa már semmit sem mond. Itt az adott LAN-ra van bíz- sodik az úgynevezett DF (Don’t Fragment – ne darabold!) va, hogy miként valósítja meg a benne lévõ gépek közötti bit. Ez megtiltja az útválasztók számára, hogy az adott © Kiskapu Kft. Minden jog fenntartva adatátvitelt. Az Internetbe tehát ugyanúgy beköthetünk csomagot több részre szabdalják. Ezt a bitet akkor szokás például egy vezérjeles gyûrût, mint egy Ethernet hálózatot. beállítani, amikor a célállomás valami oknál fogva nem Most pedig vegyük kicsit részletesebben is szemügyre az képes több darabból összeállítani az eredeti datagramot. Internet hálózati rétegének protokolljait! A darabolás megtiltásának azonban ára van: elképzelhetõ, hogy a csomag egy darabban csak kerülõúton keresztül Az IP (Internet Protocol) érhet célba. A jelzõk mezõ harmadik bitje az MF (More A szállítási réteg által elõállított TCP és UDP datagramok IP Fragments – még több darab). Ez azt jelzi a célállomás csomagok belsejében utaznak a világhálón. Egy IP csomag számára, hogy a datagram még nem ért át teljesen, újabb két részbõl áll: magából a szállított adatból és egy fejlécbõl. darabokra kell számítani. A fejléc szerkezetét láthatjuk a 3. ábrán. Ahhoz, hogy a gép rekonstruálhassa a számára küldött Amikor két különbözõ számítógép, például egy SPARC és datagramot, a darabok sorrendjét is ismernie kell (hiszen egy Pentium processzorral felszerelt masina bitsorozatokat semmi sem garantálja, hogy a csomagok útnak indulásuk szeretne egymással cserélni, akkor rögtön félreértések sorrendjében érkeznek meg). Erre szolgál a darabeltolás adódnak. A Pentium ugyanis alsó vég szerint tárolja a bite- (fragment offset) mezõ, amely megmondja, az adott darab ket, azaz mindig a legkisebb helyiértékû bitet küldi elsõnek. mely részét képezi a datagramnak. Az utolsó darabot leszá- A SPARC-nál ez pont fordítva történik. Ha a Pentium azt mítva ennek a mezõnek az értéke mindig a 8 valamely akarja mondani partnerének, hogy „41”, akkor õ az 100101 egész számú többszöröse. Mivel az egész mezõ összesen bitsorozatot fogja küldeni, amit a SPARC 37-nek fog értel- 13 bájt méretû, ezért egy datagramot 8192 darabnál többre mezni. Ezért elõször meg kell egyezni abban, hogy a biteket nem oszthatunk. alsó- vagy felsõ vég szerint továbbítjuk. Az IP protokoll fel- Az alhálózaton örökre bolyongásra ítélt csomagok elkerülé- sõ vég szerint tárolja az adatokat a fejlécében. (Ezért ha sére szolgál az élettartam (time to live) mezõ, amely meg- Pentium processzorra írunk hálózati alkalmazást, figyel- mondja, még mennyi ideig élhet az adott csomag. Ha ez az nünk kell arra, hogy a cél címét elõször átalakítsuk felsõvé- érték nullára csökken, az útválasztók a csomagot eldobják. gûre, majd csak utána adjuk át a szállítási rétegnek). A szabvány szerint az élettartamot másodpercben kell meg- Most nézzük sorra, mi mit is jelent a fejlécben. A verzió érte- adni, de a gyakorlatban inkább ugrás-számban határozzák lemszerûen az IP protokoll verzióját adja meg, pontosabban meg, azaz minden útbaesõ útválasztó eggyel csökkenti azt, hogy az adott csomag az IP protokoll mely változatához a mezõ értékét. Ha egy csomag ideje lejár, az útválasztó, tartozik. Az IHL mezõ a fejléc utolsó részének, az opciók mé- amelyik a csomagok eldobta, egy értesítõt küld a feladónak retét adja meg. Erre azért van szükség, mert ennek a mezõ- a történtekrõl. nek nincs kötött mérete, hossza csomagonként változó lehet. A protokoll rész arról árulkodik, hogy a csomag milyen Mindenesetre 60 bájtnál nagyobb nem lehet. típusú datagramot hordoz, például TCP, UDP, stb. Ez a cél- A szolgáltatás típusa (type of service) eredetileg arra hiva- állomás számára fontos, hiszen annak hálózati rétege innen tott, hogy az alhálózat számára hordozzon információkat tudja, hogy mely szállítási réteghez tartozó folyamatnak a továbbításánál felmerülõ kérdésekkel kapcsolatban. kell a beérkezõ adatokat átadnia. Ilyen lehet például a csomag prioritása (erre az IP 8 szin- A fejlécellenõrzõ összeg (header checksum) értelemszerûen tet biztosít), vagy például az, hogy gyorsan, vagy inkább a fejléc sértetlenségének megállapítására szolgál. Mivel biztonságosan kívánjuk a csomagot céljához eljuttatni. a fejléc élettartam mezõje minden ugrásnál változik, ezért Példaként most is felhozhatjuk az elõzõ részben leírtakat: az útválasztóknak a csomag továbbítása elõtt az ellenõrzõ egy hálózaton keresztüli videónézésnél fontosabb, hogy összeges újra ki kell számolniuk. a csomagok sebessége ne lassuljon le, ugyanakkor egy fájl A forrás és a cél címe (source/destination address) meg- átvitelekor inkább az a jobb, ha a csomagok sértetlenül mondja, ki a címzett és ki a feladó. Az Interneten a gépek érkeznek meg. Az igazsághoz azonban az is hozzátartozik, úgynevezett IP címekkel vannak azonosítva, erre mindjárt hogy az útválasztók többsége nem foglalkozik az itt meg- részletesen is kitérünk.

74 Linuxvilág Dobbantó

4. ábra 5. ábra A traceroute parancs segítségével feltérképezhetjük, hogy Egy csomag belsõ felépítése © Kiskapu Kft. Minden jog fenntartva milyen útválasztókon keresztül érhetjük el a megadott célállomást

Az opciók (options) rész eredetileg arra szolgált, hogy ké- jóval kisebb volt, és 9 ugráson belül bárhova el lehetett jutni. sõbb jelentõsebb változtatások nélkül bõvíthessék az IP Ma már más a helyzet. A 4. ábrán látható, hogy például egy protokoll által nyújtott szolgáltatásokat. Mint már emlí- népszerû amerikai keresõportál eléréséhez a csomagoknak tettük, ez a rész változó méretû, lehet teljesen üres is legalább 17 útválasztón kell keresztülverekedniük magukat. (de 40 bájtál semmiképp sem több), így csak akkor kell Ilyen hosszú útvonal pedig már aligha fér el 40 bájton. több helyet lefoglalni a fejrész számára, ha az opció mezõ A traceroute inkább azt használja ki, hogy az útválasztók valóban felhasználásra is kerül. visszajeleznek, ha egy általunk küldött csomagnak lejár az Az IP tervezése óta öt dologgal bõvítették ki az IP életideje, és el kell dobniuk. Így kiküld különbözõ ám kis fejlécét, illetve pontosabban az opció mezõt. Ezek élettartamú csomagokat (amelyek annyi idõ alatt biztosan közül az elsõ a biztonság, amellyel meghatározhatjuk nem jutnak el céljukig), és amelyik útválasztó visszajelzi a csomagban szállított datagram titkosságát. Az eredeti a csomag halálhírét, az biztos része a csomag útvonalának. célkitûzés az volt, hogy bizonyos titkosnak számító Végezetül megemlítjük még az utolsó opciót is, az idõ- adatokat csak meghatározott útválasztókon keresztül bélyeget, amely szinte teljesen megegyezik az elõzõvel, lehessen továbbítani. Ezzel elkerülhetõ például az, csak azzal a különbséggel, hogy az útválasztók nem csak hogy katonai titkokat hordozó csomagjaink áthaladjanak az IP címüket, hanem a csomag beérkezésének idejét is ellenséges (vagy legalábbis nem túl barátságos) országok feljegyzi. Ezáltal pontosabb képet kaphatunk a csomagok útválasztóin. A ma használatban lévõ útválasztók nem alhálózatbeli terjedésérõl. támogatják ezt a szolgáltatást. Egy másik opció a szigorú forrás általi forgalomirányítás, Az ICMP (Internet Control Message Protocol) amikor a datagramot küldõ gép határozza meg, hogy Az IP-n kívül más protokollokat is használ az Internet a csomagnak milyen útvonalon kell eljutnia a célállomá- hálózati rétege. Ezek közül az egyik legfontosabb az sáig. Ilyenkor az opciórészben meg kell adni a pontos ICMP, amelynek két funkciója van. Elõször is lehetõvé útvonalat (útválasztók IP címeinek sorozatát), amelyen teszi hogy mérhessük a hálózat bizonyos tulajdonságait. a csomagnak haladnia kell. Ennek egy „enyhébb” válto- Másodszor lehetõséget biztosít az útválasztók számára, zata a laza forrás általi forgalomirányítás, amikor csak azok- hogy jelezzék a csomag feladójának, ha valami váratlan nak az útválasztóknak a címeit mondjuk meg, amelyeken esemény következik be. a csomagnak biztosan át kell haladnia. Ezzel az opcióval Ilyen váratlan esemény lehet például az, ha az útválasztó lehetõség nyílik arra, hogy csomagjainkkal elkerüljünk nem találja magát a célt, vagy hibás fejlécû IP csomagot bizonyos térségeket. kapott. Az ICMP üzenetek másik gyakori felhasználása az, A negyedik opció az útvonal feljegyzése. Ennek hatására amikor egy gép életjeleit kívánjuk megállapítani (például az útválasztók az átmenõ csomagok opció mezejébe beírják a ping parancs segítségével). Ilyenkor egy úgynevezett saját címüket, így a célállomás rekonstruálhatja, milyen ECHO_REQUEST üzenetet küldünk, amelyre a gép útvonalon érkeztek meg hozzá a csomagok. A traceroute pa- – amennyiben életben van – egy ECHO_REPLY ICMP rancs (4. ábra) is hasonló szolgáltatást nyújt, segítségével ki- üzenettel válaszol. listázhatjuk, milyen útválasztókon kell keresztülmennünk ahhoz, hogy elérjünk egy megadott gépet. A különbség csak Címzés az Interneten az, hogy a traceroute nem használja az útvonal feljegyzése Ahhoz, hogy a hálózati réteg megtalálja a csomagok cél- opciót, teljesen más elven mûködik. Az az igazság, hogy állomását, minden gépnek (és útválasztók) rendelkeznie nem is lehet ezt a módszert erre a célra használni, ugyanis kell egy vagy több egyedi azonosítóval. Az Interneten ez ezt még akkor találták ki, amikor az Internet mérete még az azonosító az IP cím, amely egy 32 bites összeg.

www.linuxvilag.hu 2005. július 75 Dobbantó

a hálózati része csupa nullából áll, mindig az aktuális háló- zatra vonatkoznak. A 127.*.*.* tartomány szintén nem oszt- ható ki, ez az úgynevezett visszacsatolás (loopback), ame- lyeken keresztül a gép saját magát „érheti el”. Próbáljuk csak megpingelni bármelyik 127-el kezdõdõ IP címet, min- dig a saját gépünk fog válaszolni. A visszacsatolásnak pél- dául akkor vehetjük hasznát, ha ki szeretnénk próbálni egy hálózati alkalmazást anélkül, hogy egy második gépet is igénybe vennénk.

Alhálózatok Már említettük, hogy az egy hálózatba tartozó gépek 6. ábra hálózati címeiknek meg kell egyezniük. Egy B osztályú Az IP címosztályok címtartományt birtokló szervezet esetében azonban nincs mind a 65 ezer gép egy fizikai hálózaton. Egy egyetem esetében például külön hálózatot képezhetnek az egyes géptermek, illetve a tanszékek számítógépei, és ezek © Kiskapu Kft. Minden jog fenntartva a különálló LAN-ok hidak segítségével vannak össze- kapcsolva. Felmerül a kérdés, hogy akkor miként osszuk ki az IP címeket? Kézenfekvõ megoldás lehet az, hogy visszaadjuk a B címtartományunkat, és kérünk annyi C osztályút, ahány hálózatunk van. Ezzel azonban több problémánk adódna, például jelentõsen megnehezülne a hálózat menedzselése. A megoldás az alhálózatok (subnets) létrehozásában rejlik. (Az elnevezés sajnos megtévesztõ. Ezeknek az alhálóza- toknak semmi köze az útválasztókból álló kommunikációs alhálózathoz). Az alhálózatok kialakításához az IP címek gépek azonosítá- sára szolgáló 16 bitjébõl leválasztunk valamennyit, amelyek 7. ábra Alhálózatok egy lehetséges felosztása az egyes alhálózatokat fogják megadni. A 7. ábrán láthatunk is erre egy példát. Tegyük fel, hogy a 131.107.*.* B típusú IP Ezt a számot általában bájtonként decimálisan, ponton- címtartománnyal rendelkezünk. Itt az utolsó két bájt azono- ként elválasztva szokás megadni, például: 195.38.96.96. sítja a gépeket. Az ábrán ebbõl 8 bitet az egyes alhálózatok A valamivel több mint 4 milliárd lehetséges IP címet öt azonosítására áldozunk. Ekkor összesen 254 alhálózatunk csoportra oszthatjuk (6. ábra). Ezek közül az elsõ három lehet, és mindegyikben 254 gép helyezhetõ el. osztály (A, B és C) IP címei azonosítanak gépeket. Az egy Fontos, hogy ez a felosztás kívülrõl (egy másik hálózatból) hálózatban lévõ hosztok hálózati címeinek tehát meg kell nem látszik. Az ottani szemlélõdõ úgy látja, hogy nekünk egyezniük. A D osztályba tartozó címek a többesküldésre csak egyetlen nagy hálózatunk van. A belsõ útválasztóink (multicasting), az E-beli címek pedig késõbbi felhasználásra azonban ismerik a hálózatunk belsõ felépítését, és tudják, vannak fenntartva. melyik gép merre található. Pontosabban csak azt kell tud- Hogy egy IP cím melyik osztályba tartozik, azt az niuk, hogy az egyes alhálózatok merre találhatóak. Az úgy- elsõ pár bitje adja meg. Az A osztályú címek például nevezett alhálózati maszk segítségével ugyanis az útválasz- mindig 0-val kezdõdnek, ez azt jelenti, hogy az 1.0.0.0 tók az IP címbõl ki tudják számolni, hogy melyik alhálózat – 127.255.255.255 tartományon belül minden IP cím felé is kell terelni a csomagot. Az alhálózati maszk egy A típusú. Az A, B és C osztályok közötti különbség olyan 32 bites szám, amellyel ha össze ÉS-eljük az IP cím- az, hogy mennyi bitet használnak magának a hálózat, mel, akkor kinullázódik annak a gépet azonosító része. és mennyi bitet a hálózatban lévõ egyes gépek azono- Az elõzõ példánknál a netmask minden bizonnyal sítására. Az A osztály esetében összesen 126 hálózatot a 27 darab egyesbõl, és 8 darab nullából (255.255.255.0) lehet megkülönböztetni, viszont ezek a hálózatok akár lenne. Ha beérkezik egy csomag, amely a 131.107.12.2-es 16 millió gépbõl is állhatnak. (Persze ez azt is jelenti, címû gépnek szól, akkor az útválasztó az alhálózati maszk- hogy összesen csak 126 darab A osztályú címcsoport kal „összeéselve” megkapja, hogy a kérdéses gép melyik osztható ki). Ezzel szemben a C típusú címek már alhálózatban is található (jelen esetben a végeredmény 21 bitet használnak a hálózaton azonosítására, viszont a 131.107.12.0 lesz). csak 256 (gyakorlatban 254, lásd késõbb) darab gépet A következõ részben megismerkedünk az Internet más tartalmazhatnak. fontos, szintén a hálózati rétegbe tartozó protokolljaival, Vannak speciális célra fenntartott IP címek is, amelyek nem például az ARP-al és a RARP-al. oszthatók ki a gépek számára. Ilyen például a csupa egyes bitbõl álló (255.255.255.255), amely az adatszórást teszi le- Garzó András hetõvé a helyi hálózaton. Azok az IP címek, amelyeknek [email protected]

76 Linuxvilág Fogadó a Linuxhoz

L’Intranet Originale Azt hiszed, nem tudsz egy teljes közösségnek helyt adni nagyjából 64 k-ban? Próbálj ki egy elektronikus hirdetõtábla rendszert!

ég szép, hogy nem grafikus, de színek azért © Kiskapu Kft. Minden jog fenntartva vannak, mon ami. Miért? Ugyan már, François, hadd nosztalgiázzak egy kicsit! Amikor láttam, hogyM ennek a lapszámnak az intranetek adják a témáját, elgondolkoztam ezen az egész intranet-dolgon, ami tulajdonképpen egy belsõ hálózat, egy apró magán- univerzum, amihez, ha úgy akarjuk, csak néhányan férhetnek hozzá. Általában azt gondoljuk, hogy ilyesmit inkább vállalatok és hasonló szervezetek használnak, de például az azonos hobbi iránt érdeklõdõk számára is hasznos lehet. Amikor intranetekrõl beszélünk, mostanában inkább webes kapcsolatkezelõ rendszerekre és portálokra gondolunk. Quoi? Szöveges a képernyõ? Tény. Az intranetek sokkal korábban kialakultak, mint hogy internetezni kezdtünk, mon ami, és a kapcsolattartás bizony szöveges felületen tör- 1. ábra Telnettel csatlakozva a NexusChat kapujára ezt tént. Mon Dieu, elbeszélgetjük az idõt! Már meg is érkeztek a bejelentkezési képernyõt kapjuk a vendégeink! Üdvözöllek benneteket, mes amis, helyezzé- tek magatokat kényelembe, amíg François megtölti pohara- és számtalan további szolgáltatással. A NexusChat futtatá- tokat! A borospincébe, François! Hozd fel azt a 2003-as sához nincs szükség root jogosultságokra, sõt, telepítése Coastal Sauvignon Blanc-t. Vite! is elvégezhetõ ezek nélkül. Elsõ lépésként hozzuk létre Éppen az eredeti intranetekrõl meséltem François-nak, azt a könyvtárat, ahova telepíteni szeretnénk a csevegési mes amis. Éppen csak kiléptem a tinédzserkorból, amikor kiszolgálót. Én például létrehoztam egy nexuschat könyv- üzembe helyeztem egy ilyen intranetet a Commodore 64- tárat a saját kezdõkönyvtáramban. A következõ lépés esemen. Úgy hívták õket, hogy elektronikus hirdetõtáb- a forráscsomag kibontása: lák, röviden BBS-ek (bulletin board system). Lényegé- ben annak idején saját BBS-t írtam és tartottam fenn. tar -xzvf nchat-3.31.tar.gz Egyetlen telefonvonal tartozott hozzá, vagyis egyszerre cd nchat-3.31 csak egy felhasználó használhatta. Nem tartozott semmi- ./setup.sh lyen hálózatba, de azért intranet volt, és fennállása csúcsán 40-50-en is használták. A régi szép idõk emlé- A megválaszolandó kérdések meglehetõsen egyszerûek, kének adóztam, amikor BBS programokból állítottam és néhány kivételtõl eltekintve az alapértékeket is nyu- össze mai menünket. godtan elfogadhatjuk. Amikor a parancsfájl rákérdez, Sokan gondolhatják, hogy ma már minden grafikus, hogy hová szeretnénk telepíteni a bináris fájlokat, adjuk és senki nem dolgozik szöveges megjelenésû BBS prog- meg a korábban létrehozott könyvtár nevét. Az alap adat- ramokkal. A valóság azonban az, hogy számos BBS könyvtár (alapértéke /home/nchat/etc) ezután a telepítési van még jelenleg is üzemben, és a szükséges programok könyvtár alkönyvtára legyen. A következõ kérdés a kapuk fejlesztése jelenleg is folyik. száma. Ez határozza meg, hogy egyszerre hányan csatla- Elsõ fogásunk Bryan Burns NexusChatje. A NexusChat, kozhatnak a csevegési kiszolgálóhoz, alapértéke 15. Miután más néven NChat egy kiváló, BBS-es stílusú program, erre az utolsó kérdésre is válaszoltunk, adjuk ki a make pa- különféle felhasználói szintekkel, több szobával, magán rancsot. A fordítás mindössze néhány másodperc, melyet és csoportos csevegési lehetõséggel, e-mail küldéssel, követõen létre kell hoznunk a felhasználói adatbázist. üzem közben módosítható beállításokkal, súgóval Alapesetben 999 felhasználót adhatunk meg.

www.linuxvilag.hu 2005. július 77 Fogadó a Linuxhoz

Ennyi, az install parancs elmarad. A végsõ lépés az etc könyvtár kézi átmozgatása végsõ helyére, illetve ezt kell tennünk az nchat és az userdb bináris fájlokkal is. Mivel nálam a kiszolgáló a /home/marcel/nexuschat könyvtárból fut, a következõ parancsokat adtam ki:

mv etc /home/marcel/nexuschat mv nchat /home/marcel/nexuschat mv userdb /home/marcel/nexuschat

Lépjünk át a NexusChat könyvtárába, majd a userdb -z -s 999 paranccsal készítsük elõ a felhasználói adatbázist. Létre kell hoznunk a 000 felhasználót is, akinek a root jelszót kell adnunk. Az alapesetben a 4000-es kapun futó kiszolgáló elindítása a /elérési_út/nchat paranccsal történik. Most egy másik terminálról a 000 felhasználóval jelentkezzünk 2. ábra A bbs100 elektronikus hirdetõtábla rendszer be a csevegési kiszolgálóra: csevegõszobáinak és naptárainak fenntartásához mindössze © Kiskapu Kft. Minden jog fenntartva néhány kB memóriára van szükség telnet kiszolgáló 4000 Már említettem, hogy az alapértelmezett kapuszám A bejelentkezés után elsõ teendõnk a jelszavunk megvál- a 4000-es. Ezt és néhány további beállítást a etc/nchatrc toztatása. Ezt a /passwd titok paranccsal tehetjük meg, fájl átírásával lehet módosítani. Érdemes például ahol a titok az új jelszó. Csatlakozás után, csevegés közben a chat_name-et az általunk kívántra, például BBS-ünk számos további parancs áll rendelkezésünkre, ezek a jelszó- nevére módosítani. Bizonyos beállítások, mint például változtatás parancsához hasonlóan egy perjellel kezdõdnek. az ask_ansi = true megjegyzésbe vannak téve. A parancsok listáját a /? utasítással kérhetjük le. Ha valami Bár a legtöbb terminál gond nélkül kezeli az ANSI miatt nem látjuk, amit begépelünk, a /echo parancsot kell színeket, ha gondoljuk, akkor bejelentkezéskor kínáljuk használnunk. fel a felhasználóknak a választás lehetõségét. Ettõl a ponttól kezdve vendégek bejelentkezésére is Az etc könyvtárban további érdekes fájlokat is találunk. van mód; a vendégként való belépéshez elég lenyomni Az nc_login fájl például azt határozza meg, hogy a felhasz- az ENTERT. A vendégek a NEW paranccsal kezdeményez- nálók mit látnak bejelentkezéskor. Hasonló célt szolgál az hetik normál felhasználóként való bejegyzésüket, ám nc_ansi_login és az nc_motd (napi üzenet) is. bejelentkezni csak azt követõen tudnak, hogy a rendszer A NexusChat szórakoztató kiegészítõ, könnyû használ- gazdája jóváhagyta a bejegyzést. Ezen a ponton módjuk ni, felügyelete csak kevés tennivalóval jár. Rendkívül nyílik adataik megváltoztatására, illetve csevegésre, bár rugalmas, a felhasználók és a csevegõszobák létreho- csak egy korlátozott parancskészlettel. A rendszergazda, zása egyaránt egyszerû. Mivel alapszintû e-mail szol- vagyis az nchat programot futtató személy az állandó gáltatásokat is biztosít, azoknak a felhasználóknak is felhasználók hozzáadására és az önállóan bejegyzett hagyhatunk magánüzeneteket, akik éppen nincsenek felhasználók engedélyezésére a felhasználószerkesztõt bejelentkezve. Aki a NexusChat kipróbálása mellett használhatja, mely a /ue username paranccsal indítható dönt, feltétlenül látogasson el a program weboldalára is, el. A mûvelet a parancssorból is elvégezhetõ, mégpedig ahol megtalálja szolgáltatásainak teljes listáját (lásd az a másik korábban telepített bináris fájllal, a userdb-vel. internetes forrásokat). Ha tehát a NexusChat könyvtárából szeretnénk felhasz- Míg François újratölti a poharakat, nézzünk egy másik nálót hozzáadni, a következõ parancsot kell használnunk: BBS-es példát. Vannak programok, melyek jóval több lehe- tõséget kínálnak, mint a NexusChat, például teljes értékû ./userdb -a user -u -l 003 -h Francois -p 123 üzenetkezelést, összetettebb szobalétrehozást – külön szo- -t 3600 bákat az üzenetek továbbítására és a csevegésre –, statiszti- kák készítését, világórát, naptárat stb. Ilyen például A kapcsolók jelentése a következõ: a Walter de Jong által fejlesztett bbs100. -a – felhasználói fiókot adunk hozzá A bbs100-at forrásból kell lefordítanunk, amit viszont (létezik rendszergazdai is) a bbs100 webhelyérõl tölthetünk le (lásd a forrásokat). -u – frissítjük az adatbázist A fordítás és a telepítés menete egyszerû, bár a lépések -l – a felhasználó sorszáma 003 kissé furcsának tûnhetnek: -h – a felhasználó neve Francois -p – a hozzárendelt jelszó 123 tar -xzvf bbs100-2.1.tar.gz -t – a kapcsolatok idõtúllépési ideje 3600 másodperc cd bbs100-2.1/src ./configure —prefix=/home/bbs100 Ha kapcsolók nélkül csupán a userdb parancsot ad- make dep juk ki, akkor a rendelkezésünkre álló kapcsolók listája make jelenik meg. make install

78 Linuxvilág Fogadó a Linuxhoz

A fenti prefix kapcsolóra külön fel szeretném hívni billentyûkombinációval léphetünk be. A SysOpnak joga a figyelmet. Fontos, hogy ne az alapértelmezett /usr/local van a rendszerbeállítások módosítására, üzenettovábbító könyvtárat használjuk, mert a BBS-nek írási jogra van és csevegõszobák létrehozására, valamint szükség esetén szüksége a megadott könyvtárhoz, ami a /usr/local eseté- le tudja rendezni a kellemetlenkedõ felhasználókat is. ben erõsen kérdéses. A make install parancsot nem Bár kell egy kis idõ, mire megszokjuk õket, a BBS-ek rootként futtattam, ugyanis erre semmi szükség. mégis sokoldalúak, könnyen megszerethetõk. Nézzünk Természetesen ilyenkor ellenõriznünk kell, hogy van-e egy másik szempontot is: hat aktív felhasználóval nálam írási jogunk arra a könyvtárra, ahová a telepítést el a memóriahasználat – a bbs100 program memóriaigényét szeretnénk végezni. Nálam ez a BBS a /home/bbs100 is figyelembe véve – 66917 bájt volt. Mint láthatjátok, könyvtárba került. mes amis, a kis méretnek és az egyszerûségnek is megvan Ha túljutottunk a telepítésen, váltsunk át a telepítési a maga elõnye. könyvtárba (esetemben ez a /home/bbs100), majd kedvenc Miközben csodálattal adózunk az azonnali és a mobiltelefo- szövegszerkesztõnkben nyissuk meg az etc/param fájlt. nos üzenetküldés népszerûsége elõtt, egy pillanatra jusson Néhány beállítást azonnal írjunk is át, ilyen például a BBS eszünkbe, hogy milyen régre nyúlnak ezeknek a szolgálta- neve, a csatlakozások fogadására használt kapu száma és tásoknak a gyökerei. Példaként egy réges-régi szolgáltatást a telepítési könyvtár: szeretnék felidézni: annak idején sokat játszottunk a write és a mesg nevû paranccsal. A mesg segítségével lehet bekap- bbs_name A pince csolni az üzenetkezelõ rendszert: © Kiskapu Kft. Minden jog fenntartva port_number 12345 basedir /home/bbs100 mesg y

Mielõtt továbblépnénk, röviden ismerkedjünk meg az etc Ezzel gyakorlatilag engedélyeztük másoknak, hogy üzene- könyvtárban található egyéb fájlokkal. Találunk köztük üd- teket küldjenek nekünk. Most jelentkezzünk be a másik vözlõképernyõt, napi üzenetet, súgófájlokat, rendszersza- terminálon is, és szintén engedélyezzük az üzenetküldést. bályokat, amelyek az elsõ bejelentkezésnél jelennek meg, Tegyük fel, hogy marcel névvel bejelentkeztem az egyik valamint számos további érdekességet. terminálon, míg François egy másikon dolgozik. Ha cseveg- Már majdnem végeztünk! Mivel Francois lett a rend- ni akar velem, a következõ parancsot kell kiadnia: szergazda, valamilyen jelszót kell adnunk neki. A BBS telepítési könyvtárában adjuk ki a bin/mkpasswd write marcel /dev/pts/16 rendszergazda_neve parancsot; ezt követõen meg kell adnunk a kívánt jelszót: Ezután begépelheti, amit közölni akar velem. A kapcsolat lezárására a CTRL-D billentyûkombináció szolgál. Nálam bin/mkpasswd Francois a következõ szöveg jelent meg: bbs100 2.1 mkpasswd by Walter de Jong (C) 2004 [marcel@francois marcel]$ Enter password: Message from [email protected] on Enter it again (for verification): pts/14 at 19:30 ... OIGxutxGpuTowzw2AgMXZRkCNk Helló, fõnök! Eldöntötted már, hogy ma este milyen bort Az utolsó sor tartalmazza a rendszergazda titkosított jelsza- szolgáljunk fel? vát. Ez közölnünk kell a BBS-sel, tehát nyissuk meg az etc/su_passwd fájlt, írjuk be a rendszergazda nevét, majd Ahogy a mondás tartja: Plus ça change, plus c’est egy vesszõvel elválasztva a fenti titkosított jelszót: la meme chose. Úgy tûnik, mes amis, ismét ránk esteledett. Lassan fejezzétek Francois:OIGxutxGpuTowzw2AgMXZRkCNk be a beszélgetést. Persze csak kényelmesen, ebben a világban oly könnyû és jó hátradõlni és kapkodás nélkül kortyolgatni A BBS elindítása a /home/bbs100/bin/bbs start paranccsal egy pohárka bort. Azt mondom tehát, igyunk egymás egész- történik. Ha már fut a démon, telnet-tel, a megadott kapun ségére, mes amis! A votre santé! Bon appétit! keresztül csatlakozhatunk hozzá: Linux Journal 2005. június, 134. szám telnet kiszolgáló 12345 A cikkhez tartozó források elérhetõsége: A rendszergazda (superuser, root, ha úgy tetszik) BBS-es  www.linuxjournal.com/article/8198 megfelelõjére, vagyis a SysOp-ra (system operator, rend- szeroperátor) a $ gyorsbillentyûvel lehet átváltani. A gyors- Marcel Gagné ([email protected]) billentyût csak azok a felhasználók érhetik el, akiknek a ne- Mississaguában, Ontario államban él. ve szerepel a etc/su_passwd fájlban, egyébként egy csinos, Õ a szerzõje a Kiskapu kiadásában tavaly szep- a Föld különféle pontjain érvényes idõt mutató naptár jele- temberben megjelent Linux-rendszerfelügyelet nik meg. Miután átváltottunk a SysOpra, jó néhány további (ISBN 96-9301-40) címû könyvnek. parancsot is el tudunk érni. A SysOP menübe a CTRL+S

www.linuxvilag.hu 2005. július 79 Töprengõ

Betörések, betörési kísérletek II. avagy ki nevet a végén? A sorozat elõzõ tagjából megtudhattuk, pontosan milyen következményekkel jár az, ha valaki egy számítógépét vagy számítástechnikai rendszerét megpróbál feltörni. Most azokról a (jogi)eszközökrõl lesz szó, melyekkel egy ilyen csibészt (ckrackert) nyakon lehet csípni. © Kiskapu Kft. Minden jog fenntartva

indenek elõtt nem árt definiálni, hogy tallózta a könyvtárainkat.2 Annak nincs nyoma, hogy bár- mit is ért a jog számítástechnikai rendszer miféle változtatást eszközölt volna, vagy adatokat másolt alatt: volna le. Ilyenkor az eljárás, (azt követõen, hogy a rendsze- M rünket újra biztonságossá tettük például másik típusú tûz- „Számítástechnikai rendszer minden olyan berendezés, amely fal telepítése, trójai keresõ program lefuttatása... stb.) hogy közvetlen emberi beavatkozás nélkül (automatikusan) végez a korábban már begyûjtött naplóbejegyzéseket, illetve adatfeldolgozást, azaz adatok bevitelét, kezelését, tárolását, a visszakereshetõ ip címet lementjük (lehetõleg egy olyan továbbítását látja el. A számítástechnikai rendszerek körébe gépre, ami nincs hálózatra kötve, hogy esetleg a visszatérõ tartoznak a számítástechnikai adatfeldolgozásra épülõ, me- garázda ne leljen rá). móriával rendelkezõ olyan egységek is, amelyek megjelené- Az e módon kigyûjtött információkat – egy ismeretlen tet- sükben nem hagyományos számítógépet jelentenek. tes elleni feljelentés keretében – eljuttathatjuk az illetékes A számítástechnikai rendszer fogalma azonban nemcsak az ügyészhez vagy nyomozóhatósághoz. egyes berendezésekre terjed ki, hanem felöleli az azok összekap- csolása révén létrejött hálózatot, valamint az adattovábbítást, Középszint a kapcsolatfelvételt biztosító mûszaki berendezéseket is.” 1 A betörõ jogosulatlanul belépett, jelenleg is bent tartózko- dik, és éppen a szupertitkos feliratú mappánk tartalmát pró- Ennek értelmében, ha mondjuk pár év múlva valaki bálja meg letölteni. A probléma leggyorsabb megoldásaként betörve az intelligens hûtõszekrényembe rendel nekem válasszuk le a gépet a netrõl. Ez esetben az elkövetõ észre 15 karton tejet, pontosan ugyanezt a bûncselekményt fogja fogja venni, hogy jelenlétére felfigyeltek, és talán soha töb- elkövetni – feltéve persze, hogy addig nem változtatják bé nem próbálkozik meg a rendszerünkkel. meg a tényállás elemeket. Ha a szupertitkos felirat azonban csak mindenféle kacatot rejtett, melyeket épp csalinak helyeztünk el ezen a gépen, A betörés felfedezése akkor a helyzet persze merõben más. Amennyiben a ren- Függetlenül attól, hogy az elkövetõ a rendszerünkbe belép- delkezésünkre álló adatok alapján megtudtuk az elkövetõ ve milyen mértékû kárt okoz, azzal, hogy a rendszert feltör- ip címét, megkereshetjük a cím szolgáltatóját, és megkér- te, már megvalósította a számítástechnikai rendszer elleni dezhetjük, az elõfizetõ nevét. Ezzel akár a késõbbiekben bûncselekmény tényállásának valamennyi elemét. Feltétel eljáró nyomozó hatóság munkáját is segíthetjük, hiszen persze, hogy a rendszerünknek legyen legalább valamilyen ebben az esetben már nem ismeretlen tettes ellen kell minimális szintû védelme (hardver- vagy szoftver-alapú nyomozást folytatniuk. tûzfal), hogy azt jogosulatlan belépéssel, kijátszással vagy Fontos tudni, hogy a párbajok ideje a XIX. századdal lejárt, más módon meg lehessen sérteni. nem megoldás az, ha a betörõ kilétének felderítése érdeké- ben mi is megpróbáljuk feltörni a minket ostromló rendsze- Alapszint rét, hiszen akkor ugyanúgy jogosulatlan belépésre teszünk Rendszergazdaként belépve azt tapasztaljuk, hogy valaki kísérletet vagy adott esetben, ha az akció célravezetõ, mi az éj vagy a bitek leple alatt bejutott a rendszerünkbe, és is elkövetõvé válunk. Figyelemmel arra, hogy a Büntetõ

1 Complex CDJogtár Btk. 300/F§ Kommentár részlet. 2 Linuxos rendszerben ennek is marad nyoma, windows használata esetén pedig tételezzük fel, hogy így tett.

80 Linuxvilág Töprengõ

törvénykönyv nem nevesíti a „hirtelen felindulásból elkö- A nyomozó szerv a Büntetõ eljárásról szóló törvény szerint vetett számítástechnikai rendszer védelmét biztosító techni- köteles már a feljelentés vételekor, illetõleg a nyomozó kai rendszer kijátszását,” mint tényállást – így e bûncselek- szerv tagjának észlelésekor – ha a késedelem veszéllyel mény elkövetésénél az erõs felindulás kevéssé jár, a jegyzõkönyv felvétele elõtt is – minden olyan beszámítható. Jelen feltételek mellett nem értel- intézkedést megtenni, amely a nyomozás ered- mezhetõ jogos védelemként az sem, ha ményességét, gyors teljesítését elõsegíti. a büszkeségében sértett rendszergazda Például amennyiben a betörés észlelé- bosszút áll. sekor és bejelentésekor az elkövetõ A nyomozóhatóságnak azonban a rendszerben tartózkodik, és – szemben a haragos rendszergaz- tettenérhetõ, helye lehet azonnali dával – lehetõsége van rá, hogy házkutatásnak. Indokolt lehet külön engedély keretében titkos ezen „gyorsított eljárás” azért is, adatszerzést végezzen, ennek mert ennek késõbbi elvégzése érdekében meghatározott számí- az eljárás eredményességét tástechnikai rendszer védelmét károsan befolyásolhatja. biztosító technikai intézkedése- ket kijátsszon. Lefoglalás A lefoglalás jogászi nyelven: © Kiskapu Kft. Minden jog fenntartva „Hajjaj” szint a bizonyítás érdekében a dolog Az elkövetõ belépve a gépünk- birtokának elvonása a birtokos re – azon kívül, hogy garázdál- rendelkezése alól. Külön érde- kodott az adataink között, – kes részlet, hogy a lefoglalás megnyitott pár portot, melyeken kapcsán a törvény már külön át a mi gépünk ip címét használ- nevesíti a számítástechnikai va ostromol már hálózatokat. rendszernek vagy ilyen rendszer Ez az eset mind közül a legsúlyo- útján rögzített adatokat tartalmazó sabb, itt mindenképpen javasolt az adathordozónak a lefoglalását. internetszolgáltatók (a kiderített IP- Elrendelésére a bíróság, az ügyész cím szolgáltatója csakúgy, mint a saját és a nyomozóhatóság jogosult, szolgáltatónk) valamint a rendõrség többek között akkor, ha az adott tárgy értesítése. bizonyítási eszköz. Itt különösen nagy gondot kell fordítanunk A lefoglalás menete a következõ: elõször is arra, hogy a betörés körülményeit a lehetõ leg- a rendszer vagy adathordozó birtokosát illetve precízebben dokumentáljuk (Adott esetben tanúk az adat kezelõjét fel kell szólítani, hogy a keresett dolgot jelenlétében készített jegyzõkönyvekkel, melyeket adja át, illetõleg a számítástechnikai rendszer útján rögzí- a betöréssel kapcsolatosan tudtunkra jutott információ- tett adatot tegye hozzáférhetõvé. (Tehát a nyomozóható- hoz mellékelünk.) ság az internetszolgáltatót is kötelezheti valamennyi általa ismert információ kiadására). Amennyiben ezt önként Miért van mindez? nem teszi meg, rendbírsággal (általában 1000-200.000 fo- 1. Értesíteni kell a betörõ ip címét adó szolgáltatót rint közötti összeg) sújtható, kivéve a terheltet és azt, aki a betörés körülményeirõl is, hogy adott esetben a tanúvallomást megtagadhatja, illetõleg aki tanúként nem saját hálózatán belül megpróbálhassa visszakeresni hallgatható ki. (Tehát ha az elkövetõ takarítónõjét találják az elkövetõt. otthon a házkutatásra érkezõ rendõrök, aki makacs mó- don nem akarja átadni a gépét, rá kiszabhatnak rendbír- 2. Értesíteni kell a saját szolgáltatónkat, illetve azokat ságot, de ha maga az cracker van jelen, akkor õ, mint a szolgáltatókat akik felé a gépünkrõl kísérletet indítot- terheltet nem lehet megbírságolni). Fontos azonban tudni, tak, hogy felhívhassák ügyfeleik figyelmét a veszélyre. hogy az átadás megtagadása egyik esetben sem lesz akadálya annak, hogy a keresett dolgot, illetõleg a számí- 3. Értesíteni kell a rendõrséget, mert jó eséllyel elõfordul- tástechnikai rendszer útján rögzített adatot házkutatással, hat, hogy a tõlünk indított kísérletet valaki más bejelenti illetve motozással megszerezzék. az ügyészségen vagy a nyomozóhatóságnál, elkövetõ- A nyomozást általában annak megindulását követõ 2 hóna- ként a mi ip címünket jelölve meg. pon belül befejezik. Ez alatt az idõ alatt vagy lehull a lepel vagy a tettes örökre ismeretlen marad. A feljelentés sorsa A feljelentést elsõdlegesen nyilvántartásba veszik. Megvizs- Dr. Dudás Ágnes ([email protected]) gálják, hogy a történeti tényállás bûncselekmény gyanújának ügyvédjelölt, az FSF egyik aktivistája. 2004-ben megállapítására alkalmas-e, a büntetõeljárás megindításának végzett az ELTE Jogtudományi Karán. Szakdol- van-e akadálya, szükséges-e halaszthatatlan nyomozási cse- gozatát a szoftverek szerzõi jogi védelmérõl lekmény vagy más intézkedés foganatosítása, a bûncselek- írta, a 2003-as évet pedig e terület kutatásával mény nyomozására van-e hatásköre, illetékessége. a berlini Humboldt Egyetemen töltötte.

www.linuxvilag.hu 2005. július 81