Linux+_02_2005

86

Transcript of Linux+_02_2005

Page 1: Linux+_02_2005
Page 2: Linux+_02_2005
Page 3: Linux+_02_2005
Page 4: Linux+_02_2005
Page 5: Linux+_02_2005
Page 6: Linux+_02_2005

2 luty 2005

Spis treści

3www.lpmagazine.org

Spis treści

Radość z programowania!

Krzysztof KrawczykRedaktor Naczelny Linux+

Tworzenie oprogra-mowania traktu-

ję jako hobby – nie zajmuję się tym zawo-dowo. Moją pierwsząpasją było rozwijanieMUD-a (Multi User Dungeon) Arkadia, czyli tekstowej gry siecio-

wej. Polegało to na tworzeniu świata i je-go mieszkańców, przygotowywaniu gil-dii i klubów oraz późniejszym opiekowa-niu się gotowym kodem (poprawianie błę-dów, rozszerzanie funkcjonalności). Było to fascynujące zajęcie, pokazujące, że moż-na czerpać ogromną radość z programo-wania. Aktualnie podobną sytuację mam w przypadku tworzenia narzędzi dla swo-jego Zaurusa. Fascynujące jest to, jaką sa-tysfakcję można osiągnąć z przygotowa-nia prostej aplikacji dla palmtopa – jej nie-wielki rozmiar często budzi mój podziw. Jestem pewny, że podobną przyjemność może czerpać twórca modułu jądra, jak również deweloper tworzący mechanizmy

importu dokumentów do OpenOffice.org. Warto spróbować programowania samo-dzielnie, nawet gdyby miała to być bardzo prosta aplikacja typu program do zmiany rozdzielczości ekranu.

W tym numerze Linux+ skupiamy się właśnie na fascynującym temacie tworze-nia własnego oprogramowania, przez nie-których uważanym za trudny i dostępny wyłącznie dla specjalistów. Okazuje się, że wystarczy poznać pewne podstawy i mieć dobry pomysł, aby zacząć własny projekt ciekawego narzędzia. Zachęcamy do pu-blikowania swoich dzieł, oczywiście na li-cencji typu Open Source.

Na płycie DVD zamieściliśmy dystry-bucję Linuksa ściśle powiązaną z tema-tem – Gentoo 2004.3. Gdyby ktoś jeszcze nie wiedział, tradycyjnie kompiluje się ją od podstaw z pakietów źródłowych. My zrobi-liśmy krok w stronę bardziej niecierpliwych użytkowników, pozwalając im zainstalować system również z pakietów binarnych.

W bieżącym numerze :

4

14

16

18

19

Opis zawartości płyt CD/DVDPiotr Truszkowski, Michał Niwicki

Jądro LinuxTomasz Torcz

DebianBartosz Feński, Tomasz Napierała

MandrakelinuxDaniel Koć

AuroxMichał Marchocki

Aktualności:

W bieżącym numerze :

12 NewsyWitold Kieraś

21 PLDPiotr Skwarna

20 GentooWitold Kieraś

new

sy

gent

oo

DV

D B

Miesięcznik Linux+ (12 numerów w roku) jest wydawany przez Software-Wydawnictwo Sp. z o. o.

Redaktor naczelny: Krzysztof Krawczyk, [email protected]: Piotr Truszkowski, Marek Bettman, Michał NiwickiKierownik produkcji: Marta Kurpiewska, [email protected] CD/DVD: Krzysztof Krawczyk, Piotr TruszkowskiDział reklamy: Łukasz Łukaszewicz, [email protected], tel.: (22) 860 18 18 Prenumerata: Marzena Dmowska, [email protected], tel.: (22) 860 17 67Projekt graficzny okładki: Agnieszka Marchocka Projekt graficzny pisma: Marcin Ziółkowski, [email protected]ład: Marcin Ziółkowski, [email protected]

Adres korespondencyjny: Software-Wydawnictwo Sp. z o. o., 00-190 Warszawa, ul. Lewartowskiego 6e-mail: [email protected], tel. (22) 860 18 18

Redakcja dokłada wszelkich starań, aby publiko-wane w piśmie i na towarzyszących mu nośnikach informacje i programy były poprawne, jednakże nie bierze odpowiedzialności za efekty ich wykorzystania. Redakcja nie udziela pomocy technicznej dotyczącej zamieszczanego oprogramowania. Płyty uszkodzone podczas wysyłki wymienia dział prenumeraty.

Wszystkie znaki firmowe zawarte w piśmie są własnością odpowiednich firm i zostałyużyte wyłącznie w celach informacyjnych.

Druk: Stella Maris

Redakcja używa systemu automatycznego składu

Płyty dołączone do magazynu przetestowano programem AntiVirenKit firmy G DATA Software Sp. z o.o.

Redakcja zabezpiecza swoje dane korzystając ze sprzętu firmy Tandberg Data udostępnionego przez Veracomp SA.

Sprzedaż aktualnych lub archiwalnych numerów pisma po innej cenie niż wydrukowana na okład-ce – bez zgody wydawcy – jest działaniem na jego szkodę i skutkuje odpowiedzialnością sądową.

Linux ® jest zarejestrowanym znakiem towarowym należącym do Linusa Torvaldsa.

Page 7: Linux+_02_2005

2 luty 2005

Spis treści

3www.lpmagazine.org

Spis treści

Oprogramowanie

40 Nicotine – klient sieci SoulSeekWitold Kieraś

Nicotine to linuksowy klient sieci P2P Soul-Seek, o możliwościach zbliżonych do popu-larnego Kazaa czy Emule.

42 Krusader – menedżer plikówWitold Kieraś

Krusader, graficzny menedżer plików w stylu windowsowego Total Comman-dera, jest jednym z najwyżej ocenia-nych programów dla KDE. Oprócz typo-wych funkcji, pomaga także w monto-waniu dysków, wyszukiwaniu konkre-tnych plików oraz łączeniu się z serwe-rami ftp.

44 SoX – konwerter formatów dźwiękowychPiotr Machej

SoX (Sound eXchange) to program prze-znaczony do konwersji formatów dźwięko-wych, odtwarzania i nagrywania muzyki. Z jego pomocą można również dodać roz-maite efekty do ścieżki dźwiękowej.

46 GFSGL – menedżer uruchamiania gierPiotr Machej

Dzięki GFSGL możemy zainstalować w systemie nie tylko gry przeznaczone dla Linuksa, ale również te z Windows, które działają pod Cedegą, WineX lub Wine. Możemy też wskazać, który program ma być wykorzystywany do emulacji Win-dows, a który Commodore C64 czy DOS.

48 Munin – generator zestawień i statystykPiotr Machej

Munin to program napisany w Perlu, zbie-rający różne informacje o wykorzysta-niu zasobów systemu i wyświetlający je w czytelnej formie (za pośrednictwem strony WWW), przy użyciu RRDTool.

50 Dominions II – strategiczna gra fantasyMichał Niwicki

Dominions II to strategiczna gra w klima-cie fantasy o świetnej oprawie graficznej i nastrojowej muzyce oraz – co najważniej-sze – wysokiej grywalności.

Dla początkujących

52 GRUB – program uruchomieniowyPiotr Machej

Obecnie większość popularnych pro-gramów uruchomieniowych pozwala na wybór jednego z systemów zainsta-lowanych na dysku. Jednym z najpopu-larniejszych jest GRUB (GRand Unified Bootloader), a z artykułu dowiecie się, jak go zainstalować i poprawnie skonfi-gurować.

60 Sztuczki i kruczkiGrzegorz Niewęgłowski

Podczas pracy z Linuksem mogą przydać się różnego rodzaju sztuczki i kruczki. Ich znajomość również świadczy o tym, czy użytkownik jest początkujący, czy zaawansowany.

Sprzęt

62 Kamery internetowe pod LinuksemPiotr Wolny

Kamery internetowe mogą być wyko-rzystywane do spotkań on-line, nagry-wania krótkich filmów czy robienia fotografii. Mogą być także użyte do moni-toringu pomieszczeń. Z artykułu dowie-cie się, jak zainstalować i skonfigurować większość popularnych urządzeń tego typu.

Dla programistów

70 Piszemy program do zmiany rozdzielczości ekranu przy pomocy rozszerzenia RandRMarek Sawerwain

W tym miesiącu stworzymy aplikację służą-cą do zmiany rozdzielczości oraz wartości odświeżania ekranu. Program napiszemy wykorzystując bibliotekę GTK+. Do zapro-jektowania graficznego interfejsu użytkow-nika wykorzystamy program Glade.

Testy

76 IBM Thinkpad T41Michał Niwicki

77 Novell Linux Desktop 9Michał Niwicki

Temat miesiąca:

Narzędzia deweloperskie

22 KDevelop – narzędzie do tworzenia aplikacji z interfejsem graficznymMarek Sawerwain

Tworzenie aplikacji z interfejsem graficz-nym nie jest trudne. Marek pokaże Wam, jak wykorzystać do tego celu bibliotekę QT oraz narzędzie KDevelop.

28 Scratchbox – narzędzie do kompilacji skrośnejVeli Mankinen

Ideą kompilacji skrośnej jest używanie szybkiej maszyny do kompilacji opro-gramowania dla wolniejszego procesora o innej architekturze. Veli Mankinen, jeden z autorów Scratchboksa, przedstawia sposo-by użycia tego oprogramowania.

Wywiad

32 Wywiad z Carlosem Velez Baez, szefem projektu VidalinuxKrzysztof Krawczyk

W tym miesiącu rozmawiamy z Carlosem Velez Baez, szefem zespołu deweloperów Vidalinux, dynamicznie rozwijającej się dys-trybucji, opartej na Gentoo Linux. Dowiemy się miedzy innymi, jakie nowości znajdą się w planowanej wersji 1.1 systemu.

Rozwiązania mobilne

34 MultiSync – synchronizacja urządzenia przenośnego z komputerem biurkowymKrzysztof Wolski

Multisync jest aplikacją, za pomocą której zsynchronizujemy dane aplikacji typu PIM, zapisane na komputerze, z danymi odpo-wiednich programów w naszych telefonach komórkowych czy palmtopach.

Narzędzia deweloperskie

Page 8: Linux+_02_2005

CD Aaktualnościopis CD

4 luty 2005

Amarok 1.2 – betaPopularny, wielofunkcyjny program do odtwarzania plików multimedialnych. Posiada funkcję katalogowania zbiorów oraz jest wyposażony w liczne efekty dźwiękowe, takie jak miksowanie w czasie rzeczywistym ścieżek dźwiękowych, dodawanie pogłosu, echa czy symulowanie dźwięku przestrzennego.

Krusader 1.50Graficzny menedżer plików w stylu Nortona Commandera dla środowiska KDE. Potrafi przypisać typy rozszerzeń plików do odpowiednich programów oraz posiada opcję dynamicznego montowania urządzeń zdefiniowanych w pliku /etc/fstab.

Dominions IIZnakomita strategia, odbiegająca nieco od innych gier tego typu. W grze może brać udział nawet siedemnastu graczy. Imponuje grafiką i średniowieczną muzyką. Na płycie jest zamieszczona wersja demonstracyjna gry oraz angielskojęzyczne podręczniki.

GParted 0.0.7Zaawansowany program do edycji partycji dysku twardego. W porównaniu do poprzedniej wersji poprawiono obsługę systemów plików ext2, ext3 oraz ReiserFS, oraz dodano edycję partycji NTFS.

GRUB 0.94Nowa wersja jednego z najpopularniejszych programów uruchomieniowych. Odpowiedzialny jest za załadowanie do pamięci systemu operacyjnego wskazanego przez użytkownika. Dodatkowo, posiada szereg rozszerzeń, takich jak ustawianie wyglądu graficznego interfejsu, zabezpieczenie hasłem opcji rozruchowych i wiele innych.

Skype 0.92.12Popularny komunikator internetowy, pozwalający na prowadzenie rozmów głosowych w czasie rzeczywistym. Umożliwia również (po dokonaniu opłaty) dzwonienie na telefony stacjonarne i komórkowe.

Monkey-Bubble 0.3.2Logiczno-zręcznościowa gra oparta na FrozenBubble. Polega na zdobywaniu punktów poprzez zbijanie kolorowych kul.

Damn Small Linux 0.9.0.1

Minimaliści ucieszą się zapewne z umieszczonego na płycie Damn

Small Linuksa. To obecnie jedna z naj-mniejszych i zarazem najszybszych dys-trybucji Linuksa. Mimo swoich niewiel-kich rozmiarów, w systemie znajdzie-my wiele użytecznych aplikacji – pa-kiet biurowy Siag Office, w skład któ-rego wchodzi prosty edytor tekstu i ar-kusz kalkulacyjny, przeglądarka plików pdf, program pocztowy Sylpheed oraz przeglądarka stron internetowych Fi-refox. Domyślnym menedżerem okien w Damn Small Linuksie jest Fluxbox, natomiast sam system pracuje pod kon-trolą jądra 2.2.41.

Damn Small Linux to dystrybu-cja typu Live – aby ją uruchomić, wy-starczy włożyć płytę CD do czytnika CD-ROM i uruchomić ponownie kom-puter. Po kilkudziesięciu sekundach

możemy cieszyć się w pełni sprawnym systemem.

Jako ciekawostkę można dodać, że Damn Small Linuksa możemy zainsta-lować i uruchamiać z tzw. flashdysku. Cały system, wraz ze środowiskiem graficznym, zajmuje niecałe 50 mega-bajtów.http://www.damnsmalllinux.org/

Naprawdę mały Linux

Firefox 1.0 i Thunderbird 1.0

Surfowanie po stronach interneto-wych oraz poczta elektroniczna

są najpopularniejszymi usługami do-stępnymi w Sieci. Ostatnio pojawiły się dwie nowe wersje programów, któ-re umożliwiają korzystanie z tych usług – Mozilla Firefox 1.0 oraz Mozilla Thun-derbird 1.0.

Firefox to popularna przeglądar-ka, zawierająca rozwiązania ułatwia-jące poruszanie się między strona-mi WWW. Pozwala ona na panelowe przeglądanie stron internetowych, blo-kuje niechciane, wyskakujące okienka i zawiera rozbudowany system zakła-dek (ang. bookmarks). Dodatkowym atutem Firefoksa jest automatyczna in-stalacja wtyczek – przeglądarka samo-dzielnie potrafi zlokalizować i zain-stalować obsługę aplikacji napisanych

w Javie i prezentacji przygotowanych we Flashu.

Thunderbird jest programem pocz-towym obsługującym wszystkie popu-larne protokoły: SMTP, POP3, IMAP oraz NNTP. Pozwala w łatwy spo-sób wyszukiwać i filtrować przycho-dzące wiadomości. Zawiera przyjazny filtr antyspamowy, książkę adreso-wą oraz może obsługiwać wiele toż-samości internetowych w obrębie tego samego profilu. Dodatkowym atutem Thunderbirda jest możliwość spraw-dzania pisowni w trakcie pisania li-stów.

http://www.mozilla.org/http://www.firefox.pl/

Firefox 1.0

Thunderbird – zaawansowany klient pocztowy

Page 9: Linux+_02_2005
Page 10: Linux+_02_2005

opis CD

6

CD B / DVD B

luty 2005

Games Knoppix to nie lada gratka dla amatorów gier komputerowych! Strategie, przygodówki, gry planszo-

we i zręcznościowe – grubo ponad sto programów rozrywkowych pojawiło się w specjalnej wersji systemu, stwo-rzonej z myślą o graczach.

Jak zainstalować?Nie instalować! Games Knoppix jest dystrybucją Linuksa uruchamianą bez-pośrednio z płyty CD. System ten nie zapisuje niczego na dysku, więc nie ma obawy, że w jakikolwiek sposób uszkodzi nam zapisane dane. Wystarczy zatem włożenie nośnika do napędu CD-ROM i ponowne uru-chomienie komputera. Po chwili (czas zależny jest od szybkości naszego komputera) będziemy mieli w pełni sprawną, gotową do użytku maszy-nę do grania. Wiele gier zamieszczo-nych w Games Knoppix 3.7 wymaga karty z akceleratorem 3D, więc pod-czas uruchamiania systemu zostanie-my zapytani, czy jej obsługa ma zostać włączona.

Aby skorzystać z Games Knoppix, po uruchomieniu komputera z płytki DVD B, wpisz knoppix i wciśnij [Enter ].

Co na płycie?Przede wszystkim gry. Dodatkowo, do dystrybucji dołączono kilkana-ście użytkowych programów umoż-liwiających pracę w sieci oraz konfi-gurację komputera. Wszyscy ci, którzy posiadają stare gry pracujące jesz-cze pod kontrolą systemu operacyj-nego DOS, znajdą w dystrybucji emu-lator DosBox, umożliwiający ich uru-chomienie.

Standardowo, Games Knoppix jesturuchamiany z jądrem 2.4.27, ale opcjonalnie można zdecydować się na nowszą, mniej stabilną wersję 2.6.7. Domyślnym środowiskiem graficznym jest KDE w wersji 3.2.3.

W co warto pograć?W dystrybucji znajdziemy wiele atrak-cyjnych, bardziej rozbudowanych gier, które wymagają większej ilości pamię-ci operacyjnej, szybkiego procesora i mocnej karty graficznej. Wśród nich warto wymienić:

Games Knoppix 3.7

Games Knoppix – każdy lubi sobie pograć

• Boson – strategiczna gra wojen-na, która polega na rozbudowywa-niu swojej armii i niszczeniu wojsk przeciwnika;

• FooBillard – trójwymiarowy symula-tor stołu bilardowego; można wybrać kilka najpopularniejszych rodzajów bilarda oraz przeprowadzać turnieje za pośrednictwem Internetu;

• TuxRacer – zimowe zawody spor-towe, polegające na jak najszyb-szym osiągnięciu linii mety; głów-nym bohaterem gry jest... pingwin ślizgający się na brzuchu;

• Globulation2 – atrakcyjna strate-gia czasu rzeczywistego; polega na rozwijaniu cywilizacji poprzez przydzielanie cudacznym stwor-kom mikro-zadań.

Zabijacze czasu i hipnotyzeryZ grami jest jak z jedzeniem – możemy wybrać się do restauracji na eleganc-ką kolację, ale możemy również się-gnąć po małe co nieco. Takie właśnie małe gry znajdziemy również w Games Knoppix:

• Rafkill – zręcznościowa gra przy-pominająca stare gry z automatów; polega na strzelaniu do wszystkie-go co się rusza i nie wymaga od gracza niczego poza wykazaniem się szczególnym refleksem;

• Ziemniaczany facet – edukacyjna gra dla najmłodszych, polegająca na ubieraniu kartofla;

• Frozen Bubble – jedna z popular-niejszych gier na Linuksa; polega na rozbijaniu kolorowych kul; możliwe jest także rywalizowanie w dwie osoby;

• LBreakout2 – klon gry Arkano-did, polegający na rozbijaniu muru odbijaną przez gracza kulą; moż-liwe jest prowadzenie rozgrywek przez Internet;

• Air Traffic Controller – program pozwalający wczuć się w kontro-lera ruchu lotniczego; sterujemy samolotami i nadajemy im odpo-wiedni kurs – tak, aby na siebie nie powpadały.

PodsumowanieKażdy lubi sobie czasem pograć. GamesKonoppix będzie niewątpliwie stano-wić jedno z podstawowych źródeł roz-rywki podczas długich zimowych wie-czorów.

http://www.knoppix.net/http://knoppix.7thguard.net/

Page 11: Linux+_02_2005
Page 12: Linux+_02_2005

opis DVD

8

DVD A

luty 2005

Gentoo Linux 2004.3 DVD

G entoo Linux to stosunkowo młoda dystrybucja Linuk-sa, która szturmem zdoby-wa coraz to nowych zwo-

lenników. W zamierzeniach autorów ma ona dać użytkownikowi całkowitą wol-ność. System budujemy sami, tworząc go takim, jakim chcemy, aby był. Możli-wość optymalizacji oznacza wykorzysta-nie pakietów źródłowych. Pomogą nam w tym narzędzia stworzone do tego celu.

Przygotowana przez naszą redakcję wersja Gentoo Linux nie wymaga dostę-pu do Internetu. Specjalnie wydzielone drzewo portów, ze starannie dobranym oprogramowaniem, umożliwia bardzo prostą i szybką instalację z zachowa-niem wszystkich niezbędnych zależności. Z uwagi na to, że bieżący numer Linux+ jest poświęcony szeroko pojętemu pro-gramowaniu i narzędziom programi-stycznym, w Gentoo Linux 2004.3 Linux+DVD Edition znajdziecie ogromną ilość wszelkiego rodzaju oprogramowania dla programistów (ponad 1000 pakietów!):

• Anjuta,• KDevelop,• QtDesigner,• Intel C++ Compiler,• GCC,• Eclipse,• Mono,• Perl,• Python,• Tcl/Tk,• CrystalSpace,• Irrlicht.

Wszystkie te narzędzia są dostępne z róż-nego rodzaju dodatkami. Ponieważ nie samym programowaniem człowiek żyje i czasem chciałby poświęcić się rozrywce, nie zapomnieliśmy o grach. Pogracie m. in. w następujące tytuły:

• Tuxracer,• Frozen-Bubble,• Pingus,• Neverball,• Falconseye,• Planeshift;• GL-117,• Simutrans,• Foobilard,• Torcs,• Scorched3D.

Gentoo Linux 2004.3 Linux+DVD Edi-tion umożliwia skorzystanie z jądra 2.6.9 (dostępne jest również 2.4.26) i popular-nych środowisk graficznych KDE 3.3.1 i GNOME 2.8. Jeśli nie dysponuje-cie sprzętem będącym w stanie spro-stać wymaganiom tych środowisk gra-ficznych, w systemie Portage znajdzie-cie również lekkie środowiska, takie jak XFCE4 czy Fluxbox.

Instalacja Gentoo w 14 krokachZakładamy, że wykorzystamy pakiety źródłowe i na instalację Gentoo poświę-cimy cały dysk twardy:

– uruchamiamy komputer z płytki DVD;– uruchamiamy program cfdisk i two-

rzymy tablicę partycji;– za pomocą komend mkswap (mkswap

/dev/hda1) oraz mkfs.ext3 (mkfs.ext3 /dev/hda2) tworzymy odpowied-nio przestrzeń wymiany oraz system plików na partycji root (co najmniej 10 GB);

– montujemy utworzoną partycję do katalogu /mnt/gentoo (mount /dev/hda2 /mnt/gentoo);

– kopiujemy stage na podmontowany dysk (cp -vg /mnt/cdrom/stages/stage1-x86-2004.3.tar.bz2 /mnt/

gentoo) i rozpakowujemy (cd /mnt/gentoo, tar -xvjpf stage1-x86-2004.3.tar.bz2);

– kopiujemy drzewo Portage (cp -vg /mnt/cdrom/portage/portage-

L+.tar.bz2 /mnt/gentoo/usr) i rozpa-kowujemy (cd /mnt/gentoo/usr, tar -xvjf portage-L+.tar.bz2);

– tworzymy katalog distfiles (mkdir /mnt/gentoo/usr/portage/distfiles) i kopiujemy do niego pakiety z płyty DVD (cp -vg /mnt/cdrom/distfiles/full/* /mnt/gentoo/usr/portage/

distfiles/);– montujemy system plików proc

(mount -t proc none /mnt/gentoo/proc) i wykonujemy chroot do środo-wiska (chroot /mnt/gentoo /bin/bash);

– modyfikujemy plik /etc/make.conf (nano -w /etc/make.conf);

– rozpoczynamy instalację podstawo-wych elementów systemu (sh /usr/portage/scripts/bootstrap.sh), a po nim budujemy sam system (emerge system);

Tak może wyglądać nasze Gentoo

– ustawiamy strefę czasową (ln -s /usr/share/zoneinfo/GMT /etc/localtime);

– instalujemy jądro (emerge gentoo-dev-sources, emerge genkernel, genkernel –install all), program uruchomieniowy (emerge grub), dziennik systemowy (emerge syslog-ng, rc-update add syslog-ng default) i crond (emerge vixie-cron, rc-update add vixie-cron default) oraz dodajemy coldplug do startu systemu (emerge coldplug, rc-update add coldplug boot);

– konfigurujemy fstab (nano -w /etc/fstab) i program uruchomieniowy (grub, nano -w /boot/grub/grub.conf);

– restartujemy system.

Instalacja systemu z pakietów binarnych w 3 krokachAlternatywą dla pakietów źródłowych są pakiety binarne, z których również możemy zainstalować system (szybciej i prościej, ale mniej wydajniej):

– zamiast pliku stage1-x86-2004.3.tar.bz2 kopiujemy i rozpakowujemy plik stage3-L+.tar.bz2;

– po skopiowaniu pakietów z /mnt/cdrom/distfiles/full, kopiujemy rów-nież plik /mnt/cdrom/distfiles/binary/packages-bin-L+.tar.bz2 do /mnt/gentoo/usr/portage i rozpakowujemy go w ten sam sposób co Portage ;

– pozostałe pakiety, wymienione w instalacji z pakietów źródłowych, np. grub czy syslog-ng, instaluje-my za pomocą polecenia emerge -k nazwa_pakietu.

Szczegółowe etapy całej instalacji są opi-sane w dokumentach dostępnych na płytce DVD w katalogu docs/handbook i docs/Linux+. Dobrej zabawy!

Page 13: Linux+_02_2005
Page 14: Linux+_02_2005

DVD Baktualnościopis DVD

10 luty 2005

Mandrakelinux 10.1 – aktualizacjeNasza redakcja zamieściła na płycie DVD ponad dwieście pięćdziesiąt pakietów rpm. Są to aktualizacje programów przeznaczonych dla dystrybucji Mandrakelinux 10.1 Official. http://www.mandrakelinux.com/

ScratchboxNajnowsza wersja zestawu narzędzi dla programistów wykorzystujących kompilację skrośną. Na płycie DVD znajdują się pakiety typu rpm, deb, tgz, przeznaczone na różne platformy sprzętowe (ARM, x86, PowerPC), oraz dodatkowe narzędzia wraz z pełną dokumentacją. http://www.scratchbox.org/

EclipseNajnowsza wersja platformy deweloperskiej Eclipse, przeznaczonej do tworzenia aplikacji w Javie. Na płycie DVD została zamieszczona wersja SDK, zawierająca platformę Java, środowisko zintegrowanych wtyczek oraz pełną dokumentację.http://www.eclipse.org/

Abiword 2.2Wieloplatformowy edytor tekstu, stanowiący część projektu GNOME Office. Jest przeznaczony głównie dla osób przyzwyczajonych do korzystania z programu MS Word. Na płycie DVD znajdują się pakiety instalacyjne polskich wersji językowych programu.http://www.abisource.com/

Dokumentacja HOWTOPonad 2500 dokumentów opisujących, w jaki sposób rozwiązać niektóre problemy związane z Linuksem.http://www.tldp.org/

Firestarter 1.0Narzędzie do filtrowania, monitorowania i udostępniania połączenia internetowego.http://www.fs-security.com/

Essays1743Zestaw tradycyjnych angielskich czcionek.

Python 2.4Popularny język programowania, zdobywający ostatnimi czasy sympatię i uznanie programistów.http://www.python.org/

Linux+ Live DVD

L inux+ Live to dystrybucja Linuk-sa uruchamiana z płyty DVD. Aby

wystartować Linux+ Live, wystarczy w BIOS-ie komputera podać napęd CD jako podstawowe urządzenie rozruchowe, włożyć płytkę z naszą dystrybucją do napędu i ponownie uruchomić komputer. Po kilku chwi-lach naszym oczom ukaże się plansza powitalna. Po wciśnięciu klawisza [En-ter ], Linux+ Live zacznie się urucha-miać. System automatycznie wykry-je nasz sprzęt i skonfiguruje środowi-sko graficzne; w czasie uruchamiania trzeba wybrać język obowiązujący w systemie. Na Linux+ Live składają się m.in.:

• jądro Linux 2.6 z wieloma łatkami zwiększającymi jego funkcjonal-ność;

• graficzne środowisko pracy KDE 3.2.1;

• oprogramowanie programistyczne Anjuta, Eclipse, Glade, KDevelop, Gambas, kompilator GCC, środo-wisko Sun Java SDK oraz bibliote-ki programistyczne;

• przeglądarki internetowe Konqu-eror i Mozilla.

Linux+ Live ma na celu prezentację naj-ważniejszych programów opisanych w numerze, ale przede wszystkim ma

Na pierwszym planie Eclipse, a w tle KDevelop

FreeSBIE 1.1

Na początku grudnia 2004 roku ukazała się nowa wersja systemu

FreeSBIE. Jest to uruchamiana bezpo-średnio z płyty CD dystrybucja oparta na FreeBSD w wersji 5.3. Powstała ona z myślą o tych, którzy potrzebują za-równo aplikacji niezbędnych do pracy w sieci, jak i szeregu programów mul-timedialnych oraz gier. Dystrybucja za-wiera zatem popularną przeglądarkę internetową Firefox, komunikator GA-IM, analizatory ruchu i bezpieczeństwa sieciowego, odtwarzacze filmów i pli-ków dźwiękowych oraz wiele innych. Do dyspozycji mamy również dwa po-pularne menedżery okien – XFCE oraz lekki Fluxbox.

FreeSBIE, dzięki przyjaznemu in-stalatorowi DragonFlyBSD, można bez problemów zainstalować na dysku

FreeSBIE 1.1 podczas pracy

twardym. Niestety, aby cieszyć się kom-fortową pracą w systemie w wersji Li-ve, wymagane jest posiadanie mocnego sprzętu, z co najmniej 256 megabajtami pamięci RAM.

http://www.freesbie.org/

Wam – drodzy Czytelnicy – zapew-nić ogromną porcję twórczej zabawy. Jest to kompletne środowisko dla po-czątkującego, jak i zaawansowanego programisty. Jeśli myślisz o napisaniu jakiegoś programu i zastanawiasz się, jak wygląda programowanie pod Linuksem, Linux+ Live jest wspaniałą okazją ku temu, aby spróbować swoichsił. A po długim i przyjemnym progra-mowaniu będziecie mogli odprężyć się przy dwóch grach: Battle of Wes-noth oraz Dominions II. Dobrej zaba-wy!

http://www.live.lpmagazine.org/

Page 15: Linux+_02_2005
Page 16: Linux+_02_2005

newsyaktualnościaktualności

News

12 luty 2005

[email protected]

13

dział prowadzi: Witold Kieraś

www.lpmagazine.org

NewsKoniec The Linux ShowThe Linux Show, internetowa audycja radiowa, po siedmiu latach kończy działalność. Powodem są kłopoty finansowe jej twórców. Jak mówi Jeff Gerhardt, Sun Microsystems, dotychczasowy sponsor audycji, wycofał się nagle z jej finansowania. Zniknęli też producenci sprzętu komputerowego, którzy zasilali kasę audycji płatnymi reklamami. The Linux Show nie jest w stanie przetrwać utrzymując się jedynie z datków słuchaczy. Ostatnia audycja miała miejsce 21 grudnia.http://www.newsforge.com/article.pl?sid=04/12/01/035210

Firefox coraz popularniejszy...W pierwszych tygodniach od pojawienia się na rynku wersji 1.0 przeglądarki Firefox ściągnęło ją z Internetu kilka milionów użytkowników. Trend ten ciągle się utrzymuje. Firmy zajmujące się pomiarem ruchu w Internecie również potwierdzają zwiększoną liczbę użytkowników korzystających z przeglądarek opartych na silniku Gecko – gros nich to oczywiście nowy Firefox. Po raz pierwszy od wielu lat udział w rynku Internet Explorera spadł poniżej 90%. I wszystko wskazuje na to, że jeszcze spadnie......zatem czas na Thunderbirda!Siostrzany projekt przeglądarki Firefox, klient poczty Thunderbird, również idzie w jej ślady. W chwili publikacji tego numeru Linux+, powinna być już dostępna od jakiegoś czasu wersja 1.0 tego programu. Czy Thunderbird powtórzy sukces Firefoksa? Ma ku temu predyspozycje, bo poziom bezpieczeństwa głównego gracza na tym rynku, programów Outlook i Outlook Express, należących do MS, pozostawia wciąż wiele do życzenia. Być może zatem wkrótce społeczność skupiona wokół Thunderbird rozpocznie tak efektowną i udaną kampanię jaką oglądaliśmy niedawno w przypadku Firefoksa...http://forums.mozillazine.org/viewtopic.php?p=1020843

Więcej linuksowych serwerówKwartalna wartość sprzedaży serwerów linuksowych po raz pierwszy przekroczyła sumę miliarda dolarów, co stanowi ponad 9% rynku. W porównaniu z analogicznym okresem 2003 roku, oznacza to wzrost aż o 42,6%. W porównaniu z ubiegłym rokiem wartość rynku serwerów zwiększyła się o 5,5%. Systemy z rodziny Windows zyskały na wartości 13,3%.http://www.techworld.com/opsys/news/index.cfm?NewsID=2676&Page=3&pagePos=20

Czy pingwiny są skazane na wymarcie?

Frank Ottink w swoim artykule pt. Sunwill shine again and leave Linux in

its shade wymienił kilka powodów, dla których, jego zdaniem, otwarty Solaris zde-klasuje Linuksa i skaże go na marginaliza-cję. Po pierwsze, Solaris to uznana marka i system co najmniej tak dobry jak Linux, a ponieważ Sun ma zamiar wydać go na otwartej licencji, to ma to być gwarantem tego, że Solaris przetrwa nawet ewentual-ny upadek firmy, która go stworzyła. Po drugie, ponieważ Solaris ma być kompa-tybilny z architekturą x86 (uznawaną za jedną z najtańszych), to obniżenie kosz-tów sprzętu nie będzie już argumentem przemawiającym na korzyść migracji na Linuksa. Po trzecie, Solaris ma już dużą liczbę klientów, a ponieważ ma on stać się systemem opensource'wym, to także nie będzie to argument przemawiający na korzyść Linuksa. Po czwarte, Sun ma do-brą opinię jako dostawca wsparcia tech-nicznego dla swojego systemu – być mo-że nawet lepszą niż producenci komer-cyjnych dystrybucji Linuksa, tacy jak Red Hat czy Novell. I po piąte, Sun gwarantuje jedność projektu i odsuwa niebezpieczeń-stwo tego, że Solaris podzieli się na kilka niekompatybilnych ze sobą wersji.

Artykuł Franka Ottinka wywołał ma-łą burzę w światku linuksowym. Pojawiło się wiele polemik, zarówno w innych ser-wisach internetowych, jak i pod oryginal-nym tekstem. Nie trzeba być ekspertem, aby zauważyć, że Ottink nie do końca zdaje sobie sprawę z tego, czym jest zja-wisko Wolnego Oprogramowania – i wła-śnie na to zwracali mu przede wszystkim uwagę jego adwersarze, w wielu przypad-kach będący zresztą aktywnymi progra-mistami projektów opensource'owych. Po pierwsze, przeświadczenie Ottinka, że etykietka Open Source w jakiś magicz-ny sposób przyciąga od razu rzesze pro-gramistów, chcących poświęcić swój czas i wysiłek dla rozwoju projektu, jest zu-pełnie błędne. Jak trafnie zauważył je-den z czytelników artykułu Ottinka, do-świadczenie pokazuje, że Sunowi wcale nie będzie łatwo zgromadzić wokół Sola-risa większej społeczności deweloperów. Linux ciężko pracował na swoją pozycję i zaufanie – nie tak łatwo powtórzyć je-go sukces. Dodatkowo, wątpliwości budzi sama deklaracja otworzenia kodu Solarisa – ciągle nie wiadomo, na jakiej licencji ma on zostać wydany, a może być to niezwy-

kle ważnym czynnikiem decydującym o tym, czy system ten zdoła skupić wo-kół siebie odpowiednio dużą grupę de-weloperów. Ostatnie decyzje Suna zwią-zane z liberalizacją licencji Javy raczej roz-czarowały środowisko Open Source, gdyż licencja owa wciąż jest dość restrykcyjna i w żaden sposób nie spełnia choćby wy-tycznych Open Source Initiative. Z punk-tu widzenia rozwoju społeczności najbar-dziej korzystną licencją dla Solarisa była-by licencja zgodna z GPL, ale Sun wciąż nie podjął w tej sprawie decyzji. Istnie-ją więc uzasadnione obawy, że szumnie ogłaszane od dawna otwarcie kodu Sola-risa może być wielkim rozczarowaniem. Co do straszenia potencjalnych klientów rozbiciem Linuksa na kilka niezgodnych ze sobą projektów, to porównać to można jedynie do propagandy pewnej dużej fir-my informatycznej – jak dotąd nic takiego nie nastąpiło i nie widać powodów, dla którym miałoby do tego dojść.

W tydzień po opublikowaniu swojego artykułu, Frank Ottink ogłosił publicznie, że się mylił. Podziękował swoim oponen-tom za zwrócenie mu uwagi na proble-my, z których nie zdawał sobie do tej pory sprawy. Przyznał im rację i uznał ich argu-menty. Co ciekawe, w ciągu jednego krót-kiego tygodnia dyskusja przeszła długą drogę – od szumnego ogłoszenia trium-fu Solarisa nad Linuksem, do kwestii te-go, czy otwarty Solaris w ogóle byłby w stanie przetrwać bez wsparcia finanso-wego i medialnego ze strony Sun Micro-systems. Wielu twierdzi, że jego szanse byłyby niewielkie...

Bez względu na wszystko, nadal z niecierpliwością i nadzieją oczekuje-my na zapowiadane otwarcie kodu flago-wego systemu Suna. I to nie dlatego, aby miał on być jakimś zagrożeniem dla Li-nuksa, ale dlatego, że Linux mógłby wie-le zyskać zapożyczając z Solarisa rozwią-zania kilku ważnych dla naszego systemu problemów...

http://www.yeald.com/Yeald/a/32111/sun_will_shine_again_and_leave_li-nux_in_its_shade.html

Solaris raczej nie zagrozi Linuksowi

Page 17: Linux+_02_2005

newsyaktualnościaktualności

News

12 luty 2005

[email protected]

13

dział prowadzi: Witold Kieraś

www.lpmagazine.org

NewsProblemy zdrowotne Patricka VolkerdingaPatrick Volkerding, twórca i główna siła napędowa dystrybucji Slackware, ma poważne problemy zdrowotne. Wiadomo, że cierpi na zapalenie osierdzia, jednak nie jest to jego jedyny problem, a co gorsza lekarze nie potrafią powiedzieć, co tak naprawdę dolega Patrickowi. Dopóki Patrick nie wyzdrowieje, aktualizacją pakietów Slackware zajęli się Piter Punk i Bruno Henrique Collovini. Wszyscyjednak liczą na rychły powrót ojca dystrybucji.ftp://ftp.slackware.com/pub/slackware/slackware-current/PAT-NEEDS-YOUR-HELP.txt

“Lepiej nie używajcie IE”Fiński Urząd Regulacji Komunikacji zaapelował do użytkowników Internetu, aby do czasu załatania wykrytej niedawno luki w zabezpieczeniach Internet Explorera, zmienili przeglądarkę na inną. Chodzi o groźny błąd nieprawidłowej obsługi znacznika IFRAME (tzw. pływającej ramki). Czyżby kolejna szansa dla Firefoksa?

IT Underground w PradzeIT Underground Praga (17 – 18 lutego 2005) to druga edycja konferencji poświęconej technikom zabezpieczeń przed intruzami i penetracji systemów informaty-cznych, w tym Linuksa. Prelegentami będą m. in. Mariusz Burdach, Wojciech Dworakowski, Thorsten Holz, Joanna Rutkowska, Saumil Shah, Piotr Sobolewski, Michał Szymański, Chuck Willis i inni.http://www.itunderground.org/

Sieciowy magazyn o LinuksiePowstało nowe polskie internetowe pismo o Linuksie pt. LinuxPaper. Rozpowszechniane jest w formacie PDF, a plik zawierający pierwszy numer można ściągnąć z jego strony domowej. Zawiera on materiał zarówno dla początkujących (m.in. prezentacja idei Open Source i związanej z nią społeczności), jak i dla bardziej zaawansowanych użytkowników (pierwsza część tutorialu na temat programowania przy użyciu biblioteki Qt oraz artykuł o pisaniu skryptów w BASH-u). Całość została złożona przy użyciu opensource’owych narzędzi: Scribusa, GIMP-a i Blendera.http://www.linuxpaper.prv.pl/

XML-owy standard dla UE coraz bliżej

Nie tak dawno informowaliśmy o tym, że wyspecjalizowana jednostka Ko-

misji Europeskiej zachęca do stworzenie jednolitego i otwartego standardu wymiany dokumentów, opartego na formacie XML. Na ten apel bardzo szybko odpowiedział Sun Microsystems, producent StarOffice'a i główny sponsor projektu OpenOffice.org. Sun promuje XML-owy standard OASIS i stara się również o jego akceptację przez International Standard Organisation (ISO), zatem inicjatywę Komisji Europejskiej przy-jął z dużym zadowoleniem. Pomysł poparł też Microsoft, zaznaczając, że specyfikacja jego formatu opartego na XML, a obsługi-wanego przez MS Office, WordXML, jest już wolnodostępna. Do inicjatywy przyłą-czył się również IBM, informując, że zgłosił już do OASIS chęć udziału w pracach spe-cjalnego komitetu technicznego, pracujące-go nad standardem. IBM zaznaczył też, że już oferuje produkty spełniające założenia szkicowego projektu standardu OASIS, któ-ry powstał do tej pory.

Open Forum Europe (OFE) w swojej analizie również wskazało potrzebę przy-gotowania otwartego standardu wymia-ny dokumentów. Wezwało administracje państwowe krajów członkowskich UE do

zwrócenia uwagi na format XML, wyko-rzystywany przez darmowy i otwarty pa-kiet biurowy OpenOffice.org. Przedstawi-ciele Forum zachęcają też producentów oprogramowania do zaznaczania otwar-tego standardu danych jako domyślnie obsługiwanego przez ich programy.

W opublikowanym przez OFE do-kumencie pt. How Open Can Europe Get? można znaleźć krótką analizę cech formatów PDF, OpenOffice XML oraz WordXML. OFE zaznacza jednak, że ten ostatni nie jest w pełni otwarty, gdyż znaj-dują się w nim tagi typu <bindata>, za-wierające informacje specyficzne dla plat-formy, mogące spowodować problemy z jego obsługą w innych środowiskach.

Wszystkie pozytywne inicjatywy wo-kół pomysłu jednolitego i otwartego stan-dardu wymiany dokumentów pozwalają mieć nadzieję, że w stosunkowo niedłu-giej przyszłości zostanie on urzeczywist-niony. Miałoby to bardzo dobry wpływ na płynność i przejrzystość wymiany in-formacji pomiędzy administracją publicz-ną, biznesem oraz obywatelami w Unii Europejskiej.http://europa.eu.int/ida/en/document/3463

Open Source na małym ekranie

Powstał pierwszy na świecie program telewizyjny poświęcony oprogramo-

waniu Open Source – niestety, daleko od nas, bo aż w Republice Południowej Afry-ki. Program nazywa się Go_Open i jest za-planowany na trzynaście odcinków. Pierw-sze z nich zostały już wyemitowane.

Program zrealizowano przy wspar-ciu Shuttleworth Foundation, organiza-cji, która promuje otwarte oprogramowa-nie w południowoafrykańskich szkołach. Go_Open przedstawia historie udanych wdrożeń i migracji oraz prezentuje sylwet-ki najbardziej znanych postaci ruchu Open Source. Można też dowiedzieć się w nim o najnowszych wydarzeniach ze środowi-ska. W pierwszym odcinku zamieszczono wywiad z Richardem Stallmanem, a gość-mi kolejnych mają być m.in. Eric Raymond oraz być może Linus Torvalds.

Zgodnie z tym, co mówią sami twór-cy, program przeznaczony jest dla zwy-kłych użytkowników komputerów, którzy mogli nigdy nawet nie zetknąć się z ideą otwartego oprogramowania. Ma za zada-

nie zachęcić ich do wyboru właśnie ta-kich rozwiązań, a w przyszłości być mo-że nawet większego zaangażowania w ży-cie społeczności. Już na początku swoje-go istnienia program spotkał się z du-żym zainteresowaniem – w ogłoszonym w pierwszym odcinku konkursie telefo-nicznym w ciągu godziny wzięło udział około tysiąca telewidzów.

http://www.go-opensource.org/go_open/http://news.zdnet.co.uk/software/linuxunix/0,39020390,39174917,00.htm

Strona internetowa programu telewizyjnego Go_Open

Page 18: Linux+_02_2005

jądro linuxaktualnościaktualności

News

14 luty 2005

[email protected] dział prowadzi: Tomasz Torcz

15www.lpmagazine.org

NewsPoczątki odchudzonego skryptu hotplugCo jakiś czas pojawiają się głosy niezadowolenia ze standardowego skryptu uruchamianego jako /sbin/hotplug. Głównym zarzutem jest właśnie to, że jest to skrypt powłoki, co w połączeniu z olbrzymią i stale rosnącą ilością zdarzeń, przy których jest wywoływany, powoduje znaczące zwiększenie obciążenia systemu.W odpowiedzi, autor pierwotnego skryptu, Greg Kroah-Hartman, stworzył funkcjonalny odpowiednik w języku C. Plik binarny, zbudowany statycznie z klibc, zajmuje około 4 kilobajtów i uruchamia się błyskawicznie.Greg ogłosił plany przepisania również innych skryptów pomocniczych mechanizmu hotplug w C. Wykorzysta przytym wiedzę zdobytą przez ostatnie cztery lata obecności hotplug w jądrze, jednocześnie porzucając wsparcie dla starych jąder (2.4.x).http://lkml.org/lkml/2004/11/18/297

Wydajność systemów plików z rozszerzonymi atrybutamiWszystkie ważniejsze systemy plików Linuksa (ext2/3, XFS, Reiserfs3/4, JFS, tmpfs) wspierają również, oprócz typowo uniksowych, atrybuty rozszerzone – xattrs. Na razie są używane sporadycznie – głównymi beneficjentami są SELinux, przechowujący w nich atrybuty bezpieczeństwa, oraz Beagle, program indeksujący dane użytkownika, który do atrybutów dołącza informacje o ostatnim indeksowaniu. Sytuacja może diametralnie zmienić się wraz z pojawieniem się popularnej usługi Samba w wersji czwartej. Przechowuje ona w xattr wiele informacji potrzebnych do pełnej emulacji systemów pochodzących od firmy Microsoft. Andrew Tridgell przeprowadził testy wydajnościowe nowego demona. Wyniki z początku były druzgoczące – włączenie do testów rozszerzonych atrybutów spowodowało olbrzymie zmniejszenie prędkości. Sytuację ratowały testy przy zwiększonym rozmiarze i-węzła. Taką operację umożliwia XFS i eksperymentalne łatki dla ext3. Testy mogą być impulsem do włączenia łatek ext3 do głównej linii jądra. W dyskusji o wydajności uczestniczył też Hans Reiser, pilnie analizując, jakiego rodzaju optymalizacje wprowadzić w Reiser4fs.

Pliki nagłówkowe jądra

Koniec zeszłego roku był okresem wzmożonej dyskusji nad bardzo

ważną kwestią plików nagłówkowych jądra w świetle kompilacji programów w przestrzeni użytkownika. Nie była to pierwsza taka dyskusja, ale tym ra-zem włączył się do niej sam Linus To-rvalds. Udało się z niego wyciągnąć deklaracje, które umożliwią konkret-ne działania.

Czym są wspomniane nagłówki? Są to pliki, w których jest zdefiniowany in-terfejs między jądrem systemu a progra-mami przestrzeni użytkownika. Głów-nym ich użytkownikiem jest w zasadzie biblioteka języka C – w GNU/Linux jest to zazwyczaj glibc, chociaż może to być uClibc, dietlibc bądź klibc. Zaintereso-wani nagłówkami są również autorzy oprogramowania wchodzącego w głęb-sze związki z jądrem.

Nagłówki jądra 2.6 nie są przystoso-wane do bezpośredniego użycia i czę-sto powoduje to problemy u progra-mistów. Swego czasu narzekał na nie Joerg Schilling, autor powszechnie uży-wanego programu cdrecord. Nagłówki jądra są najeżone konstrukcjami, któ-re w standardowym środowisku po-wodują błędy kompilacji. Co gorsza, tradycyjne ich umieszczenie w katalo-gu /usr/include powodowało, że nie-którzy programiści używali struktur w nich zawartych (np. blokad pętlo-wych), nie zdając sobie sprawy, że nie działają one w przestrzeni uży-tkownika, tworząc w ten sposób wadli-we oprogramowanie.

Same informacje eksportowane przezjądro w niektórych przypadkach nie są nawet w formacie przyjaznym do ob-róbki. W wielu przypadkach do prze-strzeni użytkownika jest przekazywa-na struktura dostosowana do antycz-nej w tej chwili biblioteki libc w wer-sji 4 lub 5. O ile kilka lat temu by-ło to uproszczenie, to jednak czas nie stoi w miejscu i zachodzą zmiany w ją-drze. Zdarza się, że jądro musi dokony-wać translacji danych na stary format, aby przekazać je na zewnątrz. Odbior-ca, glibc, odbiera je w ten sposób, po czym... dokonuje translacji na inną re-prezentację. Często taką samą, jak pier-wotnie dostępna w jądrze.

Problem pojawia się, gdy glibc nie nadąża za zmianami w jądrze. Progra-

mista musi albo skopiować interesujące go nowości, albo użyć pliku nagłówko-wego z jądra. Drugie rozwiązanie czę-sto powoduje konflikt z plikiem dostar-czonym przez glibc, zawierającym już część definicji. Sytuacja jest tym gorsza, że nowe jądro pojawia się co miesiąc lub dwa, a glibc jest wydawany rzadziej niż raz na rok. Dodając do tego fakt, że glibc nie korzysta z nagłówków ją-dra, poza czterema-pięcioma przypad-kami, a z własnej kopii, to o problemy nietrudno.

Zanim nagłówki jądra zostaną uży-te, trzeba je oczyścić. Przykładowo, te używane przez dystrybucję Fedora Co-re przechodzą gruntowne cięcia. Usu-wane są wszystkie fragmenty dostępne tylko w przypadku zdefiniowania sta-łej __KERNEL__. Muszą również zniknąć wszystkie funkcje oznaczone przez in-line. Takie oznaczenie jasno wskazuje, że funkcja jest fragmentem jądra. Nie bez znaczenia jest również fakt istnie-nia ,,pułapki licencyjnej'' – włączenie (nawet nieświadome) do kodu źródło-wego fragmentu na licencji jądra, czy-li GPL, wymusza takie samo licencjo-nowanie całego programu. Z nagłów-ków są też usuwane wszystkie struktu-ry, które zawierają prymitywy synchro-nizacyjne, takie jak semafory i bloka-dy pętlowe. Nie mają one zastosowania poza jądrem, więc bezpiecznie można przyjąć założenie, że te fragmenty na-główków nie są przeznaczone dla prze-strzeni użytkownika.

Jak widać, dostosowanie nagłów-ków wprost z jądra do kompilacji pro-gramów to ogromne zadanie. Co gorsza, brak scentralizowanego repozytorium z poprawionymi nagłówkami oznaczał-by konieczność wykonania tej pracy przez prawie każdego twórcę dystrybu-cji Linuksa. W takiej sytuacji Mariusz Mazur, deweloper dystrybucji PLD Linux, zabrał się w grudniu 2003 roku za oczyszczanie nagłówków i przysto-sowanie ich do kompilacji oprogramo-wania w dystrybucji. Największym te-stem poprawności jego działań było zbudowanie na bazie jego pracy biblio-teki glibc, a następnie reszty PLD.

Każde wydanie nowej wersji ją-dra oznacza dla opiekuna nagłówków przejrzenie pokaźnego (pół do półto-ra megabajta objętości) zbioru różnic

Page 19: Linux+_02_2005

jądro linuxaktualnościaktualności

News

14 luty 2005

[email protected] dział prowadzi: Tomasz Torcz

15www.lpmagazine.org

NewsSystem Plików Pojedynczego PlikuEtap rozterek projektowych ma już za sobą Bernard Hatt. Stworzył on system plików przeznaczony do przechowywania pojedynczego zbioru. Pomysł może wydawać się bezsensowny, ale SFFS (Single File File System) stanowi alternatywę dla używania surowej partycji, przeznaczonej pod bazę danych, obraz płyty DVD czy repozytorium serwera NNTP. Alternatywę, która daje korzyści typu informacja o długości pliku, uprawnienia, określenie właściciela itp. Pierwotna wersja SFFS nie jest wolniejsza od systemu plików ext2, a wręcz potrafi osiągnąć rezultaty o 40% lepsze. Nie jest to zaskoczeniem, zważywszy na prostotę przechowywania pojedynczego pliku na dysku. Warto odnotować wcześniejsze próby stworzenia systemów plików o takiej funkcjonalności – były to rawfs oraz smugfs.http://www.arkady.demon.co.uk/sffs

Zabawy z EFISkrót EFI oznacza Extensible Firmware Interface. Jest to sposób komunikacji z BIOS-em lub jego odpowiednikiem, promowany przez Intela i inne duże firmy. EFI jest powszechny na platformie Itanium, ale pojawienie się na komputerach biurkowych nie nastąpi w najbliższe przyszłości. Pomimo tego, możemy zapoznać się z tym mechanizmem. Jest do tego wymagana partycja typu VFAT, na której znajdzie się program ładujący i jądro. Dysk może zostać podzielony na partycję w tradycyjny sposób lub GUID Partition Type, specyficzny dla EFI. GPT jest obsługiwany przez program Parted. Kolejnym krokiem jest nagranie na dyskietkę binarnej wersji oprogramowania EFI i uruchomienie z niej komputera. W ten sposób obchodzimy brak tego rozwiązania w BIOS-ie. Pozostaje już tylko skorzystanie z programu ładującego ELILO i użycie jądra z obsługą Extensible Firmware Interface.http://lkml.org/lkml/2004/12/1/83

XKE – pośrednik multimedialnyXKE to mały programik, którego zadaniem jest informowanie systemu X Window o niestandardowych, zwanych multimedialnymi, klawiszach. Ze strony jądra jest używany podsystem wejścia, komunikujący się za pomocą zdarzeń (ang. events). Do systemu graficznego są one przekazywane dzięki rozszerzeniu Xtest. Bez żadnych zmian obsługiwane są przeróżne myszy, trackballe i tablety. XKE jest połączeniem programów evdev, xkeymouse i tuntiko.http://lkml.org/lkml/2004/12/1/23

Systemy plików przestrzeni użytkownika

Linux jest jądrem monolitycznym. W uproszczeniu oznacza to, że

wszystkie ważne podsystemy są za-warte bezpośrednio w jądrze syste-mu. Dotyczy to również systemów pli-ków, które w alternatywnych rozwią-zaniach – mikrojądrach – działają ja-ko procesy w przestrzeni użytkownika. Oczywiście, nic nie stoi na przeszko-dzie, aby również w przypadku jąder monolitycznych stworzyć interfejs, któ-ry umożliwi zaimplementowanie syste-mu plików jako procesu użytkownika. Jednym z takich projektów jest FUSE. Rozwijany od dłuższego czasu został niedawno zaproponowany jako kan-dydat do włączenia do głównej linii jądra. I o dziwo, Linus Torvalds, za-zwyczaj przeciwny takim rozwiąza-niom, wstępnie wyraził zgodę pod wa-runkiem wprowadzenia kilku zmian. Część jego żądań była spowodowa-na nieporozumieniem – swoją wiedzę o FUSE opierał na starszej wersji kodu, która zdążyła przejść w międzyczasie sporą ewolucję.

Stworzenie systemu plików w prze-strzeni użytkownika daje dużo większą swobodę niż czynienie tego w jądrze. Programista może korzystać z wielu

bibliotek i pisać w dowolnym języku. Znane są pseudosystemy plików, umoż-liwiające podmontowanie webmaila(!), napisane w Pythonie. Niestety, nie ma nic za darmo. Wystarczy wyobrazić so-bie sytuację, w której duża część pa-mięci jest wypełniona buforami prze-znaczonymi do zapisu poprzez FUSE. W pewnym momencie system potrze-buje pamięci, więc aby zrobić trochę miejsca, wymusza zapis tych buforów. Żądania są przekazywane poprzez FU-SE do demona implementującego dany system plików. Teraz wystarczy, aby de-mon do zapisu potrzebował trochę pa-mięci – odwołuje się po nią do jądra. A ponieważ zapis został zainicjowany właśnie wcześniejszym brakiem prze-strzeni, sytuacja pogarsza się i cały sys-tem może ulec zawieszeniu.

Niestety, nie jest to problem łatwo rozwiązywalny. Pewnym pocieszeniem może być fakt, że z podobnymi przy-padłościami borykają się sieciowe sys-temy plików – NFS, Samba, CIFS. Sko-ro im zazwyczaj nie zdarza się zawie-szać serwerów, to i FUSE może w koń-cu okazać się bezpieczny.

http://fuse.sourceforge.net/

między wersjami, wyłowienie ważnych zmian i wprowadzenie poprawek. Du-ża część zadań (np. sprawdzanie, któ-re pliki przestały się kompilować) da się rozwiązać odpowiednim skryptem, ale są momenty, gdy jest potrzebna in-gerencja człowieka. W przypadku no-wych plików nagłówkowych potrze-ba trochę zgadywania, czy reprezen-tują one API, czy też stanowią opis wewnętrznych struktur jądra. Pierw-sze należy oczyścić, a drugie odrzu-cić. Ta żmudna praca jest rekompenso-wana rozpowszechnieniem oczyszczo-nej przez Mariusza wersji nagłówków. Są one traktowane jako prawie-oficjal-ne nagłówki i adres do nich często po-jawia się na LKML.

Co ciekawsze, Mariusz Mazur przy-znaje się do tego, że nie zna się zbytnio na jądrze Linux. W pracy nad nagłów-kami wystarcza mu znajomość języka C i umiejętności programistyczne. Jak

widać, dogłębna znajomość struktur jądra nie jest potrzebna do prowadze-nia przez ponad rok projektu, z któ-rego korzysta cała społeczność linuk-sowa.

Prawdopodobnie, praca Mariu-sza nie będzie już niedługo potrzeb-na. Zaczyna się proces porządkowa-nia plików nagłówkowych. Sama idea nie jest skomplikowana i Al Viro za-demonstrował na przykładzie nagłów-ków AmigaFS, że podział i oczyszcze-nie plików zajmuje dziesięć minut ro-boty dla programisty zaznajomionego z podsystemem. Do tej pory przeszko-dą był brak ustaleń związanych z po-łożeniem i hierarchią katalogów z na-główkami dla przestrzeni użytkownika. Na szczęście, Linus w końcu wyznaczył katalogi, w których mają się one zna-leźć. Wyraził też otwartość na wszelkie łatki robiące porządek w plikach na-główkowych jądra.

Page 20: Linux+_02_2005

debianaktualnościaktualności

News

16

[email protected] dział prowadzi: B. Feński, T. Napierała

luty 2005

Kolejne tysiące komputerów z Debianem...Europcar przeniósł 1500 komputerów w biurach oddziałów terenowych na cienkie klienty oparte o Debiana oraz jest w trakcie przenoszenia kolejnych 3500 na system GNU/Linux w swojej centrali.http://news.zdnet.co.uk/software/linuxunix/0,39020390,39175484,00.htm

Listy pakietów przez LDAPSean Finney ogłosił, że pracuje nad implementacją alternatywnej struktury list pakietów używającej Lightweight Directory Access Protocol (LDAP). Zastosowanie filtrów wyszukiwania dla znaczników czasu przyspieszyłoby uaktualnianie list pakietów, ale apt jest obecnie zaprojektowany w oparciu o założenie, że listę pakietów może pobrać w dokładnie taki sam sposób, jak same pakiety.http://lists.debian.org/debian-devel/2004/12/msg00290.html

Poszukiwanie usprawnionego procesu wydawania dystrybucjiLex Hider rozpoczął dyskusję na temat alternatyw dla obecnego procesu wydawania dystrybucji, która doprowadziła do komentarzy na temat tego,co tak naprawdę oznacza wydanie stabilne, rozmiaru Debiana oraz zwiększania stopnia skomplikowania drzewa zależności. Joey Hess w końcu stworzył stronę Wiki dla propozycji dotyczących wydania oraz dla dyskusji na temat obecnych jego wąskich gardeł.http://lists.debian.org/debian-devel/2004/11/msg00887.htmlhttp://wiki.debian.net/index.cgi?ReleaseProposals

Aktualności Debiana przez RSSGreg Stark zastanawiał się, czy Debian Weekly News są dostępne przez RSS. Romain Francoise zauważył, że GMANE dostarcza RSS dla wielu list dotyczących Wolnego Oprogramowania, włączając aktualności Debiana (format RSS i blog). Obecnie projekt Debian nie dostarcza jednak oficjalnego źródła RSS – poszukiwani są wolontariusze, którzy napiszą odpowiedni kod.http://lists.debian.org/debian-devel/2004/11/msg00772.html

Debian i AMD64

Nowe 64-bitowe procesory AMD stają się coraz popularniejsze oraz,

co nie mniej ważne, coraz tańsze. Aby w pełni wykorzystać ich możliwości, system operacyjny musi oferować od-powiednie wsparcie. Większość wio-dących dystrybucji Linuksa na rynku (Gentoo, Fedora Core, Mandrakelinux, SUSE, jak i rodzime PLD) jest już do te-go odpowiednio przygotowana. A jak pod tym względem wygląda zbliżające się kolejne wydanie Debiana ?

Niestety, z racji tego, że obsłu-ga wspomnianej architektury weszła w stabilne stadium trochę za póź-no, Sarge nie będzie jej oficjalnie za-wierało. Wymagałoby to zbyt wielu zmian, co jeszcze bardziej opóźniło-by i tak strasznie przeciągające się wy-danie. Nie oznacza to wcale, że należy zupełnie zapomnieć o duecie Debian i AMD64. Trzeba zadowolić się nieofi-cjalną, aczkolwiek rozwijaną przez ofi-cjalnych deweloperów, stabilną wersją. Purystom pozostaje używanie standar-dowej architektury i386, która jest rów-nież wspierana przez tę generację pro-cesorów AMD.

Obsługa 64 bitów może zostać zre-alizowana na dwa sposoby. Albo bę-dzie to czysty 64-bitowy system bez możliwości uruchamiania aplikacji skompilowanych dla 32 bitów, albo bę-dzie to tzw. multiarch, który umoż-liwia uruchamianie zarówno aplika-cji skompilowanych w środowisku 64-bitowym, jak i tych bardziej po-pularnych i rozpowszechnionych, czy-li 32-bitowych. Obecnie deweloperzy Debiana skupiają się na tym, aby stwo-rzyć pierwszy z wymienionych rodza-jów. A to dlatego, że mieszanie obu ty-pów aplikacji, a co za tym idzie bi-bliotek, nie jest jeszcze ustandaryzo-wane i praktycznie każda dystrybucja robi to na swój sposób. Projekt De-bian chce usystematyzować te rozwią-zania i ustalić pewne standardy, któ-re mogłyby być stosowane nie tylko w omawianym przypadku, ale też dla wszystkich innych architektur, jak też dla rozwiązań pozwalających urucha-miać aplikacje skompilowane dla ar-chitektury sparc na architekturze po-werpc.

Matt Taggart i Tollef Fog Heen pod-czas konferencji DebConf4 przedsta-

wili swoje propozycje na rozwiązanie szeregu problemów mogących pojawić się przy tego typu rozwiązaniach.

Czego może oczekiwać ktoś, kto jednak zdecyduje się na korzystaniez portu Debiana przygotowanego spe-cjalnie pod najnowsze procesory AMD? Zdecydowaną większość (97%) pakie-tów udało się poprawnie zbudować z wykorzystaniem możliwości nowej architektury. Pozostałe 3% to głów-nie oprogramowanie o zamkniętych źródłach, a więc problemy nie po-winny raczej nikogo dziwić. Jednak-że w grupie problematycznych pro-gramów znalazł się również m.in. OpenOffice.org, którego przygotowa-nie pomimo otwartości źródeł nie jest zadaniem trywialnym. Na szczę-ście, brak 64-bitowej wersji tego po-pularnego środowiska biurowego wca-le nie oznacza, że trzeba z niego zu-pełnie zrezygnować. I na tego typu problemy znalazło się rozwiązanie, przynajmniej tymczasowe, gdyż moż-na uruchamiać 32-bitowe programy w specjalnie przygotowanym środo-wisku chroot, co obecnie jest z powo-dzeniem stosowane przez dewelope-rów. Wydaje się to rozwiązaniem ma-ło uciążliwym, zwłaszcza dlatego, że ilość problematycznego oprogramo-wania jest naprawdę niewielka. Odpo-wiednie przewodniki, jak taki miesza-ny system szybko i sprawnie przygoto-wać, znajdują się w dokumentacji wer-sji AMD64 Debiana.

Rozwiązania tego typu dotyczą głównie systemów zainstalowanych na komputerach codziennego użytku (tzw. komputery biurkowe). W przypadku serwerów czy też ruterów, a więc ma-szyn, na których rzadko kiedy można ujrzeć choćby serwer X Window, a co dopiero pakiet biurowy, 64-bitową wer-sję Debiana można używać bez naj-mniejszych problemów. Tyle tylko, że trzeba pogodzić się z faktem, iż jest to wersja nieoficjalna.

http://debian-amd64.alioth.debian.org/http://people.debian.org/~taggart/talks/debconf4-multiarch/multiarch.htmlhttp://alioth.debian.org/docman/view.php/30192/21/debian-amd64-howto.html

Page 21: Linux+_02_2005
Page 22: Linux+_02_2005

mandrakelinuxaktualnościaktualności

News

18

[email protected] dział prowadzi: Daniel Koć

luty 2005

Skype 0.92.0.12Skype to stosunkowo młody komunikator internetowy, którego twórcy skupili się przede wszystkim na rozmowach głosowych przez sieć (tzw. VoIP), choć możliwa jest także tradycyjna rozmowa w formie pisanej oraz przesyłanie plików. Program potrafi działać nawet spoza zapór sieciowych (firewall), a protokół Skype korzysta z połączeń typu p2p, dzięki czemu zapewnia bardzo dobrą jakość dźwięku w swojej klasie. Program jest dostępny między innymi w postaci pakietów RPM dla dystrybucji Mandrakelinux 9 i nowszych. Najnowsze wydanie beta dla Linuksa nie ma jeszcze wszystkich funkcji dostępnych w wersji dla MS Windows, ale działa stabilnie i nadaje się już do normalnego używania.http://www.skype.com/products/skype/linux/

Mandrakelinux 10.1 PPCZ pewnym opóźnieniem w stosunku do najpopularniejszej wersji na procesory z rodziny x86 pojawiło się także wydanie Mandrakelinux 10.1 dla procesorów PowerPC. W skład dystrybucji wchodzi najnowsze jądro 2.6.8.1, podsystem grafiki X11R6.7, OpenOffice.org 1.1.3, Mozilla 1.7.2, GNOME 2.6 oraz KDE 3.2. Bardzo przydatną nowinką w tej wersji jest możliwość instalowania i ładowania systemu z zewnętrznych urządzeń przyłączanych przez porty USB i FireWire. Wydanie PPC nie jest oficjalnie dystrybuowane przez Mandrakesoft, gdyż jego rozwój odbywa się siłami społeczności, a jego głównym twórcą jest Christiaan Welvaart.http://qa.mandrakesoft.com/twiki/bin/view/Main/Mandrakelinux101PpcReleaseNotes

Mandrakesoft wyraźnie na plusieMandrakesoft ogłosiło, że przyniosło zysk za rok fiskalny 2003-2004 w wysokości 5,18 mln euro. Jest on wyższy o 33% w stosunku do poprzedniego roku i zarazem najwyższy w historii firmy, co oznacza, że w wyniku skutecznego przeprowadzenia planu uzdrowienia finansów problemy Mandrakesoft są już tylko historią. Wzrost był widoczny szczególnie w drugiej połowie roku i sięgnął aż 49% w stosunku do analogicznego okresu poprzedniego roku, podczas gdy w pierwszej połowie wyniósł 21%. Głównymi źródłami zysku są sprzedaż przez Internet, licencje oraz opłaty członków Klubu Mandrakelinux. Źródła te składają się w sumie na 77% zysków, gdyż pozostałe wpływy pochodzą m.in. ze szkoleń, konsultingu i sprzedaży detalicznej.http://www.mandrakesoft.com/company/investors/newsletter/sn041109

Kreatywny menedżer pakietów

Problem różnych, niezgodnych ze so-bą systemów pakietów dla Linuk-

sa powraca co pewien czas. Oprócz naj-ważniejszych typów, takich jak RPM, DEB czy TGZ, istnieje jeszcze kilka innych for-matów, ale nawet wśród tych głównych pakiety z tej samej rodziny, które zosta-ły przygotowane dla jednej dystrybucji, nie zawsze udaje się bezboleśnie zaapli-kować w innej.

Próbą rozwiązania tego problemu jest Smart Package Manager. Oczywiście, za jego pomocą nie uda się przykładowo uregulować kwestii niepasujących do sie-bie wersji aplikacji i wymaganych przez nią bibliotek, ale radzi sobie doskonale w sprawach związanych bezpośrednio z różnymi typami i wersjami pakietów.

Smart jest w zasadzie meta-menedże-rem, tzn. obsługuje trzy wymienione wy-żej najpopularniejsze rodzaje pakietów za pomocą odpowiednich programów (rpm, dpkg czy pkgtool). Z braku odpowiednich reguł nie jest możliwe mieszanie zależno-ści między pakietami różnego typu, ale umie obsługiwać całe ich repozytoria; są to obecnie następujące formaty: APT (dla .deb i .rpm), RPM-MetaData, używane przez yum, novellowskie kanały Red Car-pet, RPM Header List, znane z dysków in-stalacyjnych Red Hata i Conectivy, katalo-gi RPM-ów bez indeksów, URPMI z Man-drakelinuksa, repozytoria Slackware oraz dodatkowo, opisy repozytoriów zwiercia-dlanych (mirror) w formatach up2date i Conectivy.

Smart Package Manager był dotąd te-stowany na dystrybucjach Conectiva, De-

bian i Fedora Core. Za jego pomocą są au-tomatycznie wybierane najlepsze dostęp-ne rozwiązania dla dostępnych wersji pa-kietów, z którymi nie zawsze radzą sobie apt-get/apt-rpm czy yum. Logika menedże-ra pozwala wybierać do instalacji pakiety o numerze mniejszym niż najnowsze, jeżeli tylko pozwoli to spełnić wszystkie zależno-ści (plik README omawia dokładnie czte-ry takie przykłady), uwzględniając przy tym zadane priorytety. Smart radzi sobie w sce-nariuszach z niespójnym systemem pakie-tów, jak również umie go naprawiać.

Program jest modularny, więc oferuje do wyboru interfejs tekstowy w stylu apt-get, interfejs graficzny oparty o bibliotekę GTK+ (za pośrednictwem pygtk, ponieważ jest napisany głównie w Pythonie) oraz in-teraktywną powłokę. Autorem SmartPM jest Gustavo Niemeyer z brazylijskiej Conectivy, opiekun portu APT-RPM oraz graficznego menedżera pakietów Synaptic. Smart jest w tej chwili w fazie testów beta.http://smartpm.org/

Interfejs Smart Package Managera nie przypadkiem jest podobny do Synaptica – oba mają tego samego autora

Monkey Bubble

Kto jeszcze nie zna znakomitej gry Frozen Bubble ? Chyba tylko nie-

liczni nie mieli dotąd okazji przekonać się o tym, jak potrafi wciągnąć na długi czas. Monkey Bubble to jej bliska kuzyn-ka, klon gry Bust'a'move. Zamiast sym-patycznego pingwinka, mamy tu małpę, a w tle przewijają się motywy rodem z dżungli, ale od wersji 0.3.2 największą atrakcją gry jest możliwość zabawy przez sieć, nawet w cztery osoby.

Najnowsze drobne zmiany w pakiecie dla Mandrakelinux to łatka dla Gstreamera oraz ikonka aplikacji. Instalacja gry polega na wydaniu w trybie wiersza poleceń admi-nistratora komendy urpmi monkey-bubble

W sieciowej rozgrywce może brać udział do 4 uczestników

lub wybranie jej przez instalator graficzny, ale w tym celu należy mieć w systemie za-rejestrowane repozytorium Contrib.http://home.gna.org/monkeybubble/

Page 23: Linux+_02_2005

[email protected]

19www.lpmagazine.org

dział prowadzi: Karol Kozimorauroxaktualnościaktualności

NewsAurox w USAJest duża szansa, że już niedługo Aurox trafi do Stanów Zjednoczonych. Zakończono właśnie prace nad wersją 10.1 US i w tej chwili trwają rozmowy z amerykańskimi sieciami i dystrybutorami. Jeśli negocjacje zakończą się sukcesem, to w pierwszym kwartale 2005 roku, pierwsza partia największej polskiej dystrybucji Auroksa popłynie do Stanów Zjednoczonych. Nie będzie to pierwsza podróż Auroksa za ocean; od kilku miesięcy hiszpańska wersja Auroksa jest dostępna w Meksyku.

Aurox na komputerach MaxdataMaxdata, niemiecki producent sprzętu komputerowego, kontynuuje dołączanie systemu Aurox do notebooków i modeli desktop. Od stycznia 2005 roku Aurox 10.1 jest dołączany do modeli m-book, eco, vision oraz serii Pro i wszystkich komputerów PC. Jak mówi Anna Gidyńska, dyrektor Działu Software i Hardware firmy Aurox, w tej chwili trwają rozmowy z pozostałymi dystrybutorami komputerów PC oraz notebooków. Być może już niedługo coraz więcej firm będzie oferować Auroksa jako alternatywę dla innych systemów operacyjnych, dołączanych do nowych komputerów.http://maxdata.de/

Nowe usługi w Nowym RokuOd stycznia ruszyła testowa usługa Internet Update. Dzięki niej można ściągać z Sieci pakiety do Auroksa (od wersji 10.1) i dokonywać uaktualnień posiadanej już wersji Auroksa. Jest ona wykonywana przy wykorzystaniu już istniejących narzędzi (yum) w połączeniu z certyfikatami bezpieczeństwa. Ponadto, istniejące pakiety rpm są podpisywane w celu poświadczenia ich oryginalności.Również w styczniu ruszyła usługa wsparcia technicznego dla użytkowników Auroksa. Dzięki temu, każdy problem pojawiający się przy korzystaniu z systemu Aurox, jest błyskawicznie rozwiązywany przez dział techniczny Auroksa. Od wersji 10.2 Aurox będzie oferować 7-dniowe, bezpłatne wsparcie techniczne, bardzo przydatne przy instalowaniu systemu oraz początkowym konfigurowaniu komputera.

Uaktualnione PHP

Już po wydaniu Auroksa 10.1 wykry-to błąd w dołączonym do niego pa-

kiecie php-4.3.9-10.1.aur.1. Błąd objawia się przy próbie wykorzystania pakietów korzystających z wbudowanych w PHP

funkcji obsługi wyrażeń regularnych (perl compatible regular expressions). Zamiast wyniku skryptu jest wtedy wy-świetlany komunikat podobny do nastę-pującego: Warning: preg_match: inter-nal pcre_fullinfo() error -3. Powodem jest skompilowanie PHP z systemową bi-blioteką obsługi wyrażeń regularnych, z którą najwyraźniej sobie nie radzi. Rozwiązaniem jest pobranie uaktualnio-nego pakietu z repozytoriów Auroksa lub przekompilowanie pakietu z obsłu-gą wewnętrznej biblioteki pcre (należy zmienić opcję --with-pcre-regex=/usr na --with-pcre-regex).

http://aurox.org/ http://php.net/

Sklep z produktami auroksowymi również wykorzystuje PHP

Zmiany w Auroksie 10.2

Prace nad Auroksem 10.2 dobiegają po-woli końca. W odróżnieniu od zmian

w dwóch poprzednich wersjach, popraw-ki mają tu charakter wybitnie ewolucyjny. Są to przede wszystkim zmiany związane z bezpieczeństwem: np. aktualizacja Se-curity Enhanced Linux, zaawansowanego systemu zarządzania dostępem, rozwijane-go przez National Security Agency. Oprócz tego, Postfix, przez wielu ekspertów uwa-żany za bezpieczniejszy, zastąpił Sendma-ila w roli domyślnego serwera poczty. Do-datkowo, miejsce MySQL 4.0 zajęła seria 4.1, uznana za gotową do środowisk pro-

dukcyjnych. Programistów ucieszy zapew-ne Python 2.3.4 oraz Perl 5.8.5. Użytkowni-cy z pewnością ucieszą się z nowego Yuma, działającego teraz szybciej i lepiej radzące-go sobie z zależnościami. Cieszy oko KDE 3.3.2, poprawiające błędy poprzedniej wer-sji. Dodatkowo, pojawiły się nowe sterow-niki do bezprzewodowych kart sieciowych i usprawniona została praca z niektórymi laptopami. Mamy nadzieję, że wersja 10.2 będzie sprawiać użytkownikom jeszcze więcej satysfakcji niż wersja poprzednia.

http://aurox.org/

Prace nad nowym Auroksem trwają ...

Page 24: Linux+_02_2005

gentooaktualnościaktualności

News

20

[email protected] dział prowadzi: Witold Kieraś

luty 2005

Gentoo na DVDGentoo Store oferuje w sprzedaży pełną wersję 2004.3 Gentoo Linux dla architektury x86, w tym pakiety binarne dla wszystkich wspieranych podarchitektur, czyli x86, i686, Pentium 3, Pentium 4 i Athlon XP. Wszystko to na jednej bootowalnej płycie DVD. W sklepie dostępny jest również zestaw dwóch płyt DVD zawierających kompletne archiwum distfiles wersji 2004.3 Gentoo, w tym kody źródłowe programów, za wyjątkiem sekcji gier, którą pominięto ze względu na brak miejsca na płytach. Zyski ze sprzedaży zostaną częściowo przekazane na konto Gentoo Foundation.http://store.gentoo.org/

Repozytorium skryptówPomysł stworzenia centralnego repozytorium skryptów dla Gentoo, pomocnych w administrowaniu systemem, powstał już ponad rok temu. Wówczas z powodu braku rąk do pracy projekt nie wyszedł poza fazę planów. Patrick Laue, jeden z deweloperów Gentoo, postanowił wziąć sprawy w swoje ręce i stworzył prowizoryczne repozytorium skryptów, które być może przerodzi się z czasem w oficjalną część dystrybucji. Użytkownicy mogą wysyłać Patrickowi swoje skrypty. Z założenia mają być one dostępne jako public domain, ale jeśli autor ma inne życzenie, powinien załączyć do skryptu informacje licencyjne.http://gentooexperimental.org/scripts/http://www.gentoo.org/proj/en/glep/glep-0015.html

Gentoo preinstalowaneLuksemburska firma Genesi S.a.r.l. rozpoczęła sprzedaż swoich komputerów Open Desktop Workstations, opartych na procesorze PegasosPPC, z preinstalowanym systemem Gentoo Linux 2004.3. To pierwszy przypadek oferowania sprzętu z Gentoo na pokładzie – mamy nadzieję, że nie ostatni.http://www.genesi.lu/

Larry the Cow SuperstarSpecjalnie z okazji zorganizowanego niedawno we Włoszech Gentoo-Day (zwanego też G-Day), Peach, włoski użytkownik Gentoo i stały bywalec forum, stworzył kilka grafik i plakatów. Na większości z nich widnieje Larry the Cow, nieoficjalna maskotka dystrybucji. Swoje prace Peach udostępnił na licencji GPL.http://forums.gentoo.org/viewtopic.php?t=257123

Najwyższa pora na jądra 2.6.x

G entoo to jedna z dystrybucji, któ-re najszybciej oferują swoim użyt-

kownikom dostęp do najnowszych wer-sji oprogramowania, a to za sprawą syste-mu Portage. Jednocześnie, czytając doku-mentację Gentoo, na bieżąco aktualizowa-ną, można odnieść wrażenie, że jej twórcy mają bardzo konserwatywny stosunek do świeżo wydanych wersji różnych progra-mów. Przypadkiem skrajnym jest tutaj ją-dro systemowe – w czasie gdy większość dystrybucji dawno już przeszła na jądra z gałęzi 2.6.x, niemal rok po jego premie-rze, twórcy dokumentacji Gentoo wciąż polecają jako domyślne jądro 2.4.x. Wydaje się, że jest to zupełnie świadoma polityka deweloperów, ale ten stan nie może prze-cież trwać zbyt długo, bo praktyka użyt-kowników zweryfikuje nawet najbardziej twarde założenia teoretyczne. Ogrom no-wości, które przynosi jądro 2.6.x – od ob-sługi wielu nowych urządzeń, aż po pod-system dźwięku ALSA – powoduje, że ra-czej niewielu użytkowników decyduje się na instalację starego jądra.

Na szczęście już wkrótce, bo od wer-sji 2005.0, domyślnym jądrem Gentoo sta-

nie się jądro z gałęzi 2.6.x. Już w wer-sji 2004.3 LiveCD pracował pod kon-trolą właśnie tego jądra, co spotkało się z dobrym przyjęciem ze strony użytkow-ników i testerów. Ponadto, częściowa mi-gracja już się dokonała – w wersji 2004.3 dla mniej popularnych architektur, takich jak ppc, ppc64, amd64 czy ia64, poleca-ną wersją jądra była 2.6.x. W przypadku architektury x86, najpopularniejszej, a za-tem i wymagającej największej ostroż-ności, zdecydowano się odłożyć termin ostatecznej migracji.

Pieczołowitość i precyzja, z jaką de-weloperzy Gentoo podchodzą do oficjal-nej migracji na jądro z nowej gałęzi, jest naprawdę imponująca. Tym samym udało im się połączyć wodę z ogniem – uczynili z Gentoo dystrybucję zawierającą naj-świeższe oprogramowanie, pozostającjednocześnie konserwatywną niczym, nieszukając daleko, Debian, co jest cechą niezwykle cenioną przede wszystkim w środowisku produkcyjnym.

http://www.gentoo.org/doc/en/migration-to-2.6.xml

Emerge graficznie

Gdyby mierzyć zapotrzebowanie na oprogramowanie liczbą powstających

projektów mających spełniać żądane funk-cje, to z pewnością graficzny interfejs dla Portage i polecenia emerge znalazłyby się w czołówce. Najpierw był projekt KPorta-ge – jak łatwo się domyślić, miał być to pro-gram związany z KDE. Niestety, autorom zabrakło zapału, aby doprowadzić go do wersji 1.0, a obecnie zniknął on już nawet z drzewa Portage. Gentoo nie znosi próżni, więc mamy obecnie co najmniej trzy rów-nolegle rozwijane projekty mające spełniać podobne funkcje. Dwa z nich to projekty dla KDE – pierwszy, Guitoo, ma ambicję bycia oddzielną aplikacją, natomiast drugi, Kentoo, integruje się z Centrum Sterowania KDE. Trzeci z wzmiankowanych projektów to Porthole, oparty na GTK.

Ze wszystkich trzech chyba najcie-kawiej prezentuje się Guitoo, bo oprócz standardowych funkcji przeszukiwania drzewa i dokonywania uaktualnień sys-temu, oferuje również narzędzie Gentoo Watcher, będące aplikacją ukrytą w tacce systemowej i śledzącą zasoby RSS strony http://www.gentoo.org/ w poszuki-waniu najnowszych pakietów, a także

Praca z Guitoo

sprawdzającą najnowsze raporty bezpie-czeństwa GLSA (Gentoo Linux Security Ad-visories). Dzięki Gentoo Watcher możemy dosłownie jednym kliknięciem prawego przycisku myszy przesłać do Guitoo żąda-nie aktualizacji wybranego pakietu.

Interfejsy graficzne mają swoich zwo-lenników i przeciwników. Dodatkowo, w przypadku interfejsu dla Portage, ci pierwsi poróżnią się jeszcze co do wybo-ru jednego z nich. Warto samemu spraw-dzić, o co tak właściwie chodzi i zainsta-lować wszystkie...http://guitoo.sourceforge.net/http://www.ralfhoelzer.com/kentoo.htmlhttp://porthole.sourceforge.net/

Page 25: Linux+_02_2005

pldaktualnościaktualności [email protected]

21

dział prowadzi: Piotr Skwarna

www.lpmagazine.org

NewsDokumentacja PLDUżytkownicy korzystający z dystrybucyjnej gałęzi 2.0 lub osoby planujące wkrótce ją zainstalować nie są pozostawieni samym sobie, ponieważ grupa deweloperów przygotowała świetną dokumentacje do tego wydania, znajdującą się pod adresem http://pl.docs.pld-linux.org/. Warto również dodać, że ciągle potrzeba nowych ludzi do rozbudowy kolejnych działów, jak i tłumaczenia całości na angielski.

Rotacja językowaWraz ze zbliżającym się wydaniem PLD Ac deweloperzy PLD zdecydowali się przenieść rozmowy z listy devel-pl na devel-en. Ma to na celu pozyskanie większej ilości programistów, testerów oraz końcowych użytkowników spoza granic naszego kraju.http://lists.pld-linux.org/pipermail/pld-discuss-pl/2004-September/006034.html

Sponsorzy potrzebniNiestety, kieszenie deweloperów w przeciwieństwie do pomysłów nie są nieograniczone. Aktualnie projekt PLD potrzebuje USB Pen Drive 256MB oraz komputera PPC G4 z CDROM dla ukończenia implementacji obsługi szyfrowanych partycji w rc-scripts oraz geninitrd, a także utworzenia wersji PLD Live CD na PPC.http://www.pld-linux.org/Members/arekm/SponsorsNeeded

Nowości w AcOsoby, które lubią być na bieżąco, z pewnością zainteresuje fakt, że w repozytoriach pakietów test oraz ready można już znaleźć KDE 3.3.1, GNOME 2.8.1 czy chociażby X11-6.8.1. Oczywiście, aby znalazły się one w głównym repozytorium, potrzebne są osoby, które będą chciały je przetestować.

Nowy system kontroli błędówOd jakiegoś czasu można również korzystać z nowego systemu zgłaszania błędów. Nowe rozwiązanie oparte jest na zmodyfikowanym Flysprayu, a dodatkowo można wykorzystać go do zgłaszania błędów oraz sugestii dotyczących PLD Live CD, Rescue CD ... oraz PLD 3.0 (Th).

Własne LiveCDŁukasz Pawelczyk, projektując PLD Live CD, zamieścił na płycie skrypty do remasteringu, w znacznym stopniu ułatwiające stworzenie własnej modyfikacji dystrybucji. Ich użycie ogranicza się jedynie do skopiowania Live CD na dysk pierwszym skryptem oraz (po dodaniu lub usunięciu pakietów Poldkiem) wygenerowania gotowego obrazu iso drugim.

Zarządzanie pakietami w PLD

Standardowym narzędziem do za-rządzania pakietami w PLD Linux

jest Poldek. Dzięki niemu możemy za-instalować, uaktualnić bądź usunąć z systemu dowolne pakiety. Poldek ob-sługuje zależności w pakietach, dzięki czemu nawet początkujący użytkow-nik nie będzie miał problemów z in-stalacją. Obsługuje różne źródła pa-kietów: dysk, ftp, http czy rsync. Wiel-ką zaletą jest również możliwość ak-tualizacji lokalnych indeksów pakie-tów w postaci łat, dzięki czemu, przy drobnych zmianach, pobieramy jedy-nie kilkukilobajtowy plik indeksu, za-miast kilkumegabajtowej całości, co na pewno jest ważne zważając na ja-kość polskich łączy. Poldek może pra-cować w dwóch trybach: wsadowym (podobny do apt-get) lub interaktyw-nym (obsługującym dopełnianie nazw i historie, podobnie jak powłoka). W wersji 0.19 diametralnej zmianie ule-gły pliki konfiguracyjne, gdyż wpro-wadzono m.in.:

• obsługę repozytoriów pakietów Fedory i Red Hata ;

• ułatwiono przeglądanie/instalację pakietów należących do różnych repozytoriów PLD.

Osoby ceniące bardziej wygodną ob-sługę pakietów na pewno zainteresu-je Poldex – interfejs do Poldka, napi-sany w Perlu, posiadający udogodnie-nia, takie jak:

• sortowanie pakietów według nazwy, kategorii (zainstalowany/niezainstalowany) oraz grup, do których należą pakiety (bardzo przydatne np. gdy chcemy przej-rzeć, jakie mamy gry w pakietach);

• możliwość kolorowania nazw pa-kietów według źródła pochodze-nia;

• bezpośredni dostęp do konfiguracji Poldka i samego programu.

Osoby przedkładające tryb graficzny nad konsolę także nie będą miały po-wodów do zmartwień, gdyż z myślą o nich Bartosz Taudul przygotował gra-ficzną nakładkę na Poldka, napisaną z wykorzystaniem biblioteki Q t, o przy-jemnie brzmiącej nazwie Pacman. In-stalacja oprogramowania następuje po-przez przeglądanie grup, w jakie zosta-ły skatalogowane pakiety, dzięki czemu nie znając nazw programów możemy ła-two znaleźć interesujące nas programy.http://www.yogib.risp.pl/

RAKS Linux Serwer

R AKS Linux Server (RLS) jest dys-trybucją przygotowaną na po-

trzeby RAKSSQL , zintegrowanego sys-temu wspomagającego zarządzanie w małych i średnich firmach. Zosta-ła ona oparta na jednym z najdyna-miczniej rozwijanych projektów open-source'owych – dystrybucji PLD Linux. Celem jej powstania było stworzenie dystrybucji opartej o system Linux dla wewnętrznego serwera w firmie. Sys-tem został tak zaprojektowany, aby do jego zainstalowania i konfiguracji nie była konieczna znajomość Linuksa. Po zainstalowaniu zarządzanie serwe-rem odbywa się poprzez przeglądarkę WWW z dowolnego komputera w sie-ci lokalnej.

Podstawowym założeniem całe-go projektu było stworzenie dystrybu-cji przejrzystej oraz łatwej w instalacji i obsłudze nawet przez osoby nie zna-

jące Linuksa. Z tego powodu w menu głównym instalatora została dołożo-na nowa pozycja – Uproszczona insta-lacja. Po jej wybraniu instalator zada-je zaledwie kilka pytań, takich jak zgo-da na usunięcie dotychczasowej zawar-tości dysku, profil instalacji czy hasło administratora, po czym rozpoczynainstalację pakietów. Po jej zakończe-niu i restarcie komputera system jest gotowy do pracy. Dla bardziej zaawan-sowanych użytkowników dostępne są również wszystkie funkcje stan-dardowego instalatora PLD, z których mogą skorzystać osoby chcące mieć nieco większy wpływ na proces in-stalacji.

http://www.raks.pl/

Page 26: Linux+_02_2005

narzędzia deweloperskie

22 luty 2005

KDevelop – narzędzie do tworzenia aplikacji z interfejsem graficznymMarek Sawerwain

Gdy chcemy poznać jakieś narzędzie i sprawdzić, czybędzie ono przydatne w pra-cy, dobrze jest wykorzystać

je do realizacji jakiegoś zadania. Załóż-my, że chcemy napisać niewielką apli-kację, która będzie stanowił graficzną nakładkę na program Wget. KDE oferuje nam bardzo dobry program dla progra-mistów o nazwie KDevelop. W tym arty-kule pokażemy, jak z jego pomocą osią-gnąć zdefiniowany powyżej cel, a tym samym udowodnimy, że jest on aplikacją godną polecenia.

Kilka założeń na początekInterfejs naszego programu będzie pre-zentował się bardzo skromnie. Wystarczą nam dwa przyciski: jeden do zamknięcia okna oraz drugi, którym rozpoczniemy proces ściągania pliku. Będziemy rów-nież potrzebowali komponentu o typie QLineEdit, którego nazwiemy Address-

Text. Umieścimy w nim adres pliku, który chcemy ściągnąć. Ponieważ pobie-ranie pliku zrealizujemy za pomocą innej aplikacji (co więcej, będzie ona działała w trybie konsoli), to będziemy musieli przechwytywać standardowe wyjście, na które Wget wysyła wszelkie komunikaty podczas swojej pracy. Wykorzystamy do tego celu komponent o typie QtextEdit, którego nazwiemy MessageBoxText.

Jak zawsze, warto przygotować nie-wielki schemat, w którym przedstawi-my najważniejsze zdarzenia, które będą zachodzić w naszym programie. Został on przedstawiony na Rysunku 1. Jak widać, proces ściągania pliku składa się z kilku pomniejszych zadań. Pierwszym

jest poznanie adresu pliku – zakładamy, że zostanie on podany przez użytkow-nika. Następnie, gdy dysponujemy już adresem, jesteśmy gotowi do wywoła-nia programu Wget. KDE oferuje gotową klasę o nazwie KProcess, która wspoma-ga to zadanie. Jej najważniejszą właści-wością jest fakt, iż pozwala w łatwy

O autorzeAutor zajmuje się tworzeniem

oprogramowania dla WIN32 i Linuksa. Zainteresowania: teoria

języków programowania oraz dobra literatura.

Kontakt z autorem: [email protected]

Na płycie CD/DVDNa płycie CD/DVD znajduje się

kod źródłowy programu oraz wszystkie listingi z artykułu.

Instalacja programu KDevelopPonieważ już sporo czasu upłynęło od wydania wersji 3.0 programu, to więk-szość dystrybucji Linuksa oferuje ten program – wystarczy tylko zainstalować pakiet zawierający KDevelopa.

Po instalacji może okazać się, iż nie możemy wywołać opcji Uruchom auto-make. Okazuje się, że KDevelop wymaga do poprawnej pracy wersji Automake wyższej niż 1.6, a Autoconf wyższej niż 2.5. Problem ten pojawia się np. w wersji Mandrakelinux 10.1, ale rozwiązanie jest bardzo proste – wystarczy doinstalować odpowiednie pakiety.

Z użytkowaniem KDevelopa wiąże się też inny problem, gdyż po utworzeniu projektu i wykonaniu z nim jakichś prac, może okazać się, że KDevelop nie chce ponownie wczytać naszej pracy, generu-jąc sygnał 11. Rozwiązaniem jest skaso-wanie w katalogu projektu dwóch plików: pierwszy posiada rozszerzenie kdevses, a drugi pcs.

Podczas instalacji KDevelopa warto upewnić się, czy zainstalowana zostanie dokumentacja, gdyż omawiane narzę-dzie ma bardzo dobry moduł do doku-mentacji, który bardzo przydaje się pod-czas pisania jakiejkolwiek aplikacji, nawet tak prostej jak nasz projekt.

dvswavfda advaefvrv

dbvxcvfgm ggh fn trhwhg

bbbwbr

Page 27: Linux+_02_2005

23

narzędzia deweloperskiekdevelop

www.lpmagazine.org

sposób przechwycić dane kierowane na standardowe wyjście (ang. stdout) oraz na standardowe wyjście o błędach (ang. stderr), co czasem również może się przydać.

Tworzymy projektPierwszym krokiem jest utworzenie nowego projektu w KDevelop. Nasz program piszemy dla środowiska KDE, więc po uruchomieniu programu prze-chodzimy do menu Projekt. Wybie-ramy z niego Nowy projekt.... Pokaże się okno podobne do tego z Rysun-ku 2. Na liście odszukujemy gałąź C++, a następnie KDE, gdzie znajduje-my pozycję Simple KDE Application. We Właściwościach musimy podać Nazwę Aplikacji. Załóżmy, że projekt będzie nazywał się wget_gui. Pozosta-łe pola mają dla nas mniejsze znaczenie. Wybieramy teraz przycisk Następny, aby przejść do następnego okna, w którym będziemy mogli wybrać system kon-troli wersji. Nam nie jest on potrzebny, gdyż tworzona przez nas aplikacja nie wymaga pracy grupowej. Wybieramy

jeszcze raz przycisk Następny. Zobaczy-my okno, w którym znajduje się tekst licencji. Będzie on dołączany do każde-go pliku nagłówkowego. Jeśli chcemy, aby do każdego takiego pliku były dołą-czane inne informacje, w tym miejscu możemy to zmienić. Gdy naciśniemy raz jeszcze przycisk Następny, to tym razem przycisk zmieni etykietę na Koniec i po jego naciśnięciu zostanie wygenerowa-ny podstawowy szkielet projektu.

Zanim zaczniemy go kompilować, należy jeszcze wykonać dwie czynności. Z okna Buduj wybieramy opcję Uruchom Automake. Po kilku chwilach, gdy pro-gram utworzy wszystkie skrypty, z tego samego menu Buduj wybieramy opcję Uruchom Configure. Wszystkie komuni-katy będą wyświetlane w okienku na dole programu. Dopiero po zakończe-niu działania skryptu configure możemy dokonać kompilacji projektu naciska-jąc klawisz [F8 ] lub wybierając z menu Buduj opcję Buduj projekt. Utworzony program uruchomiamy wciskając klawi-sze [Shift ]+[F9 ] – z menu Buduj opcja Wykonaj program.

Projektujemy formularzPo utworzeniu projektu przygotujemy w pierwszej kolejności okno formula-rza. W górnym oknie Menadżera auto-make (z prawej strony głównego okna z kodem) wybieramy gałąź z naszym pro-jektem, czyli wget_gui, a następnie kata-log src. Gdy w dolnym oknie Menadże-ra automake klikniemy prawym przyci-skiem myszy na dowolnym pliku, pokaże się nam małe menu z kilkoma opcjami. Wybieramy opcję Utwórz nowy plik.... Zobaczymy takie okno, jak na Rysunku 3.Do pola Nazwa pliku wpisujemy np. wget_gui_widget.ui, a następnie wybiera-my typ pliku – Widget. Tworzymy widget, który zostanie podłączony do głównego okna naszej aplikacji. Okno tworzenia tego pliku można także uzyskać wybie-rając z menu Plik opcję Nowy.

Po wykonaniu tej operacji jeste-śmy gotowi do utworzenia interfejsu za pomocą QtDesignera. Niestety, jeśli uży-wamy nowej wersji KDevelopa, to po dwukrotnym kliknięciu na pliku wget_gui_widget.ui, uruchomi się tylko prze-glądarka KUIViewer, a nam jest potrzeb-ny QtDesigner. W tym celu wystarczy prawym przyciskiem myszy wybrać pod-menu Otwórz w i z opcji, które się nam wyświetlą, wybrać Projektanta Qt.

Ułożenie dwóch przycisków (Push-Button z sekcji Buttons okna Toolbox) oraz dwóch komponentów (LineEdit i TextEdit z sekcji Input) nie powinno nikomu sprawić trudności, ale trzeba odpowiednio zadeklarować sygnały.

Rysunek 1. Główne zdarzenia pojawiające się w programie

Rysunek 2. Tworzenie nowego projektu

Rysunek 3. Tworzenie pliku formularza

Page 28: Linux+_02_2005

24

narzędzia deweloperskie

luty 2005

Z menu Edit wybieramy pozycję Slots... i deklarujemy dwie funkcje: Download-BTN_Slot() oraz CloseAppBTN_Slot(). Następnie wciskamy klawisz [F3 ] i kli-kamy myszką na formularzu. Wywo-łujemy okno View and Edit Connec-tions, w którym, tak jak to widać na Rysunku 4, podłączamy sygnały clickedto dwóch funkcji odpowiadających za przyciski ściągania oraz zakończe-nia pracy aplikacji (nadawcą jest odpo-wiedni przycisk, a odbiorcą – formularz,czyli okno).

Po utworzeniu pliku w formacie ui przystępujemy do generowania tzw. pliku podklasy. Ta czynność także zosta-ła w pełni zautomatyzowana. Wybiera-my plik ui z okna Menadżera automa-ke i prawym przyciskiem myszy wywo-łujemy menu, z którego wybieramy opcję

Element podklas.... Pokaże się takie okno, jak na Rysunku 5.

Jedyne, co musimy zrobić, to wpisać nazwę klasy: wgetGuiWidget, bowiem nazwa pliku uzupełni się samodzielnie. Zwróćmy też uwagę na listę z metodami – są tam nasze funkcje (sloty), które zde-finiowaliśmy w programie QtDesigner. Jeśli na liście nie zostały wymienione powyższe sloty, to niestety trzeba prze-rwać generowanie podklasy i powrócić do QtDesignera, aby naprawić ten błąd.

Pierwsze poprawkiProjekt, który utworzyliśmy, zawie-ra tylko jeden widget, a jest nim ety-kieta Hello World. Należy w jakiś sposób podmienić ten widget na formu-larz, który przygotowaliśmy wcześniej w programie QtDesigner. W pierwszej kolejności otwieramy plik o nazwie wget_gui.cpp. Zobaczymy plik o treści podobnej do Listingu 1. Na początku dołączamy plik nagłówkowy formularza, który został przez nas zaprojektowany:

#include "wgetguiwidget.h"

Następnie, w samym konstruktorze, zamiast linii tworzącej etykietę:

new QLabel( "Hello World", this,S

"hello label" );

wystarczy wpisać dość podobne wyraże-nie tworzące nasz formularz:

new wgetGuiWidget(this, "wget gui", 0);

W ten sposób, po kompilacji programu, zamiast etykiety zobaczymy zaprojek-towany przez nas formularz. Jak widać, zmiany mają charakter tylko kosmetycz-ny. Zaletą takiego podejścia jest fakt, że nie musimy wprowadzać żadnych zmian w funkcji main. Kod, który został tam wygenerowany, możemy pozostawić bez zmian.

Przycisk kończący pracę programuW tym momencie możemy zająć się obsługą dwóch przycisków, które znaj-dują się w naszym programie. Ich imple-mentacja jest zawarta w pliku wgetgu-iwidget.cpp. Jest to ten sam plik podkla-sy (ang. subclass), który wygenerowa-liśmy na podstawie formularza z pliku wget_gui_widget.ui.

Zaczniemy od przycisku, którego zadaniem jest zamknięcie aplikacji. Jak łatwo się domyśleć, jest to bardzo łatwe do wykonania. Na początku pliku dołą-czamy dodatkowe pliki nagłówkowe:

#include <qapplication.h>

#include <kapplication.h>

Znajdują się w nich klasy reprezentujące całą aplikację.

W każdej aplikacji KDE mamy dostęp do obiektu kapp, który reprezentuje obiekt aplikacji. Wywołanie metody quit spowoduje zamknięcie całego programu. W naszej aplikacji funkcję do zamknięcia programu nazwaliśmy CloseAppBTN_Slot. Implementacja tej metody sprowadza się do wywołania metody quit z obiek-ty kapp:

Rysunek 4. Projektowanie interfejsu oraz podłączanie sygnałów i funkcji

Rysunek 5. Tworzenie pliku podklasy

Listing 1. Implementacja konstruktora wget_gui, w którym tworzymy formularz programu

#include "wget_gui.h"

#include <qlabel.h>

#include <kmainwindow.h>

#include <klocale.h>

#include "wgetguiwidget.h"

wget_gui::wget_gui() : KMainWindow( 0, "wget_gui" ){

// set the shell's ui resource file

setXMLFile("wget_guiui.rc");

// new QLabel( "Hello World", this, "hello label" );

new wgetGuiWidget(this, "wget gui", 0);

}

wget_gui::~wget_gui()

{ }

#include "wget_gui.moc"

Page 29: Linux+_02_2005

25

narzędzia deweloperskiekdevelop

www.lpmagazine.org

void wgetGuiWidget::CloseAppBTN_Slot(){

kapp->quit();

}

Ściąganie plikuOprogramowanie drugiego przycisku to nasze główne zadanie. Będziemy odwo-ływać się do innych komponentów, więc konieczne jest dołączenie odpowiednich plików nagłówkowych. Ponieważ stosu-jemy pola edycji o typie QLineEdit oraz QTextEdit, to dołączamy następujące pliki nagłówkowe:

#include <qlineedit.h>

#include <qtextedit.h>

Jak już wcześniej wspomniałem, wy-korzystujemy również klasę KProcess,więc będzie nam potrzebny plik nagłówkowy kprocess.h. Po tych wstępnych czynnościach przystępuje-my do implementacji funkcji Downlo-adBTN_Slot. Listing 2 zawiera jej pełny kod źródłowy.

Pierwszym krokiem jest zadeklarowa-nie dwóch zmiennych. Pierwsza z nich, task, reprezentuje proces zewnętrzny,

który musimy utworzyć, aby wykonać polecenie wget. Bardzo istotna jest rów-nież druga zmienna – reader. Jest to zde-finiowana przez nas klasa, która jest nam potrzebna, aby przechwytywać dane ze standardowego wyjścia.

W następnej linii umieszczamy komu-nikat tekstowy o tym, że proces wywoła-nia wget właśnie się rozpoczyna.

Teraz możemy przystąpić do właści-wego zadania. Tworzymy obiekt task:

task=new KProcess;

Po jego utworzeniu możemy usta-lić postać wywołania polecenia wget. Zakładamy, że będzie ono wywoływane w następujący sposób:

wget --progress=dot S

http://www.adres.com.pl/katalog/plik.zip

Wielką zaletą klasy KProcess jest moż-liwość składania polecenia z fragmen-tów za pomocą przeciążonego operato-ra <<. Pierwszy fragment, co jest oczywi-ste, musi zawierać nazwę polecenia. Kod, w którym budujemy postać polecenia,

zgodnie z tym, co podałem powyżej, jest następujący:

*task << "wget –progress=dot";

*task << AddressText->text();

Adres pliku jest odczytywany z wid-getu AddressText. Warto jeszcze usta-lić, jaki typ powłoki zostanie użyty do wywołania polecenia wget. Doko-nujemy tego metodą setUseShell. Kod, który wykonuje tę czynność, jest nastę-pujący:

task->setUseShell(true, "/bin/sh");

W tym momencie moglibyśmy uru-chomić nasz proces metodą start, ale wszystkie komunikaty z programu wget są skierowane na konsolę, z której uru-chomiamy program. Jeśli robimy to z poziomu środowiska graficznego, to nie zobaczymy żadnych komunikatów. Z tego powodu należy przechwycić wszystkie dane kierowane na strumie-nie stdout oraz stderr. Wykorzystujemy w tym celu obiekt reader. Aby mógł on poprawnie wykonywać swoje działanie, należy do pola edt skopiować wskaźnik na komponent QTextEdit o nazwie Mes-sageBoxText:

reader.edt=MessageBoxText;

Następnym zadaniem do wykonania jest podłączenie sygnału przeznaczonego do odbioru danych skierowanych na stan-dardowe strumienie przez obiekt typu KProcess. Wykonujemy je metodą con-nect z klasy QApplication. Kod z Listin-gu 2, wykorzystując obiekt reader, prze-chwytuje dane ze standardowego wyj-ścia oraz ze standardowego wyjścia o błędach.

Podłączenie sygnału dla pierwsze-go przypadku wygląda w następujący sposób:

QApplication::connect(task,

SIGNAL(receivedStdout

(KProcess *, char *, int)),

&reader,

SLOT(read_stdout(KProcess *, char *,S

int )));

Polecenie dla strumienia stderr jest bardzo podobne.

Używając QApplication::connect sięgamy do wewnętrznych mechani-

Listing 2. Implementacji metody DownloadBTN_Slot, odpowiedzialnej za ściągnięcie pliku

void wgetGuiWidget::DownloadBTN_Slot(){ KProcess *task; Reader reader;

MessageBoxText->append(">>> process begin <<<");

task=new KProcess; *task << "wget –progress=dot"; *task << AddressText->text(); task->setUseShell(true, "/bin/sh");

reader.edt=MessageBoxText;

QApplication::connect(task, SIGNAL(receivedStdout(KProcess *, char *, int)), &reader, SLOT(read_stdout(KProcess *, char *, int )));

QApplication::connect(task, SIGNAL(receivedStderr(KProcess *, char *, int)), &reader, SLOT(read_stderr(KProcess *, char *, int )));

if(task->start(KProcess::Block, Kprocess::AllOutput)) { MessageBoxText->append(">>> process end <<<"); } else { MessageBoxText->append(">>> process failed <<<"); }}

Page 30: Linux+_02_2005

26

narzędzia deweloperskie

luty 2005

zmów, więc ważne są parametry, które podajemy w przypadku tej metody. Pierwszym jest obiekt, który będzie generował sygnał – nasz obiekt task. W drugim określamy rodzaj sygna-łu. Zwróćmy uwagę na nazwę funk-cji: receivedStdout. W przypadku stru-mienia stderr nazwa funkcji w defini-cji sygnału jest następująca: receivedStderr. W obu przypadkach funkcja odpowiadająca na sygnał przyjmuje te same parametry.

W trzecim argumencie metody con-nect wskazujemy obiekt, który będzie odbierał sygnał – reader.

W ostatnim parametrze musimy wska-zać metodę, która zostanie wywołana z obiektu reader w odpowiedzi na sygnał.

W nomenklaturze Qt/KDE metoda odpo-wiadająca na sygnał nazywa się slotem, więc w ostatnim parametrze stosujemy makro SLOT.

Po podłączeniu obu sygnałów możemy uruchomić program wget, wywołując metodę start z obiektu task. Do przechwycenia danych wysy-łanych do stdout i stderr w metodzie start trzeba podać dodatkowe parame-try: KProcess::Block oraz KProcess::

AllOutput. Pierwsza wartość oznacza, że nasza aplikacja zostanie zatrzymana na czas wykonania się polecenia wget. Druga wartość oznacza, że będzie-my przechwytywać wszelkie informa-cje kierowane do standardowych stru-mieni wyjściowych. Gdyby istniała potrzeba zarządzania standardowym wejściem, to podajemy wartość KPro-cess::Stdin. Gdyby istniała potrzeba kontrolowania wszystkich trzech standardowych strumieni, to należy w metodzie start podać stałą KPro-cess::All.

Jak widać na Listingu 2, wywoła-nie jest objęte instrukcją warunkową. Jeśli metoda zwróci logiczną prawdę, to oznacza to, że proces zewnętrzny zakończył się prawidłowo i plik został poprawnie ściągnięty. Wbrew pozo-rom, w ten sposób uzyskaliśmy gotowy program, który jest nieskomplikowa-ną nakładką na polecenie wget. Do implementacji pozostała jeszcze klasa Reader.

Klasa ReaderListing 3 prezentuje plik nagłówkowy klasy Reader. Jest to, jak widać, klasa dzie-dzicząca z klasy QObject, co jest koniecz-ne, aby poprawnie funkcjonował mecha-nizm sygnałów i slotów. Nie należy doda-wać jej samodzielnie do projektu, gdyż

Listing 3. Plik nagłówkowy klasy Reader

#include <kapplication.h>

#include <kprocess.h>

#include <qtextedit.h>

#include <qobject.h>

class Reader : public QObject {

Q_OBJECT

public:

Reader(QObject *parent = 0, const char *name = 0);

~Reader();

QTextEdit *edt;

public slots:

void read_stdout(KProcess *p, char *b, int l);

void read_stderr(KProcess *p, char *b, int l);};

Rysunek 6. Tworzenie klasy Reader

Listing 4. Implementacja klasy Reader

#include "reader.h"

#include <kprocess.h>

Reader::Reader(QObject *parent, const char *name)

: QObject(parent, name)

{ }

void Reader::read_stdout(KProcess *p, char *b, int l)

{

edt->append(QString::fromLatin1(b, l));

}

void Reader::read_stderr(KProcess *p, char *b, int l)

{

edt->append(QString::fromLatin1(b, l));

}

Reader::~Reader()

{ }

#include "reader.moc"

Page 31: Linux+_02_2005

27

narzędzia deweloperskiekdevelop

www.lpmagazine.org

z menu Projekt wystarczy wybrać opcję Nowa klasa.... Ukaże się nam okno, takie jak na Rysunku 6. Ograniczamy się tylko do podania nazwy klasy oraz zazna-czenia opcji, iż klasą podstawową ma być klasa QObject – Utwórz potomka QObject.

Do pliku nagłówkowego wygene-rowanej klasy dodajemy nowe publicz-ne pole edt, a jest to wskaźnik na typ QTextEdit. Ponadto, uzupełniamy ją o dwie metody. Pierwsza to read_stdout, a jej zadaniem, jak wskazuje nazwa, jest odbieranie danych ze strumienia stdout. Druga metoda nosi nazwę read_stderr i będzie nam pomagać odbierać dane kierowane do standardowego strumienia o błędach. Metody definiujemy w sekcji public slots:, aby mechanizm slotów funkcjonował poprawnie.

Listing 4 zawiera implementacjęklasy Reader. Nas interesują zdefinio-wane wcześniej sloty, więc trzeba dopisać definicję metod read_stdout oraz read_stderr. W obydwu przypad-kach zawarty w nich kod jest bardzo krótki:

edt->append(QString::fromLatin1(b, l));

Do kontrolki edt dodajemy nowy ciąg znaków, który został nam przekazany w parametrze b, a jego długość jest prze-kazywana przez parametr l. Ta metoda jest dość prosta i ma swoje wady, ale dla

naszych potrzeb będzie zupełnie wystar-czająca.

W ten sposób zakończyliśmy prace nad naszym programem, którego mo-żemy skompilować i uruchomić.

PodsumowanieKorzystanie z programu KDevelop roz-wiązuje wiele problemów podczas two-rzenia aplikacji w środowisku KDE. Naj-lepszym przykładem jest tworzenie inter-fejsu, nawet tak nieskomplikowanego, jak ten w naszym programie.

O przydatności KDevelopa świad-czy także fakt generowania kodu źró-dłowego na podstawie plików w forma-cie ui, przygotowanych przez program QtDesigner.

Program KDevelop pomaga także generując wstępne wersje klas, czego dobrym przykładem jest klasa Reader.

Zachęcam do zmodyfikowania pro-gramu. Dobrym pomysłem jest możli-

wość wskazania katalogu, w którym ma zostać zapisany ściągany plik przez pro-gram Wget. Wbrew pozorom, nie jest to trudne zadanie.

Na koniec chciałbym jeszcze podkre-ślić jeden element. Nasz program został oparty o systemy Automake i Autoconf, a to oznacza, że możemy go kompilować poza środowiskiem KDevelop. Tą właści-wość, jak widać, zyskaliśmy bez żadnego wysiłku, gdyż o wszelkie szczegóły dba program KDevelop.

W Internecie:• Strona domowa projektu KDE:

http://www.kde.org/• Strona producenta biblioteki Qt:

http://www.trolltech.com/• Strona poświęcona programowi

KDevelop:http://www.kdevelop.org/

Rysunek 8. Program wget_gui

Rysunek 7. Program KDevelop i okno dokumentacji

R E K L A M A

Page 32: Linux+_02_2005

narzędzia deweloperskie

28 luty 2005

Scratchbox – narzędzie do kompilacji skrośnejVeli Mankinen

Gdyby przyjrzeć się historii komputeryzacji i oprogra-mowania, można zauwa-żyć, że kompilacja skro-

śna jest wynalazkiem względnie nowym. We wczesnych latach rozwoju informaty-ki nie była ona w ogóle potrzebna, ponie-waż programy były pisane na konkretny sprzęt i w ściśle określonym celu. Z tego powodu powtórne użycie tego samego kodu nie było w obszarze zainteresowań programistów.

Ponieważ dzisiejsze procesory mają bardzo różną moc obliczeniową, to w wielu przypadkach kompilacja aplika-cji na innym, bardziej wydajnym kompu-terze, zajmuje znacznie mniej czasu niż kompilacja na sprzęcie, który jest bezpo-średnim odbiorcą danego oprogramowa-nia. W ten sposób narodziła się idea kom-pilacji skrośnej (ang. cross-compiling).

Co to jest kompilacja skrośna?Podstawowa idea kompilacji skrośnej polega na użyciu pewnego procesora (HOST) w celu skompilowania progra-mu przeznaczonego na procesory mające inną architekturę (TARGET). Oznacza to, że komputer kompilujący program nie może natywnie uruchamiać skompilowa-nego przez siebie oprogramowania. Jest to pierwsze wyzwanie stojące przez kom-pilacją skrośną, gdyż wiele środowisk programistycznych wymaga uruchomie-nia dodatkowych narzędzi, specyficz-nych dla docelowej architektury, już pod-czas kompilacji programu.

Aby uniknąć wspomnianych trudno-ści, niektórzy ludzie wolą kompilować programy na docelowej platformie. Jak-kolwiek na to patrzeć, w wielu przypad-kach jest to bardzo bardzo wolny proces

i z tego powodu nie może być uznawa-ny za właściwy. Na Rysunku 1 znajduje się wykres pokazujący różnice w czasach kompilacji pomiędzy kompilacją natyw-na a skrośną. Docelowy komputer z pro-cesorem ARM posiadał następującą kon-figurację: procesor Intel SA110 233 MHz, dysk twardy 40 GB, 256 MB pamięci RAM oraz Debian Sarge z jądrem Linuksa 2.4.25. Wykorzystana platforma do kom-pilacji skrośnej miała następujące para-metry: procesor Intel Xeon CPU 2.80 GHz, dysk twardy 80 GB, 2 GB pamięci RAM oraz Debian Sarge z jądrem Linuksa 2.6.8-1-686 i Scratchboksem 0.9.8.2.

Narzędzia i urządzeniaTypowe użycie kompilacji skrośnej ma miejsce wtedy, gdy ktoś chce skompilo-wać program używany na palmtopie, czy innym niewielkim komputerku o relatyw-nie małej mocy obliczeniowej procesora. Ten artykuł będzie koncentrował się na tworzeniu oprogramowania pod IPAQ-a, a kompilacja będzie realizowana na szyb-kim komputerze klasy X86. Największą korzyść z niego będą miały osoby posia-dające IPAQ-a albo inny komputer z pro-cesorem ARM, na którym została zainsta-lowana jakaś dystrybucja Linuksa.

Osoby posiadające IPAQ-a i zaintere-sowane uruchomieniem na nim Linuksa, względnie kompilowaniem na ten kom-puter programów, powinny zapoznać się z dystrybucją o nazwie Familiar Linux, dostępnej pod adresem www.hand-shelds.org. Na wspomnianej stronie zostały też umieszczone bardzo użytecz-ne podręczniki instalacyjne.

W niniejszym artykule zostanie użyte narzędzie do kompilacji skrośnej pocho-dzące z projektu o nazwie Scratchbox. Jest to środowisko programistyczne do two-

O autorzeAutor jest współtwórcą pakietu

Scratchbox. Kontakt z autorem: [email protected]

Na płycie CD/DVDNa płycie CD/DVD znajdują się

narzędzia omawiane w artykule.

Page 33: Linux+_02_2005

29

narzędzia deweloperskiescratchbox

www.lpmagazine.org

rzenia oprogramowania linuksowego pod wszystkie dystrybucje Linuksa. Podstawo-wą ideą Scratchboksa jest zaoferowanie deweloperom środowiska, które działa i wygląda jak środowisko docelowe, jesz-cze zanim środowisko to będzie fizycz-nie dostępne.

Środowisko Scratchbox zapewnia me-chanizm logowania identyczny z tym, któryjest stosowany na urządzeniu docelowym. Narzędzia Scratchboksa mogą być używanezarówno w tym środowisku, jak i poza nim. Użycie narzędzi poza środowiskiem Scratchbox jest takie samo, jak dowolnych innych narzędzi, które posiada nasz kom-puter. W takim przypadku jest to zwykłe, może nawet staromodne, podejście do kompilacji skrośnej.

Aktualna stabilna wersja Scratchbok-sa nosi numer 0.9.8.2. Wszystkie pakie-ty można pobrać ze strony www.scratch-box.org. Następujące z nich są niezbędne: scratchbox-core, scratchbox-libs, scratch-box-devicetools oraz scratchbox-toolcha-in-arm-glibc. Każdy z nich jest udostęp-niany w formie pakietów tar.gz, deb oraz rpm. Możliwy jest wybór dowolnego typu pakietu.

W przypadku plików tar.gz powinni-śmy rozpakować je do katalogu / (każdy z pakietów):

# tar zxf <nazwa_pakietu> -C /

Wykorzystywana przez nas konfiguracja wymaga około 428 MB wolnego miejsca, a i tak dodatkowo jest potrzebne trochę więcej na własne działania. Jeżeli katalog / nie posiada wystarczającej ilości przestrze-ni dyskowej, to Scratchbox może być zain-stalowany w innym miejscu, ale wtedy niezbędne będzie utworzenie odwołania z /scratchbox do miejsca docelowego. Reali-zujemy to za pomocą komendy:

# ln -s /home/scratchbox /scratchbox

Po rozpakowaniu pakietów musimy jesz-cze skonfigurować Scratchboksa poprzez wprowadzenie komendy:

# /scratchbox/run_me_first.sh

Będziemy musieli udzielić odpowiedzi na kilka pytań, ale wystarczy, że zaakceptu-jemy wartości domyślne.

Przechodzimy do konkretówNa początek przedstawimy tradycyj-ne podejście do kompilacji skrośnej i użyjemy narzędzi Scratchbox w syste-mie głównym, podobnie jak większości innych narzędzi. Będziemy potrzebowa-li niewielkiego fragmentu kodu programu do kompilacji. To zadanie dobrze spełni “Hello World”:

#include <stdio.h>

int main(void)

{

printf("Hello World!\n");

return 0;

}

Najpierw skompilujmy "Hello World" natywnie na X86, aby sprawdzić, jak działa kompilacja i uzyskać pewne infor-macje o tworzonych binariach. Załóżmy, że "Hello World" został zapisany w pliku o nazwie hello.c. Teraz, w tym samym katalogu, w którym znajduje się hello.c, uruchomimy komendę:

# gcc -Wall -o hello hello.c

W rezultacie nie powinniśmy otrzy-mać żadnych komunikatów, ale powi-nien powstać plik binarny hello, który możemy uruchomić poprzez wpisanie komendy ./hello. Po wykonaniu tych działań komputer powinien wyświetlić napis Hello World!.

Teraz uruchommy komendę file, która da nam dostęp do kilku informa-cji o pliku binarnym: file hello. Powin-ny one wyglądać podobnie do:

hello: ELF 32-bit LSB executable,

Intel 80386, version 1 (SYSV),

for GNU/Linux 2.2.0, dynamically linked

(uses shared libs), not stripped

Oczywiście, żadna z wyświetlonych informacji nie odnosi się aktualnie ani do Scratchboksa, ani do kompilacji skrośnej. Aby to zmienić, powinniśmy zastosować kompilator wchodzący w skład pakietu Scratchbox. Uruchommy komendę:

# /scratchbox/compilers/arm-linux S

-gcc-3.3_3.3.4-glibc-2.3.2.ds1/S

bin/arm-linux-gcc -Wall -o arm-hello hello.c

Rysunek 2. Praca ze Scratchboksem odbywa się przede wszystkim w trybie tekstowym

Rysunek 1. Porównanie czasów kompilacji przy kompilacji natywnej i skrośnej

Page 34: Linux+_02_2005

30

narzędzia deweloperskie

luty 2005

Jej użycie nie powinno spowodowaćwygenerowania żadnych komunika-tów, ale teraz powinniśmy otrzymać plik binarny o nazwie arm-hello. Tego pliku nie da się bezpośrednio urucho-mić, ponieważ jest on przeznaczony dla architektury ARM, a znajduje się na komputerze X86. Jedyne co możemy zrobić, to zastosować znowu komendę file, aby przekonać się, że jest to rze-czywiście plik binarny ARM. Wpisz-my więc: file arm-hello, co powinno spowodować wyświetlenie komunika-tu w stylu:

arm-hello: ELF 32-bit LSB executable,

ARM, version 1 (ARM), for GNU/Linux

2.0.0, dynamically linked

(uses shared libs), not stripped

W ten sposób udało nam się skompilo-wać skrośnie nasz pierwszy program! Jeżeli dysponujemy IPAQ-iem lub ekwi-walentnym urządzeniem z uruchomio-nym Linuksem, to oczywiście możemy wypróbować działanie tego progra-mu. Wystarczy przenieść plik arm-hello do IPAQ-a, używając komendy scp, a następnie normalnie uruchomić.

Jeżeli kompilowane fragmenty kodu są niewielkie (podobnie jak nasz program), to do wykonania całości pracy nie potrzebujemy niczego więcej niż kompilatora obsługującego kompi-lację skrośną. Wiele programów Open Source, które można znaleźć, używa

licznych bibliotek i ma skomplikowane systemy budowania aplikacji. Oznacza to, że w takiej sytuacji będziemy musie-li skompilować także biblioteki, a to nie może odbywać się jednocześnie z kom-pilowaniem samego programu. Z tego powodu stosowanie kompilacji skro-śnej wymaga pieczołowitych ustawień całego środowiska budującego apli-kację. Te ustawienia są często trudne i wymagają dużych nakładów czaso-wych. Środowisko Scratchbox wykonu-je większość pracy za nas.

Kompilacja skrośna w ScratchboksieScratchbox jest chrootowanym środo-wiskiem kompilacji skrośnej. Oznacza to również, że dowolna osoba może zalogować się do Scratchboksa, tak jak loguje się na prawdziwym urządzeniu. W każdym przypadku użytkownicy muszą zostać dodani do Scratchboksaprzed ich zalogowaniem się (musi to być użytkownik istniejący w systemie, ale nie może to być root). Realizujemy to za pomocą komendy:

# /scratchbox/sbin/sbox_adduser nazwa_S

użytkownika

W celu zalogowania się do systemu Scratchbox musimy użyć komendy:

/scratchbox/login

Po uruchomieniu tej komendy, powin-no pojawić się kilku komunikatów powitalnych, a tzw. prompt systemo-wy ulegnie zmianie np. na: [sbox-HOST: ~] >. Informuje on, że znajdujemy się pod zarządem Scratchboksa oraz że używane jest docelowe środowisko o nazwie HOST. W Scratchboksie można użyć wielu środowisk docelowych, co oznacza, że możemy kompilować pro-gramy pod różne architektury i usta-wienia. Warto tu zwrócić uwagę, że katalog / nie jest tym samym katalo-giem, co na zewnątrz Scratchboksa, oraz że będziemy mieli różne katalo-gi domowe. Ponadto, istotne jest, że jeśli dany użytkownik zalogował się do systemu przed dodaniem go jako użytkownika Scratchboksa, to musi się przelogować, aby uzyskać przywileje członkowskie grupy sbox, niezbędne do uruchomienia omawianego narzę-dzia deweloperskiego. Przynależność

do grupy sbox można sprawdzić za pomocą polecenia:

# groups

Po zalogowaniu się do Scratchboxa powinniśmy skonfigurować środowisko dla potrzeb kompilacji skrośnej:

# sbox-config -ct MYTARGET -cn S

arm-linux-gcc-3.3_3.3.4 S

-glibc-2.3.2.ds1 -cm qemu-arm

Później powinniśmy je aktywować. Reali-zujemy to poprzez wpisanie komendy:

sbox-config –select-target=MYTARGET

Teraz prompt powinien ulec zmianie na: [sbox-MYTARGET: ~] >.

W środowisku Scratchbox, w nowym drzewie /, znajduje się standardowy zestaw katalogów (/bin, /sbin, /usr, /var itd.), ale są one zupełnie puste. Dzięki temu możliwe jest zainstalowanie dowol-nego innego oprogramowania w miej-scu docelowym, bez martwienia się o możliwość nadpisania programów komputera głównego. Ponieważ kata-logi są puste, więc nie mamy rów-nież biblioteki C, choć jest ona zwykle wymagana przez komponenty opro-gramowania. Z tego powodu powin-niśmy zainstalować lub skompilować wszystko, czego będziemy potrzebowa-li w środowisku docelowym. Na szczę-ście, tzw. toolchain Scratchboksa zawiera bibliotekę C i możemy ją zwyczajnie sko-piować poprzez wpisanie komendy:

# sbox-config --copy-clibrary

Teraz posiadamy już gotowe środowisko do kompilowania oprogramowania pod ARM. Scratchbox jest dostarczany z emu-latorem QEMU, który będzie używany w dalszych przykładach. Omawiane na-rzędzie deweloperskie potrzebuje urzą-dzenia lub emulatora, który ma moż-liwość uruchomienia programów dla docelowej architektury. Dzięki takiej funkcjonalności możemy mieć środo-wisko kompilacji skrośnej bez pełnej wiedzy, zarówno o systemie docelo-wym, jak i o tym, jak należy tę wiedzę wbudować w środowisko. Narzędzia same wyszukają odpowiednie informa-cje, podobnie jak ma to miejsce podczas kompilacji natywnej.

Rysunek 3. Również dla Zaurusa można tworzyć programy przy pomocy Scratchboksa

Page 35: Linux+_02_2005

31

narzędzia deweloperskiescratchbox

www.lpmagazine.org

Jeżeli ponownie wpiszemy program "Hello World" i skompilujemy go za pomocą komendy:

gcc -Wall -o sb-arm-hello hello.c

to kompilacja powinna przebiec bez błędów, a jako wynik otrzymamy plik binarny sb-arm-hello. Po uruchomieniu komendy:

file sb-arm-hello

otrzymamy komunikat, który pokazuje, że znowu mamy w swoim ręku rzeczy-wisty plik binarny ARM:

sb-arm-hello: ELF 32-bit LSB executable,

ARM, version 1 (ARM), for GNU/Linux

2.0.0, dynamically linked

(uses shared libs), not stripped

Ponieważ jesteśmy wewnątrz środowi-ska Scratchbox, to możemy uruchomić powstały program w emulatorze poprzez wpisanie: ./sb-arm-hello. W rezultacie otrzymamy wynik w postaci napisu Hello World!.

Przykład bardziej skomplikowanyKolejny przykład będzie wymagał biblio-teki glib z rodziny GTK+. Najpierwmusimy ściągnąć pakiet glib i skompi-lować go dla środowiska docelowego za pomocą następujących komend:

> wget ftp://ftp.gtk.org/pub/gtk/v2.2/S

glib-2.2.3.tar.bz2

> tar -xjvf glib-2.2.3.tar.bz2

> cd glib-2.2.3

> ./configure

> make

> make install

Jak można zauważyć, jest to znacz-nie bardziej złożony przykład. Użyli-śmy skryptu configure, który kompi-luje i uruchamia dużo różnych pro-gramów w celu wyciągnięcia różnych danych o środowisku. Gdybyśmy użyli kompilacji skrośnej poza Scratchbok-sem, wtedy skrypt configure nie ukoń-czyłby prawidłowo działania, ponieważ nie mógłby uruchomić programów do kompilacji. Zerknięcie do pliku /tmp/cputransp_$USER.log pozwala na uzy-skanie informacji o komendach, które były uruchamiane z emulatorem. Oczy-

wiście, glib może być kompilowany także poprzez skonfigurowanie środo-wiska, ale jest to nieco bardziej skompli-kowane niż przykład pokazany wyżej. Dokumentacja o kompilacji skrośnej glib jest dostępna pod adresem: http://developer.gnome.org/doc/API/2.0/glib/glib-cross-compiling.html.

Teraz, gdy w naszym środowisku mamy już zainstalowane biblioteki C oraz glib, możemy skompilować nowe "Hello World", które będzie używało funkcji print z biblioteki glib. Oto plik glib-hel-lo.c:

# include <glib.h>

# include <glib/gprintf.h>

int main(void)

{

g_printf("Hello World!\n");

return 0;

}

Scratchbox jest dostarczany z narzędziem pkg-config, które jest używane w celu wygodnego wyciągnięcia wszystkich ścieżek dostępu związanych z biblioteką glib. Domyślnie, glib instaluje się do /usr/local/ i do tego samego katalogu są także instalowane pliki konfiguracyjne pkg-config. W poniższym przykładzie użyje-my pkg-config oraz tak ustawimy zmien-ną środowiskową PKG_CONFIG_PATH, że narzędzie znajdzie odpowiednie pliki glib :

# export PKG_CONFIG_PATH=/usr/local/S

lib/pkgconfig/

Teraz możemy uruchomić pkg-config

–list-all, co umożliwi nam obejrzenie bibliotek zainstalowanych w systemie. W tej chwili powinno to wyświetlić:

gmodule-2.0 GModule - Dynamic module

loader for GLib

glib-2.0 GLib - C Utility Library

gobject-2.0 GObject - GLib Type, Object,

Parameter and Signal Library

gthread-2.0 GThread - Thread support

for GLib

W celu skompilowania nowego "Hello World" będziemy potrzebowali następu-jącej komendy:

# gcc -Wall `pkg-config --cflagsS

--libs glib-2.0` -o sb-armS

-glib-hello glib-hello.c

Kompilacja powinna zakończyć się bez zgłaszania jakichkolwiek błędów, a jako jej wynik powstanie plik binar-ny sb-arm-glib-hello. Ponieważ posia-damy emulator QEMU, więc możemy go teraz uruchomić, w wyniku czego powinien pojawić się napis “Hello World!". Jeżeli teraz wydamy komen-dę file, to jej wynik powinien być iden-tyczny jak w poprzedniej wersji pro-gramu “Hello World!". Jeśli wywołamy jeszcze komendę ldd, która pokazu-je wykorzystanie bibliotek, to będzie-my mogli zobaczyć, że zainstalowana przed chwilą biblioteka glib jest rze-czywiście używana (ldd sb-arm-glib-

hello):

libglib-2.0.so.0 => /usr/local/lib/

libglib-2.0.so.0 (0x00000000)

libc.so.6 => /lib/libc.so.6 (0x00000000)

libgcc_s.so.1 => /lib/libgcc_s.so.1S

(0x00000000)

/lib/ld-linux.so.2 =>

/lib/ld-linux.so.2 (0x00000000)

W tej chwili możemy już tworzyć pliki wykonywalne naszych programów i biblio-tek, a następnie przenosić je na różne urządzenia oparte o procesor ARM.

Scratchbox zawiera jeszcze wiele innych rozszerzeń i narzędzi, które pomagają w tworzeniu oprogramowania, np. dla Debiana ARM.

PodsumowanieIstnieje wiele ciekawych urządzeń, na których można zainstalować i urucha-miać Linuksa. Uruchomienie czy skom-pilowanie naszych ulubionych progra-mów na te urządzenia może być rzeczy-wiście trudnym zadaniem. Dzięki odpo-wiednim narzędziom oraz z pomocą róż-nych artykułów z czasopism i ze stron internetowych można spowodować, że nie będzie to już tak skomplikowane. A już na pewno jest to bardzo interesują-ca dziedzina do doświadczeń programi-stycznych.

W Internecie:– Strona domowa projektu Scratchbox:

http://www.scratchbox.org/ – Strona domowa projektu QEMU:

http://fabrice.bellard.free.fr/qemu/– Strona domowa projektu Handhelds:

http://www.handhelds.org/

Page 36: Linux+_02_2005

wywiad

32 luty 2005

Wywiad z Carlosem Velez Baez, szefem projektu Vidalinux

Krzysztof Krawczyk: Na początku chciałbym, abyś krótko przedstawił się naszym Czytelnikom.

Carlos Velez Baez: Jestem szefem pro-jektu Vidalinux. W tej chwili pracuję jako konsultant ds. systemów sieciowych oraz jako deweloper Vidalinux Desktop OS.

KK: W jaki sposób związałeś się z Linuksem?

CVB: W 1997 roku jeden z moich sąsiadów dał mi swojego Red Hata 5.0. Nie udało mu się zainstalować Linuk-sa na swoim komputerze, a dla mnie była to pierwsza okazja zapoznania się z tym systemem. Ostatecznie, od tego dnia zacząłem korzystać wyłącznie z Linuksa.

KK: Ilu jest deweloperów Vidalinux?CVB: W tej chwili w Vidalinux jest nas

troje: dwóch deweloperów oraz jeden grafik.

KK: Nad czym teraz pracujecie w Vida-linuksie?

CVB: Wszystkie moje wysiłki są skon-centrowane na tym, aby Vidalinux Desk-top OS jak najlepiej integrował się z sys-temem zarządzania pakietami. Ponadto, zajmuję się programowaniem w GNOME, mechanizmami autodetekcji sprzętu oraz innymi aplikacjami systemowymi.

KK: Dlaczego wybraliście Gentoo jako bazę dla swojej dystrybucji Linuk-sa? Jest wiele innych popularnych dystry-bucji, takich jak Mandrakelinux, Fedora Core czy SUSE.

CVB: System zarządzania pakieta-mi, który jest dostępny w Gentoo (Por-tage), ma więcej zaawansowanych funk-cji niż RPM czy APT. Gdy dokonujesz instalacji niektórych aplikacji korzysta-jąc z Portage, rozwiązuje on wszystkie zależności, które ma ta aplikacja. Jest to coś, o czym inne dystrybucje mogą

tylko pomarzyć. Gentoo jest dystrybu-cją, która jest budowana ze źródeł, więc dzięki temu jest łatwiej stworzyć własną dystrybucję Linuksa.

KK: Dlaczego skorzystaliście z Ana-condy, instalatora systemu Red Hata?

CVB: Wybraliśmy Anacondę, gdyż nim zacząłem tworzyć instalator, istniał już projekt rozwijany przezVictora Prada. Dokonał on pierwszychzmian w Anacondzie, aby działałapoprawnie z Gentoo. Skontaktowałemsię z nim, aby pomóc mu w tym pro-jekcie, a on przekazał mi wszystkie źródła. Dzięki temu zacząłem pracę nadAnacondą.

KK: Czy mechanizmy wykrywania i konfigurowania sprzętu są waszym dzie-łem?

CVB: Nie, są połączeniem bazy danych sprzętu z Knoppiksa oraz narzę-dzi z Gentoo LiveCD.

Na DVDNa płycie DVD B zamieściliśmy

dystrybucję Gentoo Linux 2004.3

Carlos Velez Baez prezentuje swoją dystrybucję Linuksa

Page 37: Linux+_02_2005

33

wywiad

www.lpmagazine.org

wywiad z Carlosem Velez Baez

KK: Czy stworzyliście jakieś własne narzędzia, np. konfiguratory czy mene-dżery pakietów?

CVB: Tak, wprowadziliśmy wiele zmian w kodzie Anacondy, włączając w to interfejs dodawania użytkowników oraz nowy sposób wybierania pakie-tów, który będzie dostępny w VLOS 1.1. Ponadto, planujemy przygotować pro-gram, zbliżony do Red Carpeta Ximia-na, do instalowania pakietów binarnych w VLOS-ie.

KK: A jakie pakiety są teraz wykorzy-stywane w Vidalinuksie? Źródłowe czy binarne?

CVB: Używamy obu rodzajów pakie-tów.

KK: Dlaczego przygotowujecie swój system dla czterech architektur: p4, i686, athlonxp i amd64. Czy to nie za dużo, albo może za mało?

CVB: Takie dystrybucje Linuksa, jak Fedora Core, Mandrakelinux czy SUSE, wykorzystują domyślną architekturę dokompilowania wszystkich swoich pa-kietów. My kontynuujemy tradycję Gen-too optymalizacji wszystkich pakietówpoprzez wykorzystanie dostępnych archi-tektur preprocesora, co pozwala nam osią-gnąć dużą różnicę wydajności systemów.

KK: Jakie główne problemy napotka-liście podczas przygotowywania tej dys-trybucji?

CVB: Główne trudności dotyczyły formatu RPM, wykorzystywanego przez Anacondę, oraz były związane z błęda-mi, które się w niej znajdują.

KK: Jakie jest twoje zdanie na temat innych linuksowych dystrybucji, w szcze-gólności Gentoo.

CVB: Przygodę z Linuksem zaczą-łem od Red Hata, ale gdy odkryłem Gentoo, nie było już odwrotu. Głównym problemem, typowym dla popularnych

i komercyjnych dystrybucji, jest system zarządzania pakietami. Gdy chcesz zain-stalować jakąś aplikację, musisz przeszu-kiwać całą sieć w celu zapewnienia jej zależności, w szczególności bibliotek, których wymaga ta aplikacja, aby zainsta-lowała się poprawnie. Gentoo jest jedną z najbardziej zaawansowanych dystrybu-cji Linuksa, a z systemem Portage otrzy-muje się pełną kontrolę nad swoim syste-mem operacyjnym.

KK: A w jak sposób współpracujecie z deweloperami Gentoo?

CVB: Tworzymy ebuildy i zgłaszamy błędy. Myślę, że przez tworzenie VLOS, który bazuje na Gentoo, ale jest łatwiej-szy w instalacji, oferujemy Gentoo roz-wiązanie odpowiednie dla typowych użytkowników.

KK: Istnieją dwie wersje Vidalinux Desktop OS: publiczna (download) i do kupienia. Jaka jest różnica pomiędzy nimi i dlaczego zdecydowaliście się je przygoto-wać. Czy nie jest możliwe w wersji down-load zainstalowanie OpenOffice.org, Evo-lution, Firefox czy innych poprzez wyko-rzystanie polecenia emerge?

CVB: Główną różnicą są załączo-ne aplikacje oraz aplet GDesklets, który dodaje skrót szybkiego uruchamiania aplikacji, identyczny do tego w syste-mie Mac OS X. Tylko we dwójkę pracu-jemy nad tym projektem, a musimy prze-cież opłacać pewne rachunki, takie jak hosting naszych stron, łącze internetowe, oprawa graficzna i inne rzeczy, które są pokrywane z przychodów ze sprzedaży dystrybucji. Jeśli postanowisz korzystać z wersji publicznej i potrzebujesz innych aplikacji dostępnych w sprzedawanej wersji, możesz je zainstalować bez pro-blemów, ale miej na uwadze, że jeśli sko-rzystasz z wersji płatnej, pomagasz nam w utrzymaniu przy życiu tego projektu.

KK: Czy potrzebujecie jakiejś innej pomocy od społeczeństwa linuksowego?

CVB: Tak, gdyż każdy, kto chce włą-czyć się do projektu, poprzez kod, doku-mentację bądź cokolwiek innego, jest bardzo mile widziany.

KK: Jakie zmiany czekają użytkowni-ków Waszej dystrybucji w Vidalinux OS Desktop 1.1?

CVB: VLOS 1.1 będzie miał wiele zmian i poprawek, m.in. system udev, NPTL, GNOME 2.8, KDE 3.3.1, jądro 2.6.9, wsparcie dla dysków twardych SATA i SCSI, wykrywanie urządzeń USB pod-łączanych do systemu, instalator bazujący na Fedora Core 3 oraz wybór pakietów, które można zainstalować.

KK: A jakie macie plany na dalszą przyszłość?

CVB: Mamy bardzo dużo planów, włączając w to serwerową edycję VLOS, wersję typu LiveCD, aplikację do zarzą-dzania instalacją pakietów oraz wspar-cie w Anacondzie dla wielu systemów plików, w tym dla Reiser4fs.

KK: Na koniec mam pytanie, czy byłeś kiedyś w Polsce. No i czy chciałbyś ją odwiedzić?

CVB: Nie, nigdy nie byłem w Euro-pie, ale na pewno w przyszłości ją odwiedzę, gdyż znajdują się tam pięknemiejsca.

KK: Bardzo dziękuję za rozmowę. W przyszłym miesiącu nasi Czytelnicy będą mieli okazję zapoznać się z VLOS 1.1, więc możecie spodziewać się spore-go odzewu.

R E K L A M A

W Internecie:– Strona domowa systemu Vidalinux

Desktop OS:http://desktop.vidalinux.com/

Page 38: Linux+_02_2005

rozwiązania mobilne

34 luty 2005 35

multisync

www.lpmagazine.org

rozwiązania mobilne

MultiSync – synchronizacja urządzenia przenośnego z komputerem biurkowymKrzysztof Wolski

Obecne możliwości telefo-nów komórkowych znacz-nie przewyższają podsta-wowe zadania, przed któ-

rymi stał kiedyś zwykły telefon. Każdy nowy model jest wyposażony w prosty organizer, z pomocą którego możemy zapisywać informacje o spotkaniach czy wydarzeniach. Bardziej rozbudowa-ne telefony komórkowe pozwalają rów-nież na panowanie nad zadaniami, które ma do zrealizowania właściciel telefo-nu. Oprócz tego, w każdym telefonie jest dostępna książka telefoniczna, która pozwala na zapisywanie numerów do znajomych.

Często wpisywanie nowych spotkań do telefonu bywa bardzo niewygodne (choćby ze względu na małe klawisze czy mały wyświetlacz). W takim przy-padku dobrze jest posiadać komputer i za jego pomocą zapisywać informacje w organizerze, a następnie zsynchronizo-wać ze sobą dane w komórce i kompu-terze przy pomocy odpowiedniego opro-gramowania. Takim właśnie programem przeznaczonym dla systemu Linux jest MultiSync.

MultiSync pozwala na synchroniza-cję danych nie tylko pomiędzy kompu-terem a komórką, ale również pomiędzy komputerem domowym (lub laptopem) oraz komputerem kieszonkowym (za-równo PocketPC, jak również Palm oraz Zaurus). Umożliwia także wykonywa-nie kopii zapasowej danych zapisanych w organizerze.

Omawiane narzędzie zostało napisa-ne dla środowiska GNOME. Jego archi-tektura jest oparta na mechanizmie wty-

czek. Pozwalają one na współpracę pro-gramu z organizerem oraz klientem poczty Ximian Evolution. Komunikacja z urządzeniami zewnętrznymi (telefona-mi komórkowymi oraz komputerami kie-szonkowymi) odbywa się poprzez port USB, IrDA lub Bluetooth.

InstalacjaTesty programu zostały przeprowadzo-ne w systemie Aurox Linux. Na stro-nie domowej projektu są do pobra-nia odpowiednie pakiety RPM. Ponie-waż program jest zbudowany w opar-ciu o wtyczki, to nie musimy ścią-gać wszystkich pakietów, ale tylko te, z których będziemy korzystali. Oczy-wiście, najważniejszy jest pakiet z pro-gramem (multisync). Jeśli będziemy chcieli synchronizować dane z progra-mem Evolution, to niezbędna będzie również wtyczka multisync-evolution. Do synchronizacji danych z telefona-mi komórkowymi będziemy również potrzebowali pakietu multisync-irmc. W przypadku palmtopa Zaurus odpo-wiednia wtyczka nazywa się multisync-

O autorzeAutor jest studentem piątego roku Politechniki Śląskiej na Wydziale Organizacji i Zarządzania, spe-cjalność "Informatyka w Przed-

siębiorstwie". Kontakt z autorem: [email protected] Rysunek 1. Ustawienia dla telefonu

komórkowego

Page 39: Linux+_02_2005

rozwiązania mobilne

34 luty 2005 35

multisync

www.lpmagazine.org

rozwiązania mobilne

MultiSync – synchronizacja urządzenia przenośnego z komputerem biurkowym

opie. Jeśli chcielibyśmy wykonać kopię danych z organizera, to niezbędna okaże sie wtyczka multisync-backup.

Po ściągnięciu pakietów, instala-cja przebiega standardowo – posiadając uprawnienia użytkownika root w konso-li wydajemy polecenie: rpm -ivh nazwa_pakietu_do_instalacji. W chwili pisanie tego artykułu najnowszą wersją pakie-tu MultiSync była 0.82. Jeśli nasz Linux opiera się o inne pakiety niż rpm, to możemy pobrać ze strony źródła pakietu w postaci paczki tgz i samemu je skom-pilować.

Do poprawnego działania synchro-nizacji pomiędzy komputerem a telefo-nem komórkowym poprzez port IrDA niezbędna jest instalacja pakietu Open-Obex, natomiast jeśli będziemy wyko-rzystywać Bluetooth, to należy zain-stalować pakiet BlueZ. Aby sprawdzić, czy w systemie jest zainstalowany dany pakiet (jeśli korzystamy z systemu opar-tego o RPM), możemy w konsoli wpisać (w przypadku OpenObex): rpm -qa |

grep openobex. Jeśli w rezultacie otrzy-mamy nazwę pakietu wraz z wersją, to znaczy, że nasz system zawiera oprogra-mowanie niezbędne do działania pro-gramu.

Synchronizacja z telefonem komórkowymPierwsze testy programu przeprowa-dzimy korzystając z programu Ximian Evolution oraz telefonu komórkowego (w moim przypadku będzie to telefon Sony Ericsson T68i). Po zainstalowaniu programu możemy go uruchomić w kon-soli (wpisując mutlisync) lub wybierając z menu. W przypadku KDE, w pasku dokującym powinna pojawić się ikonka informująca o tym, że program został uruchomiony.

Klikamy na ikonkę, aby wyświetlić główne okno programu, a następnie na pasku narzędzi wybieramy ikonę opisa-ną jako New. W ten sposób przygotujemy nową parę do synchronizacji. W otrzy-manym oknie (Rysunek 1) mamy cztery zakładki:

– Plugins – wybieramy w nim te wtyczki, które będą używane do synchronizacji danych. Aby popraw-nie aktualizować dane pomiędzy Evolution a komórką, należy jako pierwszą wybrać Ximian Evolution, a jako drugą – IrMC Mobile Device.

Do każdej z wtyczek mamy opcje konfiguracyjne, dostępne pod przy-ciskiem Options. W przypadku Evo-lution są one związane z rodza-jem synchronizowanych informa-cji, natomiast w przypadku tele-fonu komórkowego – połączenia pomiędzy komputerem a komórką (jeśli korzystamy z portu podczer-wieni, należy pamiętać, aby go uru-chomić – w konsoli z uprawnienia-mi roota należy wydać polecenie /etc/init.d/irda start). Mamy tutaj także opcje związane z danymi, które mają być synchronizowane.

– Synchronize options – w tej zakład-ce zostały zgrupowane opcje doty-czące częstotliwości synchronizacji danych (Automatically synchronize every) – jeśli pasek zostanie prze-sunięty do końca w prawo, to syn-chronizacja będzie odbywała się po każdej zmianie. Możemy także zde-cydować, ile ma wynosić przerwa, jeśli połączenie się nie powiodło (Retry interval after connect failed ), a także zdecydować, jakie działania ma program podjąć w przypadku napotkania problemu podczas syn-chronizacji danych (Conflicts and near duplicates).

– Filters – tutaj możemy zdefiniować filtry dla danych różnego rodzaju oraz zdecydować, jakie czynności ma podejmować program.

– Sounds – to ostatnia z zakładek, w której można ustawić dźwięki odtwarzane przez program – pierw-szy jest odtwarzany w przypad-ku powodzenia aktualizacji danych, natomiast drugi jest odtwarzany w przypadku, gdy połączenie zostało nawiązane, ale wcześniej były proble-my z jego uzyskaniem.

Po skonfigurowaniu programu jest on gotowy do działania. Ustawiamy komórkę w pobliżu portu podczerwie-ni, uruchamiamy klienta Evolution (jeśli do tej pory jeszcze tego nie zrobiliśmy), a następnie klikamy na ikonce Sync. Po zsynchronizowaniu danych z telefonu komórkowego oraz Evolution (pierwsza operacja synchronizacji może chwilę potrwać), następne będą odbywały się automatycznie podczas działania pro-gramu (np. co określony czas lub pod-czas każdej zmiany). I to już wszystko – cała konfiguracja odbywa się w pro-

gramie MultiSync, natomiast w Evolu-tion nie musimy nic zmieniać.

Przeprowadzone testy wykazały, że program wywiązuje się doskonale ze swoich zadań. Synchronizacja odbywa się bez najmniejszych kłopotów. Pro-gram pozwala na utrzymanie porząd-ku zarówno wśród kontaktów (książ-ka telefoniczna), jak i wśród kalenda-rza oraz zadań.

Tworzenie kopii zapasowej danychJeśli zainstalowaliśmy wtyczkę backup,będziemy mieli możliwość tworzenia kopii zapasowej kontaktów. Tworzy-my nową parę synchronizacji danych (pierwszy wtyczka to Evolution, a drugi to Backup). Wśród dostęp-nych opcji dla kopii zapasowej danych mamy możliwość ustawienia katalo-gu, w którym będą przechowywane pliki, oraz funkcje zarządzania tymi plikami.

PodsumowanieProgram MultiSync to na pewno cieka-we rozwiązanie dla wszystkich korzy-stających z organizera elektroniczne-go. Pozwala utrzymać porządek zarów-no wśród spotkań i zadań, jak i kon-taktów. Nie należy również zapominać o bardzo przydatnej opcji robienia kopii zapasowej danych – ta opcja przyda się na pewno każdemu i pozwoli zabez-pieczyć się przed przypadkową utratą danych.

Rysunek 2. Tworzenie kopii zapasowej danych

W Internecie:– Strona domowa projektu MultiSync:

http://multisync.sourceforge.net/– Strona domowa projektu SynCE:

http://synce.sourceforge.net/synce/

Page 40: Linux+_02_2005
Page 41: Linux+_02_2005

Tytuł Ilość numerów w roku

Ilość zamawianych prenumerat

Od numeru pisma lub miesiąca

Opłata w złz VAT

Software 2.0 (1 płyta CD)Miesięcznik profesjonalnych programistów 12 250/ 180*

Software 2.0 Extra! (od 1 do 4 płyt CD lub DVD)Numery tematyczne dla programistów 6 150 / 135**

Linux+ (2 płyty CD)Miesięcznik o systemie Linux 12 250/180*

Linux+DVD (2 płyty DVD)Miesięcznik o systemie Linux 12 270/198*

Linux+Extra! (od 1 do 7 płyt CD lub DVD)Numery specjalne z najpopularniejszymi dystrybucjami Linuksa 8 232/198**

PHP Solutions (1 płyta CD)Dwumiesięcznik o zastosowaniach języka PHP 6 150

PHP Solutions (1 płyta CD) - Prenumerata .PRO***Dwumiesięcznik o zastosowaniach języka PHP 6 445

Hakin9 (1 płyta CD)Dwumiesięcznik o bezpieczeństwie i hakingu 6 135

Programy dla Twojej firmy (1 płyta CD)Oprogramowanie dla małych i średnich przedsiębiorstw 6 135

.psd (1 płyta CD + film instruktażowy na DVD)Dwumiesięcznik użytkowników programu Adobe Photoshop 6 140

Aurox Linux (7 płyt CD)Magazyn z najpopularniejszym polskim Linuksem 4 119

W sumie(liczba prenumerat x cena)

ZAMÓWIENIE PRENUMERATY

Dane osoby / firmy zamawiającej

Imię i nazwisko Stanowisko

ID kontrahenta** jeżeli jesteś już klientem firmy Software-Wydawnictwo Sp. z o.o. – wystarczy, że podasz swój numer ID kontrahenta; jeżeli nie posiadasz takiego numeru, podaj swe dane teleadresowe

Upoważniam firmę Software-Wydawnictwo Sp. z o.o. do wystawienia faktury VAT bez podpisu odbiorcy

Pieczęć firmy i podpis

Nazwa firmy

Dokładny adres

Telefon (wraz z numerem kierunkowym) Faks (wraz z numerem kierunkowym)

Adres e-mail Numer NIP firmy

Prosimy wypełnić czytelnie i przesłać faksem na numer: (22) 860 17 71 lub listownie na adres: Software-Wydawnictwo Sp. z o.o., Lewartowskiego 6, 00-190 Warszawa, e-mail: [email protected] też zamówienia telefoniczne: (22) 860 17 67

* Cena prenumeraty rocznej dla osób prywatnych

** Cena prenumeraty rocznej dla osób prenumerujących już Software 2.0 lub Linux+*** Wykupienie prenumeraty PHP Solutions w wersji .PRO za 445 złotych, upoważnia do zamieszczania na

ostatnich stronach PHP Solutions ogłoszenia o wymiarach 5,4 na 2,7 cm (300 znaków) we wszystkich ko-lejnych numerach obejmujących prenumeratę (standardowo: 6 numerów).

UWAGA: Nadesłanie zamówienia jest jednocześnie zobowiązaniem do zapłaty.

www.stock.com.pl

Jeżeli chcesz zapłacić katrą kredytową, wejdź na stronę naszego sklepu internetowego:

Page 42: Linux+_02_2005
Page 43: Linux+_02_2005

1 2 3 4 5 6 7 8 9 10 11 122000

2001

2002

2003

2004

2004

2004

2005

2005

2005

Numery archiwalneProsimy o przesłanie kuponu pocztą lub faksem.Prosimy w odpowiednim polu zakreślić numery, które Państwo chcą zamówić.

białe pola – 15 zł za Linux+

– rocznik 2001 (12 numerów) – 120 zł– rocznik 2002 (12 numerów) – 150 zł– rocznik 2003 (12 numerów) – 150 zł– rocznik 2004 (12 numerów) – 150 zł

Imię i nazwisko, nazwa firmy ..............................................................................Dokładny adres: .....................................................................................................................................................................................................................................

Wypełnia płatnik VAT. Oświadczam(y), że jestem(śmy) płatnikiem VAT i upoważniam(y) Software-Wydawnictwo Sp. z o.o. do wystawienia faktury VAT bez podpisu odbiorcy.

pieczątka i podpis

Software-Wydawnictwo Sp. z o.o.ul. Lewartowskiego 6, 00-190 Warszawa, Tel.: (22) 860 17 67

L+ 2

/200

5

niebieskie pola – 27.90 zł za Linux+ DVD

czerwone pola – 9,90 zł za Linux+ bez CD

żółte pola – 24 zł za Linux+

zielone pola – 16.50 zł za Linux+ DVD

Linux+ 06/2004(DVD, CD, bez CD)

Linux+ 07/2004(DVD, CD, bez CD)

Linux+ 08/2004(DVD, CD, bez CD)

Linux+ 09/2004(DVD, CD, bez CD)

Linux+ 10/2004(DVD, CD, bez CD)

Linux+ 11/2004(DVD, CD, bez CD)

Linux+ 12/2004(DVD, CD, bez CD)

Linux+ 01/2005(DVD, CD, bez CD)

Page 44: Linux+_02_2005

gnomeaktualnościoprogramowanie

40 luty 2005 41www.lpmagazine.org

GNOME News

Nicotine – klient sieci SoulSeek

N icotine to linuksowy klient sieci wy-miany plików SoulSeek.

Aby uruchomić Nicotine, musimy naj-pierw spełnić zależności, czyli zainstalo-wać Pythona i odpowiednie biblioteki. Potrzebujemy przede wszystkim interpre-tera Pythona co najmniej w wersji 2.2.0, choć autor poleca wersję 2.3.0 lub nowszą (pakiet python). Potrzebujemy również biblioteki GTK+-2.0 (autor zaleca wer-sję 2.2), ale powinniśmy mieć ją zainsta-lowaną, szczególnie, jeśli używamy GNO-ME. Ostatnia rzecz to moduł pozwalający na korzystanie z biblioteki GTK+ z pozio-mu Pythona, czyli PyGTK, co najmniej w wersji 1.99.16. Jeśli chcemy samodzielnie kompilować ten moduł, to należy pamię-tać o włączeniu wątkowania (ang. thre-ading), używając przy wywołaniu skryp-tu ./configure opcji --enable-thread.

Skoro spełniliśmy już zależności pro-gramu, to możemy go wreszcie zainstalo-wać. Rozpakowujemy najpierw archiwum z programem poleceniem: tar xzvf nico-tine-<wersja>.tar.gz i przechodzimy do nowo utworzonego katalogu (cd nicotine-<wersja>). Niecierpliwi mogą od razu wydać polecenie python ./nicotine. Je-śli chcemy zainstalować program glo-balnie (tak, aby miał do niego dostęp każdy użytkownik), to wydajemy jakoroot polecenie python setup.py install

--prefix=<ścieżka>, gdzie argumentemopcji --prefix jest ścieżka do katalogu, w którym ma zostać zainstalowany Nico-tine – zwykle będzie to katalog /usr. Te-raz program jest już zainstalowany – wy-starczy wydać polecenie nicotine, aby go uruchomić.

Przy pierwszym uruchomieniu pro-gramu otworzy się także okno konfigu-racji. Będziemy musieli zarejestrować się w sieci SoulSeek i podać m.in. ścieżki do katalogów z plikami na naszym dysku. W pierwszej zakładce, Serwer, wartość pola Serwer pozostawiamy bez zmian (czyli server.slsknet.org:2240), natomiast w polach Login i Hasło podajemy od-

Witold Kieraś

powiednio unikalną nazwę użytkowni-ka oraz jego hasło – robimy tak zarów-no w przypadku, gdy mamy już konto w sieci SoulSeek, jak i wówczas, gdy chcemy je dopiero założyć. Pozostałe po-la w tej zakładce również możemy pozo-stawić bez zmian.

Przechodzimy do zakładki Udostępnio-ne pliki. Wpisujemy tu kolejno ścieżki: do katalogu przeznaczonego dla plików tym-czasowych (nie ściągniętych do końca), do katalogu docelowego dla ściąganych pli-ków (znajdą się w nim po całkowitym ścią-gnięciu) oraz do katalogu z plikami udo-stępnianymi – tych ostatnich możemy zdefi-niować więcej niż jeden. Dobrze jest zazna-czyć opcję Reskanuj pliki przy starcie pro-gramu – wówczas program przy każdym uruchomieniu będzie sprawdzał, czy nie udostępniliśmy nowych pozycji. Należy pa-miętać, że jeśli dodamy do udostępnianego katalogu nowe pliki w trakcie działania pro-gramu, to aż do jego zrestartowania nie bę-dą one widoczne dla innych użytkowników sieci. Tyle wystarczy do zalogowania się w sieci SoulSeek. Zatwierdzamy zmia-ny przyciskiem OK. Teraz wystarczy po-łączyć się z siecią – z menu wybiera-my pozycję Plik–>Połącz. Jeśli wszyst-ko poszło dobrze, to zostaniemy zalo-gowani. W przypadku problemów na-leży śledzić komunikaty pojawiające sięw dole okna. Może zdarzyć się, że wybra-ny przez nas login jest już zajęty, a wówczas trzeba wybrać inny (do okna konfiguracji możemy powrócić wybierając Plik–>Usta-wienia). Zalogowanie nie powiedzie się również wówczas, gdy w tym samym cza-sie jesteśmy już zalogowani z tego same-go konta na innym komputerze (lub nawet z tego samego komputera, ale przy pomocy innego klienta, np. PySlsk).

Sygnałem pomyślnego zalogowaniabędzie zmiana naszego statusu na „Do-stepny” (druga kratka od lewej na samym dole okna).

Bedą nas interesować dalsze zakładki – na początek piąta od lewej, czyli Szuka-

nie. Wpisujemy szukany tytuł lub wyko-nawcę (np. Sonic Youth) i klikamy przy-cisk Szukaj. Po chwili zaczną się poja-wiać kolejne wyszukane pliki, wraz z in-formacjami o tym, do jakiego użytkow-nika należy plik, jaki ma rozmiar, z jaką prędkością można go ściągnąć, ile użyt-kownik ma plików do wysłania w kolej-ce, czy można plik ściągać od razu (tzn. czy użytkownik ma aktualnie wolny slot), jaką plik ma wartość bitrate oraz jaką ma długość odtwarzania. Klikając prawym przyciskiem myszy na wybraną pozycję uzyskujemy dostęp do menu konteksto-wego. Z tego menu możemy polecić Ni-cotine ściągnięcie wybranego pliku (Po-bierz plik(i)) lub całego katalogu, w któ-rym znajduje się ten plik na dysku użyt-kownika (Ściągnij katalog(i)). Stan pobie-rania wybranych przez nas plików mo-żemy sprawdzić w zakładce Pobieranie. Z poziomu menu kontekstowego możemy rozpocząć rozmowę z danym użytkowni-kiem (pozycja Wyślij wiadomość – rozmo-wa zostanie rozpoczęta w zakładce Roz-mowa prywatna), sprawdzić informacje o nim (pozycja Pobierz info – zostaną wy-świetlone w zakładce Info użytkownika) oraz przeglądać udostępniane przez nie-go pliki (pozycja Przeglądaj...– pliki zo-staną wyświetlone w zakładce Pliki użyt-kownika).

W zakładce Wysyłanie wyświetlonajest lista plików, które inni użytkowni-cy aktualnie ściągają od nas lub chcą je

Rysunek 1. Nicotine ma bardzo przyjemny i intuicyjny interfejs

Page 45: Linux+_02_2005

gnomeaktualnościoprogramowanie

40 luty 2005 41www.lpmagazine.org

GNOME News

GParted 0.0.7Ukazała się wreszcie nowa wersja GParted, czyli Gnome Partition Editor, będącego nakładką graficzną dla biblioteki libparted, służącej do obsługi partycji. Minęło sporo czasu od poprzedniej wersji, a było to spowodowane faktem, że duża część kodu wymagała przepisania od nowa. W nowej wersji ulepszono obsługę systemów plików ext2, ext3 oraz ReiserFS, dodano pełną obsługę NTFS oraz wzbogacono program o wiele mniej istotnych dodatków.http://gparted.sourceforge.net/

GUADEC 2005W dniach 29-31 maja bieżącego roku w Stuttgardzie już po raz szósty odbędzie się GUADEC, czyli GNOME Users and Developers European Conference – europejska konferencja użytkowników i deweloperów środowiska GNOME. Organizatorzy przewidują udział uczestników z około trzydziestu krajów. Komitet konferencji zaplanował podzielenie wystąpień na kilka działów: integracja biurka i systemu, wsparcie dla multimediów, standardy biurkowe, oprogramowanie biurowe, GNOME dla każdego, społeczność GNOME, GNOME w edukacji, GNOME w administracji rządowej oraz GNOME na małych urządzeniach (ang. small devices).http://2005.guadec.org/

AbiWord 2.2Ukazała się nowa wersja wieloplatformowego edytora tekstu AbiWord, będącego częścią nieoficjalnego projektu GNOME Office. Projekt nastawiony jest w dużej mierze na maksymalne ułatwienie przesiadki dotychczasowym użytkownikom MS Word i trzeba przyznać, że udaje się to coraz lepiej. W nowej wersji umożliwiono m.in. automatyczne tworzenie spisów treści w dokumentach. Od tej wersji dostępny jest również port programu dla MacOS X.http://www.abisource.com/

Firestarter 1.0Minęło już sporo czasu od powstania projektu Firestarter – graficznej aplikacji dla GNOME, przeznaczonej do budowania zapór ogniowych. Teraz wreszcie program osiągnął dojrzałość. W nowej wersji niemal zupełnie od początku przepisano interfejs programu.http://www.fs-security.com/

Essays 1743 1.0Essays 1743 to nowa czcionka autorstwa Johna Stracle'a, wydana na licencji LGPL (Lesser General Public License). Wzorowana jest na czcionce, jakiej użyto do złożenia angielskiego wydania Prób (w angielskiej wersji Essays) Michela de Montaigne'a, z 1743 roku (stąd nazwa). Projekt osiągnął niedawno wersję 1.0 i oferuje obecnie czcionki standardowe, pogrubione, kursywę oraz pogrubioną kursywę.http://www.thibault.org/fonts/essays/

ściągnąć, lecz czekają w kolejce. W os-tatniej zakładce, Znajomi, wpisać mo-żemy loginy naszych przyjaciół, dzięki czemu będziemy mieli łatwiejszy dostęp do udostępnianych przez nich plików, a oni będą mogli skorzystać ze zdefinio-wanych przez nas preferencji dla nich.

Dodatkowe opcjeSkoro już wiemy, jak działa Nicotine i sieć SoulSeek, to możemy zająć się do-pracowaniem konfiguracji programu. Wy-bieramy zatem menu Plik–>Ustawienia – pojawi się znane już okno konfiguracji. W zakładce Transfer możemy szczegóło-wo zdefiniować szybkość transferu wy-chodzącego, jak i zasady kolejkowania plików do wysyłania. Możemy też ograni-czyć zachłanność innych użytkowników, ustawiając limit, do którego dany użyt-kownik może jednorazowo zakolejkować udostępniane przez nas pliki. Możemy też uprzywilejować naszych znajomych, da-jąc im pierwszeństwo ściągania, oraz wy-łączyć ich z ustawionych limitów.

Z opcji w zakładce Blokada krajów możemy skorzystać tylko wówczas, gdy mamy w systemie zainstalowaną wspo-mnianą wcześniej bibliotekę GeoIP. W tej zakładce możemy zdefiniować kraje, z których użytkownicy nie bę-dą mogli ściągać udostępnionych przez nas plików. Wystarczy podać tylko kody tych krajów.

W zakładce Interfejs możemy zdefi-niować własne kolory dla wypowiedzi wpisywanych w czasie rozmów na soul-seek'owym chacie. Z kolei w zakładce Ła-panie URL-i możemy zdefiniować, jakie programy zewnętrzne mają przechwy-tywać odpowiednie protokoły (np. gdy w rozmowie ktoś wskaże jakiś adres URL). Domyślnie zdefiniowana jest jedy-nie Mozilla dla protokołu http, ale nic nie stoi na przeszkodzie, aby innym proto-kołom przyporządkować odpowiadające

GNOME News

im programy, np. gFTP protokołowi ftp, a Evolution – mailto.

W zakładce Zajęty możemy zdefinio-wać, po ilu minutach bezczynności pro-gramu nasz status zostanie automatycznie zmieniony na Zajęty. Możemy też wpisać tzw. autoodpowiedź dla tego statusu, któ-rą zobaczy każdy użytkownik próbujący wysłać nam jakąś wiadomość, gdy usta-wiony mamy status Zajęty. W zakładce Info użytkownika wpisać możemy pu-blicznie dostępne informacje o nas, np. że nie lubimy użytkowników, którzy nie udostępniają żadnych plików lub co my-ślimy o prezydencie naszego kraju. W za-kładce Blokuj/Ignoruj możemy zarzą-dzać osobami przez nas blokowanymi lub ignorowanymi. Możemy dodać użytkow-ników do spisu bezpośrednio poprzez to okno (co jest mało wygodne) lub przez wspomniane już menu kontekstowe. W zakładce Wyszukiwanie możemy zde-finiować filtry działające przy wyszukiwa-niu plików. Kryterium mogą być frazy, które zawiera lub których nie zawiera na-zwa pliku, rozmiar pliku, wartość bitrate, kraj pochodzenia użytkownika udostęp-niającego plik, oraz to, czy użytkownik ma w danym momencie wolny slot (tzn. czy można od razu pobierać od niego plik, czy też trzeba poczekać w kolejce). W zakładce Zdarzenia możemy zdefinio-wać polecenia wykonywane na plikach lub katalogach zaraz po ich ściągnięciu, np. jeśli chcemy, aby zaraz po ściągnięciu całego katalogu został on przenoszony do folderu /mnt/muzyka/ w naszym katalo-gu domowym, to w drugim od góry polu w tej zakładce musimy wpisać polecenie: mv $ /mnt/muzyka/.

PodsumowanieSoulSeek to bardzo ciekawa sieć P2P, któ-ra wykształciła specyficzną społeczność dbającą o zachowanie pewnych zasad. Ni-cotine to pełnowartościowy klient tej sie-ci dla Linuksa, nieustępujący funkcjonal-nością swemu windowsowemu pierwo-wzorowi. Użytkownik nie powinien mieć kłopotów z jego konfiguracją, choć mo-gą zdarzyć się niespodziewane problemy, np. przeglądanie udostępnianych plików pomiędzy dwoma użytkownikami, któ-rzy są za NAT-em, jest niemożliwe. Są to jednak problemy właściwe wszystkim sie-ciom P2P i trudno się przed nimi ustrzec, bez względu na to, jakiego programu i dla jakiej platformy się używa.http://nicotine.thegraveyard.org/

Rysunek 2. Okno konfiguracji ukaże się nam przy pierwszym uruchomieniu programu

Page 46: Linux+_02_2005

kdeaktualnościoprogramowanie

42 luty 2005 43www.lpmagazine.org

KDE News

Krusader – menedżer plików

Użytkownicy komputerów domo-wych, którzy pamiętają jeszcze

epokę sprzed kolorowych interfejsów graficznych, znają z pewnością pro-gram Norton Commander – menedżer plików dla systemu DOS. W Linuksie jego rolę spełniał (i wciąż spełnia) Mid-night Commander, będący jego nie-mal dokładnym klonem. Gdy systemWindows odciął zwykłego użytkownikaod interfejsu tekstowego, skończyła sięrównież kariera Norton Commandera.Powstał wówczas Windows Commander(dzisiejszy Total Commander) – jegograficzny odpowiednik. Oczywiście, w środowisku linuksowym również nie mogło zabraknąć podobnego programu – tak powstał Krusader, menedżer pli-ków w stylu Norton Commandera dla środowiska KDE.

InstalacjaPonieważ Krusader jest jednym z naj-wyżej ocenianych programów dla KDE w serwisie KDE-apps.org, pakiety z tym programem są dostępne niemal w każ-dej dystrybucji Linuksa – płyty instala-cyjne powinny być pierwszym miejscem, w którym należy szukać tego menedże-ra plików. Na stronie projektu są dostęp-ne pakiety dla wielu popularnych dystry-bucji Linuksa.

Jeśli chcemy zainstalować Krusadera ze źródeł (np. z repozytorium CVS, czy-li w wersji deweloperskiej), to nie po-winniśmy mieć z tym większych proble-mów. Musimy pamiętać o wcześniejszym zainstalowaniu odpowiednich bibliotek i pakietów z plikami nagłówkowymi (czy-li pakiety devel ). Potrzebne będą przede wszystkim pakiety libqt3 i libqt-devel, a także kdelibs i kdelibs-devel. Oprócz te-go, przy kompilacji niezbędne będą pa-kiety, które prawdopodobnie mamy już w większości zainstalowane w systemie (szczególnie jeśli korzystamy z KDE): libjpeg62, libjpeg-devel, libpng3, libmng,

Witold Kieraś

fam i famlibs, zlib1, arts, libart_lgpl2, libstdc++5 oraz libpcre0.

Będziemy również potrzebować źró-deł samego programu. Rozpakowu-jemy je poleceniem tar xzvf krusa-

der-<wersja>.tar.gz i przechodzimy do nowo utworzonego katalogu (cd krusa-

der-<wersja>). Jeśli korzystamy ze źródeł z CVS, to musimy utworzyć najpierw skrypt configure, wykonując polecenie: make -f

Makefile.cvs. Jeśli korzystamy ze stabilnej wersji programu, to możemy od razu wy-konać polecenia ./configure i make, a na-stępnie, jako root, make install. Kompilacja i instalacja powinna przebiec bez kłopo-tów, ale jeśli pojawią się jakieś nieprzewi-dziane problemy, to warto przede wszyst-kim zajrzeć do pliku INSTALL w katalogu ze źródłami, w którym cały proces jest bar-dzo szczegółowo opisany. Program uru-chamiamy poleceniem krusader.

Podstawowe funkcjeNaszym oczom ukaże się główne okno Krusadera – wielu użytkownikom wyda się ono znajome. Dwa pionowe, bliźnia-cze panele wyświetlają domyślnie zawar-tość katalogu domowego użytkownika. Podobnie jak w Midnight Commanderze, pod panelami do dyspozycji mamy pio-nowy pasek, w którym możemy wpisy-wać polecenia powłoki systemowej. Zaraz pod nim są umieszczone przyciski ozna-czone od [F2 ] do [F10 ] – można z nich ko-rzystać albo przy pomocy myszy, albo kla-wiatury. Ich funkcje również są w więk-szości takie same, jak w Midnight Com-manderze – kolejno: [F2 ] uruchamia wir-tualny terminal (domyślnie Konsole, ale w dalszej części pokażemy, jak zmienić go np. na XTerm), [F3] otwiera plik tekstowy do odczytu, [F4 ] otwiera plik tekstowy do edycji, [F5 ] kopiuje pliki lub katalogi po-między panelami, [F6 ] przenosi pliki lub katalogi pomiędzy panelami, [F7 ] tworzy nowy katalog, [F8 ] kasuje plik lub katalog, [F9 ] zmienia nazwę pliku lub katalogu,

a [F10 ] zamyka program. Choć przycisk [F1] nie jest wyszczególniony, to, podob-nie jak w Midnight Commanderze, po jego wciśnięciu otrzymujemy dostęp do doku-mentacji programu.

Po panelach możemy poruszać się przy pomocy strzałek na klawiaturze lub przy pomocy myszy, wykorzystując strzałki w lewym górnym rogu główne-go okna programu. Przycisk [Tab ] przeno-si nas z jednego panelu do drugiego.

Konfiguracja programów zewnętrznychPrawdziwa siła Krusadera tkwi w zaprzę-ganiu do pracy programów zewnętrz-nych. Wybierając z menu programu Usta-wienia–>Configure Krusader otrzyma-my dostęp do różnych ustawień progra-mu, dotyczących zarówno jego zachowa-nia, jak również wyglądu. Interesuje nas tutaj przede wszystkim zakładka Zależ-ności. W tym miejscu, w zakładce Ogól-ne, możemy zdefiniować, jakie programy zewnętrzne będą wykonywać odpowied-nie zadania – zwykle część z tych pól jest już wypełniona, jeśli Krusader znalazł od-powiednie programy zainstalowane w sys-temie. Kolejno: df to program tekstowy, ra-portujący o wolnym i zajętym miejscu na partycjach (posiada graficzny odpowied-nich dla KDE o nazwie kdf ); eject wysu-wa tackę CD-ROM-u (prawie na pewno mamy go już zainstalowanego w systemie i nie ma potrzeby go zmieniać); kdesu to

Rysunek 1. Główne okno Krusadera wygląda znajomo

Page 47: Linux+_02_2005

kdeaktualnościoprogramowanie

42 luty 2005 43www.lpmagazine.org

KDE News

Wywiad ze Scottem WheeleremSerwis Open for Business przeprowadził wywiad ze Scottem Wheelerem, deweloperem KDE, członkiem zespołu KDE Multimedia i twórcą m.in. odtwarzacza JuK. Scott opowiada w nim przede wszystkim o problemach z serwerem aRts, po tym jak jego twórca, Stefan Westerfeld, przestał go rozwijać, oraz o możliwościach zastąpienia go innymi istniejącymi już rozwiązaniami. Zmiana nie nastąpi jednak, zdaniem Scotta, przed wydaniem wersji 4.0 środowiska KDE. Scott rozważa również problem tzw. domyślnego odtwarzacza multimediów w KDE – teoretycznie jest nim Noatun, ale w praktyce coraz większą popularność zdobywają takie projekty, jak AmaroK czy Kaffeine.http://www.ofb.biz/modules.php?name=News&file=article&sid=338

Improving KDE 1.0Bardzo popularny zestaw łatek upiększających KDE osiągnął wersję 1.0. Wszystkie poprawki zostały przetestowane na wersji 3.3.1 środowiska i, zdaniem autora, spisują się poprawnie, ale nie ma gwarancji ich poprawnego działania w innych wersjach. Zachęcam do obejrzenia zrzutów ekranowych – wyglądają naprawdę imponująco.http://www.kde-apps.org/content/show.php?content=16962

AmaroK 1.2 beta1Ukazała się pierwsza wersja beta nowego AmaroKa – zdobywającego coraz większą popularność odtwarzacza muzyki dla KDE. W nowej wersji poprawiono m.in. obsługę OSD i aRts, a także dodano wsparcie dla bazy danych MySQL .http://www.kde-apps.org/content/show.php?content=9939

Dla programistów QtW serwisie KDE.pl powstał niedawno dział poświęcony programowaniu z wykorzystaniem biblioteki Qt. Dział zainaugurowały trzy artykuły autorstwa Tomasza Pielecha. Przy serwisie powstało również forum dyskusyjne poświęcone podobnej tematyce.http://www.kde.pl/?page=articles&category=6http://qtforum.kde.pl/

graficzne okno proszące o podanie hasła administratora w razie potrzeby uzyska-nia takich uprawnień (standardowy kom-ponent KDE); kget to menedżer ściągania plików, graficzny odpowiednik tekstowe-go programu wget; kmail to znany klient poczty; diff utility – tutaj mamy do wyboru zainstalowanie dwóch różnych nakładek na tekstowy program diff do porównywa-nia zawartości plików tekstowych: xxdiff lub kdiff3; krename – nakładka graficz-na na program rename do grupowej zmia-ny nazw plików według ustalonego wzor-ca; krusader to oczywiście ścieżka do sa-mego Krusadera. Cztery ostatnie pozycje to już standardowe narzędzia systemowe, z pewnością obecne w naszym Linuksie: locate – program do wyszukiwania plików w okresowo aktualizowanej bazie danych; mount i umount – narzędzia do monto-wania i odmontowania urządzeń; upda-tedb – program aktualizujący bazę danych o nazwach plików. W zakładce Programy kompresujące możemy zdefiniować nie-mal wszystkie możliwe narzędzia do kom-presji danych (pod warunkiem, że mamy je zainstalowane w systemie).

W konfiguratorze Krusadera może-my również wskazać, jaki program ma być standardowym wirtualnym termina-lem. W sekcji Ogólne domyślnie jest wska-zany program Konsole, ale nic nie stoi na przeszkodzie, aby wykorzystać w tej ro-li np. XTerm.

MountManMountMan to ciekawa funkcja oferowa-na przez Krusadera, która zainteresu-

je z pewnością tych użytkowników, któ-rzy nie mają zaufania do automatycznych monterów nośników, takich jak super-mount. Wybierając z menu Narzędzia–>MountMan otworzymy okno, w któ-rym są wyszczególnione wszystkie pozy-cje zapisane w pliku /etc/fstab – napędy CD-ROM i stacje dyskietek, partycje, za-soby sieciowe, urządzenia przenośne USB itp. Teraz klikając na dowolnej z nich mo-żemy dowiedzieć się, czy jest zamonto-wana, czy nie. Klikając prawym przyci-skiem myszy na wybranej pozycji może-my dany zasób zamontować lub odmon-tować – pod warunkiem oczywiście, że mamy do tego uprawnienia. Aby uniknąć omyłkowego odmontowania np. ważnej partycji systemowej, warto zabronić Mount-Manowi operacji na tym zasobie. W tym celu z menu wybieramy Ustawienia–>Configure Krusader–>Zaawansowanei przy pozycji MountMan won't (un)mo-unt the following mount points: po prze-cinku wymieniamy wszystkie zasoby (według punktów montowania), których MountMan nie ma prawa ruszać (domyśl-nie wymieniona jest tu tylko partycja / ).

PodsumowanieKrusader to program przede wszystkim dla tych, którzy przyzwyczaili się do pew-nego modelu pracy z plikami. Nawet je-śli do tej pory nie mieliśmy z nim do czy-nienia, to warto poświęcić mu trochę cza-su, bo z pewnością odpłaci się sowicie. Zachęcam do eksperymentowania z tym elastycznym menedżerem plików.http://krusader.sourceforge.net/

Rysunek 2. MountMan ułatwia montowanie urządzeń i zasobów zdalnych

Page 48: Linux+_02_2005

linuxfreshaktualnościoprogramowanie

44 luty 2005 45www.lpmagazine.org

FRESH News

SoX – konwerter formatów dźwiękowych

Spośród narzędzi dołączanych do więk-szości popularnych dystrybucji Linuk-

sa, SoX (Sound eXchange) wydaje się być niedoceniany. Dawniej był wykorzysty-wany w procesie nagrywania płyt au-dio, ale od kiedy CDRecord wzbogacił się w nowe opcje, SoX przestał być niezbęd-ny. Nie zmienia to jednak faktu, że ten pro-gram, przeznaczony do konwersji forma-tów dźwiękowych, wciąż jest rozwijany i nadal może znaleźć zastosowanie. Wie-lu użytkowników może odstraszać fakt, że SoX jest uruchamiany z linii poleceń, lecz jest to jedna z jego zalet. Dzięki temu może być z łatwością wykorzystywany w mniej lub bardziej rozbudowanych skryptach. A przy tym składnia jego poleceń nie jest zbyt skomplikowana. Oprócz możliwo-ści konwersji, SoX oferuje również narzę-dzia do nagrywania i odtwarzania dźwię-ku, a także dodawania różnorakich efek-tów, co sprawia, że jest programem bardzo wszechstronnym i przydatnym.

Program najprawdopodobniej mamy już zainstalowany w systemie lub znajduje się na płytkach z dystrybucją. Jeśli jednak nie jest to najnowsza wersja, warto ją uak-tualnić, gdyż pojawiło się kilka ciekawych funkcji (m.in. możliwość podawania wie-lu plików wejściowych równocześnie). Je-go instalacja ze źródeł lub z pakietów do-stępnych dla poszczególnych dystrybucji nie powinna sprawić kłopotów.

Po zainstalowaniu SoX mamy do dys-pozycji trzy podstawowe polecenia: sox, play i rec. Pierwsze z nich służy do kon-wersji plików muzycznych do innego for-matu, lecz może też być wykorzystane do nakładania efektów lub zmiany opcji (np. amplitudy czy częstotliwości próbkowa-nia). Drugie polecenie, jak łatwo się do-myślić, pozwala na odtwarzanie plików dźwiękowych. Co więcej, możemy po-dać efekty, jakie mają być nakładane pod-czas odtwarzania. Jest to tylko nakładka na polecenie sox, mająca ułatwić korzysta-nie z niego. Trzecie polecenie (w zasadzie

Piotr Machej

jest to tylko łącze symboliczne wskazujące na program play) pozwala na nagrywanie próbek dźwiękowych z domyślnego urzą-dzenia (/dev/dsp w przypadku Linuksa).

Nie bez znaczenia jest liczba forma-tów dźwiękowych obsługiwanych przez SoX. Radzi sobie zarówno z formatami su-rowymi (RAW ), z popularnym w Linuksie formatem Ogg Vorbis, ale także z takimi formatami, jak 8svx (Amiga), AIFF, .au, AVR, HCOM (Macintosh), WAV, .cdr i in-ne. Potrafi odtwarzać i nagrywać dźwięk z wykorzystaniem zarówno urządzenia /dev/dsp (OSS, ALSA), jak i /dev/audio. Na próbki można nakładać kilkadziesiąt róż-nych efektów, wliczając w to echo, chóry (chorus), narastanie i wygasanie dźwięku (fade in/out), odtwarzanie od tyłu, zamia-nę kanałów, zmianę szybkości lub gło-śności odtwarzania. Dokładny spis for-matów plików i efektów obsługiwanych przez naszą wersję SoX możemy uzyskać wydając polecenie sox -h.

Jeśli chcemy nakładać efekty na na-sze próbki dźwiękowe, najlepiej najpierw sprawdzić możliwy do uzyskania efekt. W tym celu wydajemy polecenie play z odpowiednimi parametrami, np.:

# play file.wav echo 0.8 0.9 1000.0 0.3

W tym przykładzie odtwarzamy plik file.wav i nakładamy na niego efekt echa. Korzystając z polecenia man sox możemy zobaczyć, że efekt echo ma pa-rametry gain-in, gain-out, delay i decay. Możemy podać więcej par liczb delay i decay w celu uzyskania kolejnych ech. Ciekawym rozwinięciem tego efektu jest echos. Przy obliczaniu pierwszego echa bierze pod uwagę tylko plik wejściowy. Przy drugim – plik wejściowy i pierw-sze echo. Przy trzecim – plik wejścio-wy i oba echa. I tak dalej. W przypad-ku zwykłego efektu echo, zawsze bra-ny jest pod uwagę tylko plik wejściowy.

Rysunek 1. Dzięki SoX nawet muzykę z Amigi możemy przekonwertować na format Ogg Vorbis

Page 49: Linux+_02_2005

linuxfreshaktualnościoprogramowanie

44 luty 2005 45www.lpmagazine.org

FRESH News

Quick3dApplet 1_5Quick3dApplet pozwala na prezentowanie interaktywnej grafiki 3D na stronie WWW. Jeśli tylko w przeglądarce mamy zainstalowaną Javę w wersji co najmniej 1.1, to będziemy mogli cieszyć się dosyć szybkim silnikiem 3D. Przed wykorzystaniem apletu możemy zapoznać się z jego możliwościami na stronie domowej projektu. Są tam umieszczone przykłady wykorzystania tego programu, takie jak szachy czy gra w trójwymiarowe kółko i krzyżyk.W nowej wersji dodano możliwość odczytywania plików 3ds, dzięki czemu możemy również prezentować modele stworzone w programie 3DStudio. Oprócz tego, poprawiono kilka błędów.http://freshmeat.net/projects/quick3dapplet/

Swfdec 0.3.2W Internecie można znaleźć wiele zabawnych animacji i gier zapisanych w plikach SWF. Swfdec to biblioteka służąca do renderowania takich animacji. Chociaż została zaprojektowana do użytku przy tworzeniu wtyczek Flasha dla programu GStreamer, obecnie jest praktycznie samodzielną biblioteką (wymaga jedynie biblioteki libart do rysowania). Wraz z Swfdec jest dostarczany odtwarzacz i wtyczka dla Mozilli. Program jest jeszcze we wczesnej fazie rozwoju, więc może sprawiać trochę problemów, lecz zapowiada się całkiem interesująco. W ostatniej wersji wprowadzono kilka poprawek do wtyczki dla Mozilli.http://freshmeat.net/projects/swfdec/

Mutt Folder List 20041122Użytkownikom Mutta z pewnością przyda się ta łatka. Dodaje ona do tego znakomitego programu pocztowego przydatną funkcję, czyli boczny pasek ze spisem folderów pocztowych. Można ten pasek ukrywać i ujawniać wciśnięciem jednego klawisza. Oprócz tego, dostępnych jest kilka możliwości, takich jak podświetlanie nazw folderów zawierających nowe listy czy konfigurowanie szerokości i kolorów paska, a także skrótów klawiszowych.http://freshmeat.net/projects/mutt-folderlist/

KDocker 1.0 RC2KDocker to ciekawy projekt mający umożliwić dokowanie aplikacji w zasobniku systemowym. Jego zaletą jest to, że działa zarówno w KDE, jak i w GNOME, więc jeśli nawet aplikacja radzi sobie z dokowaniem w jednym ze środowisk graficznych, to KDocker pomoże jej w drugim. W nowej wersji między innymi dodano obsługę drag and drop.http://freshmeat.net/projects/kdocker/

W analogiczny sposób możemy wypró-bować inne efekty, eksperymentując z parametrami aż do uzyskania zadowa-lających nas wyników.

Teraz już możemy nałożyć odpowia-dający nam efekt. Jeśli podoba nam się echo uzyskane wcześniejszym polece-niem, możemy zapisać je na stałe:

# sox file.wav file2.wav echo 0.8 0.9 S

1000.0 0.3

W ten sposób w pliku file2.wav znajdzie się dźwięk z pliku file.wav z nałożonym efektem echa. Jak wspomnieliśmy na po-czątku, SoX pozwala na konwersję po-między różnymi typami plików. Można ją uzyskać bardzo prosto:

# sox file.au file.wav

W przypadku pracy z plikami zawiera-jącymi odpowiednie nagłówki, składnia wywołania SoX jest prosta. Jeśli jednak pracujemy z danymi w formacie suro-wym RAW, to programowi trzeba do-starczyć nieco więcej informacji o stru-mieniu dźwięku. Chodzi tu o takie in-formacje, jak częstotliwość próbkowa-nia (sample rate), precyzja przecho-wywania danych (np. 8-bitowe bajty i 16-bitowe słowa), kodowanie danych (np. u-law, ADPCM) oraz liczba kana-łów. Przykładowo, jeśli chcemy nagrać dźwięk z mikrofonu, możemy skorzy-stać z polecenia:

# sox -t ossdsp -c 1 -r 44100 /dev/dsp S

file.wav

Opcją -t wskazujemy typ pliku wejścio-wego (jego ścieżka to /dev/dsp). Liczbę kanałów podajemy w opcji -c (dźwięk monofoniczny), a częstotliwość próbko-wania w opcji -r. W ten sposób w pli-ku file.wav uzyskamy dźwięk nagrany z mikrofonu. Oczywiście, wcześniej nale-ży odpowiednio ustawić urządzenie na-grywające poleceniem aumix oraz ustawić właściwe poziomy głośności.

Zamiast powyższego polecenia może-my skorzystać z alternatywy:

# rec -c 1 -r 44100 file.wav

Jak widać, upraszcza to polecenie pozwa-lając nam pominąć kilka opcji.

Oprócz wspomnianych już poleceń, SoX udostępnia jeszcze jedno: soxmix. Spełnia ono praktycznie taką samą funk-cję, jak sox, lecz z pewnym wyjątkiem – oczekuje na wejściu co najmniej dwóch plików, które następnie miksuje i zapisuje w pliku wyjściowym. Musimy tu pamiętać, że wszystkie pliki wejściowe muszą być te-go samego typu i mieć tą samą częstotli-wość próbkowania.

Na koniec warto pamiętać o bardzo użytecznej opcji -V, która spowoduje, że SoX wyświetli więcej informacji o wyko-nywanych czynnościach.

http://freshmeat.net/projects/sox/

Rysunek 2. W dokumentacji możemy znaleźć dokładny opis parametrów poszczególnych efektów

Page 50: Linux+_02_2005

linuxfreshaktualnościoprogramowanie

46 luty 2005 47www.lpmagazine.org

FRESH News

GFSGL – menedżer uruchamiania gier

Wydawałoby się, że jeśli chodzi o gry komputerowe, to Windows

bije Linuksa na głowę. Wiele osób na-wet trzyma nadal partycję z systemem z Redmond tylko po to, aby móc so-bie czasem pograć w ulubione gry. W rzeczywistości, gier działających na Linuksie jest całkiem sporo, a od ja-kiegoś czasu wychodzą nawet dedyko-wane dla niego wersje rynkowych hi-tów. Dodajmy do tego gry, które może-my uruchomić korzystając z Wine, róż-nych wersji WineX lub nowszej Cedegi (bo pod taką nazwą jest obecnie rozwi-jany WineX), a także gry działające pod kontrolą różnych emulatorów (np. Ami-gi lub Commodore 64). Nie jest tego tak mało, prawda? Ale jak to wszystko upo-rządkować?

Z pomocą przychodzi nam pro-gram GFSGL (Golden Files Software Ga-me Launcher). Dzięki niemu możemy zainstalować w systemie nie tylko gry

Piotr Machej

przeznaczone dla Linuksa, ale również te z Windows, które działają pod Cede-gą, WineX lub Wine. Program ten auto-matycznie wykrywa pliki instalacyjne umieszczone na płytach CD, a także wy-korzystuje informacje zawarte w plikach autorun.inf/autorun.ini. Możemy wska-zać, który program ma być wykorzysty-wany do emulacji Windows, a także, co ciekawsze, możemy wskazać inny emu-lator, np. komputera Commodore C64 (o ile mamy taki zainstalowany w sys-temie) lub choćby popularny DOSBox. Wszystkie zainstalowane gry są dostęp-ne z jednego menu, do którego możemy dodawać gry zainstalowane wcześniej. Z GFSGL możemy korzystać zarówno za pośrednictwem interfejsu graficznego, jak i linii poleceń.

Przed instalacją programu należy upewnić się, że nasz system spełnia je-go wymagania. Nie są one wielkie. Do działania GFSGL wystarczy powłoka

GNU Bash oraz program XDialog (do pobrania ze strony http://freshmeat.net/projects/xdialog/ ). Pozostałe wymaga-nia (Wine, Cedega, GNU Wget, Curl i Lib-Curl ) są opcjonalne. Instalacja progra-mu jest bardzo prosta. Co ciekawe, nie potrzebujemy do niej uprawnień admi-nistratora. Uruchamiamy plik z rozsze-rzeniem .run, pobrany ze strony domo-wej programu. W tym celu wydajemy polecenia (dotyczą one najnowszej do-stępnej w chwili pisania artykułu wersji rozwojowej):

# chmod u+x gfsgl-0.91.0-Beta3.run

# ./gfsgl-0.91.0-Beta3.run

Jeśli polecenia te wykonaliśmy z upraw-nieniami użytkownika, program zosta-nie zainstalowany w katalogu ~/gfsgl/, a łącza symboliczne do plików urucho-mieniowych zostaną utworzone w katalo-gu ~/bin/. W takim przypadku warto do-dać ten katalog do zmiennej PATH, np. poprawiając plik ~/.bash_profile tak, aby zawierał linię:

PATH=$PATH:$HOME/bin

Od tej chwili mamy do dyspozycji dwa polecenia: gfsgl i gfsgl-gui. Jak łatwo się domyślić, pierwsze z nich pozwala na pracę w linii poleceń, natomiast drugie uruchamia interfejs graficzny. Konfigura-cja programu umieszczona jest w katalo-gu ~/.gfsgl/, lecz jeśli będziemy korzysta-li z GUI, to zazwyczaj nie będzie potrzeby ręcznej edycji plików.

Po uruchomieniu polecenia gfsgl-gui powinniśmy najpierw sprawdzić konfigurację. W tym celu wybieramy Additional features–>Configure GFSGL . Dwie pierwsze opcje pozwalają nam wskazać program obsługujący emu-lację Windows (np. CVSCedega) oraz emulator obsługujący pozostałe gry

Rysunek 1. Autor GFSGL planuje dodać do niego w przyszłości więcej ciekawych funkcji

Page 51: Linux+_02_2005

linuxfreshaktualnościoprogramowanie

46 luty 2005 47www.lpmagazine.org

FRESH News

Chess Training Tools 1.2.11Osoby dobrze grające w szachy mogą zainteresować się zestawem programów pod wspólną nazwą Chess Training Tools. Służą one do ćwiczenia zdolności wizualizacji, dzięki czemu możliwe jest granie nawet bez patrzenia na szachownicę. Pierwszy z programów pomaga w zapamiętywaniu kolorów poszczególnych pól, czy są one na jednej linii lub czy da się je połączyć jednym lub dwoma ruchami konia. Oprócz tego, mamy do dyspozycji program do nauki otwarć oraz słaby program szachowy (zwany Vince). W tym programie jest możliwe granie przy niewidocznych pionach, figurach lub poszczególnych polach. Chess Training Tools są również dostępne dla Palm OS i Pocket PC, choć te wersje są pozbawione trenera otwarć i programu Vince.http://freshmeat.net/projects/chesstraining/

GoGrinder 1.07Jest kilka metod rozwijania swoich umiejętności gry w Go. Jedną z nich jest rozwiązywanie problemów. Może być w tym pomocny program GoGrinder, do którego jest dołączonych kilkaset różnych problemów do rozwiązania. Ponieważ program wykorzystuje popularny format SGF, więc można również korzystać z tysięcy problemów dostępnych w Internecie.http://freshmeat.net/projects/gogrinder/

Linice 2.0Jednym z bardziej znanych debuggerów wykorzystywanych pod Windows jest SoftIce. Program Linice to napisany od zera debugger dla Linuksa, posiadający większość komend znanych z SoftIce. Może służyć do odpluskwiania zarówno własnych programów, jak też modułów jądra i samego jądra. Jego instalacja nie wymaga rekompilacji jądra systemu. W nowej wersji autor przede wszystkim skupił się na oczyszczeniu kodu.http://freshmeat.net/projects/linice/

Gv4l 2.2.4Jeśli posiadamy kartę telewizyjną, to do nagrywania interesującego nas filmu lub audycji możemy użyć Gv4l. Program ten pozwala na zapisywanie strumieni obrazu i dźwięku z urządzeń V4L (Video For Linux – m.in. tunery telewizyjne i kamery internetowe) w różnych formatach, np. XviD, DivX lub surowym. Nowa wersja programu wspiera program Transcode (wykorzystywany do kodowania obrazu) w wersji 0.6.13 i wyższych. Oprócz tego, poprawiono metodę odczytywania danych o kanałach z plików konfiguracyjnych Xawtv.http://freshmeat.net/projects/gv4l/

(np. DOSBox). Oprócz tego, możemy między innymi wskazać punkt monto-wania napędu CD-ROM oraz ręcznie modyfikować pliki konfiguracyjne. Je-śli nie chcemy zapisywać zmian w pli-kach, wciskamy Discard. Aby opuścić konfigurację GFSGL , wciskamy przycisk Done, a następnie Back.

Wybierając Add game możemy do-dać grę, która już jest zainstalowana w systemie. W zasadzie może to być do-wolny program, do którego chcieliby-śmy mieć dostęp z menu GFSGL . Mu-simy podjąć decyzję, czy dodajemy grę działającą pod Linuksem (Native), czy też uruchamianą w emulatorze Win-dows (Windows game) lub innym (Other emulated game). Niezależnie od wy-boru, musimy wpisać nazwę gry (Ga-me name) i krótką nazwę (Mini name). Tą drugą będziemy mogli wykorzysty-wać do szybkiego uruchamiania gry w konsoli. Przykładowo, wybierając opcję Native możemy podać nazwę gry Fortune i krótką fe. W następnym oknie zostaniemy zapytani o komendę, jaką ma być uruchomiona gra. Wpisujemy /usr/games/fortune. Zostajemy jeszcze poproszeni o zatwierdzenie poprawno-ści wprowadzonych danych, po czym uzyskujemy informację, że naszą grę będziemy mogli uruchomić na trzy róż-ne sposoby. Pierwszym z nich jest sko-rzystanie z linii poleceń (mamy do wy-boru: fe, gfsgl fe i gfsgl-gui fe). Drugi to uruchomienie gfsgl-gui i wybranie

gry z menu. Trzeci sposób to wybra-nie gry z menu środowiska graficzne-go (np. KDE lub GNOME), o ile została tam umieszczona. Jeśli podczas doda-wania gry zaznaczyliśmy pole Use Ad-vanced Wizard, to będziemy mieli do wyboru nieco więcej możliwości. Do-kładniej, w przypadku gier Native bę-dziemy mogli wskazać katalog roboczy i plik wykonywalny, natomiast w przy-padku gier dla Windows będziemy mo-gli określić emulator charakterystyczny dla tej konkretnej gry.

Możemy również instalować gry ko-rzystając z opcji Install a new game oraz Detect and run Win AutoRun programs. W tym drugim przypadku GFSGL ko-rzysta z informacji zawartych w plikach autorun.inf/autorun.ini w celu urucho-mienia właściwego instalatora. W razie potrzeby możemy też uruchomić kon-kretny program z wykorzystaniem emu-latora Windows wybierając opcję Addi-tional features–>Run target file with. Do usuwania gier z menu służy opcja Re-move game.

Program GFSGL zapowiada się bardzo interesująco. Pomimo pew-nych opóźnień, wciąż jest rozwijany. Wśród zapowiadanych możliwości war-to wymienić blokowanie gier hasłem (np. w celu uchronienia dzieci przed kontaktem z brutalnymi grami) oraz system modułów.

http://freshmeat.net/projects/gfsgl/

Rysunek 2. Dzięki GFSGL możemy wszystkie gry wywoływać z jednego menu

Page 52: Linux+_02_2005

linuxfreshaktualnościoprogramowanie

48 luty 2005 49www.lpmagazine.org

FRESH News

Munin – generator zestawień i statystyk

Korzystając z Linuksa, często chcieli-byśmy mieć możliwość sprawdze-

nia, jak kształtuje się zużycie naszego łą-cza, jak mocno obciążony jest procesor czy też ile pamięci zużywają nasze pro-gramy. Można to sprawdzić zaglądając do odpowiednich plików (np. w katalo-gu /proc/ ) lub uruchamiając takie progra-my, jak Top. Możemy wziąć sobie do ser-ca zasadę, że jeden obraz jest wart tysią-ca słów (a tym bardziej liczb), i wygenero-wać ładne, przejrzyste statystyki. Jednym z programów, które nam w tym pomogą, jest Munin.

Munin to program napisany w języku Perl, zbierający różne informacje z wielu serwerów i wyświetlający je w czytelnej formie (za pośrednictwem strony WWW ). W celu generowania wykresów wykorzy-stuje znakomite narzędzie RRDTool. Pro-gram działa w architekturze master/node. Zarządca (master) łączy się z węzłami (node) w określonych odstępach czasu i pobiera od nich dane. Następnie składu-je je w plikach RRD (Round Robin Data-base) i w razie potrzeby uaktualnia wy-kresy. Same wykresy można obejrzeć ko-rzystając z przeglądarki WWW. Munin do pobierania danych w węzłach wykorzy-stuje wtyczki, które użytkownik może sa-modzielnie dobierać, a nawet pisać wła-sne. Węzłem może być dowolny kompu-ter, zarówno w sieci lokalnej, jak i w Inter-necie, nie wyłączając oczywiście samego zarządcy. Dzięki temu możemy łatwo mo-nitorować wiele różnych systemów, a na-wet tworzyć zestawienia (Munin pozwala na dobór wykresów, jakie mają być wy-świetlone).

Przed instalacją Munina należy za-dbać o spełnienie kilku warunków. Mu-simy mieć zainstalowanego Perla w wer-sji 5 lub wyższej. Oprócz tego, na kom-puterze pełniącym rolę zarządcy na-leży zainstalować RRDTool (ze strony http://people.ee.ethz.ch/~oetiker/webtools/

Piotr Machej

rrdtool//index.html) oraz następujące mo-duły Perla: Getopt::Long i HTML::Templa-te. Na komputerach pełniących rolę wę-złów musimy zainstalować moduł Per-la o nazwie Net::Server::Fork. Wszyst-kie te moduły są dostępne z archiwum CPAN, więc możemy je zainstalować po-leceniem perl -MCPAN -e 'install Net::Server::Fork' i analogicznymi, wydanymi z uprawnieniami użytkownika root.

Archiwum pobrane ze strony domo-wej projektu Munin należy rozpakować na każdym z komputerów, gdzie chce-my zainstalować zarządcę i węzły. Naj-ważniejsza sprawa to dostosowanie pli-ku Makefile.config do naszych potrzeb. Zawiera on wszystkie ścieżki wykorzy-stywane przez program, jak również na-zwę użytkownika i grupy, z których pra-wami będzie uruchamiany Munin. War-to je sprawdzić, gdyż domyślnie ustawio-ne są ścieżki do katalogu /opt/munin/, co niekoniecznie musi nam odpowiadać.

Dalsze kroki różnią się zależnie od te-go, czy chcemy uzyskać zarządcę, czy wę-zeł. W przypadku instalacji zarządcy two-rzymy użytkownika munin (lub innego, określonego w pliku Makefile.config), a następnie wydajemy polecenie make in-stall-main. Dodatkowo, możemy zain-stalować dokumentację poleceniem make install-doc install-man. Podczas instala-cji węzła tworzymy grupę munin (lub in-ną, wskazaną w pliku Makefile.config), a następnie wydajemy polecenie make in-stall-node install-node-plugins. Pozo-staje nam zdecydowanie, jakie wtyczki mają działać na danym węźle – od tego zależy, jakie informacje będzie udostęp-niał zarządcy. Najlepszym sposobem jest wydanie polecenia munin-node-confi-

gure --shell | sh, które automatycznie włączy obsługę wtyczek proponowanych przez Munin dla naszego systemu. Może-my samodzielnie dostosować wykorzy-stywane wtyczki – wystarczy w katalo-

Rysunek 1. Z FAQ dowiemy się również, jak uruchamiać wtyczki z prawami innych użytkowników

Page 53: Linux+_02_2005

linuxfreshaktualnościoprogramowanie

48 luty 2005 49www.lpmagazine.org

FRESH News

gu /etc/opt/munin/plugins/ utworzyć do-wiązania symboliczne do plików wtyczek umieszczonych w katalogu /opt/munin/lib/plugins/. W pliku Makefile.config ka-talogi te są zdefiniowane odpowiednio w zmiennych CONFDIR i LIBDIR.

To nie koniec konfiguracji. Musimy zadbać o pliki konfiguracyjne węzłów i zarządcy.

W przypadku węzłów należy spraw-dzić plik /etc/opt/munin/munin-node.conf (znów w katalogu CONFDIR). Interesu-je nas tam szczególnie opcja allow, okre-ślająca, jakie komputery mogą łączyć się z węzłem. Domyślnie są dopuszczone tyl-ko połączenia z maszyny lokalnej. Mo-żemy poniżej dodać kolejne linie allow z odpowiednimi wartościami, np. allow ^192\.168\.0\.1$ (konieczne jest użycie wyrażeń regularnych). Pozostałe opcje zawarte w pliku zazwyczaj nie wymaga-ją zmiany.

Inaczej ma się sprawa z plikiem kon-figuracyjnym zarządcy – /etc/opt/munin/munin.conf. Tutaj, oprócz nazw katalo-gów, przechowujących pliki RRD, wyge-nerowane strony WWW, logi systemowe i pliki blokujące, możemy określić dane wszystkich węzłów. Najprostszy opis wę-zła ma postać:

[komputer.domena.pl]

address komputer.domena.pl

Oczywiście, możemy też użyć cyfr: ad-dress 192.168.0.1.

Teraz już możemy uruchomić węzły i zarządcę. Węzły powinny działać cały czas, zbierając dane i oczekując na zapyta-nia od zarządcy. Najprościej umieścić ich wywołanie w plikach startowych: /opt/munin/sbin/munin-node (katalog wska-zany przez zmienną SBINDIR). Zarząd-ca powinien być uruchamiany w regular-nych odstępach czasu, więc warto skorzy-stać z usługi Cron. Tworzymy plik cron-tab.munin o zawartości:

SHELL=/bin/sh

MAILTO=gerard

*/5 * * * * /opt/munin/bin/munin-cron

Następnie wystarczy z poziomu użytkow-nika root wydać polecenie crontab -u

munin crontab.munin. Od tej pory program /opt/munin/bin/munin-cron (ścieżka okre-ślona w zmiennej BINDIR) będzie urucha-miany co 5 minut z prawami użytkowni-ka munin. Ewentualne wyniki poleceń bę-dą przesyłane na konto gerard (tu powin-niśmy wstawić nazwę naszego konta). Nie powinniśmy obawiać się zalewu skrzynki pocztowej – listy otrzymamy tylko w razie problemów (np. gdy nie zainstalowaliśmy wymaganych modułów Perla).

Teraz pozostaje nam otworzyć w prze-glądarce plik /opt/munin/var/www/index.html i cieszyć oczy generowanymi statysty-kami. Warto też zapoznać się z dokumen-tacją programu, aby lepiej dostosować sta-tystyki do własnych wymagań.http://freshmeat.net/projects/munin/

Rysunek 2. Dane o interfejsach sieciowych to tylko część wyświetlanych informacji

Snortalog 2.3.0cUżytkownicy systemu wykrywania intruzów Snort z pewnością czasem chcieliby sprawdzić, jak wiele ataków doświadczył ich system i jakie niosły ze sobą zagrożenie. Jednym z programów to umożliwiających jest napisany w Perlu skrypt Snortalog. Analizuje on logi Snorta i generuje przejrzyste raporty w wybranym formacie (HTML, PDF lub czysty tekst). Oprócz trzech formatów logów Snorta, potrafi w podobny sposób analizować również logi Fw-1, Netfilter oraz IPFilter.http://freshmeat.net/projects/snortalog/

Vobcopy 0.5.14Jednym z kroków konwersji filmu DVD do formatu XviD lub podobnego (dokonujemy jej przykładowo, gdy chcemy obejrzeć nasz film na komputerze nie wyposażonym w napęd DVD) jest zgrywanie zawartości płyty na dysk twardy. W realizacji tego zadania może nam pomóc program Vobcopy, który, wykorzystując bibliotekę Libdvdread, kopiuje pliki .vob na dysk, w razie potrzeby je dekodując (o ile posiadamy bibliotekę Libdvdcss). Program upewnia się, czy na dysku jest dosyć miejsca, a także porównuje rozmiary skopiowanych plików w celu sprawdzenia wystąpienia błędu. Potrafi też skopiować całą zawartość wideo płyty DVD lub tylko wybrane pliki.http://freshmeat.net/projects/vobcopy/

FAQtor 0.5Autorzy bardziej rozbudowanych stron WWW nieraz umieszczają na stronie sekcję zawierającą odpowiedzi na często zadawane pytania (FAQ). Jeśli lista jest długa, jej aktualizacja może wymagać nieco wysiłku. Można sobie to zadanie ułatwić korzystając z generatora – programu FAQtor. Wystarczy zbudować prosty plik XML z pytaniami i odpowiedziami oraz równie prosty plik konfiguracyjny, a FAQtor wygeneruje ładnie sformatowaną stronę z FAQ.http://freshmeat.net/projects/faqtor/

AFD 1.2.21Jeśli regularnie wysyłamy pliki do wielu osób lub na wiele komputerów, zainteresujmy się programem AFD (Automatic File Distributor). Program może przesyłać pliki zarówno protokołem FTP, jak i SMTP. Oprócz tego, może rozprowadzać pliki lokalnie, po prostu je kopiując. AFD radzisobie ze wznawianiem przesyłania plików, jeśli połączenie zostało przerwane. Dostępny interfejs graficzny pozwala nadzorować przesyłanie plików. Nowa wersja zawiera poprawki kilku uciążliwych błędów.http://freshmeat.net/projects/afd/

Page 54: Linux+_02_2005

gryaktualnościoprogramowanie

50 luty 2005 51www.lpmagazine.org

GAMES News

Dominions II – strategiczna gra fantasy

W 2004 roku firma SharpnelGames wypuściła na rynek drugą część

gry strategicznej Dominions. Produkt im-ponuje dźwiękiem i – co najważniejsze – grywalnością.

Co to za gra?Dominions II to strategiczna gra fanta-sy, przypominająca inne strategie, ale, jak zapewniają jej autorzy, zasadniczo się od nich różniąca. Tak jak w innych grach te-go typu rozbudowujemy armię, podbija-my sąsiadujące terytoria, kontrolujemy si-ły magiczne i dbamy o rozwój swojego królestwa. Dominions II posiada dodat-kową głębię, która powinna usatysfak-cjonować nawet najbardziej wybrednego amatora gier strategicznych – gra nie spro-wadza się jedynie do prowadzenia regu-larnych bitew z sąsiadującymi księstwami, ale wymaga od gracza zapoznania się ze światem, w którym toczy się akcja gry.

Pierwsze wrażenieAutorzy Dominions II postarali się, aby specyficzny nastrój wprowadzić już na

Michał Niwicki

samym początku. Gra zaraz po urucho-mieniu wita nas łagodną średniowiecz-ną muzyką i dopracowaną elegancką grafiką. Opcje związane z początko-wymi ustawieniami gry znajdują się na tle zamglonej ascetycznej scenerii zielo-nobrunatnego krajobrazu. Każdorazo-wy wybór myszką któregoś z elemen-tów menu powoduje kliknięcie pasują-ce dźwiękiem do słyszanej w tle muzy-ki. Złożoność gry jest widoczna już na samym początku, gdy należy wybrać bohatera (boga), zdefiniować parame-try królestwa i określić, kto będzie na-szym przeciwnikiem.

Wszystko to powoduje, że gdy już na dobre rozpoczniemy grę, możemy być zaskoczeni szybkością upływają-cego czasu – Dominions II rzeczywi-ście wciąga.

Rozpoczynamy gręZanim przejdziemy do zasadniczej czę-ści, czyli do rozbudowy armii, posze-rzania granic naszego królestwa i zdo-bywania tajemnej wiedzy magicz-

nej, musimy poświęcić trochę czasu na określenie wielu parametrów mają-cych wpływ na przebieg gry. Tworzy-my boga (bo właśnie w niego wcie-limy się podczas gry), określamy, w jakim stopniu i nad jakimi siłami bę-dziemy sprawować kontrolę (ogień, wiatr, woda, ziemia, gwiazdy, śmierć, natura oraz krew) oraz wybieramy po-łożenie naszych ziem i definiujemy ich charakter. Następnie tworzymy nową grę – wybieramy dodatkowych graczy (sterowanych przez człowieka lub kom-puter) i decydujemy się na jeden z do-stępnych scenariuszy. Na końcu może-my określić kilka dodatkowych opcji wspólnych dla wszystkich uczestni-ków gry.

Po zakończeniu tego etapu może-my przejść do zasadniczej części, czy-li do grania.

Gra przez siećW Dominions II może jednocześnie grać maksymalnie 17 graczy. Ponieważ ru-chy każdego z nich podzielone są na tu-ry, a jedna tura może trwać nawet kilka-dziesiąt minut, producent umożliwił pro-wadzenie gry za pośrednictwem poczty elektronicznej. Tradycyjnie jednak, oso-by chcące umówić się na tzw. sesję, mo-gą przyłączyć się do serwera kontrolujące-go przebieg gry.

Po kilku godzinach grania......spędzonych nad rozbudową królestwa, rozwijaniem armii, poszukiwaniem magii, badaniem mapy i analizowaniem, dlacze-go akurat podczas jednej z bitew niespo-dziewanie część naszych oddziałów znik-

Wymagania sprzętowe:– Pamięć RAM: 64 MB– Dysk twardy: 250 MB– Procesor: Pentium II 300 MHz– Karta graficzna z akceleracją 3D

Rysunek 1. Bohater wciela się w jedną ze wskazanych przez nas postaci

Page 55: Linux+_02_2005

gryaktualnościoprogramowanie

50 luty 2005 51www.lpmagazine.org

GAMES News

Scorched 3DPojawiła się najnowsza wersja Scorched 3D, świetnego klona, klasycznej już, DOS-owej gry Scorched Earth. Scorched 3D jest w pełni trójwymiarową grą, ze wsparciem dla trybu OpenGL . Autorzy postarali się zachować klimat i niesamowitą grywalność pierwowzoru, dodając zarazem świetną grafikę i mnóstwo nowych opcji. W chwili obecnej możliwa jest już gra z innymi osobami przez sieć LAN bądź Internet.http://www.scorched3d.co.uk/

Xmame 0.89Xmame to emulator popularnych automatów z grami. Jest rozwijany od 1997 roku, a obecnie nad jego rozwojem pracuje ponad 100 programistów. Xmame w najnowszej wersji obsługuje ponad 2000 różnych gier. Wprowadzono wiele poprawek w kodzie aplikacji, usprawniono obsługę OpenGL i dodano eksperymentalną opcję gry sieciowej. Niestety, ze względu na niejasny status licencyjny trzeba spędzić sporo czasu na poszukiwaniu ROM-ów (archiwów z grami) w Internecie.http://x.mame.net/

Battle for Wesnoth 0.8.8Battle for Wesnoth to strategia turowa w konwencji fantasy. Postacie, którymi kierujemy, w trakcie gry zyskują doświadczenie i zdobywają kolejne poziomy. Możliwa jest też rozgrywka sieciowa przez Internet. W najnowszej wersji poprawiono wiele błędów, dodano nowe mapy i jednostki. Wymieniono też część grafik w grze, poprawiono lokalizację oraz “wyczyszczono” kod gry ze zbędnych i problematycznych elementów.http://www.wesnoth.org/

Apricots 0.2.6Pojawiła się kolejna (wciąż wczesna, aczkolwiek grywalna) wersja gry Apricots, w której kierujemy małym samolotem, starając się wyeliminować wrogie obiekty, strzelając do nich bądź bombardując. Gra w zamyśle twórców ma być szybka i wciągająca. Na planszy może znajdować się równocześnie do 6 samolotów, z czego 2 mogą być kontrolowane przez graczy. Gra jest jeszcze w bardzo wczesnej wersji: nie posiada żadnych menu, a po uruchomieniu aplikacji od razu przechodzimy do rozgrywki; nie posiada możliwości nagrywania stanu gry, a opcja gry sieciowej wciąż oczekuje na liście rzeczy do zrobienia.http://www.fishies.org.uk/apricots.html

nęła bezpowrotnie gdzieś we mgle, zda-jemy sobie sprawę, że nie mamy do czy-nienia ze strategią typu Command and Conquer, Warcraft, czy Settlers. W Do-minions II takie elementy, jak rozbudo-wa królestwa, sceny bitwy (również do-bre) czy trenowanie żołnierzy, stanowią jedynie element pewnej całości. Nacisk położono na strategię, czyli planowanie, co, gdzie i jak zrobić, aby po kilku turach móc cieszyć się z przyrostu złota w skarb-cu lub wygranej potyczki.

Co w pełnej wersji Dominions II?Wersja demonstracyjna Dominions II po kilkudziesięciu turach (kilku godzi-nach zabawy) jest przerwana komuni-katem informującym o sposobie nabycia pełnej wersji gry. Po zapłaceniu 50 dola-rów otrzymujemy dodatkowo prawie stu-stronicowy przewodnik, możliwość gra-nia nowymi postaciami (dwie nacje ży-

jące pod wodami mórz) oraz wiele opcji wpływających na przebieg gry. Ponadto, mamy możliwość wskrzeszania zmarłych przywódców i prowadzenia ich przez te-rytoria pod postacią mumii. Dostępnych jest również wiele różnorakich potworów i dodatkowych elementów magii.

PodsumowanieDominions II jest strategią pod każdym względem – począwszy od ustawiania pa-rametrów gry, poprzez rozwijanie, moder-nizowanie i planowanie przyszłości kró-lestwa, a skończywszy na takich dodat-kach, jak potyczki oddziałów, czy ścią-ganie podatków od lokalnej społeczno-ści. Na uznanie zasługuje znakomita gra-fika i bardzo dobrze dobrana do scenariu-szy średniowieczna muzyka. Mimo swej złożoności, opanowanie podstawowych umiejętności nie powinno sprawić pro-blemu żadnemu graczowi. Gra na pew-no spodoba się wszystkim miłośnikom strategii i powinna bez wątpienia znaleźć się w ich kolekcji. Niewątpliwie wadą Do-minions II jest jej cena, ale mimo wszyst-ko warto zastanowić się, czy nie sprawić sobie takiego prezentu na długie zimowe wieczory.

Rysunek 2. Gra tylko pozornie przypomina typową strategię

Ocena– Grafika: 4/5– Muzyka: 5/5– Grywalność: 5/5

Rysunek 3. Sceny bitewne, mimo że atrakcyjne, stanowią jedynie atrakcyjny dodatek do gry

Page 56: Linux+_02_2005

dla początkujących

52 luty 2005

GRUB – program uruchomieniowyPiotr Machej

Czym jest program uruchomie-niowy (ang. bootloader) i czy jest mi potrzebny do szczę-ścia? Jest to program umiesz-

czony w początkowych sektorach dysku twardego (np. w MBR – Master Boot Record). BIOS, po uruchomieniu kompu-tera i wykonaniu testów, przekazuje ste-rowanie właśnie do programu zawartego w MBR dysku wskazanego jako startowy, czyli do naszego programu uruchomie-niowego. Jego zadaniem jest załadowanie systemu operacyjnego do pamięci i prze-kazanie mu kontroli. Obecnie większość popularnych programów uruchomienio-wych pozwala na wybór jednego z sys-temów zainstalowanych na dysku. Najpo-pularniejsze tego typu programy, dostar-czane wraz z dystrybucjami Linuksa, to LILO i GRUB (Grand Unified Bootloader). W niniejszym artykule postaram się przy-bliżyć to drugie narzędzie.

Przykład użyciaJestem tradycjonalistą. Nie ukrywam tego. Z tego powodu przez bardzo długi czas (szczególnie na studiach) urucha-miałem Linuksa z dyskietki. Koledzyz pokoju przez długi czas nie mogli dojść, dlaczego uruchamia mi się inny system niż im. No i po co w ogóle uruchamiać system, na którym nie można pograć w Dooma ? Później zacząłem korzystać z LILO. Dzięki temu programowi rozru-chowemu nie musiałem już pamiętać, w której kieszeni została dyskietka. Ponadto, mój komputer był już wtedy bezpieczny od zakusów studenckiej braci, więc mogłem sobie pozwolić na odrobinę luksusu. I chociaż w kolej-

nych dystrybucjach miałem możliwość zmiany na GRUB-a, przez kilka lat upar-cie zostawałem przy LILO. Do zmiany przekonało mnie moje własne lenistwo... Po prostu, gdy po raz kolejny zapomnia-łem uruchomić polecenie lilo po zmia-nie w pliku konfiguracyjnym i musiałem szukać dyskietki ratunkowej, powie-działem: dość. Zainstalowałem GRUB-a i od tej pory nie mam już powodów do narzekań. I nawet jak przyjadą krewni, to nie ma siły, aby uruchomili system, którego nie powinni – przynajmniej dopóki nie odgadną hasła.

InstalacjaPakiety z programem GRUB można zna-leźć w praktycznie każdej dystrybucji. Co więcej, podczas instalacji dystrybu-cji możemy wybrać program uruchomie-niowy, z którego chcemy korzystać. Jeśli zdecydujemy się na GRUB-a, to system od razu postara się odpowiednio dosto-sować jego konfigurację. Jeśli jednak nie zdecydowaliśmy się na instalację GRUB-a,musimy to zrobić teraz sami.

Na płycie CD/DVDNa płycie CD/DVD znajdują się

narzędzia omawiane w artykule.

Rysunek 1. Wersja GRUB-a obecnie wykorzystywana w dystrybucjach nie jest już rozwijana

Page 57: Linux+_02_2005

53

dla początkującychgrub

www.lpmagazine.org

Przede wszystkim upewnijmy się, że nie jest już zainstalowany. W przy-padku Auroksa wykorzystamy do tego polecenie rpm -q grub. Jeśli pojawi się napis pakiet grub nie jest zainstalowa-ny, to będziemy musieli zmienić ten stan rzeczy. Pakiet z GRUB-em możemy zain-stalować z kilku różnych źródeł. Pierw-szym z nich są płyty, z których instalo-waliśmy naszą dystrybucję. W przypadku Auroksa pakiet znajduje się na pierwszej płycie, więc po włożeniu jej do napędu możemy wydać polecenia:

# mount /mnt/cdrom/

# rpm -Uvh /mnt/cdrom/Aurox/RPMS/S

grub-0.94-5.i386.rpm

Drugim źródłem są repozytoria pakie-tów. Jeśli korzystamy z jednego z syste-mów zarządzania pakietami, to możemy użyć odpowiedniego dla niego polece-nia, np.:

# yum install grub

# apt-get grub install

# emerge grub

Oczywiście, wydajemy tylko jedno z powyższych poleceń. Analogicznie możemy wykorzystać system zarządzania pakietami do aktualizacji wersji GRUB-a (np. poleceniem yum update grub).

Mamy jeszcze trzecią możliwość. Jeśli zależy nam na najnowszej wersji, możemy ją pobrać ze strony domowej projektu (http://www.gnu.org/software/grub/ ). Ze względu na rozpoczęcie prac nad GRUB 2, starsza wersja (linia 0.9.x, wciąż jeszcze wykorzystywana w dys-trybucjach) została przemianowana na GRUB Legacy. Tutaj mamy dostępne jedy-nie źródła, których instalacja przebiega zwykłym torem – po pobraniu i rozpako-waniu pliku (tar xzvf grub-0.95.tar.gz) wchodzimy do utworzonego katalo-gu i wydajemy polecenia: ./configure i make. Następnie, po uzyskaniu upra-wnień administratora (poleceniem su -),wydajemy ostatnie polecenie: make

install. Lepszym rozwiązaniem jest jednak skorzystanie z pakietów dostęp-nych dla naszej dystrybucji.

Teraz musimy skonfigurować nasze-go GRUB-a, a następnie umieścić go na dysku.

Podstawowa konfiguracjaGłówny plik konfiguracyjny GRUB-a to /boot/grub/grub.conf. Zazwyczaj istnie-ją również dwa dowiązania symbolicz-ne do tego pliku: /boot/grub/menu.lst oraz /etc/grub.conf (tak jest w Auroksie – w innych dystrybucjach głównym pli-kiem konfiguracyjnym może być jeden z trzech wymienionych). Co prawda, nie jest on konieczny, gdyż możemy korzy-stać z linii poleceń GRUB-a, ale odpo-wiednie skonfigurowanie pliku bardzo ułatwi nam pracę. Dzięki temu nie będziemy musieli każdorazowo przy uru-chamianiu komputera wpisywać szeregu poleceń, a w przypadku zainstalowania wielu systemów będziemy mogli korzy-stać z wygodnego menu.

Dyskietka ratunkowaPrzede wszystkim zadbajmy o to, aby mieć dyskietkę lub płytę ratunkową. Dys-kietkę mogliśmy utworzyć podczas insta-lacji dystrybucji. Jeśli tego nie zrobiliśmy, zazwyczaj możemy skorzystać z pierw-szej płyty dystrybucji. Zazwyczaj nie ma potrzeby korzystania z dyskietki ratunko-wej, ale podczas zmiany programu roz-ruchowego mogą pojawić się problemy, które sprawią, że nie uda się nam uru-chomić z systemów zainstalowanych na dysku.

Uruchamianie LinuksaNajpierw spróbujmy wykorzystać GRUB-ado uruchamiania naszego Linuksa. W tym celu powinniśmy mieć w pliku /boot/grub/grub.conf przynajmniej cztery linie:

title Aurox Linux (2.4.22-1)

root (hd0,7)

kernel /vmlinuz-2.4.22-1 ro root=LABEL=/

initrd /initrd-2.4.22-1.img

Pierwsza z nich, po słowie title, zawie-ra tekst, który pojawi się w menu. Naj-lepiej umieścić tu nazwę systemu (dys-trybucji) oraz w nawiasie numer wersji jądra. Oczywiście, możemy też podać inne dodatkowe informacje (np. czy jest wykorzystywany FrameBuffer), które

pomogą w zidentyfikowaniu pozycji w menu.

Druga linia wskazuje, na jakiej par-tycji jest umieszczony katalog /boot/. W naszym przykładzie katalog /boot/ umieszczony jest na osobnej partycji, /dev/hda8, natomiast główny katalog systemowy / jest umieszczony na par-tycji /dev/hda9 (oznaczonej etykietą / ). Więcej o nazewnictwie partycji stoso-wanym przez GRUB-a można przeczy-tać w ramce Nazewnictwo dysków i par-tycji.

W kolejnej linii określamy, które jądro chcemy załadować. Po słowie kernel podajemy ścieżkę do pliku z jądrem (w naszym przykładzie vmli-nuz-2.4.22-1), liczoną w stosunku dopartycji określonej linię wcześniej.Ponieważ dla katalogu /boot/ w naszymprzykładzie mamy osobną partycję, topodajemy ścieżkę /vmlinuz-2.4.22-1. Ponazwie pliku jądra możemy podać parametry jądra. W naszym przy-padku określamy partycję z głów-nym systemem plików (root). Wyja-śnienie wartości LABEL=/ znajduje się w ramce Nazewnictwo dysków i par-tycji. Należy zwrócić uwagę, że słowo root w tej linii ma inne znaczenie niż w linii wcześniejszej. Tutaj jest to para-metr jądra, wskazujący główny system plików, natomiast słowo root, występu-jące w drugiej linii, to komenda GRUB-a,pozwalająca wskazać urządzenie, wzglę-dem którego będą opisywane następne ścieżki dostępu.

Ostatnia linia nie jest konieczna, lecz jeśli tylko mamy utworzony plik initrd odpowiedni dla naszego jądra, to powinniśmy z niego skorzystać. Polece-nie initrd zawarte w tej linii ładuje RAM-dysk. To, czy go wykorzystamy, zależy od konfiguracji naszego jądra.

Rysunek 2. Podstawowe menu GRUB-a nie wygląda zbyt atrakcyjnie

Rysunek 3. Dokumentację GRUB-a możemy również znaleźć na stronie WWW

Page 58: Linux+_02_2005

54

dla początkujących

luty 2005

Opcje ogólneOprócz powyższych czterech linii, warto od razu dodać kilka innych, które określą zachowanie naszego menu. Są to nastę-pujące linie:

default=0

timeout=30

Umieszczamy je przed (podkreślam – przed) wymienionymi wcześniej linia-mi, zaraz na początku pliku /boot/grub/grub.conf. Pierwsza z nich określa, która pozycja menu będzie domyślnie wybra-na. Jak wiemy, GRUB liczy od zera, więc w naszym przykładzie wybraliśmy pierwszą (i na razie jedyną) pozycję w menu. Druga opcja wskazuje, że przez 30 sekund (możemy ustawić inną wartość) GRUB będzie czekał na naszą decyzję. Jeśli nie wciśniemy żadnego klawisza, to uruchomi automatycznie pozycję menu wskazaną w opcji default. W przypadku, gdy użyliśmy opcji timeout bez korzysta-nia z opcji default, uruchomiona zostanie pierwsza zdefiniowana pozycja w menu.

Zapisywanie GRUB-a na dyskTeraz już możemy zapisać GRUB-a na dysk (jeśli jeszcze tego nie robiliśmy). Zazwyczaj będziemy chcieli umieścić go na pierwszym dysku. Służy do tego pole-cenie grub-install /dev/hda.

Jeśli później zmienimy zawartość pliku konfiguracyjnego /boot/grub/grub.conf, to nie będziemy musieli ponow-nie wykonywać tego polecenia. GRUB automatycznie rozpozna zmiany w pli-ku i podczas kolejnego uruchomie-nia komputera wyświetli odpowied-nie menu. W zasadzie jedyny przypa-dek, gdy możemy chcieć wydać ponow-nie to polecenie, to moment aktualizacji GRUB-a do nowszej wersji.

Warto uruchomić ponownie kompu-ter, aby sprawdzić, jak działa nasz GRUB. Powinniśmy zobaczyć proste menu z jedną pozycją do wyboru. Po jej zatwier-dzeniu klawiszem [Enter ] (lub odczeka-niu 30 sekund) powinien załadować się nasz Linux.

Uruchamianie różnych systemówMożliwości GRUB-a najlepiej wykorzysta-my, jeśli mamy zainstalowane również inne systemy operacyjne – bardzo wielu użyt-kowników systemu spod znaku pingwi-na korzysta również z Windows (choćby

po to, aby czasem pograć) lub z FreeBSD (np. ze względu na studia czy pracę).

Inne dystrybucje LinuksaW przypadku, gdy chcemy z pomocą GRUB-a uruchamiać również inne dystry-bucje Linuksa zainstalowane w naszym komputerze, postępujemy tak samo, jak w przypadku opisanym w rozdzia-le Uruchamianie Linuksa. Wystarczydopisać kolejną sekcję zaczynają-cą się od linii title i zawierającą odpo-wiednie opcje. Tego samego sposo-bu możemy zresztą użyć, gdy chcemyprzetestować nowe jądro w naszej dystry-bucji. Przypuśćmy, że skompilowaliśmysamodzielnie jądro i nazwaliśmy je vmlinuz-new. Wówczas w pliku /boot/grub/grub.conf możemy na końcu dopi-sać następujące linie:

title Aurox Linux (2.4.22-1a)

root (hd0,7)

kernel /vmlinuz-new ro root=LABEL=/

initrd /initrd-2.4.22-1a.img

Jeśli nie wygenerowaliśmy RAM-dysku,to nie dopisujemy ostatniej linii, a zamiastroot=LABEL=/ musimy podać odpowiedniąnazwę partycji (w naszym przykładzieroot=/dev/hda9). Jeśli o tym zapomnimy, tonasz system przestanie się ładować na eta-pie montowania głównego systemu plików.

Windows, DOSNajprostszym sposobem na uruchamia-nie systemów z rodziny Windows jest umieszczenie na końcu pliku /boot/grub/grub.conf następujących linii:

title DOS lub Windows

rootnoverify (hd0,0)

chainloader +1

Polecenie title już znamy. W linii rootno-verify wskazujemy partycję, na której jest

W pliku konfiguracyjnym GRUB-a (/boot/grub/grub.conf) zazwyczaj nie używa-my znanych z Linuksa oznaczeń dysków i partycji, takich jak hda, hdb2 i tym podob-ne. Zamiast tego, widzimy oznaczenia typu (fd0) lub (hd1,2). Jest to nieco mylące, na początku, lecz można się szybko przyzwy-czaić.

Opis (fd0) oznacza pierwszy napęd dyskietek (należy pamiętać o nawia-sach i braku odstępu pomiędzy znakami). W przypadku dysków twardych nazwa (hd0) odpowiada dyskowi hda, nazwa (hd1) to dysk hdb itd. Jak więc widać, zamiast liter używamy cyfr, zaczynając od zera. Aby wskazać konkretną partycję, dodajemy jej numer (znów licząc od zera) po przecinku. Tak więc dla hda1 mamy (hd0,0), dla hda7 – (hd0,6), a dla hdc3 – (hd2,2). Wystarczy w zasadzie pamiętać, że numerujemy od 0, a nie od 1. Jeśli mamy wątpliwości, możemy przypisanie nazw do dysków sprawdzić w pliku /boot/grub/device.map. Dla kompu-tera posiadającego tylko jeden napęd dys-kietek i jeden dysk twardy, plik ten powinien mieć następującą zawartość:

(fd0) /dev/fd0

(hd0) /dev/hda

W niektórych dystrybucjach (np. w Red Hat i pochodnych – Fedora i Aurox) popu-

Nazewnictwo dysków i partycjilarne jest wskazywanie partycji za pomocą etykiety. Jeśli w naszym pliku konfiguracyj-nym mamy linię postaci: kernel /vmlinuz-2.4.22-1 ro root=LABEL=/, to zwróćmy uwagę na tekst root=LABEL=/. Zastępuje on zwykły tekst postaci root=/dev/hda1 (jeśli nasz katalog / jest umieszczony na partycji hda1). Można zastanawiać się, co to daje i czemu się tego używa. Zapis taki pozwala nam swobodnie przekładać dysk w ramach naszego komputera, np. w przypadku dokła-dania nowego napędu lub nagrywarki. Jeśli stosujemy etykiety, nie musimy wówczas poprawiać plików konfiguracyjnych (m.in. grub.conf i /etc/fstab).

Powstaje pytanie, jak odczytać i stwo-rzyć etykiety dla partycji. Służy do tego polecenie e2label /dev/hda1, gdzie zamiast /dev/hda1 wstawiamy nazwę par-tycji ext2 lub ext3. Polecenie to spowoduje wyświetlenie etykiety przypisanej do party-cji. Jeśli chcemy nadać partycji nową etykie-tę, to stosujemy zapis e2label /dev/hda1 etykieta.

Przy okazji warto zaznaczyć, że z ety-kiet możemy korzystać tylko wtedy, gdy ładujemy również odpowiadający jądru RAM-dysk. Służy do tego polecenie initrd /initrd-2.4.22-1.img, umieszczone pod wspomnianą wcześniej linią pliku konfigu-racyjnego.

Page 59: Linux+_02_2005

55

dla początkującychgrub

www.lpmagazine.org

umieszczony system, który chcemy zała-dować. Polecenie to różni się od polece-nia root tym, że wskazana partycja nie jest montowana. Polecenie chainloader przekazuje kontrolę do następnego pro-gramu rozruchowego. Jak to działa? Jeśli na partycji /dev/hda1 mamy zainstalowa-ny tylko pojedynczy system (np. DOS lub Windows 98), to zostanie on uruchomio-ny. Jeśli mamy na dysku zainstalowane systemy Windows 98 i Windows XP, to program uruchomieniowy zainstalowany przez Windows XP potrafi obsłużyć oba te systemy. Wystarczy więc w poleceniu rootnoverify wskazać partycję, na której jest zainstalowany program uruchomie-niowy Windows XP. Dzięki temu, po wybraniu w menu GRUB-a pozycji DOS lub Windows, zobaczymy kolejne menu, pozwalające nam wybrać pomiędzy Win-dows 98 a Windows XP.

FreeBSDSystemy z rodziny FreeBSD możemy uru-chamiać w analogiczny sposób, jak Win-dows i DOS, czyli korzystając z poleceń rootnoverify i chainloader. Możemy też wskazać dokładnie na program /boot/loader z pomocą następujących linii w pliku /boot/grub/grub.conf :

title FreeBSD

root (hd1,a)

kernel /boot/loader

Widać tu użycie innego nazewnictwa.Wynika to stąd, że FreeBSD nazywa swoje partycje literami alfabetu, a w dodatku wprowadza pojęcie slice (tzw. plastra – natywnej partycji Fre-eBSD). Jeśli więc mamy FreeBSD zain-stalowane na pierwszej partycji drugie-go dysku, to zapis (hd1,a) powinien być odpowiedni. Wyszuka on pierwszy slice, na którym znajduje się partycja a. Jeśli chcemy dokładnie sprecyzować, który

slice ma być zamontowany, to możemy użyć postaci (hd1,0,a).

Uruchamianie Memtest86+Od czasu do czasu warto przetestować pamięć naszego komputera, aby zawcza-su wykryć wszelkie problemy. Dwa naj-lepsze programy przeznaczone do tego celu to Memtest86 i Memtest86+. GRUB może nam pomóc w ich uruchomieniu.

Wystarczy wybrać jeden z wymie-nionych programów, gdyż obydwa czer-pią nawzajem ze swoich kodów źródło-wych. Osobiście polecam Memtest86+. Najpierw musimy pobrać odpowied-ni plik ze strony domowej programu (http://www.memtest.org/ ). Odnajduje-my sekcję Download (Pre-built & ISOs), w której znajdują się już skompilowane wersje. Następnie z sekcji odpowiada-jącej najnowszej wersji (w chwili pisa-nia artykułu była to wersja 1.40) pobie-ramy plik znajdujący się pod odnośni-kiem Download – Pre-Compiled Boota-ble Binary (.gz). Plik ma zaledwie około 40 kB, więc jego pobieranie nie powinno potrwać zbyt długo. Dla pew-ności możemy sprawdzić, czy plik jest poprawny. W tym celu wchodzimy do katalogu, w którym znajduje się nasz plik i wydajemy polecenie:

# md5sum memtest86+-1.40.bin.gz

Oczywiście, jeśli pobraliśmy nowszą wersję, to musimy odpowiednio dosto-sować nazwę pliku. W wyniku powin-niśmy otrzymać ciąg znaków (tzw. skrót MD5), który porównujemy z ciągiem znaków umieszczonym obok odnośni-ka do pliku na stronie domowej progra-mu. Jeśli oba ciągi są takie same, możemy przystąpić do następnych czynności.

Czas na rozpakowanie pliku. Doko-nujemy tego poleceniem gzip -d mem-

test86+-1.40.bin. Następnie uzyskujemy uprawnienia superużytkownika (wydaje-my polecenie su - i podajemy hasło użyt-kownika root), po czym kopiujemy plik memtest86+-1.40.bin do katalogu /boot/. Teraz pozostało nam odpowiednio zmo-dyfikować plik konfiguracyjny GRUB-a. Otwieramy go w naszym ulubionym edy-torze (np. Vim) i na końcu dopisujemy dwie linie:

title MEMTEST

root (hd0,7)

kernel /memtest86+-1.40.bin

Oczywiście, zamiast MEMTEST możemy wstawić inny odpowiadający nam tytuł. Pamiętajmy, że te linie dotyczą wciąż naszego przykładu. Jeśli katalog /boot/ mamy na innej partycji, to musimy odpo-wiednio dostosować wartości poleceń root i kernel.

Po zapisaniu zmian możemy już zre-startować system, a w naszym menu powinna pojawić się nowa opcja – MEM-TEST. Jeśli ją wybierzemy, uruchomi się program Memtest86+ i od razu rozpocz-nie testowanie pamięci. Opcje programu są dostępne po wciśnięciu klawisza [c], natomiast klawiszem [ESC ] możemy zre-startować komputer, jeśli nie mamy czasu na przeprowadzanie pełnego testu.

Upiększanie GRUB-aJeśli nie podoba nam się domyślny wygląd menu GRUB-a, możemy spróbo-wać je nieco ubarwić. Jedną z możliwo-ści jest ustawienie lub zmiana rysunku wyświetlanego w tle. Ponadto, możemy dopasować kolory czcionki do naszych upodobań.

Większość dystrybucji dostarcza swoje własne tło dla GRUB-a, więc naj-prawdopodobniej mamy już w pliku kon-figuracyjnym odpowiednią opcję. Jest to linia o zawartości podobnej do poniż-szej:

splashimage=(hd0,7)/grub/splash.xpm.gz

Linia ta opcji splashimage przypisuje plik splash.xpm.gz znajdujący się w katalo-gu /grub/ na partycji /dev/hda8 (a więc w naszym przykładzie plik ten znajduje się w katalogu /boot/grub/ ).

Jeśli w naszym pliku nie ma takiej linii, to należy ją dodać, odpowiednio dopasowując wartości. Linia ta powin-na być umieszczona przed pierwszą linią title. Możemy ją wstawić zaraz poniżej opcji timeout.

Powstaje pytanie, skąd wziąć rysunki. Jak widać, w opcji splashimage nie poda-jemy plików w popularnych formatach, takich jak PNG czy JPG. Zamiast tego, mamy tu plik w formacie XPM, skompre-sowany programem Gzip. To nie jedyne ograniczenie. Nasz obrazek może mieć tylko 14 kolorów i rozdzielczość 640x480 pikseli. Nie brzmi to może zbyt zachęca-jąco, ale zapewniam, że można przygo-tować interesujące rysunki spełniające te wymagania. Zacznijmy od obejrzenia kilku przykładowych rysunków.

Rysunek 4. Memtest86+ zajmuje niewiele miejsca, lecz jest bardzo przydatny

Page 60: Linux+_02_2005

56

dla początkujących

luty 2005

Wybieranie tłaNa stronie http://vision.featia.net/linux/grubsplash/ możemy znaleźć kilka przy-kładów rysunków mogących posłu-żyć za tło GRUB-a. Mamy tu do dys-pozycji zarówno pliki w formacie GIF (dzięki nim od razu możemy zapoznać się z rysunkiem), jak i odpowiadające im pliki w formacie XPM.GZ. Pobierzmy je wszystkie na nasz dysk. Rysunki dostar-czane z dystrybucją znajdują się w kata-logu /boot/grub/, lecz jeśli umieścimy tam również nasze, może powstać bałagan. Zamiast tego, utworzymy podkatalog splashes/ poleceniem mkdir /boot/grub/splashes/ (oczywiście, potrzebujemy do tego uprawnień użytkownika root). Następnie do tego katalogu kopiuje-my wszystkie pobrane pliki z końców-ką .xpm.gz.

Wydawałoby się, że powinniśmy teraz zmodyfikować plik /boot/grub/grub.conf i w linii z opcją splashimage podać nową ścieżkę do pliku. Owszem, można to zrobić, wstawiając przykłado-wo taką linię:

splashimage=(hd0,7)/grub/splashes/S

seachair.xpm.gz

Jeśli jednak chcemy sami poeksperymen-tować i sprawdzić, które tło najbardziej nam odpowiada, to ciągłe restartowa-nie systemu i modyfikowanie jednej linii może być męczące. Na szczęście, można to zrobić inaczej. Gdy już zrestartujemy system i powita nas menu GRUB-a, wci-skamy klawisz [c]. W ten sposób przej-dziemy do linii poleceń GRUB-a, która szerzej jest opisana w rozdziale Obsłu-ga. W linii tej najpierw wpisujemy root (hd0,7), a następnie wciskamy [Enter ]. Pamiętamy, że polecenie to ustawia par-tycję wykorzystywaną w następnych poleceniach. Później wpisujemy splash-image /grub/splashes/seachair.xpm.gz

i ponownie zatwierdzamy klawiszem [Enter ]. I już mamy wyświetlone nasze tło. Klawiszem [Esc] możemy wrócić do menu, aby zobaczyć, jak wygląda. Jeśli będziemy chcieli wypróbować inne tła, znów wciskamy klawisz [c] i postępujemy tak, jak wcześniej (nie musimy ponownie używać polecenia root – wystarczy samo splashimage). No właśnie, ale pewnie zapomnieliśmy już, jak się nazywa-ły poszczególne pliki. Nie martwmy się. Linia poleceń GRUB-a obsługuje uzupeł-nianie nazw, więc możemy wpisać słowa splashimage / (pamiętajmy o znaku / ), a następnie wcisnąć klawisz [Tab ]. Pojawi się nam spis dostępnych nazw katalo-gów i plików. W ten sposób dopisujemy dalszy ciąg ścieżki (/grub/splashes/ lub /boot/grub/splashes/ – zależnie od naszej konfiguracji) i znów wciskamy klawisz [Tab ] w celu wyświetlenia nazw plików z tłami.

Gdy już się zdecydujemy na konkret-ne tło, możemy uruchomić system (wy-chodzimy klawiszem [Esc] aż do menu i wybieramy pozycję z naszym Linuk-sem), a następnie dopisać odpowiednią linię do pliku /boot/grub/grub.conf.

Tworzenie własnego tłaOprócz gotowych plików z tłami, które można znaleźć w Internecie, każdy pewnie chciałby mieć możliwość stwo-rzenia całkiem własnego. Oczywi-ście, nic nie stoi na przeszkodzie. Jeśli chcemy po prostu przekonwertować posiadany obrazek do skompresowane-go formatu XPM, możemy wydać pole-cenia:

# convert -resize 640x480 -colors 14S

picture.jpg picture.xpm

# gzip picture.xpm

Polecenie convert należy do pakietu Ima-geMagick. Jeśli nie jest on zainstalowany w naszym systemie, możemy go zainsta-lować z płyt dystrybucji lub z repozyto-rium (analogicznie, do instalacji pakietu GRUB-a). Opcja -resize 640x480 powo-duje zmianę rozdzielczości rysunku do wymaganego rozmiaru, a opcja -colors 14 redukuje paletę kolorów do czternastu. Nazwy picture.jpg i picture.xpm to odpo-wiednio nazwy pliku wejściowego (z konwertowanym rysunkiem) i wyjścio-wego (z tłem dla GRUB-a). Drugim pole-ceniem kompresujemy rysunek progra-mem Gzip.

Powyższa metoda jest szybka, lecz czasem uzyskane rezultaty wołają o pomstę do nieba. Lepszym rozwiąza-niem jest uruchomienie programu GIMP, wczytanie pliku, który chcemy konwer-tować, a następnie zmiana rozmia-ru obrazu (Obraz–>Przeskaluj obraz) i liczby kolorów (Obraz–>Tryb–> Indek-sowany). Dzięki temu możemy poeks-perymentować z różnymi opcjami obrazu. Ponadto, może okazać się, że konieczne będzie ręczne poprawianie całego rysunku, zanim uzyskamy zado-walający efekt.

Innym wyjściem jest stworzeniepustego rysunku o wymiarach 640x480 i palecie 14 kolorów, a następnie nary-sowanie na nim tego, co nam się podoba. Nie każdy jednak ma żyłkę artystyczną.

Wybór metody zależy od nas. Z uzy-skanym plikiem postępujemy tak, jak to opisaliśmy w rozdziale Wybieranie tła.

Niektórzy Czytelnicy mogą zaintere-sować się, dlaczego kompresujemy tła przed wykorzystaniem ich w GRUB-ie. Można wykorzystać również pliki XPM nieskompresowane programem Gzip. Różnica będzie dla nas w sumie nieod-czuwalna, lecz dla zasady lepiej kom-presować. Przy obecnych komputerach mniej czasu zajmuje wczytanie z dysku skompresowanego (a więc i mniejsze-go) pliku, a następnie rozkompreso-wanie go w pamięci, niż wczytanie z dysku większego pliku, nie poddane-go kompresji.

Dobór kolorówOprócz ustalenia własnego tła, możemy pokusić się o zmianę kolorów czcion-ki wykorzystywanej w menu. Służą do tego opcje foreground i background ustawiane w początkowej części pliku /boot/grub/grub.conf (możemy je umie-ścić nawet przed opcją splashimage). Opcje te przyjmują jako parametry kolory

Rysunek 5. Rysunek na tło powinniśmy dobrać tak, aby menu było czytelne

Rysunek 6. Nawet korzystając tylko z 14 kolorów można stworzyć ładne rysunki

Page 61: Linux+_02_2005

57

dla początkującychgrub

www.lpmagazine.org

zapisane w szesnastkowym formacie RGB (Red, Green, Blue). Jeśli będziemy chcie-li uzyskać białe litery z czarnym tłem, to użyjemy opcji:

foreground ffffff

background 000000

Oczywiście, możemy też używać innych kolorów, jak czerwony (ff0000), zielo-ny (00ff00), niebieski (0000ff ) i inne. Jeśli chcemy w wygodny sposób dopa-sować kolory do naszego tła i gustu, możemy wykorzystać tę samą metodę, którą stosowaliśmy przy wybieraniu tła. Tym razem, po wejściu do linii poleceń GRUB-a, wydajemy odpowiednie pole-cenia foreground ffff00 i background ff00ff (oczywiście, eksperymentując z kolorami).

Oprócz tego, istnieje możliwość zmiany koloru podświetlenia i tła menu. Wykorzystywane jest do tego polecenie color, które możemy umie-ścić w pliku konfiguracyjnym przed poleceniami foreground i backgro-und. Listę kolorów dostępnych w tym poleceniu można uzyskać korzysta-jąc z polecenia help color w linii pole-ceń GRUB-a (jak również w dokumen-tacji GRUB-a – info grub). Przykładowe wywołanie tego polecenia (dające cał-kiem przyjemny kolor) ma postać: color cyan/blue white/blue.

ObsługaJeśli zainstalowaliśmy GRUB-a na dysku i stworzyliśmy dla niego plik konfiguracyjny, to podczas uruchamia-nia komputera powinno nas przywi-tać menu GRUB-a. Możemy poruszać się po nim z pomocą strzałek kurso-ra, a klawiszem [Enter ] wybierać pozy-cję, którą chcemy uruchomić. Oprócz tego, mamy jednak do dyspozycji kilka innych funkcji.

Modyfikacja pozycji menuPrzypuśćmy, że chcemy poekspery-mentować z innymi parametrami jądra. Możemy w tym celu utworzyć nowe sekcje title w pliku konfiguracyjnym. Lepszym rozwiązaniem jest modyfikacja parametrów jądra podczas uruchamia-nia systemu. Jak tego dokonać? Prze-suńmy zaznaczenie w menu na pozycję naszej dystrybucji Linuksa. W naszym przykładzie jest to linia Aurox Linux (2.4.22-1). Zamiast wcisnąć [Enter ], wci-skamy klawisz [e ]. Zobaczymy wyświe-tloną zawartość tej sekcji title. Pomię-dzy liniami możemy przemieszczać się podobnie jak w menu. Jeśli chcemy zmodyfikować jakąś linię, wciskamy [Enter ]. Spróbujmy w linii z poleceniem kernel dopisać opcję jądra vga=791. W naszym przykładzie linia wygląda-łaby tak:

kernel /vmlinuz-2.4.22-1S

ro root=LABEL=/ vga=791

Zmiany zatwierdzamy klawiszem [Enter ]. Wprowadzona właśnie opcja powoduje, że system, zamiast w standardowym trybie tekstowym, uruchomi się z wyko-rzystaniem bufora ramki, ustawiając roz-dzielczość ekranu na 1024x768 pikseli z ponad 16 tysiącami kolorów.

Jeśli chcielibyśmy dodać nową linię, możemy skorzystać z klawiszy [o ] i [O ]. Pierwszy z nich powoduje doda-nie nowej linii po aktualnie zaznaczo-nej linii, a drugi – przed nią. Niepo-trzebne linie możemy skasować klawi-szem [d ].

Gdy jesteśmy już zadowoleni z wpro-wadzonych zmian, wciskamy klawisz [b ], co powoduje uruchomienie edyto-wanej pozycji wraz z wprowadzonymi zmianami. Jeśli wolimy zrezygnować ze zmian, możemy klawiszem [Esc] wrócić do głównego menu.

Linia poleceńJeszcze większe możliwości daje nam linia poleceń dostępna w GRUB-ie. Korzystali-śmy z niej już w rozdziale Wybieranie tła, lecz teraz opiszemy ją bardziej szcze-gółowo. Aby się do niej dostać, w menu GRUB-a wciskamy klawisz [c]. Mamy tu do dyspozycji cały szereg mniej lub bar-dziej przydatnych poleceń. Ich spis uzy-skamy wciskając po prostu klawisz [Tab ]. Z pewnością zwrócimy uwagę, że na spisie znajduje się wiele znanych nam już

poleceń, z których korzystaliśmy podczas tworzenia menu – chainloader, kernel, initrd, root i inne. Jak więc widać, linię poleceń również możemy wykorzystać do uruchamiania systemów zainstalo-wanych na naszym komputerze. Zresztą, gdybyśmy nie utworzyli pliku konfigura-cyjnego /boot/grub/grub.conf, to przy uru-chamianiu komputera moglibyśmy korzy-stać tylko z linii poleceń GRUB-a. Jeśli w takim przypadku chcielibyśmy urucho-mić Memtest86+ (zainstalowany zgodnie z wcześniej podanymi wskazówkami), musielibyśmy wydać następujące pole-cenia:

root (hd0,7)

kernel /memtest86+-1.40.bin

boot

Jedyna różnica pomiędzy zawartością grub.conf i poleceniami przy ręcznym uruchamianiu systemu, to dodatkowe polecenie boot powodujące załadowanie wskazanego jądra.

Warto pamiętać, że w czasie wprowa-dzania poleceń i nazw plików możemy korzystać z autouzupełniania – wystar-czy wcisnąć klawisz [Tab ], a wyświetlone zostaną możliwe wartości.

Do czego jeszcze może przydać się nam linia poleceń? Z pomocą polecenia cat możemy sprawdzić zawartość dowol-nego pliku, np. cat /etc/fstab. Wynika z tego, że osoba mająca dostęp do linii poleceń GRUB-a może przeczytać prak-tycznie dowolny plik (np. /etc/shadow zawierający zakodowane hasła). Tym jednak będziemy się martwić za chwilę, w rozdziale Zabezpieczenia. Niezależnie od zagrożeń, polecenie cat może przy-dać się nam, jeśli w czasie eksperymen-tów będziemy chcieli sprawdzić jakieś ustawienia.

Inne przydatne polecenie to find, pozwalające nam sprawdzać, na której partycji znajduje się wskazany plik. Powinniśmy podawać bezwzględną ścieżkę do pliku, np. find /boot/grub/stage1 lub find /grub/stage1 – polece-nie to zwróci nam nazwę partycji, jaką powinniśmy wpisać w linii root w pliku konfiguracyjnym GRUB-a.

Warto zapoznać się z innymi pole-ceniami. Bardzo przydatna jest pomoc, którą możemy uzyskać wpisując help

nazwa_polecenia.Linię poleceń GRUB-a można rów-

nież uruchomić z konta użytkownika root

Rysunek 7. Skrypt Grubconfig może nam ułatwić konfigurowanie GRUB-a

Page 62: Linux+_02_2005

58

dla początkujących

luty 2005

wpisując polecenie grub. Mamy wówczas podobne możliwości, jak w opisywa-nej wyżej linii poleceń, lecz oczywiście z niektórych poleceń nie możemy korzy-stać (dotyczy to przykładowo polecenia splashimage).

ZabezpieczeniaMenu oferowane przez GRUB-a jest bardzo wygodne, lecz czasem daje zbyt wiele możliwości. Jak przekonaliśmy się w poprzednim rozdziale, użytkow-nik mający dostęp do GRUB-a może dowolnie zmieniać parametry wywo-łania systemu, a nawet uzyskać dostęp do chronionych plików. Na szczęście, GRUB pozwala na zablokowanie takie-go dostępu.

Służy do tego hasło broniące dostę-pu do edycji pozycji w menu, jak rów-nież do linii poleceń. Jeśli chcemy, to nawet uruchomienie poszczegól-nych systemów może wymagać poda-nia hasła.

Jeśli chcemy zabezpieczyć w ten sposób nasz system, to – oczywiście – potrzebujemy do tego uprawnień użyt-kownika root. Najpierw wygenerujemy nasze hasło. Uruchamiamy linię pole-ceń GRUB-a – grub. Tym razem sko-rzystamy z polecenia md5crypt. Po jego wydaniu zostaniemy zapytani o hasło. Wpisujemy je (niech tylko nie będzie zbyt łatwe do odgadnięcia) i wciskamy [Enter ]. W odpowiedzi zobaczymy linię z zakodowanym hasłem.

Teraz edytujemy nasz plik konfigu-racyjny (np. vim /boot/grub/grub.conf) i na jego początku umieszczamy linię o treści:

password --md5 S

$1$ikVvf0$naEIsTUTM5yM1MYrx3Ms7.

Oczywiście, zamiast podanej tu warto-ści należy wkleić wynik działania pole-cenia md5crypt. Wykorzystanie podanej wyżej wartości nie jest dobrym pomy-słem, gdyż jest to zakodowane słowo password. Skoro w pliku przechowu-jemy hasło, powinniśmy się upewnić, że nie będzie ono łatwe do odczytu. W tym celu ustawiamy odpowiednio prawa dostępu do pliku:

# chmod 600 /boot/grub/grub.conf

Ta zmiana wystarczy, aby przy urucha-mianiu komputera w menu GRUB-a

były dostępne tylko dwie możliwości – uruchomienie jednego z systemów lub wciśnięcie klawisza [p ]. Jeśli po wciśnięciu klawisza [p ] podamy pra-widłowe hasło (to, które wpisywaliśmy w poleceniu md5crypt), to dopiero wtedy uzyskamy dostęp do możliwości opisywanych w rozdziale Obsługa.

Nadal użytkownik może urucho-mić dowolną pozycję w menu, a to nie zawsze musi nam odpowiadać. Skoro już mamy ustalone hasło, wystarczy teraz w sekcji title, którą chcemy zablo-kować, umieścić polecenie lock. Musi ono być umieszczone od razu pod linią title, gdyż użytkownik może wykony-wać wszystkie polecenia aż do napo-tkania polecenia lock. W tym momen-cie zostaje zapytany o hasło i dopóki nie poda prawidłowego, nie będzie mógł wykonać dalszych poleceń. Jak więc widać, umieszczanie polecenia lock na końcu sekcji title zazwyczaj mija się z celem – lepiej umieścić je na początku.

Należy zaznaczyć, że zabezpieczenie to nie jest doskonałe. Nie można liczyć, że założenie hasła na GRUB-a zabezpie-czy nas przed niecnymi zamiarami osób mających bezpośredni dostęp do kom-putera. Zawsze jednak może zwiększyć wygodę korzystania z komputera oraz zabezpieczyć nas przed mniej doświad-czonymi użytkownikami.

Ułatwianie konfiguracjiJeśli nie chcemy ręcznie zmieniać pliku konfiguracyjnego GRUB-a, możemy skorzystać z jednego z konfigurato-rów. Najlepszym rozwiązaniem wydaje się być moduł Webmina dostępny w sekcji Sprzęt–>Inicjator systemu GRUB. Oprócz tego, mamy do dyspo-zycji działający w trybie tekstowym skrypt Grubconfig oraz przeznaczony dla środowiska graficznego program GrubConf. Pierwszy z nich jest mało intuicyjny, lecz ma kilka ciekawych opcji, a przy tym nie wymaga instala-cji – wystarczy rozpakować archiwum i można go uruchomić.

Osoby samodzielnie kompilują-ce jądro prawdopodobnie zainteresu-ją się programem Install Kernel, który nie tylko zwalnia nas od konieczności wykonania szeregu poleceń, ale rów-nież automatycznie uaktualnia konfi-gurację programów uruchomieniowych (oprócz GRUB-a, obsługuje też LILO).

Jeśli chcemy całkiem uprościć sobie ustawianie tła menu GRUB-a, możemy skorzystać z programu GrubTk. Wystar-czy w nim podać tylko nazwę pliku z rysunkiem, a program zajmie się resztą.

A jeśli chcemy zobaczyć, do czego jeszcze można wykorzystać GRUB-a, to zainstalujmy sobie grę GRUB Invaders. Jest ona uruchamiana przez GRUB-a i nie wymaga do działania żadnego systemu operacyjnego.

ZakończenieWydawałoby się, że program urucho-mieniowy to proste narzędzie pozwa-lające tylko wskazać, który system ma być uruchomiony. Tymczasem, okazuje się, że jest to program, który możemy stosunkowo łatwo dopasować do swoich potrzeb. Z jego pomocą uru-chomimy nie tylko systemy, ale rów-nież takie programy, jak Memtest86. GRUB może stanowić barierę bronią-cą innym użytkownikom dostępu do naszego systemu, równocześnie nie zmniejszając naszej wygody obsługi. Dodatkowo, może witać nas naszym ulubionym rysunkiem. Warto zapoznać się z jego dokumentacją i poznać inne jego funkcje.

W Internecie:• Strona domowa GRUB-a:

http://www.gnu.org/software/grub/• GNU GRUB splashimage howto:

http://ruslug.rutgers.edu/~mcgrof/grub-images/

• Różne tła dla menu GRUB-a:http://vision.featia.net/linux/grubsplash/

• Strona domowa Memtest86:http://www.memtest86.com/

• Strona domowa Memtest86+:http://www.memtest.org/

• Strona domowa skryptu Grubconfig:http://www.tux.org/pub/people/kent-robotti/looplinux/index.html

• Strona domowa programu GrubConf:http://grubconf.sourceforge.net/

• Strona domowa programu Install Kernel:http://installkernel.tripod.com/ik/index.html

• Strona domowa programu GrubTk:http://freshmeat.net/projects/grubtk/

• Strona domowa gry GRUB Invaders:http://www.erikyyy.de/invaders/

Page 63: Linux+_02_2005

aktualności [email protected]ęgozbiór

59www.lpmagazine.org

dział prowadzi: Piotr Truszkowski

Eclipse

Sztuka programowania

Gdy od jakiegoś czasu na witry-nach księgarń informatycznych pojawiły się książki typu „Algorytmy nie tylko dla orłów” czy seria „Dla opornych”, wydawać by się mogło, że zapomniano o tych, którzy pierwsze kroki w programowaniu mają już za sobą. Nieprawda. „Sztuka programowa-nia” to dzieło Donalda E. Knutha, przezna-czone dla osób, które chciałyby nauczyć się czegoś więcej niż tylko wyświetlania na ekranie napisu „Hello World”. Siedem

O języku Java słyszał chyba każdy. Popularne w Internecie pokoje rozmów zwane chatami, liczne programy, a nawet

1. OpenBSD. Tworzenie firewalli za pomocą PF - J. Artymiak, Wyd. Helion, 20042. Zarządzanie projektami IT – J. Phillips, Wyd. Helion, 20043. Macromedia Flash MX 2004 Bible – R. Reinhardt, S. Dowd, Wyd. Helion, 20044. Jakościowe aspekty kompresji obrazu i dźwięku - poglądowo o DivX – D. Nasiłowski, Wyd. Mikom, 20045. Programowanie Asembler IBM PC – P. Abel, Wyd. Read Me, 20046. Praktyczne podejście do inżynierii oprogramowania, Wyd. WNT, 20047. Microsoft Visual Basic .NET Księga przykładów, Wyd. APN PROMISE, 20048. Język C++ - B. Stroustrup, Wyd. WNT, 20049. Naucz się z nami! Obsługi komputera (wydanie 4), Wyd. Help, 200410. CorelDraw 11 – M. Gradias, Wyd. Read Me, 2004

Bestsellery MerlinaLista najlepiej sprzedających się książek informatycznychw sklepie internetowym www.merlin.pl, w miesiącu listopadzie:

ści algorytmom składniowym. Tomy 6-7, mimo że autor często odwołuje się do infor-macji w nich zawartych, ...nie zostały jesz-cze wydane.

Na uwagę zasługują liczne ćwiczenia przygotowane przez Donalda E. Knutha – każde z nich oznaczone jest stopniem trud-ności w skali od 0 do 50 punktów. Zada-nia najprostsze nie powinny nikomu spra-wić trudności, ale ćwiczenia oszacowane przez autora jako trudne, stanowią wyzwa-nie nawet dla profesorów informatyki.

Mimo, że autor stara się uprzyjem-nić lekturę licznymi cytatami i przystęp-nymi przykładami, w książce dominuje suchy akademicki język. Pozycja na pewno nie nadaje się na lekką i przyjemną lektu-rę do poduszki. Po przeczytaniu wszyst-kich pięciu tomów „Sztuki programowa-nia” i przerobieniu zawartych tam ćwiczeń będziemy mogli śmiało powiedzieć, że zasady pisania dobrych algorytmów opa-nowaliśmy w stopniu więcej niż podsta-wowym.

Moja ocena: 4/5

środowisko graficzne (Sun Looking Glass) powstały w oparciu o ten wspaniały, wie-loplatformowy język programowania. Eclip-se jest jednym z kompletnych i darmowych środowisk programistycznych, służących m.in. do pisania aplikacji w języku Java.

Steve Holzner, autor książki zatytułowa-nej “Eclipse”, przedstawia nam to środowi-sko ze wszystkich możliwych stron. Skon-centrował się na Eclipse 2.1, ale pozycja obejmuje również Eclipse 3.0.

Książka jest ukierunkowana na począt-kującego programistę, który postanowił napisać swój pierwszy program właśnie w Eclipse. Znajdziemy w niej ogólne omó-wienie środowiska i podstawy Javy, zapo-

znamy się z trybem debugowania oraz poznamy przykładowe aplikacje.

Książka pełna jest różnego rodza-ju przykładów i czytając ją aż prosi się o płytkę CD, która pozwoli nam skorzystać z licznych kodów źródłowych. Takiej płytki dołączonej do książki bardzo brakuje, za co w moim odczuciu wydawcy należy się duży minus. Przykłady można co prawda pobrać z Internetu, ale nie każdy ma do niego dostęp. Szkoda, że nie dołączono również samego Eclipse.

Ogólnie, tytuł prezentuje się dobrze, a początkującemu programiście pozwoli bez większych trudności poznać świat Javy.

Moja ocena: 3+/5

tomów “Sztuki programowania” należy do wspaniałego cyklu “Klasyka Informatyki”, czyli książek, które bez wątpienia powinny znaleźć się na półce każdego programisty.

Pierwszy tom jest poświęcony jest podstawowym algorytmom i strukturom danych. Autor przedstawia w nim rów-nież narzędzia matematyczne przydatne do zrozumienia zasady działania niektó-rych algorytmów. W drugim tomie znaj-dziemy wiele informacji związanych z licz-bami losowymi i arytmetyką komputerową. Zawarta w tym tomie wiedza to ogniwo łączące programowanie komputerowe z analizą numeryczną. Trzeci tom w cało-ści jest poświęcony dwóm podstawowym operacjom algorytmicznym – sortowaniu i wyszukiwaniu danych. Przedstawia sor-towanie zewnętrzne i wewnętrzne oraz opisuje procedury wyszukiwania określo-nych elementów w zbiorach z wykorzy-staniem zarówno metod tradycyjnych, jak i najnowszych. Tytuł tomu czwartego to “Al-gorytmy kombinatoryczne”, natomiast piąta część serii książek poświęcona jest w cało-

Recenzent: Piotr Truszkowski

Recenzent:Michał Niwicki

Page 64: Linux+_02_2005

60

dla początkujących

luty 2005 61www.lpmagazine.org

dla początkującychsztuczki i kruczki

Sztuczki i kruczkiGrzegorz Niewęgłowski

Niespodziewane “zawieszanie się” terminali?Czy czasem zauważasz, że terminal tek-stowy (np. XTerm lub zwykły linuksowy terminal VGA) przestaje reagować? Zupeł-nie, jakby został zamrożony, nie przyjmuje żadnych naciśnięć klawiszy, nie aktualizu-je wyświetlanego tekstu, a jedynym wyj-ściem jest wyłączenie go? Jeśli tak, to być może przypadkiem nacisnąłeś [Ctrl ]+[s].Aby odblokować terminal, trzeba naci-snąć [Ctrl ]+[q ]. Takie pomyłki przytra-fiają mi się stosunkowo często, więc całkiem wyłączyłem swoim termina-lom możliwość reagowania na [Ctrl ]+[s]. Można to zrobić wywołując polecenie stty -ixon, a jeśli dopiszesz je do plików konfiguracyjnych swojej powłoki, np. do ~/.bashrc czy ~/.bash_profile, to unik-niesz tego na stałe. ■

Konwertowanie strony kodowej plików tekstowychIstnieje sporo specjalnych narzędzi słu-żących do konwertowania tekstu między różnymi kodowaniami. Zamiast instalo-wać do tego celu kolejny pakiet, można posłużyć się poleceniem iconv. To stan-dardowa część pakietu Glibc, więc powi-nien znajdować się na każdym współ-czesnym systemie linuksowym. Aby przekonwertować tekst w iso8859-2 do unikodowego utf-8, można użyć takiego polecenia:

# iconv -f iso8859-2 -t utf-8 S

<plik_w_iso.txt >plik_w_utf.txt

Windowsowe cp1250 konwertuje się na iso8859-2 analogicznie:

# iconv -f cp1250 -t iso8859-2 S

<plik_windows.txt >plik_iso.txt

Spis obsługiwanych kodowań można obejrzeć przez iconv –list.

Pozostała tylko kwestia znaków końca linii – DOS/Windows wymaga-

ją, aby wiersze tekstu były oddziela-ne dwubajtową sekwencją <CR><LF>, natomiast Linux zadowala się samym <LF>. Linuksowe pliki bez konwer-sji łatwo rozpoznać pod Windows – wszystkie wiersze zwykle zosta-ną sklejone w pojedynczy, długi ciąg, a to skutecznie utrudnia czytanie takiego tekstu.

Wiele edytorów potrafi na życze-nie użytkownika konwertować teksty między tymi standardami (np. w VIM-ie można zrobić to przez :set fileformat=unix lub :set fileformat=dos przed zapisem pliku), ale istnieją też (jak przy kodowaniach) dedykowane pro-gramy do tego celu. W razie potrzeby (choćby przy obróbce wsadowej, gdy trzeba konwertować wiele plików, a okazuje się, że nie ma pod ręką gotowego narzędzia) można wykorzy-stać SED-a :

# sed 's:$:\r:' -i plik_unix.txt

# sed -e 's:\r::' -i plik_unix.txt

Pierwsze polecenie zamienia końce znaków w plik_unix.txt na coś czytel-nego pod Windows, a drugie zamie-nia z powrotem końce linii na format uniksowy (czyli powraca do stanu wyjścia). ■

Konwertowanie kodowań nazw plikówRzadziej potrzebną funkcją jest kon-wertowanie samych nazw plików, ale przez to potrafi być ono dużo bardziej kłopotliwe. Problem pojawia się przy przestawianiu systemu z iso8859-2 na utf-8, albo gdy używa się glo-balnie iso8859-2, a jakaś nowomod-na aplikacja (np. ROX-Filer) uparcie tworzy pliki o nazwach zakodowanych w utf-8... lub w innych sytuacjach, np. przy niedbałym kopiowaniu plików między systemami plików, używający-mi różnych standardów kodowania.

Łatwo jest zmienić nazwę jedne-mu plikowi. Nawet dziesięć plików można przemianować ręcznie. Ale gdy są ich setki, na dodatek rozproszone po całym drzewie katalogów? Można wtedy próbować stworzyć jakiś auto-mat działający rekursywnie, oparty na pętlach for..do..done. Można również próbować połączyć find, iconv i mv, ale takie rozwiązanie będzie pewnie dalekie od ideału wydajności i obsłu-gi błędów.

Rozwiązaniem może być skrypt convmv. Zwykle nie wchodzi on w skład linuksowych dystrybucji, ale można go łatwo pobrać z http://j3e.de/linux/convmv/. Polecenie convmv -r -i -f

utf-8 -t iso8859-2 –notest ~/katalog spowoduje rekursywne przejście przez ~/katalog, wyszukując nazwy plików w utf-8 i konwertując je na iso8859-2.Opcja -i włącza dodatkowo tryb interaktywny, w którym użytkownik widzi dokładnie, które pliki będzie próbował konwertować convmv. Skrypt jest dobrze przygotowany na różne sytuacje, co widać w obsługiwanychprzez niego opcjach. Dzięki niemu konwersja nazw całego drzewkaplików nie stanowi już problemu, a na pewno jest bezpieczniejsza niż używanie napisanych na szybko skryp-tów opartych na iconv i mv. ■

Cykliczne uruchamianie polecenia w trybie tekstowymPrzydatnym (choć często niezna-nym) poleceniem jest watch z pakie-tu ProcPS. Pozwala on w regularnych odstępach czasu (np. co sekundę) uru-chamiać jakieś polecenie. Dzięki temu można przykładowo obserwować stale aktualizowaną zawartość jakie-goś pliku z /proc lub wyjście pole-cenia ifconfig. Najprostsze zastoso-wanie to:

# watch ifconfig eth0

Page 65: Linux+_02_2005

60

dla początkujących

luty 2005 61www.lpmagazine.org

dla początkującychsztuczki i kruczki

Ale to nie koniec możliwości. Można np. spowolnić czas odświeżania do 1 minuty:

# watch -n 60 ifconfig eth0

zlikwidować “tytuł” wyświetlany przez watch:

# watch -n 60 -t ifconfig eth0

a nawet włączyć bardzo wygodny tryb oznaczania zmian (watch będzie oznaczał te fragmenty tekstu, które zmieniły się od ostatniego uruchomienia):

# watch -n 60 -t -d ifconfig eth0

Większość tego (może z wyjątkiem oznaczania zmian) dałoby się łatwo wykonać za pomocą pętli while i pole-ceń clear oraz sleep, ale watch jest już prawdopodobnie zainstalowany w sys-temie, więc dlaczego z niego nie sko-rzystać? Obserwowanie wyniku jakie-goś cyklicznie odświeżanego polecenia przydaje się w najmniej spodziewanych momentach. ■

Jakich bibliotek używa ten program?Prosta rzecz, ale często nieodzowna. Jak sprawdzić, które biblioteki współ-dzielone są wymagane przez dany pro-gram? Często wystarczy uruchomić na nim polecenie ldd, a pojawi się zesta-wienie bibliotek, które byłyby łado-wane przy uruchamianiu programu. Nie uwzględnia ono niestety dodatko-wych bibliotek czy wtyczek, które pro-gram potem może ładować własno-ręcznie (tego nie da się z góry przewi-dzieć), ale w 99% przypadków wynik ldd będzie się pokrywał z rzeczywisty-mi rezultatami.

Taka wiedza przydaje się przy dia-gnozowaniu problemów z ładowa-niem bibliotek dynamicznych – ldd, obok listy samych bibliotek, wyświetla ścieżki dostępu do nich (widać, gdzie szuka bibliotek), a jeśli jakaś biblioteka nie mogła zostać zlokalizowana, to ldd również powiadomi o tym użytkowni-ka w sposób bardziej czytelny niż zro-biłby to konsolidator (ang. linker) przy próbie uruchamiania programu. Dzięki ldd można również odróżnić progra-my budowane statycznie od tych dyna-micznie. ■

Jak odczytać temperaturę procesora pod Linuksem?Problem jest bardziej złożony – jak w ogóle odczytać czujniki z płyty głównej? Większość płyt ma wbudo-wane stosowne czujniki monitorujące parametry pracy – szalenie przydatne, gdy mamy zamiar przetaktować proce-sor lub podejrzewamy, że niestabilna praca komputera to wina słabego wen-tylatora lub przeciążonego zasilacza.

Nowe płyty główne często udostęp-niają te dane jako część implementacji ACPI, a Linux (w wersjach 2.6.x) umie je odczytać i udostępnić przez pliki w /proc lub /sys. Wtedy trzeba je jakoś pokazać użytkownikowi – dobrą nakładką może być GKrellM, który, obok zintegrowa-nych wykresów pokazujących obciąże-nie procesora i sieci, umie podłączyć się pod strumień informacji z czujników tem-peratury.

Jeśli płyta nie obsługuje ACPI lub obsługuje tylko szczątkowo, rozwiąza-niem może być pakiet lm_sensors – to rozbudowany zestaw modułów jądra, pozwalający odczytywać różne infor-macje z płyty głównej, takie jak napię-cia, obroty wiatraków czy temperatu-ra. Niestety, pakiet ten może być kło-potliwy w konfiguracji, co przy bogac-twie chipsetów odczytujących tempe-raturę utrudnia jego poprawne użycie. Jeśli lm_sensors wchodzi w skład dys-trybucji, której używasz, to dobrze – moduły są już skompilowane, więc wystarczy załadować ich odpowiedni zestaw (pomocne będzie polecenie sen-sors-detect, podpowiadające, jaka elek-tronika została wykryta w komputerze), a potem odczytywać dane poleceniem sensors (lub za pomocą GkrellM, gdyż współpracuje on również z lm_sen-sors). Pakiet lm_sensors jest stopniowo integrowany w źródła jądra 2.6.x, ale sądząc po obecnym postępie, jeszcze długo potrwa zanim zostanie całkowi-cie wchłonięty.

Jeśli nie mamy dojścia do goto-wych paczek z lm_sensors, a nie chcemy kłopotać się kompilowaniem i instalowaniem go samodzielnie, to możemy użyć programu xmbmon – to proste narzędzie bez żadnych niestandardowych zależności, które nie wymaga instalowania modułów jądra ani tworzenia plików konfi-guracyjnych. Ponadto, potrafi auto-matycznie wykryć i obsłużyć całkiem

obszerny zestaw płyt głównych i chip-setów. W skład tego pakietu wcho-dzą dwa polecenia: mbmon oraz xmbmon.

Po uruchomieniu mbmon możemy zobaczyć coś takiego:

Temp.= 35.0, 48.0, 0.0;

Rot.= 0, 3214,0

Vcore = 1.66, 0.10;

Volt. = 3.55, 5.05, 12.59, -12.06, -5.14

Ten skondensowany odczyt czujni-ków pokazuje temperaturę procesora, tempo obrotu wiatraków oraz wysoko-ści poszczególnych napięć na płycie. Za pomocą opcji mbmon możemy zmieniać format prezentowanych da-nych, ale to kwestia gustu, więc poprze-stanę na pokazaniu formatu domyśl-nego.

Obserwując wzrost temperatu-ry, spadek prędkości obrotów wiatra-ka czy niebezpieczne obniżanie się napięć, można zdiagnozować wiele awarii maszyny lub przewidzieć te dopiero nadchodzące. A zasilacz czy wentylator lepiej jest wymieniać zanim osiągną stadium krytyczne i pójdą z dymem.

Niestety, xmbmon nie współpra-cuje z GkrellM, ale dla zwolenników graficznego interfejsu istnieje polece-nie xmbmon, pokazujące swoje wyniki w formie okienka z prostą grafiką.

Z omawianym tematem wiąże się również odczytywanie temperatu-ry dysku twardego – w końcu dyski też się grzeją i przegrzanie może się dla nich skończyć fatalnie. Niestety, tutaj sprawa ma się gorzej niż z tem-peraturą procesora, ale nie z winy Linuksa, lecz samych producentów sprzętu. Nadal stosunkowo niewiele dysków ma wbudowane czujniki tem-peratury, więc niewielu użytkowników będzie mogło sprawdzić, jak miewa się ich dysk. Można jednak spróbować można – tutaj kluczowym słowem jest SMART, czyli system autodiagnosty-ki dysku. Temperatura jest udostęp-niana jako część danych SMART, więc można ją odczytać za pomocą Smart-montools (najpierw uruchamiając smartd, a następnie odczytując dane dysku przez smartcl -a /dev/hda lub smartctl -a /dev/hda|grep -i temp, aby nie przedzierać się przez nieistot-ne dane). ■

Page 66: Linux+_02_2005

sprzęt

62 luty 2005

Kamery internetowe pod LinuksemPiotr Wolny

Kamery internetowe (tzw. webcamy) stają się coraz bar-dziej popularne. Można ich używać do spotkań w Inter-

necie, nagrywania małych filmów czy robienia fotografii. Mogą być także wyko-rzystywane do monitoringu pomiesz-czeń. Linux obsługuje sporą część aktu-alnie sprzedawanych kamer.

Ogromna większość tanich kamer internetowych posiada złącze USB. O instalacji właśnie takiej kamery piszę w tym artykule.

Pod Linuksem możemy również korzystać ze zwykłej kamery, podłączo-nej do wejścia Composite w karcie telewi-zyjnej. Prostą kamerę analogową można nabyć w niewiele wyższej cenie w skle-pach elektronicznych. W takim przypad-ku instalacja samej kamery nie jest oczy-wiście potrzebna – wystarczy instalacja samej karty telewizyjnej.

Instalacja kamery USBDostęp do obrazu wideo w Linuk-sie otrzymujemy poprzez pliki urzą-dzeń /dev/video*. Jeśli zainstalowali-śmy np. kartę telewizyjną, to mamy w jądrze moduł videodev oraz moduł odpowiedzialny za naszą kartę tele-wizyjną, np. bt848. Działanie kamery, podłączonej przez USB, jest bardzo podobne. Również potrzebujemy mo-dułu videodev oraz modułu odpowie-dzialnego za naszą kamerę, czyli najczę-ściej jednego z następujących: vicam, ibmcam, konicawc, ov511, se401, sn9c102 oraz stv680. Po załadowaniu właściwego modułu, możemy otrzymać obraz z kamery na urządzeniu /dev/

video lub /dev/video1, jeśli kamera inter-netowa nie jest naszym jedynym urzą-dzeniem video. Odpowiedź na pytanie, który moduł będzie nam potrzebny do zadziałania kamery, jest właściwie naj-trudniejszym zadaniem przy jej insta-lacji. Pewne wskazówki możemy zna-leźć w ramce Działające kamery, ale często jedyną możliwością jest wyszu-kanie informacji na stronach poszcze-gólnych sterowników lub na stronie http://www.linux-usb.org/.

Gdy wiemy, jaki moduł jądra jest potrzebny do działania naszej kamery, stajemy przed jedną z trzech możliwości:

• kamera jest obsługiwana przez naszą dystrybucję Linuksa;

• wsparcie dla niej znalazło się w now-szych wersjach jądra niż posiadane przez nas;

• kamera jest obsługiwana tylko przez sterowniki, które można znaleźć na stronach internetowych.

O autorzeAutor hobbistycznie i zawodo-

wo zajmuje się Linuksem mniej więcej od czasów jądra 2.0.20.

Obecnie pracuje w organiza-cji społecznej. Poza Linuksem

fascynuje go rock progresywny. Kontakt z autorem:

[email protected]

Rysunek 1. Duża konkurencja na rynku kamer internetowych skutkuje nie tylko stosowaniem wymyślnych obudów, ale i częstym wprowadzaniem na rynek nowych modeli

Page 67: Linux+_02_2005

63

kamery internetowe

www.lpmagazine.org

sprzęt

Wsparcie w dystrybucji LinuksaGdy nasza dystrybucja zawiera moduł dla kamery, to zapewne znajduje się on w katalogu /lib/modules/[wersja_jądra/kernel/drivers/usb/media. W takim przy-padku wystarczy załadowanie modułu, np. poleceniem modprobe ov511. Na ogół informuje on o znalezieniu właściwego sprzętu. Linie, które pojawią się w /var/log/messagess lub /var/log/syslog oraz po wydaniu polecenia dmesg, mogą być podobne do poniższych:

Linux video capture interface: v1.00

ov51x.c: USB OV519 video device

ov51x.c: Sensor is an OV7648

ov51x.c: Device at usb-0000:00:1

usbcore: registered new driver ov51x

W powyższym przykładzie wyciąłem początki linii, zawierające datę i nazwę systemu. Ważną jest tutaj informacja o wykryciu Sensora oraz znalezieniu samego urządzenia (Device at...). Po zała-dowaniu modułu, nasze urządzenie /dev/video lub /dev/video1 powinno pokazy-wać obraz z kamery. Możemy szybko się o tym przekonać, jeśli mamy zainstalowa-ny w systemie program Xawtv. Po wyda-niu polecenia xawtv -hwscan otrzymamy listę wszystkich dostępnych urządzeń. Przykładowo, na moim systemie poka-zuje ono m.in.:

/dev/video1: OK

[ -device /dev/video0 ]

type : v4l

name : OV519 USB Camera

flags : capture

Oczywiście, jeśli w komputerze jest zain-stalowana karta telewizyjna, to znajdzie się ona również na tej liście, przez co będzie-my wiedzieli, które z urządzeń /dev/video* jest przypisane do danego sprzętu. Od tego polecenia możemy tak naprawdę zacząć swoją pracę, ponieważ jest szansa, że moduł do naszej kamery został załadowany przy starcie systemu. Teraz już, aby zoba-czyć obraz z kamery, możemy użyć dowol-nego programu, współpracującego z urzą-dzeniami Video4Linux, np. Xawtv, Tvtime, Kdetv. Musimy podać właściwe urządze-nie, jeśli nasza kamera nie zainstalowała się jako /dev/video. W przypadku Xawtv wystarczy opcja -c, np. xawtv -c /dev/

video1. W innych programach znajdziemy podobne opcje lub możemy wybrać inne urządzenie w graficznym interfejsie.

Gdy po załadowaniu modułu komen-da xawtv -hwscan nie pokazuje żadnych nowych urządzeń, a przy próbie dostępu do urządzenia video, np. komendą cat /dev/video0, jesteśmy informowani, że nie ma takiego urządzenia, to najprawdo-podobniej moduł, który załadowaliśmy, nie był przeznaczony dla naszej kamery. Nie dajmy się w takim przypadku zwieść wpisom w logach systemowych:

Linux video capture interface: v1.00

usbcore: registered new driver stv680

stv680.c: [usb_stv680_init:1512]

STV(i): usb camera driver version v0.25 reg

stv680.c: STV0680 USB Camera Driver v0.25

W tym przypadku moduł stv680 został załadowany, jak również automatycznie załadował się moduł videodev. Pomimo tego, że nie mamy żadnego komunikatu o błędzie, czy o nie znalezionym sprzę-cie, to moduł ten nie będzie jednak dzia-łał z naszą kamerą, gdyż nie mamy także komunikatu o znalezionym urządzeniu.

Nowe jądro systemuMoże zdarzyć się, że odpowiednie-go modułu nie znajdujemy w dystrybu-cji, albo jest on tam w zbyt starej wersji, a działający sterownik znalazł się dopiero w nowszej wersji jądra. Wtedy najlepszym rozwiązaniem jest samodzielne skompilo-wanie jądra systemu.

Przy jego konfiguracji musimy zazna-czyć:

• w dziale Character devices pozy-cje I2C support oraz I2C bit-banging interfaces,

• w dziale Multimedia devices pozycję Video For Linux. Gdy mamy kartę telewizyjną, potrzebujemy tam rów-nież zaznaczyć: BT848 Video For Linux, Philips SAA7134 support bądź Conexant 2388x (bt878 successor) support oraz odpowiedni moduł do tunera telewizyjnego na naszej karcie. Sterowników do kamer USB nie znajdziemy w tym dziale, gdyż umieszczono je pod USB support. Wyjątkiem jest pozycja OmniVision Camera Chip support, która potrzeb-na będzie posiadaczom kamer opar-tych na układach ov511 lub w9968cf – jest to dodatkowy moduł dla tych kamer, poza głównym, który znaj-dziemy we wspomnianym dziale USB support.

• w dziale USB support , który zrobił się już bardzo obszerny, musimy zna-leźć część zatytułowaną USB Multi-media devices. Poniżej będą sterow-niki poszczególnych kamer. Zazna-czamy według posiadanego sprzętu,

Listing 1. Przykładowy plik konfiguracyjny programu webcam

[grab]

device = /dev/video0

text = "komentarz %Y-%m-%d %H:%M:%S"

infofile = nazwa_pliku

width = 320

height = 240

delay = 10

input = composite1

norm = pal

trigger = 0

[ftp]

host = www.przyklad.org

user = kamera

pass = tajne-haslo

dir = katalog-webcam

file = webcam.jpeg

tmp = uploading.jpeg

passive = 1

debug = 1

local = 0

Rysunek 2. Centrum informacyjne KDE umożliwia na wygodne sprawdzenie identyfikatorów podpiętych urządzeń USB

Rysunek 3. Miniaturowa kamera analogowa, podpięta do karty telewizyjnej, może być niezłą alternatywą dla kamery USB

Page 68: Linux+_02_2005

64

sprzęt

luty 2005

choć możemy zaznaczyć wszystkie sterowniki, aby wypróbować, który będzie działał. Poza tym, potrzebu-jemy modułu kontrolera USB (UHCI, OHCI lub EHCI) oraz USB device file-system.

Po zbudowaniu nowego jądra i prawi-dłowym jego zainstalowaniu w systemie, wykonujemy wszystkie czynności, opisa-ne wcześniej w punkcie Wsparcie w dys-trybucji Linuksa.

Kompilacja samego modułuCzasem zdarza się, że dana kamera nie jest obsługiwana nawet przez najnow-sze jądro, ale powstał już dla niej sterow-nik. Niektóre z nich po prostu czekają na umieszczenie ich w jądrze, a inne – z róż-nych powodów (najczęściej licencyjnych) – nie mogą się tam znaleźć.

W przypadku mojej kamery – Trust Spacecam 320 – szybko dowiedzia-łem się, że jest ona oparta na układzie OV519, więc nie obsługuje jej żaden sterownik z jądra Linuksa. Pod adre-sem http://alpha.dyndns.org/ov511/ zna-lazłem jednak sterownik, który umoż-liwia odczyt obrazu z tej kamery. Nie jest to, co prawda, „prawdziwy” sterow-nik, gdyż przy jego pomocy kamera nie będzie działała z aplikacjami kompatybil-nymi z Video4Linux, ale i tak postanowi-łem spróbować.

Aby skompilować jakiś pojedynczy moduł jądra, w systemie trzeba było zain-stalować źródła aktualnie używanego jądra, czyli pakiet kernel-source. Na pły-

tach z dystrybucją Linuksa na ogół mamy kilka pakietów kernel-source – ten wła-ściwy określimy po wydaniu polecenia cat /proc/version.

Źródła ze sterownikiem do mojej kamery z układem OV519 ściągną-łem w postaci pliku ov51x-1.65-1.11-mark.tar.bz2. Po rozpakowaniu pliku znalazłem tam plik README z prosty-mi instrukcjami budowania modułu jądra – wystarczą polecenia: make clean; make oraz make install. To ostatnie polece-nie powinno być wydane z konta root. Następnie możemy wykonać polece-nie depmod -a – nie powinno ono poka-zać żadnych błędów. Jeśli widzimy jakieś komunikaty o unresolved symbols, to naj-prawdopodobniej nasze źródła jądra nie są zainstalowane prawidłowo.

Po wykonaniu wcześniej wspomnia-nych poleceń, w moim systemie znalazł się moduł ov51x, umieszczony jednak nietypowo, w katalogu /lib/modules/[wersja_jądra]/extra. Teraz wystarczyło już polecenie modprobe ov51x, aby nowe urządzenie /dev/video pojawiło się w sys-temie.

Bardzo podobnie możemy skompi-lować i zainstalować najnowsze wersje sterowników do innych kamer, które ściągniemy z Internetu. Podstawowym warunkiem są prawidłowo zainstalowa-ne źródła jądra w systemie. Ta proce-dura będzie zapewne bardzo przydatna dla posiadaczy kamer opartych na pod-zespołach firmy Philips, gdyż sterownik dla tych kamer został niedawno usunię-ty z jądra Linuksa. Co prawda, niektóre

dystrybucje Linuksa wciąż go zawiera-ją, ale z reguły znajdziemy tam okrojo-ną wersję sterownika, która nie pozwala na pracę w maksymalnej rozdzielczości (zawiera wyłącznie kod GPL). Na szczę-ście, nowe wersje sterownika do tych kamer możemy znaleźć pod adresem http://www.saillard.org/. Musimy ścią-gnąć plik pwc-10.0.5.tar.bz2, rozpako-wać go, przejść do nowo utworzonego katalogu i wydać polecania make i make install. Odtąd w systemie pojawi się nowy moduł pwc.

Po wszystkich tych zabiegach, nieza-leżnie od tego, jaki moduł kompilowali-śmy, możemy wrócić do czynności opi-sanych w punkcie Wsparcie w dystrybu-cji Linuksa.

Kończymy konfiguracjęModuły obsługujące kamery interne-towe posiadają na ogół bardzo wiele opcji, które można wpisać do pliku /etc/modprobe.conf. Niektóre nawet kilkadzie-siąt. Nie oznacza to, że należy je wszyst-kie w jakiś sposób ustawiać, aby kamera

Listing 2. Prosta konfiguracja programu motion

daemon off

videodevice /dev/video0

input 1

norm 0

frequency 0

width 352

height 288

framerate 4

target_dir /var/www/kamera1

snapshot_filename %v-%Y%m%d%H%M%S § snapshot

snapshot_interval 0

#czułość

threshold 2000

noise_level 32

Rysunek 4. Jądro Linuksa zawiera sterowniki dla różnych rodzai kamer internetowych

Rysunek 5. Internetowe wykazy kamer działających pod Linuksem liczą setki pozycji

Page 69: Linux+_02_2005

65

kamery internetowe

www.lpmagazine.org

sprzęt

działała. Na moim komputerze, po wyda-niu polecenia modinfo ov51x, pojawiły się m.in. informacje:

parm: autobright:Sensor automatically §

changes brightness

parm: autogain:Sensor automatically § changes gain

parm: autoexp:Sensor automatically § changes exposure

[...]

Tak więc, aby ustawić automatyczną jas-ność, progi i ekspozycję, dopisałem nas-tępującą linię do pliku /etc/modprobe.conf:

options ov51x autobright=1 autogain=1 § autoexp=1

W większości sterowników opcje modułu pozwalają właśnie na ustawienie tego typu parametrów.

Istnieją kamery, dla których usta-wienie pewnych opcji jest niezbędne do ich działania z niektórymi programa-mi. Przykładowo, aby używać programu GnomeMeeting z kamerą opartą na ukła-dach Phillipsa, potrzebne jest ustawie-nie rozmiaru i częstotliwości odświeża-nia przy pomocy takiej linii w /etc/mod-probe.conf :

options pwc size=SIF fps=10

Listę wszystkich opcji, które przyjmu-je moduł, można uzyskać nie tylko przy pomocy programu modinfo – lepiej jest przeczytać odpowiednią dokumenta-cję, np. w źródłach jądra – w katalo-gu Documentation/usb znajdziemy pliki z opisem dla poszczególnych chipsetów kamer: w9968cf.txt, stv680.txt, se401.txt, ov511.txt oraz ibmcam.txt. Jeśli ścią-gnęliśmy nasz sterownik z Internetu, to zapewne w archiwum był plik README lub podobny, zawierający opis wszyst-kich możliwych opcji.

Na koniec, nie zapomnijmy o upraw-nieniach dostępu do urządzeń /dev/video*. Aby każdy użytkownik mógł mieć dostęp do obrazu z kamery interneto-wej, wystarczy nam polecenie chmod 666 /dev/video0.

GnomeMeetingKamera internetowa – jak sama jej nazwa wskazuje – najczęściej znajduje zastoso-wanie do sieciowych spotkań, w których możemy nie tylko porozmawiać, ale rów-nież widzieć swojego rozmówcę oraz być widocznym.

Istnieje co najmniej kilka standardów, umożliwiających tego typu komunikację w Internecie. Jednym z najpopularniej-szych i zapewne najlepiej obsługiwa-nych pod Linuksem jest H.323. Jest on używany m.in. przez program Microsoft

Rysunek 6. Program GnomeMeeting umożliwia bardzo wygodne przetestowanie urządzeń dźwiękowych podczas konfiguracji

Działające kameryProducenci tego typu sprzętu często zmie-niają stosowane w kamerach układy, pozo-stawiając nazwę produktu bez zmian. Dodatkowo, obowiązujące na rynku zwy-czaje nakazują wprowadzanie nowych modeli co kilka miesięcy, często bez żad-nych zmian w parametrach technicznych. W efekcie, na próżno można szukać jakiej-kolwiek informacji o działaniu pod Linuk-sem dużej części aktualnie sprzedawa-nych kamer USB.

Mogę dać pewną radę dotyczą-cą zakupów – dobrze jest skorzystać z informacji w Internecie, odwiedzając strony linuksowych sterowników, podane w ramce W Internecie. Znajdziemy tam informacje o setkach kamer, które dzia-łają w naszym systemie. Te dane można następnie porównać z aktualną ofertą w handlu. W ten sposób istnieje duże prawdopodobieństwo, że zakupiony pro-dukt będzie działać.

Obecnie najpopularniejszymi markami kamer internetowych wydają się Logitech, Creative Labs oraz Trust. Oto niepełna lista kamer tych producentów, które powin-ny działać pod Linuksem:

• Logitech: Quickcam Express (starszawersja), Quickcam Web – linuksowysterownik możemy znaleźć na http://qce-ga.sourceforge.net/; Quickcam 3000Pro, QuickCam 4000 Pro, QuickCam Notebook Pro oraz QuickCam Note-book wykorzystują układy Philipsa; ste-rownik na http://www.saillard.org/ oraz w niektórych dystrybucjach; Quick-Cam Express – sterownik pod adresem http://home.tiscali.dk/tomasgc/labtec/;Quickcam Messenger, Home oraz Tra-veller – w momencie pisania tego arty-kułu nie posiadały sterowników.

• Creative Labs – urządzenia PC Cam600, PC Cam 300 posiadają sterownik pod adresem http://mxhaard.free.fr/;Creative WebCam III, WebCam Pro(model PD1030) są oparte na układzie ov511 i sterownik znajdziemy w no-wych dystrybucjach; WebCam Go

Mini jest oparta na stv0680 – sterow-nik ten jest już w nowych wersjach jądra i w nowych dystrybucjach;Webcamn NX, Webcam NX Pro – je-dynie „eksperymentalny” sterownik moż-na znaleźć pod adresem http://zc0302.sourceforge.net/.

• Trust: w sprzedaży można znaleźć modele oparte na OV511(+) – Space-C@m 150, SpaceC@m USB, Spa-ceC@m 200, SpaceC@m 300 – te urządzenia działają dobrze, sterow-nik jest w najnowszych dystrybucjach, a dodatkowo pod adresem http://alpha.dyndns.org/ov511/; SpaceC@m320 – ta kamera występuje w dwóch wersjach: z układem OV511+ działa dobrze, ale z OV519 można otrzy-mać z niej obraz tylko przy pomocy specjalnych programów – sterow-nik dostępny tylko na stronie http://alpha.dyndns.org/ov511/ nie zapew-nia kompatybilności z Video4Linux;Spycam 300, Spycam 300 Voice są oparte na układzie stv0680 i dzia-łają. Niestety, nie wiem, czy doty-czy to również modelu 300NX;Trust SpaceC@m Lite działa nasterowniku z http://webcam.sourceforge.net/ (CpiA); Trust SpaceCam 120,SpaceCam 100 PORTABLE – działająna sterowniku z http://nw802.sourceforge.net/.

Gdy kupiliśmy już kamerę USB i podłączy-liśmy ją do komputera, a nie mamy poję-cia, z jakim sterownikiem może ona dzia-łać, powinniśmy sprawdzić identyfikatory USB: dostawcy (vendor) oraz produktu (pro-duct). Mogą one pojawić się w logach sys-temowych, po podłączeniu kamery. Pokaże je komenda cat /proc/bus/usb/devices albo program Centrum informacyjne KDE. Znając te dwa identyfikatory, możemy je wpisać w wyszukiwarce na stronie www.li-nux-usb.org. Otrzymamy wtedy informa-cję, czy istnieje sterownik do danego urzą-dzenia.

Page 70: Linux+_02_2005

66

sprzęt

luty 2005

NetMeeting, a dla naszego systemu ope-racyjnego stworzono jego odpowiednik o nazwie GnomeMeeting. Został on stwo-rzony dla GNOME, ale będzie równie dobrze działać w KDE, czy jakimkolwiek innym środowisku. Program ten posiada dosyć spore możliwości, nawet większe od pierwowzoru produkcji Microsoft, np. umożliwia czat tekstowy.

Do prawidłowego działania progra-mu będzie nam potrzebna karta dźwię-kowa, pracująca w trybie full-duplex, naj-lepiej ze sterownikami ALSA – musimy bez żadnych problemów równocześnie wysyłać dźwięk przez mikrofon oraz słyszeć naszego rozmówcę. Zanim uru-chomimy program, od razu sprawdźmy działanie mikrofonu i ustawienia mikse-ra – co prawda w GnomeMeeting rów-nież można regulować głośność, ale nie zawsze działa to dobrze.

Poza dźwiękiem, będzie nam potrzebna działająca kamera interne-towa, czy też jakiekolwiek urządzenie, nadające obraz przez któreś z urządzeń /dev/video*, albo kamera, podłączona przez złącze Firewire. Powinniśmy naj-pierw sprawdzić kamerę, np. uruchamia-jąc Xawtv czy Kino.

Sam program GnomeMeeting znaj-dziemy prawdopodobnie w naszej dystrybucji. Powinny tam być rów-nież wszystkie potrzebne nam wtyczki (ang. plugins) do tego programu, czyli do obsługi dźwięku OSS lub ALSA oraz obrazu V4L (Video4Linux) lub ze złącza Firewire (DC lub AVC). Najnowszą wersję programu możemy znaleźć na stronie http://www.gnomemeeting.org/ – znajdu-ją się tam nie tylko źródła, ale również gotowe pakiety binarne dla najpopular-niejszych dystrybucji. Czasem niezbędne będzie zaopatrzenie się w wersję powy-żej 1.0 – w starszych występował pro-blem ze współpracą z kartami telewizyj-nymi i kamerami internetowymi, które nie obsługiwały palety barw YUV420p.

Jeśli chcemy instalować program ze źródeł, musimy najpierw skompilować i zainstalować zamieszczone tam biblio-teki – openh323 oraz pwlib. Ponadto, w systemie powinny być zainstalowane pakiety -dev bibliotek GNOME, OpenL-DAP oraz SDL. Biblioteki i program kom-piluje się standardowymi poleceniami: ./configure; make; make install.

Konfiguracja samego programu jest uproszczona do minimum i odbywa się całkowicie w środowisku graficznym. Przy pierwszym uruchomieniu pojawi się Druid konfiguracji, który zada nam kilka pytań:

• nasze imię i nazwisko, pokazywane w sieci;

• adres email, potrzebny do zarejestro-wania się w katalogu użytkowników GnomeMeeting;

• prędkość połączenia;• system dźwięku (najlepiej ALSA) oraz

urządzenia wejściowe i wyjściowe – mogą być one podpięte do jednej karty dźwiękowej, ale mogą również pochodzić z różnych urządzeń. Po wybraniu mamy możliwość przete-stowania konfiguracji dźwięku;

• system obrazu – najczęściej V4L, chyba że korzystamy z Firewire, oraz urządzenie, jeśli mamy więcej niż jedno aktywne /dev/video*.

Po zakończeniu konfiguracji w okien-ku programu powinniśmy widzieć obraz ze swojej kamery. Możemy wtedy otwo-rzyć książkę adresową, ściągnąć z ser-wera ils.seconix.com listę wszystkich użytkowników i znaleźć jakiegoś, który w swoim opisie podał, że zgadza się na przyjmowanie testowych połączeń. Aby do niego zadzwonić, wystarczy dwu-krotne kliknięcie myszką. W przypad-ku, gdy znamy adres jakiegoś użytkow-nika, możemy bezpośrednio wpisać go w głównym oknie GnomeMeeting – pro-gram akceptuje URL-e w formacie h323:[user@][host:[port]] oraz callto:[user@][host:[port]] – tę drugą formę adresu sto-suje się wyłącznie do serwera ils.seco-nix.com.

Przy pomocy GnomeMeeting można również prowadzić pogawędki z użyt-kownikami NetMeeting, ale choć głos będzie działał dobrze w obydwie strony, to tylko my będziemy go widzie-li – on nas nie zobaczy. Ten komercyj-ny program zawiera po prostu proce-durę sprawdzającą, czy zdalny klient używa również oprogramowania tego samego producenta – jeśli jest inaczej,

Wyposażenie dodatkoweNiektóre kamery, jak np. Trust Space-cam 320, są wyposażone w mikrofo-ny. U mnie mikrofon w kamerze zadzia-łał natychmiast po włączeniu urządzenia – automatycznie załadował się bowiem moduł jądra snd_usb_audio, będący sterownikiem ALSA do urządzeń USB. Komenda arecord -l pokazała nowe urządzenie [USB Camera]. Można z niego przechwytywać dźwięk zaska-kująco dobrej jakości. Działa dobrze np. w GnomeMeeting. Urządzenie w kame-rze nie umożliwia jednak regulacji gło-śności, przynajmniej ze sterownika-mi ALSA – program alsamixer zwraca komunikat o nie znalezieniu miksera.

Kamery są również często wyposa-żone w dodatkowy przycisk (snapshot button). Jeśli chcemy zrobić z niego jakiś pożytek, powinniśmy przeczytać doku-mentację używanego przez nas sterow-nika. Zapewne wymagane będzie poda-nie jakiegoś parametru przy ładowaniu modułu kamery.

Urządzenia dwufunkcyjne, czyli po-łączenie prostego aparatu cyfrowego z kamerą internetową, również mogą być obsłużone pod Linuksem, przynajm-niej jeśli są one zbudowane na układzie STV0680B (np. Trust Spycam 300, Aiptek Pencam, Nisis Quickpix 2). Pod adresem http://stv0680-usb.sourceforge.net/ znaj-dziemy nie tylko sterownik, umożliwiający działanie tej kamery jako urządzenia Vide-o4Linux, ale również program Pencam, służący do ściągania zdjęć wykonanych przez to urządzenie, w czasie gdy nie było ono podłączone do komputera.

Rysunek 7. Program GnomeMeeting w działaniu

Rysunek 8. Program Motion potrafi nie tylko „pilnować” obrazu w kamerze, ale również udostępniać go w sieci

Page 71: Linux+_02_2005

67

kamery internetowe

www.lpmagazine.org

sprzęt

nie pokaże żadnego obrazu. Gdy zdecy-dujemy, że wystarczy nam komunikacja głosowa oraz transmisja obrazu w jedną stronę, najprościej jest przekonać zna-jomych użytkowników NetMeeting, aby zarejestrowali się na serwerze ils.seco-nix.com – wtedy łatwo ich znajdziemy. Nowe wersje GnomeMeeting pozwalają nam również na rejestrację przy użyciu tego programu na innych serwerach, używanych normalnie przez posiada-czy NetMeeting.

Obraz z kamery na stronie WWWPojęcie kamera internetowa niektó-rym kojarzy się bardziej z ozdobnikiem wielu serwisów internetowych w posta-ci obrazu przekazywanego na żywo z jakiegoś ciekawego miejsca, np. cen-

trum miasta, stoku narciarskiego, plaży itp. Takie rozwiązanie najczęściej uatrak-cyjnia daną stronę i przyczynia się do zwiększenia liczby odwiedzających.

W Linuksie znajdziemy gotowe pro-gramy, które wykonają za nas prawie całą pracę przy konfiguracji takiej kamery. Najstarszym z nich i wciąż jednym z najpopularniejszych jest Webcam. Jest on zawarty w archiwum razem ze źró-dłami Xawtv i można go ściągnąć bez-pośrednio od autora, ze strony http://linux.bytesex.org/xawtv/. Program tenpotrafi odczytać dane z urządzenia /dev/video*, nagrać je do pliku jpeg, nało-żyć na obraz dowolny napis (najczę-ściej data i czas) oraz dodatkowo wysłać gotowy plik na zdalny serwer, korzysta-jąc z protokołu ftp. To ostatnie przyda-je się najbardziej, gdy postanowiliśmy podpiąć kamerę do jakiegoś komputera, który stoi poza serwerownią. Program będzie powtarzać te wszystkie opera-cje co zadaną liczbę sekund, bez żadnej ingerencji użytkownika.

Użycie programu jest bardzo proste – wystarczy wydać polecenie webcam

plik_konfiguracyjny. Zawartość przykła-dowego pliku konfiguracyjnego pokaza-no na Listingu 1. Składa się on z dwóch sekcji.

Pierwsza sekcja ([grab ]) zawie-ra parametry obrazu pobieranego z kamery. Powinny one być zrozumia-łe, nawet bez czytania man webcam. Przy pomocy opcji text wpisujemy własny opis obrazu z kamery, a delay okre-śla tutaj, co ile sekund obraz jest ścią-gany z kamery i wysyłany na serwer. Przyda się również opcja trigger – jeśli podamy wartość większą od zera, obraz będzie wysyłany tylko wtedy, gdy uległ jakiejkolwiek zmianie (coś się poruszyło). Do całkiem profesjo-nalnego wykrywania ruchu przed kamerą internetową najlepiej używać znacznie bardziej zaawansowanego programu Motion, o którym napiszę w dalszej części.

Sekcja [ftp] zawiera adres serwera,nazwę użytkownika, hasło, katalog oraz nazwę pliku, w którym ma się znaleźć obraz z naszej kamery. Jeśli wpiszemy local=1, obrazy nie będą wysyłane na żaden zdalny serwer, tylko zapisywane w położeniach określonych przez para-metry file, dir oraz tmp.

Tak więc, po skonfigurowaniu pro-gramu Webcam, administratorowi po-

zostaje wyłącznie stworzenie strony html, najczęściej z nagłówkiem META HTTP-EQUIV="Refresh", aby zapewnić jej automatyczne odświeżanie w przeglą-darkach gości na stronie.

Obraz przez siećObraz z naszej kamery internetowejmożemy przesyłać przez sieć nie tylko w postaci plików jpeg, uaktual-nianych co parę sekund, gdyż dzięki oprogramowaniu VideoLAN (http://www.videolan.org/ ) jest możli-we skompresowanie go i wysyłanie w postaci strumienia danych, m.in mpeg lub asf. VideoLAN działa na wielu syste-mach operacyjnych, w tym MS Windows, więc jest możliwe np. nadawanie na Linuksie i odbiór na MS Windows.

Część dystrybucji zawiera ten pro-gram, gdyż jest on rozprowadzany na licencji GPL. Najlepiej zainstalo-wać wtedy wszystkie pakiety, które posiadają w nazwie VLC. Gdy nie mamy gotowych pakietów w dystry-bucji, możemy posłużyć się gotowy-mi ze strony www.videolan.org. Przy-kładowo, dla Auroksa 10.0 można ściągnąć pliki przeznaczone dla Fedora Core (vlc-binary.tar.gz oraz fedora1-updates.tar.gz). Po rozpako-waniu zostanie utworzony katalog vlc, a w nim cały zestaw pakietów rpm. Polecenie rpm -U vlc/* --force --nodeps-h zainstaluje je wszystkie (będą tam również nowe wersje wielu bibliotek).

VideoLAN posiada bardzo bogate możliwości, ale podam jedynie prostą metodę na przesyłanie obrazu z kamery internetowej między dwoma komputerami w sieci. W identycz-

Kamery z OV519Urządzenia wyposażone w układ OV519, jak np. Trust SpaceC@m 320 czy Sony EyeToy, stanowią nieliczne przykłady urządzeń – jak dotąd – niekompatybil-nych z Video4Linux. Znalazłem tylko dwa programy, przy pomocy którym możemy uzyskać obraz z takich kamer. Pierwszy z nich to program Getjpeg. Znajdziemy go w archiwum ze sterownikami do kamery (plik ov51x-1.65-1.11-mark.tar.bz2) w pod-katalogu test. Aby go skompilować, wy-starczy przejść do tego podkatalogu i wydać samo polecenie make. Wszyst-ko, co możemy wykonać przy pomocy tego programu, to zapisanie aktualne-go obrazu z kamery do pliku jpeg. Jeśli uruchomimy ./getjpeg -d /dev/video1, obraz z kamery znajdziemy w pliku image-00.jpg, oczywiście przy założeniu, że nasza kamera jest powiązana z /dev/video1. Program ten możemy uruchamiać w odrobinę bardziej fantazyjny sposób, np. ./getjpeg -d /dev/video1 -o ̀ date

+%s̀ .jpg -n 100 wykona nam 100 zrzu-tek obrazu z kamery. Można je następnie konwertować np. na film avi, korzystając z Mencodera.

Kolejnym programem, współpracują-cym z takimi kamerami, jest Showvideo, który znajdziemy pod adresem http://www.wlug.org.nz/OV519WebCam. Jego również kompiluje się, używając wyłącz-nie polecenia make. Program ten pokazu-je na żywo obraz z kamery w okienku śro-dowiska X Window i to jedyna jego funk-cja. Cóż, przynajmniej wiemy, że urzą-dzenie jest sprawne, a jakość obrazu... niestety kiepska, przynajmniej w przy-padku mojej Trust SpaceC@m 320.

Rysunek 9. Program Vlc potrafi również współpracować z kamerami internetowymi

Page 72: Linux+_02_2005

68

sprzęt

luty 2005

ny sposób możemy przesyłać obraz z DVD, z pliku avi, a nawet z karty DVB. Korzystam przy tym z dosyć nowej wersji vlc (0.8.1) oraz nakładki wxvlc, które są dostępne w dystrybu-cji Debian Sid.

Zaczynamy od uruchomienia progra-mu Wxvlc, więc powinniśmy zobaczyć jeden z lepszych interfejsów graficznych dla Vlc. Następnie w menu File wybie-ramy Wizard... –> Stream to network. Teraz klikamy na Choose, aby określić, co chcemy nadawać. Interesująca nas kamera internetowa jest na zakładce Video4Linux, w której podajemy ewentualnie urzą-dzenie, jeśli nie jest to /dev/video. Po przejściu dalej powinniśmy okre-ślić sposób wysyłania danych. Naj-prostszą metodą jest wybranie HTTP. W takim przypadku w okienku poni-żej nie powinniśmy wpisywać żadne-go adresu. Alternatywnie, możemy spró-bować wybrać UDP Unicast, ale wtedy musimy podać adres komputera, na którym będzie odbierany obraz. UDP działa szybciej, mniej obciążając sieć, ale częściej możemy spodziewać się proble-mów z tym protokołem. Ogromną zaletą VideoLAN jest jego wsparcie dla UDP Mul-ticast, czyli wysyłania strumienia do wielu komputerów równocześnie, ale wymaga to, aby cała nasza infrastruktura sieciowa pozwalała na takie adresowanie. Można to osiągnąć w sieci lokalnej, ale w Internecie nie jest to już możliwe. Ponadto, do działa-nia Multicast potrzebujemy odpowiedniej konfiguracji jądra systemu.

Wróćmy teraz do naszej kamery. Następne pytanie odnosi się do sposobu kompresji przesyłanych danych. Będzie-my mieli do wyboru m.in. MPEG PS, MPEG TS czy ASF. Możemy spróbować

MPEG TS – powinno działać ze wszyst-kimi kamerami internetowymi. W przy-padku problemów, warto wypróbować ASF. Ostatnie pytanie odnosi się do warto-ści TTL (Time To Live) pakietów przesyła-nych przez sieć. Innymi słowy, określamy tutaj, przez ile ruterów mogą one przejść. W sieci lokalnej wystarczy nam z reguły liczba 1 lub 2.

To wszystko! Teraz już nasz obraz powinien być nadawany, co widać po pozycjach w menu Audio i Video. Jeśli nie uaktywniły się one, to spójrzmy na konsolę, z której uruchomiliśmy Vlc – powinien znaleźć się tam komunikat o błędzie, np. braku dostępu do urzą-dzenia lub niemożności otwarcia portu.

Gdy nasza nakładka nie pozwala na wybranie V4L jako źródła obrazu, możemy posłużyć się linią komend. Przykładowo, vlc v4l:/dev/video:

channel=1 uruchomi program z obra-zem z wejścia composite1. Bardziej zło-żony przykład może wyglądać następu-jąco: v4l:/dev/video:norm=pal:frequ-

ency=543250:size=640x480:channel=0:

adev=/dev/dsp:audio=0.

Gdy wszystko działa, przechodzimy na drugi komputer, gdzie uruchamiamy ten sam program – Vlc. Tym razem z menu File wybieramy Open Network Stream, zaznaczamy HTTP/FTP/MMS i w okienku obok wpisujemy adres komputera, z którego nadajemy, oraz domyślny port 8080, np. 192.168.0.55:8080. Powinniśmy zobaczyć obraz i przy okazji usłyszeć dźwięk z pierw-szej karty dźwiękowej na kompute-rze, na którym jest podpięta kamera – chyba, że wyłączyliśmy go przy wcześniejszej konfiguracji.

MotionJednym z ciekawszych programów, współpracujących z kamerą internetową,którym chciałbym zainteresować Czytelni-ków, jest Motion (http://motion.sf.net/ ).Jak wcześniej wspominałem, program ten obserwuje kamerę internetową lub inne urządzenie, kompatybilne z V4L, oraz nagrywa obraz z niego do plików jpeg, mpeg czy avi, ale tylko w momencie, gdy zmienia się obraz w kamerze. Doskonale nadaje się do monitoringu pomieszczenia albo terenu otwartego. Dzięki niemu, jeśli np. pozostawimy kamerę pilnującą ogrodu przez weekend, po powrocie będziemy mieli do obejrzenia tylko zestaw obrazków lub filmów, zarejestrowanych w momen-cie, gdy przed kamerą wystąpił jakiś ruch, a nie cały kilkudziesięciogodzinny mate-riał. Przy pomocy Motion możemy rów-nież tworzyć bardzo efektowne filmy z obserwacji, np. zachowania roślinyw ciągu całego dnia – widać, jak reagujeona na światło, rozwija kielich kwiatuitp. Program zawiera również w sobieminiaturowy serwer http, umożliwiającyudostępnianie obrazu z kamery przez Internet lub sieć lokalną.

Programu Motion raczej nie znaj-dziemy w naszej dystrybucji Linuksa, a jeśli już, to na ogół w okrojonej wersji, która nie pozwala na tworze-nie filmów, kodowanych przy pomocy ffmpeg. Najlepiej ściągnąć źródła ze strony http://sourceforge.net/projects/motion/.Najpierw w naszym systemie powinnyzostać zainstalowane pakiety glibc-devel, libjpeg-devel, zlib-devel, curl-devel, openssl-devel oraz krb5-libs. Gdy chcemy używać Motion do nagry-wania filmów, powinniśmy jeszcześciągnąć ze strony ffmpeg.sourceforge.net plik ffmpeg-0.4.8.tar.gz oraz skom-pilować i zainstalować następującymi poleceniami:

# tar zxfvp ffmpeg-0.4.8.tar.gz

# mv ffmpeg-0.4.8 /usr/local/ffmpeg

# cd /usr/local/ffmpeg/

# ./configure

# make

# make install

Na zakończenie instalacji ffmpeg, otwie-ramy dowolnym edytorem plik /etc/ld.so.conf, dopisujemy do niego jedną linię:

/usr/local/lib

Rysunek 10. Nowe wersje programu Vlc umożliwiają bardzo łatwe przesyłanie obrazu przez sieć

Page 73: Linux+_02_2005

69

kamery internetowe

www.lpmagazine.org

sprzęt

oraz wydajemy polecenie ldconfig. Teraz możemy rozpakować archiwum z progra-mem Motion (ja używam wersji motion-3.1.17.tar.gz), aby skompilować i zainsta-lować je komendami: ./configure, make, make install.

Zabawę z programem możemy roz-począć od pliku konfiguracyjnego,zamieszczonego na Listingu 2. Powin-niśmy go skopiować do /usr/local/etc/motion.conf. W tym przykładzie prog-ram będzie odczytywał urządzenie/dev/video0 i nagrywał obrazki z maksy-malną częstotliwością czterech klatek na sekundę w katalogu /var/www/kamera1 (powinniśmy wcześniej utwo-rzyć ten katalog). Opcją threshold okre-ślamy, jak wiele pikseli obrazu musi ulec zmianie, aby została ona uznanaza ruch przed kamerą, a opcja noise_levelpozwala na ignorowanie określonegopoziomu szumów, który należy dostoso-wać do indywidualnej kamery i warun-ków oświetlenia.

Aby, poza zapisywaniem obrazków, można je było oglądać na żywo przez przeglądarkę internetową, wystarczy dopisać do pliku konfiguracyjnego nastę-pujące linie:

# Live Webcam Server

webcam_port 8080

webcam_quality 50

webcam_motion on

webcam_maxrate 1

webcam_localhost off

webcam_limit 0

Następnie podajemy w przeglądar-ce adres komputera, do którego jest podpięta kamera oraz port 8080 (np. 192.168.200.2:8080). Uzyskujemy obraz, który automatycznie odświe-ża się, gdy tylko zmienia się obraz w kamerze. Przy okazji możemy do

pliku konfiguracyjnego dodać linię output_normal off – wtedy obraz-ki jpeg nie będą nagrywane na dysku, a wyłącznie wysyłane przez sieć. Możemy również zastosować opcję snapshot_interval 10, a wtedy program Motion będzie zachowy-wał się jak serwer zwykłej kamery internetowej – co 10 sekund będzie wysyłał nowy obraz, niezależnie od tego, czy wykrył ruch przed kamerą, czy nie.

Pliki jpeg mimo wszystko zajmują dosyć sporo miejsca na dysku, zwłasz-cza w porównaniu z plikami mpeg czy avi, z tą samą zawartością. Są też mniej wygodne do przeszukiwania. Z tego powodu warto skorzystać z możliwości nagrywania filmów. Przy-kładowe linie, które powinniśmy dopi-sać do pliku konfiguracyjnego, mogą wyglądać tak:

output_normal off

ffmpeg_cap_new on

ffmpeg_cap_motion on

ffmpeg_timelapse 0

ffmpeg_timelapse_mode hourly

ffmpeg_bps 500000

ffmpeg_variable_bitrate 0

ffmpeg_video_codec mpeg4

W ostatniej z tych linii określiliśmy sposób kodowania filmu – zamiast poda-nego tutaj divixa, możemy zastosować mpeg1 lub msmpeg4, aby pliki mogły być odtwarzane pod MS Windows bez konieczności instalowania dodatkowych kodeków.

Program Motion potrafi równo-cześnie pracować w trybie serwe-ra kamery internetowej oraz zapi-sywać pliki avi czy mpg. Ponadto, jego bardzo bogate możliwości obej-mują nawet współpracę z bazami

danych (MySQL i PostgreSQL), zdalne kontrolowanie działającego programu przez sieć oraz bardzo zaawanso-wane mechanizmy wykrywania ru-chu.

ZakończenieLinux wciąż nie cieszy się zbyt wielkim uznaniem producentów kamer inter-netowych – wiele tego typu urządzeń działa tylko w MS Windows. Często programy o podobnych funkcjach, jak darmowe odpowiedniki dla Linuk-sa, w wersji dla dominującego sys-temu, sprzedawane są za dziesiątki dolarów.

W Internecie:• Strona domowa programu

GnomeMeeting:http://www.gnomemeeting.org/

• Strona domowa programu Motion:http://motion.sourceforge.net/

• Program Webcam jest częścią pakietu Xawtv:http://linux.bytesex.org/xawtv/

• Sterowniki dla kamer z układami Philips'a:http://www.saillard.org/

• Sterowniki dla kamer z układem CpiA:http://webcam.sourceforge.net/

• Sterowniki dla kamer z SE401, SE402 oraz EP800:http://members.chello.nl/~j.vreeken/se401/

• Sterowniki dla kamer z OV511(+), OV518, OV519:http://alpha.dyndns.org/ov511/

• The Webcam HOWTO:http://www.tldp.org/HOWTO/Webcam-HOWTO/

• Eksperymentalny sterownik, m.in. dla niektórych kamer Creative i Logitech:http://mxhaard.free.fr/spca5xx.html

R E K L A M A

Page 74: Linux+_02_2005

dla programistów

70 luty 2005

Piszemy program do zmiany rozdzielczości ekranu przy pomocy rozszerzenia RandRMarek Sawerwain

Jedną z wad środowiska X Window, wytykaną przede wszystkich przez początkujących użytkowników, jestjego dość trudna konfiguracja.

Wszelkie parametry serwera X-ów zostają zapisane w pliku tekstowym, więc najle-piej przeprowadzać konfigurację poprzez edycję tego pliku.

Inną poważną wadą był brak moż-liwości zmiany parametrów wyświe-tlanego obrazu bez restartu środowi-ska. Co prawda, możliwa była zmiana rozdzielczości ekranu poprzez kom-binację klawiszy [Ctrl ]+ [Alt ]+ [+] oraz [Ctrl ]+ [Alt ]+ [-], ale w ten sposób zmie-nialiśmy tylko samą rozdzielczość,a obraz wyświetlany przez X-y pozo-stawał nadal tych samych rozmia-rów. W rezultacie, przy zmianie roz-dzielczości z wyższej na niższą, był włączany tryb ekranu wirtualnego. Ponadto, nie można było łatwo stero-wać odświeżaniem obrazu.

Te problemy odeszły już do prze-szłości wraz z wprowadzeniem roz-szerzenia o nazwie RandR. Pozwala ono również na wykorzystanie innych możliwości kart graficznych, ponie-waż, oprócz zmiany rozdzielczości ekranu bez konieczności restartu śro-dowiska X Window, możliwe stało się także jego obracanie, jeśli tylko karta graficzna udostępnia taką funkcjonal-ność.

Okazuje się, że wykorzystanie tych możliwości jest dość łatwe do zapro-gramowania, więc w tym artykule

pokażę, jak napisać tego typu pro-gram. W środowiskach typu GNOME czy KDE, a nawet w samym środowi-sku X Window, istnieją odpowiednie programy wykorzystujące rozszerze-nie RandR, ale napisanie takiego pro-gramu samodzielnie to bardzo dobre ćwiczenie.

Co ciekawe, nasz program będzieoferował dostęp do wszystkich mo-żliwych rozdzielczości. Przykładowo,domyślnie dostępna aplikacja w środo-wisku GNOME oferuje wyłącznie tegłówne, takie jak 640x480, 800x600,1024x768 itd. Z tego powodu mo-żna powiedzieć (z lekkim przymruże-niem oka), iż poprawimy niedostatki środowiska GNOME.

Projektujemy programProgram napiszemy wykorzystując biblio-tekę GTK+. Do zaprojektowania gra-ficznego interfejsu użytkownika wyko-rzystamy program Glade. Tym razem nie poprzestaniemy na wygenerowa-niu pliku z opisem interfejsu (plik o roz-szerzeniu glade), ale przygotujemy rów-nież kod źródłowy tworzący ten inter-fejs – program, który opracujemy, jest niewielkich rozmiarów, więc będzie naj-lepiej, gdy nasza aplikacja nie będzie wymagać do poprawnej pracy dodatko-wych plików.

Możliwości naszego programu można streścić jednym krótkim zda-niem: program ma zmieniać roz-dzielczość oraz wartość odświeża-

O autorzeAutor zajmuje się tworzeniem

oprogramowania dla WIN32 i Linuksa. Zainteresowania:

teoria języków programowania oraz dobra literatura.

Kontakt z autorem: [email protected]

Na płycie CD/DVDNa płycie CD/DVD znajdują się wykorzystywane biblioteki, kod

źródłowy programu oraz wszyst-kie listingi z artykułu.

Page 75: Linux+_02_2005

71

dla programistówrandr i gnome 2.8

www.lpmagazine.org

nia ekranu. Pomimo tego, jak zawsze, warto zaprojektować schemat dzia-łania programu. Prezentuje go Rysu-nek 1. Najważniejszym zdarzeniem jest zmiana rozdzielczości ekranu, ale, jak widać, sam proces wyboru pożą-danej rozdzielczości pociąga za sobą wybór zbioru dopuszczalnych wartości odświeżania. Jest to jedyny trudniejszy fragment do opracowania w naszym programie.

Budujemy interfejsPrzy tworzeniu oprogramowania w GTK+/GNOME do przygotowania graficzne-go interfejsu użytkownika najlepiej wykorzystać program Glade. Rysu-nek 2 pokazuje interfejs naszej apli-kacji. Nie jest on zbyt skompli-kowany, gdyż stosujemy tylko dwawidgety GtkComboBox oraz dwa stan-dardowe przyciski: jeden do zmiany rozdzielczości ekranu oraz jeden kończący działanie programu. Dodat-kowo, umieścimy jeszcze kilka etykiet. W jednej z nich znajdzie się aktualnie wybrana rozdzielczość.

Sam proces tworzenia interfejsu jest na tyle typowy, że nie będę poświęcał mu zbyt dużo czasu, ale przy widgetach GtkComboBox ujawnia się pewne niedo-ciągnięcie programu Glade, o którym

warto wspomnieć. Gdy umieścimy na formularzu obydwie kontrolki, to zazwyczaj nie dodajemy żadnych ele-mentów do wyboru, gdyż robimy to później samodzielnie w programie. Okazuje się, że to podejście tym razem nie będzie działało, gdyż po załado-waniu pliku glade z opisem interfej-su, każda próba dodania elementów do GtkComboBox będzie generować infor-macje o błędach. Sposób uniknięcia tego problemu jest bardzo prosty. Po umieszczeniu komponentu GtkCombo-

Box w tworzonym oknie, do listy ele-mentów wystarczy dodać kilka war-tości, po czym zapisać plik, a następ-nie usunąć dodane elementy i ponow-nie zapisać projekt. Spowoduje to, że w opisie XML zostanie odznaczone,

iż komponenty GtkComboBox nie będą tworzone poprzez konstruktor gtk_

combo_box_new, ale przez gtk_combo_

box_new_text. Użycie tego drugiego konstruktora daje nam dostęp do listy elementów, która zostanie utworzo-na samoczynnie przez system GTK+. W ten sposób zostaniemy zwolnieni z obowiązku tworzenia obiektu listy, chociaż nadal będziemy musieli wypełnić listę. Będą tam umieszczone dostępne rozdzielczości ekranu oraz wartości odświeżania. Nie zapomnijmy także nazwać w odpowiedni sposób poszczególnych widgetów. W naszym programie widget GtkComboBox, zawie-rający dopuszczalne nazwy rozdziel-czości, to ResolutionWidget. Drugi widget tego typu, w którym wybiera-my wartość odświeżania, nosi nazwę RefreshWidget.

Jak już wcześniej podałem, nasz program napiszemy na dwa sposoby. W pierwszym zastosujemy dodatkowy plik z opisem interfejsu, a w drugim, za pomocą Glade i opcji Build z menu File, wygenerujemy kod źródłowy, w którym będzie tworzony interfejs. Zastosowanie tego kodu pozwoli nam na utworzenie programu, który nie będzie wymagał dodatkowych plików. Jak się okaże, między tymi dwoma tech-nikami, które dostarcza nam program Glade, w finalnym kodzie aplikacji róż-nice będą tylko kosmetyczne.

Odczyt podstawowych informacjiPomijając na razie sposób, w jaki napi-szemy program, istotne są dla nas informacje o dostępnych rozdzielczo-ściach. Ich spis uzyskujemy tylko raz w naszym programie, korzystając z API systemu X Window. Z tego powodu na początku należy dołączyć odpowied-nie pliki nagłówkowe:

Rysunek 1. Schemat przepływu najważniejszych zdarzeń w naszym programie

Listing 1. Pętla wpisująca dostępne rozdzielczości do listy wyboru widgetu

ResolutionWidgetint i;

gchar tmp_buf[128];

...

for (i = 0; i < nsize; i++) {

g_snprintf(tmp_buf, 128, "%5d x %-5d", sizes[i].width, sizes[i].height );

gtk_combo_box_append_text(GTK_COMBO_BOX(ResolutionWidget), &tmp_buf[0]);

}

Page 76: Linux+_02_2005

72

dla programistów

luty 2005

#include <X11/Xproto.h>

#include <X11/Xlib.h>

#include <X11/extensions/Xrandr.h>

#include <X11/extensions/Xrender.h>

Najważniejszy jest dla nas przedostat-ni plik, bo w nim znajdują się funkcje związane z rozszerzeniem RandR. Uzy-skane informacje należy gdzieś umie-ścić, więc zdefiniujemy kilka zmien-nych. Pierwsza z nich reprezentuje aktualną konfigurację:

XRRScreenConfiguration *screen_config;

Następna to w rzeczywistości tabli-ca, w której zostaną umieszczone informacje o dostępnych rozdzielczo-ściach:

XRRScreenSize *sizes;

Proces odczytu spisu rozdzielczości roz-poczynamy od uzyskania uchwytu:

screen_config = XRRGetScreenInfo

(GDK_DISPLAY(), GDK_ROOT_WINDOW());

Jak widać, wykorzystujemy predefi-niowane funkcje z podsystemu GDK,reprezentujące okno główne: GDK_ROOT_WINDOW, oraz urządzenie GDK_DISPLAY, z którego korzysta system GTK+.

W kolejnym kroku pobieramy indeks aktualnie stosowanej rozdzielczości ekranu:

current_size = XRRConfigCurrent

Configuration (screen_config,

&current_rotation);

Możliwości RandR nie ograniczają się wyłącznie do zmiany rozdzielczości ekranu. Obraz możemy obracać o 90 stopni, więc w powyższej linii kodu należy podać adres do zmiennej, w której zostanie umieszczona infor-macja o obrocie ekranu.

Samą tablicę zawierającą dostę-pne rozdzielczości ekranu odczytu-jemy za pomocą funkcji XRRConfig-Sizes:

sizes = XRRConfigSizes § (screen_config, &nsize);

Ważną rolę pełni zmienna nsize. Jest w niej umieszczana liczba dostęp-nych rozdzielczości ekranu. Chociaż nasz program służy tylko do zmiany rozdzielczości, to możemy również odczytać dostępne sposoby obraca-nia ekranu:

rotations = XRRConfigRotations § (screen_config, &current_rotation);

Przedstawiony powyżej kod zapewnia nam spis dostępnych rozdzielczości. W naszym programie czynność tę wykonuje funkcja get_basic_informa-tion.

W tym momencie musimy prze-nieść uzyskane informacje do widgetu o nazwie ResolutionWidget. W tym celu przepisujemy zawartość tablicy sizes. Omawiany proces może wydawać się skomplikowany, ale sprowadza się do jednej krótkiej pętli typu for, której kod znajduje się na Listingu 1.

Podczas przepisywania ważna jest całkowita ilość elementów tabli-cy sizes. Wielkość tę poznaliśmy pod-czas wywołania funkcji XRRConfigSizes i została zapisana w zmiennej nsize. W samej pętli wykonujemy tylko dwie czynności. Instrukcją g_snprintf two-rzymy odpowiednio sformatowany ciąg znaków, np. 1024 x 768, a następnie wywołaniem gtk_combo_box_append_

text dodajemy ten ciąg do listy wyboru widgetu ResolutionWidget.

Jak widać, czynności, które trzeba wykonać, aby uzyskać listę dostęp-nych rozdzielczości ekranu, są try-wialne. W kodzie naszej aplikacji tym zadaniem zajmuje się funkcja o nazwie fill_resolution_list. Wykonuje ona jeszcze jedną ważną czynność, a mia-nowicie wpisuje do etykiety aktualne parametry obrazu. Kod, który wykonu-je te czynności, jest następujący:

g_snprintf(tmp_buf, 128, § "%5d x %-5d@%3d Hz", sizes § [current_size].width, § sizes[current_size].height, § XRRConfigCurrentRate(screen_config)); §gtk_label_set_text § (GTK_LABEL(ActualResLabel), tmp_buf);

Wykorzystaliśmy zmienną current

_size. Jej wartością jest indeks, pod którym w tablicy sizes znajduje się opis aktualnie stosowanej rozdzielczo-ści. Wartość odświeżania odczytujemy za pomocą funkcji XRRConfigCurrent-Rate, która w wyniku daje dokładną wartość odświeżania.

Wybieramy rozdzielczość oraz odświeżaniePodczas projektowania interfejsu w wid-getach GtkComboBox trzeba koniecz-nie zaimplementować obsługę syg-nału changed, gdyż po wyborze roz-

Listing 2. Obsługa sygnału changed dla widgetu wyboru rozdzielczości

void on_ResolutionWidget_changed( GtkWidget *widget, gpointer data )

{

int i=0;

gchar tmp_buf[128];

i=gtk_combo_box_get_active(GTK_COMBO_BOX(widget));

selected_resolution=i;

for(i = 0; i < old_nrate;i++)

gtk_combo_box_remove_text(GTK_COMBO_BOX(RefreshWidget), 0);

rates = XRRConfigRates (screen_config, selected_resolution, &nrate);

old_nrate=nrate;

for (i = 0; i < nrate; i++)

{

g_snprintf(tmp_buf, 128, "%3d", rates[i] );

gtk_combo_box_append_text(GTK_COMBO_BOX(RefreshWidget), &tmp_buf[0]);

}

sel_res=TRUE;

}

Page 77: Linux+_02_2005

73

dla programistówrandr i gnome 2.8

www.lpmagazine.org

dzielczości ekranu bądź wartościodświeżania z rozwijanej listy, ten wybór musi zostać w jakiś sposób zapamiętany.

W przypadku komponentu Refresh-Widget sprawa jest bardzo prosta, gdyż wystarczy tylko zapamiętać indeks ele-mentu, co pozwala na odczyt wartości z odpowiedniej tablicy, podobnie jak w przypadku dostępnych rozdzielczości. Dodatkowo, ustawiamy specjalną flagę, informującą o tym, że wybór odświe-żania został już dokonany. Kod funk-cji, która reaguje na sygnał o wskazaniu wartości dla widgetu wyboru wartości odświeżania, jest bardzo krótki:

void on_RefreshWidget_changed § ( GtkWidget *widget, gpointer data ) {

selected_refresh= § gtk_combo_box_get_active § (GTK_COMBO_BOX(widget));

selected_rate=rates[selected_refresh];

sel_ref=TRUE;

}

W przypadku rozdzielczości ekranu, kod jest już znacznie bardziej skom-plikowany. Listing 2 zawiera pełną treść funkcji, która jest wywoływana w momencie pojawienia się zdarzenia changed.

Pierwsze dwie linie po deklaracji zmiennych są konieczne, abyśmy pozna-li, jaką rozdzielczość wskazał użytkow-nik. Zmienna sizes, która zawiera roz-

dzielczości, jak wiadomo, jest tabli-cą, więc wystarczy poznać indeks roz-dzielczości wskazanej przez użytkow-nika. Możemy tak zrobić, gdyż przeno-sząc dane z tablicy sizes do listy elemen-tów widgetu ResolutionWidget zacho-waliśmy tę samą kolejność oraz warto-ści indeksów.

Zadaniem następnej pętli jest usu-nięcie poprzednio wpisanych warto-ści odświeżania. W tym celu stosujemy gtk_combo_box_remove_text, wywoła-ne dokładnie kilkanaście razy, w zależ-ności do tego, ile było dopuszczalnych wartości odświeżania. Ilość jest prze-chowywana w zmiennej old_nrate. Warto zapytać się, co stanie się, gdy lista dostępnych wartości odświeżania będzie pusta. Funkcja usuwająca ele-ment z listy widgetu powinna zgłosić błąd. Tak się nie stanie, gdyż zmienna old_nrate na początku pracy aplikacji zawiera zero i pętla for nie wykona ani jednej iteracji.

Ostatni fragment wypełnia listę komponentu RefreshWidget. Pierw-szym krokiem jest wywołanie funk-cji XRRConfigRates. W jej wyniku otrzymujemy tablicę z wartościami odświeżania dla wybranej rozdziel-czości, zapisanej w zmiennej selec-

ted_resolution. Ważna jest również ilość dostępnych wartości odświe-żania i tę wielkość zapamiętujemy w zmiennej nrate. Następnie przenosimy ilość dostępnych odświeżań do zmien-

Rysunek 2. Program do zmiany rozdzielczości ekranu

nej old_nrate. Później musimy przenieść w pętli zawartość tablicy rates do komponentu RefreshWidget, w podob-ny sposób, jak w przypadku tablicy sizes. Na koniec wykonujemy jeszcze jedną czynność, a mianowicie ustawia-my flagę sel_res na TRUE. W ten sposób oznaczamy, że użytkownik dokonał wyboru rozdzielczości.

Zmieniamy rozdzielczośćListing 3 zawiera kod odpowiedzialny za zmianę rozdzielczości i odświeżania ekranu. Znajdująca się tam funkcja jest wywoływana w momencie naciśnię-cia przycisku Change resolution. Naj-ważniejszym elementem jest wywoła-niem funkcji:

XRRSetScreenConfigAndRate

Ustala ono rozdzielczość ekranu oraz wartość odświeżania:

status=XRRSetScreenConfigAndRate § (GDK_DISPLAY(), § screen_config, GDK_ROOT_WINDOW(), § selected_resolution, current_rotation,§

selected_rate, CurrentTime);

Trzy pierwsze argumenty wskazują na urządzenie oraz uchwyt reprezentu-jący aktualną konfigurację. Rozdziel-czość ustalamy czwartym argumen-tem, przy czym, jak widać, jest to tylko indeks wskazujący na element tablicy sizes. Następna zmienna wskazuje na obrót ekranu. W naszym programie nie zajmujemy się tym problemem, więc tylko kopiujemy tę wartość. W następnym parametrze określamy wartość odświeżania. Nie jest to tym razem indeks odnoszący się do tabli-cy, ale rzeczywista wartość odświeża-nia. W ostatnim parametrze podajemy aktualny czas.

Wywołanie funkcji XRRSetScreen-

ConfigAndRate to najważniejsza czyn-ność, którą musimy wykonać. W kodzie z Listingu 3, przed zmianą rozdzielczo-ści, upewniamy się jednak, sprawdza-jąc wartość flag sel_res oraz sel_ref, czy użytkownik istotnie wybrał roz-dzielczość i odświeżanie.

Po ustaleniu rozdzielczości wywo-łujemy XRRConfigCurrentConfigura-

tion, aby pobrać parametry obrazu i aktualizujemy etykietę, w której te informacje są prezentowane. Następ-

Page 78: Linux+_02_2005

74

dla programistów

luty 2005

nie wpisujemy do naszych flag war-tości FALSE.

Wersja programu z plikiem gladeOpisane dotychczas funkcje są wystar-czające, aby zmieniać rozdzielczość oraz odświeżanie ekranu, ale musimy zdecy-dować, w jaki sposób będziemy budo-wać interfejs.

Najłatwiejszy sposób to stworzenie interfejsu za pomocą programu Glade i zapisanie go do pliku o rozszerze-niu glade. Taki plik wczytujemy do naszego programu wykorzystując bibliotekę libglade. Zanim cokolwiek zrobimy, należy zainicjować GTK+. Ta operacja wymaga wyłącznie jednej linii:

gtk_init(&argc, &argv);

Wczytanie pliku glade to również tylko jedna linia kodu:

xml = glade_xml_new("main_app_win.glade",§

NULL, NULL);

Następną czynnością, którą dość często trzeba wykonać w programach GTK/GNOME, korzystających z plików glade, jest uzyskanie referencji do potrzeb-nych widgetów. Dokonujemy tego funkcją glade_xml_get_widget. Przykła-dowo, dla okna głównego wygląda to następująco:

MainWin=glade_xml_get_widget(xml, § "MainWin");

Podłączenie sygnałów następuje w spo-sób automatyczny – wystarczy wywo-łać funkcję:

glade_xml_signal_autoconnect

Tego typu kod, jak zwykle, umiesz-czamy w funkcji main. Przed ostatecz-nym uruchomieniem programu wyko-nujemy jeszcze jedną ważną czynność, a mianowicie wypełniamy listę widge-tu ResolutionWidget w sposób, który opisałem we wcześniejszej części tego artykułu. Po tej czynności możemy już uruchomić program wywołując funkcję gtk_main.

Wersja samodzielnaWersja z plikiem glade ma tę zaletę, że istotnie łatwo jest napisać kod, który wczyta plik z opisem inter-fejsu. Ponadto, jednym poleceniem łączymy zdarzenia z funkcjami. Wadą tego rozwiązania jest to, że plik glade musi być dystrybuowanyrazem z aplikacją. O ile w przy-padku dużego programu nie stanowito większego problemu, to w na-szej aplikacji nie to najlepsze roz-wiązanie. Najlepiej, aby nasz programnie wymagał żadnych dodatkowychplików, poza środowiskiem X Window oraz GNOME.

Wykluczenie pliku glade będzie wymagało samodzielnego budowania interfejsu. I w tym przypadku pomoc-ny okazuje się program Glade. Jak już wcześniej napisałem, po wybraniu opcji Build z menu File, samodzielnie utwo-rzy on szkielet aplikacji na podstawie utworzonego przez nas okna. Powsta-nie cała struktura katalogowa, w której najbardziej interesują nas pliki z kata-logu src.

Do naszego programu potrzebuje-my pięć plików. Dwa pierwsze to inter-face.c oraz interface.h. Zawierają one implementację funkcji:

create_MainWin

która tworzy zaprojektowane przez nas okno. Potrzebne będą również pliki support.c oraz support.h, w których znajdziemy kilka pomocniczych funk-cji i makr. Wykorzystamy także plik o nazwie callbacks.h, w którym znajdują się nagłówki funkcji reagujących na zda-rzeniach. Implementację tych funkcji już zawiera nasz program. Plik callbacks.h dołączamy do naszego programu, gdyż plik interface.c wymaga tego pliku, a przecież nie będziemy modyfikować bez wyraźnego powodu plików genero-wanych automatycznie.

Przy tej okazji trzeba ponowniewspomnieć o konstruktorach kom-ponentów GtkComboBox. Glade może wygenerować plik interface.c, w któ-rym będzie stosowany konstruktor gtk_combo_box_new, zamiast potrzeb-nego nam gtk_combo_box_new_text. Należy więc sprawdzić, jak wygląda plik interface.c pod kątem tych kon-kretnych funkcji.

Kod, który trzeba dodać do nasze-go programu, nie jest zbyt wielki. Na początek możemy usunąć kilka lini-jek związanych z obsługą libglade. Nie-potrzebne są pliki nagłówkowe oraz deklaracja obiektu xml. Po wywołaniu gtk_init tworzymy okno naszej aplika-cji w następujący sposób:

MainWin=create_MainWin();

Następnie, podobnie jak to było w poprzedniej wersji programu, uzy-skujemy odniesienia do widgetów. Korzystamy z gotowej funkcji lookup_widget, która znajduje się w pliku sup-port.c. Referencje do trzech pozostałych

Rysunek 3. Projektowanie interfejsu programu w Glade

Page 79: Linux+_02_2005

75

dla programistówrandr i gnome 2.8

www.lpmagazine.org

potrzebnych widgetów uzyskujemy w następujący sposób:

ResolutionWidget=lookup_widget § (MainWin, "ResolutionWidget");

RefreshWidget=lookup_widget § (MainWin, "RefreshWidget");

ActualResLabel=lookup_widget § (MainWin, "ActualResLabel");

Funkcja lookup_widget wymaga dwóch argumentów. Pierwszy to okno (inaczej mówiąc, rodzic), które zawiera pozo-stałe widgety, natomiast w drugim, podobnie jak poprzednio, podajemy symboliczną nazwę widgetów. Kolej-nym krokiem, podobnie jak w wersji z plikiem glade, jest wywołanie funk-cji fill_resolution_list. W przeciwień-

stwie do poprzedniej wersji, koniecznie trzeba zastosować funkcje pokazującą widgety w następującej postaci:

gtk_show_widget_all(MainWin);

gdyż okno nie zostanie wyświetlone samodzielnie. I są to jedyne zmiany, które musimy wykonać. Uzyskany program nie potrzebuje już do poprawnego działania dodatkowych plików.

PodsumowanieNa zakończenie, można powiedzieć, że małym nakładem pracy udało się nam uzyskać bardzo przydatny program do zmiany rozdzielczości. Co więcej, nasz program oferuje dostęp do większej gamy rozdzielczości ekranu niż podobne

oprogramowanie dostępne w GNOME. Zachęcam do wprowadzania własnych poprawek do programu. Jak widać, aby napisać przydatny program, czasem wystarczy dobry pomysł oraz jeden wolny wieczór.

W Internecie:• Strona przedstawiająca

rozszerzenie RandR:http://keithp.com/~keithp/talks/randr/

• Strona domowa biblioteki GTK+:http://www.gtk.org/

• Implementacja systemu X11, zdobywająca coraz większą popularność:

http://www.x.org/

Rozszerzenie RandRJeśli mamy wątpliwości, czy w naszej wersji środowiska X Window jest dostępne rozszerzenie RandR, to zanim zaczniemy pisać nasz program, wystarczy spróbować wydać polece-nie xrandr z poziomu konsoli. Jeśli polecenie jest dostępne i środowisko X Window wspiera rozszerzenie RandR,to zobaczymy listę dostępnych roz-dzielczości. Większość nowych dystry-bucji Linuksa, takich jak Aurox, Man-drakelinux czy Fedora Core, stosu-je nowe, czy wręcz najnowsze wersje implementacji (w tym coraz popular-niejszą X.org) środowiska X Window, więc rozszerzenie RandR jest zazwy-czaj dostępne.

Ponieważ rozszerzenie RandR jest mimo wszystko stosowane dopiero od niedawna, więc warto do naszego pro-gramu wprowadzić funkcję sprawdza-jącą, czy jest ono dostępne. Funkcja tego rodzaju mogłaby przedstawiać się w następujący sposób:

int check_randr(int *major_version, § *minor_version) {

int event_basep, error_basep, major_version, minor_version;

if (XRRQueryExtension (GDK_DIS § PLAY(), &event_basep, &error_ § basep)) {

XRRQueryVersion (GDK_DISPLAY(), § *major_version, *minor_version);

return TRUE;

}

return FALSE;

}

Listing 3. Zmiana rozdzielczości oraz odświeżania

void on_ChangeResBtn_clicked( GtkWidget *widget, gpointer data )

{

gchar tmp_buf[128];

if(sel_res==FALSE && sel_ref==FALSE) {

GtkWidget *dialog = gtk_message_dialog_new (GTK_WINDOW(MainWin),

GTK_DIALOG_MODAL,

GTK_MESSAGE_ERROR,

GTK_BUTTONS_CLOSE,

"Please choose screen resolution and refresh rate!",NULL);

gtk_dialog_run (GTK_DIALOG (dialog));

gtk_widget_destroy (dialog);

return ;

}

Status status = RRSetConfigFailed;

status=XRRSetScreenConfigAndRate (GDK_DISPLAY(),

screen_config, GDK_ROOT_WINDOW(),

selected_resolution, current_rotation,

selected_rate, CurrentTime);

current_size = XRRConfigCurrentConfiguration (screen_config, &current_rotation);

g_snprintf(tmp_buf, 128, "%5d x %-5d@%3d Hz",

sizes[current_size].width,

sizes[current_size].height , selected_rate);

gtk_label_set_text(GTK_LABEL(ActualResLabel), tmp_buf);

sel_res=FALSE;

sel_ref=FALSE;

get_basic_information();

}

Page 80: Linux+_02_2005

testy testyibm thinkpad t41

76 luty 2005

IBM ThinkPad T41Michał Niwicki

Pierwszą rzeczą, którą postano-wiłem zrobić, gdy do redak-cji przyniesiono nowiutkie-go ThinkPada T41, było zain-

stalowanie na nim systemu Linux. Lekki niesmak poczułem widząc informację, naklejoną na obudowie komputera, że sprzęt najlepiej współpracuje z syste-mem operacyjnym Windows XP. Mając na uwadze liczne listy przychodzące do redakcji, w których czytamy o proble-mach z instalacją Linuksa na laptopach, poczułem się zaniepokojony.

AuroxNa pierwszy ogień poszła nowa wersja Auroksa (10.1). Po włożeniu do napędu DVD instalacyjnych płyt dystrybucji, bez żadnych problemów uruchomił się instalator Anaconda. Kłopotu nie spra-wiło również wykrycie poprawnej kon-figuracji sprzętowej. System zainstalo-wał się szybko, sprawnie i bez wyświe-tlających się komunikatów o błędach.

Novell Linux Desktop 9Podobnie jak w przypadku Auroksa,postąpiłem także z nową dystrybu-cją opartą na SUSE. Mimo, że instala-cja przebiegła pomyślnie, pojawiły się lekkie problemy z konfiguracją ekranu. Za pomocą programu konfiguracyjnego szybko ustawiłem prawidłowe parame-try wyświetlania obrazu. Moją uwagę zwrócił również fakt, iż w przeciwień-stwie do Auroksa, nie działał tzw. dwu-klik przy korzystania z touchpada (za-znaczam, że to wina dystrybucji, a nie sprzętu).

Rysunek 1. IBM ThinkPad T41

Niestety, wadą opisywanego sprzętu jest jego stosunkowo wysoka cena. Porów-nując inne laptopy tej samej klasy (Dell Lat-titude, HP Compaq), IBM Thinkpad T41 jest urządzeniem drogim (ok. 9 tyś. zł). Warto zatem zastanowić się nad wyborem prze-nośnego komputera mniej znanej marki, nieodbiegającego parametrami od T41, a lepiej wypadającego cenowo.

PodsumowanieKrótko mówiąc, komputer prawie na piątkę. Tak jak to w przypadku produk-tów IBM-a bywa, otrzymujemy sprzęt naj-wyższej jakości.

Zalety• Solidna konstrukcja• Bezproblemowa współpraca

z Linuksem• Podświetlana klawiatura• Cicha praca

Wady• Brak polskiej instrukcji obsługi• Wysoka cena

Specyfikacja techniczna:● Procesor: Intel Pentium M 1,6 GHz● Pamięć RAM: 512 MB● Wyświetlacz: 14,1'' TFT● Napęd: 16x-10x-24x-8x max

CD-RW/DVD● Karta graficzna:

ATI Mobility Radeon 9000 32MB

Ocena

Dystrybucje typu LivePonieważ prawdziwym sprawdzianem dla komputera są systemy uruchamia-ne bezpośrednio z płyty CD/DVD, uru-chomiłem na ThinkPadzie kilka z nich. Wybrałem FreeSBIE, bazujące na Free-BSD, małą dystrybucję Damn Small Linux oraz Games Knoppix 3.7. Mimo moich wątpliwości, wszystkie uruchomi-ły się szybko i bez problemów.

Wady i zalety Nie będę skupiał się na gadżetach i wyso-kich parametrach testowanego sprzętu, ale wybiorę raczej kilka elementów, na które warto zwrócić uwagę decydując się na zakup ThinkPada T41.

Laptop jest urządzeniem lekkim o obudowie odpornej na wstrząsy i ude-rzenia. W oczy rzucają się solidne stalowe zawiasy scalające panel ekranu z kompu-terem. Tak jak we wszystkich ThinkPa-dach, urządzeniem zastępującym tra-dycyjną myszkę jest usytuowany na środku klawiatury czerwony trackpoint. Dodatkowo, poniżej znajduje sie touch-pad, który w przypadku korzystania z tego pierwszego urządzenia wskazu-jącego, trochę przeszkadza. Zauważal-na jest dobra jakość dźwięku płynące-go z wbudowanych głośników. Impo-nuje cicha praca komputera – wentylator włącza się jedynie w razie potrzeby i nie przeszkadza w pracy.

Page 81: Linux+_02_2005

testy testynovell linux desktop

77www.lpmagazine.org

Novell Linux Desktop 9Michał Niwicki

Na początku listopada 2004 roku firma Novell poinformo-wała o wprowadzeniu linukso-wego systemu operacyjnego

przeznaczonego dla przedsiębiorstw. Novell Linux Desktop 9 jest oparty na dys-trybucji SUSE. Poza standardowymi pa-kietami wchodzącymi w jej skład, zawieraszereg aplikacji przeznaczonych do pracybiurowej. Warto wymienić chociażby pa-kiet OpenOffice.org, przeglądarkę inter-netową Mozilla Firefox, klient poczty Novell Evolution oraz Adobe Acrobat Reader – pro-gram umożliwiający wyświetlanie plików pdf. Domyślnie są instalowane sterowniki dla kart Nvidii oraz wtyczki, dzięki którym można odtwarzać prezentacje przygotowa-nych we Flashu oraz uruchamiać aplikacje napisane w Javie.

Novell Linux Desktop cechuje prostota instalacji oraz łatwość użytkowania, zatem znajdzie on najprawdopodobniej zastoso-wanie w charakterze uniwersalnej platfor-my dla komputerów biurowych.

Instalacja systemuInstalacja Novell Linux Desktop 9 jest bardzo prosta. Sprowadza się jedynie do uruchomienia programu instalacyjnego z płyty DVD oraz do zatwierdzenia kilku opcji zaproponowanych przez producentów systemu. Dostępne są oczywiście zaawan-sowane parametry instalacji, ale domyślnie użytkownik nie jest o nie pytany. Instalator sam potrafi wykryć i skonfigurować zainsta-lowany sprzęt.

Novell, czyli SUSE LINUXCzym różni się Novell Linux Desktop od typowej dystrybucji SUSE LINUX? Pierwszą rzeczą, która rzuca się w oczy, jest przyja-zny dla oka instalator oraz logo firmy Novell pojawiające się podczas uruchamiania większości popularnych programów. Zmo-dyfikowano pakiet OpenOffice.org oraz dodano mechanizmy integracji z ZENworks – oprogramowaniem ułatwiającym central-ne zarządzanie aplikacjami przedsiębior-stwa. Poruszanie się po systemie przebiega identycznie jak w SUSE.

Wady i zaletySystem wydaje się być dopracowany podkażdym względem, ale można znaleźć w nim również wady. Pomimo, że dystry-bucja obsługuje język polski (już na pozio-mie instalacji), to istnieją aplikacje, któresą dostępne wyłącznie po angielsku. Takasytuacja ma miejsce w Centrum Pomocy, które jest umieszczone na pasku zadań. Zastanawia również wykorzystanie stosun-kowo starego jądra w wersji 2.6.5 – być może brano pod uwagę stabilność systemu.

Mocnych punktów dystrybucji jestzdecydowanie więcej. Na uznanie na pewnozasługuje możliwość pełnej gotowości sys-temu do pracy bezpośrednio po instalacji– NLD zawiera podstawowe, już skonfigu-rowane, narzędzia biurowe, udostępniającewszystkie funkcje, do których są przy-zwyczajeni użytkownicy. W oko wpada odziedziczona po SUSE przyjazna grafi-ka, zwłaszcza w środowisku KDE. System nie ma żadnych problemów z wykry-waniem urządzeń dołączanych przez USB.

System jest dobry, ale nie ma nic zadarmo – sugerowana cena produktu wynosi50 euro. Novell zapewnia także rocznydostęp do uaktualnień i poprawek.

Novell kontratakujeKilka lat temu skończyły się czasy domi-nacji Novella na rynku sieciowych syste-mów operacyjnych. Od tego czasu pro-dukty tej firmy, uważane za niezastąpio-ne, powoli zaczęły ustępować wszędobyl-skiemu Microsoftowi. Obecnie Novell nad-rabia straty licząc na zdobycie przynajmniej części klientów korzystających na co dzień z platformy Windows. Ma nadzieję, że pierwsze wdrożenia dystrybucji będą miały miejsce w instytucjach rządowych oraz pla-cówkach edukacyjnych.

Czy warto?Dlaczego warto zwrócić uwagę na produkt Novella? Wśród systemów, które łatwo się instaluje, NLD nie tylko nie ustępuje wiodą-cej konkurencji (np. Mandrakelinux, Fedora Core, Windows), ale w niektórych aspek-tach wypada od niej zdecydowanie lepiej

(kontakt z użytkownikiem ograniczony do niezbędnego minimum).

Novell Linux Desktop opiera się na niemieckim SUSE, uznawanym za dys-trybucję stabilną i w miarę bezpieczną. Mimo, że podejście do polityki bezpie-czeństwa nie jest aż tak rygorystyczne, jak w przypadku Debiana, to twórcom udało się osiągnąć połączenie stabilności syste-mu z łatwością jego użytkowania.

Warto zastanowić się, czy proponowa-na przez Novella cena rzeczywiście jest aż tak wysoka, na jaką wygląda.

PodsumowanieNovell Linux Desktop to dystrybucja Linuk-sa bardzo dobrze przystosowana do zasto-sowań biurowych. Niewątpliwie zwróci uwagę klientów korporacyjnych szukają-cych tańszej od proponowanej przez Micro-soft platformy systemowej.

Rysunek 1. Novell Linux Desktop podczas pracy

Ocena

Zalety• Bardzo prosta instalacja• Łatwa i intuicyjna obsługa• Domyślnie zainstalowane wsparcie

dla aplikacji napisanych w Javie i we Flashu

Wady• Nie przetłumaczone na język polski

niektóre programy i elementy aplikacji

Page 82: Linux+_02_2005

78

Firmy oferujące narzędzia deweloperskie dla Linuksa

Katalog firm Linux+K

atal

og fi

rm L

inux

+: www.lpmagazine.org/pl/katalog/

Lp. Nazwa firmy Strona domowa firmy:

1 Borland www.borland.pl

2 Trolltech Inc. www.trolltech.com

3 Software AG www.softwareag.com

4 SlickEdit Inc. www.slickedit.com

5 Siliconpenguin.com www.siliconpenguin.com

6 Auto ID Polska Sp. z o.o. www.autoid.pl

7 The SCO Group www.sco.com

8 Agency9 www.agency9.se

9 CA3de www.ca3d-engine.de

10 SimTech Simulation and Technology

www.simtech.fr

11 Clinic New Media www.clinicdesign.com.au

12 Saab Training Systems AB

www.gizmosdk.com

13 Hue AS www.hue.no

14 SGI www.sgi.com

15 Novell www.novell.pl

16 IBM www.ibm.com

17 Sybase www.sybase.pl

18 Fujitsu Systems Europe Limited

www.fujitsu.com

19 CodeBase www.sequiter.com

20 SAP www.sap.pl

21 BitRock SL www.bitrock.com

22 Bungisoft www.bungisoft.com

23 Studio501 www.studio501.com

24 Zend Technologies Ltd www.zend.com

25 Agilis Software www.agilis-sw.com

26 Optimal Solution www.optsol.at

27 The Portland Group STMicroelectronics

www.pgroup.com

28 Devguide.net www.devguide.net

29 Polcentrix Polska www.polcentrix.com.pl

30 ActiveState www.activestate.com

31 Contium S.A. www.contium.pl

32 Javart Sp. zo.o. www.javart.com.pl

33 Komtech Sp. zo.o. www.komtech.com.pl

34 Sun Microsystems Poland pl.sun.com

35 Progress Software www.progress.com

36 NuSphere Corporation www.nusphere.com

37 DevGuide.net www.devguide.net

38 Siemens www.siemens.com

39 Motorola Polska Sp. z o.o. www.motorola.com

40 SoftComplete Development

www.softcomplete.com

Lp. Nazwa firmy Strona domowa firmy:

41 Bitpipe, Inc. www.bitpipe.com

42 Raisonance S.A. www.raisonance.com

43 Navicat www.navicat.com

44 Simplewire, Inc. www.simplewire.com

45 Integrated Computer Solutions

www.ics.com

46 SYSI GmbH Software Systeme

www.sysi-software.de

47 CPT Crosswords www.geocities.com/cptshareware/

48 Visual-paradigm.com www.visual-paradigm.com

49 AquaFold, Inc www.aquafold.com

50 Metrowerks www.metrowerks.com

51 Sav technology www.savtechno.com

52 Intel www.intel.com

53 GarageGames, Inc. www.garagegames.com

54 HyperPanel Inc. www.pcbootdirect.com

55 Bitrix www.bitrixsoft.com

56 Stichting Blender Foundation

www.blender3d.org

57 New Planet Software www.newplanetsoftware.com

58 Omnicore Software www.omnicore.com

59 Elixir Technology Pte Ltd www.elixirtech.com

60 Intland Software www.intland.com

61 Mix Software, Inc. www.mixsoftware.com

62 MetaCard Corporation. www.metacard.com

63 Aonix www.aonix.com

64 Imperial Software Technology

www.ist.co.uk

65 BBDSoft www.bbdsoft.com

66 ScenTech AG www.scentech.ch

67 BitMover, Inc. www.bitkeeper.com

68 Abraxas Software www.abxsoft.com

69 LynuxWorks, Inc. www.lynuxworks.com

70 Etnus, LLC www.etnus.com

71 UniPress Software www.unipress.com

72 Excel Software www.excelsoftware.com

73 Omnicore Software www.omnicore.com

74 Code Forge www.codeforge.com

75 Vital, Inc www.vital.com

76 JetBrains www.jetbrains.com

77 BulletProof Corporation www.bulletproof.com

78 Data Representations, Inc. www.datarepresentations.com

79 The Benaroya Company www.sedit.com

80 Epic Games www.epicgames.com/

Katalog firm Linux+ ma za zadanie prezentować co miesiąc te firmy, które tworzą rozwiązania dla Linuksa. W tym miesiącuprezentujemy firmy tworzące narzędzie deweloperskie.

Tematy kolejnych katalogów są następujące: aplikacje do pracy grupowej (marzec), aplikacje do zarządzania treścią WWW (kwiecień) oraz aplikacje biurowe (maj).

Page 83: Linux+_02_2005

79

Auto ID Polska Sp. z o.o. – narzędzia programistyczne OCR/ICR

FineReader to marka od wielu lat koja-rzona z rozpoznawaniem pisma. Obecnie jest to już cała rodzina produktów, wśród któ-rych znajdują się także narzędzia deweloper-skie. Po sukcesach odniesionych na platfor-mie Windows producent postanowił udostęp-nić swoją technologię programistom pracują-cym na platformie Linux.

ABBYY FineReader Engine 6.0 for Linuxjest narzędziem programistycznym umożli-wiającym wzbogacenie aplikacji pracujących na platformie Linux o funkcje rozpoznawania pisma drukowanego - OCR. Program korzysta z osiągnięć i doświadczeń, jakie firma ABBYY zdobyła doskonaląc przez lata program Fine-Reader dla środowiska Windows. Technologie OCR zostały przeniesione na platformę Linuxz uwzględnieniem specyfiki i unikalnych cha-rakterystyk tego systemu.

Pakiet programistyczny składa się z biblio-tek .lib wraz z dokumentacją techniczną oraz przykładowymi fragmentami kodu. Dostęp do funkcji OCR możliwy jest przez interfejs API, a większość funkcji jest dostępna także z wier-sza poleceń. API pakietu programistyczne-go jest identyczne dla środowisk Linux oraz Windows. Takie rozwiązanie znacznie ułatwia pracę programistom tworzącym aplikacje na obydwu platformach.

ABBYY FineReader Engine 6.0 for Linux oferuje najnowsze technologie analizy obrazu dające wysoką skuteczność rozpoznawania pisma wraz z odtworzeniem kroju i rozmia-ru czcionki, pochylenia lub podkreślenia liter. Umożliwia również pełne odtworzenie układu strony z uwzględnieniem kolumn, tabel (także tych z pionowym tekstem), elementów graficz-nych otoczonych tekstem. Program rozpoznaje pismo drukowane w 177 językach, dla 34 języ-ków dostępne są słowniki wraz z wyszukiwa-niem morfologicznym. W pełni wspierany jest język polski (rozpoznawanie i słowniki). Roz-poznawane są czcionki typograficzne, wydrukiz drukarek igłowych (draft), teksty sporządzone na maszynie do pisania, a także czcionki spe-cjalne OCR-A, OCR-B i MICR. Rozpoznane dokumenty mogą zostać zapisane jako niesfor-matowany tekst lub z pełnym odtworzeniem układu strony w plikach RTF oraz PDF.

ABBYY FineReader Engine 6.0 for Linux może zostać zastosowany zarówno do wypo-

sażenia istniejących aplikacji w funkcje OCR, jak i do tworzenia od podstaw nowych syste-mów. Mogą to być systemy do wprowadzania danych z papierowych dokumentów bezpo-średnio do baz, systemy obiegu dokumentów, elektroniczne archiwa dokumentów, systemy do edycji dokumentów otrzymywanych faksem.

ABBYY FineReader Engine 7.1 zawiera zestaw funkcji wykorzystywanych do elektro-nicznego przetwarzania dokumentów. Funk-cje te obsługują każdy etap procesu – nie są to wyłącznie algorytmy służące do „czyta-nia” pisma i kodów kreskowych. Rozpoznawa-ne jest pismo drukowane 177 językach, w tym 34 z pełnym wsparciem słownikowym, a pismo ręczne blokowe jest rozpoznawane w 15 języ-kach. W pełni obsługiwany jest język polski. Narzędzie posiada funkcje analizy formularzy o stałym układzie graficznym oraz dokumen-tów o powtarzającej się treści i zmieniającym się układzie (np. faktury).

Korzystając z silnika można sterować skanowaniem dokumentów z wykorzysta-niem interfejsu TWAIN. Możliwe jest otwiera-nie plików graficznych zawierających obrazy dokumentów (m.in. TIFF, JPEG, PDF). Funkcje wstępnej obróbki obrazów pozwalają na popra-wienie jakości skanów tak, by osiągnąć naj-wyższą skuteczność rozpoznawania znaków. Rozpoznawanie dokumentów może odbywać się w trybie automatycznej analizy zawartości i układu strony. Programista ma również moż-liwość wskazania stref na dokumencie, które mają zostać rozpoznane oraz zdefiniowa-nia sposobu, w jaki zostaną one rozpoznane (język, zestaw znaków, odrębny słownik). Silnik podaje nie tylko wyniki rozpoznania, ale także wskazuje znaki rozpoznane z mniejszą pew-nością, informuje o jakości rozpoznania każde-go znaku, podaje położenie znaków na stronie – te informacje pozwalają na przeprowadze-nie korekty znaków rozpoznanych niepewnie. Wyniki rozpoznania mogą zostać zapisane do plików w najpopularniejszych formatach (TXT, RTF, PDF, HTM, XLS, DBF, XML).

Jeżeli na dokumentach rozpoznawa-ne mają być wyłącznie kody kreskowe i pola wyboru to można wykorzystać uproszczoną wersję pakietu: ABBYY FineReader Engine 7.1 Barcode/OMR. Narzędzie to nie zawiera funkcji rozpoznawania tekstu i dzięki temu ma znacznie atrakcyjniejszą cenę. Takie rozwiąza-nie stosowane jest na przykład w elektronicz-nych archiwach do szybkiego indeksowania wprowadzanych dokumentów.

FineReader Engine 7.1 to zestaw biblio-tek dll uzupełnionych dokumentacją technicz-ną oraz przykładowymi fragmentami kodu. Programowanie może odbywać się w środo-wiskach wspierających obiekty COM, na przy-kład C/C++, Visual Basic. Silnik nie posiada żadnego interfejsu użytkownika.

Ważną cechą silnika jest elastyczne licen-cjonowanie. Możliwość niemal dowolnego kon-figurowania licencji pozwala zmniejszyć koszty ich zakupu – deweloper płaci tylko za funkcjo-nalność, której potrzebuje jego klient.

ABBYY FineReader 7.0 Scripting Editionjest pakietem przygotowanym z myślą o produ-centach oprogramowania, którzy chcą szybko i łatwo wyposażyć swoje aplikacje w funkcje rozpoznawania pisma drukowanego. Przygo-towanie skryptów nie jest czasochłonne, więc wykorzystanie tego pakietu często jest najbar-dziej ekonomicznym sposobem wzbogacenia autorskiej aplikacji o funkcje OCR. Korzystając z interfejsu API można między innymi: ● automatyzować pracę programu dla

powtarzających się zadań, ● wywoływać funkcje FineReader 7.0

bezpośrednio z zewnętrznej aplikacji, ● dowolnie modyfikować interfejs

użytkownika, ● łączyć zewnętrzne informacje

z konkretnymi obiektami w programie ● uruchamiać program FineReader w tle. W wersji 7.0 po raz pierwszy pojawiły się funkcje wspierające pracę w sieci. Dotyczy to automatycznego otwierania dokumentów z folderów sieciowych oraz z serwerów ftp. Najistotniejsza innowacja to obsługa licen-cji w sieci lokalnej. Możliwe jest korzystanie z tradycyjnych licencji przypisanych na stałe do stanowiska oraz z sieciowych licencji jed-noczesnych (concurrent license).

Wszystkie narzędzia są udostępniane jako bezpłatne wersje testowe zachowujące pełną funkcjonalność przez 60 dni.

Kontakt: Auto ID Polska Sp. z o.o.ul. Romanowicza 230-702 Krakówtel. (12) 292 51 00fax (12) 656 04 43e-mail: [email protected]://www.autoid.pl

Z katalogu firm Linux+ – Narzędzia deweloperskie:

Kat

alog

firm

Lin

ux+:

www.lpmagazine.org/pl/katalog/

Page 84: Linux+_02_2005
Page 85: Linux+_02_2005
Page 86: Linux+_02_2005