You are on page 1of 86

Spis treści

Radość z programowania!

T
Miesięcznik Linux+ (12 numerów w roku) worzenie oprogra- importu dokumentów do OpenOffice.org.
jest wydawany przez
mowania traktu- Warto spróbować programowania samo-
Software-Wydawnictwo Sp. z o. o.
ję jako hobby – nie dzielnie, nawet gdyby miała to być bardzo
Redaktor naczelny: Krzysztof Krawczyk, zajmuję się tym zawo- prosta aplikacja typu program do zmiany
krzysiek@lpmagazine.org dowo. Moją pierwszą rozdzielczości ekranu.
Redaktorzy: pasją było rozwijanie W tym numerze Linux+ skupiamy się
Piotr Truszkowski, Marek Bettman, Michał Niwicki
MUD-a (Multi User właśnie na fascynującym temacie tworze-
Kierownik produkcji: Marta Kurpiewska,
marta@software.com.pl Dungeon) Arkadia, czyli nia własnego oprogramowania, przez nie-
Opracowanie CD/DVD: Krzysztof Krawczyk, tekstowej gry siecio- których uważanym za trudny i dostępny
Piotr Truszkowski wej. Polegało to na tworzeniu świata i je- wyłącznie dla specjalistów. Okazuje się, że
Dział reklamy: Łukasz Łukaszewicz, go mieszkańców, przygotowywaniu gil- wystarczy poznać pewne podstawy i mieć
reklama@lpmagazine.org,
dii i klubów oraz późniejszym opiekowa- dobry pomysł, aby zacząć własny projekt
tel.: (22) 860 18 18
Prenumerata: Marzena Dmowska, niu się gotowym kodem (poprawianie błę- ciekawego narzędzia. Zachęcamy do pu-
pren@software.com.pl, dów, rozszerzanie funkcjonalności). Było blikowania swoich dzieł, oczywiście na li-
tel.: (22) 860 17 67 to fascynujące zajęcie, pokazujące, że moż- cencji typu Open Source.
Projekt graficzny okładki: na czerpać ogromną radość z programo- Na płycie DVD zamieściliśmy dystry-
Agnieszka Marchocka
wania. Aktualnie podobną sytuację mam bucję Linuksa ściśle powiązaną z tema-
Projekt graficzny pisma:
Marcin Ziółkowski, w przypadku tworzenia narzędzi dla swo- tem – Gentoo 2004.3. Gdyby ktoś jeszcze
marcin@software.com.pl jego Zaurusa. Fascynujące jest to, jaką sa- nie wiedział, tradycyjnie kompiluje się ją od
Skład: Marcin Ziółkowski, tysfakcję można osiągnąć z przygotowa- podstaw z pakietów źródłowych. My zrobi-
marcin@software.com.pl nia prostej aplikacji dla palmtopa – jej nie- liśmy krok w stronę bardziej niecierpliwych
Adres korespondencyjny: wielki rozmiar często budzi mój podziw. użytkowników, pozwalając im zainstalować
Software-Wydawnictwo Sp. z o. o., Jestem pewny, że podobną przyjemność system również z pakietów binarnych.
00-190 Warszawa, może czerpać twórca modułu jądra, jak Krzysztof Krawczyk
ul. Lewartowskiego 6
e-mail: redakcja@lpmagazine.org,
również deweloper tworzący mechanizmy Redaktor Naczelny Linux+
tel. (22) 860 18 18

Redakcja dokłada wszelkich starań, aby publiko-


W bieżącym numerze :
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. 4 Opis
Redakcja nie udziela pomocy technicznej zawartości
dotyczącej zamieszczanego oprogramowania.
Płyty uszkodzone podczas wysyłki wymienia dział
płyt CD/DVD
Piotr Truszkowski, Michał Niwicki
DVD B

prenumeraty.

Wszystkie znaki firmowe zawarte w piśmie Aktualności:


są własnością odpowiednich firm i zostały
użyte wyłącznie w celach informacyjnych. 12 Newsy
Witold Kieraś
Druk: Stella Maris
14 Jądro Linux
Redakcja używa systemu Tomasz Torcz
gentoo

automatycznego składu
Płyty dołączone do magazynu przetestowano
16 Debian
programem AntiVirenKit firmy G DATA Software Bartosz Feński, Tomasz Napierała
Sp. z o.o.
18 Mandrakelinux
Redakcja zabezpiecza swoje dane korzystając Daniel Koć
ze sprzętu firmy Tandberg Data udostępnionego 19 Aurox
przez Veracomp SA.
Michał Marchocki
Sprzedaż aktualnych lub archiwalnych numerów
newsy

pisma po innej cenie niż wydrukowana na okład- 20 Gentoo


ce – bez zgody wydawcy – jest działaniem na jego Witold Kieraś
szkodę i skutkuje odpowiedzialnością sądową.
Linux ® jest zarejestrowanym znakiem
21 PLD
towarowym należącym do Linusa Torvaldsa.
Piotr Skwarna

2 luty 2005
Spis treści

Temat miesiąca: Narzędzia deweloperskie

Narzędzia deweloperskie Oprogramowanie Dla początkujących

22 KDevelop – narzędzie 40 Nicotine – klient sieci 52 GRUB – program


do tworzenia aplikacji SoulSeek uruchomieniowy
z interfejsem graficznym Witold Kieraś Piotr Machej
Marek Sawerwain Nicotine to linuksowy klient sieci P2P Soul- Obecnie większość popularnych pro-
Tworzenie aplikacji z interfejsem graficz- Seek, o możliwościach zbliżonych do popu- gramów uruchomieniowych pozwala
nym nie jest trudne. Marek pokaże Wam, larnego Kazaa czy Emule. na wybór jednego z systemów zainsta-
jak wykorzystać do tego celu bibliotekę QT lowanych na dysku. Jednym z najpopu-
oraz narzędzie KDevelop.
42 Krusader
– menedżer plików
larniejszych jest GRUB (GRand Unified
Bootloader), a z artykułu dowiecie się,
28 Scratchbox
– narzędzie do
Witold Kieraś
Krusader, graficzny menedżer plików
jak go zainstalować i poprawnie skonfi-
gurować.
kompilacji skrośnej w stylu windowsowego Total Comman-
Veli Mankinen
Ideą kompilacji skrośnej jest używanie
dera, jest jednym z najwyżej ocenia-
nych programów dla KDE. Oprócz typo-
60 Sztuczki i kruczki
Grzegorz Niewęgłowski
szybkiej maszyny do kompilacji opro- wych funkcji, pomaga także w monto- Podczas pracy z Linuksem mogą przydać
gramowania dla wolniejszego procesora waniu dysków, wyszukiwaniu konkre- się różnego rodzaju sztuczki i kruczki.
o innej architekturze. Veli Mankinen, jeden tnych plików oraz łączeniu się z serwe- Ich znajomość również świadczy o tym,
z autorów Scratchboksa, przedstawia sposo- rami ftp. czy użytkownik jest początkujący, czy
by użycia tego oprogramowania. zaawansowany.

Wywiad 44 SoX – konwerter formatów


Sprzęt
dźwiękowych
Piotr Machej
32 Wywiad z Carlosem Velez SoX (Sound eXchange) to program prze- 62 Kamery internetowe
Baez, szefem projektu znaczony do konwersji formatów dźwięko- pod Linuksem
Vidalinux wych, odtwarzania i nagrywania muzyki. Piotr Wolny
Krzysztof Krawczyk Z jego pomocą można również dodać roz- Kamery internetowe mogą być wyko-
W tym miesiącu rozmawiamy z Carlosem maite efekty do ścieżki dźwiękowej. rzystywane do spotkań on-line, nagry-
Velez Baez, szefem zespołu deweloperów wania krótkich filmów czy robienia
Vidalinux, dynamicznie rozwijającej się dys- 46 GFSGL – menedżer fotografii. Mogą być także użyte do moni-
trybucji, opartej na Gentoo Linux. Dowiemy uruchamiania gier toringu pomieszczeń. Z artykułu dowie-
się miedzy innymi, jakie nowości znajdą się Piotr Machej cie się, jak zainstalować i skonfigurować
w planowanej wersji 1.1 systemu. Dzięki GFSGL możemy zainstalować większość popularnych urządzeń tego
w systemie nie tylko gry przeznaczone dla typu.
Rozwiązania mobilne Linuksa, ale również te z Windows, które
działają pod Cedegą, WineX lub Wine. Dla programistów
34 MultiSync Możemy też wskazać, który program ma
– synchronizacja
urządzenia przenośnego
być wykorzystywany do emulacji Win-
dows, a który Commodore C64 czy DOS.
70 Piszemy program do
zmiany rozdzielczości
z komputerem biurkowym ekranu przy pomocy
Krzysztof Wolski 48 Munin – generator rozszerzenia RandR
zestawień i statystyk Marek Sawerwain
Piotr Machej W tym miesiącu stworzymy aplikację służą-
Munin to program napisany w Perlu, zbie- cą do zmiany rozdzielczości oraz wartości
rający różne informacje o wykorzysta- odświeżania ekranu. Program napiszemy
niu zasobów systemu i wyświetlający je wykorzystując bibliotekę GTK+. Do zapro-
w czytelnej formie (za pośrednictwem jektowania graficznego interfejsu użytkow-
strony WWW), przy użyciu RRDTool. nika wykorzystamy program Glade.

Testy
50 Dominions II
– strategiczna gra fantasy
Multisync jest aplikacją, za pomocą której
zsynchronizujemy dane aplikacji typu PIM,
Michał Niwicki
Dominions II to strategiczna gra w klima-
76 IBM Thinkpad T41
Michał Niwicki
zapisane na komputerze, z danymi odpo- cie fantasy o świetnej oprawie graficznej
wiednich programów w naszych telefonach
komórkowych czy palmtopach.
i nastrojowej muzyce oraz – co najważniej-
sze – wysokiej grywalności.
77 Novell Linux Desktop 9
Michał Niwicki

www.lpmagazine.org 3
aktualności
opis CD CD A

Damn Small Linux 0.9.0.1


Amarok 1.2 – beta
Popularny, wielofunkcyjny
program do odtwarzania
plików multimedialnych. Posiada
M inimaliści ucieszą się zapewne
z umieszczonego na płycie Damn
Small Linuksa. To obecnie jedna z naj-
funkcję katalogowania zbiorów mniejszych i zarazem najszybszych dys-
oraz jest wyposażony w liczne
efekty dźwiękowe, takie jak trybucji Linuksa. Mimo swoich niewiel-
miksowanie w czasie kich rozmiarów, w systemie znajdzie-
rzeczywistym ścieżek my wiele użytecznych aplikacji – pa-
dźwiękowych, dodawanie kiet biurowy Siag Office, w skład któ-
pogłosu, echa czy symulowanie
dźwięku przestrzennego. rego wchodzi prosty edytor tekstu i ar-
kusz kalkulacyjny, przeglądarka plików
Krusader 1.50 Naprawdę mały Linux
Graficzny menedżer plików
pdf, program pocztowy Sylpheed oraz
w stylu Nortona Commandera przeglądarka stron internetowych Fi-
dla środowiska KDE. Potrafi refox. Domyślnym menedżerem okien możemy cieszyć się w pełni sprawnym
przypisać typy rozszerzeń w Damn Small Linuksie jest Fluxbox, systemem.
plików do odpowiednich
programów oraz posiada opcję
natomiast sam system pracuje pod kon- Jako ciekawostkę można dodać, że
dynamicznego montowania trolą jądra 2.2.41. Damn Small Linuksa możemy zainsta-
urządzeń zdefiniowanych Damn Small Linux to dystrybu- lować i uruchamiać z tzw. flashdysku.
w pliku /etc/fstab. cja typu Live – aby ją uruchomić, wy- Cały system, wraz ze środowiskiem
Dominions II starczy włożyć płytę CD do czytnika graficznym, zajmuje niecałe 50 mega-
Znakomita strategia, CD-ROM i uruchomić ponownie kom- bajtów.
odbiegająca nieco od innych
puter. Po kilkudziesięciu sekundach http://www.damnsmalllinux.org/
gier tego typu. W grze może
brać udział nawet siedemnastu
graczy. Imponuje grafiką
i średniowieczną muzyką.
Na płycie jest zamieszczona Firefox 1.0 i Thunderbird 1.0
wersja demonstracyjna gry oraz
angielskojęzyczne podręczniki.
GParted 0.0.7
S urfowanie po stronach interneto-
wych oraz poczta elektroniczna
są najpopularniejszymi usługami do-
Zaawansowany program do
edycji partycji dysku twardego. stępnymi w Sieci. Ostatnio pojawiły
W porównaniu do poprzedniej się dwie nowe wersje programów, któ-
wersji poprawiono obsługę re umożliwiają korzystanie z tych usług
systemów plików ext2, ext3 oraz
ReiserFS, oraz dodano edycję – Mozilla Firefox 1.0 oraz Mozilla Thun-
partycji NTFS. derbird 1.0.
Firefox to popularna przeglądar-
GRUB 0.94
Nowa wersja jednego ka, zawierająca rozwiązania ułatwia-
z najpopularniejszych programów jące poruszanie się między strona- Thunderbird – zaawansowany klient
uruchomieniowych. Odpowiedzialny pocztowy
mi WWW. Pozwala ona na panelowe
jest za załadowanie do pamięci
przeglądanie stron internetowych, blo-
systemu operacyjnego wskazanego
przez użytkownika. Dodatkowo, kuje niechciane, wyskakujące okienka w Javie i prezentacji przygotowanych
posiada szereg rozszerzeń, takich i zawiera rozbudowany system zakła- we Flashu.
jak ustawianie wyglądu graficznego dek (ang. bookmarks). Dodatkowym Thunderbird jest programem pocz-
interfejsu, zabezpieczenie hasłem
atutem Firefoksa jest automatyczna in- towym obsługującym wszystkie popu-
opcji rozruchowych i wiele innych.
stalacja wtyczek – przeglądarka samo- larne protokoły: SMTP, POP3, IMAP
Skype 0.92.12
dzielnie potrafi zlokalizować i zain- oraz NNTP. Pozwala w łatwy spo-
Popularny komunikator
internetowy, pozwalający stalować obsługę aplikacji napisanych sób wyszukiwać i filtrować przycho-
na prowadzenie rozmów dzące wiadomości. Zawiera przyjazny
głosowych w czasie rzeczywistym. filtr antyspamowy, książkę adreso-
Umożliwia również (po dokonaniu
wą oraz może obsługiwać wiele toż-
opłaty) dzwonienie na telefony
stacjonarne i komórkowe. samości internetowych w obrębie tego
samego profilu. Dodatkowym atutem
Monkey-Bubble 0.3.2
Logiczno-zręcznościowa gra Thunderbirda jest możliwość spraw-
oparta na FrozenBubble. dzania pisowni w trakcie pisania li-
Polega na zdobywaniu punktów stów.
poprzez zbijanie kolorowych
kul.
http://www.mozilla.org/
http://www.firefox.pl/
Firefox 1.0

4 luty 2005
opis CD CD B / DVD B

Games Knoppix 3.7

G
ames 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
Games Knoppix – każdy lubi sobie pograć
sprawną, gotową do użytku maszy-
nę do grania. Wiele gier zamieszczo-
nych w Games Knoppix 3.7 wymaga • Boson – strategiczna gra wojen- • Ziemniaczany facet – edukacyjna
karty z akceleratorem 3D, więc pod- na, która polega na rozbudowywa- gra dla najmłodszych, polegająca
czas uruchamiania systemu zostanie- niu swojej armii i niszczeniu wojsk na ubieraniu kartofla;
my zapytani, czy jej obsługa ma zostać przeciwnika; • Frozen Bubble – jedna z popular-
włączona. • FooBillard – trójwymiarowy symula- niejszych gier na Linuksa; polega
Aby skorzystać z Games Knoppix, tor stołu bilardowego; można wybrać na rozbijaniu kolorowych kul;
po uruchomieniu komputera z płytki kilka najpopularniejszych rodzajów możliwe jest także rywalizowanie
DVD B, wpisz knoppix i wciśnij [Enter ]. bilarda oraz przeprowadzać turnieje w dwie osoby;
za pośrednictwem Internetu; • LBreakout2 – klon gry Arkano-
Co na płycie? • TuxRacer – zimowe zawody spor- did, polegający na rozbijaniu muru
Przede wszystkim gry. Dodatkowo, towe, polegające na jak najszyb- odbijaną przez gracza kulą; moż-
do dystrybucji dołączono kilkana- szym osiągnięciu linii mety; głów- liwe jest prowadzenie rozgrywek
ście użytkowych programów umoż- nym bohaterem gry jest... pingwin przez Internet;
liwiających pracę w sieci oraz konfi- ślizgający się na brzuchu; • Air Traffic Controller – program
gurację komputera. Wszyscy ci, którzy • Globulation2 – atrakcyjna strate- pozwalający wczuć się w kontro-
posiadają stare gry pracujące jesz- gia czasu rzeczywistego; polega lera ruchu lotniczego; sterujemy
cze pod kontrolą systemu operacyj- na rozwijaniu cywilizacji poprzez samolotami i nadajemy im odpo-
nego DOS, znajdą w dystrybucji emu- przydzielanie cudacznym stwor- wiedni kurs – tak, aby na siebie nie
lator DosBox, umożliwiający ich uru- kom mikro-zadań. powpadały.
chomienie.
Standardowo, Games Knoppix jest Zabijacze czasu i hipnotyzery Podsumowanie
uruchamiany z jądrem 2.4.27, ale Z grami jest jak z jedzeniem – możemy Każdy lubi sobie czasem pograć. Games
opcjonalnie można zdecydować się wybrać się do restauracji na eleganc- Konoppix będzie niewątpliwie stano-
na nowszą, mniej stabilną wersję 2.6.7. ką kolację, ale możemy również się- wić jedno z podstawowych źródeł roz-
Domyślnym środowiskiem graficznym gnąć po małe co nieco. Takie właśnie rywki podczas długich zimowych wie-
jest KDE w wersji 3.2.3. małe gry znajdziemy również w Games czorów.
Knoppix:
W co warto pograć? http://www.knoppix.net/
W dystrybucji znajdziemy wiele atrak- • Rafkill – zręcznościowa gra przy- http://knoppix.7thguard.net/
cyjnych, bardziej rozbudowanych gier, pominająca stare gry z automatów;
które wymagają większej ilości pamię- polega na strzelaniu do wszystkie-
ci operacyjnej, szybkiego procesora go co się rusza i nie wymaga od
i mocnej karty graficznej. Wśród nich gracza niczego poza wykazaniem
warto wymienić: się szczególnym refleksem;

6 luty 2005
opis DVD DVD A

Gentoo Linux 2004.3 DVD

G
entoo Linux to stosunkowo Gentoo Linux 2004.3 Linux+DVD Edi-
młoda dystrybucja Linuk- tion umożliwia skorzystanie z jądra 2.6.9
sa, która szturmem zdoby- (dostępne jest również 2.4.26) i popular-
wa coraz to nowych zwo- nych środowisk graficznych KDE 3.3.1
lenników. W zamierzeniach autorów ma i GNOME 2.8. Jeśli nie dysponuje-
ona dać użytkownikowi całkowitą wol- cie sprzętem będącym w stanie spro-
ność. System budujemy sami, tworząc stać wymaganiom tych środowisk gra-
go takim, jakim chcemy, aby był. Możli- ficznych, w systemie Portage znajdzie-
wość optymalizacji oznacza wykorzysta- cie również lekkie środowiska, takie jak
nie pakietów źródłowych. Pomogą nam XFCE4 czy Fluxbox.
w tym narzędzia stworzone do tego celu. Tak może wyglądać nasze Gentoo
Przygotowana przez naszą redakcję Instalacja Gentoo w 14 krokach
wersja Gentoo Linux nie wymaga dostę- Zakładamy, że wykorzystamy pakiety – ustawiamy strefę czasową
pu do Internetu. Specjalnie wydzielone źródłowe i na instalację Gentoo poświę- (ln -s /usr/share/zoneinfo/GMT
drzewo portów, ze starannie dobranym cimy cały dysk twardy: /etc/localtime);
oprogramowaniem, umożliwia bardzo – instalujemy jądro (emerge gentoo-
prostą i szybką instalację z zachowa- – uruchamiamy komputer z płytki DVD; dev-sources, emerge genkernel,
niem wszystkich niezbędnych zależności. – uruchamiamy program cfdisk i two- genkernel –install all), program
Z uwagi na to, że bieżący numer Linux+ rzymy tablicę partycji; uruchomieniowy (emerge grub),
jest poświęcony szeroko pojętemu pro- – za pomocą komend mkswap (mkswap dziennik systemowy (emerge syslog-
gramowaniu i narzędziom programi- /dev/hda1) oraz mkfs.ext3 (mkfs.ext3 ng, rc-update add syslog-ng default)
stycznym, w Gentoo Linux 2004.3 Linux+ /dev/hda2) tworzymy odpowied- i crond (emerge vixie-cron, rc-
DVD Edition znajdziecie ogromną ilość nio przestrzeń wymiany oraz system update add vixie-cron default)
wszelkiego rodzaju oprogramowania dla plików na partycji root (co najmniej oraz dodajemy coldplug do startu
programistów (ponad 1000 pakietów!): 10 GB); systemu (emerge coldplug, rc-update
– montujemy utworzoną partycję do add coldplug boot);
• Anjuta, katalogu /mnt/gentoo (mount /dev/ – konfigurujemy fstab (nano -w /etc/
• KDevelop, hda2 /mnt/gentoo); fstab) i program uruchomieniowy
• QtDesigner, – kopiujemy stage na podmontowany (grub, nano -w /boot/grub/grub.conf);
• Intel C++ Compiler, dysk (cp -vg /mnt/cdrom/stages/ – restartujemy system.
• GCC, stage1-x86-2004.3.tar.bz2 /mnt/
• Eclipse, gentoo) i rozpakowujemy Instalacja systemu
• Mono, (cd /mnt/gentoo, tar -xvjpf stage1- z pakietów binarnych w 3 krokach
• Perl, x86-2004.3.tar.bz2); Alternatywą dla pakietów źródłowych
• Python, – kopiujemy drzewo Portage (cp są pakiety binarne, z których również
• Tcl/Tk, -vg /mnt/cdrom/portage/portage- możemy zainstalować system (szybciej
• CrystalSpace, L+.tar.bz2 /mnt/gentoo/usr) i rozpa- i prościej, ale mniej wydajniej):
• Irrlicht. kowujemy (cd /mnt/gentoo/usr, tar
-xvjf portage-L+.tar.bz2); – zamiast pliku stage1-x86-2004.3.tar
Wszystkie te narzędzia są dostępne z róż- – tworzymy katalog distfiles (mkdir .bz2 kopiujemy i rozpakowujemy
nego rodzaju dodatkami. Ponieważ nie /mnt/gentoo/usr/portage/distfiles) plik stage3-L+.tar.bz2;
samym programowaniem człowiek żyje i kopiujemy do niego pakiety z płyty – po skopiowaniu pakietów z /mnt/
i czasem chciałby poświęcić się rozrywce, DVD (cp -vg /mnt/cdrom/distfiles/ cdrom/distfiles/full, kopiujemy rów-
nie zapomnieliśmy o grach. Pogracie m. full/* /mnt/gentoo/usr/portage/ nież plik /mnt/cdrom/distfiles/binary/
in. w następujące tytuły: distfiles/); packages-bin-L+.tar.bz2 do /mnt/
– montujemy system plików proc gentoo/usr/portage i rozpakowujemy
• Tuxracer, (mount -t proc none /mnt/gentoo/ go w ten sam sposób co Portage;
• Frozen-Bubble, proc) i wykonujemy chroot do środo- – pozostałe pakiety, wymienione
• Pingus, wiska (chroot /mnt/gentoo /bin/ w instalacji z pakietów źródłowych,
• Neverball, bash); np. grub czy syslog-ng, instaluje-
• Falconseye, – modyfikujemy plik /etc/make.conf my za pomocą polecenia emerge -k
• Planeshift; (nano -w /etc/make.conf); nazwa_pakietu.
• GL-117, – rozpoczynamy instalację podstawo-
• Simutrans, wych elementów systemu (sh /usr/ Szczegółowe etapy całej instalacji są opi-
• Foobilard, portage/scripts/bootstrap.sh), a po sane w dokumentach dostępnych na
• Torcs, nim budujemy sam system (emerge płytce DVD w katalogu docs/handbook
• Scorched3D. system); i docs/Linux+. Dobrej zabawy!

8 luty 2005
aktualności
opis DVD DVD B

FreeSBIE 1.1
Mandrakelinux 10.1
– aktualizacje
Nasza redakcja zamieściła
na płycie DVD ponad
N a początku grudnia 2004 roku
ukazała się nowa wersja systemu
FreeSBIE. Jest to uruchamiana bezpo-
dwieście pięćdziesiąt pakietów średnio z płyty CD dystrybucja oparta
rpm. Są to aktualizacje
programów przeznaczonych na FreeBSD w wersji 5.3. Powstała ona
dla dystrybucji Mandrakelinux 10.1 z myślą o tych, którzy potrzebują za-
Official. równo aplikacji niezbędnych do pracy
http://www.mandrakelinux.com/ w sieci, jak i szeregu programów mul-
Scratchbox timedialnych oraz gier. Dystrybucja za-
Najnowsza wersja zestawu wiera zatem popularną przeglądarkę
narzędzi dla programistów
wykorzystujących kompilację
internetową Firefox, komunikator GA- FreeSBIE 1.1 podczas pracy
skrośną. Na płycie DVD znajdują IM, analizatory ruchu i bezpieczeństwa
się pakiety typu rpm, deb, tgz, sieciowego, odtwarzacze filmów i pli- twardym. Niestety, aby cieszyć się kom-
przeznaczone na różne platformy ków dźwiękowych oraz wiele innych. fortową pracą w systemie w wersji Li-
sprzętowe (ARM, x86, PowerPC),
oraz dodatkowe narzędzia wraz
Do dyspozycji mamy również dwa po- ve, wymagane jest posiadanie mocnego
z pełną dokumentacją. pularne menedżery okien – XFCE oraz sprzętu, z co najmniej 256 megabajtami
http://www.scratchbox.org/ lekki Fluxbox. pamięci RAM.
Eclipse FreeSBIE, dzięki przyjaznemu in-
Najnowsza wersja platformy stalatorowi DragonFlyBSD, można bez http://www.freesbie.org/
deweloperskiej Eclipse, problemów zainstalować na dysku
przeznaczonej do tworzenia
aplikacji w Javie. Na płycie DVD
została zamieszczona wersja
SDK, zawierająca platformę Java,
Linux+ Live DVD
środowisko zintegrowanych
wtyczek oraz pełną dokumentację.
http://www.eclipse.org/
L inux+ Live to dystrybucja Linuk-
sa uruchamiana z płyty DVD. Aby
wystartować Linux+ Live, wystarczy
Abiword 2.2 w BIOS-ie komputera podać napęd
Wieloplatformowy edytor
tekstu, stanowiący część CD jako podstawowe urządzenie
projektu GNOME Office. Jest rozruchowe, włożyć płytkę z naszą
przeznaczony głównie dla osób dystrybucją do napędu i ponownie
przyzwyczajonych do korzystania uruchomić komputer. Po kilku chwi-
z programu MS Word. Na
płycie DVD znajdują się pakiety lach naszym oczom ukaże się plansza
instalacyjne polskich wersji powitalna. Po wciśnięciu klawisza [En-
językowych programu. ter ], Linux+ Live zacznie się urucha- Na pierwszym planie Eclipse, a w tle
http://www.abisource.com/ KDevelop
miać. System automatycznie wykry-
Dokumentacja HOWTO je nasz sprzęt i skonfiguruje środowi-
Ponad 2500 dokumentów sko graficzne; w czasie uruchamiania Wam – drodzy Czytelnicy – zapew-
opisujących, w jaki sposób
trzeba wybrać język obowiązujący w nić ogromną porcję twórczej zabawy.
rozwiązać niektóre problemy
związane z Linuksem. systemie. Na Linux+ Live składają się Jest to kompletne środowisko dla po-
http://www.tldp.org/ m.in.: czątkującego, jak i zaawansowanego
Firestarter 1.0 programisty. Jeśli myślisz o napisaniu
Narzędzie do filtrowania, • jądro Linux 2.6 z wieloma łatkami jakiegoś programu i zastanawiasz
monitorowania i udostępniania zwiększającymi jego funkcjonal- się, jak wygląda programowanie pod
połączenia internetowego.
ność; Linuksem, Linux+ Live jest wspaniałą
http://www.fs-security.com/
• graficzne środowisko pracy KDE okazją ku temu, aby spróbować swoich
Essays1743 3.2.1; sił. A po długim i przyjemnym progra-
Zestaw tradycyjnych angielskich
czcionek. • oprogramowanie programistyczne mowaniu będziecie mogli odprężyć
Anjuta, Eclipse, Glade, KDevelop, się przy dwóch grach: Battle of Wes-
Python 2.4
Gambas, kompilator GCC, środo- noth oraz Dominions II. Dobrej zaba-
Popularny język programowania,
zdobywający ostatnimi wisko Sun Java SDK oraz bibliote- wy!
czasy sympatię i uznanie ki programistyczne;
programistów. • przeglądarki internetowe Konqu- http://www.live.lpmagazine.org/
http://www.python.org/
eror i Mozilla.

Linux+ Live ma na celu prezentację naj-


ważniejszych programów opisanych
w numerze, ale przede wszystkim ma

10 luty 2005
aktualności
aktualności newsy

News Czy pingwiny są skazane na wymarcie?


F
Koniec The Linux Show rank Ottink w swoim artykule pt. Sun
The Linux Show, internetowa audycja
will shine again and leave Linux in
radiowa, po siedmiu latach kończy
działalność. Powodem są kłopoty its shade wymienił kilka powodów, dla
finansowe jej twórców. Jak mówi których, jego zdaniem, otwarty Solaris zde-
Jeff Gerhardt, Sun Microsystems, klasuje Linuksa i skaże go na marginaliza- Solaris raczej nie zagrozi Linuksowi
dotychczasowy sponsor audycji,
cję. Po pierwsze, Solaris to uznana marka
wycofał się nagle z jej finansowania.
Zniknęli też producenci sprzętu i system co najmniej tak dobry jak Linux, kle ważnym czynnikiem decydującym
komputerowego, którzy zasilali a ponieważ Sun ma zamiar wydać go na o tym, czy system ten zdoła skupić wo-
kasę audycji płatnymi reklamami. otwartej licencji, to ma to być gwarantem kół siebie odpowiednio dużą grupę de-
The Linux Show nie jest w stanie
tego, że Solaris przetrwa nawet ewentual- weloperów. Ostatnie decyzje Suna zwią-
przetrwać utrzymując się jedynie
z datków słuchaczy. Ostatnia audycja ny upadek firmy, która go stworzyła. Po zane z liberalizacją licencji Javy raczej roz-
miała miejsce 21 grudnia. drugie, ponieważ Solaris ma być kompa- czarowały środowisko Open Source, gdyż
http://www.newsforge.com/ tybilny z architekturą x86 (uznawaną za licencja owa wciąż jest dość restrykcyjna
article.pl?sid=04/12/01/035210
jedną z najtańszych), to obniżenie kosz- i w żaden sposób nie spełnia choćby wy-
Firefox coraz popularniejszy... tów sprzętu nie będzie już argumentem tycznych Open Source Initiative. Z punk-
W pierwszych tygodniach od
przemawiającym na korzyść migracji na tu widzenia rozwoju społeczności najbar-
pojawienia się na rynku wersji
1.0 przeglądarki Firefox ściągnęło Linuksa. Po trzecie, Solaris ma już dużą dziej korzystną licencją dla Solarisa była-
ją z Internetu kilka milionów liczbę klientów, a ponieważ ma on stać by licencja zgodna z GPL, ale Sun wciąż
użytkowników. Trend ten ciągle się systemem opensource'wym, to także nie podjął w tej sprawie decyzji. Istnie-
się utrzymuje. Firmy zajmujące
nie będzie to argument przemawiający na ją więc uzasadnione obawy, że szumnie
się pomiarem ruchu w Internecie
również potwierdzają zwiększoną korzyść Linuksa. Po czwarte, Sun ma do- ogłaszane od dawna otwarcie kodu Sola-
liczbę użytkowników korzystających brą opinię jako dostawca wsparcia tech- risa może być wielkim rozczarowaniem.
z przeglądarek opartych na silniku nicznego dla swojego systemu – być mo- Co do straszenia potencjalnych klientów
Gecko – gros nich to oczywiście nowy
że nawet lepszą niż producenci komer- rozbiciem Linuksa na kilka niezgodnych
Firefox. Po raz pierwszy od wielu lat
udział w rynku Internet Explorera cyjnych dystrybucji Linuksa, tacy jak Red ze sobą projektów, to porównać to można
spadł poniżej 90%. I wszystko Hat czy Novell. I po piąte, Sun gwarantuje jedynie do propagandy pewnej dużej fir-
wskazuje na to, że jeszcze spadnie... jedność projektu i odsuwa niebezpieczeń- my informatycznej – jak dotąd nic takiego
...zatem czas na Thunderbirda!
stwo tego, że Solaris podzieli się na kilka nie nastąpiło i nie widać powodów, dla
Siostrzany projekt przeglądarki
Firefox, klient poczty Thunderbird, niekompatybilnych ze sobą wersji. którym miałoby do tego dojść.
również idzie w jej ślady. W chwili Artykuł Franka Ottinka wywołał ma- W tydzień po opublikowaniu swojego
publikacji tego numeru Linux+, łą burzę w światku linuksowym. Pojawiło artykułu, Frank Ottink ogłosił publicznie,
powinna być już dostępna od jakiegoś
się wiele polemik, zarówno w innych ser- że się mylił. Podziękował swoim oponen-
czasu wersja 1.0 tego programu.
Czy Thunderbird powtórzy sukces wisach internetowych, jak i pod oryginal- tom za zwrócenie mu uwagi na proble-
Firefoksa? Ma ku temu predyspozycje, nym tekstem. Nie trzeba być ekspertem, my, z których nie zdawał sobie do tej pory
bo poziom bezpieczeństwa głównego aby zauważyć, że Ottink nie do końca sprawy. Przyznał im rację i uznał ich argu-
gracza na tym rynku, programów
zdaje sobie sprawę z tego, czym jest zja- menty. Co ciekawe, w ciągu jednego krót-
Outlook i Outlook Express, należących
do MS, pozostawia wciąż wiele wisko Wolnego Oprogramowania – i wła- kiego tygodnia dyskusja przeszła długą
do życzenia. Być może zatem śnie na to zwracali mu przede wszystkim drogę – od szumnego ogłoszenia trium-
wkrótce społeczność skupiona uwagę jego adwersarze, w wielu przypad- fu Solarisa nad Linuksem, do kwestii te-
wokół Thunderbird rozpocznie tak
kach będący zresztą aktywnymi progra- go, czy otwarty Solaris w ogóle byłby
efektowną i udaną kampanię jaką
oglądaliśmy niedawno w przypadku mistami projektów opensource'owych. w stanie przetrwać bez wsparcia finanso-
Firefoksa... Po pierwsze, przeświadczenie Ottinka, wego i medialnego ze strony Sun Micro-
http://forums.mozillazine.org/ że etykietka Open Source w jakiś magicz- systems. Wielu twierdzi, że jego szanse
viewtopic.php?p=1020843
ny sposób przyciąga od razu rzesze pro- byłyby niewielkie...
Więcej linuksowych ser werów gramistów, chcących poświęcić swój czas Bez względu na wszystko, nadal
Kwartalna wartość sprzedaży i wysiłek dla rozwoju projektu, jest zu- z niecierpliwością i nadzieją oczekuje-
serwerów linuksowych po raz
pierwszy przekroczyła sumę miliarda pełnie błędne. Jak trafnie zauważył je- my na zapowiadane otwarcie kodu flago-
dolarów, co stanowi ponad 9% rynku. den z czytelników artykułu Ottinka, do- wego systemu Suna. I to nie dlatego, aby
W porównaniu z analogicznym świadczenie pokazuje, że Sunowi wcale miał on być jakimś zagrożeniem dla Li-
okresem 2003 roku, oznacza to nie będzie łatwo zgromadzić wokół Sola- nuksa, ale dlatego, że Linux mógłby wie-
wzrost aż o 42,6%. W porównaniu
z ubiegłym rokiem wartość rynku risa większej społeczności deweloperów. le zyskać zapożyczając z Solarisa rozwią-
serwerów zwiększyła się o 5,5%. Linux ciężko pracował na swoją pozycję zania kilku ważnych dla naszego systemu
Systemy z rodziny Windows zyskały i zaufanie – nie tak łatwo powtórzyć je- problemów...
na wartości 13,3%. go sukces. Dodatkowo, wątpliwości budzi
http://www.techworld.com/opsys/news/
index.cfm?NewsID=2676&Page= sama deklaracja otworzenia kodu Solarisa http://www.yeald.com/Yeald/a/32111/
3&pagePos=20 – ciągle nie wiadomo, na jakiej licencji ma sun_will_shine_again_and_leave_li-
on zostać wydany, a może być to niezwy- nux_in_its_shade.html

12 luty 2005
news@lpmagazine.org dział prowadzi: Witold Kieraś

XML-owy standard dla UE coraz bliżej


News

N ie tak dawno informowaliśmy o tym,


że wyspecjalizowana jednostka Ko-
misji Europeskiej zachęca do stworzenie
zwrócenia uwagi na format XML, wyko-
rzystywany przez darmowy i otwarty pa-
kiet biurowy OpenOffice.org. Przedstawi-
Problemy zdrowotne
Patricka Volkerdinga
Patrick Volkerding, twórca
i główna siła napędowa
jednolitego i otwartego standardu wymiany ciele Forum zachęcają też producentów dystrybucji Slackware, ma
dokumentów, opartego na formacie XML. oprogramowania do zaznaczania otwar- poważne problemy zdrowotne.
Na ten apel bardzo szybko odpowiedział tego standardu danych jako domyślnie Wiadomo, że cierpi na zapalenie
Sun Microsystems, producent StarOffice'a obsługiwanego przez ich programy. osierdzia, jednak nie jest to jego
jedyny problem, a co gorsza
i główny sponsor projektu OpenOffice.org. W opublikowanym przez OFE do- lekarze nie potrafią powiedzieć,
Sun promuje XML-owy standard OASIS kumencie pt. How Open Can Europe co tak naprawdę dolega Patrickowi.
i stara się również o jego akceptację przez Get? można znaleźć krótką analizę cech Dopóki Patrick nie wyzdrowieje,
International Standard Organisation (ISO), formatów PDF, OpenOffice XML oraz aktualizacją pakietów Slackware
zajęli się Piter Punk i Bruno
zatem inicjatywę Komisji Europejskiej przy- WordXML. OFE zaznacza jednak, że ten Henrique Collovini. Wszyscy
jął z dużym zadowoleniem. Pomysł poparł ostatni nie jest w pełni otwarty, gdyż znaj- jednak liczą na rychły powrót
też Microsoft, zaznaczając, że specyfikacja dują się w nim tagi typu <bindata>, za- ojca dystrybucji.
jego formatu opartego na XML, a obsługi- wierające informacje specyficzne dla plat- ftp://ftp.slackware.com/pub/
slackware/slackware-current/PAT-
wanego przez MS Office, WordXML, jest formy, mogące spowodować problemy NEEDS-YOUR-HELP.txt
już wolnodostępna. Do inicjatywy przyłą- z jego obsługą w innych środowiskach.
“Lepiej nie używajcie IE”
czył się również IBM, informując, że zgłosił Wszystkie pozytywne inicjatywy wo-
Fiński Urząd Regulacji
już do OASIS chęć udziału w pracach spe- kół pomysłu jednolitego i otwartego stan- Komunikacji zaapelował do
cjalnego komitetu technicznego, pracujące- dardu wymiany dokumentów pozwalają użytkowników Internetu,
go nad standardem. IBM zaznaczył też, że mieć nadzieję, że w stosunkowo niedłu- aby do czasu załatania wykrytej
niedawno luki w zabezpieczeniach
już oferuje produkty spełniające założenia giej przyszłości zostanie on urzeczywist-
Internet Explorera, zmienili
szkicowego projektu standardu OASIS, któ- niony. Miałoby to bardzo dobry wpływ przeglądarkę na inną. Chodzi
ry powstał do tej pory. na płynność i przejrzystość wymiany in- o groźny błąd nieprawidłowej
Open Forum Europe (OFE) w swojej formacji pomiędzy administracją publicz- obsługi znacznika IFRAME
(tzw. pływającej ramki). Czyżby
analizie również wskazało potrzebę przy- ną, biznesem oraz obywatelami w Unii
kolejna szansa dla Firefoksa?
gotowania otwartego standardu wymia- Europejskiej.
IT Underground w Pradze
ny dokumentów. Wezwało administracje http://europa.eu.int/ida/en/document/
IT Underground Praga
państwowe krajów członkowskich UE do 3463 (17 – 18 lutego 2005) to druga edycja
konferencji poświęconej technikom
zabezpieczeń przed intruzami
Open Source na małym ekranie i penetracji systemów informaty-
cznych, w tym Linuksa.

P owstał pierwszy na świecie program


telewizyjny poświęcony oprogramo-
waniu Open Source – niestety, daleko od
Prelegentami będą m. in. Mariusz
Burdach, Wojciech Dworakowski,
Thorsten Holz, Joanna Rutkowska,
Saumil Shah, Piotr Sobolewski,
nas, bo aż w Republice Południowej Afry-
Michał Szymański, Chuck Willis i inni.
ki. Program nazywa się Go_Open i jest za- http://www.itunderground.org/
planowany na trzynaście odcinków. Pierw-
Sieciowy magazyn
sze z nich zostały już wyemitowane. o Linuksie
Program zrealizowano przy wspar- Powstało nowe polskie
ciu Shuttleworth Foundation, organiza- internetowe pismo o Linuksie
cji, która promuje otwarte oprogramowa- pt. LinuxPaper. Rozpowszechniane
Strona internetowa programu telewizyjnego jest w formacie PDF, a plik
nie w południowoafrykańskich szkołach. Go_Open zawierający pierwszy numer
Go_Open przedstawia historie udanych można ściągnąć z jego strony
wdrożeń i migracji oraz prezentuje sylwet- nie zachęcić ich do wyboru właśnie ta- domowej. Zawiera on materiał
ki najbardziej znanych postaci ruchu Open kich rozwiązań, a w przyszłości być mo- zarówno dla początkujących
(m.in. prezentacja idei Open Source
Source. Można też dowiedzieć się w nim że nawet większego zaangażowania w ży- i związanej z nią społeczności),
o najnowszych wydarzeniach ze środowi- cie społeczności. Już na początku swoje- jak i dla bardziej zaawansowanych
ska. W pierwszym odcinku zamieszczono go istnienia program spotkał się z du- użytkowników (pierwsza część
wywiad z Richardem Stallmanem, a gość- żym zainteresowaniem – w ogłoszonym tutorialu na temat programowania
przy użyciu biblioteki Qt oraz
mi kolejnych mają być m.in. Eric Raymond w pierwszym odcinku konkursie telefo- artykuł o pisaniu skryptów
oraz być może Linus Torvalds. nicznym w ciągu godziny wzięło udział w BASH-u). Całość została
Zgodnie z tym, co mówią sami twór- około tysiąca telewidzów. złożona przy użyciu
cy, program przeznaczony jest dla zwy- opensource’owych narzędzi:
Scribusa, GIMP-a i Blendera.
kłych użytkowników komputerów, którzy http://www.go-opensource.org/go_open/ http://www.linuxpaper.prv.pl/
mogli nigdy nawet nie zetknąć się z ideą http://news.zdnet.co.uk/software/
otwartego oprogramowania. Ma za zada- linuxunix/0,39020390,39174917,00.htm

www.lpmagazine.org 13
aktualności
aktualności jądro linux

News Pliki nagłówkowe jądra


Początki odchudzonego
skryptu hotplug
Co jakiś czas pojawiają się głosy
K oniec zeszłego roku był okresem
wzmożonej dyskusji nad bardzo
ważną kwestią plików nagłówkowych
mista musi albo skopiować interesujące
go nowości, albo użyć pliku nagłówko-
wego z jądra. Drugie rozwiązanie czę-
niezadowolenia ze standardowego
skryptu uruchamianego jako jądra w świetle kompilacji programów sto powoduje konflikt z plikiem dostar-
/sbin/hotplug. Głównym zarzutem w przestrzeni użytkownika. Nie była czonym przez glibc, zawierającym już
jest właśnie to, że jest to skrypt to pierwsza taka dyskusja, ale tym ra- część definicji. Sytuacja jest tym gorsza,
powłoki, co w połączeniu
zem włączył się do niej sam Linus To- że nowe jądro pojawia się co miesiąc
z olbrzymią i stale rosnącą
ilością zdarzeń, przy których jest rvalds. Udało się z niego wyciągnąć lub dwa, a glibc jest wydawany rzadziej
wywoływany, powoduje znaczące deklaracje, które umożliwią konkret- niż raz na rok. Dodając do tego fakt,
zwiększenie obciążenia systemu. ne działania. że glibc nie korzysta z nagłówków ją-
W odpowiedzi, autor pierwotnego
Czym są wspomniane nagłówki? Są dra, poza czterema-pięcioma przypad-
skryptu, Greg Kroah-Hartman,
stworzył funkcjonalny odpowiednik to pliki, w których jest zdefiniowany in- kami, a z własnej kopii, to o problemy
w języku C. Plik binarny, terfejs między jądrem systemu a progra- nietrudno.
zbudowany statycznie z klibc, mami przestrzeni użytkownika. Głów- Zanim nagłówki jądra zostaną uży-
zajmuje około 4 kilobajtów
nym ich użytkownikiem jest w zasadzie te, trzeba je oczyścić. Przykładowo, te
i uruchamia się błyskawicznie.
Greg ogłosił plany przepisania biblioteka języka C – w GNU/Linux jest używane przez dystrybucję Fedora Co-
również innych skryptów to zazwyczaj glibc, chociaż może to być re przechodzą gruntowne cięcia. Usu-
pomocniczych mechanizmu uClibc, dietlibc bądź klibc. Zaintereso- wane są wszystkie fragmenty dostępne
hotplug w C. Wykorzysta przy
wani nagłówkami są również autorzy tylko w przypadku zdefiniowania sta-
tym wiedzę zdobytą przez ostatnie
cztery lata obecności hotplug oprogramowania wchodzącego w głęb- łej _ _KERNEL_ _. Muszą również zniknąć
w jądrze, jednocześnie porzucając sze związki z jądrem. wszystkie funkcje oznaczone przez in-
wsparcie dla starych jąder (2.4.x). Nagłówki jądra 2.6 nie są przystoso- line. Takie oznaczenie jasno wskazuje,
http://lkml.org/lkml/2004/11/18/297
wane do bezpośredniego użycia i czę- że funkcja jest fragmentem jądra. Nie
Wydajność systemów plików sto powoduje to problemy u progra- bez znaczenia jest również fakt istnie-
z rozszerzonymi atrybutami mistów. Swego czasu narzekał na nie nia ,,pułapki licencyjnej'' – włączenie
Wszystkie ważniejsze systemy
plików Linuksa (ext2/3, XFS, Joerg Schilling, autor powszechnie uży- (nawet nieświadome) do kodu źródło-
Reiserfs3/4, JFS, tmpfs) wspierają wanego programu cdrecord. Nagłówki wego fragmentu na licencji jądra, czy-
również, oprócz typowo jądra są najeżone konstrukcjami, któ- li GPL, wymusza takie samo licencjo-
uniksowych, atrybuty rozszerzone re w standardowym środowisku po- nowanie całego programu. Z nagłów-
– xattrs. Na razie są używane
sporadycznie – głównymi wodują błędy kompilacji. Co gorsza, ków są też usuwane wszystkie struktu-
beneficjentami są SELinux, tradycyjne ich umieszczenie w katalo- ry, które zawierają prymitywy synchro-
przechowujący w nich atrybuty gu /usr/include powodowało, że nie- nizacyjne, takie jak semafory i bloka-
bezpieczeństwa, oraz Beagle, którzy programiści używali struktur dy pętlowe. Nie mają one zastosowania
program indeksujący dane
użytkownika, który do atrybutów w nich zawartych (np. blokad pętlo- poza jądrem, więc bezpiecznie można
dołącza informacje o ostatnim wych), nie zdając sobie sprawy, że przyjąć założenie, że te fragmenty na-
indeksowaniu. Sytuacja może nie działają one w przestrzeni uży- główków nie są przeznaczone dla prze-
diametralnie zmienić się wraz tkownika, tworząc w ten sposób wadli- strzeni użytkownika.
z pojawieniem się popularnej
usługi Samba w wersji czwartej. we oprogramowanie. Jak widać, dostosowanie nagłów-
Przechowuje ona w xattr wiele Same informacje eksportowane przez ków wprost z jądra do kompilacji pro-
informacji potrzebnych do pełnej jądro w niektórych przypadkach nie są gramów to ogromne zadanie. Co gorsza,
emulacji systemów pochodzących nawet w formacie przyjaznym do ob- brak scentralizowanego repozytorium
od firmy Microsoft. Andrew Tridgell
przeprowadził testy wydajnościowe róbki. W wielu przypadkach do prze- z poprawionymi nagłówkami oznaczał-
nowego demona. Wyniki z początku strzeni użytkownika jest przekazywa- by konieczność wykonania tej pracy
były druzgoczące – włączenie do na struktura dostosowana do antycz- przez prawie każdego twórcę dystrybu-
testów rozszerzonych atrybutów nej w tej chwili biblioteki libc w wer- cji Linuksa. W takiej sytuacji Mariusz
spowodowało olbrzymie
zmniejszenie prędkości. Sytuację sji 4 lub 5. O ile kilka lat temu by- Mazur, deweloper dystrybucji PLD
ratowały testy przy zwiększonym ło to uproszczenie, to jednak czas nie Linux, zabrał się w grudniu 2003 roku
rozmiarze i-węzła. Taką operację stoi w miejscu i zachodzą zmiany w ją- za oczyszczanie nagłówków i przysto-
umożliwia XFS i eksperymentalne drze. Zdarza się, że jądro musi dokony- sowanie ich do kompilacji oprogramo-
łatki dla ext3. Testy mogą być
impulsem do włączenia łatek ext3 wać translacji danych na stary format, wania w dystrybucji. Największym te-
do głównej linii jądra. W dyskusji aby przekazać je na zewnątrz. Odbior- stem poprawności jego działań było
o wydajności uczestniczył też Hans ca, glibc, odbiera je w ten sposób, po zbudowanie na bazie jego pracy biblio-
Reiser, pilnie analizując, jakiego czym... dokonuje translacji na inną re- teki glibc, a następnie reszty PLD.
rodzaju optymalizacje wprowadzić
w Reiser4fs. prezentację. Często taką samą, jak pier- Każde wydanie nowej wersji ją-
wotnie dostępna w jądrze. dra oznacza dla opiekuna nagłówków
Problem pojawia się, gdy glibc nie przejrzenie pokaźnego (pół do półto-
nadąża za zmianami w jądrze. Progra- ra megabajta objętości) zbioru różnic

14 luty 2005
kernel@lpmagazine.org dział prowadzi: Tomasz Torcz

News
między wersjami, wyłowienie ważnych widać, dogłębna znajomość struktur System Plików Pojedynczego Pliku
Etap rozterek projektowych ma już
zmian i wprowadzenie poprawek. Du- jądra nie jest potrzebna do prowadze- za sobą Bernard Hatt. Stworzył on
ża część zadań (np. sprawdzanie, któ- nia przez ponad rok projektu, z któ- system plików przeznaczony do
re pliki przestały się kompilować) da rego korzysta cała społeczność linuk- przechowywania pojedynczego
się rozwiązać odpowiednim skryptem, sowa. zbioru. Pomysł może wydawać się
bezsensowny, ale SFFS (Single File
ale są momenty, gdy jest potrzebna in- Prawdopodobnie, praca Mariu- File System) stanowi alternatywę
gerencja człowieka. W przypadku no- sza nie będzie już niedługo potrzeb- dla używania surowej partycji,
wych plików nagłówkowych potrze- na. Zaczyna się proces porządkowa- przeznaczonej pod bazę danych,
ba trochę zgadywania, czy reprezen- nia plików nagłówkowych. Sama idea obraz płyty DVD czy repozytorium
serwera NNTP. Alternatywę, która
tują one API, czy też stanowią opis nie jest skomplikowana i Al Viro za- daje korzyści typu informacja
wewnętrznych struktur jądra. Pierw- demonstrował na przykładzie nagłów- o długości pliku, uprawnienia,
sze należy oczyścić, a drugie odrzu- ków AmigaFS, że podział i oczyszcze- określenie właściciela itp. Pierwotna
cić. Ta żmudna praca jest rekompenso- nie plików zajmuje dziesięć minut ro- wersja SFFS nie jest wolniejsza od
systemu plików ext2, a wręcz potrafi
wana rozpowszechnieniem oczyszczo- boty dla programisty zaznajomionego osiągnąć rezultaty o 40% lepsze. Nie
nej przez Mariusza wersji nagłówków. z podsystemem. Do tej pory przeszko- jest to zaskoczeniem, zważywszy
Są one traktowane jako prawie-oficjal- dą był brak ustaleń związanych z po- na prostotę przechowywania
ne nagłówki i adres do nich często po- łożeniem i hierarchią katalogów z na- pojedynczego pliku na dysku. Warto
odnotować wcześniejsze próby
jawia się na LKML. główkami dla przestrzeni użytkownika. stworzenia systemów plików o takiej
Co ciekawsze, Mariusz Mazur przy- Na szczęście, Linus w końcu wyznaczył funkcjonalności – były to rawfs oraz
znaje się do tego, że nie zna się zbytnio katalogi, w których mają się one zna- smugfs.
na jądrze Linux. W pracy nad nagłów- leźć. Wyraził też otwartość na wszelkie http://www.arkady.demon.co.uk/sffs
kami wystarcza mu znajomość języka łatki robiące porządek w plikach na- Zabawy z EFI
C i umiejętności programistyczne. Jak główkowych jądra. Skrót EFI oznacza Extensible Firmware
Interface. Jest to sposób komunikacji
z BIOS-em lub jego odpowiednikiem,
promowany przez Intela i inne
Systemy plików przestrzeni użytkownika duże firmy. EFI jest powszechny na
platformie Itanium, ale pojawienie

L
się na komputerach biurkowych nie
inux jest jądrem monolitycznym. bibliotek i pisać w dowolnym języku.
nastąpi w najbliższe przyszłości.
W uproszczeniu oznacza to, że Znane są pseudosystemy plików, umoż- Pomimo tego, możemy zapoznać się
wszystkie ważne podsystemy są za- liwiające podmontowanie webmaila(!), z tym mechanizmem. Jest do tego
warte bezpośrednio w jądrze syste- napisane w Pythonie. Niestety, nie ma wymagana partycja typu VFAT, na
której znajdzie się program ładujący
mu. Dotyczy to również systemów pli- nic za darmo. Wystarczy wyobrazić so-
i jądro. Dysk może zostać podzielony
ków, które w alternatywnych rozwią- bie sytuację, w której duża część pa- na partycję w tradycyjny sposób lub
zaniach – mikrojądrach – działają ja- mięci jest wypełniona buforami prze- GUID Partition Type, specyficzny
ko procesy w przestrzeni użytkownika. znaczonymi do zapisu poprzez FUSE. dla EFI. GPT jest obsługiwany przez
program Parted. Kolejnym krokiem jest
Oczywiście, nic nie stoi na przeszko- W pewnym momencie system potrze-
nagranie na dyskietkę binarnej wersji
dzie, aby również w przypadku jąder buje pamięci, więc aby zrobić trochę oprogramowania EFI i uruchomienie
monolitycznych stworzyć interfejs, któ- miejsca, wymusza zapis tych buforów. z niej komputera. W ten sposób
ry umożliwi zaimplementowanie syste- Żądania są przekazywane poprzez FU- obchodzimy brak tego rozwiązania
w BIOS-ie. Pozostaje już tylko
mu plików jako procesu użytkownika. SE do demona implementującego dany
skorzystanie z programu ładującego
Jednym z takich projektów jest FUSE. system plików. Teraz wystarczy, aby de- ELILO i użycie jądra z obsługą
Rozwijany od dłuższego czasu został mon do zapisu potrzebował trochę pa- Extensible Firmware Interface.
niedawno zaproponowany jako kan- mięci – odwołuje się po nią do jądra. http://lkml.org/lkml/2004/12/1/83
dydat do włączenia do głównej linii A ponieważ zapis został zainicjowany XKE – pośrednik multimedialny
jądra. I o dziwo, Linus Torvalds, za- właśnie wcześniejszym brakiem prze- XKE to mały programik, którego
zwyczaj przeciwny takim rozwiąza- strzeni, sytuacja pogarsza się i cały sys- zadaniem jest informowanie systemu
X Window o niestandardowych,
niom, wstępnie wyraził zgodę pod wa- tem może ulec zawieszeniu. zwanych multimedialnymi,
runkiem wprowadzenia kilku zmian. Niestety, nie jest to problem łatwo klawiszach. Ze strony jądra jest
Część jego żądań była spowodowa- rozwiązywalny. Pewnym pocieszeniem używany podsystem wejścia,
na nieporozumieniem – swoją wiedzę może być fakt, że z podobnymi przy- komunikujący się za pomocą
zdarzeń (ang. events). Do systemu
o FUSE opierał na starszej wersji kodu, padłościami borykają się sieciowe sys- graficznego są one przekazywane
która zdążyła przejść w międzyczasie temy plików – NFS, Samba, CIFS. Sko- dzięki rozszerzeniu Xtest. Bez żadnych
sporą ewolucję. ro im zazwyczaj nie zdarza się zawie- zmian obsługiwane są przeróżne
Stworzenie systemu plików w prze- szać serwerów, to i FUSE może w koń- myszy, trackballe i tablety. XKE jest
połączeniem programów evdev,
strzeni użytkownika daje dużo większą cu okazać się bezpieczny. xkeymouse i tuntiko.
swobodę niż czynienie tego w jądrze. http://lkml.org/lkml/2004/12/1/23
Programista może korzystać z wielu http://fuse.sourceforge.net/

www.lpmagazine.org 15
aktualności
aktualności debian debian@lpmagazine.org dział prowadzi: B. Feński, T. Napierała

News Debian i AMD64


Kolejne tysiące komputerów
z Debianem...
Europcar przeniósł 1500
N owe 64-bitowe procesory AMD
stają się coraz popularniejsze oraz,
co nie mniej ważne, coraz tańsze. Aby
wili swoje propozycje na rozwiązanie
szeregu problemów mogących pojawić
się przy tego typu rozwiązaniach.
komputerów w biurach w pełni wykorzystać ich możliwości, Czego może oczekiwać ktoś, kto
oddziałów terenowych na system operacyjny musi oferować od- jednak zdecyduje się na korzystanie
cienkie klienty oparte o Debiana
oraz jest w trakcie przenoszenia powiednie wsparcie. Większość wio- z portu Debiana przygotowanego spe-
kolejnych 3500 na system dących dystrybucji Linuksa na rynku cjalnie pod najnowsze procesory AMD?
GNU/Linux w swojej centrali. (Gentoo, Fedora Core, Mandrakelinux, Zdecydowaną większość (97%) pakie-
http://news.zdnet.co.uk/software/ SUSE, jak i rodzime PLD) jest już do te- tów udało się poprawnie zbudować
linuxunix/0,39020390,39175484,00.htm
go odpowiednio przygotowana. A jak z wykorzystaniem możliwości nowej
Listy pakietów przez LDAP pod tym względem wygląda zbliżające architektury. Pozostałe 3% to głów-
Sean Finney ogłosił, że pracuje
nad implementacją alternatywnej
się kolejne wydanie Debiana ? nie oprogramowanie o zamkniętych
struktury list pakietów używającej Niestety, z racji tego, że obsłu- źródłach, a więc problemy nie po-
Lightweight Directory Access ga wspomnianej architektury weszła winny raczej nikogo dziwić. Jednak-
Protocol (LDAP). Zastosowanie w stabilne stadium trochę za póź- że w grupie problematycznych pro-
filtrów wyszukiwania dla
znaczników czasu przyspieszyłoby
no, Sarge nie będzie jej oficjalnie za- gramów znalazł się również m.in.
uaktualnianie list pakietów, wierało. Wymagałoby to zbyt wielu OpenOffice.org, którego przygotowa-
ale apt jest obecnie zaprojektowany zmian, co jeszcze bardziej opóźniło- nie pomimo otwartości źródeł nie
w oparciu o założenie, by i tak strasznie przeciągające się wy- jest zadaniem trywialnym. Na szczę-
że listę pakietów może pobrać
w dokładnie taki sam sposób, jak
danie. Nie oznacza to wcale, że należy ście, brak 64-bitowej wersji tego po-
same pakiety. zupełnie zapomnieć o duecie Debian pularnego środowiska biurowego wca-
http://lists.debian.org/debian-devel/ i AMD64. Trzeba zadowolić się nieofi- le nie oznacza, że trzeba z niego zu-
2004/12/msg00290.html cjalną, aczkolwiek rozwijaną przez ofi- pełnie zrezygnować. I na tego typu
Poszukiwanie usprawnionego cjalnych deweloperów, stabilną wersją. problemy znalazło się rozwiązanie,
procesu wydawania dystrybucji Purystom pozostaje używanie standar- przynajmniej tymczasowe, gdyż moż-
Lex Hider rozpoczął dyskusję
dowej architektury i386, która jest rów- na uruchamiać 32-bitowe programy
na temat alternatyw dla
obecnego procesu wydawania nież wspierana przez tę generację pro- w specjalnie przygotowanym środo-
dystrybucji, która doprowadziła cesorów AMD. wisku chroot, co obecnie jest z powo-
do komentarzy na temat tego, Obsługa 64 bitów może zostać zre- dzeniem stosowane przez dewelope-
co tak naprawdę oznacza
alizowana na dwa sposoby. Albo bę- rów. Wydaje się to rozwiązaniem ma-
wydanie stabilne, rozmiaru
Debiana oraz zwiększania stopnia dzie to czysty 64-bitowy system bez ło uciążliwym, zwłaszcza dlatego, że
skomplikowania drzewa zależności. możliwości uruchamiania aplikacji ilość problematycznego oprogramo-
Joey Hess w końcu stworzył skompilowanych dla 32 bitów, albo bę- wania jest naprawdę niewielka. Odpo-
stronę Wiki dla propozycji
dzie to tzw. multiarch, który umoż- wiednie przewodniki, jak taki miesza-
dotyczących wydania oraz dla
dyskusji na temat obecnych jego liwia uruchamianie zarówno aplika- ny system szybko i sprawnie przygoto-
wąskich gardeł. cji skompilowanych w środowisku wać, znajdują się w dokumentacji wer-
http://lists.debian.org/debian-devel/ 64-bitowym, jak i tych bardziej po- sji AMD64 Debiana.
2004/11/msg00887.html
pularnych i rozpowszechnionych, czy- Rozwiązania tego typu dotyczą
http://wiki.debian.net/index.cgi?
ReleaseProposals li 32-bitowych. Obecnie deweloperzy głównie systemów zainstalowanych na
Debiana skupiają się na tym, aby stwo- komputerach codziennego użytku (tzw.
Aktualności Debiana
przez RSS rzyć pierwszy z wymienionych rodza- komputery biurkowe). W przypadku
Greg Stark zastanawiał się, jów. A to dlatego, że mieszanie obu ty- serwerów czy też ruterów, a więc ma-
czy Debian Weekly News są pów aplikacji, a co za tym idzie bi- szyn, na których rzadko kiedy można
dostępne przez RSS. Romain bliotek, nie jest jeszcze ustandaryzo- ujrzeć choćby serwer X Window, a co
Francoise zauważył, że
GMANE dostarcza RSS dla wane i praktycznie każda dystrybucja dopiero pakiet biurowy, 64-bitową wer-
wielu list dotyczących Wolnego robi to na swój sposób. Projekt De- sję Debiana można używać bez naj-
Oprogramowania, włączając bian chce usystematyzować te rozwią- mniejszych problemów. Tyle tylko, że
aktualności Debiana (format zania i ustalić pewne standardy, któ- trzeba pogodzić się z faktem, iż jest to
RSS i blog). Obecnie projekt
Debian nie dostarcza jednak re mogłyby być stosowane nie tylko wersja nieoficjalna.
oficjalnego źródła RSS w omawianym przypadku, ale też dla
– poszukiwani są wolontariusze, wszystkich innych architektur, jak też http://debian-amd64.alioth.debian.org/
którzy napiszą odpowiedni dla rozwiązań pozwalających urucha- http://people.debian.org/~taggart/talks/
kod.
http://lists.debian.org/debian-devel/ miać aplikacje skompilowane dla ar- debconf4-multiarch/multiarch.html
2004/11/msg00772.html chitektury sparc na architekturze po- http://alioth.debian.org/docman/
werpc. view.php/30192/21/debian-amd64
Matt Taggart i Tollef Fog Heen pod- -howto.html
czas konferencji DebConf4 przedsta-

16 luty 2005
aktualności
aktualności mandrakelinux mandrakelinux@lpmagazine.org dział prowadzi: Daniel Koć

News
Monkey Bubble
Skype 0.92.0.12
Skype to stosunkowo młody
komunikator internetowy, którego
twórcy skupili się przede wszystkim
K to jeszcze nie zna znakomitej gry
Frozen Bubble ? Chyba tylko nie-
liczni nie mieli dotąd okazji przekonać
na rozmowach głosowych przez sieć się o tym, jak potrafi wciągnąć na długi
(tzw. VoIP), choć możliwa jest także
tradycyjna rozmowa w formie pisanej
czas. Monkey Bubble to jej bliska kuzyn-
oraz przesyłanie plików. Program potrafi ka, klon gry Bust'a'move. Zamiast sym-
działać nawet spoza zapór sieciowych patycznego pingwinka, mamy tu małpę,
(firewall), a protokół Skype korzysta a w tle przewijają się motywy rodem
z połączeń typu p2p, dzięki czemu
zapewnia bardzo dobrą jakość dźwięku
z dżungli, ale od wersji 0.3.2 największą
w swojej klasie. Program jest dostępny atrakcją gry jest możliwość zabawy przez W sieciowej rozgrywce może brać udział
między innymi w postaci pakietów sieć, nawet w cztery osoby. do 4 uczestników
RPM dla dystrybucji Mandrakelinux 9 Najnowsze drobne zmiany w pakiecie
i nowszych. Najnowsze wydanie beta
dla Linuksa nie ma jeszcze wszystkich
dla Mandrakelinux to łatka dla Gstreamera lub wybranie jej przez instalator graficzny,
funkcji dostępnych w wersji dla MS oraz ikonka aplikacji. Instalacja gry polega ale w tym celu należy mieć w systemie za-
Windows, ale działa stabilnie i nadaje na wydaniu w trybie wiersza poleceń admi- rejestrowane repozytorium Contrib.
się już do normalnego używania. nistratora komendy urpmi monkey-bubble http://home.gna.org/monkeybubble/
http://www.skype.com/products/skype/
linux/
Mandrakelinux 10.1 PPC
Kreatywny menedżer pakietów
Z pewnym opóźnieniem w stosunku do
najpopularniejszej wersji na procesory
z rodziny x86 pojawiło się także
wydanie Mandrakelinux 10.1 dla
P roblem różnych, niezgodnych ze so-
bą systemów pakietów dla Linuk-
sa powraca co pewien czas. Oprócz naj-
procesorów PowerPC. W skład
ważniejszych typów, takich jak RPM, DEB
dystrybucji wchodzi najnowsze
jądro 2.6.8.1, podsystem grafiki X11R6.7, czy TGZ, istnieje jeszcze kilka innych for-
OpenOffice.org 1.1.3, Mozilla 1.7.2, matów, ale nawet wśród tych głównych
GNOME 2.6 oraz KDE 3.2. Bardzo pakiety z tej samej rodziny, które zosta-
przydatną nowinką w tej wersji jest
ły przygotowane dla jednej dystrybucji,
możliwość instalowania i ładowania
systemu z zewnętrznych urządzeń nie zawsze udaje się bezboleśnie zaapli-
przyłączanych przez porty USB kować w innej.
i FireWire. Wydanie PPC nie jest Próbą rozwiązania tego problemu jest Interfejs Smart Package Managera nie
oficjalnie dystrybuowane przez przypadkiem jest podobny do Synaptica
Smart Package Manager. Oczywiście, za
Mandrakesoft, gdyż jego rozwój – oba mają tego samego autora
odbywa się siłami społeczności, jego pomocą nie uda się przykładowo
a jego głównym twórcą jest uregulować kwestii niepasujących do sie-
Christiaan Welvaart. bie wersji aplikacji i wymaganych przez bian i Fedora Core. Za jego pomocą są au-
http://qa.mandrakesoft.com/twiki/bin/
nią bibliotek, ale radzi sobie doskonale tomatycznie wybierane najlepsze dostęp-
view/Main/Mandrakelinux101PpcRele
aseNotes w sprawach związanych bezpośrednio ne rozwiązania dla dostępnych wersji pa-
z różnymi typami i wersjami pakietów. kietów, z którymi nie zawsze radzą sobie
Mandrakesoft wyraźnie na plusie
Mandrakesoft ogłosiło, że przyniosło Smart jest w zasadzie meta-menedże- apt-get/apt-rpm czy yum. Logika menedże-
zysk za rok fiskalny 2003-2004 rem, tzn. obsługuje trzy wymienione wy- ra pozwala wybierać do instalacji pakiety
w wysokości 5,18 mln euro. Jest żej najpopularniejsze rodzaje pakietów za o numerze mniejszym niż najnowsze, jeżeli
on wyższy o 33% w stosunku do pomocą odpowiednich programów (rpm, tylko pozwoli to spełnić wszystkie zależno-
poprzedniego roku i zarazem najwyższy
w historii firmy, co oznacza, że w dpkg czy pkgtool ). Z braku odpowiednich ści (plik README omawia dokładnie czte-
wyniku skutecznego przeprowadzenia reguł nie jest możliwe mieszanie zależno- ry takie przykłady), uwzględniając przy tym
planu uzdrowienia finansów problemy ści między pakietami różnego typu, ale zadane priorytety. Smart radzi sobie w sce-
Mandrakesoft są już tylko historią. umie obsługiwać całe ich repozytoria; są nariuszach z niespójnym systemem pakie-
Wzrost był widoczny szczególnie w
drugiej połowie roku i sięgnął aż 49% to obecnie następujące formaty: APT (dla tów, jak również umie go naprawiać.
w stosunku do analogicznego okresu .deb i .rpm), RPM-MetaData, używane Program jest modularny, więc oferuje
poprzedniego roku, podczas gdy przez yum, novellowskie kanały Red Car- do wyboru interfejs tekstowy w stylu apt-
w pierwszej połowie wyniósł 21%. pet, RPM Header List, znane z dysków in- get, interfejs graficzny oparty o bibliotekę
Głównymi źródłami zysku są sprzedaż
przez Internet, licencje oraz opłaty stalacyjnych Red Hata i Conectivy, katalo- GTK+ (za pośrednictwem pygtk, ponieważ
członków Klubu Mandrakelinux. Źródła gi RPM-ów bez indeksów, URPMI z Man- jest napisany głównie w Pythonie) oraz in-
te składają się w sumie na 77% zysków, drakelinuksa, repozytoria Slackware oraz teraktywną powłokę. Autorem SmartPM jest
gdyż pozostałe wpływy pochodzą m.in. dodatkowo, opisy repozytoriów zwiercia- Gustavo Niemeyer z brazylijskiej Conectivy,
ze szkoleń, konsultingu i sprzedaży
detalicznej. dlanych (mirror) w formatach up2date opiekun portu APT-RPM oraz graficznego
http://www.mandrakesoft.com/company/ i Conectivy. menedżera pakietów Synaptic. Smart jest
investors/newsletter/sn041109 Smart Package Manager był dotąd te- w tej chwili w fazie testów beta.
stowany na dystrybucjach Conectiva, De- http://smartpm.org/

18 luty 2005
aktualności
aktualności aurox aurox@lpmagazine.org dział prowadzi: Karol Kozimor

Uaktualnione PHP
News
Aurox w USA

J uż 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
funkcji obsługi wyrażeń regularnych
(perl compatible regular expressions).
Zamiast wyniku skryptu jest wtedy wy-
Jest duża szansa, że już
niedługo Aurox trafi do Stanów
Zjednoczonych. Zakończono
się przy próbie wykorzystania pakietów świetlany komunikat podobny do nastę- właśnie prace nad wersją 10.1
US i w tej chwili trwają rozmowy
korzystających z wbudowanych w PHP pującego: Warning: preg_match: inter- z amerykańskimi sieciami
nal pcre_fullinfo() error -3. Powodem i dystrybutorami. Jeśli negocjacje
jest skompilowanie PHP z systemową bi- zakończą się sukcesem, to
blioteką obsługi wyrażeń regularnych, w pierwszym kwartale 2005 roku,
pierwsza partia największej polskiej
z którą najwyraźniej sobie nie radzi. dystrybucji Auroksa popłynie do
Rozwiązaniem jest pobranie uaktualnio- Stanów Zjednoczonych. Nie będzie to
nego pakietu z repozytoriów Auroksa pierwsza podróż Auroksa za ocean;
lub przekompilowanie pakietu z obsłu- od kilku miesięcy hiszpańska wersja
Auroksa jest dostępna w Meksyku.
gą wewnętrznej biblioteki pcre (należy
zmienić opcję --with-pcre-regex=/usr Aurox
na komputerach Maxdata
na --with-pcre-regex). Maxdata, niemiecki producent
sprzętu komputerowego,
Sklep z produktami auroksowymi również
http://aurox.org/ kontynuuje dołączanie systemu
wykorzystuje PHP
http://php.net/ Aurox do notebooków i modeli
desktop. Od stycznia 2005 roku
Zmiany w Auroksie 10.2 Aurox 10.1 jest dołączany do modeli
m-book, eco, vision oraz

P race nad Auroksem 10.2 dobiegają po-


woli końca. W odróżnieniu od zmian
w dwóch poprzednich wersjach, popraw-
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,
serii Pro i wszystkich komputerów
PC. Jak mówi Anna Gidyńska,
dyrektor Działu Software
i Hardware firmy Aurox, w tej
ki mają tu charakter wybitnie ewolucyjny. działającego teraz szybciej i lepiej radzące- chwili trwają rozmowy z pozostałymi
Są to przede wszystkim zmiany związane go sobie z zależnościami. Cieszy oko KDE dystrybutorami komputerów PC
z bezpieczeństwem: np. aktualizacja Se- 3.3.2, poprawiające błędy poprzedniej wer- oraz notebooków. Być może już
niedługo coraz więcej firm będzie
curity Enhanced Linux, zaawansowanego sji. Dodatkowo, pojawiły się nowe sterow- oferować Auroksa jako alternatywę
systemu zarządzania dostępem, rozwijane- niki do bezprzewodowych kart sieciowych dla innych systemów operacyjnych,
go przez National Security Agency. Oprócz i usprawniona została praca z niektórymi dołączanych do nowych
tego, Postfix, przez wielu ekspertów uwa- laptopami. Mamy nadzieję, że wersja 10.2 komputerów.
http://maxdata.de/
żany za bezpieczniejszy, zastąpił Sendma- będzie sprawiać użytkownikom jeszcze
ila w roli domyślnego serwera poczty. Do- więcej satysfakcji niż wersja poprzednia. Nowe usługi w Nowym Roku
Od stycznia ruszyła testowa
datkowo, miejsce MySQL 4.0 zajęła seria
usługa Internet Update. Dzięki
4.1, uznana za gotową do środowisk pro- http://aurox.org/ 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.

Prace nad nowym Auroksem trwają ...

www.lpmagazine.org 19
aktualności
aktualności gentoo gentoo@lpmagazine.org dział prowadzi: Witold Kieraś

News Najwyższa pora na jądra 2.6.x


Gentoo na DVD
Gentoo Store oferuje w sprzedaży
pełną wersję 2004.3 Gentoo
G entoo to jedna z dystrybucji, któ-
re najszybciej oferują swoim użyt-
kownikom dostęp do najnowszych wer-
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ę
Linux dla architektury x86,
w tym pakiety binarne dla wszystkich sji oprogramowania, a to za sprawą syste- z dobrym przyjęciem ze strony użytkow-
wspieranych podarchitektur, czyli x86, mu Portage. Jednocześnie, czytając doku- ników i testerów. Ponadto, częściowa mi-
i686, Pentium 3, Pentium 4 i Athlon mentację Gentoo, na bieżąco aktualizowa- gracja już się dokonała – w wersji 2004.3
XP. Wszystko to na jednej bootowalnej
płycie DVD. W sklepie dostępny jest ną, można odnieść wrażenie, że jej twórcy dla mniej popularnych architektur, takich
również zestaw dwóch płyt DVD mają bardzo konserwatywny stosunek do jak ppc, ppc64, amd64 czy ia64, poleca-
zawierających kompletne archiwum świeżo wydanych wersji różnych progra- ną wersją jądra była 2.6.x. W przypadku
distfiles wersji 2004.3 Gentoo, mów. Przypadkiem skrajnym jest tutaj ją- architektury x86, najpopularniejszej, a za-
w tym kody źródłowe programów, za
wyjątkiem sekcji gier, którą pominięto dro systemowe – w czasie gdy większość tem i wymagającej największej ostroż-
ze względu dystrybucji dawno już przeszła na jądra ności, zdecydowano się odłożyć termin
na brak miejsca na płytach. z gałęzi 2.6.x, niemal rok po jego premie- ostatecznej migracji.
Zyski ze sprzedaży zostaną częściowo rze, twórcy dokumentacji Gentoo wciąż Pieczołowitość i precyzja, z jaką de-
przekazane na konto Gentoo
Foundation. polecają jako domyślne jądro 2.4.x. Wydaje weloperzy Gentoo podchodzą do oficjal-
http://store.gentoo.org/ się, że jest to zupełnie świadoma polityka nej migracji na jądro z nowej gałęzi, jest
deweloperów, ale ten stan nie może prze- naprawdę imponująca. Tym samym udało
Repozytorium skryptów
Pomysł stworzenia centralnego cież trwać zbyt długo, bo praktyka użyt- im się połączyć wodę z ogniem – uczynili
repozytorium skryptów kowników zweryfikuje nawet najbardziej z Gentoo dystrybucję zawierającą naj-
dla Gentoo, pomocnych twarde założenia teoretyczne. Ogrom no- świeższe oprogramowanie, pozostając
w administrowaniu systemem,
wości, które przynosi jądro 2.6.x – od ob- jednocześnie konserwatywną niczym, nie
powstał już ponad rok temu. Wówczas
z powodu braku rąk do pracy projekt sługi wielu nowych urządzeń, aż po pod- szukając daleko, Debian, co jest cechą
nie wyszedł poza fazę planów. Patrick system dźwięku ALSA – powoduje, że ra- niezwykle cenioną przede wszystkim
Laue, jeden z deweloperów Gentoo, czej niewielu użytkowników decyduje się w środowisku produkcyjnym.
postanowił wziąć sprawy w swoje ręce
na instalację starego jądra.
i stworzył prowizoryczne repozytorium
skryptów, które być może przerodzi się Na szczęście już wkrótce, bo od wer- http://www.gentoo.org/doc/en/
z czasem w oficjalną część dystrybucji. sji 2005.0, domyślnym jądrem Gentoo sta- migration-to-2.6.xml
Użytkownicy mogą wysyłać Patrickowi
swoje skrypty. Emerge graficznie
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
G dyby mierzyć zapotrzebowanie na
oprogramowanie liczbą powstających
projektów mających spełniać żądane funk-
licencyjne.
cje, to z pewnością graficzny interfejs dla
http://gentooexperimental.org/scripts/
http://www.gentoo.org/proj/en/glep/ Portage i polecenia emerge znalazłyby się
glep-0015.html w czołówce. Najpierw był projekt KPorta-
Gentoo preinstalowane ge – jak łatwo się domyślić, miał być to pro-
Luksemburska firma Genesi gram związany z KDE. Niestety, autorom
S.a.r.l. rozpoczęła sprzedaż zabrakło zapału, aby doprowadzić go do
swoich komputerów Open wersji 1.0, a obecnie zniknął on już nawet
Desktop Workstations, opartych
z drzewa Portage. Gentoo nie znosi próżni, Praca z Guitoo
na procesorze PegasosPPC,
z preinstalowanym systemem Gentoo więc mamy obecnie co najmniej trzy rów-
Linux 2004.3. To pierwszy przypadek nolegle rozwijane projekty mające spełniać sprawdzającą najnowsze raporty bezpie-
oferowania sprzętu z Gentoo na podobne funkcje. Dwa z nich to projekty czeństwa GLSA (Gentoo Linux Security Ad-
pokładzie – mamy nadzieję, że nie
ostatni. dla KDE – pierwszy, Guitoo, ma ambicję visories). Dzięki Gentoo Watcher możemy
http://www.genesi.lu/ bycia oddzielną aplikacją, natomiast drugi, dosłownie jednym kliknięciem prawego
Larry the Cow Superstar
Kentoo, integruje się z Centrum Sterowania przycisku myszy przesłać do Guitoo żąda-
Specjalnie z okazji zorganizowanego KDE. Trzeci z wzmiankowanych projektów nie aktualizacji wybranego pakietu.
niedawno we Włoszech Gentoo-Day to Porthole, oparty na GTK. Interfejsy graficzne mają swoich zwo-
(zwanego też G-Day), Peach, włoski Ze wszystkich trzech chyba najcie- lenników i przeciwników. Dodatkowo,
użytkownik Gentoo i stały bywalec
forum, stworzył kilka grafik i plakatów.
kawiej prezentuje się Guitoo, bo oprócz w przypadku interfejsu dla Portage, ci
Na większości z nich widnieje Larry the standardowych funkcji przeszukiwania pierwsi poróżnią się jeszcze co do wybo-
Cow, nieoficjalna maskotka dystrybucji. drzewa i dokonywania uaktualnień sys- ru jednego z nich. Warto samemu spraw-
Swoje prace Peach udostępnił na temu, oferuje również narzędzie Gentoo dzić, o co tak właściwie chodzi i zainsta-
licencji GPL.
http://forums.gentoo.org/
Watcher, będące aplikacją ukrytą w tacce lować wszystkie...
viewtopic.php?t=257123 systemowej i śledzącą zasoby RSS http://guitoo.sourceforge.net/
strony http://www.gentoo.org/ w poszuki- http://www.ralfhoelzer.com/kentoo.html
waniu najnowszych pakietów, a także http://porthole.sourceforge.net/

20 luty 2005
aktualności
aktualności pld pld@lpmagazine.org dział prowadzi: Piotr Skwarna

Zarządzanie pakietami w PLD News

S tandardowym narzędziem do za-


rządzania pakietami w PLD Linux
jest Poldek. Dzięki niemu możemy za-
Osoby ceniące bardziej wygodną ob-
sługę pakietów na pewno zainteresu-
je Poldex – interfejs do Poldka, napi-
Dokumentacja PLD
Użytkownicy korzystający
z dystrybucyjnej gałęzi 2.0 lub osoby
planujące wkrótce ją zainstalować
instalować, uaktualnić bądź usunąć z sany w Perlu, posiadający udogodnie- nie są pozostawieni samym sobie,
systemu dowolne pakiety. Poldek ob- nia, takie jak: ponieważ grupa deweloperów
sługuje zależności w pakietach, dzięki przygotowała świetną dokumentacje
do tego wydania, znajdującą się pod
czemu nawet początkujący użytkow- • sortowanie pakietów według
adresem http://pl.docs.pld-linux.org/.
nik nie będzie miał problemów z in- nazwy, kategorii (zainstalowany/ Warto również dodać, że ciągle
stalacją. Obsługuje różne źródła pa- niezainstalowany) oraz grup, do potrzeba nowych ludzi do rozbudowy
kietów: dysk, ftp, http czy rsync. Wiel- których należą pakiety (bardzo kolejnych działów, jak i tłumaczenia
całości na angielski.
ką zaletą jest również możliwość ak- przydatne np. gdy chcemy przej-
tualizacji lokalnych indeksów pakie- rzeć, jakie mamy gry w pakietach); Rotacja językowa
tów w postaci łat, dzięki czemu, przy • możliwość kolorowania nazw pa- Wraz ze zbliżającym się wydaniem
PLD Ac deweloperzy PLD zdecydowali
drobnych zmianach, pobieramy jedy- kietów według źródła pochodze- się przenieść rozmowy z listy devel-pl
nie kilkukilobajtowy plik indeksu, za- nia; na devel-en. Ma to na celu pozyskanie
miast kilkumegabajtowej całości, co • bezpośredni dostęp do konfiguracji większej ilości programistów, testerów
na pewno jest ważne zważając na ja- Poldka i samego programu. oraz końcowych użytkowników spoza
granic naszego kraju.
kość polskich łączy. Poldek może pra- http://lists.pld-linux.org/pipermail/
cować w dwóch trybach: wsadowym Osoby przedkładające tryb graficzny pld-discuss-pl/2004-September/
(podobny do apt-get) lub interaktyw- nad konsolę także nie będą miały po- 006034.html
nym (obsługującym dopełnianie nazw wodów do zmartwień, gdyż z myślą Sponsorzy potrzebni
i historie, podobnie jak powłoka). o nich Bartosz Taudul przygotował gra- Niestety, kieszenie deweloperów
W wersji 0.19 diametralnej zmianie ule- ficzną nakładkę na Poldka, napisaną w przeciwieństwie do pomysłów nie
są nieograniczone. Aktualnie projekt
gły pliki konfiguracyjne, gdyż wpro- z wykorzystaniem biblioteki Q t, o przy- PLD potrzebuje USB Pen Drive 256MB
wadzono m.in.: jemnie brzmiącej nazwie Pacman. In- oraz komputera PPC G4 z CDROM
stalacja oprogramowania następuje po- dla ukończenia implementacji obsługi
• obsługę repozytoriów pakietów przez przeglądanie grup, w jakie zosta- szyfrowanych partycji w rc-scripts oraz
geninitrd, a także utworzenia wersji
Fedory i Red Hata; ły skatalogowane pakiety, dzięki czemu PLD Live CD na PPC.
• ułatwiono przeglądanie/instalację nie znając nazw programów możemy ła- http://www.pld-linux.org/Members/
pakietów należących do różnych two znaleźć interesujące nas programy. arekm/SponsorsNeeded
repozytoriów PLD. http://www.yogib.risp.pl/ Nowości w Ac
Osoby, które lubią być na bieżąco,
z pewnością zainteresuje fakt,
że w repozytoriach pakietów test
RAKS Linux Serwer oraz ready można już znaleźć KDE
3.3.1, GNOME 2.8.1 czy chociażby

R AKS Linux Server (RLS) jest dys-


trybucją przygotowaną na po-
trzeby RAKSSQL, zintegrowanego sys-
jące Linuksa. Z tego powodu w menu
głównym instalatora została dołożo-
na nowa pozycja – Uproszczona insta-
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ć.
temu wspomagającego zarządzanie lacja. Po jej wybraniu instalator zada-
w małych i średnich firmach. Zosta- je zaledwie kilka pytań, takich jak zgo- Nowy system kontroli błędów
Od jakiegoś czasu można również
ła ona oparta na jednym z najdyna- da na usunięcie dotychczasowej zawar- korzystać z nowego systemu
miczniej rozwijanych projektów open- tości dysku, profil instalacji czy hasło zgłaszania błędów. Nowe rozwiązanie
source'owych – dystrybucji PLD Linux. administratora, po czym rozpoczyna oparte jest na zmodyfikowanym
Celem jej powstania było stworzenie instalację pakietów. Po jej zakończe- Flysprayu, a dodatkowo można
wykorzystać go do zgłaszania błędów
dystrybucji opartej o system Linux dla niu i restarcie komputera system jest oraz sugestii dotyczących PLD Live
wewnętrznego serwera w firmie. Sys- gotowy do pracy. Dla bardziej zaawan- CD, Rescue CD ... oraz PLD 3.0 (Th).
tem został tak zaprojektowany, aby do sowanych użytkowników dostępne
Własne LiveCD
jego zainstalowania i konfiguracji nie są również wszystkie funkcje stan- Łukasz Pawelczyk, projektując PLD
była konieczna znajomość Linuksa. dardowego instalatora PLD, z których Live CD, zamieścił na płycie skrypty
Po zainstalowaniu zarządzanie serwe- mogą skorzystać osoby chcące mieć do remasteringu, w znacznym stopniu
ułatwiające stworzenie własnej
rem odbywa się poprzez przeglądarkę nieco większy wpływ na proces in-
modyfikacji dystrybucji. Ich użycie
WWW z dowolnego komputera w sie- stalacji. ogranicza się jedynie do skopiowania
ci lokalnej. Live CD na dysk pierwszym skryptem
Podstawowym założeniem całe- http://www.raks.pl/ oraz (po dodaniu lub usunięciu
pakietów Poldkiem) wygenerowania
go projektu było stworzenie dystrybu-
gotowego obrazu iso drugim.
cji przejrzystej oraz łatwej w instalacji
i obsłudze nawet przez osoby nie zna-

www.lpmagazine.org 21
narzędzia deweloperskie

vrvfeavda adfvawsvd
KDevelop
– narzędzie do tworzenia
ghwhrt nf hgg mgfvc
xvbd
rbwbbb

aplikacji z interfejsem
graficznym
Marek Sawerwain

G
dy chcemy poznać jakieś jest poznanie adresu pliku – zakładamy,
narzędzie i sprawdzić, czy że zostanie on podany przez użytkow-
będzie ono przydatne w pra- nika. Następnie, gdy dysponujemy już
cy, dobrze jest wykorzystać adresem, jesteśmy gotowi do wywoła-
je do realizacji jakiegoś zadania. Załóż- nia programu Wget. KDE oferuje gotową
my, że chcemy napisać niewielką apli- klasę o nazwie KProcess, która wspoma-
kację, która będzie stanowił graficzną ga to zadanie. Jej najważniejszą właści-
nakładkę na program Wget. KDE oferuje wością jest fakt, iż pozwala w łatwy
nam bardzo dobry program dla progra-
mistów o nazwie KDevelop. W tym arty-
kule pokażemy, jak z jego pomocą osią-
Instalacja programu
gnąć zdefiniowany powyżej cel, a tym KDevelop
Ponieważ już sporo czasu upłynęło od
samym udowodnimy, że jest on aplikacją
wydania wersji 3.0 programu, to więk-
godną polecenia.
szość dystrybucji Linuksa oferuje ten
program – wystarczy tylko zainstalować
Kilka założeń na początek pakiet zawierający KDevelopa.
Interfejs naszego programu będzie pre- Po instalacji może okazać się, iż nie
zentował się bardzo skromnie. Wystarczą możemy wywołać opcji Uruchom auto-
nam dwa przyciski: jeden do zamknięcia make. Okazuje się, że KDevelop wymaga
okna oraz drugi, którym rozpoczniemy do poprawnej pracy wersji Automake
proces ściągania pliku. Będziemy rów- wyższej niż 1.6, a Autoconf wyższej niż
nież potrzebowali komponentu o typie 2.5. Problem ten pojawia się np. w wersji
QLineEdit, którego nazwiemy Address-
Mandrakelinux 10.1, ale rozwiązanie jest
bardzo proste – wystarczy doinstalować
Text. Umieścimy w nim adres pliku,
odpowiednie pakiety.
który chcemy ściągnąć. Ponieważ pobie-
Z użytkowaniem KDevelopa wiąże
ranie pliku zrealizujemy za pomocą innej się też inny problem, gdyż po utworzeniu
aplikacji (co więcej, będzie ona działała projektu i wykonaniu z nim jakichś prac,
w trybie konsoli), to będziemy musieli może okazać się, że KDevelop nie chce
Na płycie CD/DVD przechwytywać standardowe wyjście, na ponownie wczytać naszej pracy, generu-
Na płycie CD/DVD znajduje się
które Wget wysyła wszelkie komunikaty jąc sygnał 11. Rozwiązaniem jest skaso-
kod źródłowy programu oraz
podczas swojej pracy. Wykorzystamy do wanie w katalogu projektu dwóch plików:
wszystkie listingi z artykułu.
tego celu komponent o typie QtextEdit, pierwszy posiada rozszerzenie kdevses,
O autorze którego nazwiemy MessageBoxText. a drugi pcs.
Autor zajmuje się tworzeniem Podczas instalacji KDevelopa warto
Jak zawsze, warto przygotować nie-
oprogramowania dla WIN32 upewnić się, czy zainstalowana zostanie
i Linuksa. Zainteresowania: teoria
wielki schemat, w którym przedstawi-
dokumentacja, gdyż omawiane narzę-
języków programowania oraz my najważniejsze zdarzenia, które będą
dzie ma bardzo dobry moduł do doku-
dobra literatura. zachodzić w naszym programie. Został mentacji, który bardzo przydaje się pod-
Kontakt z autorem: on przedstawiony na Rysunku 1. Jak czas pisania jakiejkolwiek aplikacji, nawet
autorzy@lpmagazine.org widać, proces ściągania pliku składa się tak prostej jak nasz projekt.
z kilku pomniejszych zadań. Pierwszym

22 luty 2005
kdevelop narzędzia deweloperskie

Rysunek 2. Tworzenie nowego projektu

Projektujemy formularz
Po 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
Rysunek 1. Główne zdarzenia pojawiające się w programie tego pliku można także uzyskać wybie-
rając z menu Plik opcję Nowy.
sposób przechwycić dane kierowane jeszcze raz przycisk Następny. Zobaczy- Po wykonaniu tej operacji jeste-
na standardowe wyjście (ang. stdout) my okno, w którym znajduje się tekst śmy gotowi do utworzenia interfejsu za
oraz na standardowe wyjście o błędach licencji. Będzie on dołączany do każde- pomocą QtDesignera. Niestety, jeśli uży-
(ang. stderr), co czasem również może go pliku nagłówkowego. Jeśli chcemy, wamy nowej wersji KDevelopa, to po
się przydać. aby do każdego takiego pliku były dołą- dwukrotnym kliknięciu na pliku wget_
czane inne informacje, w tym miejscu gui_widget.ui, uruchomi się tylko prze-
Tworzymy projekt możemy to zmienić. Gdy naciśniemy raz glądarka KUIViewer, a nam jest potrzeb-
Pierwszym krokiem jest utworzenie jeszcze przycisk Następny, to tym razem ny QtDesigner. W tym celu wystarczy
nowego projektu w KDevelop. Nasz przycisk zmieni etykietę na Koniec i po prawym przyciskiem myszy wybrać pod-
program piszemy dla środowiska KDE, jego naciśnięciu zostanie wygenerowa- menu Otwórz w i z opcji, które się nam
więc po uruchomieniu programu prze- ny podstawowy szkielet projektu. wyświetlą, wybrać Projektanta Qt.
chodzimy do menu Projekt. Wybie- Zanim zaczniemy go kompilować, Ułożenie dwóch przycisków (Push-
ramy z niego Nowy projekt.... Pokaże należy jeszcze wykonać dwie czynności. Button z sekcji Buttons okna Toolbox)
się okno podobne do tego z Rysun- Z okna Buduj wybieramy opcję Uruchom oraz dwóch komponentów (LineEdit
ku 2. Na liście odszukujemy gałąź C++, Automake. Po kilku chwilach, gdy pro- i TextEdit z sekcji Input) nie powinno
a następnie KDE, gdzie znajduje- gram utworzy wszystkie skrypty, z tego nikomu sprawić trudności, ale trzeba
my pozycję Simple KDE Application. samego menu Buduj wybieramy opcję odpowiednio zadeklarować sygnały.
We Właściwościach musimy podać Uruchom Configure. Wszystkie komuni-
Nazwę Aplikacji. Załóżmy, że projekt katy będą wyświetlane w okienku na
będzie nazywał się wget_gui. Pozosta- dole programu. Dopiero po zakończe-
łe pola mają dla nas mniejsze znaczenie. niu działania skryptu configure możemy
Wybieramy teraz przycisk Następny, aby dokonać kompilacji projektu naciska-
przejść do następnego okna, w którym jąc klawisz [F8 ] lub wybierając z menu
będziemy mogli wybrać system kon- Buduj opcję Buduj projekt. Utworzony
troli wersji. Nam nie jest on potrzebny, program uruchomiamy wciskając klawi-
gdyż tworzona przez nas aplikacja nie sze [Shift]+[F9 ] – z menu Buduj opcja
Rysunek 3. Tworzenie pliku formularza
wymaga pracy grupowej. Wybieramy Wykonaj program.

www.lpmagazine.org 23
narzędzia deweloperskie

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"

Rysunek 5. Tworzenie pliku podklasy


wget_gui::wget_gui() : KMainWindow( 0, "wget_gui" ){
// set the shell's ui resource file
setXMLFile("wget_guiui.rc"); wystarczy wpisać dość podobne wyraże-
nie tworzące nasz formularz:
// new QLabel( "Hello World", this, "hello label" );
new wgetGuiWidget(this, "wget gui", 0); new wgetGuiWidget(this, "wget gui", 0);
}
W ten sposób, po kompilacji programu,
wget_gui::~wget_gui() zamiast etykiety zobaczymy zaprojek-
{ } towany przez nas formularz. Jak widać,
zmiany mają charakter tylko kosmetycz-
#include "wget_gui.moc" ny. Zaletą takiego podejścia jest fakt, że
nie musimy wprowadzać żadnych zmian
w funkcji main. Kod, który został tam
Z menu Edit wybieramy pozycję Slots... Element podklas.... Pokaże się takie okno, wygenerowany, możemy pozostawić bez
i deklarujemy dwie funkcje: Download- jak na Rysunku 5. zmian.
BTN_Slot() oraz CloseAppBTN_Slot(). Jedyne, co musimy zrobić, to wpisać
Następnie wciskamy klawisz [F3] i kli- nazwę klasy: wgetGuiWidget, bowiem Przycisk kończący pracę
kamy myszką na formularzu. Wywo- nazwa pliku uzupełni się samodzielnie. programu
łujemy okno View and Edit Connec- Zwróćmy też uwagę na listę z metodami W tym momencie możemy zająć się
tions, w którym, tak jak to widać na – są tam nasze funkcje (sloty), które zde- obsługą dwóch przycisków, które znaj-
Rysunku 4, podłączamy sygnały clicked finiowaliśmy w programie QtDesigner. dują się w naszym programie. Ich imple-
to dwóch funkcji odpowiadających Jeśli na liście nie zostały wymienione mentacja jest zawarta w pliku wgetgu-
za przyciski ściągania oraz zakończe- powyższe sloty, to niestety trzeba prze- iwidget.cpp. Jest to ten sam plik podkla-
nia pracy aplikacji (nadawcą jest odpo- rwać generowanie podklasy i powrócić sy (ang. subclass), który wygenerowa-
wiedni przycisk, a odbiorcą – formularz, do QtDesignera, aby naprawić ten błąd. liśmy na podstawie formularza z pliku
czyli okno). wget_gui_widget.ui.
Po utworzeniu pliku w formacie ui Pierwsze poprawki Zaczniemy od przycisku, którego
przystępujemy do generowania tzw. Projekt, który utworzyliśmy, zawie- zadaniem jest zamknięcie aplikacji. Jak
pliku podklasy. Ta czynność także zosta- ra tylko jeden widget, a jest nim ety- łatwo się domyśleć, jest to bardzo łatwe
ła w pełni zautomatyzowana. Wybiera- kieta Hello World. Należy w jakiś do wykonania. Na początku pliku dołą-
my plik ui z okna Menadżera automa- sposób podmienić ten widget na formu- czamy dodatkowe pliki nagłówkowe:
ke i prawym przyciskiem myszy wywo- larz, który przygotowaliśmy wcześniej
łujemy menu, z którego wybieramy opcję w programie QtDesigner. W pierwszej #include <qapplication.h>
kolejności otwieramy plik o nazwie #include <kapplication.h>
wget_gui.cpp. Zobaczymy plik o treści
podobnej do Listingu 1. Na początku Znajdują się w nich klasy reprezentujące
dołączamy plik nagłówkowy formularza, całą aplikację.
który został przez nas zaprojektowany: W każdej aplikacji KDE mamy dostęp
do obiektu kapp, który reprezentuje
#include "wgetguiwidget.h" obiekt aplikacji. Wywołanie metody quit
spowoduje zamknięcie całego programu.
Następnie, w samym konstruktorze, W naszej aplikacji funkcję do zamknięcia
zamiast linii tworzącej etykietę: programu nazwaliśmy CloseAppBTN_Slot.
Implementacja tej metody sprowadza
Rysunek 4. Projektowanie interfejsu oraz S
new QLabel( "Hello World", this, się do wywołania metody quit z obiek-
podłączanie sygnałów i funkcji
"hello label" ); ty kapp:

24 luty 2005
kdevelop narzędzia deweloperskie

zgodnie z tym, co podałem powyżej, jest


Listing 2. Implementacji metody DownloadBTN_Slot, odpowiedzialnej za ściągnięcie pliku
następujący:
void wgetGuiWidget::DownloadBTN_Slot(){
KProcess *task; *task << "wget –progress=dot";
Reader reader;
*task << AddressText->text();

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


Adres pliku jest odczytywany z wid-
task=new KProcess; getu AddressText. Warto jeszcze usta-
*task << "wget –progress=dot"; lić, jaki typ powłoki zostanie użyty
*task << AddressText->text();
do wywołania polecenia wget. Doko-
task->setUseShell(true, "/bin/sh");
nujemy tego metodą setUseShell. Kod,
reader.edt=MessageBoxText; który wykonuje tę czynność, jest nastę-
pujący:
QApplication::connect(task,
SIGNAL(receivedStdout(KProcess *, char *, int)),
task->setUseShell(true, "/bin/sh");
&reader,
SLOT(read_stdout(KProcess *, char *, int )));
W tym momencie moglibyśmy uru-
QApplication::connect(task, chomić nasz proces metodą start, ale
SIGNAL(receivedStderr(KProcess *, char *, int)), wszystkie komunikaty z programu wget
&reader,
są skierowane na konsolę, z której uru-
SLOT(read_stderr(KProcess *, char *, int )));
chomiamy program. Jeśli robimy to
if(task->start(KProcess::Block, Kprocess::AllOutput)) z poziomu środowiska graficznego, to
{ nie zobaczymy żadnych komunikatów.
MessageBoxText->append(">>> process end <<<"); Z tego powodu należy przechwycić
}
wszystkie dane kierowane na strumie-
else
{ nie stdout oraz stderr. Wykorzystujemy
MessageBoxText->append(">>> process failed <<<"); 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:
void wgetGuiWidget::CloseAppBTN_Slot(){ który musimy utworzyć, aby wykonać
kapp->quit(); polecenie wget. Bardzo istotna jest rów- reader.edt=MessageBoxText;
} nież druga zmienna – reader. Jest to zde-
finiowana przez nas klasa, która jest nam Następnym zadaniem do wykonania jest
Ściąganie pliku potrzebna, aby przechwytywać dane ze podłączenie sygnału przeznaczonego do
Oprogramowanie drugiego przycisku to standardowego wyjścia. odbioru danych skierowanych na stan-
nasze główne zadanie. Będziemy odwo- W następnej linii umieszczamy komu- dardowe strumienie przez obiekt typu
ływać się do innych komponentów, więc nikat tekstowy o tym, że proces wywoła- KProcess. Wykonujemy je metodą con-
konieczne jest dołączenie odpowiednich nia wget właśnie się rozpoczyna. nect z klasy QApplication. Kod z Listin-
plików nagłówkowych. Ponieważ stosu- Teraz możemy przystąpić do właści- gu 2, wykorzystując obiekt reader, prze-
jemy pola edycji o typie QLineEdit oraz wego zadania. Tworzymy obiekt task: chwytuje dane ze standardowego wyj-
QTextEdit, to dołączamy następujące pliki ścia oraz ze standardowego wyjścia
nagłówkowe: task=new KProcess; o błędach.
Podłączenie sygnału dla pierwsze-
#include <qlineedit.h> Po jego utworzeniu możemy usta- go przypadku wygląda w następujący
#include <qtextedit.h> lić postać wywołania polecenia wget. sposób:
Zakładamy, że będzie ono wywoływane
Jak już wcześniej wspomniałem, wy- w następujący sposób: QApplication::connect(task,
korzystujemy również klasę KProcess, SIGNAL(receivedStdout
więc będzie nam potrzebny plik wget --progress=dot S (KProcess *, char *, int)),
nagłówkowy kprocess.h. Po tych http://www.adres.com.pl/katalog/plik.zip &reader,
wstępnych czynnościach przystępuje- SLOT(read_stdout(KProcess *, char *,S
my do implementacji funkcji Downlo- Wielką zaletą klasy KProcess jest moż- int )));
adBTN_Slot. Listing 2 zawiera jej pełny liwość składania polecenia z fragmen-
kod źródłowy. tów za pomocą przeciążonego operato- Polecenie dla strumienia stderr jest
Pierwszym krokiem jest zadeklarowa- ra <<. Pierwszy fragment, co jest oczywi- bardzo podobne.
nie dwóch zmiennych. Pierwsza z nich, ste, musi zawierać nazwę polecenia. Kod, Używając QApplication::connect
task, reprezentuje proces zewnętrzny, w którym budujemy postać polecenia, sięgamy do wewnętrznych mechani-

www.lpmagazine.org 25
narzędzia deweloperskie

AllOutput. Pierwsza wartość oznacza,


Listing 3. Plik nagłówkowy klasy Reader
że nasza aplikacja zostanie zatrzymana
#include <kapplication.h> na czas wykonania się polecenia wget.
#include <kprocess.h> Druga wartość oznacza, że będzie-
#include <qtextedit.h> my przechwytywać wszelkie informa-
cje kierowane do standardowych stru-
#include <qobject.h> mieni wyjściowych. Gdyby istniała
potrzeba zarządzania standardowym
class Reader : public QObject { wejściem, to podajemy wartość KPro-
Q_OBJECT cess::Stdin. Gdyby istniała potrzeba
public: kontrolowania wszystkich trzech
Reader(QObject *parent = 0, const char *name = 0); standardowych strumieni, to należy
w metodzie start podać stałą KPro-
~Reader(); cess::All.
Jak widać na Listingu 2, wywoła-
QTextEdit *edt; nie jest objęte instrukcją warunkową.
public slots: Jeśli metoda zwróci logiczną prawdę,
void read_stdout(KProcess *p, char *b, int l); to oznacza to, że proces zewnętrzny
void read_stderr(KProcess *p, char *b, int l); 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-
zmów, więc ważne są parametry, które W nomenklaturze Qt/KDE metoda odpo- ną nakładką na polecenie wget. Do
podajemy w przypadku tej metody. wiadająca na sygnał nazywa się slotem, implementacji pozostała jeszcze klasa
Pierwszym jest obiekt, który będzie więc w ostatnim parametrze stosujemy Reader.
generował sygnał – nasz obiekt task. makro SLOT.
W drugim określamy rodzaj sygna- Po podłączeniu obu sygnałów Klasa Reader
łu. Zwróćmy uwagę na nazwę funk- możemy uruchomić program wget, Listing 3 prezentuje plik nagłówkowy
cji: receivedStdout. W przypadku stru- wywołując metodę start z obiektu klasy Reader. Jest to, jak widać, klasa dzie-
mienia stderr nazwa funkcji w defini- task. Do przechwycenia danych wysy- dzicząca z klasy QObject, co jest koniecz-
cji sygnału jest następująca: received łanych do stdout i stderr w metodzie ne, aby poprawnie funkcjonował mecha-
Stderr. W obu przypadkach funkcja start trzeba podać dodatkowe parame- nizm sygnałów i slotów. Nie należy doda-
odpowiadająca na sygnał przyjmuje te try: KProcess::Block oraz KProcess:: wać jej samodzielnie do projektu, gdyż
same parametry.
W trzecim argumencie metody con- Listing 4. Implementacja klasy Reader
nect wskazujemy obiekt, który będzie
odbierał sygnał – reader. #include "reader.h"
W ostatnim parametrze musimy wska-
zać metodę, która zostanie wywołana #include <kprocess.h>
z obiektu reader w odpowiedzi na sygnał.
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"
Rysunek 6. Tworzenie klasy Reader

26 luty 2005
kdevelop narzędzia deweloperskie

naszych potrzeb będzie zupełnie wystar- wość wskazania katalogu, w którym ma


czająca. zostać zapisany ściągany plik przez pro-
W ten sposób zakończyliśmy prace gram Wget. Wbrew pozorom, nie jest to
nad naszym programem, którego mo- trudne zadanie.
żemy skompilować i uruchomić. Na koniec chciałbym jeszcze podkre-
ślić jeden element. Nasz program został
Podsumowanie oparty o systemy Automake i Autoconf,
Korzystanie z programu KDevelop roz- a to oznacza, że możemy go kompilować
wiązuje wiele problemów podczas two- poza środowiskiem KDevelop. Tą właści-
rzenia aplikacji w środowisku KDE. Naj- wość, jak widać, zyskaliśmy bez żadnego
Rysunek 7. Program KDevelop i okno lepszym przykładem jest tworzenie inter- wysiłku, gdyż o wszelkie szczegóły dba
dokumentacji fejsu, nawet tak nieskomplikowanego, jak program KDevelop.
ten w naszym programie.
z menu Projekt wystarczy wybrać opcję O przydatności KDevelopa świad-
Nowa klasa.... Ukaże się nam okno, takie czy także fakt generowania kodu źró- W Internecie:
jak na Rysunku 6. Ograniczamy się tylko dłowego na podstawie plików w forma-
do podania nazwy klasy oraz zazna- cie ui, przygotowanych przez program • Strona domowa projektu KDE:
czenia opcji, iż klasą podstawową ma QtDesigner. http://www.kde.org/
być klasa QObject – Utwórz potomka Program KDevelop pomaga także • Strona producenta biblioteki Qt:
http://www.trolltech.com/
QObject. generując wstępne wersje klas, czego
• Strona poświęcona programowi
Do pliku nagłówkowego wygene- dobrym przykładem jest klasa Reader.
KDevelop:
rowanej klasy dodajemy nowe publicz- Zachęcam do zmodyfikowania pro- http://www.kdevelop.org/
ne pole edt, a jest to wskaźnik na typ gramu. Dobrym pomysłem jest możli-
QTextEdit. Ponadto, uzupełniamy ją
o dwie metody. Pierwsza to read_stdout, R E K L A M A
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

Rysunek 8. Program wget_gui

www.lpmagazine.org 27
narzędzia deweloperskie

Scratchbox
– narzędzie
do kompilacji skrośnej
Veli Mankinen

G
dyby przyjrzeć się historii i z tego powodu nie może być uznawa-
komputeryzacji i oprogra- ny za właściwy. Na Rysunku 1 znajduje
mowania, można zauwa- się wykres pokazujący różnice w czasach
żyć, że kompilacja skro- kompilacji pomiędzy kompilacją natyw-
śna jest wynalazkiem względnie nowym. na a skrośną. Docelowy komputer z pro-
We wczesnych latach rozwoju informaty- cesorem ARM posiadał następującą kon-
ki nie była ona w ogóle potrzebna, ponie- figurację: procesor Intel SA110 233 MHz,
waż programy były pisane na konkretny dysk twardy 40 GB, 256 MB pamięci
sprzęt i w ściśle określonym celu. Z tego RAM oraz Debian Sarge z jądrem Linuksa
powodu powtórne użycie tego samego 2.4.25. Wykorzystana platforma do kom-
kodu nie było w obszarze zainteresowań pilacji skrośnej miała następujące para-
programistów. metry: procesor Intel Xeon CPU 2.80
Ponieważ dzisiejsze procesory mają GHz, dysk twardy 80 GB, 2 GB pamięci
bardzo różną moc obliczeniową, to RAM oraz Debian Sarge z jądrem Linuksa
w wielu przypadkach kompilacja aplika- 2.6.8-1-686 i Scratchboksem 0.9.8.2.
cji na innym, bardziej wydajnym kompu-
terze, zajmuje znacznie mniej czasu niż Narzędzia i urządzenia
kompilacja na sprzęcie, który jest bezpo- Typowe użycie kompilacji skrośnej ma
średnim odbiorcą danego oprogramowa- miejsce wtedy, gdy ktoś chce skompilo-
nia. W ten sposób narodziła się idea kom- wać program używany na palmtopie, czy
pilacji skrośnej (ang. cross-compiling). innym niewielkim komputerku o relatyw-
nie małej mocy obliczeniowej procesora.
Co to jest kompilacja Ten artykuł będzie koncentrował się na
skrośna? tworzeniu oprogramowania pod IPAQ-a,
Podstawowa idea kompilacji skrośnej a kompilacja będzie realizowana na szyb-
polega na użyciu pewnego procesora kim komputerze klasy X86. Największą
(HOST) w celu skompilowania progra- korzyść z niego będą miały osoby posia-
mu przeznaczonego na procesory mające dające IPAQ-a albo inny komputer z pro-
inną architekturę (TARGET). Oznacza to, cesorem ARM, na którym została zainsta-
że komputer kompilujący program nie lowana jakaś dystrybucja Linuksa.
może natywnie uruchamiać skompilowa- Osoby posiadające IPAQ-a i zaintere-
nego przez siebie oprogramowania. Jest sowane uruchomieniem na nim Linuksa,
to pierwsze wyzwanie stojące przez kom- względnie kompilowaniem na ten kom-
pilacją skrośną, gdyż wiele środowisk puter programów, powinny zapoznać się
programistycznych wymaga uruchomie- z dystrybucją o nazwie Familiar Linux,
Na płycie CD/DVD nia dodatkowych narzędzi, specyficz- dostępnej pod adresem www.hand-
Na płycie CD/DVD znajdują się nych dla docelowej architektury, już pod- shelds.org. Na wspomnianej stronie
narzędzia omawiane w artykule. czas kompilacji programu. zostały też umieszczone bardzo użytecz-
O autorze Aby uniknąć wspomnianych trudno- ne podręczniki instalacyjne.
Autor jest współtwórcą pakietu ści, niektórzy ludzie wolą kompilować W niniejszym artykule zostanie użyte
Scratchbox. Kontakt z autorem: programy na docelowej platformie. Jak- narzędzie do kompilacji skrośnej pocho-
veli.mankinen@movial.fi kolwiek na to patrzeć, w wielu przypad- dzące z projektu o nazwie Scratchbox. Jest
kach jest to bardzo bardzo wolny proces to środowisko programistyczne do two-

28 luty 2005
scratchbox narzędzia deweloperskie

#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ć
Rysunek 1. Porównanie czasów kompilacji przy kompilacji natywnej i skrośnej napis Hello World!.
Teraz uruchommy komendę file,
rzenia oprogramowania linuksowego pod Wykorzystywana przez nas konfiguracja która da nam dostęp do kilku informa-
wszystkie dystrybucje Linuksa. Podstawo- wymaga około 428 MB wolnego miejsca, cji o pliku binarnym: file hello. Powin-
wą ideą Scratchboksa jest zaoferowanie a i tak dodatkowo jest potrzebne trochę ny one wyglądać podobnie do:
deweloperom środowiska, które działa i więcej na własne działania. Jeżeli katalog /
wygląda jak środowisko docelowe, jesz- nie posiada wystarczającej ilości przestrze- hello: ELF 32-bit LSB executable,
cze zanim środowisko to będzie fizycz- ni dyskowej, to Scratchbox może być zain- Intel 80386, version 1 (SYSV),
nie dostępne. stalowany w innym miejscu, ale wtedy for GNU/Linux 2.2.0, dynamically linked
Środowisko Scratchbox zapewnia me- niezbędne będzie utworzenie odwołania z (uses shared libs), not stripped
chanizm logowania identyczny z tym, który /scratchbox do miejsca docelowego. Reali-
jest stosowany na urządzeniu docelowym. zujemy to za pomocą komendy: Oczywiście, żadna z wyświetlonych
Narzędzia Scratchboksa mogą być używane informacji nie odnosi się aktualnie ani do
zarówno w tym środowisku, jak i poza # ln -s /home/scratchbox /scratchbox Scratchboksa, ani do kompilacji skrośnej.
nim. Użycie narzędzi poza środowiskiem Aby to zmienić, powinniśmy zastosować
Scratchbox jest takie samo, jak dowolnych Po rozpakowaniu pakietów musimy jesz- kompilator wchodzący w skład pakietu
innych narzędzi, które posiada nasz kom- cze skonfigurować Scratchboksa poprzez Scratchbox. Uruchommy komendę:
puter. W takim przypadku jest to zwykłe, wprowadzenie komendy:
może nawet staromodne, podejście do S
# /scratchbox/compilers/arm-linux
kompilacji skrośnej. # /scratchbox/run_me_first.sh -gcc-3.3_3.3.4-glibc-2.3.2.ds1/S
Aktualna stabilna wersja Scratchbok- bin/arm-linux-gcc -Wall -o arm-hello hello.c
sa nosi numer 0.9.8.2. Wszystkie pakie- Będziemy musieli udzielić odpowiedzi na
ty można pobrać ze strony www.scratch- kilka pytań, ale wystarczy, że zaakceptu-
box.org. Następujące z nich są niezbędne: jemy wartości domyślne.
scratchbox-core, scratchbox-libs, scratch-
box-devicetools oraz scratchbox-toolcha- Przechodzimy
in-arm-glibc. Każdy z nich jest udostęp- do konkretów
niany w formie pakietów tar.gz, deb oraz Na początek przedstawimy tradycyj-
rpm. Możliwy jest wybór dowolnego typu ne podejście do kompilacji skrośnej
pakietu. i użyjemy narzędzi Scratchbox w syste-
W przypadku plików tar.gz powinni- mie głównym, podobnie jak większości
śmy rozpakować je do katalogu / (każdy innych narzędzi. Będziemy potrzebowa-
Rysunek 2. Praca ze Scratchboksem
z pakietów): li niewielkiego fragmentu kodu programu
odbywa się przede wszystkim w trybie
do kompilacji. To zadanie dobrze spełni
tekstowym
# tar zxf <nazwa_pakietu> -C / “Hello World”:

www.lpmagazine.org 29
narzędzia deweloperskie

licznych bibliotek i ma skomplikowane do grupy sbox można sprawdzić za


systemy budowania aplikacji. Oznacza pomocą polecenia:
to, że w takiej sytuacji będziemy musie-
li skompilować także biblioteki, a to nie # groups
może odbywać się jednocześnie z kom-
pilowaniem samego programu. Z tego Po zalogowaniu się do Scratchboxa
powodu stosowanie kompilacji skro- powinniśmy skonfigurować środowisko
śnej wymaga pieczołowitych ustawień dla potrzeb kompilacji skrośnej:
całego środowiska budującego apli-
kację. Te ustawienia są często trudne # sbox-config -ct MYTARGET -cn S
i wymagają dużych nakładów czaso- S
arm-linux-gcc-3.3_3.3.4
wych. Środowisko Scratchbox wykonu- -glibc-2.3.2.ds1 -cm qemu-arm
je większość pracy za nas.
Później powinniśmy je aktywować. Reali-
Kompilacja skrośna zujemy to poprzez wpisanie komendy:
w Scratchboksie
Scratchbox jest chrootowanym środo- sbox-config –select-target=MYTARGET
wiskiem kompilacji skrośnej. Oznacza
to również, że dowolna osoba może Teraz prompt powinien ulec zmianie na:
Rysunek 3. Również dla Zaurusa
zalogować się do Scratchboksa, tak jak [sbox-MYTARGET: ~] >.
można tworzyć programy przy pomocy
loguje się na prawdziwym urządzeniu. W środowisku Scratchbox, w nowym
Scratchboksa
W każdym przypadku użytkownicy drzewie /, znajduje się standardowy
muszą zostać dodani do Scratchboksa zestaw katalogów (/bin, /sbin, /usr, /var
Jej użycie nie powinno spowodować przed ich zalogowaniem się (musi to itd.), ale są one zupełnie puste. Dzięki
wygenerowania żadnych komunika- być użytkownik istniejący w systemie, temu możliwe jest zainstalowanie dowol-
tów, ale teraz powinniśmy otrzymać ale nie może to być root). Realizujemy nego innego oprogramowania w miej-
plik binarny o nazwie arm-hello. Tego to za pomocą komendy: scu docelowym, bez martwienia się
pliku nie da się bezpośrednio urucho- o możliwość nadpisania programów
mić, ponieważ jest on przeznaczony S
# /scratchbox/sbin/sbox_adduser nazwa_ komputera głównego. Ponieważ kata-
dla architektury ARM, a znajduje się na użytkownika logi są puste, więc nie mamy rów-
komputerze X86. Jedyne co możemy nież biblioteki C, choć jest ona zwykle
zrobić, to zastosować znowu komendę W celu zalogowania się do systemu wymagana przez komponenty opro-
file, aby przekonać się, że jest to rze- Scratchbox musimy użyć komendy: gramowania. Z tego powodu powin-
czywiście plik binarny ARM. Wpisz- niśmy zainstalować lub skompilować
my więc: file arm-hello, co powinno /scratchbox/login wszystko, czego będziemy potrzebowa-
spowodować wyświetlenie komunika- li w środowisku docelowym. Na szczę-
tu w stylu: Po uruchomieniu tej komendy, powin- ście, tzw. toolchain Scratchboksa zawiera
no pojawić się kilku komunikatów bibliotekę C i możemy ją zwyczajnie sko-
arm-hello: ELF 32-bit LSB executable, powitalnych, a tzw. prompt systemo- piować poprzez wpisanie komendy:
ARM, version 1 (ARM), for GNU/Linux wy ulegnie zmianie np. na: [sbox-HOST:
2.0.0, dynamically linked ~] >. Informuje on, że znajdujemy się # sbox-config --copy-clibrary
(uses shared libs), not stripped pod zarządem Scratchboksa oraz że
używane jest docelowe środowisko o Teraz posiadamy już gotowe środowisko
W ten sposób udało nam się skompilo- nazwie HOST. W Scratchboksie można do kompilowania oprogramowania pod
wać skrośnie nasz pierwszy program! użyć wielu środowisk docelowych, co ARM. Scratchbox jest dostarczany z emu-
Jeżeli dysponujemy IPAQ-iem lub ekwi- oznacza, że możemy kompilować pro- latorem QEMU, który będzie używany
walentnym urządzeniem z uruchomio- gramy pod różne architektury i usta- w dalszych przykładach. Omawiane na-
nym Linuksem, to oczywiście możemy wienia. Warto tu zwrócić uwagę, że rzędzie deweloperskie potrzebuje urzą-
wypróbować działanie tego progra- katalog / nie jest tym samym katalo- dzenia lub emulatora, który ma moż-
mu. Wystarczy przenieść plik arm-hello giem, co na zewnątrz Scratchboksa, liwość uruchomienia programów dla
do IPAQ-a, używając komendy scp, a oraz że będziemy mieli różne katalo- docelowej architektury. Dzięki takiej
następnie normalnie uruchomić. gi domowe. Ponadto, istotne jest, że funkcjonalności możemy mieć środo-
Jeżeli kompilowane fragmenty jeśli dany użytkownik zalogował się wisko kompilacji skrośnej bez pełnej
kodu są niewielkie (podobnie jak nasz do systemu przed dodaniem go jako wiedzy, zarówno o systemie docelo-
program), to do wykonania całości użytkownika Scratchboksa, to musi się wym, jak i o tym, jak należy tę wiedzę
pracy nie potrzebujemy niczego więcej przelogować, aby uzyskać przywileje wbudować w środowisko. Narzędzia
niż kompilatora obsługującego kompi- członkowskie grupy sbox, niezbędne same wyszukają odpowiednie informa-
lację skrośną. Wiele programów Open do uruchomienia omawianego narzę- cje, podobnie jak ma to miejsce podczas
Source, które można znaleźć, używa dzia deweloperskiego. Przynależność kompilacji natywnej.

30 luty 2005
scratchbox narzędzia deweloperskie

Jeżeli ponownie wpiszemy program wiście, glib może być kompilowany Kompilacja powinna zakończyć się
"Hello World" i skompilujemy go za także poprzez skonfigurowanie środo- bez zgłaszania jakichkolwiek błędów,
pomocą komendy: wiska, ale jest to nieco bardziej skompli- a jako jej wynik powstanie plik binar-
kowane niż przykład pokazany wyżej. ny sb-arm-glib-hello. Ponieważ posia-
gcc -Wall -o sb-arm-hello hello.c Dokumentacja o kompilacji skrośnej damy emulator QEMU, więc możemy
glib jest dostępna pod adresem: http:// go teraz uruchomić, w wyniku czego
to kompilacja powinna przebiec bez developer.gnome.org/doc/API/2.0/glib/ powinien pojawić się napis “Hello
błędów, a jako wynik otrzymamy plik glib-cross-compiling.html. World!". Jeżeli teraz wydamy komen-
binarny sb-arm-hello. Po uruchomieniu Teraz, gdy w naszym środowisku dę file, to jej wynik powinien być iden-
komendy: mamy już zainstalowane biblioteki C oraz tyczny jak w poprzedniej wersji pro-
glib, możemy skompilować nowe "Hello gramu “Hello World!". Jeśli wywołamy
file sb-arm-hello World", które będzie używało funkcji jeszcze komendę ldd, która pokazu-
print z biblioteki glib. Oto plik glib-hel- je wykorzystanie bibliotek, to będzie-
otrzymamy komunikat, który pokazuje, lo.c: my mogli zobaczyć, że zainstalowana
że znowu mamy w swoim ręku rzeczy- przed chwilą biblioteka glib jest rze-
wisty plik binarny ARM: # include <glib.h> czywiście używana (ldd sb-arm-glib-
# include <glib/gprintf.h> hello):
sb-arm-hello: ELF 32-bit LSB executable, int main(void)
ARM, version 1 (ARM), for GNU/Linux { libglib-2.0.so.0 => /usr/local/lib/
2.0.0, dynamically linked g_printf("Hello World!\n"); libglib-2.0.so.0 (0x00000000)
(uses shared libs), not stripped return 0; libc.so.6 => /lib/libc.so.6 (0x00000000)
} libgcc_s.so.1 => /lib/libgcc_s.so.1 S
Ponieważ jesteśmy wewnątrz środowi- (0x00000000)
ska Scratchbox, to możemy uruchomić Scratchbox jest dostarczany z narzędziem /lib/ld-linux.so.2 =>
powstały program w emulatorze poprzez pkg-config, które jest używane w celu /lib/ld-linux.so.2 (0x00000000)
wpisanie: ./sb-arm-hello. W rezultacie wygodnego wyciągnięcia wszystkich
otrzymamy wynik w postaci napisu Hello ścieżek dostępu związanych z biblioteką W tej chwili możemy już tworzyć pliki
World!. glib. Domyślnie, glib instaluje się do /usr/ wykonywalne naszych programów i biblio-
local/ i do tego samego katalogu są także tek, a następnie przenosić je na różne
Przykład bardziej instalowane pliki konfiguracyjne pkg- urządzenia oparte o procesor ARM.
skomplikowany config. W poniższym przykładzie użyje- Scratchbox zawiera jeszcze wiele
Kolejny przykład będzie wymagał biblio- my pkg-config oraz tak ustawimy zmien- innych rozszerzeń i narzędzi, które
teki glib z rodziny GTK+. Najpierw ną środowiskową PKG_CONFIG_PATH, pomagają w tworzeniu oprogramowania,
musimy ściągnąć pakiet glib i skompi- że narzędzie znajdzie odpowiednie pliki np. dla Debiana ARM.
lować go dla środowiska docelowego za glib:
pomocą następujących komend: Podsumowanie
# export PKG_CONFIG_PATH=/usr/local/ S Istnieje wiele ciekawych urządzeń, na
S
> wget ftp://ftp.gtk.org/pub/gtk/v2.2/ lib/pkgconfig/ których można zainstalować i urucha-
glib-2.2.3.tar.bz2 miać Linuksa. Uruchomienie czy skom-
> tar -xjvf glib-2.2.3.tar.bz2 Teraz możemy uruchomić pkg-config pilowanie naszych ulubionych progra-
> cd glib-2.2.3 –list-all, co umożliwi nam obejrzenie mów na te urządzenia może być rzeczy-
> ./configure bibliotek zainstalowanych w systemie. wiście trudnym zadaniem. Dzięki odpo-
> make W tej chwili powinno to wyświetlić: wiednim narzędziom oraz z pomocą róż-
> make install nych artykułów z czasopism i ze stron
gmodule-2.0 GModule - Dynamic module internetowych można spowodować, że
Jak można zauważyć, jest to znacz- loader for GLib nie będzie to już tak skomplikowane.
nie bardziej złożony przykład. Użyli- glib-2.0 GLib - C Utility Library A już na pewno jest to bardzo interesują-
śmy skryptu configure, który kompi- gobject-2.0 GObject - GLib Type, Object, ca dziedzina do doświadczeń programi-
luje i uruchamia dużo różnych pro- Parameter and Signal Library stycznych.
gramów w celu wyciągnięcia różnych gthread-2.0 GThread - Thread support
danych o środowisku. Gdybyśmy użyli for GLib
kompilacji skrośnej poza Scratchbok- W Internecie:
sem, wtedy skrypt configure nie ukoń- W celu skompilowania nowego "Hello
czyłby prawidłowo działania, ponieważ World" będziemy potrzebowali następu- – Strona domowa projektu Scratchbox:
nie mógłby uruchomić programów do jącej komendy: http://www.scratchbox.org/
kompilacji. Zerknięcie do pliku /tmp/ – Strona domowa projektu QEMU:
http://fabrice.bellard.free.fr/qemu/
cputransp_$USER.log pozwala na uzy- # gcc -Wall `pkg-config --cflagsS
– Strona domowa projektu Handhelds:
skanie informacji o komendach, które --libs glib-2.0` -o sb-armS
http://www.handhelds.org/
były uruchamiane z emulatorem. Oczy- -glib-hello glib-hello.c

www.lpmagazine.org 31
wywiad

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?
Carlos Velez Baez prezentuje swoją
CVB: W tej chwili w Vidalinux jest nas
dystrybucję Linuksa
troje: dwóch deweloperów oraz jeden
grafik.
KK: Nad czym teraz pracujecie w Vida- tylko pomarzyć. Gentoo jest dystrybu-
linuksie? cją, która jest budowana ze źródeł, więc
CVB: Wszystkie moje wysiłki są skon- dzięki temu jest łatwiej stworzyć własną
centrowane na tym, aby Vidalinux Desk- dystrybucję Linuksa.
top OS jak najlepiej integrował się z sys- KK: Dlaczego skorzystaliście z Ana-
temem zarządzania pakietami. Ponadto, condy, instalatora systemu Red Hata?
zajmuję się programowaniem w GNOME, CVB: Wybraliśmy Anacondę, gdyż
mechanizmami autodetekcji sprzętu oraz nim zacząłem tworzyć instalator,
innymi aplikacjami systemowymi. istniał już projekt rozwijany przez
KK: Dlaczego wybraliście Gentoo Victora Prada. Dokonał on pierwszych
jako bazę dla swojej dystrybucji Linuk- zmian w Anacondzie, aby działała
sa? Jest wiele innych popularnych dystry- poprawnie z Gentoo. Skontaktowałem
bucji, takich jak Mandrakelinux, Fedora się z nim, aby pomóc mu w tym pro-
Core czy SUSE. jekcie, a on przekazał mi wszystkie
CVB: System zarządzania pakieta- źródła. Dzięki temu zacząłem pracę nad
mi, który jest dostępny w Gentoo (Por- Anacondą.
tage), ma więcej zaawansowanych funk- KK: Czy mechanizmy wykrywania
cji niż RPM czy APT. Gdy dokonujesz i konfigurowania sprzętu są waszym dzie-
Na DVD instalacji niektórych aplikacji korzysta- łem?
Na płycie DVD B zamieściliśmy jąc z Portage, rozwiązuje on wszystkie CVB: Nie, są połączeniem bazy
dystrybucję Gentoo Linux 2004.3 zależności, które ma ta aplikacja. Jest danych sprzętu z Knoppiksa oraz narzę-
to coś, o czym inne dystrybucje mogą dzi z Gentoo LiveCD.

32 luty 2005
wywiad z Carlosem Velez Baez wywiad

KK: Czy stworzyliście jakieś własne i komercyjnych dystrybucji, jest system KK: Czy potrzebujecie jakiejś innej
narzędzia, np. konfiguratory czy mene- zarządzania pakietami. Gdy chcesz zain- pomocy od społeczeństwa linuksowego?
dżery pakietów? stalować jakąś aplikację, musisz przeszu- CVB: Tak, gdyż każdy, kto chce włą-
CVB: Tak, wprowadziliśmy wiele kiwać całą sieć w celu zapewnienia jej czyć się do projektu, poprzez kod, doku-
zmian w kodzie Anacondy, włączając w zależności, w szczególności bibliotek, mentację bądź cokolwiek innego, jest
to interfejs dodawania użytkowników których wymaga ta aplikacja, aby zainsta- bardzo mile widziany.
oraz nowy sposób wybierania pakie- lowała się poprawnie. Gentoo jest jedną KK: Jakie zmiany czekają użytkowni-
tów, który będzie dostępny w VLOS 1.1. z najbardziej zaawansowanych dystrybu- ków Waszej dystrybucji w Vidalinux OS
Ponadto, planujemy przygotować pro- cji Linuksa, a z systemem Portage otrzy- Desktop 1.1?
gram, zbliżony do Red Carpeta Ximia- muje się pełną kontrolę nad swoim syste- CVB: VLOS 1.1 będzie miał wiele
na, do instalowania pakietów binarnych mem operacyjnym. zmian i poprawek, m.in. system udev,
w VLOS-ie. KK: A w jak sposób współpracujecie NPTL, GNOME 2.8, KDE 3.3.1, jądro 2.6.9,
KK: A jakie pakiety są teraz wykorzy- z deweloperami Gentoo? wsparcie dla dysków twardych SATA
stywane w Vidalinuksie? Źródłowe czy CVB: Tworzymy ebuildy i zgłaszamy i SCSI, wykrywanie urządzeń USB pod-
binarne? błędy. Myślę, że przez tworzenie VLOS, łączanych do systemu, instalator bazujący
CVB: Używamy obu rodzajów pakie- który bazuje na Gentoo, ale jest łatwiej- na Fedora Core 3 oraz wybór pakietów,
tów. szy w instalacji, oferujemy Gentoo roz- które można zainstalować.
KK: Dlaczego przygotowujecie swój wiązanie odpowiednie dla typowych KK: A jakie macie plany na dalszą
system dla czterech architektur: p4, i686, użytkowników. przyszłość?
athlonxp i amd64. Czy to nie za dużo, KK: Istnieją dwie wersje Vidalinux CVB: Mamy bardzo dużo planów,
albo może za mało? Desktop OS: publiczna (download) i do włączając w to serwerową edycję VLOS,
CVB: Takie dystrybucje Linuksa, jak kupienia. Jaka jest różnica pomiędzy nimi wersję typu LiveCD, aplikację do zarzą-
Fedora Core, Mandrakelinux czy SUSE, i dlaczego zdecydowaliście się je przygoto- dzania instalacją pakietów oraz wspar-
wykorzystują domyślną architekturę do wać. Czy nie jest możliwe w wersji down- cie w Anacondzie dla wielu systemów
kompilowania wszystkich swoich pa- load zainstalowanie OpenOffice.org, Evo- plików, w tym dla Reiser4fs.
kietów. My kontynuujemy tradycję Gen- lution, Firefox czy innych poprzez wyko- KK: Na koniec mam pytanie, czy
too optymalizacji wszystkich pakietów rzystanie polecenia emerge? byłeś kiedyś w Polsce. No i czy chciałbyś
poprzez wykorzystanie dostępnych archi- CVB: Główną różnicą są załączo- ją odwiedzić?
tektur preprocesora, co pozwala nam osią- ne aplikacje oraz aplet GDesklets, który CVB: Nie, nigdy nie byłem w Euro-
gnąć dużą różnicę wydajności systemów. dodaje skrót szybkiego uruchamiania pie, ale na pewno w przyszłości ją
KK: Jakie główne problemy napotka- aplikacji, identyczny do tego w syste- odwiedzę, gdyż znajdują się tam piękne
liście podczas przygotowywania tej dys- mie Mac OS X. Tylko we dwójkę pracu- miejsca.
trybucji? jemy nad tym projektem, a musimy prze- KK: Bardzo dziękuję za rozmowę.
CVB: Główne trudności dotyczyły cież opłacać pewne rachunki, takie jak W przyszłym miesiącu nasi Czytelnicy
formatu RPM, wykorzystywanego przez hosting naszych stron, łącze internetowe, będą mieli okazję zapoznać się z VLOS
Anacondę, oraz były związane z błęda- oprawa graficzna i inne rzeczy, które są 1.1, więc możecie spodziewać się spore-
mi, które się w niej znajdują. pokrywane z przychodów ze sprzedaży go odzewu.
KK: Jakie jest twoje zdanie na temat dystrybucji. Jeśli postanowisz korzystać
innych linuksowych dystrybucji, w szcze- z wersji publicznej i potrzebujesz innych
gólności Gentoo. aplikacji dostępnych w sprzedawanej W Internecie:
CVB: Przygodę z Linuksem zaczą- wersji, możesz je zainstalować bez pro-
– Strona domowa systemu Vidalinux
łem od Red Hata, ale gdy odkryłem blemów, ale miej na uwadze, że jeśli sko-
Desktop OS:
Gentoo, nie było już odwrotu. Głównym rzystasz z wersji płatnej, pomagasz nam http://desktop.vidalinux.com/
problemem, typowym dla popularnych w utrzymaniu przy życiu tego projektu.

R E K L A M A

www.lpmagazine.org 33
rozwiązania mobilne

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

O
becne możliwości telefo- czek. Pozwalają one na współpracę pro-
nów komórkowych znacz- gramu z organizerem oraz klientem
nie przewyższają podsta- poczty Ximian Evolution. Komunikacja
wowe zadania, przed któ- z urządzeniami zewnętrznymi (telefona-
rymi stał kiedyś zwykły telefon. Każdy mi komórkowymi oraz komputerami kie-
nowy model jest wyposażony w prosty szonkowymi) odbywa się poprzez port
organizer, z pomocą którego możemy USB, IrDA lub Bluetooth.
zapisywać informacje o spotkaniach
czy wydarzeniach. Bardziej rozbudowa- Instalacja
ne telefony komórkowe pozwalają rów- Testy programu zostały przeprowadzo-
nież na panowanie nad zadaniami, które ne w systemie Aurox Linux. Na stro-
ma do zrealizowania właściciel telefo- nie domowej projektu są do pobra-
nu. Oprócz tego, w każdym telefonie nia odpowiednie pakiety RPM. Ponie-
jest dostępna książka telefoniczna, która waż program jest zbudowany w opar-
pozwala na zapisywanie numerów do ciu o wtyczki, to nie musimy ścią-
znajomych. gać wszystkich pakietów, ale tylko te,
Często wpisywanie nowych spotkań z których będziemy korzystali. Oczy-
do telefonu bywa bardzo niewygodne wiście, najważniejszy jest pakiet z pro-
(choćby ze względu na małe klawisze gramem (multisync). Jeśli będziemy
czy mały wyświetlacz). W takim przy- chcieli synchronizować dane z progra-
padku dobrze jest posiadać komputer mem Evolution, to niezbędna będzie
i za jego pomocą zapisywać informacje również wtyczka multisync-evolution.
w organizerze, a następnie zsynchronizo- Do synchronizacji danych z telefona-
wać ze sobą dane w komórce i kompu- mi komórkowymi będziemy również
terze przy pomocy odpowiedniego opro- potrzebowali pakietu multisync-irmc.
gramowania. Takim właśnie programem W przypadku palmtopa Zaurus odpo-
przeznaczonym dla systemu Linux jest wiednia wtyczka nazywa się multisync-
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-
O autorze
równo PocketPC, jak również Palm oraz
Autor jest studentem piątego roku
Politechniki Śląskiej na Wydziale Zaurus). Umożliwia także wykonywa-
Organizacji i Zarządzania, spe- nie kopii zapasowej danych zapisanych
cjalność "Informatyka w Przed- w organizerze.
siębiorstwie". Kontakt z autorem: Omawiane narzędzie zostało napisa-
Rysunek 1. Ustawienia dla telefonu
autorzy@lpmagazine.org ne dla środowiska GNOME. Jego archi-
komórkowego
tektura jest oparta na mechanizmie wty-

34 luty 2005
multisync rozwiązania mobilne

opie. Jeśli chcielibyśmy wykonać kopię Do każdej z wtyczek mamy opcje


danych z organizera, to niezbędna konfiguracyjne, dostępne pod przy-
okaże sie wtyczka multisync-backup. ciskiem Options. W przypadku Evo-
Po ściągnięciu pakietów, instala- lution są one związane z rodza-
cja przebiega standardowo – posiadając jem synchronizowanych informa-
uprawnienia użytkownika root w konso- cji, natomiast w przypadku tele-
li wydajemy polecenie: rpm -ivh nazwa_ fonu komórkowego – połączenia
pakietu_do_instalacji. W chwili pisanie pomiędzy komputerem a komórką
tego artykułu najnowszą wersją pakie- (jeśli korzystamy z portu podczer-
tu MultiSync była 0.82. Jeśli nasz Linux wieni, należy pamiętać, aby go uru-
Rysunek 2. Tworzenie kopii zapasowej
opiera się o inne pakiety niż rpm, to chomić – w konsoli z uprawnienia-
danych
możemy pobrać ze strony źródła pakietu mi roota należy wydać polecenie
w postaci paczki tgz i samemu je skom- /etc/init.d/irda start). Mamy tutaj
pilować. także opcje związane z danymi, gramie MultiSync, natomiast w Evolu-
Do poprawnego działania synchro- które mają być synchronizowane. tion nie musimy nic zmieniać.
nizacji pomiędzy komputerem a telefo- – Synchronize options – w tej zakład- Przeprowadzone testy wykazały, że
nem komórkowym poprzez port IrDA ce zostały zgrupowane opcje doty- program wywiązuje się doskonale ze
niezbędna jest instalacja pakietu Open- czące częstotliwości synchronizacji swoich zadań. Synchronizacja odbywa
Obex, natomiast jeśli będziemy wyko- danych (Automatically synchronize się bez najmniejszych kłopotów. Pro-
rzystywać Bluetooth, to należy zain- every) – jeśli pasek zostanie prze- gram pozwala na utrzymanie porząd-
stalować pakiet BlueZ. Aby sprawdzić, sunięty do końca w prawo, to syn- ku zarówno wśród kontaktów (książ-
czy w systemie jest zainstalowany dany chronizacja będzie odbywała się po ka telefoniczna), jak i wśród kalenda-
pakiet (jeśli korzystamy z systemu opar- każdej zmianie. Możemy także zde- rza oraz zadań.
tego o RPM), możemy w konsoli wpisać cydować, ile ma wynosić przerwa,
(w przypadku OpenObex): rpm -qa | jeśli połączenie się nie powiodło Tworzenie
grep openobex. Jeśli w rezultacie otrzy- (Retry interval after connect failed ), kopii zapasowej danych
mamy nazwę pakietu wraz z wersją, to a także zdecydować, jakie działania Jeśli zainstalowaliśmy wtyczkę backup,
znaczy, że nasz system zawiera oprogra- ma program podjąć w przypadku będziemy mieli możliwość tworzenia
mowanie niezbędne do działania pro- napotkania problemu podczas syn- kopii zapasowej kontaktów. Tworzy-
gramu. chronizacji danych (Conflicts and my nową parę synchronizacji danych
near duplicates). (pierwszy wtyczka to Evolution,
Synchronizacja – Filters – tutaj możemy zdefiniować a drugi to Backup). Wśród dostęp-
z telefonem komórkowym filtry dla danych różnego rodzaju nych opcji dla kopii zapasowej danych
Pierwsze testy programu przeprowa- oraz zdecydować, jakie czynności ma mamy możliwość ustawienia katalo-
dzimy korzystając z programu Ximian podejmować program. gu, w którym będą przechowywane
Evolution oraz telefonu komórkowego – Sounds – to ostatnia z zakładek, pliki, oraz funkcje zarządzania tymi
(w moim przypadku będzie to telefon w której można ustawić dźwięki plikami.
Sony Ericsson T68i). Po zainstalowaniu odtwarzane przez program – pierw-
programu możemy go uruchomić w kon- szy jest odtwarzany w przypad- Podsumowanie
soli (wpisując mutlisync) lub wybierając ku powodzenia aktualizacji danych, Program MultiSync to na pewno cieka-
z menu. W przypadku KDE, w pasku natomiast drugi jest odtwarzany we rozwiązanie dla wszystkich korzy-
dokującym powinna pojawić się ikonka w przypadku, gdy połączenie zostało stających z organizera elektroniczne-
informująca o tym, że program został nawiązane, ale wcześniej były proble- go. Pozwala utrzymać porządek zarów-
uruchomiony. my z jego uzyskaniem. no wśród spotkań i zadań, jak i kon-
Klikamy na ikonkę, aby wyświetlić taktów. Nie należy również zapominać
główne okno programu, a następnie na Po skonfigurowaniu programu jest o bardzo przydatnej opcji robienia kopii
pasku narzędzi wybieramy ikonę opisa- on gotowy do działania. Ustawiamy zapasowej danych – ta opcja przyda się
ną jako New. W ten sposób przygotujemy komórkę w pobliżu portu podczerwie- na pewno każdemu i pozwoli zabez-
nową parę do synchronizacji. W otrzy- ni, uruchamiamy klienta Evolution (jeśli pieczyć się przed przypadkową utratą
manym oknie (Rysunek 1) mamy cztery do tej pory jeszcze tego nie zrobiliśmy), danych.
zakładki: a następnie klikamy na ikonce Sync. Po
zsynchronizowaniu danych z telefonu
– Plugins – wybieramy w nim te komórkowego oraz Evolution (pierwsza
wtyczki, które będą używane do operacja synchronizacji może chwilę W Internecie:
synchronizacji danych. Aby popraw- potrwać), następne będą odbywały się
– Strona domowa projektu MultiSync:
nie aktualizować dane pomiędzy automatycznie podczas działania pro-
http://multisync.sourceforge.net/
Evolution a komórką, należy jako gramu (np. co określony czas lub pod-
– Strona domowa projektu SynCE:
pierwszą wybrać Ximian Evolution, czas każdej zmiany). I to już wszystko http://synce.sourceforge.net/synce/
a jako drugą – IrMC Mobile Device. – cała konfiguracja odbywa się w pro-

www.lpmagazine.org 35
ZAMÓWIENIE PRENUMERATY
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: pren@software.com.pl
Przyjmujemy też zamówienia telefoniczne: (22) 860 17 67

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

Ilość numerów Ilość zamawianych Od numeru pisma Opłata w zł


Tytuł
w roku prenumerat lub miesiąca z VAT
Software 2.0 (1 płyta CD) 12 250/ 180*
Miesięcznik profesjonalnych programistów

Software 2.0 Extra! (od 1 do 4 płyt CD lub DVD) 6 150 / 135**


Numery tematyczne dla programistów

Linux+ (2 płyty CD) 12 250/180*


Miesięcznik o systemie Linux

Linux+DVD (2 płyty DVD) 12 270/198*


Miesięcznik o systemie Linux

Linux+Extra! (od 1 do 7 płyt CD lub DVD) 8 232/198**


Numery specjalne z najpopularniejszymi dystrybucjami Linuksa

PHP Solutions (1 płyta CD) 6 150


Dwumiesięcznik o zastosowaniach języka PHP

PHP Solutions (1 płyta CD) - Prenumerata .PRO*** 6 445


Dwumiesięcznik o zastosowaniach języka PHP

Hakin9 (1 płyta CD) 6 135


Dwumiesięcznik o bezpieczeństwie i hakingu

Programy dla Twojej firmy (1 płyta CD) 6 135


Oprogramowanie dla małych i średnich przedsiębiorstw

.psd (1 płyta CD + film instruktażowy na DVD) 6 140


Dwumiesięcznik użytkowników programu Adobe Photoshop

Aurox Linux (7 płyt CD) 4 119


Magazyn z najpopularniejszym polskim Linuksem

W sumie
(liczba prenumerat x cena)

* 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- Jeżeli chcesz zapłacić katrą kredytową, wejdź na stronę
lejnych numerach obejmujących prenumeratę (standardowo: 6 numerów). naszego sklepu internetowego:

www.stock.com.pl
UWAGA: Nadesłanie zamówienia jest jednocześnie zobowiązaniem do zapłaty.
Linux+ 07/2004 Linux+ 08/2004
Linux+ 06/2004 (DVD, CD, bez CD) (DVD, CD, bez CD)
(DVD, CD, bez CD)

Linux+ 10/2004 Linux+ 09/2004


(DVD, CD, bez CD) (DVD, CD, bez CD)

Linux+ 11/2004
(DVD, CD, bez CD) Numery archiwalne
Prosimy o przesłanie kuponu pocztą lub faksem.
Prosimy w odpowiednim polu zakreślić numery, które Państwo chcą zamówić.
żółte pola – 24 zł za Linux+

białe pola – 15 zł za Linux+

niebieskie pola – 27.90 zł za Linux+ DVD

zielone pola – 16.50 zł za Linux+ DVD

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

1 2 3 4 5 6 7 8 9 10 11 12
2000
2001
2002
2003
Linux+ 12/2004 2004
(DVD, CD, bez CD)
2004
2004
2005
2005
2005

– 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


L+ 2/2005

i upoważniam(y) Software-Wydawnictwo Sp. z o.o. do wystawienia faktury VAT


bez podpisu odbiorcy.
Linux+ 01/2005
(DVD, CD, bez CD) pieczątka i podpis

Software-Wydawnictwo Sp. z o.o.


ul. Lewartowskiego 6, 00-190 Warszawa, Tel.: (22) 860 17 67
aktualności
oprogramowanie gnome

Nicotine
– klient sieci SoulSeek
Witold Kieraś

N icotine to linuksowy klient sieci wy-


miany plików SoulSeek.
Aby uruchomić Nicotine, musimy naj-
powiednio unikalną nazwę użytkowni-
ka oraz jego hasło – robimy tak zarów-
no w przypadku, gdy mamy już konto
nie. Wpisujemy szukany tytuł lub wyko-
nawcę (np. Sonic Youth) i klikamy przy-
cisk Szukaj. Po chwili zaczną się poja-
pierw spełnić zależności, czyli zainstalo- w sieci SoulSeek, jak i wówczas, gdy wiać kolejne wyszukane pliki, wraz z in-
wać Pythona i odpowiednie biblioteki. chcemy je dopiero założyć. Pozostałe po- formacjami o tym, do jakiego użytkow-
Potrzebujemy przede wszystkim interpre- la w tej zakładce również możemy pozo- nika należy plik, jaki ma rozmiar, z jaką
tera Pythona co najmniej w wersji 2.2.0, stawić bez zmian. prędkością można go ściągnąć, ile użyt-
choć autor poleca wersję 2.3.0 lub nowszą Przechodzimy do zakładki Udostępnio- kownik ma plików do wysłania w kolej-
(pakiet python). Potrzebujemy również ne pliki. Wpisujemy tu kolejno ścieżki: do ce, czy można plik ściągać od razu (tzn.
biblioteki GTK+-2.0 (autor zaleca wer- katalogu przeznaczonego dla plików tym- czy użytkownik ma aktualnie wolny slot),
sję 2.2), ale powinniśmy mieć ją zainsta- czasowych (nie ściągniętych do końca), do jaką plik ma wartość bitrate oraz jaką ma
lowaną, szczególnie, jeśli używamy GNO- katalogu docelowego dla ściąganych pli- długość odtwarzania. Klikając prawym
ME. Ostatnia rzecz to moduł pozwalający ków (znajdą się w nim po całkowitym ścią- przyciskiem myszy na wybraną pozycję
na korzystanie z biblioteki GTK+ z pozio- gnięciu) oraz do katalogu z plikami udo- uzyskujemy dostęp do menu konteksto-
mu Pythona, czyli PyGTK, co najmniej w stępnianymi – tych ostatnich możemy zdefi- wego. Z tego menu możemy polecić Ni-
wersji 1.99.16. Jeśli chcemy samodzielnie niować więcej niż jeden. Dobrze jest zazna- cotine ściągnięcie wybranego pliku (Po-
kompilować ten moduł, to należy pamię- czyć opcję Reskanuj pliki przy starcie pro- bierz plik(i)) lub całego katalogu, w któ-
tać o włączeniu wątkowania (ang. thre- gramu – wówczas program przy każdym rym znajduje się ten plik na dysku użyt-
ading), używając przy wywołaniu skryp- uruchomieniu będzie sprawdzał, czy nie kownika (Ściągnij katalog(i)). Stan pobie-
tu ./configure opcji --enable-thread. udostępniliśmy nowych pozycji. Należy pa- rania wybranych przez nas plików mo-
Skoro spełniliśmy już zależności pro- miętać, że jeśli dodamy do udostępnianego żemy sprawdzić w zakładce Pobieranie.
gramu, to możemy go wreszcie zainstalo- katalogu nowe pliki w trakcie działania pro- Z poziomu menu kontekstowego możemy
wać. Rozpakowujemy najpierw archiwum gramu, to aż do jego zrestartowania nie bę- rozpocząć rozmowę z danym użytkowni-
z programem poleceniem: tar xzvf nico- dą one widoczne dla innych użytkowników kiem (pozycja Wyślij wiadomość – rozmo-
tine-<wersja>.tar.gz i przechodzimy do sieci. Tyle wystarczy do zalogowania się wa zostanie rozpoczęta w zakładce Roz-
nowo utworzonego katalogu (cd nicotine w sieci SoulSeek. Zatwierdzamy zmia- mowa prywatna), sprawdzić informacje
-<wersja>). Niecierpliwi mogą od razu ny przyciskiem OK. Teraz wystarczy po- o nim (pozycja Pobierz info – zostaną wy-
wydać polecenie python ./nicotine. Je- łączyć się z siecią – z menu wybiera- świetlone w zakładce Info użytkownika)
śli chcemy zainstalować program glo- my pozycję Plik–>Połącz. Jeśli wszyst- oraz przeglądać udostępniane przez nie-
balnie (tak, aby miał do niego dostęp ko poszło dobrze, to zostaniemy zalo- go pliki (pozycja Przeglądaj...– pliki zo-
każdy użytkownik), to wydajemy jako gowani. W przypadku problemów na- staną wyświetlone w zakładce Pliki użyt-
root polecenie python setup.py install leży śledzić komunikaty pojawiające się kownika).
--prefix=<ścieżka>, gdzie argumentem w dole okna. Może zdarzyć się, że wybra- W zakładce Wysyłanie wyświetlona
opcji --prefix jest ścieżka do katalogu, ny przez nas login jest już zajęty, a wówczas jest lista plików, które inni użytkowni-
w którym ma zostać zainstalowany Nico- trzeba wybrać inny (do okna konfiguracji cy aktualnie ściągają od nas lub chcą je
tine – zwykle będzie to katalog /usr. Te- możemy powrócić wybierając Plik–>Usta-
raz program jest już zainstalowany – wy- wienia). Zalogowanie nie powiedzie się
starczy wydać polecenie nicotine, aby go również wówczas, gdy w tym samym cza-
uruchomić. sie jesteśmy już zalogowani z tego same-
Przy pierwszym uruchomieniu pro- go konta na innym komputerze (lub nawet
gramu otworzy się także okno konfigu- z tego samego komputera, ale przy pomocy
racji. Będziemy musieli zarejestrować się innego klienta, np. PySlsk).
w sieci SoulSeek i podać m.in. ścieżki do Sygnałem pomyślnego zalogowania
katalogów z plikami na naszym dysku. będzie zmiana naszego statusu na „Do-
W pierwszej zakładce, Serwer, wartość stepny” (druga kratka od lewej na samym
pola Serwer pozostawiamy bez zmian dole okna).
(czyli server.slsknet.org:2240), natomiast Bedą nas interesować dalsze zakładki Rysunek 1. Nicotine ma bardzo przyjemny
i intuicyjny interfejs
w polach Login i Hasło podajemy od- – na początek piąta od lewej, czyli Szuka-

40 luty 2005
GNOME News

GParted 0.0.7
Ukazała się wreszcie nowa wersja
im programy, np. gFTP protokołowi ftp, GParted, czyli Gnome Partition
a Evolution – mailto. Editor, będącego nakładką graficzną
W zakładce Zajęty możemy zdefinio- dla biblioteki libparted, służącej do
obsługi partycji. Minęło sporo czasu
wać, po ilu minutach bezczynności pro-
od poprzedniej wersji, a było to
gramu nasz status zostanie automatycznie spowodowane faktem, że duża część
zmieniony na Zajęty. Możemy też wpisać kodu wymagała przepisania od nowa.
tzw. autoodpowiedź dla tego statusu, któ- W nowej wersji ulepszono obsługę
systemów plików ext2, ext3 oraz
rą zobaczy każdy użytkownik próbujący
ReiserFS, dodano pełną obsługę NTFS
wysłać nam jakąś wiadomość, gdy usta- oraz wzbogacono program o wiele
Rysunek 2. Okno konfiguracji ukaże wiony mamy status Zajęty. W zakładce mniej istotnych dodatków.
się nam przy pierwszym uruchomieniu Info użytkownika wpisać możemy pu- http://gparted.sourceforge.net/
programu
blicznie dostępne informacje o nas, np. GUADEC 2005
że nie lubimy użytkowników, którzy nie W dniach 29-31 maja bieżącego roku
ściągnąć, lecz czekają w kolejce. W os- udostępniają żadnych plików lub co my- w Stuttgardzie już po raz szósty
odbędzie się GUADEC, czyli GNOME
tatniej zakładce, Znajomi, wpisać mo- ślimy o prezydencie naszego kraju. W za- Users and Developers European
żemy loginy naszych przyjaciół, dzięki kładce Blokuj/Ignoruj możemy zarzą- Conference – europejska konferencja
czemu będziemy mieli łatwiejszy dostęp dzać osobami przez nas blokowanymi lub użytkowników i deweloperów
do udostępnianych przez nich plików, ignorowanymi. Możemy dodać użytkow- środowiska GNOME. Organizatorzy
przewidują udział uczestników z około
a oni będą mogli skorzystać ze zdefinio- ników do spisu bezpośrednio poprzez to trzydziestu krajów. Komitet konferencji
wanych przez nas preferencji dla nich. okno (co jest mało wygodne) lub przez zaplanował podzielenie wystąpień na
wspomniane już menu kontekstowe. kilka działów: integracja biurka
Dodatkowe opcje W zakładce Wyszukiwanie możemy zde- i systemu, wsparcie dla multimediów,
standardy biurkowe, oprogramowanie
Skoro już wiemy, jak działa Nicotine finiować filtry działające przy wyszukiwa- biurowe, GNOME dla każdego,
i sieć SoulSeek, to możemy zająć się do- niu plików. Kryterium mogą być frazy, społeczność GNOME, GNOME
pracowaniem konfiguracji programu. Wy- które zawiera lub których nie zawiera na- w edukacji, GNOME w administracji
bieramy zatem menu Plik–>Ustawienia zwa pliku, rozmiar pliku, wartość bitrate, rządowej oraz GNOME na małych
urządzeniach (ang. small devices).
– pojawi się znane już okno konfiguracji. kraj pochodzenia użytkownika udostęp- http://2005.guadec.org/
W zakładce Transfer możemy szczegóło- niającego plik, oraz to, czy użytkownik
AbiWord 2.2
wo zdefiniować szybkość transferu wy- ma w danym momencie wolny slot (tzn. Ukazała się nowa wersja
chodzącego, jak i zasady kolejkowania czy można od razu pobierać od niego wieloplatformowego edytora
plików do wysyłania. Możemy też ograni- plik, czy też trzeba poczekać w kolejce). tekstu AbiWord, będącego częścią
czyć zachłanność innych użytkowników, W zakładce Zdarzenia możemy zdefinio- nieoficjalnego projektu GNOME Office.
Projekt nastawiony jest w dużej mierze
ustawiając limit, do którego dany użyt- wać polecenia wykonywane na plikach na maksymalne ułatwienie przesiadki
kownik może jednorazowo zakolejkować lub katalogach zaraz po ich ściągnięciu, dotychczasowym użytkownikom
udostępniane przez nas pliki. Możemy też np. jeśli chcemy, aby zaraz po ściągnięciu MS Word i trzeba przyznać, że udaje
uprzywilejować naszych znajomych, da- całego katalogu został on przenoszony do się to coraz lepiej. W nowej wersji
umożliwiono m.in. automatyczne
jąc im pierwszeństwo ściągania, oraz wy- folderu /mnt/muzyka/ w naszym katalo- tworzenie spisów treści w dokumentach.
łączyć ich z ustawionych limitów. gu domowym, to w drugim od góry polu Od tej wersji dostępny jest również port
Z opcji w zakładce Blokada krajów w tej zakładce musimy wpisać polecenie: programu dla MacOS X.
możemy skorzystać tylko wówczas, gdy mv $ /mnt/muzyka/. http://www.abisource.com/
mamy w systemie zainstalowaną wspo- Firestarter 1.0
mnianą wcześniej bibliotekę GeoIP. Podsumowanie Minęło już sporo czasu od powstania
projektu Firestarter – graficznej
W tej zakładce możemy zdefiniować SoulSeek to bardzo ciekawa sieć P2P, któ-
aplikacji dla GNOME, przeznaczonej
kraje, z których użytkownicy nie bę- ra wykształciła specyficzną społeczność do budowania zapór ogniowych. Teraz
dą mogli ściągać udostępnionych przez dbającą o zachowanie pewnych zasad. Ni- wreszcie program osiągnął dojrzałość.
nas plików. Wystarczy podać tylko kody cotine to pełnowartościowy klient tej sie- W nowej wersji niemal zupełnie od
początku przepisano interfejs programu.
tych krajów. ci dla Linuksa, nieustępujący funkcjonal-
http://www.fs-security.com/
W zakładce Interfejs możemy zdefi- nością swemu windowsowemu pierwo-
niować własne kolory dla wypowiedzi wzorowi. Użytkownik nie powinien mieć Essays 1743 1.0
Essays 1743 to nowa czcionka autorstwa
wpisywanych w czasie rozmów na soul- kłopotów z jego konfiguracją, choć mo- Johna Stracle'a, wydana na licencji
seek'owym chacie. Z kolei w zakładce Ła- gą zdarzyć się niespodziewane problemy, LGPL (Lesser General Public License).
panie URL-i możemy zdefiniować, jakie np. przeglądanie udostępnianych plików Wzorowana jest na czcionce, jakiej użyto
programy zewnętrzne mają przechwy- pomiędzy dwoma użytkownikami, któ- do złożenia angielskiego wydania Prób
(w angielskiej wersji Essays) Michela de
tywać odpowiednie protokoły (np. gdy rzy są za NAT-em, jest niemożliwe. Są to Montaigne'a, z 1743 roku (stąd nazwa).
w rozmowie ktoś wskaże jakiś adres jednak problemy właściwe wszystkim sie- Projekt osiągnął niedawno wersję 1.0
URL). Domyślnie zdefiniowana jest jedy- ciom P2P i trudno się przed nimi ustrzec, i oferuje obecnie czcionki standardowe,
nie Mozilla dla protokołu http, ale nic nie bez względu na to, jakiego programu i dla pogrubione, kursywę oraz pogrubioną
kursywę.
stoi na przeszkodzie, aby innym proto- jakiej platformy się używa. http://www.thibault.org/fonts/essays/
kołom przyporządkować odpowiadające http://nicotine.thegraveyard.org/

www.lpmagazine.org 41
aktualności
oprogramowanie kde

Krusader
– menedżer plików
Witold Kieraś

U żytkownicy komputerów domo-


wych, którzy pamiętają jeszcze
epokę sprzed kolorowych interfejsów
fam i famlibs, zlib1, arts, libart_lgpl2,
libstdc++5 oraz libpcre0.
Będziemy również potrzebować źró-
a [F10 ] zamyka program. Choć przycisk
[F1] nie jest wyszczególniony, to, podob-
nie jak w Midnight Commanderze, po jego
graficznych, znają z pewnością pro- deł samego programu. Rozpakowu- wciśnięciu otrzymujemy dostęp do doku-
gram Norton Commander – menedżer jemy je poleceniem tar xzvf krusa- mentacji programu.
plików dla systemu DOS. W Linuksie der-<wersja>.tar.gz i przechodzimy do Po panelach możemy poruszać się
jego rolę spełniał (i wciąż spełnia) Mid- nowo utworzonego katalogu (cd krusa- przy pomocy strzałek na klawiaturze
night Commander, będący jego nie- der-<wersja>). Jeśli korzystamy ze źródeł lub przy pomocy myszy, wykorzystując
mal dokładnym klonem. Gdy system z CVS, to musimy utworzyć najpierw skrypt strzałki w lewym górnym rogu główne-
Windows odciął zwykłego użytkownika configure, wykonując polecenie: make -f go okna programu. Przycisk [Tab] przeno-
od interfejsu tekstowego, skończyła się Makefile.cvs. Jeśli korzystamy ze stabilnej si nas z jednego panelu do drugiego.
również kariera Norton Commandera. wersji programu, to możemy od razu wy-
Powstał wówczas Windows Commander konać polecenia ./configure i make, a na- Konfiguracja programów
(dzisiejszy Total Commander) – jego stępnie, jako root, make install. Kompilacja zewnętrznych
graficzny odpowiednik. Oczywiście, i instalacja powinna przebiec bez kłopo- Prawdziwa siła Krusadera tkwi w zaprzę-
w środowisku linuksowym również nie tów, ale jeśli pojawią się jakieś nieprzewi- ganiu do pracy programów zewnętrz-
mogło zabraknąć podobnego programu dziane problemy, to warto przede wszyst- nych. Wybierając z menu programu Usta-
– tak powstał Krusader, menedżer pli- kim zajrzeć do pliku INSTALL w katalogu wienia–>Configure Krusader otrzyma-
ków w stylu Norton Commandera dla ze źródłami, w którym cały proces jest bar- my dostęp do różnych ustawień progra-
środowiska KDE. dzo szczegółowo opisany. Program uru- mu, dotyczących zarówno jego zachowa-
chamiamy poleceniem krusader. nia, jak również wyglądu. Interesuje nas
Instalacja tutaj przede wszystkim zakładka Zależ-
Ponieważ Krusader jest jednym z naj- Podstawowe funkcje ności. W tym miejscu, w zakładce Ogól-
wyżej ocenianych programów dla KDE Naszym oczom ukaże się główne okno ne, możemy zdefiniować, jakie programy
w serwisie KDE-apps.org, pakiety z tym Krusadera – wielu użytkownikom wyda zewnętrzne będą wykonywać odpowied-
programem są dostępne niemal w każ- się ono znajome. Dwa pionowe, bliźnia- nie zadania – zwykle część z tych pól jest
dej dystrybucji Linuksa – płyty instala- cze panele wyświetlają domyślnie zawar- już wypełniona, jeśli Krusader znalazł od-
cyjne powinny być pierwszym miejscem, tość katalogu domowego użytkownika. powiednie programy zainstalowane w sys-
w którym należy szukać tego menedże- Podobnie jak w Midnight Commanderze, temie. Kolejno: df to program tekstowy, ra-
ra plików. Na stronie projektu są dostęp- pod panelami do dyspozycji mamy pio- portujący o wolnym i zajętym miejscu na
ne pakiety dla wielu popularnych dystry- nowy pasek, w którym możemy wpisy- partycjach (posiada graficzny odpowied-
bucji Linuksa. wać polecenia powłoki systemowej. Zaraz nich dla KDE o nazwie kdf ); eject wysu-
Jeśli chcemy zainstalować Krusadera pod nim są umieszczone przyciski ozna- wa tackę CD-ROM-u (prawie na pewno
ze źródeł (np. z repozytorium CVS, czy- czone od [F2] do [F10 ] – można z nich ko- mamy go już zainstalowanego w systemie
li w wersji deweloperskiej), to nie po- rzystać albo przy pomocy myszy, albo kla- i nie ma potrzeby go zmieniać); kdesu to
winniśmy mieć z tym większych proble- wiatury. Ich funkcje również są w więk-
mów. Musimy pamiętać o wcześniejszym szości takie same, jak w Midnight Com-
zainstalowaniu odpowiednich bibliotek manderze – kolejno: [F2] uruchamia wir-
i pakietów z plikami nagłówkowymi (czy- tualny terminal (domyślnie Konsole, ale
li pakiety devel ). Potrzebne będą przede w dalszej części pokażemy, jak zmienić go
wszystkim pakiety libqt3 i libqt-devel, np. na XTerm), [F3] otwiera plik tekstowy
a także kdelibs i kdelibs-devel. Oprócz te- do odczytu, [F4] otwiera plik tekstowy do
go, przy kompilacji niezbędne będą pa- edycji, [F5] kopiuje pliki lub katalogi po-
kiety, które prawdopodobnie mamy już między panelami, [F6 ] przenosi pliki lub
w większości zainstalowane w systemie katalogi pomiędzy panelami, [F7] tworzy
(szczególnie jeśli korzystamy z KDE): nowy katalog, [F8 ] kasuje plik lub katalog, Rysunek 1. Główne okno Krusadera
wygląda znajomo
libjpeg62, libjpeg-devel, libpng3, libmng, [F9 ] zmienia nazwę pliku lub katalogu,

42 luty 2005
KDE News

Wywiad
ze Scottem Wheelerem
Serwis 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
Rysunek 2. MountMan ułatwia montowanie urządzeń i zasobów zdalnych Kaffeine.
http://www.ofb.biz/modules.php?
name=News&file=article&sid=338
graficzne okno proszące o podanie hasła je z pewnością tych użytkowników, któ-
administratora w razie potrzeby uzyska- rzy nie mają zaufania do automatycznych Improving KDE 1.0
Bardzo popularny zestaw łatek
nia takich uprawnień (standardowy kom- monterów nośników, takich jak super- upiększających KDE osiągnął
ponent KDE); kget to menedżer ściągania mount. Wybierając z menu Narzędzia–> wersję 1.0. Wszystkie poprawki
plików, graficzny odpowiednik tekstowe- MountMan otworzymy okno, w któ- zostały przetestowane na
go programu wget; kmail to znany klient rym są wyszczególnione wszystkie pozy- wersji 3.3.1 środowiska i, zdaniem
autora, spisują się poprawnie,
poczty; diff utility – tutaj mamy do wyboru cje zapisane w pliku /etc/fstab – napędy ale nie ma gwarancji ich
zainstalowanie dwóch różnych nakładek CD-ROM i stacje dyskietek, partycje, za- poprawnego działania
na tekstowy program diff do porównywa- soby sieciowe, urządzenia przenośne USB w innych wersjach. Zachęcam
nia zawartości plików tekstowych: xxdiff itp. Teraz klikając na dowolnej z nich mo- do obejrzenia zrzutów ekranowych
– wyglądają naprawdę imponująco.
lub kdiff3; krename – nakładka graficz- żemy dowiedzieć się, czy jest zamonto- http://www.kde-apps.org/content/
na na program rename do grupowej zmia- wana, czy nie. Klikając prawym przyci- show.php?content=16962
ny nazw plików według ustalonego wzor- skiem myszy na wybranej pozycji może-
AmaroK 1.2 beta1
ca; krusader to oczywiście ścieżka do sa- my dany zasób zamontować lub odmon- Ukazała się pierwsza wersja
mego Krusadera. Cztery ostatnie pozycje tować – pod warunkiem oczywiście, że beta nowego AmaroKa
to już standardowe narzędzia systemowe, mamy do tego uprawnienia. Aby uniknąć – zdobywającego coraz
większą popularność odtwarzacza
z pewnością obecne w naszym Linuksie: omyłkowego odmontowania np. ważnej
muzyki dla KDE. W nowej
locate – program do wyszukiwania plików partycji systemowej, warto zabronić Mount- wersji poprawiono m.in. obsługę
w okresowo aktualizowanej bazie danych; Manowi operacji na tym zasobie. OSD i aRts, a także dodano
mount i umount – narzędzia do monto- W tym celu z menu wybieramy Ustawienia wsparcie dla bazy danych
MySQL.
wania i odmontowania urządzeń; upda- –>Configure Krusader–>Zaawansowane
http://www.kde-apps.org/content/
tedb – program aktualizujący bazę danych i przy pozycji MountMan won't (un)mo- show.php?content=9939
o nazwach plików. W zakładce Programy unt the following mount points: po prze-
Dla programistów Qt
kompresujące możemy zdefiniować nie- cinku wymieniamy wszystkie zasoby W serwisie KDE.pl powstał
mal wszystkie możliwe narzędzia do kom- (według punktów montowania), których niedawno dział poświęcony
presji danych (pod warunkiem, że mamy MountMan nie ma prawa ruszać (domyśl- programowaniu z wykorzystaniem
biblioteki Qt. Dział zainaugurowały
je zainstalowane w systemie). nie wymieniona jest tu tylko partycja / ).
trzy artykuły autorstwa Tomasza
W konfiguratorze Krusadera może- Pielecha. Przy serwisie powstało
my również wskazać, jaki program ma Podsumowanie również forum dyskusyjne
być standardowym wirtualnym termina- Krusader to program przede wszystkim poświęcone podobnej tematyce.
http://www.kde.pl/?page=
lem. W sekcji Ogólne domyślnie jest wska- dla tych, którzy przyzwyczaili się do pew-
articles&category=6
zany program Konsole, ale nic nie stoi na nego modelu pracy z plikami. Nawet je- http://qtforum.kde.pl/
przeszkodzie, aby wykorzystać w tej ro- śli do tej pory nie mieliśmy z nim do czy-
li np. XTerm. nienia, to warto poświęcić mu trochę cza-
su, bo z pewnością odpłaci się sowicie.
MountMan Zachęcam do eksperymentowania z tym
MountMan to ciekawa funkcja oferowa- elastycznym menedżerem plików.
na przez Krusadera, która zainteresu- http://krusader.sourceforge.net/

www.lpmagazine.org 43
aktualności
oprogramowanie linuxfresh

SoX
– konwerter formatów
dźwiękowych
Piotr Machej

S pośród narzędzi dołączanych do więk-


szości popularnych dystrybucji Linuk-
sa, SoX (Sound eXchange) wydaje się być
jest to tylko łącze symboliczne wskazujące
na program play) pozwala na nagrywanie
próbek dźwiękowych z domyślnego urzą-
Jeśli chcemy nakładać efekty na na-
sze próbki dźwiękowe, najlepiej najpierw
sprawdzić możliwy do uzyskania efekt.
niedoceniany. Dawniej był wykorzysty- dzenia (/dev/dsp w przypadku Linuksa). W tym celu wydajemy polecenie play
wany w procesie nagrywania płyt au- Nie bez znaczenia jest liczba forma- z odpowiednimi parametrami, np.:
dio, ale od kiedy CDRecord wzbogacił się tów dźwiękowych obsługiwanych przez
w nowe opcje, SoX przestał być niezbęd- SoX. Radzi sobie zarówno z formatami su- # play file.wav echo 0.8 0.9 1000.0 0.3
ny. Nie zmienia to jednak faktu, że ten pro- rowymi (RAW ), z popularnym w Linuksie
gram, przeznaczony do konwersji forma- formatem Ogg Vorbis, ale także z takimi W tym przykładzie odtwarzamy plik
tów dźwiękowych, wciąż jest rozwijany formatami, jak 8svx (Amiga), AIFF, .au, file.wav i nakładamy na niego efekt
i nadal może znaleźć zastosowanie. Wie- AVR, HCOM (Macintosh), WAV, .cdr i in- echa. Korzystając z polecenia man sox
lu użytkowników może odstraszać fakt, że ne. Potrafi odtwarzać i nagrywać dźwięk możemy zobaczyć, że efekt echo ma pa-
SoX jest uruchamiany z linii poleceń, lecz z wykorzystaniem zarówno urządzenia rametry gain-in, gain-out, delay i decay.
jest to jedna z jego zalet. Dzięki temu może /dev/dsp (OSS, ALSA), jak i /dev/audio. Na Możemy podać więcej par liczb delay
być z łatwością wykorzystywany w mniej próbki można nakładać kilkadziesiąt róż- i decay w celu uzyskania kolejnych ech.
lub bardziej rozbudowanych skryptach. nych efektów, wliczając w to echo, chóry Ciekawym rozwinięciem tego efektu jest
A przy tym składnia jego poleceń nie jest (chorus), narastanie i wygasanie dźwięku echos. Przy obliczaniu pierwszego echa
zbyt skomplikowana. Oprócz możliwo- (fade in/out), odtwarzanie od tyłu, zamia- bierze pod uwagę tylko plik wejściowy.
ści konwersji, SoX oferuje również narzę- nę kanałów, zmianę szybkości lub gło- Przy drugim – plik wejściowy i pierw-
dzia do nagrywania i odtwarzania dźwię- śności odtwarzania. Dokładny spis for- sze echo. Przy trzecim – plik wejścio-
ku, a także dodawania różnorakich efek- matów plików i efektów obsługiwanych wy i oba echa. I tak dalej. W przypad-
tów, co sprawia, że jest programem bardzo przez naszą wersję SoX możemy uzyskać ku zwykłego efektu echo, zawsze bra-
wszechstronnym i przydatnym. wydając polecenie sox -h. ny jest pod uwagę tylko plik wejściowy.
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- Rysunek 1. Dzięki SoX nawet muzykę z Amigi możemy przekonwertować na format Ogg
Vorbis
nie z niego. Trzecie polecenie (w zasadzie

44 luty 2005
FRESH News

Quick3dApplet 1_5
Quick3dApplet 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.2
W Internecie można znaleźć
wiele zabawnych animacji i gier
zapisanych w plikach SWF. Swfdec to
Rysunek 2. W dokumentacji możemy znaleźć dokładny opis parametrów poszczególnych biblioteka służąca do renderowania
efektów takich animacji. Chociaż została
zaprojektowana do użytku przy
S tworzeniu wtyczek Flasha dla
W analogiczny sposób możemy wypró- # sox -t ossdsp -c 1 -r 44100 /dev/dsp
programu GStreamer, obecnie jest
bować inne efekty, eksperymentując file.wav praktycznie samodzielną biblioteką
z parametrami aż do uzyskania zadowa- (wymaga jedynie biblioteki libart
lających nas wyników. Opcją -t wskazujemy typ pliku wejścio- do rysowania). Wraz z Swfdec jest
dostarczany odtwarzacz i wtyczka
Teraz już możemy nałożyć odpowia- wego (jego ścieżka to /dev/dsp). Liczbę dla Mozilli. Program jest jeszcze we
dający nam efekt. Jeśli podoba nam się kanałów podajemy w opcji -c (dźwięk wczesnej fazie rozwoju, więc może
echo uzyskane wcześniejszym polece- monofoniczny), a częstotliwość próbko- sprawiać trochę problemów, lecz
niem, możemy zapisać je na stałe: wania w opcji -r. W ten sposób w pli- zapowiada się całkiem interesująco.
W ostatniej wersji wprowadzono kilka
ku file.wav uzyskamy dźwięk nagrany poprawek do wtyczki dla Mozilli.
# sox file.wav file2.wav echo 0.8 0.9 S z mikrofonu. Oczywiście, wcześniej nale- http://freshmeat.net/projects/swfdec/
1000.0 0.3 ży odpowiednio ustawić urządzenie na-
Mutt Folder List 20041122
grywające poleceniem aumix oraz ustawić Użytkownikom Mutta z pewnością
W ten sposób w pliku file2.wav znajdzie właściwe poziomy głośności. przyda się ta łatka. Dodaje ona
się dźwięk z pliku file.wav z nałożonym Zamiast powyższego polecenia może- do tego znakomitego programu
pocztowego przydatną funkcję, czyli
efektem echa. Jak wspomnieliśmy na po- my skorzystać z alternatywy:
boczny pasek ze spisem folderów
czątku, SoX pozwala na konwersję po- pocztowych. Można ten pasek
między różnymi typami plików. Można ją # rec -c 1 -r 44100 file.wav ukrywać i ujawniać wciśnięciem
uzyskać bardzo prosto: jednego klawisza. Oprócz tego,
dostępnych jest kilka możliwości,
Jak widać, upraszcza to polecenie pozwa-
takich jak podświetlanie nazw
# sox file.au file.wav lając nam pominąć kilka opcji. folderów zawierających nowe listy czy
Oprócz wspomnianych już poleceń, konfigurowanie szerokości i kolorów
W przypadku pracy z plikami zawiera- SoX udostępnia jeszcze jedno: soxmix. paska, a także skrótów klawiszowych.
http://freshmeat.net/projects/mutt-
jącymi odpowiednie nagłówki, składnia Spełnia ono praktycznie taką samą funk-
folderlist/
wywołania SoX jest prosta. Jeśli jednak cję, jak sox, lecz z pewnym wyjątkiem
KDocker 1.0 RC2
pracujemy z danymi w formacie suro- – oczekuje na wejściu co najmniej dwóch
KDocker to ciekawy projekt mający
wym RAW, to programowi trzeba do- plików, które następnie miksuje i zapisuje umożliwić dokowanie aplikacji
starczyć nieco więcej informacji o stru- w pliku wyjściowym. Musimy tu pamiętać, w zasobniku systemowym. Jego zaletą
mieniu dźwięku. Chodzi tu o takie in- że wszystkie pliki wejściowe muszą być te- jest to, że działa zarówno w KDE, jak
i w GNOME, więc jeśli nawet aplikacja
formacje, jak częstotliwość próbkowa- go samego typu i mieć tą samą częstotli-
radzi sobie z dokowaniem w jednym
nia (sample rate), precyzja przecho- wość próbkowania. ze środowisk graficznych, to KDocker
wywania danych (np. 8-bitowe bajty Na koniec warto pamiętać o bardzo pomoże jej w drugim. W nowej wersji
i 16-bitowe słowa), kodowanie danych użytecznej opcji -V, która spowoduje, że między innymi dodano obsługę drag
and drop.
(np. u-law, ADPCM) oraz liczba kana- SoX wyświetli więcej informacji o wyko-
http://freshmeat.net/projects/kdocker/
łów. Przykładowo, jeśli chcemy nagrać nywanych czynnościach.
dźwięk z mikrofonu, możemy skorzy-
stać z polecenia: http://freshmeat.net/projects/sox/

www.lpmagazine.org 45
aktualności
oprogramowanie linuxfresh

GFSGL
– menedżer uruchamiania gier
Piotr Machej

W ydawałoby się, że jeśli chodzi


o gry komputerowe, to Windows
bije Linuksa na głowę. Wiele osób na-
przeznaczone dla Linuksa, ale również
te z Windows, które działają pod Cede-
gą, WineX lub Wine. Program ten auto-
GNU Bash oraz program XDialog (do
pobrania ze strony http://freshmeat.net/
projects/xdialog/ ). Pozostałe wymaga-
wet trzyma nadal partycję z systemem matycznie wykrywa pliki instalacyjne nia (Wine, Cedega, GNU Wget, Curl i Lib-
z Redmond tylko po to, aby móc so- umieszczone na płytach CD, a także wy- Curl ) są opcjonalne. Instalacja progra-
bie czasem pograć w ulubione gry. korzystuje informacje zawarte w plikach mu jest bardzo prosta. Co ciekawe, nie
W rzeczywistości, gier działających na autorun.inf /autorun.ini. Możemy wska- potrzebujemy do niej uprawnień admi-
Linuksie jest całkiem sporo, a od ja- zać, który program ma być wykorzysty- nistratora. Uruchamiamy plik z rozsze-
kiegoś czasu wychodzą nawet dedyko- wany do emulacji Windows, a także, co rzeniem .run, pobrany ze strony domo-
wane dla niego wersje rynkowych hi- ciekawsze, możemy wskazać inny emu- wej programu. W tym celu wydajemy
tów. Dodajmy do tego gry, które może- lator, np. komputera Commodore C64 polecenia (dotyczą one najnowszej do-
my uruchomić korzystając z Wine, róż- (o ile mamy taki zainstalowany w sys- stępnej w chwili pisania artykułu wersji
nych wersji WineX lub nowszej Cedegi temie) lub choćby popularny DOSBox. rozwojowej):
(bo pod taką nazwą jest obecnie rozwi- Wszystkie zainstalowane gry są dostęp-
jany WineX), a także gry działające pod ne z jednego menu, do którego możemy # chmod u+x gfsgl-0.91.0-Beta3.run
kontrolą różnych emulatorów (np. Ami- dodawać gry zainstalowane wcześniej. # ./gfsgl-0.91.0-Beta3.run
gi lub Commodore 64). Nie jest tego tak Z GFSGL możemy korzystać zarówno za
mało, prawda? Ale jak to wszystko upo- pośrednictwem interfejsu graficznego, Jeśli polecenia te wykonaliśmy z upraw-
rządkować? jak i linii poleceń. nieniami użytkownika, program zosta-
Z pomocą przychodzi nam pro- Przed instalacją programu należy nie zainstalowany w katalogu ~/gfsgl/,
gram GFSGL (Golden Files Software Ga- upewnić się, że nasz system spełnia je- a łącza symboliczne do plików urucho-
me Launcher). Dzięki niemu możemy go wymagania. Nie są one wielkie. Do mieniowych zostaną utworzone w katalo-
zainstalować w systemie nie tylko gry działania GFSGL wystarczy powłoka 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-
Rysunek 1. Autor GFSGL planuje dodać do niego w przyszłości więcej ciekawych funkcji
lację Windows (np. CVSCedega) oraz
emulator obsługujący pozostałe gry

46 luty 2005
FRESH News

Chess Training Tools 1.2.11


Osoby 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.07
Rysunek 2. Dzięki GFSGL możemy wszystkie gry wywoływać z jednego menu Jest kilka metod rozwijania
swoich umiejętności gry w Go.
Jedną z nich jest rozwiązywanie
problemów. Może być w tym
(np. DOSBox). Oprócz tego, możemy gry z menu. Trzeci sposób to wybra- pomocny program GoGrinder, do
między innymi wskazać punkt monto- nie gry z menu środowiska graficzne- którego jest dołączonych kilkaset
wania napędu CD-ROM oraz ręcznie go (np. KDE lub GNOME), o ile została różnych problemów do rozwiązania.
modyfikować pliki konfiguracyjne. Je- tam umieszczona. Jeśli podczas doda- Ponieważ program wykorzystuje
popularny format SGF, więc
śli nie chcemy zapisywać zmian w pli- wania gry zaznaczyliśmy pole Use Ad- można również korzystać
kach, wciskamy Discard. Aby opuścić vanced Wizard, to będziemy mieli do z tysięcy problemów dostępnych
konfigurację GFSGL, wciskamy przycisk wyboru nieco więcej możliwości. Do- w Internecie.
Done, a następnie Back. kładniej, w przypadku gier Native bę- http://freshmeat.net/projects/gogrinder/
Wybierając Add game możemy do- dziemy mogli wskazać katalog roboczy Linice 2.0
dać grę, która już jest zainstalowana i plik wykonywalny, natomiast w przy- Jednym z bardziej znanych
debuggerów wykorzystywanych
w systemie. W zasadzie może to być do- padku gier dla Windows będziemy mo-
pod Windows jest SoftIce.
wolny program, do którego chcieliby- gli określić emulator charakterystyczny Program Linice to napisany od zera
śmy mieć dostęp z menu GFSGL. Mu- dla tej konkretnej gry. debugger dla Linuksa, posiadający
simy podjąć decyzję, czy dodajemy grę Możemy również instalować gry ko- większość komend znanych z SoftIce.
Może służyć do odpluskwiania
działającą pod Linuksem (Native), czy rzystając z opcji Install a new game oraz
zarówno własnych programów,
też uruchamianą w emulatorze Win- Detect and run Win AutoRun programs. jak też modułów jądra i samego
dows (Windows game) lub innym (Other W tym drugim przypadku GFSGL ko- jądra. Jego instalacja nie wymaga
emulated game). Niezależnie od wy- rzysta z informacji zawartych w plikach rekompilacji jądra systemu.
W nowej wersji autor przede
boru, musimy wpisać nazwę gry (Ga- autorun.inf /autorun.ini w celu urucho-
wszystkim skupił się na oczyszczeniu
me name) i krótką nazwę (Mini name). mienia właściwego instalatora. W razie kodu.
Tą drugą będziemy mogli wykorzysty- potrzeby możemy też uruchomić kon- http://freshmeat.net/projects/linice/
wać do szybkiego uruchamiania gry kretny program z wykorzystaniem emu- Gv4l 2.2.4
w konsoli. Przykładowo, wybierając latora Windows wybierając opcję Addi- Jeśli posiadamy kartę telewizyjną, to
opcję Native możemy podać nazwę gry tional features –>Run target file with. Do do nagrywania interesującego nas
Fortune i krótką fe. W następnym oknie usuwania gier z menu służy opcja Re- filmu lub audycji możemy użyć Gv4l.
Program ten pozwala na zapisywanie
zostaniemy zapytani o komendę, jaką move game. strumieni obrazu i dźwięku
ma być uruchomiona gra. Wpisujemy Program GFSGL zapowiada się z urządzeń V4L (Video For Linux
/usr/games/fortune. Zostajemy jeszcze bardzo interesująco. Pomimo pew- – m.in. tunery telewizyjne i kamery
poproszeni o zatwierdzenie poprawno- nych opóźnień, wciąż jest rozwijany. internetowe) w różnych formatach, np.
XviD, DivX lub surowym. Nowa wersja
ści wprowadzonych danych, po czym Wśród zapowiadanych możliwości war- programu wspiera program Transcode
uzyskujemy informację, że naszą grę to wymienić blokowanie gier hasłem (wykorzystywany do kodowania
będziemy mogli uruchomić na trzy róż- (np. w celu uchronienia dzieci przed obrazu) w wersji 0.6.13 i wyższych.
ne sposoby. Pierwszym z nich jest sko- kontaktem z brutalnymi grami) oraz Oprócz tego, poprawiono metodę
odczytywania danych o kanałach
rzystanie z linii poleceń (mamy do wy- system modułów. z plików konfiguracyjnych Xawtv.
boru: fe, gfsgl fe i gfsgl-gui fe). Drugi http://freshmeat.net/projects/gv4l/
to uruchomienie gfsgl-gui i wybranie http://freshmeat.net/projects/gfsgl/

www.lpmagazine.org 47
aktualności
oprogramowanie linuxfresh

Munin
– generator zestawień
i statystyk
Piotr Machej

K orzystają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. Rysunek 1. Z FAQ dowiemy się również, jak uruchamiać wtyczki z prawami innych
Zarządca (master) łączy się z węzłami użytkowników
(node) w określonych odstępach czasu
i pobiera od nich dane. Następnie składu- rrdtool//index.html ) oraz następujące mo- Dalsze kroki różnią się zależnie od te-
je je w plikach RRD (Round Robin Data- duły Perla: Getopt::Long i HTML::Templa- go, czy chcemy uzyskać zarządcę, czy wę-
base) i w razie potrzeby uaktualnia wy- te. Na komputerach pełniących rolę wę- zeł. W przypadku instalacji zarządcy two-
kresy. Same wykresy można obejrzeć ko- złów musimy zainstalować moduł Per- rzymy użytkownika munin (lub innego,
rzystając z przeglądarki WWW. Munin do la o nazwie Net::Server::Fork. Wszyst- określonego w pliku Makefile.config),
pobierania danych w węzłach wykorzy- kie te moduły są dostępne z archiwum a następnie wydajemy polecenie make in-
stuje wtyczki, które użytkownik może sa- CPAN, więc możemy je zainstalować po- stall-main. Dodatkowo, możemy zain-
modzielnie dobierać, a nawet pisać wła- leceniem perl -MCPAN -e 'install Net:: stalować dokumentację poleceniem make
sne. Węzłem może być dowolny kompu- Server::Fork' i analogicznymi, wydanymi install-doc install-man. Podczas instala-
ter, zarówno w sieci lokalnej, jak i w Inter- z uprawnieniami użytkownika root. cji węzła tworzymy grupę munin (lub in-
necie, nie wyłączając oczywiście samego Archiwum pobrane ze strony domo- ną, wskazaną w pliku Makefile.config),
zarządcy. Dzięki temu możemy łatwo mo- wej projektu Munin należy rozpakować a następnie wydajemy polecenie make in-
nitorować wiele różnych systemów, a na- na każdym z komputerów, gdzie chce- stall-node install-node-plugins. Pozo-
wet tworzyć zestawienia (Munin pozwala my zainstalować zarządcę i węzły. Naj- staje nam zdecydowanie, jakie wtyczki
na dobór wykresów, jakie mają być wy- ważniejsza sprawa to dostosowanie pli- mają działać na danym węźle – od tego
świetlone). ku Makefile.config do naszych potrzeb. zależy, jakie informacje będzie udostęp-
Przed instalacją Munina należy za- Zawiera on wszystkie ścieżki wykorzy- niał zarządcy. Najlepszym sposobem jest
dbać o spełnienie kilku warunków. Mu- stywane przez program, jak również na- wydanie polecenia munin-node-confi-
simy mieć zainstalowanego Perla w wer- zwę użytkownika i grupy, z których pra- gure --shell | sh, które automatycznie
sji 5 lub wyższej. Oprócz tego, na kom- wami będzie uruchamiany Munin. War- włączy obsługę wtyczek proponowanych
puterze pełniącym rolę zarządcy na- to je sprawdzić, gdyż domyślnie ustawio- przez Munin dla naszego systemu. Może-
leży zainstalować RRDTool (ze strony ne są ścieżki do katalogu /opt/munin/, co my samodzielnie dostosować wykorzy-
http://people.ee.ethz.ch/~oetiker/webtools/ niekoniecznie musi nam odpowiadać. stywane wtyczki – wystarczy w katalo-

48 luty 2005
FRESH News

Snortalog 2.3.0c
gu /etc/opt/munin/plugins/ utworzyć do- Teraz już możemy uruchomić węzły Użytkownicy systemu wykrywania
intruzów Snort z pewnością czasem
wiązania symboliczne do plików wtyczek i zarządcę. Węzły powinny działać cały chcieliby sprawdzić, jak wiele ataków
umieszczonych w katalogu /opt/munin/ czas, zbierając dane i oczekując na zapyta- doświadczył ich system i jakie niosły
lib/plugins/. W pliku Makefile.config ka- nia od zarządcy. Najprościej umieścić ich ze sobą zagrożenie. Jednym
talogi te są zdefiniowane odpowiednio wywołanie w plikach startowych: /opt/ z programów to umożliwiających jest
napisany w Perlu skrypt Snortalog.
w zmiennych CONFDIR i LIBDIR. munin/sbin/munin-node (katalog wska-
Analizuje on logi Snorta i generuje
To nie koniec konfiguracji. Musimy zany przez zmienną SBINDIR). Zarząd- przejrzyste raporty w wybranym
zadbać o pliki konfiguracyjne węzłów ca powinien być uruchamiany w regular- formacie (HTML, PDF lub czysty
i zarządcy. nych odstępach czasu, więc warto skorzy- tekst). Oprócz trzech formatów logów
Snorta, potrafi w podobny sposób
W przypadku węzłów należy spraw- stać z usługi Cron. Tworzymy plik cron- analizować również logi Fw-1, Netfilter
dzić plik /etc/opt/munin/munin-node.conf tab.munin o zawartości: oraz IPFilter.
(znów w katalogu CONFDIR). Interesu- http://freshmeat.net/projects/snortalog/
je nas tam szczególnie opcja allow, okre- SHELL=/bin/sh Vobcopy 0.5.14
ślająca, jakie komputery mogą łączyć się MAILTO=gerard Jednym z kroków konwersji filmu
z węzłem. Domyślnie są dopuszczone tyl- */5 * * * * /opt/munin/bin/munin-cron DVD do formatu XviD lub podobnego
(dokonujemy jej przykładowo,
ko połączenia z maszyny lokalnej. Mo- gdy chcemy obejrzeć nasz film na
żemy poniżej dodać kolejne linie allow Następnie wystarczy z poziomu użytkow- komputerze nie wyposażonym
z odpowiednimi wartościami, np. allow nika root wydać polecenie crontab -u w napęd DVD) jest zgrywanie
^192\.168\.0\.1$ (konieczne jest użycie munin crontab.munin. Od tej pory program zawartości płyty na dysk twardy.
W realizacji tego zadania może nam
wyrażeń regularnych). Pozostałe opcje /opt/munin/bin/munin-cron (ścieżka okre- pomóc program Vobcopy, który,
zawarte w pliku zazwyczaj nie wymaga- ślona w zmiennej BINDIR) będzie urucha- wykorzystując bibliotekę Libdvdread,
ją zmiany. miany co 5 minut z prawami użytkowni- kopiuje pliki .vob na dysk,
Inaczej ma się sprawa z plikiem kon- ka munin. Ewentualne wyniki poleceń bę- w razie potrzeby je dekodując
(o ile posiadamy bibliotekę Libdvdcss).
figuracyjnym zarządcy – /etc/opt/munin/ dą przesyłane na konto gerard (tu powin- Program upewnia się, czy na dysku
munin.conf. Tutaj, oprócz nazw katalo- niśmy wstawić nazwę naszego konta). Nie jest dosyć miejsca, a także porównuje
gów, przechowujących pliki RRD, wyge- powinniśmy obawiać się zalewu skrzynki rozmiary skopiowanych plików
nerowane strony WWW, logi systemowe pocztowej – listy otrzymamy tylko w razie w celu sprawdzenia wystąpienia błędu.
Potrafi też skopiować całą zawartość
i pliki blokujące, możemy określić dane problemów (np. gdy nie zainstalowaliśmy wideo płyty DVD lub tylko wybrane
wszystkich węzłów. Najprostszy opis wę- wymaganych modułów Perla). pliki.
zła ma postać: Teraz pozostaje nam otworzyć w prze- http://freshmeat.net/projects/vobcopy/
glądarce plik /opt/munin/var/www/index. FAQtor 0.5
[komputer.domena.pl] html i cieszyć oczy generowanymi statysty- Autorzy bardziej rozbudowanych
address komputer.domena.pl kami. Warto też zapoznać się z dokumen- stron WWW nieraz umieszczają
na stronie sekcję zawierającą
tacją programu, aby lepiej dostosować sta-
odpowiedzi na często zadawane
Oczywiście, możemy też użyć cyfr: ad- tystyki do własnych wymagań. pytania (FAQ). Jeśli lista jest długa,
dress 192.168.0.1. http://freshmeat.net/projects/munin/ 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.21
Jeś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 radzi
sobie 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/
Rysunek 2. Dane o interfejsach sieciowych to tylko część wyświetlanych informacji

www.lpmagazine.org 49
aktualności
oprogramowanie gry

Dominions II
– strategiczna gra fantasy
Michał Niwicki

W 2004 roku firma SharpnelGames


wypuściła na rynek drugą część
gry strategicznej Dominions. Produkt im-
samym początku. Gra zaraz po urucho-
mieniu wita nas łagodną średniowiecz-
ną muzyką i dopracowaną elegancką
Wymagania sprzętowe:
– Pamięć RAM: 64 MB
ponuje dźwiękiem i – co najważniejsze grafiką. Opcje związane z początko- – Dysk twardy: 250 MB
– grywalnością. wymi ustawieniami gry znajdują się na – Procesor: Pentium II 300 MHz
– Karta graficzna z akceleracją 3D
tle zamglonej ascetycznej scenerii zielo-
Co to za gra? nobrunatnego krajobrazu. Każdorazo-
Dominions II to strategiczna gra fanta- wy wybór myszką któregoś z elemen-
sy, przypominająca inne strategie, ale, jak tów menu powoduje kliknięcie pasują- nej, musimy poświęcić trochę czasu
zapewniają jej autorzy, zasadniczo się od ce dźwiękiem do słyszanej w tle muzy- na określenie wielu parametrów mają-
nich różniąca. Tak jak w innych grach te- ki. Złożoność gry jest widoczna już na cych wpływ na przebieg gry. Tworzy-
go typu rozbudowujemy armię, podbija- samym początku, gdy należy wybrać my boga (bo właśnie w niego wcie-
my sąsiadujące terytoria, kontrolujemy si- bohatera (boga), zdefiniować parame- limy się podczas gry), określamy,
ły magiczne i dbamy o rozwój swojego try królestwa i określić, kto będzie na- w jakim stopniu i nad jakimi siłami bę-
królestwa. Dominions II posiada dodat- szym przeciwnikiem. dziemy sprawować kontrolę (ogień,
kową głębię, która powinna usatysfak- Wszystko to powoduje, że gdy już wiatr, woda, ziemia, gwiazdy, śmierć,
cjonować nawet najbardziej wybrednego na dobre rozpoczniemy grę, możemy natura oraz krew) oraz wybieramy po-
amatora gier strategicznych – gra nie spro- być zaskoczeni szybkością upływają- łożenie naszych ziem i definiujemy ich
wadza się jedynie do prowadzenia regu- cego czasu – Dominions II rzeczywi- charakter. Następnie tworzymy nową
larnych bitew z sąsiadującymi księstwami, ście wciąga. grę – wybieramy dodatkowych graczy
ale wymaga od gracza zapoznania się ze (sterowanych przez człowieka lub kom-
światem, w którym toczy się akcja gry. Rozpoczynamy grę puter) i decydujemy się na jeden z do-
Zanim przejdziemy do zasadniczej czę- stępnych scenariuszy. Na końcu może-
Pierwsze wrażenie ści, czyli do rozbudowy armii, posze- my określić kilka dodatkowych opcji
Autorzy Dominions II postarali się, aby rzania granic naszego królestwa i zdo- wspólnych dla wszystkich uczestni-
specyficzny nastrój wprowadzić już na bywania tajemnej wiedzy magicz- 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-
Rysunek 1. Bohater wciela się w jedną ze wskazanych przez nas postaci
dziewanie część naszych oddziałów znik-

50 luty 2005
GAMES News

Scorched 3D
Pojawił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.89
Xmame 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
Rysunek 2. Gra tylko pozornie przypomina typową strategię
na niejasny status licencyjny
trzeba spędzić sporo czasu na
poszukiwaniu ROM-ów (archiwów
nęła bezpowrotnie gdzieś we mgle, zda- jące pod wodami mórz) oraz wiele opcji z grami) w Internecie.
jemy sobie sprawę, że nie mamy do czy- wpływających na przebieg gry. Ponadto, http://x.mame.net/
nienia ze strategią typu Command and mamy możliwość wskrzeszania zmarłych
Battle for Wesnoth 0.8.8
Conquer, Warcraft, czy Settlers. W Do- przywódców i prowadzenia ich przez te- Battle for Wesnoth to strategia turowa
minions II takie elementy, jak rozbudo- rytoria pod postacią mumii. Dostępnych w konwencji fantasy. Postacie,
wa królestwa, sceny bitwy (również do- jest również wiele różnorakich potworów którymi kierujemy, w trakcie gry
zyskują doświadczenie i zdobywają
bre) czy trenowanie żołnierzy, stanowią i dodatkowych elementów magii.
kolejne poziomy. Możliwa jest też
jedynie element pewnej całości. Nacisk rozgrywka sieciowa przez Internet.
położono na strategię, czyli planowanie, Podsumowanie W najnowszej wersji poprawiono
co, gdzie i jak zrobić, aby po kilku turach Dominions II jest strategią pod każdym wiele błędów, dodano nowe
mapy i jednostki. Wymieniono też
móc cieszyć się z przyrostu złota w skarb- względem – począwszy od ustawiania pa-
część grafik w grze, poprawiono
cu lub wygranej potyczki. rametrów gry, poprzez rozwijanie, moder- lokalizację oraz “wyczyszczono” kod
nizowanie i planowanie przyszłości kró- gry ze zbędnych i problematycznych
Co w pełnej wersji Dominions II? lestwa, a skończywszy na takich dodat- elementów.
http://www.wesnoth.org/
Wersja demonstracyjna Dominions II kach, jak potyczki oddziałów, czy ścią-
po kilkudziesięciu turach (kilku godzi- ganie podatków od lokalnej społeczno- Apricots 0.2.6
Pojawiła się kolejna
nach zabawy) jest przerwana komuni- ści. Na uznanie zasługuje znakomita gra-
(wciąż wczesna, aczkolwiek
katem informującym o sposobie nabycia fika i bardzo dobrze dobrana do scenariu- grywalna) wersja gry Apricots,
pełnej wersji gry. Po zapłaceniu 50 dola- szy średniowieczna muzyka. Mimo swej w której kierujemy małym
rów otrzymujemy dodatkowo prawie stu- złożoności, opanowanie podstawowych samolotem, starając się
wyeliminować wrogie obiekty,
stronicowy przewodnik, możliwość gra- umiejętności nie powinno sprawić pro-
strzelając do nich bądź bombardując.
nia nowymi postaciami (dwie nacje ży- blemu żadnemu graczowi. Gra na pew- Gra w zamyśle twórców ma być
no spodoba się wszystkim miłośnikom szybka i wciągająca. Na planszy
strategii i powinna bez wątpienia znaleźć może znajdować się równocześnie
do 6 samolotów, z czego 2 mogą
się w ich kolekcji. Niewątpliwie wadą Do-
być kontrolowane przez graczy.
minions II jest jej cena, ale mimo wszyst- Gra jest jeszcze w bardzo wczesnej
ko warto zastanowić się, czy nie sprawić wersji: nie posiada żadnych menu,
sobie takiego prezentu na długie zimowe a po uruchomieniu aplikacji od
razu przechodzimy do rozgrywki;
wieczory.
nie posiada możliwości nagrywania
stanu gry, a opcja gry sieciowej wciąż
oczekuje na liście rzeczy
Ocena do zrobienia.
http://www.fishies.org.uk/
– Grafika: 4/5 apricots.html
Rysunek 3. Sceny bitewne, mimo że – Muzyka: 5/5
atrakcyjne, stanowią jedynie atrakcyjny – Grywalność: 5/5
dodatek do gry

www.lpmagazine.org 51
dla początkujących

GRUB – program
uruchomieniowy
Piotr Machej

C
zym jest program uruchomie- nych dystrybucjach miałem możliwość
niowy (ang. bootloader) i czy zmiany na GRUB-a, przez kilka lat upar-
jest mi potrzebny do szczę- cie zostawałem przy LILO. Do zmiany
ścia? Jest to program umiesz- przekonało mnie moje własne lenistwo...
czony w początkowych sektorach dysku Po prostu, gdy po raz kolejny zapomnia-
twardego (np. w MBR – Master Boot łem uruchomić polecenie lilo po zmia-
Record ). BIOS, po uruchomieniu kompu- nie w pliku konfiguracyjnym i musiałem
tera i wykonaniu testów, przekazuje ste- szukać dyskietki ratunkowej, powie-
rowanie właśnie do programu zawartego działem: dość. Zainstalowałem GRUB-a
w MBR dysku wskazanego jako startowy, i od tej pory nie mam już powodów do
czyli do naszego programu uruchomie- narzekań. I nawet jak przyjadą krewni,
niowego. Jego zadaniem jest załadowanie to nie ma siły, aby uruchomili system,
systemu operacyjnego do pamięci i prze- którego nie powinni – przynajmniej
kazanie mu kontroli. Obecnie większość dopóki nie odgadną hasła.
popularnych programów uruchomienio-
wych pozwala na wybór jednego z sys- Instalacja
temów zainstalowanych na dysku. Najpo- Pakiety z programem GRUB można zna-
pularniejsze tego typu programy, dostar- leźć w praktycznie każdej dystrybucji.
czane wraz z dystrybucjami Linuksa, to Co więcej, podczas instalacji dystrybu-
LILO i GRUB (Grand Unified Bootloader). cji możemy wybrać program uruchomie-
W niniejszym artykule postaram się przy- niowy, z którego chcemy korzystać. Jeśli
bliżyć to drugie narzędzie. zdecydujemy się na GRUB-a, to system
od razu postara się odpowiednio dosto-
Przykład użycia sować jego konfigurację. Jeśli jednak nie
Jestem tradycjonalistą. Nie ukrywam zdecydowaliśmy się na instalację GRUB-a,
tego. Z tego powodu przez bardzo długi musimy to zrobić teraz sami.
czas (szczególnie na studiach) urucha-
miałem Linuksa z dyskietki. Koledzy
z 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.
Na płycie CD/DVD Ponadto, mój komputer był już wtedy
Rysunek 1. Wersja GRUB-a obecnie
Na płycie CD/DVD znajdują się bezpieczny od zakusów studenckiej
wykorzystywana w dystrybucjach nie jest
narzędzia omawiane w artykule. braci, więc mogłem sobie pozwolić na
już rozwijana
odrobinę luksusu. I chociaż w kolej-

52 luty 2005
grub dla początkujących

install. Lepszym rozwiązaniem jest pomogą w zidentyfikowaniu pozycji


jednak skorzystanie z pakietów dostęp- w menu.
nych dla naszej dystrybucji. Druga linia wskazuje, na jakiej par-
Teraz musimy skonfigurować nasze- tycji jest umieszczony katalog /boot/.
go GRUB-a, a następnie umieścić go na W naszym przykładzie katalog /boot/
dysku. umieszczony jest na osobnej partycji,
Rysunek 2. Podstawowe menu GRUB-a /dev/hda8, natomiast główny katalog
nie wygląda zbyt atrakcyjnie Podstawowa konfiguracja systemowy / jest umieszczony na par-
Główny plik konfiguracyjny GRUB-a to tycji /dev/hda9 (oznaczonej etykietą / ).
Przede wszystkim upewnijmy się, /boot/grub/grub.conf. Zazwyczaj istnie- Więcej o nazewnictwie partycji stoso-
że nie jest już zainstalowany. W przy- ją również dwa dowiązania symbolicz- wanym przez GRUB-a można przeczy-
padku Auroksa wykorzystamy do tego ne do tego pliku: /boot/grub/menu.lst tać w ramce Nazewnictwo dysków i par-
polecenie rpm -q grub. Jeśli pojawi się oraz /etc/grub.conf (tak jest w Auroksie – tycji.
napis pakiet grub nie jest zainstalowa- w innych dystrybucjach głównym pli- W kolejnej linii określamy, które
ny, to będziemy musieli zmienić ten stan kiem konfiguracyjnym może być jeden jądro chcemy załadować. Po słowie
rzeczy. Pakiet z GRUB-em możemy zain- z trzech wymienionych). Co prawda, nie kernel podajemy ścieżkę do pliku
stalować z kilku różnych źródeł. Pierw- jest on konieczny, gdyż możemy korzy- z jądrem (w naszym przykładzie vmli-
szym z nich są płyty, z których instalo- stać z linii poleceń GRUB-a, ale odpo- nuz-2.4.22-1), liczoną w stosunku do
waliśmy naszą dystrybucję. W przypadku wiednie skonfigurowanie pliku bardzo partycji określonej linię wcześniej.
Auroksa pakiet znajduje się na pierwszej ułatwi nam pracę. Dzięki temu nie Ponieważ dla katalogu /boot/ w naszym
płycie, więc po włożeniu jej do napędu będziemy musieli każdorazowo przy uru- przykładzie mamy osobną partycję, to
możemy wydać polecenia: chamianiu komputera wpisywać szeregu podajemy ścieżkę /vmlinuz-2.4.22-1. Po
poleceń, a w przypadku zainstalowania nazwie pliku jądra możemy podać
# mount /mnt/cdrom/ wielu systemów będziemy mogli korzy- parametry jądra. W naszym przy-
# rpm -Uvh /mnt/cdrom/Aurox/RPMS/ S stać z wygodnego menu. padku określamy partycję z głów-
grub-0.94-5.i386.rpm nym systemem plików (root). Wyja-
Dyskietka ratunkowa śnienie wartości LABEL=/ znajduje się
Drugim źródłem są repozytoria pakie- Przede wszystkim zadbajmy o to, aby w ramce Nazewnictwo dysków i par-
tów. Jeśli korzystamy z jednego z syste- mieć dyskietkę lub płytę ratunkową. Dys- tycji. Należy zwrócić uwagę, że słowo
mów zarządzania pakietami, to możemy kietkę mogliśmy utworzyć podczas insta- root w tej linii ma inne znaczenie niż
użyć odpowiedniego dla niego polece- lacji dystrybucji. Jeśli tego nie zrobiliśmy, w linii wcześniejszej. Tutaj jest to para-
nia, np.: zazwyczaj możemy skorzystać z pierw- metr jądra, wskazujący główny system
szej płyty dystrybucji. Zazwyczaj nie ma plików, natomiast słowo root, występu-
# yum install grub potrzeby korzystania z dyskietki ratunko- jące w drugiej linii, to komenda GRUB-a,
# apt-get grub install wej, ale podczas zmiany programu roz- pozwalająca wskazać urządzenie, wzglę-
# emerge grub ruchowego mogą pojawić się problemy, dem którego będą opisywane następne
które sprawią, że nie uda się nam uru- ścieżki dostępu.
Oczywiście, wydajemy tylko jedno chomić z systemów zainstalowanych na Ostatnia linia nie jest konieczna,
z powyższych poleceń. Analogicznie dysku. lecz jeśli tylko mamy utworzony plik
możemy wykorzystać system zarządzania initrd odpowiedni dla naszego jądra, to
pakietami do aktualizacji wersji GRUB-a Uruchamianie Linuksa powinniśmy z niego skorzystać. Polece-
(np. poleceniem yum update grub). Najpierw spróbujmy wykorzystać GRUB-a nie initrd zawarte w tej linii ładuje RAM-
Mamy jeszcze trzecią możliwość. do uruchamiania naszego Linuksa. dysk. To, czy go wykorzystamy, zależy od
Jeśli zależy nam na najnowszej wersji, W tym celu powinniśmy mieć w pliku konfiguracji naszego jądra.
możemy ją pobrać ze strony domowej /boot/grub/grub.conf przynajmniej cztery
projektu (http://www.gnu.org/software/ linie:
grub/ ). Ze względu na rozpoczęcie prac
nad GRUB 2, starsza wersja (linia 0.9.x, title Aurox Linux (2.4.22-1)
wciąż jeszcze wykorzystywana w dys- root (hd0,7)
trybucjach) została przemianowana na kernel /vmlinuz-2.4.22-1 ro root=LABEL=/
GRUB Legacy. Tutaj mamy dostępne jedy- initrd /initrd-2.4.22-1.img
nie źródła, których instalacja przebiega
zwykłym torem – po pobraniu i rozpako- Pierwsza z nich, po słowie title, zawie-
waniu pliku (tar xzvf grub-0.95.tar.gz) ra tekst, który pojawi się w menu. Naj-
wchodzimy do utworzonego katalo- lepiej umieścić tu nazwę systemu (dys-
gu i wydajemy polecenia: ./configure trybucji) oraz w nawiasie numer wersji
Rysunek 3. Dokumentację GRUB-a
i make. Następnie, po uzyskaniu upra- jądra. Oczywiście, możemy też podać
możemy również znaleźć na stronie
wnień administratora (poleceniem su -), inne dodatkowe informacje (np. czy jest
WWW
wydajemy ostatnie polecenie: make wykorzystywany FrameBuffer), które

www.lpmagazine.org 53
dla początkujących

Opcje ogólne
Oprócz powyższych czterech linii, warto
Nazewnictwo dysków i partycji
od razu dodać kilka innych, które określą W pliku konfiguracyjnym GRUB-a (/boot/ larne jest wskazywanie partycji za pomocą
zachowanie naszego menu. Są to nastę- grub/grub.conf) zazwyczaj nie używa- etykiety. Jeśli w naszym pliku konfiguracyj-
pujące linie: my znanych z Linuksa oznaczeń dysków nym mamy linię postaci: kernel /vmlinuz-
i partycji, takich jak hda, hdb2 i tym podob- 2.4.22-1 ro root=LABEL=/, to zwróćmy
default=0 ne. Zamiast tego, widzimy oznaczenia typu uwagę na tekst root=LABEL=/. Zastępuje
timeout=30 (fd0) lub (hd1,2). Jest to nieco mylące, na on zwykły tekst postaci root=/dev/hda1 (jeśli
początku, lecz można się szybko przyzwy- nasz katalog / jest umieszczony na partycji
Umieszczamy je przed (podkreślam czaić. hda1). Można zastanawiać się, co to daje i
– przed) wymienionymi wcześniej linia- Opis (fd0) oznacza pierwszy napęd czemu się tego używa. Zapis taki pozwala
mi, zaraz na początku pliku /boot/grub/ dyskietek (należy pamiętać o nawia- nam swobodnie przekładać dysk w ramach
grub.conf. Pierwsza z nich określa, która sach i braku odstępu pomiędzy znakami). naszego komputera, np. w przypadku dokła-
pozycja menu będzie domyślnie wybra- W przypadku dysków twardych nazwa dania nowego napędu lub nagrywarki. Jeśli
na. Jak wiemy, GRUB liczy od zera, (hd0) odpowiada dyskowi hda, nazwa (hd1) stosujemy etykiety, nie musimy wówczas
więc w naszym przykładzie wybraliśmy to dysk hdb itd. Jak więc widać, zamiast liter poprawiać plików konfiguracyjnych (m.in.
pierwszą (i na razie jedyną) pozycję w używamy cyfr, zaczynając od zera. Aby grub.conf i /etc/fstab).
menu. Druga opcja wskazuje, że przez 30 wskazać konkretną partycję, dodajemy jej Powstaje pytanie, jak odczytać i stwo-
sekund (możemy ustawić inną wartość) numer (znów licząc od zera) po przecinku. rzyć etykiety dla partycji. Służy do tego
GRUB będzie czekał na naszą decyzję. Tak więc dla hda1 mamy (hd0,0), dla hda7 polecenie e2label /dev/hda1, gdzie
Jeśli nie wciśniemy żadnego klawisza, to – (hd0,6), a dla hdc3 – (hd2,2). Wystarczy zamiast /dev/hda1 wstawiamy nazwę par-
uruchomi automatycznie pozycję menu w zasadzie pamiętać, że numerujemy od 0, tycji ext2 lub ext3. Polecenie to spowoduje
wskazaną w opcji default. W przypadku, a nie od 1. Jeśli mamy wątpliwości, możemy wyświetlenie etykiety przypisanej do party-
gdy użyliśmy opcji timeout bez korzysta- przypisanie nazw do dysków sprawdzić cji. Jeśli chcemy nadać partycji nową etykie-
nia z opcji default, uruchomiona zostanie w pliku /boot/grub/device.map. Dla kompu- tę, to stosujemy zapis e2label /dev/hda1
pierwsza zdefiniowana pozycja w menu. tera posiadającego tylko jeden napęd dys- etykieta.
kietek i jeden dysk twardy, plik ten powinien Przy okazji warto zaznaczyć, że z ety-
Zapisywanie GRUB-a na dysk mieć następującą zawartość: kiet możemy korzystać tylko wtedy, gdy
Teraz już możemy zapisać GRUB-a na ładujemy również odpowiadający jądru
dysk (jeśli jeszcze tego nie robiliśmy). (fd0) /dev/fd0 RAM-dysk. Służy do tego polecenie initrd
Zazwyczaj będziemy chcieli umieścić go (hd0) /dev/hda /initrd-2.4.22-1.img, umieszczone pod
na pierwszym dysku. Służy do tego pole- wspomnianą wcześniej linią pliku konfigu-
cenie grub-install /dev/hda. W niektórych dystrybucjach (np. w Red racyjnego.
Jeśli później zmienimy zawartość Hat i pochodnych – Fedora i Aurox) popu-
pliku konfiguracyjnego /boot/grub/grub.
conf, to nie będziemy musieli ponow-
nie wykonywać tego polecenia. GRUB po to, aby czasem pograć) lub z FreeBSD kernel /vmlinuz-new ro root=LABEL=/
automatycznie rozpozna zmiany w pli- (np. ze względu na studia czy pracę). initrd /initrd-2.4.22-1a.img
ku i podczas kolejnego uruchomie-
nia komputera wyświetli odpowied- Inne dystrybucje Linuksa Jeśli nie wygenerowaliśmy RAM-dysku,
nie menu. W zasadzie jedyny przypa- W przypadku, gdy chcemy z pomocą to nie dopisujemy ostatniej linii, a zamiast
dek, gdy możemy chcieć wydać ponow- GRUB-a uruchamiać również inne dystry- root=LABEL=/ musimy podać odpowiednią
nie to polecenie, to moment aktualizacji bucje Linuksa zainstalowane w naszym nazwę partycji (w naszym przykładzie
GRUB-a do nowszej wersji. komputerze, postępujemy tak samo, jak root=/dev/hda9). Jeśli o tym zapomnimy, to
Warto uruchomić ponownie kompu- w przypadku opisanym w rozdzia- nasz system przestanie się ładować na eta-
ter, aby sprawdzić, jak działa nasz GRUB. le Uruchamianie Linuksa. Wystarczy pie montowania głównego systemu plików.
Powinniśmy zobaczyć proste menu dopisać kolejną sekcję zaczynają-
z jedną pozycją do wyboru. Po jej zatwier- cą się od linii title i zawierającą odpo- Windows, DOS
dzeniu klawiszem [Enter] (lub odczeka- wiednie opcje. Tego samego sposo- Najprostszym sposobem na uruchamia-
niu 30 sekund) powinien załadować się bu możemy zresztą użyć, gdy chcemy nie systemów z rodziny Windows jest
nasz Linux. przetestować nowe jądro w naszej dystry- umieszczenie na końcu pliku /boot/grub/
bucji. Przypuśćmy, że skompilowaliśmy grub.conf następujących linii:
Uruchamianie różnych samodzielnie jądro i nazwaliśmy je
systemów vmlinuz-new. Wówczas w pliku /boot/ title DOS lub Windows
Możliwości GRUB-a najlepiej wykorzysta- grub/grub.conf możemy na końcu dopi- rootnoverify (hd0,0)
my, jeśli mamy zainstalowane również inne sać następujące linie: chainloader +1
systemy operacyjne – bardzo wielu użyt-
kowników systemu spod znaku pingwi- title Aurox Linux (2.4.22-1a) Polecenie title już znamy. W linii rootno-
na korzysta również z Windows (choćby root (hd0,7) verify wskazujemy partycję, na której jest

54 luty 2005
grub dla początkujących

umieszczony system, który chcemy zała- slice ma być zamontowany, to możemy Oczywiście, zamiast MEMTEST możemy
dować. Polecenie to różni się od polece- użyć postaci (hd1,0,a). wstawić inny odpowiadający nam tytuł.
nia root tym, że wskazana partycja nie Pamiętajmy, że te linie dotyczą wciąż
jest montowana. Polecenie chainloader Uruchamianie Memtest86+ naszego przykładu. Jeśli katalog /boot/
przekazuje kontrolę do następnego pro- Od czasu do czasu warto przetestować mamy na innej partycji, to musimy odpo-
gramu rozruchowego. Jak to działa? Jeśli pamięć naszego komputera, aby zawcza- wiednio dostosować wartości poleceń
na partycji /dev/hda1 mamy zainstalowa- su wykryć wszelkie problemy. Dwa naj- root i kernel.
ny tylko pojedynczy system (np. DOS lub lepsze programy przeznaczone do tego Po zapisaniu zmian możemy już zre-
Windows 98), to zostanie on uruchomio- celu to Memtest86 i Memtest86+. GRUB startować system, a w naszym menu
ny. Jeśli mamy na dysku zainstalowane może nam pomóc w ich uruchomieniu. powinna pojawić się nowa opcja – MEM-
systemy Windows 98 i Windows XP, to Wystarczy wybrać jeden z wymie- TEST. Jeśli ją wybierzemy, uruchomi się
program uruchomieniowy zainstalowany nionych programów, gdyż obydwa czer- program Memtest86+ i od razu rozpocz-
przez Windows XP potrafi obsłużyć oba pią nawzajem ze swoich kodów źródło- nie testowanie pamięci. Opcje programu
te systemy. Wystarczy więc w poleceniu wych. Osobiście polecam Memtest86+. są dostępne po wciśnięciu klawisza [c],
rootnoverify wskazać partycję, na której Najpierw musimy pobrać odpowied- natomiast klawiszem [ESC ] możemy zre-
jest zainstalowany program uruchomie- ni plik ze strony domowej programu startować komputer, jeśli nie mamy czasu
niowy Windows XP. Dzięki temu, po (http://www.memtest.org/ ). Odnajduje- na przeprowadzanie pełnego testu.
wybraniu w menu GRUB-a pozycji DOS my sekcję Download (Pre-built & ISOs),
lub Windows, zobaczymy kolejne menu, w której znajdują się już skompilowane Upiększanie GRUB-a
pozwalające nam wybrać pomiędzy Win- wersje. Następnie z sekcji odpowiada- Jeśli nie podoba nam się domyślny
dows 98 a Windows XP. jącej najnowszej wersji (w chwili pisa- wygląd menu GRUB-a, możemy spróbo-
nia artykułu była to wersja 1.40) pobie- wać je nieco ubarwić. Jedną z możliwo-
FreeBSD ramy plik znajdujący się pod odnośni- ści jest ustawienie lub zmiana rysunku
Systemy z rodziny FreeBSD możemy uru- kiem Download – Pre-Compiled Boota- wyświetlanego w tle. Ponadto, możemy
chamiać w analogiczny sposób, jak Win- ble Binary (.gz). Plik ma zaledwie dopasować kolory czcionki do naszych
dows i DOS, czyli korzystając z poleceń około 40 kB, więc jego pobieranie nie upodobań.
rootnoverify i chainloader. Możemy też powinno potrwać zbyt długo. Dla pew- Większość dystrybucji dostarcza
wskazać dokładnie na program /boot/ ności możemy sprawdzić, czy plik jest swoje własne tło dla GRUB-a, więc naj-
loader z pomocą następujących linii poprawny. W tym celu wchodzimy do prawdopodobniej mamy już w pliku kon-
w pliku /boot/grub/grub.conf : katalogu, w którym znajduje się nasz figuracyjnym odpowiednią opcję. Jest to
plik i wydajemy polecenie: linia o zawartości podobnej do poniż-
title FreeBSD szej:
root (hd1,a) # md5sum memtest86+-1.40.bin.gz
kernel /boot/loader splashimage=(hd0,7)/grub/splash.xpm.gz
Oczywiście, jeśli pobraliśmy nowszą
Widać tu użycie innego nazewnictwa. wersję, to musimy odpowiednio dosto- Linia ta opcji splashimage przypisuje plik
Wynika to stąd, że FreeBSD nazywa sować nazwę pliku. W wyniku powin- splash.xpm.gz znajdujący się w katalo-
swoje partycje literami alfabetu, niśmy otrzymać ciąg znaków (tzw. skrót gu /grub/ na partycji /dev/hda8 (a więc
a w dodatku wprowadza pojęcie slice MD5), który porównujemy z ciągiem w naszym przykładzie plik ten znajduje
(tzw. plastra – natywnej partycji Fre- znaków umieszczonym obok odnośni- się w katalogu /boot/grub/ ).
eBSD). Jeśli więc mamy FreeBSD zain- ka do pliku na stronie domowej progra- Jeśli w naszym pliku nie ma takiej
stalowane na pierwszej partycji drugie- mu. Jeśli oba ciągi są takie same, możemy linii, to należy ją dodać, odpowiednio
go dysku, to zapis (hd1,a) powinien być przystąpić do następnych czynności. dopasowując wartości. Linia ta powin-
odpowiedni. Wyszuka on pierwszy slice, Czas na rozpakowanie pliku. Doko- na być umieszczona przed pierwszą linią
na którym znajduje się partycja a. Jeśli nujemy tego poleceniem gzip -d mem- title. Możemy ją wstawić zaraz poniżej
chcemy dokładnie sprecyzować, który test86+-1.40.bin. Następnie uzyskujemy opcji timeout.
uprawnienia superużytkownika (wydaje- Powstaje pytanie, skąd wziąć rysunki.
my polecenie su - i podajemy hasło użyt- Jak widać, w opcji splashimage nie poda-
kownika root), po czym kopiujemy plik jemy plików w popularnych formatach,
memtest86+-1.40.bin do katalogu /boot/. takich jak PNG czy JPG. Zamiast tego,
Teraz pozostało nam odpowiednio zmo- mamy tu plik w formacie XPM, skompre-
dyfikować plik konfiguracyjny GRUB-a. sowany programem Gzip. To nie jedyne
Otwieramy go w naszym ulubionym edy- ograniczenie. Nasz obrazek może mieć
torze (np. Vim) i na końcu dopisujemy tylko 14 kolorów i rozdzielczość 640x480
dwie linie: pikseli. Nie brzmi to może zbyt zachęca-
jąco, ale zapewniam, że można przygo-
Rysunek 4. Memtest86+ zajmuje niewiele title MEMTEST tować interesujące rysunki spełniające
miejsca, lecz jest bardzo przydatny root (hd0,7) te wymagania. Zacznijmy od obejrzenia
kernel /memtest86+-1.40.bin kilku przykładowych rysunków.

www.lpmagazine.org 55
dla początkujących

Wybieranie tła i ponownie zatwierdzamy klawiszem


Na stronie http://vision.featia.net/linux/ [Enter]. I już mamy wyświetlone nasze
grubsplash/ możemy znaleźć kilka przy- tło. Klawiszem [Esc] możemy wrócić do
kładów rysunków mogących posłu- menu, aby zobaczyć, jak wygląda. Jeśli
żyć za tło GRUB-a. Mamy tu do dys- będziemy chcieli wypróbować inne tła,
pozycji zarówno pliki w formacie GIF znów wciskamy klawisz [c] i postępujemy
(dzięki nim od razu możemy zapoznać tak, jak wcześniej (nie musimy ponownie
się z rysunkiem), jak i odpowiadające im używać polecenia root – wystarczy samo
pliki w formacie XPM.GZ. Pobierzmy je splashimage). No właśnie, ale pewnie
wszystkie na nasz dysk. Rysunki dostar- zapomnieliśmy już, jak się nazywa- Rysunek 6. Nawet korzystając tylko z 14
czane z dystrybucją znajdują się w kata- ły poszczególne pliki. Nie martwmy się. kolorów można stworzyć ładne rysunki
logu /boot/grub/, lecz jeśli umieścimy tam Linia poleceń GRUB-a obsługuje uzupeł-
również nasze, może powstać bałagan. nianie nazw, więc możemy wpisać słowa Powyższa metoda jest szybka,
Zamiast tego, utworzymy podkatalog splashimage / (pamiętajmy o znaku / ), lecz czasem uzyskane rezultaty wołają
splashes/ poleceniem mkdir /boot/grub/ a następnie wcisnąć klawisz [Tab]. Pojawi o pomstę do nieba. Lepszym rozwiąza-
splashes/ (oczywiście, potrzebujemy się nam spis dostępnych nazw katalo- niem jest uruchomienie programu GIMP,
do tego uprawnień użytkownika root). gów i plików. W ten sposób dopisujemy wczytanie pliku, który chcemy konwer-
Następnie do tego katalogu kopiuje- dalszy ciąg ścieżki (/grub/splashes/ lub tować, a następnie zmiana rozmia-
my wszystkie pobrane pliki z końców- /boot/grub/splashes/ – zależnie od naszej ru obrazu (Obraz–>Przeskaluj obraz)
ką .xpm.gz. konfiguracji) i znów wciskamy klawisz i liczby kolorów (Obraz–>Tryb–> Indek-
Wydawałoby się, że powinniśmy [Tab] w celu wyświetlenia nazw plików sowany). Dzięki temu możemy poeks-
teraz zmodyfikować plik /boot/grub/ z tłami. perymentować z różnymi opcjami
grub.conf i w linii z opcją splashimage Gdy już się zdecydujemy na konkret- obrazu. Ponadto, może okazać się, że
podać nową ścieżkę do pliku. Owszem, ne tło, możemy uruchomić system (wy- konieczne będzie ręczne poprawianie
można to zrobić, wstawiając przykłado- chodzimy klawiszem [Esc] aż do menu całego rysunku, zanim uzyskamy zado-
wo taką linię: i wybieramy pozycję z naszym Linuk- walający efekt.
sem), a następnie dopisać odpowiednią Innym wyjściem jest stworzenie
splashimage=(hd0,7)/grub/splashes/ S linię do pliku /boot/grub/grub.conf. pustego rysunku o wymiarach 640x480
seachair.xpm.gz i palecie 14 kolorów, a następnie nary-
Tworzenie własnego tła sowanie na nim tego, co nam się
Jeśli jednak chcemy sami poeksperymen- Oprócz gotowych plików z tłami, które podoba. Nie każdy jednak ma żyłkę
tować i sprawdzić, które tło najbardziej można znaleźć w Internecie, każdy artystyczną.
nam odpowiada, to ciągłe restartowa- pewnie chciałby mieć możliwość stwo- Wybór metody zależy od nas. Z uzy-
nie systemu i modyfikowanie jednej linii rzenia całkiem własnego. Oczywi- skanym plikiem postępujemy tak, jak to
może być męczące. Na szczęście, można ście, nic nie stoi na przeszkodzie. Jeśli opisaliśmy w rozdziale Wybieranie tła.
to zrobić inaczej. Gdy już zrestartujemy chcemy po prostu przekonwertować Niektórzy Czytelnicy mogą zaintere-
system i powita nas menu GRUB-a, wci- posiadany obrazek do skompresowane- sować się, dlaczego kompresujemy tła
skamy klawisz [c]. W ten sposób przej- go formatu XPM, możemy wydać pole- przed wykorzystaniem ich w GRUB-ie.
dziemy do linii poleceń GRUB-a, która cenia: Można wykorzystać również pliki XPM
szerzej jest opisana w rozdziale Obsłu- nieskompresowane programem Gzip.
ga. W linii tej najpierw wpisujemy root # convert -resize 640x480 -colors 14 S Różnica będzie dla nas w sumie nieod-
(hd0,7), a następnie wciskamy [Enter]. picture.jpg picture.xpm czuwalna, lecz dla zasady lepiej kom-
Pamiętamy, że polecenie to ustawia par- # gzip picture.xpm presować. Przy obecnych komputerach
tycję wykorzystywaną w następnych mniej czasu zajmuje wczytanie z dysku
poleceniach. Później wpisujemy splash- Polecenie convert należy do pakietu Ima- skompresowanego (a więc i mniejsze-
image /grub/splashes/seachair.xpm.gz geMagick. Jeśli nie jest on zainstalowany go) pliku, a następnie rozkompreso-
w naszym systemie, możemy go zainsta- wanie go w pamięci, niż wczytanie
lować z płyt dystrybucji lub z repozyto- z dysku większego pliku, nie poddane-
rium (analogicznie, do instalacji pakietu go kompresji.
GRUB-a). Opcja -resize 640x480 powo-
duje zmianę rozdzielczości rysunku do Dobór kolorów
wymaganego rozmiaru, a opcja -colors 14 Oprócz ustalenia własnego tła, możemy
redukuje paletę kolorów do czternastu. pokusić się o zmianę kolorów czcion-
Nazwy picture.jpg i picture.xpm to odpo- ki wykorzystywanej w menu. Służą do
wiednio nazwy pliku wejściowego tego opcje foreground i background
(z konwertowanym rysunkiem) i wyjścio- ustawiane w początkowej części pliku
wego (z tłem dla GRUB-a). Drugim pole- /boot/grub/grub.conf (możemy je umie-
Rysunek 5. Rysunek na tło powinniśmy
ceniem kompresujemy rysunek progra- ścić nawet przed opcją splashimage).
dobrać tak, aby menu było czytelne
mem Gzip. Opcje te przyjmują jako parametry kolory

56 luty 2005
grub dla początkujących

Modyfikacja pozycji menu poleceń, z których korzystaliśmy podczas


Przypuśćmy, że chcemy poekspery- tworzenia menu – chainloader, kernel,
mentować z innymi parametrami jądra. initrd, root i inne. Jak więc widać, linię
Możemy w tym celu utworzyć nowe poleceń również możemy wykorzystać
sekcje title w pliku konfiguracyjnym. do uruchamiania systemów zainstalo-
Lepszym rozwiązaniem jest modyfikacja wanych na naszym komputerze. Zresztą,
parametrów jądra podczas uruchamia- gdybyśmy nie utworzyli pliku konfigura-
nia systemu. Jak tego dokonać? Prze- cyjnego /boot/grub/grub.conf, to przy uru-
suńmy zaznaczenie w menu na pozycję chamianiu komputera moglibyśmy korzy-
naszej dystrybucji Linuksa. W naszym stać tylko z linii poleceń GRUB-a. Jeśli
Rysunek 7. Skrypt Grubconfig może nam przykładzie jest to linia Aurox Linux w takim przypadku chcielibyśmy urucho-
ułatwić konfigurowanie GRUB-a (2.4.22-1). Zamiast wcisnąć [Enter ], wci- mić Memtest86+ (zainstalowany zgodnie
skamy klawisz [e]. Zobaczymy wyświe- z wcześniej podanymi wskazówkami),
zapisane w szesnastkowym formacie RGB tloną zawartość tej sekcji title. Pomię- musielibyśmy wydać następujące pole-
(Red, Green, Blue). Jeśli będziemy chcie- dzy liniami możemy przemieszczać się cenia:
li uzyskać białe litery z czarnym tłem, to podobnie jak w menu. Jeśli chcemy
użyjemy opcji: zmodyfikować jakąś linię, wciskamy root (hd0,7)
[Enter ]. Spróbujmy w linii z poleceniem kernel /memtest86+-1.40.bin
foreground ffffff kernel dopisać opcję jądra vga=791. boot
background 000000 W naszym przykładzie linia wygląda-
łaby tak: Jedyna różnica pomiędzy zawartością
Oczywiście, możemy też używać innych grub.conf i poleceniami przy ręcznym
kolorów, jak czerwony (ff0000), zielo- kernel /vmlinuz-2.4.22-1S uruchamianiu systemu, to dodatkowe
ny (00ff00), niebieski (0000ff ) i inne. ro root=LABEL=/ vga=791 polecenie boot powodujące załadowanie
Jeśli chcemy w wygodny sposób dopa- wskazanego jądra.
sować kolory do naszego tła i gustu, Zmiany zatwierdzamy klawiszem [Enter ]. Warto pamiętać, że w czasie wprowa-
możemy wykorzystać tę samą metodę, Wprowadzona właśnie opcja powoduje, dzania poleceń i nazw plików możemy
którą stosowaliśmy przy wybieraniu tła. że system, zamiast w standardowym korzystać z autouzupełniania – wystar-
Tym razem, po wejściu do linii poleceń trybie tekstowym, uruchomi się z wyko- czy wcisnąć klawisz [Tab], a wyświetlone
GRUB-a, wydajemy odpowiednie pole- rzystaniem bufora ramki, ustawiając roz- zostaną możliwe wartości.
cenia foreground ffff00 i background dzielczość ekranu na 1024x768 pikseli Do czego jeszcze może przydać się
ff00ff (oczywiście, eksperymentując z ponad 16 tysiącami kolorów. nam linia poleceń? Z pomocą polecenia
z kolorami). Jeśli chcielibyśmy dodać nową cat możemy sprawdzić zawartość dowol-
Oprócz tego, istnieje możliwość linię, możemy skorzystać z klawiszy [o] nego pliku, np. cat /etc/fstab. Wynika
zmiany koloru podświetlenia i tła i [O ]. Pierwszy z nich powoduje doda- z tego, że osoba mająca dostęp do linii
menu. Wykorzystywane jest do tego nie nowej linii po aktualnie zaznaczo- poleceń GRUB-a może przeczytać prak-
polecenie color, które możemy umie- nej linii, a drugi – przed nią. Niepo- tycznie dowolny plik (np. /etc/shadow
ścić w pliku konfiguracyjnym przed trzebne linie możemy skasować klawi- zawierający zakodowane hasła). Tym
poleceniami foreground i backgro- szem [d ]. jednak będziemy się martwić za chwilę,
und. Listę kolorów dostępnych w tym Gdy jesteśmy już zadowoleni z wpro- w rozdziale Zabezpieczenia. Niezależnie
poleceniu można uzyskać korzysta- wadzonych zmian, wciskamy klawisz od zagrożeń, polecenie cat może przy-
jąc z polecenia help color w linii pole- [b], co powoduje uruchomienie edyto- dać się nam, jeśli w czasie eksperymen-
ceń GRUB-a (jak również w dokumen- wanej pozycji wraz z wprowadzonymi tów będziemy chcieli sprawdzić jakieś
tacji GRUB-a – info grub). Przykładowe zmianami. Jeśli wolimy zrezygnować ze ustawienia.
wywołanie tego polecenia (dające cał- zmian, możemy klawiszem [Esc] wrócić Inne przydatne polecenie to find,
kiem przyjemny kolor) ma postać: color do głównego menu. pozwalające nam sprawdzać, na której
cyan/blue white/blue. partycji znajduje się wskazany plik.
Linia poleceń Powinniśmy podawać bezwzględną
Obsługa Jeszcze większe możliwości daje nam linia ścieżkę do pliku, np. find /boot/grub/
Jeśli zainstalowaliśmy GRUB-a na poleceń dostępna w GRUB-ie. Korzystali- stage1 lub find /grub/stage1 – polece-
dysku i stworzyliśmy dla niego plik śmy z niej już w rozdziale Wybieranie nie to zwróci nam nazwę partycji, jaką
konfiguracyjny, to podczas uruchamia- tła, lecz teraz opiszemy ją bardziej szcze- powinniśmy wpisać w linii root w pliku
nia komputera powinno nas przywi- gółowo. Aby się do niej dostać, w menu konfiguracyjnym GRUB-a.
tać menu GRUB-a. Możemy poruszać GRUB-a wciskamy klawisz [c]. Mamy tu Warto zapoznać się z innymi pole-
się po nim z pomocą strzałek kurso- do dyspozycji cały szereg mniej lub bar- ceniami. Bardzo przydatna jest pomoc,
ra, a klawiszem [Enter ] wybierać pozy- dziej przydatnych poleceń. Ich spis uzy- którą możemy uzyskać wpisując help
cję, którą chcemy uruchomić. Oprócz skamy wciskając po prostu klawisz [Tab]. nazwa_polecenia.
tego, mamy jednak do dyspozycji kilka Z pewnością zwrócimy uwagę, że na Linię poleceń GRUB-a można rów-
innych funkcji. spisie znajduje się wiele znanych nam już nież uruchomić z konta użytkownika root

www.lpmagazine.org 57
dla początkujących

wpisując polecenie grub. Mamy wówczas były dostępne tylko dwie możliwości Jeśli chcemy całkiem uprościć sobie
podobne możliwości, jak w opisywa- – uruchomienie jednego z systemów ustawianie tła menu GRUB-a, możemy
nej wyżej linii poleceń, lecz oczywiście lub wciśnięcie klawisza [p]. Jeśli po skorzystać z programu GrubTk. Wystar-
z niektórych poleceń nie możemy korzy- wciśnięciu klawisza [p] podamy pra- czy w nim podać tylko nazwę pliku
stać (dotyczy to przykładowo polecenia widłowe hasło (to, które wpisywaliśmy z rysunkiem, a program zajmie się
splashimage). w poleceniu md5crypt), to dopiero resztą.
wtedy uzyskamy dostęp do możliwości A jeśli chcemy zobaczyć, do czego
Zabezpieczenia opisywanych w rozdziale Obsługa. jeszcze można wykorzystać GRUB-a, to
Menu oferowane przez GRUB-a jest Nadal użytkownik może urucho- zainstalujmy sobie grę GRUB Invaders.
bardzo wygodne, lecz czasem daje zbyt mić dowolną pozycję w menu, a to nie Jest ona uruchamiana przez GRUB-a
wiele możliwości. Jak przekonaliśmy zawsze musi nam odpowiadać. Skoro i nie wymaga do działania żadnego
się w poprzednim rozdziale, użytkow- już mamy ustalone hasło, wystarczy systemu operacyjnego.
nik mający dostęp do GRUB-a może teraz w sekcji title, którą chcemy zablo-
dowolnie zmieniać parametry wywo- kować, umieścić polecenie lock. Musi Zakończenie
łania systemu, a nawet uzyskać dostęp ono być umieszczone od razu pod linią Wydawałoby się, że program urucho-
do chronionych plików. Na szczęście, title, gdyż użytkownik może wykony- mieniowy to proste narzędzie pozwa-
GRUB pozwala na zablokowanie takie- wać wszystkie polecenia aż do napo- lające tylko wskazać, który system ma
go dostępu. tkania polecenia lock. W tym momen- być uruchomiony. Tymczasem, okazuje
Służy do tego hasło broniące dostę- cie zostaje zapytany o hasło i dopóki się, że jest to program, który możemy
pu do edycji pozycji w menu, jak rów- nie poda prawidłowego, nie będzie stosunkowo łatwo dopasować do
nież do linii poleceń. Jeśli chcemy, mógł wykonać dalszych poleceń. Jak swoich potrzeb. Z jego pomocą uru-
to nawet uruchomienie poszczegól- więc widać, umieszczanie polecenia chomimy nie tylko systemy, ale rów-
nych systemów może wymagać poda- lock na końcu sekcji title zazwyczaj nież takie programy, jak Memtest86.
nia hasła. mija się z celem – lepiej umieścić je na GRUB może stanowić barierę bronią-
Jeśli chcemy zabezpieczyć w ten początku. cą innym użytkownikom dostępu do
sposób nasz system, to – oczywiście – Należy zaznaczyć, że zabezpieczenie naszego systemu, równocześnie nie
potrzebujemy do tego uprawnień użyt- to nie jest doskonałe. Nie można liczyć, zmniejszając naszej wygody obsługi.
kownika root. Najpierw wygenerujemy że założenie hasła na GRUB-a zabezpie- Dodatkowo, może witać nas naszym
nasze hasło. Uruchamiamy linię pole- czy nas przed niecnymi zamiarami osób ulubionym rysunkiem. Warto zapoznać
ceń GRUB-a – grub. Tym razem sko- mających bezpośredni dostęp do kom- się z jego dokumentacją i poznać inne
rzystamy z polecenia md5crypt. Po jego putera. Zawsze jednak może zwiększyć jego funkcje.
wydaniu zostaniemy zapytani o hasło. wygodę korzystania z komputera oraz
Wpisujemy je (niech tylko nie będzie zabezpieczyć nas przed mniej doświad-
zbyt łatwe do odgadnięcia) i wciskamy czonymi użytkownikami.
[Enter ]. W odpowiedzi zobaczymy linię W Internecie:
z zakodowanym hasłem. Ułatwianie konfiguracji • Strona domowa GRUB-a:
Teraz edytujemy nasz plik konfigu- Jeśli nie chcemy ręcznie zmieniać pliku http://www.gnu.org/software/grub/
racyjny (np. vim /boot/grub/grub.conf) konfiguracyjnego GRUB-a, możemy • GNU GRUB splashimage howto:
i na jego początku umieszczamy linię skorzystać z jednego z konfigurato- http://ruslug.rutgers.edu/~mcgrof/
o treści: rów. Najlepszym rozwiązaniem wydaje grub-images/
się być moduł Webmina dostępny • Różne tła dla menu GRUB-a:
password --md5 S w sekcji Sprzęt –>Inicjator systemu http://vision.featia.net/linux/
$1$ikVvf0$naEIsTUTM5yM1MYrx3Ms7. GRUB. Oprócz tego, mamy do dyspo- grubsplash/
zycji działający w trybie tekstowym • Strona domowa Memtest86:
Oczywiście, zamiast podanej tu warto- skrypt Grubconfig oraz przeznaczony http://www.memtest86.com/
• Strona domowa Memtest86+:
ści należy wkleić wynik działania pole- dla środowiska graficznego program
http://www.memtest.org/
cenia md5crypt. Wykorzystanie podanej GrubConf. Pierwszy z nich jest mało
• Strona domowa skryptu Grubconfig:
wyżej wartości nie jest dobrym pomy- intuicyjny, lecz ma kilka ciekawych http://www.tux.org/pub/people/kent-
słem, gdyż jest to zakodowane słowo opcji, a przy tym nie wymaga instala- robotti/looplinux/index.html
password. Skoro w pliku przechowu- cji – wystarczy rozpakować archiwum • Strona domowa programu GrubConf:
jemy hasło, powinniśmy się upewnić, i można go uruchomić. http://grubconf.sourceforge.net/
że nie będzie ono łatwe do odczytu. Osoby samodzielnie kompilują- • Strona domowa programu Install
W tym celu ustawiamy odpowiednio ce jądro prawdopodobnie zainteresu- Kernel:
prawa dostępu do pliku: ją się programem Install Kernel, który http://installkernel.tripod.com/ik/
nie tylko zwalnia nas od konieczności index.html
# chmod 600 /boot/grub/grub.conf wykonania szeregu poleceń, ale rów- • Strona domowa programu GrubTk:
http://freshmeat.net/projects/grubtk/
nież automatycznie uaktualnia konfi-
• Strona domowa gry GRUB Invaders:
Ta zmiana wystarczy, aby przy urucha- gurację programów uruchomieniowych
http://www.erikyyy.de/invaders/
mianiu komputera w menu GRUB-a (oprócz GRUB-a, obsługuje też LILO).

58 luty 2005
aktualności
księgozbiór piotrt@lpmagazine.org dział prowadzi: Piotr Truszkowski

Eclipse Recenzent: Piotr Truszkowski

środowisko graficzne (Sun Looking Glass) znamy się z trybem debugowania oraz
powstały w oparciu o ten wspaniały, wie- poznamy przykładowe aplikacje.
loplatformowy język programowania. Eclip- Książka pełna jest różnego rodza-
se jest jednym z kompletnych i darmowych ju przykładów i czytając ją aż prosi się
środowisk programistycznych, służących o płytkę CD, która pozwoli nam skorzystać
m.in. do pisania aplikacji w języku Java. z licznych kodów źródłowych. Takiej płytki
Steve Holzner, autor książki zatytułowa- dołączonej do książki bardzo brakuje, za co
nej “Eclipse”, przedstawia nam to środowi- w moim odczuciu wydawcy należy się duży
sko ze wszystkich możliwych stron. Skon- minus. Przykłady można co prawda pobrać
centrował się na Eclipse 2.1, ale pozycja z Internetu, ale nie każdy ma do niego
obejmuje również Eclipse 3.0. dostęp. Szkoda, że nie dołączono również
Książka jest ukierunkowana na począt- samego Eclipse.
kującego programistę, który postanowił Ogólnie, tytuł prezentuje się dobrze,
O języku Java słyszał chyba każdy. napisać swój pierwszy program właśnie a początkującemu programiście pozwoli
Popularne w Internecie pokoje rozmów w Eclipse. Znajdziemy w niej ogólne omó- bez większych trudności poznać świat Javy.
zwane chatami, liczne programy, a nawet wienie środowiska i podstawy Javy, zapo- Moja ocena: 3+/5

Sztuka programowania Recenzent:Michał Niwicki

tomów “Sztuki programowania” należy do ści algorytmom składniowym. Tomy 6-7,


wspaniałego cyklu “Klasyka Informatyki”, mimo że autor często odwołuje się do infor-
czyli książek, które bez wątpienia powinny macji w nich zawartych, ...nie zostały jesz-
znaleźć się na półce każdego programisty. cze wydane.
Pierwszy tom jest poświęcony jest Na uwagę zasługują liczne ćwiczenia
podstawowym algorytmom i strukturom przygotowane przez Donalda E. Knutha –
danych. Autor przedstawia w nim rów- każde z nich oznaczone jest stopniem trud-
nież narzędzia matematyczne przydatne ności w skali od 0 do 50 punktów. Zada-
do zrozumienia zasady działania niektó- nia najprostsze nie powinny nikomu spra-
rych algorytmów. W drugim tomie znaj- wić trudności, ale ćwiczenia oszacowane
dziemy wiele informacji związanych z licz- przez autora jako trudne, stanowią wyzwa-
bami losowymi i arytmetyką komputerową. nie nawet dla profesorów informatyki.
Zawarta w tym tomie wiedza to ogniwo Mimo, że autor stara się uprzyjem-
łączące programowanie komputerowe nić lekturę licznymi cytatami i przystęp-
Gdy od jakiegoś czasu na witry- z analizą numeryczną. Trzeci tom w cało- nymi przykładami, w książce dominuje
nach księgarń informatycznych pojawiły ści jest poświęcony dwóm podstawowym suchy akademicki język. Pozycja na pewno
się książki typu „Algorytmy nie tylko dla operacjom algorytmicznym – sortowaniu nie nadaje się na lekką i przyjemną lektu-
orłów” czy seria „Dla opornych”, wydawać i wyszukiwaniu danych. Przedstawia sor- rę do poduszki. Po przeczytaniu wszyst-
by się mogło, że zapomniano o tych, którzy towanie zewnętrzne i wewnętrzne oraz kich pięciu tomów „Sztuki programowa-
pierwsze kroki w programowaniu mają już opisuje procedury wyszukiwania określo- nia” i przerobieniu zawartych tam ćwiczeń
za sobą. Nieprawda. „Sztuka programowa- nych elementów w zbiorach z wykorzy- będziemy mogli śmiało powiedzieć, że
nia” to dzieło Donalda E. Knutha, przezna- staniem zarówno metod tradycyjnych, jak zasady pisania dobrych algorytmów opa-
czone dla osób, które chciałyby nauczyć i najnowszych. Tytuł tomu czwartego to “Al- nowaliśmy w stopniu więcej niż podsta-
się czegoś więcej niż tylko wyświetlania gorytmy kombinatoryczne”, natomiast piąta wowym.
na ekranie napisu „Hello World”. Siedem część serii książek poświęcona jest w cało- Moja ocena: 4/5

Bestsellery Merlina
Lista najlepiej sprzedających się książek informatycznych
w sklepie internetowym www.merlin.pl, w miesiącu listopadzie:
1. OpenBSD. Tworzenie firewalli za pomocą PF - J. Artymiak, Wyd. Helion, 2004
2. Zarządzanie projektami IT – J. Phillips, Wyd. Helion, 2004
3. Macromedia Flash MX 2004 Bible – R. Reinhardt, S. Dowd, Wyd. Helion, 2004
4. Jakościowe aspekty kompresji obrazu i dźwięku - poglądowo o DivX – D. Nasiłowski, Wyd. Mikom, 2004
5. Programowanie Asembler IBM PC – P. Abel, Wyd. Read Me, 2004
6. Praktyczne podejście do inżynierii oprogramowania, Wyd. WNT, 2004
7. Microsoft Visual Basic .NET Księga przykładów, Wyd. APN PROMISE, 2004
8. Język C++ - B. Stroustrup, Wyd. WNT, 2004
9. Naucz się z nami! Obsługi komputera (wydanie 4), Wyd. Help, 2004
10. CorelDraw 11 – M. Gradias, Wyd. Read Me, 2004

www.lpmagazine.org 59
dla początkujących

Sztuczki i kruczki
Grzegorz Niewęgłowski

Niespodziewane ją, aby wiersze tekstu były oddziela- Łatwo jest zmienić nazwę jedne-
“zawieszanie się” terminali? ne dwubajtową sekwencją <CR><LF>, mu plikowi. Nawet dziesięć plików
Czy czasem zauważasz, że terminal tek- natomiast Linux zadowala się samym można przemianować ręcznie. Ale gdy
stowy (np. XTerm lub zwykły linuksowy <LF>. Linuksowe pliki bez konwer- są ich setki, na dodatek rozproszone
terminal VGA) przestaje reagować? Zupeł- sji łatwo rozpoznać pod Windows po całym drzewie katalogów? Można
nie, jakby został zamrożony, nie przyjmuje – wszystkie wiersze zwykle zosta- wtedy próbować stworzyć jakiś auto-
żadnych naciśnięć klawiszy, nie aktualizu- ną sklejone w pojedynczy, długi ciąg, mat działający rekursywnie, oparty na
je wyświetlanego tekstu, a jedynym wyj- a to skutecznie utrudnia czytanie pętlach for..do..done. Można również
ściem jest wyłączenie go? Jeśli tak, to być takiego tekstu. próbować połączyć find, iconv i mv,
może przypadkiem nacisnąłeś [Ctrl]+[s]. Wiele edytorów potrafi na życze- ale takie rozwiązanie będzie pewnie
Aby odblokować terminal, trzeba naci- nie użytkownika konwertować teksty dalekie od ideału wydajności i obsłu-
snąć [Ctrl]+[q]. Takie pomyłki przytra- między tymi standardami (np. w VIM-ie gi błędów.
fiają mi się stosunkowo często, więc można zrobić to przez :set fileformat Rozwiązaniem może być skrypt
całkiem wyłączyłem swoim termina- = unix lub :set fileformat= dos przed convmv. Zwykle nie wchodzi on w skład
lom możliwość reagowania na [Ctrl]+ zapisem pliku), ale istnieją też (jak linuksowych dystrybucji, ale można go
[s]. Można to zrobić wywołując polecenie przy kodowaniach) dedykowane pro- łatwo pobrać z http://j3e.de/linux/
stty -ixon, a jeśli dopiszesz je do plików gramy do tego celu. W razie potrzeby convmv/. Polecenie convmv -r -i -f
konfiguracyjnych swojej powłoki, np. do (choćby przy obróbce wsadowej, gdy utf-8 -t iso8859-2 –notest ~/katalog
~/.bashrc czy ~/.bash_profile, to unik- trzeba konwertować wiele plików, spowoduje rekursywne przejście przez
niesz tego na stałe. ■ a okazuje się, że nie ma pod ręką ~/katalog, wyszukując nazwy plików
gotowego narzędzia) można wykorzy- w utf-8 i konwertując je na iso8859-2.
Konwertowanie strony kodowej stać SED-a: Opcja -i włącza dodatkowo tryb
plików tekstowych interaktywny, w którym użytkownik
Istnieje sporo specjalnych narzędzi słu- # sed 's:$:\r:' -i plik_unix.txt widzi dokładnie, które pliki będzie
żących do konwertowania tekstu między # sed -e 's:\r::' -i plik_unix.txt próbował konwertować convmv. Skrypt
różnymi kodowaniami. Zamiast instalo- jest dobrze przygotowany na różne
wać do tego celu kolejny pakiet, można Pierwsze polecenie zamienia końce sytuacje, co widać w obsługiwanych
posłużyć się poleceniem iconv. To stan- znaków w plik_unix.txt na coś czytel- przez niego opcjach. Dzięki niemu
dardowa część pakietu Glibc, więc powi- nego pod Windows, a drugie zamie- konwersja nazw całego drzewka
nien znajdować się na każdym współ- nia z powrotem końce linii na format plików nie stanowi już problemu,
czesnym systemie linuksowym. Aby uniksowy (czyli powraca do stanu a na pewno jest bezpieczniejsza niż
przekonwertować tekst w iso8859-2 wyjścia). ■ używanie napisanych na szybko skryp-
do unikodowego utf-8, można użyć tów opartych na iconv i mv. ■
takiego polecenia: Konwertowanie kodowań nazw
plików Cykliczne uruchamianie
# iconv -f iso8859-2 -t utf-8 S Rzadziej potrzebną funkcją jest kon- polecenia w trybie tekstowym
<plik_w_iso.txt >plik_w_utf.txt wertowanie samych nazw plików, ale Przydatnym (choć często niezna-
przez to potrafi być ono dużo bardziej nym) poleceniem jest watch z pakie-
Windowsowe cp1250 konwertuje się na kłopotliwe. Problem pojawia się przy tu ProcPS. Pozwala on w regularnych
iso8859-2 analogicznie: przestawianiu systemu z iso8859-2 odstępach czasu (np. co sekundę) uru-
na utf-8, albo gdy używa się glo- chamiać jakieś polecenie. Dzięki temu
# iconv -f cp1250 -t iso8859-2 S balnie iso8859-2, a jakaś nowomod- można przykładowo obserwować
<plik_windows.txt >plik_iso.txt na aplikacja (np. ROX-Filer) uparcie stale aktualizowaną zawartość jakie-
tworzy pliki o nazwach zakodowanych goś pliku z /proc lub wyjście pole-
Spis obsługiwanych kodowań można w utf-8... lub w innych sytuacjach, np. cenia ifconfig. Najprostsze zastoso-
obejrzeć przez iconv –list. przy niedbałym kopiowaniu plików wanie to:
Pozostała tylko kwestia znaków między systemami plików, używający-
końca linii – DOS/Windows wymaga- mi różnych standardów kodowania. # watch ifconfig eth0

60 luty 2005
sztuczki i kruczki dla początkujących

Ale to nie koniec możliwości. Można Jak odczytać temperaturę obszerny zestaw płyt głównych i chip-
np. spowolnić czas odświeżania do 1 procesora pod Linuksem? setów. W skład tego pakietu wcho-
minuty: Problem jest bardziej złożony – jak dzą dwa polecenia: mbmon oraz
w ogóle odczytać czujniki z płyty xmbmon.
# watch -n 60 ifconfig eth0 głównej? Większość płyt ma wbudo- Po uruchomieniu mbmon możemy
wane stosowne czujniki monitorujące zobaczyć coś takiego:
zlikwidować “tytuł” wyświetlany przez parametry pracy – szalenie przydatne,
watch: gdy mamy zamiar przetaktować proce- Temp.= 35.0, 48.0, 0.0;
sor lub podejrzewamy, że niestabilna Rot.= 0, 3214,0
# watch -n 60 -t ifconfig eth0 praca komputera to wina słabego wen- Vcore = 1.66, 0.10;
tylatora lub przeciążonego zasilacza. Volt. = 3.55, 5.05, 12.59, -12.06, -5.14
a nawet włączyć bardzo wygodny tryb Nowe płyty główne często udostęp-
oznaczania zmian (watch będzie oznaczał niają te dane jako część implementacji Ten skondensowany odczyt czujni-
te fragmenty tekstu, które zmieniły się od ACPI, a Linux (w wersjach 2.6.x) umie je ków pokazuje temperaturę procesora,
ostatniego uruchomienia): odczytać i udostępnić przez pliki w /proc tempo obrotu wiatraków oraz wysoko-
lub /sys. Wtedy trzeba je jakoś pokazać ści poszczególnych napięć na płycie.
# watch -n 60 -t -d ifconfig eth0 użytkownikowi – dobrą nakładką może Za pomocą opcji mbmon możemy
być GKrellM, który, obok zintegrowa- zmieniać format prezentowanych da-
Większość tego (może z wyjątkiem nych wykresów pokazujących obciąże- nych, ale to kwestia gustu, więc poprze-
oznaczania zmian) dałoby się łatwo nie procesora i sieci, umie podłączyć się stanę na pokazaniu formatu domyśl-
wykonać za pomocą pętli while i pole- pod strumień informacji z czujników tem- nego.
ceń clear oraz sleep, ale watch jest już peratury. Obserwując wzrost temperatu-
prawdopodobnie zainstalowany w sys- Jeśli płyta nie obsługuje ACPI lub ry, spadek prędkości obrotów wiatra-
temie, więc dlaczego z niego nie sko- obsługuje tylko szczątkowo, rozwiąza- ka czy niebezpieczne obniżanie się
rzystać? Obserwowanie wyniku jakie- niem może być pakiet lm_sensors – to napięć, można zdiagnozować wiele
goś cyklicznie odświeżanego polecenia rozbudowany zestaw modułów jądra, awarii maszyny lub przewidzieć te
przydaje się w najmniej spodziewanych pozwalający odczytywać różne infor- dopiero nadchodzące. A zasilacz czy
momentach. ■ macje z płyty głównej, takie jak napię- wentylator lepiej jest wymieniać zanim
cia, obroty wiatraków czy temperatu- osiągną stadium krytyczne i pójdą
Jakich bibliotek używa ten ra. Niestety, pakiet ten może być kło- z dymem.
program? potliwy w konfiguracji, co przy bogac- Niestety, xmbmon nie współpra-
Prosta rzecz, ale często nieodzowna. twie chipsetów odczytujących tempe- cuje z GkrellM, ale dla zwolenników
Jak sprawdzić, które biblioteki współ- raturę utrudnia jego poprawne użycie. graficznego interfejsu istnieje polece-
dzielone są wymagane przez dany pro- Jeśli lm_sensors wchodzi w skład dys- nie xmbmon, pokazujące swoje wyniki
gram? Często wystarczy uruchomić na trybucji, której używasz, to dobrze w formie okienka z prostą grafiką.
nim polecenie ldd, a pojawi się zesta- – moduły są już skompilowane, więc Z omawianym tematem wiąże się
wienie bibliotek, które byłyby łado- wystarczy załadować ich odpowiedni również odczytywanie temperatu-
wane przy uruchamianiu programu. zestaw (pomocne będzie polecenie sen- ry dysku twardego – w końcu dyski
Nie uwzględnia ono niestety dodatko- sors-detect, podpowiadające, jaka elek- też się grzeją i przegrzanie może się
wych bibliotek czy wtyczek, które pro- tronika została wykryta w komputerze), dla nich skończyć fatalnie. Niestety,
gram potem może ładować własno- a potem odczytywać dane poleceniem tutaj sprawa ma się gorzej niż z tem-
ręcznie (tego nie da się z góry przewi- sensors (lub za pomocą GkrellM, gdyż peraturą procesora, ale nie z winy
dzieć), ale w 99% przypadków wynik współpracuje on również z lm_sen- Linuksa, lecz samych producentów
ldd będzie się pokrywał z rzeczywisty- sors). Pakiet lm_sensors jest stopniowo sprzętu. Nadal stosunkowo niewiele
mi rezultatami. integrowany w źródła jądra 2.6.x, ale dysków ma wbudowane czujniki tem-
Taka wiedza przydaje się przy dia- sądząc po obecnym postępie, jeszcze peratury, więc niewielu użytkowników
gnozowaniu problemów z ładowa- długo potrwa zanim zostanie całkowi- będzie mogło sprawdzić, jak miewa
niem bibliotek dynamicznych – ldd, cie wchłonięty. się ich dysk. Można jednak spróbować
obok listy samych bibliotek, wyświetla Jeśli nie mamy dojścia do goto- można – tutaj kluczowym słowem jest
ścieżki dostępu do nich (widać, gdzie wych paczek z lm_sensors, a nie SMART, czyli system autodiagnosty-
szuka bibliotek), a jeśli jakaś biblioteka chcemy kłopotać się kompilowaniem ki dysku. Temperatura jest udostęp-
nie mogła zostać zlokalizowana, to ldd i instalowaniem go samodzielnie, to niana jako część danych SMART, więc
również powiadomi o tym użytkowni- możemy użyć programu xmbmon można ją odczytać za pomocą Smart-
ka w sposób bardziej czytelny niż zro- – to proste narzędzie bez żadnych montools (najpierw uruchamiając
biłby to konsolidator (ang. linker) przy niestandardowych zależności, które smartd, a następnie odczytując dane
próbie uruchamiania programu. Dzięki nie wymaga instalowania modułów dysku przez smartcl -a /dev/hda lub
ldd można również odróżnić progra- jądra ani tworzenia plików konfi- smartctl -a /dev/hda|grep -i temp,
my budowane statycznie od tych dyna- guracyjnych. Ponadto, potrafi auto- aby nie przedzierać się przez nieistot-
micznie. ■ matycznie wykryć i obsłużyć całkiem ne dane). ■

www.lpmagazine.org 61
sprzęt

Kamery
internetowe
pod Linuksem
Piotr Wolny

K
amery internetowe (tzw. video lub /dev/video1, jeśli kamera inter-
webcamy) stają się coraz bar- netowa nie jest naszym jedynym urzą-
dziej popularne. Można ich dzeniem video. Odpowiedź na pytanie,
używać do spotkań w Inter- który moduł będzie nam potrzebny do
necie, nagrywania małych filmów czy zadziałania kamery, jest właściwie naj-
robienia fotografii. Mogą być także wyko- trudniejszym zadaniem przy jej insta-
rzystywane do monitoringu pomiesz- lacji. Pewne wskazówki możemy zna-
czeń. Linux obsługuje sporą część aktu- leźć w ramce Działające kamery, ale
alnie sprzedawanych kamer. często jedyną możliwością jest wyszu-
Ogromna większość tanich kamer kanie informacji na stronach poszcze-
internetowych posiada złącze USB. gólnych sterowników lub na stronie
O instalacji właśnie takiej kamery piszę http://www.linux-usb.org/.
w tym artykule. Gdy wiemy, jaki moduł jądra jest
Pod Linuksem możemy również potrzebny do działania naszej kamery,
korzystać ze zwykłej kamery, podłączo- stajemy przed jedną z trzech możliwości:
nej do wejścia Composite w karcie telewi-
zyjnej. Prostą kamerę analogową można • kamera jest obsługiwana przez naszą
nabyć w niewiele wyższej cenie w skle- dystrybucję Linuksa;
pach elektronicznych. W takim przypad- • wsparcie dla niej znalazło się w now-
ku instalacja samej kamery nie jest oczy- szych wersjach jądra niż posiadane
wiście potrzebna – wystarczy instalacja przez nas;
samej karty telewizyjnej. • kamera jest obsługiwana tylko przez
sterowniki, które można znaleźć na
Instalacja kamery USB stronach internetowych.
Dostę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,
O autorze podłączonej przez USB, jest bardzo
Autor hobbistycznie i zawodo-
podobne. Również potrzebujemy mo-
wo zajmuje się Linuksem mniej
dułu videodev oraz modułu odpowie-
więcej od czasów jądra 2.0.20.
Obecnie pracuje w organiza- dzialnego za naszą kamerę, czyli najczę-
Rysunek 1. Duża konkurencja na rynku
cji społecznej. Poza Linuksem ściej jednego z następujących: vicam,
kamer internetowych skutkuje nie tylko
fascynuje go rock progresywny. ibmcam, konicawc, ov511, se401,
stosowaniem wymyślnych obudów, ale
Kontakt z autorem: sn9c102 oraz stv680. Po załadowaniu
i częstym wprowadzaniem na rynek
autorzy@lpmagazine.org właściwego modułu, możemy otrzymać
nowych modeli
obraz z kamery na urządzeniu /dev/

62 luty 2005
kamery internetowe sprzęt

Wsparcie w dystrybucji /dev/video1: OK


Linuksa [ -device /dev/video0 ]
Gdy nasza dystrybucja zawiera moduł type : v4l
dla kamery, to zapewne znajduje się on name : OV519 USB Camera
w katalogu /lib/modules/[wersja_jądra/ flags : capture
kernel/drivers/usb/media. W takim przy-
padku wystarczy załadowanie modułu, Oczywiście, jeśli w komputerze jest zain-
np. poleceniem modprobe ov511. Na ogół stalowana karta telewizyjna, to znajdzie się
informuje on o znalezieniu właściwego ona również na tej liście, przez co będzie-
sprzętu. Linie, które pojawią się w /var/ my wiedzieli, które z urządzeń /dev/video* Rysunek 2. Centrum informacyjne KDE
log/messagess lub /var/log/syslog oraz jest przypisane do danego sprzętu. Od tego umożliwia na wygodne sprawdzenie
po wydaniu polecenia dmesg, mogą być polecenia możemy tak naprawdę zacząć identyfikatorów podpiętych urządzeń USB
podobne do poniższych: swoją pracę, ponieważ jest szansa, że
moduł do naszej kamery został załadowany Przy jego konfiguracji musimy zazna-
Linux video capture interface: v1.00 przy starcie systemu. Teraz już, aby zoba- czyć:
ov51x.c: USB OV519 video device czyć obraz z kamery, możemy użyć dowol-
ov51x.c: Sensor is an OV7648 nego programu, współpracującego z urzą- • w dziale Character devices pozy-
ov51x.c: Device at usb-0000:00:1 dzeniami Video4Linux, np. Xawtv, Tvtime, cje I2C support oraz I2C bit-banging
usbcore: registered new driver ov51x Kdetv. Musimy podać właściwe urządze- interfaces,
nie, jeśli nasza kamera nie zainstalowała • w dziale Multimedia devices pozycję
W powyższym przykładzie wyciąłem się jako /dev/video. W przypadku Xawtv Video For Linux. Gdy mamy kartę
początki linii, zawierające datę i nazwę wystarczy opcja -c, np. xawtv -c /dev/ telewizyjną, potrzebujemy tam rów-
systemu. Ważną jest tutaj informacja video1. W innych programach znajdziemy nież zaznaczyć: BT848 Video For
o wykryciu Sensora oraz znalezieniu podobne opcje lub możemy wybrać inne Linux, Philips SAA7134 support bądź
samego urządzenia (Device at...). Po zała- urządzenie w graficznym interfejsie. Conexant 2388x (bt878 successor)
dowaniu modułu, nasze urządzenie /dev/ Gdy po załadowaniu modułu komen- support oraz odpowiedni moduł
video lub /dev/video1 powinno pokazy- da xawtv -hwscan nie pokazuje żadnych do tunera telewizyjnego na naszej
wać obraz z kamery. Możemy szybko się nowych urządzeń, a przy próbie dostępu karcie. Sterowników do kamer USB
o tym przekonać, jeśli mamy zainstalowa- do urządzenia video, np. komendą cat nie znajdziemy w tym dziale, gdyż
ny w systemie program Xawtv. Po wyda- /dev/video0, jesteśmy informowani, że umieszczono je pod USB support.
niu polecenia xawtv -hwscan otrzymamy nie ma takiego urządzenia, to najprawdo- Wyjątkiem jest pozycja OmniVision
listę wszystkich dostępnych urządzeń. podobniej moduł, który załadowaliśmy, Camera Chip support, która potrzeb-
Przykładowo, na moim systemie poka- nie był przeznaczony dla naszej kamery. na będzie posiadaczom kamer opar-
zuje ono m.in.: Nie dajmy się w takim przypadku zwieść tych na układach ov511 lub w9968cf
wpisom w logach systemowych: – jest to dodatkowy moduł dla tych
kamer, poza głównym, który znaj-
Listing 1. Przykładowy plik
Linux video capture interface: v1.00 dziemy we wspomnianym dziale
konfiguracyjny programu webcam
usbcore: registered new driver stv680 USB support.
[grab] stv680.c: [usb_stv680_init:1512] • w dziale USB support , który zrobił
device = /dev/video0 STV(i): usb camera driver version v0.25 reg się już bardzo obszerny, musimy zna-
text = "komentarz %Y-%m-%d %H:%M:%S" stv680.c: STV0680 USB Camera Driver v0.25 leźć część zatytułowaną USB Multi-
infofile = nazwa_pliku media devices. Poniżej będą sterow-
width = 320 W tym przypadku moduł stv680 został niki poszczególnych kamer. Zazna-
height = 240 załadowany, jak również automatycznie czamy według posiadanego sprzętu,
delay = 10 załadował się moduł videodev. Pomimo
input = composite1 tego, że nie mamy żadnego komunikatu
norm = pal o błędzie, czy o nie znalezionym sprzę-
trigger = 0 cie, to moduł ten nie będzie jednak dzia-
[ftp] łał z naszą kamerą, gdyż nie mamy także
host = www.przyklad.org komunikatu o znalezionym urządzeniu.
user = kamera
pass = tajne-haslo Nowe jądro systemu
dir = katalog-webcam Może zdarzyć się, że odpowiednie-
file = webcam.jpeg go modułu nie znajdujemy w dystrybu-
tmp = uploading.jpeg cji, albo jest on tam w zbyt starej wersji,
Rysunek 3. Miniaturowa kamera
passive = 1 a działający sterownik znalazł się dopiero
analogowa, podpięta do karty telewizyjnej,
debug = 1 w nowszej wersji jądra. Wtedy najlepszym
może być niezłą alternatywą dla kamery
local = 0 rozwiązaniem jest samodzielne skompilo-
USB
wanie jądra systemu.

www.lpmagazine.org 63
sprzęt

choć możemy zaznaczyć wszystkie tach z dystrybucją Linuksa na ogół mamy


sterowniki, aby wypróbować, który kilka pakietów kernel-source – ten wła-
będzie działał. Poza tym, potrzebu- ściwy określimy po wydaniu polecenia
jemy modułu kontrolera USB (UHCI, cat /proc/version.
OHCI lub EHCI) oraz USB device file- Źródła ze sterownikiem do mojej
system. kamery z układem OV519 ściągną-
łem w postaci pliku ov51x-1.65-1.11-
Po zbudowaniu nowego jądra i prawi- mark.tar.bz2. Po rozpakowaniu pliku
Rysunek 4. Jądro Linuksa zawiera
dłowym jego zainstalowaniu w systemie, znalazłem tam plik README z prosty-
sterowniki dla różnych rodzai kamer
wykonujemy wszystkie czynności, opisa- mi instrukcjami budowania modułu jądra
internetowych
ne wcześniej w punkcie Wsparcie w dys- – wystarczą polecenia: make clean; make
trybucji Linuksa. oraz make install. To ostatnie polece-
nie powinno być wydane z konta root. dystrybucje Linuksa wciąż go zawiera-
Kompilacja samego Następnie możemy wykonać polece- ją, ale z reguły znajdziemy tam okrojo-
modułu nie depmod -a – nie powinno ono poka- ną wersję sterownika, która nie pozwala
Czasem zdarza się, że dana kamera nie zać żadnych błędów. Jeśli widzimy jakieś na pracę w maksymalnej rozdzielczości
jest obsługiwana nawet przez najnow- komunikaty o unresolved symbols, to naj- (zawiera wyłącznie kod GPL). Na szczę-
sze jądro, ale powstał już dla niej sterow- prawdopodobniej nasze źródła jądra nie ście, nowe wersje sterownika do tych
nik. Niektóre z nich po prostu czekają na są zainstalowane prawidłowo. kamer możemy znaleźć pod adresem
umieszczenie ich w jądrze, a inne – z róż- Po wykonaniu wcześniej wspomnia- http://www.saillard.org/. Musimy ścią-
nych powodów (najczęściej licencyjnych) nych poleceń, w moim systemie znalazł gnąć plik pwc-10.0.5.tar.bz2, rozpako-
– nie mogą się tam znaleźć. się moduł ov51x, umieszczony jednak wać go, przejść do nowo utworzonego
W przypadku mojej kamery – Trust nietypowo, w katalogu /lib/modules/ katalogu i wydać polecania make i make
Spacecam 320 – szybko dowiedzia- [wersja_jądra]/extra. Teraz wystarczyło install. Odtąd w systemie pojawi się
łem się, że jest ona oparta na układzie już polecenie modprobe ov51x, aby nowe nowy moduł pwc.
OV519, więc nie obsługuje jej żaden urządzenie /dev/video pojawiło się w sys- Po wszystkich tych zabiegach, nieza-
sterownik z jądra Linuksa. Pod adre- temie. leżnie od tego, jaki moduł kompilowali-
sem http://alpha.dyndns.org/ov511/ zna- Bardzo podobnie możemy skompi- śmy, możemy wrócić do czynności opi-
lazłem jednak sterownik, który umoż- lować i zainstalować najnowsze wersje sanych w punkcie Wsparcie w dystrybu-
liwia odczyt obrazu z tej kamery. Nie sterowników do innych kamer, które cji Linuksa.
jest to, co prawda, „prawdziwy” sterow- ściągniemy z Internetu. Podstawowym
nik, gdyż przy jego pomocy kamera nie warunkiem są prawidłowo zainstalowa- Kończymy konfigurację
będzie działała z aplikacjami kompatybil- ne źródła jądra w systemie. Ta proce- Moduły obsługujące kamery interne-
nymi z Video4Linux, ale i tak postanowi- dura będzie zapewne bardzo przydatna towe posiadają na ogół bardzo wiele
łem spróbować. dla posiadaczy kamer opartych na pod- opcji, które można wpisać do pliku /etc/
Aby skompilować jakiś pojedynczy zespołach firmy Philips, gdyż sterownik modprobe.conf. Niektóre nawet kilkadzie-
moduł jądra, w systemie trzeba było zain- dla tych kamer został niedawno usunię- siąt. Nie oznacza to, że należy je wszyst-
stalować źródła aktualnie używanego ty z jądra Linuksa. Co prawda, niektóre kie w jakiś sposób ustawiać, aby kamera
jądra, czyli pakiet kernel-source. Na pły-

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 5. Internetowe wykazy kamer działających pod Linuksem liczą setki pozycji

64 luty 2005
kamery internetowe sprzęt

Działające kamery
Producenci tego typu sprzętu często zmie- Mini jest oparta na stv0680 – sterow-
niają stosowane w kamerach układy, pozo- nik ten jest już w nowych wersjach
stawiając nazwę produktu bez zmian. jądra i w nowych dystrybucjach;
Dodatkowo, obowiązujące na rynku zwy- Webcamn NX, Webcam NX Pro – je-
czaje nakazują wprowadzanie nowych dynie „eksperymentalny” sterownik moż-
modeli co kilka miesięcy, często bez żad- na znaleźć pod adresem http://
nych zmian w parametrach technicznych. zc0302.sourceforge.net/.
W efekcie, na próżno można szukać jakiej- • Trust: w sprzedaży można znaleźć
kolwiek informacji o działaniu pod Linuk- modele oparte na OV511(+) – Space- Rysunek 6. Program GnomeMeeting
sem dużej części aktualnie sprzedawa- C@m 150, SpaceC@m USB, Spa- umożliwia bardzo wygodne
nych kamer USB. ceC@m 200, SpaceC@m 300 – te przetestowanie urządzeń dźwiękowych
Mogę dać pewną radę dotyczą- urządzenia działają dobrze, sterow-
podczas konfiguracji
cą zakupów – dobrze jest skorzystać nik jest w najnowszych dystrybucjach,
z informacji w Internecie, odwiedzając a dodatkowo pod adresem http://
strony linuksowych sterowników, podane alpha.dyndns.org/ov511/; SpaceC@m
Istnieją kamery, dla których usta-
w ramce W Internecie. Znajdziemy tam 320 – ta kamera występuje w dwóch wienie pewnych opcji jest niezbędne
informacje o setkach kamer, które dzia- wersjach: z układem OV511+ działa do ich działania z niektórymi programa-
łają w naszym systemie. Te dane można dobrze, ale z OV519 można otrzy- mi. Przykładowo, aby używać programu
następnie porównać z aktualną ofertą mać z niej obraz tylko przy pomocy GnomeMeeting z kamerą opartą na ukła-
w handlu. W ten sposób istnieje duże specjalnych programów – sterow- dach Phillipsa, potrzebne jest ustawie-
prawdopodobieństwo, że zakupiony pro- nik dostępny tylko na stronie http: nie rozmiaru i częstotliwości odświeża-
dukt będzie działać. //alpha.dyndns.org/ov511/ nie zapew- nia przy pomocy takiej linii w /etc/mod-
Obecnie najpopularniejszymi markami nia kompatybilności z Video4Linux; probe.conf :
kamer internetowych wydają się Logitech, Spycam 300, Spycam 300 Voice są
Creative Labs oraz Trust. Oto niepełna oparte na układzie stv0680 i dzia-
options pwc size=SIF fps=10
lista kamer tych producentów, które powin- łają. Niestety, nie wiem, czy doty-
ny działać pod Linuksem: czy to również modelu 300NX;
Trust SpaceC@m Lite działa na Listę wszystkich opcji, które przyjmu-
• Logitech: Quickcam Express (starsza sterowniku z http://webcam.source je moduł, można uzyskać nie tylko przy
wersja), Quickcam Web – linuksowy forge.net/ (CpiA); Trust SpaceCam 120, pomocy programu modinfo – lepiej jest
sterownik możemy znaleźć na http:// SpaceCam 100 PORTABLE – działają przeczytać odpowiednią dokumenta-
qce-ga.sourceforge.net/; Quickcam 3000 na sterowniku z http://nw802.source cję, np. w źródłach jądra – w katalo-
Pro, QuickCam 4000 Pro, QuickCam forge.net/. gu Documentation/usb znajdziemy pliki
Notebook Pro oraz QuickCam Note-
z opisem dla poszczególnych chipsetów
book wykorzystują układy Philipsa; ste- Gdy kupiliśmy już kamerę USB i podłączy-
kamer: w9968cf.txt, stv680.txt, se401.txt,
rownik na http://www.saillard.org/ oraz liśmy ją do komputera, a nie mamy poję-
w niektórych dystrybucjach; Quick- cia, z jakim sterownikiem może ona dzia-
ov511.txt oraz ibmcam.txt. Jeśli ścią-
Cam Express – sterownik pod adresem łać, powinniśmy sprawdzić identyfikatory gnęliśmy nasz sterownik z Internetu, to
http://home.tiscali.dk/tomasgc/labtec/; USB: dostawcy (vendor) oraz produktu (pro- zapewne w archiwum był plik README
Quickcam Messenger, Home oraz Tra- duct). Mogą one pojawić się w logach sys- lub podobny, zawierający opis wszyst-
veller – w momencie pisania tego arty- temowych, po podłączeniu kamery. Pokaże kich możliwych opcji.
kułu nie posiadały sterowników. je komenda cat /proc/bus/usb/devices Na koniec, nie zapomnijmy o upraw-
• Creative Labs – urządzenia PC Cam albo program Centrum informacyjne KDE. nieniach dostępu do urządzeń /dev/
600, PC Cam 300 posiadają sterownik Znając te dwa identyfikatory, możemy je video*. Aby każdy użytkownik mógł mieć
pod adresem http://mxhaard.free.fr/; wpisać w wyszukiwarce na stronie www.li- dostęp do obrazu z kamery interneto-
Creative WebCam III, WebCam Pro nux-usb.org. Otrzymamy wtedy informa-
wej, wystarczy nam polecenie chmod 666
(model PD1030) są oparte na układzie cję, czy istnieje sterownik do danego urzą-
/dev/video0.
ov511 i sterownik znajdziemy w no- dzenia.
wych dystrybucjach; WebCam Go
GnomeMeeting
Kamera internetowa – jak sama jej nazwa
działała. Na moim komputerze, po wyda- Tak więc, aby ustawić automatyczną jas- wskazuje – najczęściej znajduje zastoso-
niu polecenia modinfo ov51x, pojawiły się ność, progi i ekspozycję, dopisałem nas- wanie do sieciowych spotkań, w których
m.in. informacje: tępującą linię do pliku /etc/modprobe. możemy nie tylko porozmawiać, ale rów-
conf: nież widzieć swojego rozmówcę oraz być
parm: autobright:Sensor automatically § widocznym.
changes brightness options ov51x autobright=1 autogain=1 § Istnieje co najmniej kilka standardów,
parm: autogain:Sensor automatically § autoexp=1 umożliwiających tego typu komunikację
changes gain w Internecie. Jednym z najpopularniej-
parm: autoexp:Sensor automatically § W większości sterowników opcje modułu szych i zapewne najlepiej obsługiwa-
changes exposure pozwalają właśnie na ustawienie tego nych pod Linuksem jest H.323. Jest on
[...] typu parametrów. używany m.in. przez program Microsoft

www.lpmagazine.org 65
sprzęt

NetMeeting, a dla naszego systemu ope- Poza dźwiękiem, będzie nam


racyjnego stworzono jego odpowiednik potrzebna działająca kamera interne-
o nazwie GnomeMeeting. Został on stwo- towa, czy też jakiekolwiek urządzenie,
rzony dla GNOME, ale będzie równie nadające obraz przez któreś z urządzeń
dobrze działać w KDE, czy jakimkolwiek /dev/video*, albo kamera, podłączona
innym środowisku. Program ten posiada przez złącze Firewire. Powinniśmy naj-
dosyć spore możliwości, nawet większe pierw sprawdzić kamerę, np. uruchamia-
od pierwowzoru produkcji Microsoft, np. jąc Xawtv czy Kino.
umożliwia czat tekstowy. Sam program GnomeMeeting znaj-
Do prawidłowego działania progra- dziemy prawdopodobnie w naszej
mu będzie nam potrzebna karta dźwię- dystrybucji. Powinny tam być rów-
kowa, pracująca w trybie full-duplex, naj- nież wszystkie potrzebne nam wtyczki
lepiej ze sterownikami ALSA – musimy (ang. plugins) do tego programu, czyli Rysunek 7. Program GnomeMeeting
bez żadnych problemów równocześnie do obsługi dźwięku OSS lub ALSA oraz w działaniu
wysyłać dźwięk przez mikrofon oraz obrazu V4L (Video4Linux) lub ze złącza
słyszeć naszego rozmówcę. Zanim uru- Firewire (DC lub AVC). Najnowszą wersję Po zakończeniu konfiguracji w okien-
chomimy program, od razu sprawdźmy programu możemy znaleźć na stronie ku programu powinniśmy widzieć obraz
działanie mikrofonu i ustawienia mikse- http://www.gnomemeeting.org/ – znajdu- ze swojej kamery. Możemy wtedy otwo-
ra – co prawda w GnomeMeeting rów- ją się tam nie tylko źródła, ale również rzyć książkę adresową, ściągnąć z ser-
nież można regulować głośność, ale nie gotowe pakiety binarne dla najpopular- wera ils.seconix.com listę wszystkich
zawsze działa to dobrze. niejszych dystrybucji. Czasem niezbędne użytkowników i znaleźć jakiegoś, który
będzie zaopatrzenie się w wersję powy- w swoim opisie podał, że zgadza się na
żej 1.0 – w starszych występował pro- przyjmowanie testowych połączeń. Aby
Wyposażenie dodatkowe blem ze współpracą z kartami telewizyj- do niego zadzwonić, wystarczy dwu-
Niektóre kamery, jak np. Trust Space-
nymi i kamerami internetowymi, które krotne kliknięcie myszką. W przypad-
cam 320, są wyposażone w mikrofo-
ny. U mnie mikrofon w kamerze zadzia-
nie obsługiwały palety barw YUV420p. ku, gdy znamy adres jakiegoś użytkow-
łał natychmiast po włączeniu urządzenia Jeśli chcemy instalować program ze nika, możemy bezpośrednio wpisać go
– automatycznie załadował się bowiem źródeł, musimy najpierw skompilować i w głównym oknie GnomeMeeting – pro-
moduł jądra snd_usb_audio, będący zainstalować zamieszczone tam biblio- gram akceptuje URL-e w formacie h323:
sterownikiem ALSA do urządzeń USB. teki – openh323 oraz pwlib. Ponadto, [user@][host:[port]] oraz callto:[user@]
Komenda arecord -l pokazała nowe w systemie powinny być zainstalowane [host:[port]] – tę drugą formę adresu sto-
urządzenie [USB Camera]. Można pakiety -dev bibliotek GNOME, OpenL- suje się wyłącznie do serwera ils.seco-
z niego przechwytywać dźwięk zaska- DAP oraz SDL. Biblioteki i program kom- nix.com.
kująco dobrej jakości. Działa dobrze np. piluje się standardowymi poleceniami: Przy pomocy GnomeMeeting można
w GnomeMeeting. Urządzenie w kame-
./configure; make; make install. również prowadzić pogawędki z użyt-
rze nie umożliwia jednak regulacji gło-
Konfiguracja samego programu jest kownikami NetMeeting, ale choć głos
śności, przynajmniej ze sterownika-
mi ALSA – program alsamixer zwraca
uproszczona do minimum i odbywa się będzie działał dobrze w obydwie
komunikat o nie znalezieniu miksera. całkowicie w środowisku graficznym. strony, to tylko my będziemy go widzie-
Kamery są również często wyposa- Przy pierwszym uruchomieniu pojawi li – on nas nie zobaczy. Ten komercyj-
żone w dodatkowy przycisk (snapshot się Druid konfiguracji, który zada nam ny program zawiera po prostu proce-
button). Jeśli chcemy zrobić z niego jakiś kilka pytań: durę sprawdzającą, czy zdalny klient
pożytek, powinniśmy przeczytać doku- używa również oprogramowania tego
mentację używanego przez nas sterow- • nasze imię i nazwisko, pokazywane samego producenta – jeśli jest inaczej,
nika. Zapewne wymagane będzie poda- w sieci;
nie jakiegoś parametru przy ładowaniu • adres email, potrzebny do zarejestro-
modułu kamery.
wania się w katalogu użytkowników
Urządzenia dwufunkcyjne, czyli po-
GnomeMeeting;
łączenie prostego aparatu cyfrowego
z kamerą internetową, również mogą
• prędkość połączenia;
być obsłużone pod Linuksem, przynajm- • system dźwięku (najlepiej ALSA) oraz
niej jeśli są one zbudowane na układzie urządzenia wejściowe i wyjściowe
STV0680B (np. Trust Spycam 300, Aiptek – mogą być one podpięte do jednej
Pencam, Nisis Quickpix 2). Pod adresem karty dźwiękowej, ale mogą również
http://stv0680-usb.sourceforge.net/ znaj- pochodzić z różnych urządzeń. Po
dziemy nie tylko sterownik, umożliwiający wybraniu mamy możliwość przete-
działanie tej kamery jako urządzenia Vide- stowania konfiguracji dźwięku;
o4Linux, ale również program Pencam, • system obrazu – najczęściej V4L,
służący do ściągania zdjęć wykonanych Rysunek 8. Program Motion potrafi nie
chyba że korzystamy z Firewire, oraz tylko „pilnować” obrazu w kamerze, ale
przez to urządzenie, w czasie gdy nie było
urządzenie, jeśli mamy więcej niż również udostępniać go w sieci
ono podłączone do komputera.
jedno aktywne /dev/video*.

66 luty 2005
kamery internetowe sprzęt

nie pokaże żadnego obrazu. Gdy zdecy- trum miasta, stoku narciarskiego, plaży
dujemy, że wystarczy nam komunikacja itp. Takie rozwiązanie najczęściej uatrak-
głosowa oraz transmisja obrazu w jedną cyjnia daną stronę i przyczynia się do
stronę, najprościej jest przekonać zna- zwiększenia liczby odwiedzających.
jomych użytkowników NetMeeting, aby W Linuksie znajdziemy gotowe pro-
zarejestrowali się na serwerze ils.seco- gramy, które wykonają za nas prawie całą
nix.com – wtedy łatwo ich znajdziemy. pracę przy konfiguracji takiej kamery.
Nowe wersje GnomeMeeting pozwalają Najstarszym z nich i wciąż jednym
nam również na rejestrację przy użyciu z najpopularniejszych jest Webcam. Jest
tego programu na innych serwerach, on zawarty w archiwum razem ze źró-
używanych normalnie przez posiada- dłami Xawtv i można go ściągnąć bez-
czy NetMeeting. pośrednio od autora, ze strony http://
linux.bytesex.org/xawtv/. Program ten
Obraz z kamery potrafi odczytać dane z urządzenia
na stronie WWW /dev/video*, nagrać je do pliku jpeg, nało-
Pojęcie kamera internetowa niektó- żyć na obraz dowolny napis (najczę- Rysunek 9. Program Vlc potrafi również
rym kojarzy się bardziej z ozdobnikiem ściej data i czas) oraz dodatkowo wysłać współpracować z kamerami internetowymi
wielu serwisów internetowych w posta- gotowy plik na zdalny serwer, korzysta-
ci obrazu przekazywanego na żywo jąc z protokołu ftp. To ostatnie przyda- zostaje wyłącznie stworzenie strony
z jakiegoś ciekawego miejsca, np. cen- je się najbardziej, gdy postanowiliśmy html, najczęściej z nagłówkiem META
podpiąć kamerę do jakiegoś komputera, HTTP-EQUIV="Refresh", aby zapewnić
który stoi poza serwerownią. Program jej automatyczne odświeżanie w przeglą-
Kamery z OV519 będzie powtarzać te wszystkie opera- darkach gości na stronie.
Urządzenia wyposażone w układ OV519,
cje co zadaną liczbę sekund, bez żadnej
jak np. Trust SpaceC@m 320 czy Sony
EyeToy, stanowią nieliczne przykłady
ingerencji użytkownika. Obraz przez sieć
urządzeń – jak dotąd – niekompatybil- Użycie programu jest bardzo proste Obraz z naszej kamery internetowej
nych z Video4Linux. Znalazłem tylko dwa – wystarczy wydać polecenie webcam możemy przesyłać przez sieć nie
programy, przy pomocy którym możemy plik_konfiguracyjny. Zawartość przykła- tylko w postaci plików jpeg, uaktual-
uzyskać obraz z takich kamer. Pierwszy dowego pliku konfiguracyjnego pokaza- nianych co parę sekund, gdyż dzięki
z nich to program Getjpeg. Znajdziemy go no na Listingu 1. Składa się on z dwóch oprogramowaniu VideoLAN (http:
w archiwum ze sterownikami do kamery sekcji. //www.videolan.org/ ) jest możli-
(plik ov51x-1.65-1.11-mark.tar.bz2) w pod- Pierwsza sekcja ([grab]) zawie- we skompresowanie go i wysyłanie
katalogu test. Aby go skompilować, wy- ra parametry obrazu pobieranego w postaci strumienia danych, m.in mpeg
starczy przejść do tego podkatalogu
z kamery. Powinny one być zrozumia- lub asf. VideoLAN działa na wielu syste-
i wydać samo polecenie make. Wszyst-
łe, nawet bez czytania man webcam. Przy mach operacyjnych, w tym MS Windows,
ko, co możemy wykonać przy pomocy
tego programu, to zapisanie aktualne-
pomocy opcji text wpisujemy własny więc jest możliwe np. nadawanie na
go obrazu z kamery do pliku jpeg. Jeśli opis obrazu z kamery, a delay okre- Linuksie i odbiór na MS Windows.
uruchomimy ./getjpeg -d /dev/video1, śla tutaj, co ile sekund obraz jest ścią- Część dystrybucji zawiera ten pro-
obraz z kamery znajdziemy w pliku gany z kamery i wysyłany na serwer. gram, gdyż jest on rozprowadzany
image-00.jpg, oczywiście przy założeniu, Przyda się również opcja trigger – jeśli na licencji GPL. Najlepiej zainstalo-
że nasza kamera jest powiązana z /dev/ podamy wartość większą od zera, wać wtedy wszystkie pakiety, które
video1. Program ten możemy uruchamiać obraz będzie wysyłany tylko wtedy, posiadają w nazwie VLC. Gdy nie
w odrobinę bardziej fantazyjny sposób, gdy uległ jakiejkolwiek zmianie (coś mamy gotowych pakietów w dystry-
np. ./getjpeg -d /dev/video1 -o `date się poruszyło). Do całkiem profesjo- bucji, możemy posłużyć się gotowy-
+%s`.jpg -n 100 wykona nam 100 zrzu-
nalnego wykrywania ruchu przed mi ze strony www.videolan.org. Przy-
tek obrazu z kamery. Można je następnie
kamerą internetową najlepiej używać kładowo, dla Auroksa 10.0 można
konwertować np. na film avi, korzystając
z Mencodera.
znacznie bardziej zaawansowanego ściągnąć pliki przeznaczone dla
Kolejnym programem, współpracują- programu Motion, o którym napiszę Fedora Core (vlc-binary.tar.gz oraz
cym z takimi kamerami, jest Showvideo, w dalszej części. fedora1-updates.tar.gz). Po rozpako-
który znajdziemy pod adresem http:// Sekcja [ftp] zawiera adres serwera, waniu zostanie utworzony katalog vlc,
www.wlug.org.nz/OV519WebCam. Jego nazwę użytkownika, hasło, katalog oraz a w nim cały zestaw pakietów rpm.
również kompiluje się, używając wyłącz- nazwę pliku, w którym ma się znaleźć Polecenie rpm -U vlc/* --force --nodeps
nie polecenia make. Program ten pokazu- obraz z naszej kamery. Jeśli wpiszemy -h zainstaluje je wszystkie (będą tam
je na żywo obraz z kamery w okienku śro- local=1, obrazy nie będą wysyłane na również nowe wersje wielu bibliotek).
dowiska X Window i to jedyna jego funk- żaden zdalny serwer, tylko zapisywane VideoLAN posiada bardzo bogate
cja. Cóż, przynajmniej wiemy, że urzą-
w położeniach określonych przez para- możliwości, ale podam jedynie
dzenie jest sprawne, a jakość obrazu...
metry file, dir oraz tmp. prostą metodę na przesyłanie obrazu
niestety kiepska, przynajmniej w przy-
padku mojej Trust SpaceC@m 320.
Tak więc, po skonfigurowaniu pro- z kamery internetowej między dwoma
gramu Webcam, administratorowi po- komputerami w sieci. W identycz-

www.lpmagazine.org 67
sprzęt

Motion
Jednym 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
Rysunek 10. Nowe wersje programu Vlc umożliwiają bardzo łatwe przesyłanie obrazu przez weekend, po powrocie będziemy
przez sieć mieli do obejrzenia tylko zestaw obrazków
lub filmów, zarejestrowanych w momen-
ny sposób możemy przesyłać obraz MPEG TS – powinno działać ze wszyst- cie, gdy przed kamerą wystąpił jakiś ruch,
z DVD, z pliku avi, a nawet z karty kimi kamerami internetowymi. W przy- a nie cały kilkudziesięciogodzinny mate-
DVB. Korzystam przy tym z dosyć padku problemów, warto wypróbować riał. Przy pomocy Motion możemy rów-
nowej wersji vlc (0.8.1) oraz nakładki ASF. Ostatnie pytanie odnosi się do warto- nież tworzyć bardzo efektowne filmy
wxvlc, które są dostępne w dystrybu- ści TTL (Time To Live) pakietów przesyła- z obserwacji, np. zachowania rośliny
cji Debian Sid. nych przez sieć. Innymi słowy, określamy w ciągu całego dnia – widać, jak reaguje
Zaczynamy od uruchomienia progra- tutaj, przez ile ruterów mogą one przejść. ona na światło, rozwija kielich kwiatu
mu Wxvlc, więc powinniśmy zobaczyć W sieci lokalnej wystarczy nam itp. Program zawiera również w sobie
jeden z lepszych interfejsów graficznych z reguły liczba 1 lub 2. miniaturowy serwer http, umożliwiający
dla Vlc. Następnie w menu File wybie- To wszystko! Teraz już nasz obraz udostępnianie obrazu z kamery przez
ramy Wizard... –> Stream to network. powinien być nadawany, co widać po Internet lub sieć lokalną.
Teraz klikamy na Choose, aby określić, co pozycjach w menu Audio i Video. Jeśli Programu Motion raczej nie znaj-
chcemy nadawać. Interesująca nas kamera nie uaktywniły się one, to spójrzmy na dziemy w naszej dystrybucji Linuksa,
internetowa jest na zakładce Video4Linux, konsolę, z której uruchomiliśmy Vlc a jeśli już, to na ogół w okrojonej
w której podajemy ewentualnie urzą- – powinien znaleźć się tam komunikat wersji, która nie pozwala na tworze-
dzenie, jeśli nie jest to /dev/video. o błędzie, np. braku dostępu do urzą- nie filmów, kodowanych przy pomocy
Po przejściu dalej powinniśmy okre- dzenia lub niemożności otwarcia ffmpeg. Najlepiej ściągnąć źródła ze strony
ślić sposób wysyłania danych. Naj- portu. http://sourceforge.net/projects/motion/.
prostszą metodą jest wybranie HTTP. Gdy nasza nakładka nie pozwala Najpierw w naszym systemie powinny
W takim przypadku w okienku poni- na wybranie V4L jako źródła obrazu, zostać zainstalowane pakiety glibc-
żej nie powinniśmy wpisywać żadne- możemy posłużyć się linią komend. devel, libjpeg-devel, zlib-devel, curl-
go adresu. Alternatywnie, możemy spró- Przykładowo, vlc v4l:/dev/video: devel, openssl-devel oraz krb5-libs. Gdy
bować wybrać UDP Unicast, ale wtedy channel=1 uruchomi program z obra- chcemy używać Motion do nagry-
musimy podać adres komputera, na zem z wejścia composite1. Bardziej zło- wania filmów, powinniśmy jeszcze
którym będzie odbierany obraz. UDP żony przykład może wyglądać następu- ściągnąć ze strony ffmpeg.sourceforge
działa szybciej, mniej obciążając sieć, ale jąco: v4l:/dev/video:norm = pal:frequ- .net plik ffmpeg-0.4.8.tar.gz oraz skom-
częściej możemy spodziewać się proble- ency = 543250:size = 640x480:channel= 0: pilować i zainstalować następującymi
mów z tym protokołem. Ogromną zaletą adev =/dev/dsp:audio = 0. poleceniami:
VideoLAN jest jego wsparcie dla UDP Mul- Gdy wszystko działa, przechodzimy
ticast, czyli wysyłania strumienia do wielu na drugi komputer, gdzie uruchamiamy # tar zxfvp ffmpeg-0.4.8.tar.gz
komputerów równocześnie, ale wymaga ten sam program – Vlc. Tym razem z # mv ffmpeg-0.4.8 /usr/local/ffmpeg
to, aby cała nasza infrastruktura sieciowa menu File wybieramy Open Network # cd /usr/local/ffmpeg/
pozwalała na takie adresowanie. Można to Stream, zaznaczamy HTTP/FTP/MMS # ./configure
osiągnąć w sieci lokalnej, ale w Internecie i w okienku obok wpisujemy adres # make
nie jest to już możliwe. Ponadto, do działa- komputera, z którego nadajemy, oraz # make install
nia Multicast potrzebujemy odpowiedniej domyślny port 8080, np. 192.168.0.55:
konfiguracji jądra systemu. 8080. Powinniśmy zobaczyć obraz Na zakończenie instalacji ffmpeg, otwie-
Wróćmy teraz do naszej kamery. i przy okazji usłyszeć dźwięk z pierw- ramy dowolnym edytorem plik /etc/
Następne pytanie odnosi się do sposobu szej karty dźwiękowej na kompute- ld.so.conf, dopisujemy do niego jedną
kompresji przesyłanych danych. Będzie- rze, na którym jest podpięta kamera linię:
my mieli do wyboru m.in. MPEG PS, – chyba, że wyłączyliśmy go przy
MPEG TS czy ASF. Możemy spróbować wcześniejszej konfiguracji. /usr/local/lib

68 luty 2005
kamery internetowe sprzęt

oraz wydajemy polecenie ldconfig. Teraz pliku konfiguracyjnego dodać linię danych (MySQL i PostgreSQL), zdalne
możemy rozpakować archiwum z progra- output_normal off – wtedy obraz- kontrolowanie działającego programu
mem Motion (ja używam wersji motion- ki jpeg nie będą nagrywane na przez sieć oraz bardzo zaawanso-
3.1.17.tar.gz), aby skompilować i zainsta- dysku, a wyłącznie wysyłane przez wane mechanizmy wykrywania ru-
lować je komendami: ./configure, make, sieć. Możemy również zastosować chu.
make install. opcję snapshot_interval 10, a wtedy
Zabawę z programem możemy roz- program Motion będzie zachowy- Zakończenie
począć od pliku konfiguracyjnego, wał się jak serwer zwykłej kamery Linux wciąż nie cieszy się zbyt wielkim
zamieszczonego na Listingu 2. Powin- internetowej – co 10 sekund będzie uznaniem producentów kamer inter-
niśmy go skopiować do /usr/local/etc/ wysyłał nowy obraz, niezależnie od netowych – wiele tego typu urządzeń
motion.conf. W tym przykładzie prog- tego, czy wykrył ruch przed kamerą, działa tylko w MS Windows. Często
ram będzie odczytywał urządzenie czy nie. programy o podobnych funkcjach,
/dev/video0 i nagrywał obrazki z maksy- Pliki jpeg mimo wszystko zajmują jak darmowe odpowiedniki dla Linuk-
malną częstotliwością czterech klatek dosyć sporo miejsca na dysku, zwłasz- sa, w wersji dla dominującego sys-
na sekundę w katalogu /var/www/ cza w porównaniu z plikami mpeg temu, sprzedawane są za dziesiątki
kamera1 (powinniśmy wcześniej utwo- czy avi, z tą samą zawartością. Są też dolarów.
rzyć ten katalog). Opcją threshold okre- mniej wygodne do przeszukiwania.
ślamy, jak wiele pikseli obrazu musi Z tego powodu warto skorzystać
ulec zmianie, aby została ona uznana z możliwości nagrywania filmów. Przy- W Internecie:
za ruch przed kamerą, a opcja noise_level kładowe linie, które powinniśmy dopi-
• Strona domowa programu
pozwala na ignorowanie określonego sać do pliku konfiguracyjnego, mogą
GnomeMeeting:
poziomu szumów, który należy dostoso- wyglądać tak:
http://www.gnomemeeting.org/
wać do indywidualnej kamery i warun-
• Strona domowa programu Motion:
ków oświetlenia. output_normal off
http://motion.sourceforge.net/
Aby, poza zapisywaniem obrazków, ffmpeg_cap_new on • Program Webcam jest częścią
można je było oglądać na żywo przez ffmpeg_cap_motion on pakietu Xawtv:
przeglądarkę internetową, wystarczy ffmpeg_timelapse 0 http://linux.bytesex.org/xawtv/
dopisać do pliku konfiguracyjnego nastę- ffmpeg_timelapse_mode hourly • Sterowniki dla kamer z układami
pujące linie: ffmpeg_bps 500000 Philips'a:
ffmpeg_variable_bitrate 0 http://www.saillard.org/
# Live Webcam Server ffmpeg_video_codec mpeg4 • Sterowniki dla kamer z układem
CpiA:
webcam_port 8080
http://webcam.sourceforge.net/
webcam_quality 50 W ostatniej z tych linii określiliśmy
• Sterowniki dla kamer z SE401,
webcam_motion on sposób kodowania filmu – zamiast poda-
SE402 oraz EP800:
webcam_maxrate 1 nego tutaj divixa, możemy zastosować http://members.chello.nl/~j.vreeken/
webcam_localhost off mpeg1 lub msmpeg4, aby pliki mogły se401/
webcam_limit 0 być odtwarzane pod MS Windows bez • Sterowniki dla kamer z OV511(+),
konieczności instalowania dodatkowych OV518, OV519:
Następnie podajemy w przeglądar- kodeków. http://alpha.dyndns.org/ov511/
ce adres komputera, do którego jest Program Motion potrafi równo- • The Webcam HOWTO:
podpięta kamera oraz port 8080 cześnie pracować w trybie serwe- http://www.tldp.org/HOWTO/
(np. 192.168.200.2:8080). Uzyskujemy ra kamery internetowej oraz zapi- Webcam-HOWTO/
• Eksperymentalny sterownik, m.in. dla
obraz, który automatycznie odświe- sywać pliki avi czy mpg. Ponadto,
niektórych kamer Creative i Logitech:
ża się, gdy tylko zmienia się obraz jego bardzo bogate możliwości obej-
http://mxhaard.free.fr/spca5xx.html
w kamerze. Przy okazji możemy do mują nawet współpracę z bazami

R E K L A M A

www.lpmagazine.org 69
dla programistów

Piszemy program
do zmiany rozdzielczości
ekranu przy pomocy
rozszerzenia RandR
Marek Sawerwain

J
edną z wad środowiska X Window, pokażę, jak napisać tego typu pro-
wytykaną przede wszystkich przez gram. W środowiskach typu GNOME
początkujących użytkowników, jest czy KDE, a nawet w samym środowi-
jego dość trudna konfiguracja. sku X Window, istnieją odpowiednie
Wszelkie parametry serwera X-ów zostają programy wykorzystujące rozszerze-
zapisane w pliku tekstowym, więc najle- nie RandR, ale napisanie takiego pro-
piej przeprowadzać konfigurację poprzez gramu samodzielnie to bardzo dobre
edycję tego pliku. ćwiczenie.
Inną poważną wadą był brak moż- Co ciekawe, nasz program będzie
liwości zmiany parametrów wyświe- oferował dostęp do wszystkich mo-
tlanego obrazu bez restartu środowi- żliwych rozdzielczości. Przykładowo,
ska. Co prawda, możliwa była zmiana domyślnie dostępna aplikacja w środo-
rozdzielczości ekranu poprzez kom- wisku GNOME oferuje wyłącznie te
binację klawiszy [Ctrl ]+[Alt ]+[+] oraz główne, takie jak 640x480, 800x600,
[Ctrl ]+[Alt ]+[-], ale w ten sposób zmie- 1024x768 itd. Z tego powodu mo-
nialiśmy tylko samą rozdzielczość, żna powiedzieć (z lekkim przymruże-
a obraz wyświetlany przez X-y pozo- niem oka), iż poprawimy niedostatki
stawał nadal tych samych rozmia- środowiska GNOME.
rów. W rezultacie, przy zmianie roz-
dzielczości z wyższej na niższą, był Projektujemy program
włączany tryb ekranu wirtualnego. Program napiszemy wykorzystując biblio-
Ponadto, nie można było łatwo stero- tekę GTK+. Do zaprojektowania gra-
wać odświeżaniem obrazu. ficznego interfejsu użytkownika wyko-
Te problemy odeszły już do prze- rzystamy program Glade. Tym razem
Na płycie CD/DVD szłości wraz z wprowadzeniem roz- nie poprzestaniemy na wygenerowa-
Na płycie CD/DVD znajdują się
szerzenia o nazwie RandR. Pozwala niu pliku z opisem interfejsu (plik o roz-
wykorzystywane biblioteki, kod
ono również na wykorzystanie innych szerzeniu glade), ale przygotujemy rów-
źródłowy programu oraz wszyst-
możliwości kart graficznych, ponie- nież kod źródłowy tworzący ten inter-
kie listingi z artykułu.
waż, oprócz zmiany rozdzielczości fejs – program, który opracujemy, jest
O autorze ekranu bez konieczności restartu śro- niewielkich rozmiarów, więc będzie naj-
Autor zajmuje się tworzeniem dowiska X Window, możliwe stało się lepiej, gdy nasza aplikacja nie będzie
oprogramowania dla WIN32 także jego obracanie, jeśli tylko karta wymagać do poprawnej pracy dodatko-
i Linuksa. Zainteresowania: graficzna udostępnia taką funkcjonal- wych plików.
teoria języków programowania ność. Możliwości naszego programu
oraz dobra literatura. Okazuje się, że wykorzystanie tych można streścić jednym krótkim zda-
Kontakt z autorem:
możliwości jest dość łatwe do zapro- niem: program ma zmieniać roz-
autorzy@linux.com.pl
gramowania, więc w tym artykule dzielczość oraz wartość odświeża-

70 luty 2005
randr i gnome 2.8 dla programistów

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,
Rysunek 1. Schemat przepływu najważniejszych zdarzeń w naszym programie
za pomocą Glade i opcji Build z menu
File, wygenerujemy kod źródłowy,
nia ekranu. Pomimo tego, jak zawsze, warto wspomnieć. Gdy umieścimy w którym będzie tworzony interfejs.
warto zaprojektować schemat dzia- na formularzu obydwie kontrolki, to Zastosowanie tego kodu pozwoli
łania programu. Prezentuje go Rysu- zazwyczaj nie dodajemy żadnych ele- nam na utworzenie programu, który nie
nek 1. Najważniejszym zdarzeniem mentów do wyboru, gdyż robimy to będzie wymagał dodatkowych plików.
jest zmiana rozdzielczości ekranu, ale, później samodzielnie w programie. Jak się okaże, między tymi dwoma tech-
jak widać, sam proces wyboru pożą- Okazuje się, że to podejście tym razem nikami, które dostarcza nam program
danej rozdzielczości pociąga za sobą nie będzie działało, gdyż po załado- Glade, w finalnym kodzie aplikacji róż-
wybór zbioru dopuszczalnych wartości waniu pliku glade z opisem interfej- nice będą tylko kosmetyczne.
odświeżania. Jest to jedyny trudniejszy su, każda próba dodania elementów do
fragment do opracowania w naszym GtkComboBox będzie generować infor- Odczyt podstawowych
programie. macje o błędach. Sposób uniknięcia informacji
tego problemu jest bardzo prosty. Po Pomijając na razie sposób, w jaki napi-
Budujemy interfejs umieszczeniu komponentu GtkCombo- szemy program, istotne są dla nas
Przy tworzeniu oprogramowania w GTK+/ Box w tworzonym oknie, do listy ele- informacje o dostępnych rozdzielczo-
GNOME do przygotowania graficzne- mentów wystarczy dodać kilka war- ściach. Ich spis uzyskujemy tylko raz
go interfejsu użytkownika najlepiej tości, po czym zapisać plik, a następ- w naszym programie, korzystając z API
wykorzystać program Glade. Rysu- nie usunąć dodane elementy i ponow- systemu X Window. Z tego powodu na
nek 2 pokazuje interfejs naszej apli- nie zapisać projekt. Spowoduje to, że początku należy dołączyć odpowied-
kacji. Nie jest on zbyt skompli- w opisie XML zostanie odznaczone, nie pliki nagłówkowe:
kowany, gdyż stosujemy tylko dwa
widgety GtkComboBox oraz dwa stan-
Listing 1. Pętla wpisująca dostępne rozdzielczości do listy wyboru widgetu
dardowe przyciski: jeden do zmiany
rozdzielczości ekranu oraz jeden
ResolutionWidget
kończący działanie programu. Dodat- int i;
kowo, umieścimy jeszcze kilka
etykiet. W jednej z nich znajdzie gchar tmp_buf[128];
się aktualnie wybrana rozdzielczość. ...
Sam proces tworzenia interfejsu jest for (i = 0; i < nsize; i++) {
na tyle typowy, że nie będę poświęcał g_snprintf(tmp_buf, 128, "%5d x %-5d", sizes[i].width, sizes[i].height );
mu zbyt dużo czasu, ale przy widgetach gtk_combo_box_append_text(GTK_COMBO_BOX(ResolutionWidget), &tmp_buf[0]);
GtkComboBox ujawnia się pewne niedo- }
ciągnięcie programu Glade, o którym

www.lpmagazine.org 71
dla programistów

Listing 2. Obsługa sygnału changed dla widgetu wyboru rozdzielczości Przedstawiony powyżej kod zapewnia
nam spis dostępnych rozdzielczości.
void on_ResolutionWidget_changed( GtkWidget *widget, gpointer data ) W naszym programie czynność tę
{ wykonuje funkcja get_basic_informa-
int i=0; tion.
gchar tmp_buf[128]; W tym momencie musimy prze-
nieść uzyskane informacje do widgetu
i=gtk_combo_box_get_active(GTK_COMBO_BOX(widget)); o nazwie ResolutionWidget. W tym celu
selected_resolution=i; przepisujemy zawartość tablicy sizes.
Omawiany proces może wydawać się
for(i = 0; i < old_nrate;i++) skomplikowany, ale sprowadza się do
gtk_combo_box_remove_text(GTK_COMBO_BOX(RefreshWidget), 0); jednej krótkiej pętli typu for, której kod
znajduje się na Listingu 1.
rates = XRRConfigRates (screen_config, selected_resolution, &nrate); Podczas przepisywania ważna
old_nrate=nrate; jest całkowita ilość elementów tabli-
cy sizes. Wielkość tę poznaliśmy pod-
for (i = 0; i < nrate; i++) czas wywołania funkcji XRRConfigSizes
{ i została zapisana w zmiennej nsize.
g_snprintf(tmp_buf, 128, "%3d", rates[i] ); W samej pętli wykonujemy tylko dwie
gtk_combo_box_append_text(GTK_COMBO_BOX(RefreshWidget), &tmp_buf[0]); czynności. Instrukcją g_snprintf two-
} rzymy odpowiednio sformatowany ciąg
znaków, np. 1024 x 768, a następnie
sel_res=TRUE; wywołaniem gtk_combo_box_append_
} text dodajemy ten ciąg do listy wyboru
widgetu ResolutionWidget.
Jak widać, czynności, które trzeba
#include <X11/Xproto.h> W kolejnym kroku pobieramy indeks wykonać, aby uzyskać listę dostęp-
#include <X11/Xlib.h> aktualnie stosowanej rozdzielczości nych rozdzielczości ekranu, są try-
#include <X11/extensions/Xrandr.h> ekranu: wialne. W kodzie naszej aplikacji tym
#include <X11/extensions/Xrender.h> zadaniem zajmuje się funkcja o nazwie
current_size = XRRConfigCurrent fill_resolution_list. Wykonuje ona
Najważniejszy jest dla nas przedostat- Configuration (screen_config, jeszcze jedną ważną czynność, a mia-
ni plik, bo w nim znajdują się funkcje &current_rotation); nowicie wpisuje do etykiety aktualne
związane z rozszerzeniem RandR. Uzy- parametry obrazu. Kod, który wykonu-
skane informacje należy gdzieś umie- Możliwości RandR nie ograniczają się je te czynności, jest następujący:
ścić, więc zdefiniujemy kilka zmien- wyłącznie do zmiany rozdzielczości
nych. Pierwsza z nich reprezentuje ekranu. Obraz możemy obracać o 90 g_snprintf(tmp_buf, 128, §
aktualną konfigurację: stopni, więc w powyższej linii kodu "%5d x %-5d@%3d Hz", sizes §
należy podać adres do zmiennej, [current_size].width, §
XRRScreenConfiguration *screen_config; w której zostanie umieszczona infor- sizes[current_size].height, §
macja o obrocie ekranu. XRRConfigCurrentRate(screen_config)); §
Następna to w rzeczywistości tabli- Samą tablicę zawierającą dostę- gtk_label_set_text §
ca, w której zostaną umieszczone pne rozdzielczości ekranu odczytu- (GTK_LABEL(ActualResLabel), tmp_buf);
informacje o dostępnych rozdzielczo- jemy za pomocą funkcji XRRConfig-
ściach: Sizes: Wykorzystaliśmy zmienną current
_size. Jej wartością jest indeks, pod
XRRScreenSize *sizes; sizes = XRRConfigSizes § którym w tablicy sizes znajduje się
(screen_config, &nsize); opis aktualnie stosowanej rozdzielczo-
Proces odczytu spisu rozdzielczości roz- ści. Wartość odświeżania odczytujemy
poczynamy od uzyskania uchwytu: Ważną rolę pełni zmienna nsize. Jest za pomocą funkcji XRRConfigCurrent-
w niej umieszczana liczba dostęp- Rate, która w wyniku daje dokładną
screen_config = XRRGetScreenInfo nych rozdzielczości ekranu. Chociaż wartość odświeżania.
(GDK_DISPLAY(), GDK_ROOT_WINDOW()); nasz program służy tylko do zmiany
rozdzielczości, to możemy również Wybieramy rozdzielczość
Jak widać, wykorzystujemy predefi- odczytać dostępne sposoby obraca- oraz odświeżanie
niowane funkcje z podsystemu GDK, nia ekranu: Podczas projektowania interfejsu w wid-
reprezentujące okno główne: GDK _ROOT_ getach GtkComboBox trzeba koniecz-
WINDOW, oraz urządzenie GDK _DISPLAY, rotations = XRRConfigRotations § nie zaimplementować obsługę syg-
z którego korzysta system GTK+. (screen_config, &current_rotation); nału changed, gdyż po wyborze roz-

72 luty 2005
randr i gnome 2.8 dla programistów

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

Rysunek 2. Program do zmiany rozdzielczości ekranu


Ustala ono rozdzielczość ekranu oraz
wartość odświeżania:
dzielczości ekranu bądź wartości dzielczości, jak wiadomo, jest tabli-
odświeżania z rozwijanej listy, ten cą, więc wystarczy poznać indeks roz- status=XRRSetScreenConfigAndRate §
wybór musi zostać w jakiś sposób dzielczości wskazanej przez użytkow- (GDK_DISPLAY(), §
zapamiętany. nika. Możemy tak zrobić, gdyż przeno- screen_config, GDK_ROOT_WINDOW(), §
W przypadku komponentu Refresh- sząc dane z tablicy sizes do listy elemen- selected_resolution, current_rotation,§
Widget sprawa jest bardzo prosta, gdyż tów widgetu ResolutionWidget zacho- selected_rate, CurrentTime);
wystarczy tylko zapamiętać indeks ele- waliśmy tę samą kolejność oraz warto-
mentu, co pozwala na odczyt wartości ści indeksów. Trzy pierwsze argumenty wskazują na
z odpowiedniej tablicy, podobnie jak Zadaniem następnej pętli jest usu- urządzenie oraz uchwyt reprezentu-
w przypadku dostępnych rozdzielczości. nięcie poprzednio wpisanych warto- jący aktualną konfigurację. Rozdziel-
Dodatkowo, ustawiamy specjalną flagę, ści odświeżania. W tym celu stosujemy czość ustalamy czwartym argumen-
informującą o tym, że wybór odświe- gtk_combo_box_remove_text, wywoła- tem, przy czym, jak widać, jest to tylko
żania został już dokonany. Kod funk- ne dokładnie kilkanaście razy, w zależ- indeks wskazujący na element tablicy
cji, która reaguje na sygnał o wskazaniu ności do tego, ile było dopuszczalnych sizes. Następna zmienna wskazuje na
wartości dla widgetu wyboru wartości wartości odświeżania. Ilość jest prze- obrót ekranu. W naszym programie
odświeżania, jest bardzo krótki: chowywana w zmiennej old_nrate. nie zajmujemy się tym problemem,
Warto zapytać się, co stanie się, gdy więc tylko kopiujemy tę wartość.
void on_RefreshWidget_changed § lista dostępnych wartości odświeżania W następnym parametrze określamy
( GtkWidget *widget, gpointer data ) { będzie pusta. Funkcja usuwająca ele- wartość odświeżania. Nie jest to tym
selected_refresh= § ment z listy widgetu powinna zgłosić razem indeks odnoszący się do tabli-
gtk_combo_box_get_active § błąd. Tak się nie stanie, gdyż zmienna cy, ale rzeczywista wartość odświeża-
(GTK_COMBO_BOX(widget)); old_nrate na początku pracy aplikacji nia. W ostatnim parametrze podajemy
selected_rate=rates[selected_refresh]; zawiera zero i pętla for nie wykona ani aktualny czas.
sel_ref=TRUE; jednej iteracji. Wywołanie funkcji XRRSetScreen-
} Ostatni fragment wypełnia listę ConfigAndRate to najważniejsza czyn-
komponentu RefreshWidget. Pierw- ność, którą musimy wykonać. W kodzie
W przypadku rozdzielczości ekranu, szym krokiem jest wywołanie funk- z Listingu 3, przed zmianą rozdzielczo-
kod jest już znacznie bardziej skom- cji XRRConfigRates. W jej wyniku ści, upewniamy się jednak, sprawdza-
plikowany. Listing 2 zawiera pełną otrzymujemy tablicę z wartościami jąc wartość flag sel_res oraz sel_ref,
treść funkcji, która jest wywoływana odświeżania dla wybranej rozdziel- czy użytkownik istotnie wybrał roz-
w momencie pojawienia się zdarzenia czości, zapisanej w zmiennej selec- dzielczość i odświeżanie.
changed. ted_resolution. Ważna jest również Po ustaleniu rozdzielczości wywo-
Pierwsze dwie linie po deklaracji ilość dostępnych wartości odświe- łujemy XRRConfigCurrentConfigura-
zmiennych są konieczne, abyśmy pozna- żania i tę wielkość zapamiętujemy tion, aby pobrać parametry obrazu
li, jaką rozdzielczość wskazał użytkow- w zmiennej nrate. Następnie przenosimy i aktualizujemy etykietę, w której te
nik. Zmienna sizes, która zawiera roz- ilość dostępnych odświeżań do zmien- informacje są prezentowane. Następ-

www.lpmagazine.org 73
dla programistów

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
Rysunek 3. Projektowanie interfejsu programu w Glade
znajdziemy kilka pomocniczych funk-
cji i makr. Wykorzystamy także plik
nie wpisujemy do naszych flag war- MainWin=glade_xml_get_widget(xml, § o nazwie callbacks.h, w którym znajdują
tości FALSE. "MainWin"); się nagłówki funkcji reagujących na zda-
rzeniach. Implementację tych funkcji już
Wersja programu Podłączenie sygnałów następuje w spo- zawiera nasz program. Plik callbacks.h
z plikiem glade sób automatyczny – wystarczy wywo- dołączamy do naszego programu, gdyż
Opisane dotychczas funkcje są wystar- łać funkcję: plik interface.c wymaga tego pliku,
czające, aby zmieniać rozdzielczość oraz a przecież nie będziemy modyfikować
odświeżanie ekranu, ale musimy zdecy- glade_xml_signal_autoconnect bez wyraźnego powodu plików genero-
dować, w jaki sposób będziemy budo- wanych automatycznie.
wać interfejs. Tego typu kod, jak zwykle, umiesz- Przy tej okazji trzeba ponownie
Najłatwiejszy sposób to stworzenie czamy w funkcji main. Przed ostatecz- wspomnieć o konstruktorach kom-
interfejsu za pomocą programu Glade nym uruchomieniem programu wyko- ponentów GtkComboBox. Glade może
i zapisanie go do pliku o rozszerze- nujemy jeszcze jedną ważną czynność, wygenerować plik interface.c, w któ-
niu glade. Taki plik wczytujemy do a mianowicie wypełniamy listę widge- rym będzie stosowany konstruktor
naszego programu wykorzystując tu ResolutionWidget w sposób, który gtk_combo_box_new, zamiast potrzeb-
bibliotekę libglade. Zanim cokolwiek opisałem we wcześniejszej części tego nego nam gtk_combo_box_new_text.
zrobimy, należy zainicjować GTK+. artykułu. Po tej czynności możemy już Należy więc sprawdzić, jak wygląda
Ta operacja wymaga wyłącznie jednej uruchomić program wywołując funkcję plik interface.c pod kątem tych kon-
linii: gtk_main. kretnych funkcji.
Kod, który trzeba dodać do nasze-
gtk_init(&argc, &argv); Wersja samodzielna go programu, nie jest zbyt wielki. Na
Wersja z plikiem glade ma tę zaletę, początek możemy usunąć kilka lini-
Wczytanie pliku glade to również tylko że istotnie łatwo jest napisać kod, jek związanych z obsługą libglade. Nie-
jedna linia kodu: który wczyta plik z opisem inter- potrzebne są pliki nagłówkowe oraz
fejsu. Ponadto, jednym poleceniem deklaracja obiektu xml. Po wywołaniu
§
xml = glade_xml_new("main_app_win.glade", łączymy zdarzenia z funkcjami. gtk_init tworzymy okno naszej aplika-
NULL, NULL); Wadą tego rozwiązania jest to, że cji w następujący sposób:
plik glade musi być dystrybuowany
Następną czynnością, którą dość często razem z aplikacją. O ile w przy- MainWin=create_MainWin();
trzeba wykonać w programach GTK/ padku dużego programu nie stanowi
GNOME, korzystających z plików glade, to większego problemu, to w na- Następnie, podobnie jak to było
jest uzyskanie referencji do potrzeb- szej aplikacji nie to najlepsze roz- w poprzedniej wersji programu, uzy-
nych widgetów. Dokonujemy tego wiązanie. Najlepiej, aby nasz program skujemy odniesienia do widgetów.
funkcją glade_xml_get_widget. Przykła- nie wymagał żadnych dodatkowych Korzystamy z gotowej funkcji lookup_
dowo, dla okna głównego wygląda to plików, poza środowiskiem X Window widget, która znajduje się w pliku sup-
następująco: oraz GNOME. port.c. Referencje do trzech pozostałych

74 luty 2005
randr i gnome 2.8 dla programistów

Listing 3. Zmiana rozdzielczości oraz odświeżania Rozszerzenie RandR


Jeśli mamy wątpliwości, czy w naszej
void on_ChangeResBtn_clicked( GtkWidget *widget, gpointer data )
wersji środowiska X Window jest
{
dostępne rozszerzenie RandR, to
gchar tmp_buf[128]; zanim zaczniemy pisać nasz program,
wystarczy spróbować wydać polece-
if(sel_res==FALSE && sel_ref==FALSE) { nie xrandr z poziomu konsoli. Jeśli
GtkWidget *dialog = gtk_message_dialog_new (GTK_WINDOW(MainWin), polecenie jest dostępne i środowisko
GTK_DIALOG_MODAL, X Window wspiera rozszerzenie RandR,
GTK_MESSAGE_ERROR, to zobaczymy listę dostępnych roz-
GTK_BUTTONS_CLOSE, dzielczości. Większość nowych dystry-
"Please choose screen resolution and refresh rate!",NULL);
bucji Linuksa, takich jak Aurox, Man-
drakelinux czy Fedora Core, stosu-
je nowe, czy wręcz najnowsze wersje
gtk_dialog_run (GTK_DIALOG (dialog));
implementacji (w tym coraz popular-
gtk_widget_destroy (dialog);
niejszą X.org) środowiska X Window,
return ; więc rozszerzenie RandR jest zazwy-
} czaj dostępne.
Ponieważ rozszerzenie RandR jest
Status status = RRSetConfigFailed; mimo wszystko stosowane dopiero od
niedawna, więc warto do naszego pro-
status=XRRSetScreenConfigAndRate (GDK_DISPLAY(), gramu wprowadzić funkcję sprawdza-
screen_config, GDK_ROOT_WINDOW(), jącą, czy jest ono dostępne. Funkcja
selected_resolution, current_rotation,
tego rodzaju mogłaby przedstawiać
się w następujący sposób:
selected_rate, CurrentTime);

int check_randr(int *major_version, §


current_size = XRRConfigCurrentConfiguration (screen_config, &current_rotation);
*minor_version) {
int event_basep, error_basep,
g_snprintf(tmp_buf, 128, "%5d x %-5d@%3d Hz",
major_version, minor_version;
sizes[current_size].width,
if (XRRQueryExtension (GDK_DIS §
sizes[current_size].height , selected_rate);
PLAY(), &event_basep, &error_ §
basep)) {
gtk_label_set_text(GTK_LABEL(ActualResLabel), tmp_buf);
XRRQueryVersion (GDK_DISPLAY(), §
*major_version, *minor_version);
sel_res=FALSE;
return TRUE;
sel_ref=FALSE;
}
return FALSE;
get_basic_information();
}
}

oprogramowanie dostępne w GNOME.


potrzebnych widgetów uzyskujemy stwie do poprzedniej wersji, koniecznie Zachęcam do wprowadzania własnych
w następujący sposób: trzeba zastosować funkcje pokazującą poprawek do programu. Jak widać, aby
widgety w następującej postaci: napisać przydatny program, czasem
ResolutionWidget=lookup_widget § wystarczy dobry pomysł oraz jeden
(MainWin, "ResolutionWidget"); gtk_show_widget_all(MainWin); wolny wieczór.
RefreshWidget=lookup_widget §
(MainWin, "RefreshWidget"); gdyż okno nie zostanie wyświetlone
ActualResLabel=lookup_widget § samodzielnie. I są to jedyne zmiany, które
(MainWin, "ActualResLabel"); musimy wykonać. Uzyskany program nie W Internecie:
potrzebuje już do poprawnego działania
Funkcja lookup_widget wymaga dwóch dodatkowych plików. • Strona przedstawiająca
argumentów. Pierwszy to okno (inaczej rozszerzenie RandR:
mówiąc, rodzic), które zawiera pozo- Podsumowanie http://keithp.com/~keithp/talks/randr/
• Strona domowa biblioteki GTK+:
stałe widgety, natomiast w drugim, Na zakończenie, można powiedzieć, że
http://www.gtk.org/
podobnie jak poprzednio, podajemy małym nakładem pracy udało się nam
• Implementacja systemu X11,
symboliczną nazwę widgetów. Kolej- uzyskać bardzo przydatny program do zdobywająca coraz większą
nym krokiem, podobnie jak w wersji zmiany rozdzielczości. Co więcej, nasz popularność:
z plikiem glade, jest wywołanie funk- program oferuje dostęp do większej http://www.x.org/
cji fill_resolution_list. W przeciwień- gamy rozdzielczości ekranu niż podobne

www.lpmagazine.org 75
testy ibm thinkpad t41 testy

IBM ThinkPad T41


Michał Niwicki

P
ierwszą rzeczą, którą postano- Dystrybucje typu Live
wiłem zrobić, gdy do redak- Ponieważ prawdziwym sprawdzianem
Zalety
cji przyniesiono nowiutkie- dla komputera są systemy uruchamia- • Solidna konstrukcja
go ThinkPada T41, było zain- ne bezpośrednio z płyty CD/DVD, uru- • Bezproblemowa współpraca
stalowanie na nim systemu Linux. Lekki chomiłem na ThinkPadzie kilka z nich. z Linuksem
niesmak poczułem widząc informację, Wybrałem FreeSBIE, bazujące na Free- • Podświetlana klawiatura
naklejoną na obudowie komputera, że BSD, małą dystrybucję Damn Small • Cicha praca
sprzęt najlepiej współpracuje z syste- Linux oraz Games Knoppix 3.7. Mimo
mem operacyjnym Windows XP. Mając moich wątpliwości, wszystkie uruchomi-
na uwadze liczne listy przychodzące do ły się szybko i bez problemów. Wady
redakcji, w których czytamy o proble-
mach z instalacją Linuksa na laptopach, Wady i zalety • Brak polskiej instrukcji obsługi
poczułem się zaniepokojony. Nie będę skupiał się na gadżetach i wyso- • Wysoka cena
kich parametrach testowanego sprzętu,
Aurox ale wybiorę raczej kilka elementów, na Niestety, wadą opisywanego sprzętu
Na pierwszy ogień poszła nowa wersja które warto zwrócić uwagę decydując się jest jego stosunkowo wysoka cena. Porów-
Auroksa (10.1). Po włożeniu do napędu na zakup ThinkPada T41. nując inne laptopy tej samej klasy (Dell Lat-
DVD instalacyjnych płyt dystrybucji, Laptop jest urządzeniem lekkim titude, HP Compaq), IBM Thinkpad T41 jest
bez żadnych problemów uruchomił się o obudowie odpornej na wstrząsy i ude- urządzeniem drogim (ok. 9 tyś. zł). Warto
instalator Anaconda. Kłopotu nie spra- rzenia. W oczy rzucają się solidne stalowe zatem zastanowić się nad wyborem prze-
wiło również wykrycie poprawnej kon- zawiasy scalające panel ekranu z kompu- nośnego komputera mniej znanej marki,
figuracji sprzętowej. System zainstalo- terem. Tak jak we wszystkich ThinkPa- nieodbiegającego parametrami od T41,
wał się szybko, sprawnie i bez wyświe- dach, urządzeniem zastępującym tra- a lepiej wypadającego cenowo.
tlających się komunikatów o błędach. dycyjną myszkę jest usytuowany na
środku klawiatury czerwony trackpoint. Podsumowanie
Novell Linux Desktop 9 Dodatkowo, poniżej znajduje sie touch- Krótko mówiąc, komputer prawie na
Podobnie jak w przypadku Auroksa, pad, który w przypadku korzystania piątkę. Tak jak to w przypadku produk-
postąpiłem także z nową dystrybu- z tego pierwszego urządzenia wskazu- tów IBM-a bywa, otrzymujemy sprzęt naj-
cją opartą na SUSE. Mimo, że instala- jącego, trochę przeszkadza. Zauważal- wyższej jakości.
Ocena
cja przebiegła pomyślnie, pojawiły się na jest dobra jakość dźwięku płynące-
lekkie problemy z konfiguracją ekranu. go z wbudowanych głośników. Impo-
Za pomocą programu konfiguracyjnego nuje cicha praca komputera – wentylator
szybko ustawiłem prawidłowe parame- włącza się jedynie w razie potrzeby i nie
try wyświetlania obrazu. Moją uwagę przeszkadza w pracy.
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).

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 Rysunek 1. IBM ThinkPad T41

76 luty 2005
testy novell linux desktop testy

Novell Linux Desktop 9


Michał Niwicki

N
a początku listopada 2004 Wady i zalety
roku firma Novell poinformo- System wydaje się być dopracowany pod
Zalety
wała o wprowadzeniu linukso- każdym względem, ale można znaleźć • Bardzo prosta instalacja
wego systemu operacyjnego w nim również wady. Pomimo, że dystry- • Łatwa i intuicyjna obsługa
przeznaczonego dla przedsiębiorstw. bucja obsługuje język polski (już na pozio- • Domyślnie zainstalowane wsparcie
Novell Linux Desktop 9 jest oparty na dys- mie instalacji), to istnieją aplikacje, które dla aplikacji napisanych w Javie
trybucji SUSE. Poza standardowymi pa- są dostępne wyłącznie po angielsku. Taka i we Flashu
kietami wchodzącymi w jej skład, zawiera sytuacja ma miejsce w Centrum Pomocy,
szereg aplikacji przeznaczonych do pracy które jest umieszczone na pasku zadań. Wady
biurowej. Warto wymienić chociażby pa- Zastanawia również wykorzystanie stosun-
kiet OpenOffice.org, przeglądarkę inter- kowo starego jądra w wersji 2.6.5 – być może • Nie przetłumaczone na język polski
netową Mozilla Firefox, klient poczty Novell brano pod uwagę stabilność systemu. niektóre programy i elementy aplikacji
Evolution oraz Adobe Acrobat Reader – pro- Mocnych punktów dystrybucji jest
gram umożliwiający wyświetlanie plików zdecydowanie więcej. Na uznanie na pewno (kontakt z użytkownikiem ograniczony do
pdf. Domyślnie są instalowane sterowniki zasługuje możliwość pełnej gotowości sys- niezbędnego minimum).
dla kart Nvidii oraz wtyczki, dzięki którym temu do pracy bezpośrednio po instalacji Novell Linux Desktop opiera się na
można odtwarzać prezentacje przygotowa- – NLD zawiera podstawowe, już skonfigu- niemieckim SUSE, uznawanym za dys-
nych we Flashu oraz uruchamiać aplikacje rowane, narzędzia biurowe, udostępniające trybucję stabilną i w miarę bezpieczną.
napisane w Javie. wszystkie funkcje, do których są przy- Mimo, że podejście do polityki bezpie-
Novell Linux Desktop cechuje prostota zwyczajeni użytkownicy. W oko wpada czeństwa nie jest aż tak rygorystyczne, jak
instalacji oraz łatwość użytkowania, zatem odziedziczona po SUSE przyjazna grafi- w przypadku Debiana, to twórcom udało
znajdzie on najprawdopodobniej zastoso- ka, zwłaszcza w środowisku KDE. System się osiągnąć połączenie stabilności syste-
wanie w charakterze uniwersalnej platfor- nie ma żadnych problemów z wykry- mu z łatwością jego użytkowania.
my dla komputerów biurowych. waniem urządzeń dołączanych przez USB. Warto zastanowić się, czy proponowa-
System jest dobry, ale nie ma nic za na przez Novella cena rzeczywiście jest aż
Instalacja systemu darmo – sugerowana cena produktu wynosi tak wysoka, na jaką wygląda.
Instalacja Novell Linux Desktop 9 jest 50 euro. Novell zapewnia także roczny
bardzo prosta. Sprowadza się jedynie do dostęp do uaktualnień i poprawek. Podsumowanie
uruchomienia programu instalacyjnego z Novell Linux Desktop to dystrybucja Linuk-
płyty DVD oraz do zatwierdzenia kilku Novell kontratakuje sa bardzo dobrze przystosowana do zasto-
opcji zaproponowanych przez producentów Kilka lat temu skończyły się czasy domi- sowań biurowych. Niewątpliwie zwróci
systemu. Dostępne są oczywiście zaawan- nacji Novella na rynku sieciowych syste- uwagę klientów korporacyjnych szukają-
sowane parametry instalacji, ale domyślnie mów operacyjnych. Od tego czasu pro- cych tańszej od proponowanej przez Micro-
użytkownik nie jest o nie pytany. Instalator dukty tej firmy, uważane za niezastąpio- soft platformy systemowej.
sam potrafi wykryć i skonfigurować zainsta- ne, powoli zaczęły ustępować wszędobyl-
Ocena
lowany sprzęt. skiemu Microsoftowi. Obecnie Novell nad-
rabia straty licząc na zdobycie przynajmniej
Novell, czyli SUSE LINUX części klientów korzystających na co dzień
Czym różni się Novell Linux Desktop od z platformy Windows. Ma nadzieję, że
typowej dystrybucji SUSE LINUX? Pierwszą pierwsze wdrożenia dystrybucji będą miały
rzeczą, która rzuca się w oczy, jest przyja- miejsce w instytucjach rządowych oraz pla-
zny dla oka instalator oraz logo firmy Novell cówkach edukacyjnych.
pojawiające się podczas uruchamiania
większości popularnych programów. Zmo- Czy warto?
dyfikowano pakiet OpenOffice.org oraz Dlaczego warto zwrócić uwagę na produkt
dodano mechanizmy integracji z ZENworks Novella? Wśród systemów, które łatwo się
– oprogramowaniem ułatwiającym central- instaluje, NLD nie tylko nie ustępuje wiodą-
ne zarządzanie aplikacjami przedsiębior- cej konkurencji (np. Mandrakelinux, Fedora
Rysunek 1. Novell Linux Desktop
stwa. Poruszanie się po systemie przebiega Core, Windows), ale w niektórych aspek-
podczas pracy
identycznie jak w SUSE. tach wypada od niej zdecydowanie lepiej

www.lpmagazine.org 77
Katalog firm Linux+

Firmy oferujące narzędzia


deweloperskie dla Linuksa
Katalog firm Linux+ ma za zadanie prezentować co miesiąc te firmy, Tematy kolejnych katalogów są następujące: aplikacje do pracy
które tworzą rozwiązania dla Linuksa. W tym miesiącu grupowej (marzec), aplikacje do zarządzania treścią WWW
prezentujemy firmy tworzące narzędzie deweloperskie. (kwiecień) oraz aplikacje biurowe (maj).

Lp. Nazwa firmy Strona domowa firmy: Lp. Nazwa firmy Strona domowa firmy:
1 Borland www.borland.pl 41 Bitpipe, Inc. www.bitpipe.com
2 Trolltech Inc. www.trolltech.com 42 Raisonance S.A. www.raisonance.com
3 Software AG www.softwareag.com 43 Navicat www.navicat.com
4 SlickEdit Inc. www.slickedit.com 44 Simplewire, Inc. www.simplewire.com
5 Siliconpenguin.com www.siliconpenguin.com 45 Integrated Computer www.ics.com
Solutions
6 Auto ID Polska Sp. z o.o. www.autoid.pl
46 SYSI GmbH Software www.sysi-software.de
7 The SCO Group www.sco.com
Systeme
8 Agency9 www.agency9.se
47 CPT Crosswords www.geocities.com/
9 CA3de www.ca3d-engine.de cptshareware/
10 SimTech Simulation www.simtech.fr 48 Visual-paradigm.com www.visual-paradigm.com
and Technology
49 AquaFold, Inc www.aquafold.com
11 Clinic New Media www.clinicdesign.com.au
50 Metrowerks www.metrowerks.com
12 Saab Training www.gizmosdk.com
Systems AB 51 Sav technology www.savtechno.com

13 Hue AS www.hue.no 52 Intel www.intel.com

14 SGI www.sgi.com 53 GarageGames, Inc. www.garagegames.com

15 Novell www.novell.pl 54 HyperPanel Inc. www.pcbootdirect.com

16 IBM www.ibm.com 55 Bitrix www.bitrixsoft.com

17 Sybase www.sybase.pl 56 Stichting Blender www.blender3d.org


Foundation
18 Fujitsu Systems Europe www.fujitsu.com
Limited 57 New Planet Software www.newplanetsoftware.com

19 CodeBase www.sequiter.com 58 Omnicore Software www.omnicore.com

20 SAP www.sap.pl 59 Elixir Technology Pte Ltd www.elixirtech.com

21 BitRock SL www.bitrock.com 60 Intland Software www.intland.com

22 Bungisoft www.bungisoft.com 61 Mix Software, Inc. www.mixsoftware.com

23 Studio501 www.studio501.com 62 MetaCard Corporation. www.metacard.com

24 Zend Technologies Ltd www.zend.com 63 Aonix www.aonix.com

25 Agilis Software www.agilis-sw.com 64 Imperial Software www.ist.co.uk


Technology
26 Optimal Solution www.optsol.at
65 BBDSoft www.bbdsoft.com
Katalog firm Linux+: www.lpmagazine.org/pl/katalog/

27 The Portland Group www.pgroup.com


STMicroelectronics 66 ScenTech AG www.scentech.ch

28 Devguide.net www.devguide.net 67 BitMover, Inc. www.bitkeeper.com

29 Polcentrix Polska www.polcentrix.com.pl 68 Abraxas Software www.abxsoft.com

30 ActiveState www.activestate.com 69 LynuxWorks, Inc. www.lynuxworks.com

31 Contium S.A. www.contium.pl 70 Etnus, LLC www.etnus.com

32 Javart Sp. zo.o. www.javart.com.pl 71 UniPress Software www.unipress.com

33 Komtech Sp. zo.o. www.komtech.com.pl 72 Excel Software www.excelsoftware.com

34 Sun Microsystems Poland pl.sun.com 73 Omnicore Software www.omnicore.com

35 Progress Software www.progress.com 74 Code Forge www.codeforge.com

36 NuSphere Corporation www.nusphere.com 75 Vital, Inc www.vital.com

37 DevGuide.net www.devguide.net 76 JetBrains www.jetbrains.com

38 Siemens www.siemens.com 77 BulletProof Corporation www.bulletproof.com

39 Motorola Polska Sp. z o.o. www.motorola.com 78 Data Representations, Inc. www.datarepresentations.com

40 SoftComplete www.softcomplete.com 79 The Benaroya Company www.sedit.com


Development 80 Epic Games www.epicgames.com/

78
Z katalogu firm Linux+ – Narzędzia deweloperskie:

Auto ID Polska Sp. z o.o.


– narzędzia programistyczne OCR/ICR
sażenia istniejących aplikacji w funkcje OCR, FineReader Engine 7.1 to zestaw biblio-
jak i do tworzenia od podstaw nowych syste- tek dll uzupełnionych dokumentacją technicz-
mów. Mogą to być systemy do wprowadzania ną oraz przykładowymi fragmentami kodu.
danych z papierowych dokumentów bezpo- Programowanie może odbywać się w środo-
FineReader to marka od wielu lat koja- średnio do baz, systemy obiegu dokumentów, wiskach wspierających obiekty COM, na przy-
rzona z rozpoznawaniem pisma. Obecnie elektroniczne archiwa dokumentów, systemy do kład C/C++, Visual Basic. Silnik nie posiada
jest to już cała rodzina produktów, wśród któ- edycji dokumentów otrzymywanych faksem. żadnego interfejsu użytkownika.
rych znajdują się także narzędzia deweloper- ABBYY FineReader Engine 7.1 zawiera Ważną cechą silnika jest elastyczne licen-
skie. Po sukcesach odniesionych na platfor- zestaw funkcji wykorzystywanych do elektro- cjonowanie. Możliwość niemal dowolnego kon-
mie Windows producent postanowił udostęp- nicznego przetwarzania dokumentów. Funk- figurowania licencji pozwala zmniejszyć koszty
nić swoją technologię programistom pracują- cje te obsługują każdy etap procesu – nie są ich zakupu – deweloper płaci tylko za funkcjo-
cym na platformie Linux. to wyłącznie algorytmy służące do „czyta- nalność, której potrzebuje jego klient.
ABBYY FineReader Engine 6.0 for Linux nia” pisma i kodów kreskowych. Rozpoznawa- ABBYY FineReader 7.0 Scripting Edition
jest narzędziem programistycznym umożli- ne jest pismo drukowane 177 językach, w tym jest pakietem przygotowanym z myślą o produ-
wiającym wzbogacenie aplikacji pracujących 34 z pełnym wsparciem słownikowym, a pismo centach oprogramowania, którzy chcą szybko
na platformie Linux o funkcje rozpoznawania ręczne blokowe jest rozpoznawane w 15 języ- i łatwo wyposażyć swoje aplikacje w funkcje
pisma drukowanego - OCR. Program korzysta kach. W pełni obsługiwany jest język polski. rozpoznawania pisma drukowanego. Przygo-
z osiągnięć i doświadczeń, jakie firma ABBYY Narzędzie posiada funkcje analizy formularzy towanie skryptów nie jest czasochłonne, więc
zdobyła doskonaląc przez lata program Fine- o stałym układzie graficznym oraz dokumen- wykorzystanie tego pakietu często jest najbar-
Reader dla środowiska Windows. Technologie tów o powtarzającej się treści i zmieniającym dziej ekonomicznym sposobem wzbogacenia
OCR zostały przeniesione na platformę Linux się układzie (np. faktury). autorskiej aplikacji o funkcje OCR. Korzystając
z uwzględnieniem specyfiki i unikalnych cha- Korzystając z silnika można sterować z interfejsu API można między innymi:
rakterystyk tego systemu. skanowaniem dokumentów z wykorzysta- ● automatyzować pracę programu dla
Pakiet programistyczny składa się z biblio- niem interfejsu TWAIN. Możliwe jest otwiera- powtarzających się zadań,
tek .lib wraz z dokumentacją techniczną oraz nie plików graficznych zawierających obrazy ● wywoływać funkcje FineReader 7.0
przykładowymi fragmentami kodu. Dostęp do dokumentów (m.in. TIFF, JPEG, PDF). Funkcje bezpośrednio z zewnętrznej aplikacji,
funkcji OCR możliwy jest przez interfejs API, wstępnej obróbki obrazów pozwalają na popra- ● dowolnie modyfikować interfejs
a większość funkcji jest dostępna także z wier- wienie jakości skanów tak, by osiągnąć naj- użytkownika,
sza poleceń. API pakietu programistyczne- wyższą skuteczność rozpoznawania znaków. ● łączyć zewnętrzne informacje
go jest identyczne dla środowisk Linux oraz Rozpoznawanie dokumentów może odbywać z konkretnymi obiektami w programie
Windows. Takie rozwiązanie znacznie ułatwia się w trybie automatycznej analizy zawartości ● uruchamiać program FineReader w tle.
pracę programistom tworzącym aplikacje na i układu strony. Programista ma również moż- W wersji 7.0 po raz pierwszy pojawiły się
obydwu platformach. liwość wskazania stref na dokumencie, które funkcje wspierające pracę w sieci. Dotyczy
ABBYY FineReader Engine 6.0 for Linux mają zostać rozpoznane oraz zdefiniowa- to automatycznego otwierania dokumentów
oferuje najnowsze technologie analizy obrazu nia sposobu, w jaki zostaną one rozpoznane z folderów sieciowych oraz z serwerów ftp.
dające wysoką skuteczność rozpoznawania (język, zestaw znaków, odrębny słownik). Silnik Najistotniejsza innowacja to obsługa licen-
pisma wraz z odtworzeniem kroju i rozmia- podaje nie tylko wyniki rozpoznania, ale także cji w sieci lokalnej. Możliwe jest korzystanie Katalog firm Linux+: www.lpmagazine.org/pl/katalog/
ru czcionki, pochylenia lub podkreślenia liter. wskazuje znaki rozpoznane z mniejszą pew- z tradycyjnych licencji przypisanych na stałe
Umożliwia również pełne odtworzenie układu nością, informuje o jakości rozpoznania każde- do stanowiska oraz z sieciowych licencji jed-
strony z uwzględnieniem kolumn, tabel (także go znaku, podaje położenie znaków na stronie noczesnych (concurrent license).
tych z pionowym tekstem), elementów graficz- – te informacje pozwalają na przeprowadze- Wszystkie narzędzia są udostępniane jako
nych otoczonych tekstem. Program rozpoznaje nie korekty znaków rozpoznanych niepewnie. bezpłatne wersje testowe zachowujące pełną
pismo drukowane w 177 językach, dla 34 języ- Wyniki rozpoznania mogą zostać zapisane do funkcjonalność przez 60 dni.
ków dostępne są słowniki wraz z wyszukiwa- plików w najpopularniejszych formatach (TXT,
niem morfologicznym. W pełni wspierany jest RTF, PDF, HTM, XLS, DBF, XML).
język polski (rozpoznawanie i słowniki). Roz- Jeżeli na dokumentach rozpoznawa-
poznawane są czcionki typograficzne, wydruki ne mają być wyłącznie kody kreskowe i pola
z drukarek igłowych (draft), teksty sporządzone wyboru to można wykorzystać uproszczoną
na maszynie do pisania, a także czcionki spe- wersję pakietu: ABBYY FineReader Engine Kontakt:
Auto ID Polska Sp. z o.o.
cjalne OCR-A, OCR-B i MICR. Rozpoznane 7.1 Barcode/OMR. Narzędzie to nie zawiera
ul. Romanowicza 2
dokumenty mogą zostać zapisane jako niesfor- funkcji rozpoznawania tekstu i dzięki temu ma 30-702 Kraków
matowany tekst lub z pełnym odtworzeniem znacznie atrakcyjniejszą cenę. Takie rozwiąza- tel. (12) 292 51 00
fax (12) 656 04 43
układu strony w plikach RTF oraz PDF. nie stosowane jest na przykład w elektronicz-
e-mail: ocr@autoid.pl
ABBYY FineReader Engine 6.0 for Linux nych archiwach do szybkiego indeksowania
http://www.autoid.pl
może zostać zastosowany zarówno do wypo- wprowadzanych dokumentów.

79

You might also like