Historia
Historia systemu operacyjnego, który znamy dziś pod nazwą Linux, rozpoczęła się w 1983 roku, kiedy to pracownik MIT-u (Massachusetts Institute of Technology) Richard Stallman ogłosił na łamach grup dyskusyjnych net.unix-wizards oraz net.usoft rozpoczęcie prac nad projektem GNU (od słów GNU's Not Unix), mającym na celu stworzenie darmowego i „wolnego” systemu operacyjnego kompatybilnego z Uniksem. Bodźcem była postępująca komercjalizacja oprogramowania w porównaniu z sytuacją z lat 60. i 70., kiedy większość aplikacji miała „otwarte” źródła, co umożliwiało ich dowolne analizowanie, modyfikowanie i publikowanie wprowadzonych zmian. W latach 80. większość tworzonego oprogramowania była już zamknięta i – najczęściej – płatna. Taki stan rzeczy nie spodobał się Stallmanowi: w 1985 roku opublikował on Manifest GNU, który stał się podwaliną definicji „wolnego oprogramowania”. W tym samym roku Stallman założył Free Software Foundation ('Fundację Wolnego Oprogramowania'), której celem jest ochrona i promocja wolności oprogramowania oraz finansowanie rozwoju projektu GNU.
Każdy system operacyjny potrzebuje oprogramowania, a w przypadku GNU jego większość trzeba było napisać od podstaw. Na początku znaczna część kodu wchodzącego w skład projektu była tworzona przez wolontariuszy w wolnym czasie. Wraz ze wzrostem popularności projektu coraz większa ich część otrzymywała dofinansowanie ze strony placówek naukowych, przedsiębiorstw czy organizacji non profit. W 1990 roku projekt GNU obejmował podstawowe biblioteki i narzędzia Uniksa, edytor tekstu (Emacs) oraz zestaw kompilatorów GCC (ang. GNU Compiler Collection). Problemem w tej sytuacji pozostawał brak fundamentu systemu operacyjnego, czyli jądra.
Początkowo miało zostać wykorzystane jądro TRIX, które choć udostępnione na wolnej licencji i zgodne z Uniksem w wersji siódmej, działało jedynie na procesorze MC68000, zaprojektowanym przez firmę Motorola (który został użyty jako jednostka centralna w takich komputerach, jak Apple Lisa, Commodore Amiga i Atari ST). Biorąc pod uwagę to, że GNU w założeniu miał być kompatybilny z wieloma architekturami (a więc przenośny), konieczne byłoby przepisanie dużej części jego kodu przed wcieleniem do systemu. Plan wykorzystania jądra 4.4 BSD Lite również spalił na panewce, a to z powodu braku współpracy ze strony jego twórców – pracowników uniwersytetu w Berkeley.
Osobnym rozdziałem w historii GNU jest próba zaadaptowania mikrojądra Mach, rozwijanego przez pracowników amerykańskiego uniwersytetu Carnegie Mellon. W 1988 roku zostało ono wybrane przez Richarda Stallmana jako część projektu GNU, a dwa lata później udostępnione przez jego twórców na zasadach wolnego oprogramowania, co umożliwiło jego adaptację. Jako mikrojądro, Mach wymaga dodatkowego oprogramowania działającego w przestrzeni użytkownika, realizującego takie usługi, jak system plików oraz obsługa powłoki i urządzeń. Te funkcje zapewnia Hurd, stworzony w 1990 roku przez Thomasa Bushnella, będący po dziś dzień standardowym jądrem systemu GNU. Jego rozwój trudno nazwać dynamicznym: choć liczy niemal 20 lat, wciąż ma wiele błędów i braków; nawet ukończenie prac nad nim nie rozwiązałoby jednego z największych problemów systemu operacyjnego, czyli obsługi urządzeń.
Z pomocą przyszedł fiński programista Linus Torvalds, który w 1991 roku poinformował użytkowników grupy dyskusyjnej comp.os.minix o rozpoczęciu prac nad darmowym systemem operacyjnym do komputerów wyposażonych w procesor Intel 386 lub 486. W swoim wpisie zaznaczył, że jego tworzenie to tylko hobby i że nie będzie to nic dużego i profesjonalnego, jak GNU. Linus, prosząc o sugestie i uwagi na temat swojego tworu, zaznaczył, że napisany przez niego kod nie jest przenośny (korzysta z funkcji specyficznych dla procesora 386) i prawdopodobnie nigdy nie będzie obsługiwał dysków w standardzie innym niż AT.
Nieco ponad rok później, w grudniu, Torvalds opublikował kod źródłowy jądra Linux na wolnej licencji GNU GPL, co określił później jako „najlepszą rzecz, jaką kiedykolwiek zrobił”. Dzięki temu posunięciu każdy mógł mieć wkład w jego rozwój. Rok później już ponad stu programistów aktywnie brało udział w pracach nad jądrem; z ich pomocą zostało ono zaadaptowane do projektu GNU, co znacznie przyspieszyło rozwój systemu. Jeszcze w tym samym roku powstają dwie najstarsze z obecnie rozwijanych dystrybucji: stworzony przez Patricka Volkera Slackware oraz Debian GNU/Linux autorstwa Iana Murdocka.
W marcu 1994 roku, pozytywnie oceniona przez Torvaldsa, światło dzienne ujrzała wersja 1.0 jądra. W tym samym roku, dzięki rozwojowi projektu XFree86 (implementacja X Window System), system GNU/Linux otrzymuje swój pierwszy graficzny interfejs użytkownika (GUI).
Następne lata to okres dynamicznego rozwoju jądra i narzędzi wchodzących w skład projektu GNU oraz postępująca ekspansja oprogramowania na wolnych licencjach, o otwartym kodzie. Powstają pierwsze kompletne środowiska graficzne: KDE i GNOME. Linux zostaje zaadaptowany do dziesiątków różnych zastosowań, od systemów wbudowanych poprzez tysiące serwerów aż po najwydajniejsze superkomputery.
Licencje w świecie wolnego oprogramowania
Stworzona przez Richarda Stallmana licencja GNU GPL jest jedną z najbardziej znanych licencji Open Source, ale nie jedyną. Obecnie w świecie wolnego oprogramowania istnieje wiele – dość znacznie różniących się między sobą – licencji.
GNU GPL (ang. General Public License) jest obecnie najpowszechniej stosowaną licencją wolnego oprogramowania. Oryginał został opublikowany przez Richarda Stallmana w 1989 roku jako część projektu GNU. Generalnie celem jej wykorzystania jest przekazanie użytkownikom czterech podstawowych wolności:
- uruchamiania programu w dowolnym celu (wolność 0),
- analizowania, jak program działa, i dostosowywania go do swoich potrzeb (wolność 1),
- rozpowszechniania niezmodyfikowanej kopii programu (wolność 2),
- udoskonalania programu i rozpowszechniania własnych ulepszeń, dzięki czemu może z nich skorzystać cała społeczność (wolność 3).
Oprogramowanie, które spełnia wszystkie powyższe warunki, zdaniem Free Software Foundation (FSF) może zostać uznane za wolne. Wbrew temu, co można by pomyśleć, programy redystrybuowane bez pobierania jakichkolwiek opłat, jako tak zwane „freeware”, nie mogą zostać zakwalifikowane jako wolne oprogramowanie.
GNU GPL jest uznawany ze licencję „wirusową” – według zawartych w niej zapisów wszystkie prace wykorzystujące licencjonowany w ten sposób kod również muszą być objęte jej zasadami. Istotnym zapisem jest niedopuszczanie zarówno statycznego, jak i dynamicznego „linkowania” z bibliotekami na licencji GPL z poziomu aplikacji opartej na licencji własnościowej. Nie oznacza to jednak, że twórca oprogramowania, stosując licencję GPL, zrzeka się prawa do pobierania opłat za napisany przez siebie kod. Jego „wirusowość” umożliwia jego podwójne licencjonowanie: twórcy oprogramowania, chcąc nieodpłatnie wykorzystać kod źródłowy, mogą użyć jego wersji na licencji GPL (co automatycznie sprawia, że również ich produkt będzie na niej oparty), a ci, którzy chcą tworzyć oprogramowanie komercyjne, muszą ponieść koszt umowy licencyjnej. Z tej metody korzysta między innymi firma Nokia w dystrybucji bibliotek Qt.
Każdy twórca oprogramowania, licencjonując je na GNU GPL, zgadza się udostępniać jego kompletny kod źródłowy każdemu, za cenę nie większą niż faktyczny koszt dystrybucji – czyli przykładowo koszt nośnika i wysłania go pocztą.
GNU LGPL (ang. Lesser General Public License) to licencja wolnego oprogramowania zaakceptowana przez FSF, jako będąca kompromisem pomiędzy restrykcyjnym GNU GPL a bardziej liberalnymi licencjami, takimi jak BSD i X11. W ogólnym brzmieniu jest bardzo podobna do GPL, od którego odróżnia ją między innymi zezwolenie łączenia z aplikacjami nieobjętymi licencją z rodziny GPL, bez względu na to, czy są one oprogramowaniem wolnym czy własnościowym. Ponadto pod warunkiem wykorzystania odpowiednich mechanizmów bibliotek współdzielonych oraz zastosowania pewnych dodatkowych zastrzeżeń możliwe jest nałożenie ograniczeń typu copyleft (licencja zezwalająca na modyfikowanie i dowolną redystrybucję pracy) na poszczególne pliki źródłowe, a nie na cały program, jak w przypadku GPL.
Licencje BSD (ang. Berkeley Software Distribution) skupiają się bardziej na prawach użytkownika niż licencja GNU. Są dużo mniej restrykcyjne niż GPL: pozwalają w pełni modyfikować źródła i dystrybuować oprogramowanie jako pakiety binarne bez konieczności publikowania jego kodu pod warunkiem zachowania informacji o prawach autorskich w dokumentacji i źródłach. Co więcej, licencja BSD zezwala na włączanie objętego nią kodu do produktów na innych licencjach, tak otwartych, jak i zamkniętych. BSD ma kilka różniących się liczbą klauzul wersji:
- dwuklauzulową licencję BSD („Uproszczona” bądź „Licencja FreeBSD”), czyli najprostszą wersję, zezwalającą na dowolny użytek i redystrybucję kodu źródłowego i postaci binarnej po zawarciu w nich treści licencji;
- trzyklauzulową licencję BSD („Nowa” bądź „Zmodyfikowana”), która poza powyższymi zapisami zawiera klauzulę zabraniającą wykorzystywania nazwy organizacji posiadającej prawa autorskie oraz nazwisk twórców oprogramowania do promocji produktów wykorzystujących licencjonowany na niej kod źródłowy bez uzyskania wcześniej pisemnej zgody;
- czteroklauzulową licencję BSD („Oryginalna”), która ma tak zwaną klauzulę reklamową, nakazującą umieszczenie zdania „Ten produkt zawiera oprogramowanie stworzone przez” wraz z nazwą organizacji, a poza tym ma identyczne zapisy jak wersja trzyklauzulowa.
Bez względu na wersję wszystkie warianty licencji BSD zawierają również informację o braku gwarancji ze strony twórców co do sposobu działania oprogramowania oraz niebraniu przez nich odpowiedzialności za ewentualne szkody wynikające z jego użycia.
X11 (MIT) jest jedną z najprostszych i najbardziej liberalnych licencji. Daje użytkownikom pełne prawo do używania i powielania oprogramowania, dokonywania w nim zmian i rozpowszechniania oryginalnego bądź zmodyfikowanego programu w postaci binarnej lub kodu źródłowego. Jedynym wymogiem pozostaje konieczność umieszczenia we wszystkich wersjach warunków umowy licencyjnej oraz informacji o autorze. W praktyce zapisy umowy X11 są niemal identyczne jak w przypadku dwuklauzulowej wersji licencji BSD.
Jądro
Teraz skupmy się na tym, co w Linuksach najważniejsze, czyli na jądrze. Jest ono podstawowym elementem systemu operacyjnego: umożliwia komunikację pomiędzy sprzętem a oprogramowaniem, zarządza zasobami, procesami oraz wszystkimi urządzeniami podłączonymi do komputera. Jako jedyny element systemu operacyjnego mający pełny dostęp do pamięci, jądro musi zapewniać procesom bezpieczny dostęp do niej, gdy jej potrzebują. Będąc centralnym miejscem systemu operacyjnego, jest wyjątkowo trudnym wyzwaniem z punktu widzenia programisty – jego wydajność jest cechą kluczową i rzutuje na wydajność wszystkich aplikacji uruchamianych pod kontrolą systemu.
Podobnie jak w przypadku najpopularniejszego obecnie systemu do komputerów domowych, czyli Microsoft Windows, ma ono budowę monolityczną. Oznacza to, że większość funkcji jądra jest przechowywana w pojedynczym obrazie pamięci, który ładowany jest przy uruchamianiu systemu przez tak zwanego boot loadera (GRUB lub lilo w systemach linuksowych oraz NTLDR w Windowsach). Jądro Linux jest wyjątkowo przenośne i spokojnie można powiedzieć, że „ruszy” praktycznie na wszystkim. x86, AMD64, ARM? Żaden problem. PowerPC, SPARC, IA-64, MIPS? Proszę bardzo. Dzięki swojej wyjątkowej wszechstronności systemy oparte na jądrze Linux mogą być stosowane praktycznie we wszystkim, od zdalnie sterowanych modeli poprzez telefony komórkowe, tablety i czytniki e-booków po superkomputery.
Funkcjonalność jądra Linux można zwiększać za pośrednictwem modułów, których dużym atutem jest możliwość ładowania i wyładowywania w razie potrzeby bez konieczności przeładowywania jądra (co w praktyce oznaczałoby ponowne uruchomienie systemu operacyjnego). W modułach najczęściej znajdują się sterowniki urządzeń peryferyjnych, systemów plików lub niektórych wywołań systemowych. Ponieważ Linux nie ma stabilnego API (ang. Application Programming Interface) ani ABI (ang. Application Binary Interface) dla modułów jądra, różnice w działaniu pewnych funkcji w zależności od wersji jądra mogą powodować niekompatybilność modułu i jądra. Najczęściej nie ma możliwości dostarczenia jednej wersji modułu w postaci binarnej (przykładowo – sterownika), która działałaby na każdej wersji jądra systemu, czy nawet w danej gałęzi. Najczęściej więc poszczególne moduły są kompilowane na komputerze użytkownika, czy to ręcznie, czy przez wyspecjalizowane instalatory, by uniknąć potencjalnych problemów i zachować pełną kompatybilność modułu z jądrem.
Pingwin w sześciu smakach
Nie samym jądrem system żyje. Bez opakowania w postaci aplikacji liczba użytkowników, którzy skorzystaliby na istnieniu Linuksa, byłaby bardzo ograniczona. Różne zestawy oprogramowania rozprowadzane wraz z jądrem Linux są określane jako dystrybucje. W ich skład poza obowiązkowym jądrem, wspólnymi podstawowymi bibliotekami i narzędziami GNU wchodzą – w zależności od przeznaczenia – menedżery pakietów, środowiska graficzne, edytory tekstu, odtwarzacze multimedialne oraz wiele innych. Obecnie istnieje ponad 600 różnych dystrybucji stworzonych z myślą o różnych odbiorcach. Większość z nich to systemy ogólnego przeznaczenia dla użytkowników domowych, takie jak Ubuntu i openSUSE. Część została stworzona specjalnie na serwery, na przykład CentOS, Debian, Slackware. Ponadto istnieją dystrybucje wysoce wyspecjalizowane, jak Movix (służąca do odtwarzania filmów), DD-WRT (firmware do routerów bezprzewodowych), Coyote Linux (zarządzanie ruchem w sieci), NASLite (dla serwerów NAS). Poszczególne dystrybucje poza różnym doborem ogólnodostępnego oprogramowania mogą zawierać aplikacje stworzone specjalnie pod kątem danej dystrybucji, takie jak: instalatory, narzędzia konfigurujące, graficzne nakładki pozwalające uniknąć nauki poleceń powłoki. Różnice polegają ponadto na różnej konfiguracji jądra – część dystrybucji pozbawiona jest przykładowo funkcji ładowania modułów jądra, co czyni je bardziej zwartym. By zrozumieć różnice, przyjrzyjcie się paru przykładowym dystrybucjom:
Ubuntu to najpopularniejszy obecnie Linux dla komputerów biurkowych. Wedle statystyk ponad 50% linuksów zainstalowanych na desktopach to właśnie Ubuntu. Nazwa pochodzi z południowoafrykańskiego języka Bantu i oznacza w wolnym tłumaczeniu „człowieczeństwo względem innych”, choć złośliwi tłumaczą ją również jako „Nie umiem skonfigurować Debiana” ;-) Twórcy tej opartej na Debianie dystrybucji skupili się na maksymalnym uproszczeniu obsługi i ułatwieniu przejścia na Linuksa użytkownikom przyzwyczajonym do graficznych kreatorów i konfiguratorów, tak powszechnych w środowisku Microsoft Windows. W standardowej instalacji można znaleźć całe mnóstwo narzędzi ułatwiających takie czynności, jak instalacja oprogramowania i sterowników, a nawet łączenie się z siecią. Ubuntu to nie tylko przyjemność i prostota obsługi, to także świetne wsparcie ze strony użytkowników w grupach dyskusyjnych czy na forach internetowych. Dzięki tym cechom Ubuntu jest jedną z najczęściej polecanych dystrybucji dla początkujących. Decydując się na instalację Ubuntu, trzeba wybrać jeden z jego wariantów, które różnią się głównie standardowym środowiskiem graficznym (o tym piszemy w dalszej części artykułu). Najpopularniejszymi są:
- Ubuntu (GNOME Desktop Environment),
- Kubuntu (KDE),
- Xubuntu (Xfce),
- Ebuntu (Enlightenment E17).
Ponadto dostępne są między innymi:
- Ubuntu Mobile – wbudowany system operacyjny do urządzeń mobilnych, w którym środowiskiem graficznym jest Hildon, znany z systemu Meamo;
- Mythbuntu – specjalna wersja Xubuntu stworzona z myślą o komputerach HTPC (ang. Home Theater PC),
- Ubuntu Studio – do profesjonalnej edycji materiałów audio/wideo.
Rozwojem systemu zajmuje się brytyjska firma Canonical Ltd, znajdująca się w rękach południowoafrykańskiego przedsiębiorcy Marka Shuttlewortha. Spółka zarabia głównie dzięki płatnej pomocy technicznej oraz sprzedaży usług powiązanych z systemem Ubuntu.
Gentoo w porównaniu z większością rywali jest zjawiskiem bardzo nietypowym. W przeciwieństwie do przeważającej liczby dystrybucji, w których domyślnym sposobem instalacji oprogramowania jest pobranie gotowej, skompilowanej paczki z repozytorium, tu praktycznie każda aplikacja czy biblioteka jest kompilowana na komputerze użytkownika, gdzie trafia w postaci kodu źródłowego. Rozwiązanie to nosi nazwę Portage, co budzi skojarzenia z Ports, znanym z systemów z rodziny BSD. Takie podejście niesie ze sobą sporo korzyści: można dowolnie modyfikować wszystkie parametry, takie jak: flagi kompilatora (CFLAGS) oraz wybór optymalizacji czy rozszerzeń instrukcji procesora (MMX, SSE). W przypadku oprogramowania dostarczanego w postaci binarnej wiele z wymienionych optymalizacji jest wyłączonych w celu zapewnienia lepszej kompatybilności. Ponadto dzięki modyfikacji flag USE użytkownik ma pełną kontrolę nad tym, jakie komponenty zostaną zainstalowane wraz z daną aplikacją. Nie potrzebujesz obsługi protokołu IPv6 w swojej przeglądarce? Żaden problem. Nie bez znaczenia jest również jakość i obszerność udostępnionej dokumentacji, również w języku polskim.
Oczywistym minusem takiego podejścia jest to, że kompilacja co bardziej rozbudowanych aplikacji może zajmować na wolniejszych komputerach nawet parę godzin. Twórcy Gentoo poszli jednak na rękę mniej cierpliwym użytkownikom i bardzo czasochłonne pod względem czasu kompilowania programy oraz ich pakiety, takie jak OpenOffice.org i Mozilla Firefox, mogą być pobierane w postaci binarnej.
Nazwa Gentoo pochodzi od pingwina białobrewego (ang. Gentoo Penguin).
Debian GNU/Linux to jedna z najstarszych rozwijanych obecnie dystrybucji Linuksa. Jest znany z dużej stabilności, przez co często znajduje zastosowanie w serwerach sieciowych. Dbałość o jak największe bezpieczeństwo sprawiło, że w Debianie standardowo nie znajdziecie Mozilli Firefox, a jego zmodyfikowany „fork” – Iceweasel (Mozilla nie zgadza się na stosowanie nazwy Firefox w przypadku kompilacji opartych na zmienionym kodzie). Debian znany jest również z wyjątkowego bogactwa dostępnych opcji i oprogramowania; jego ostatnie „stabilne” wydanie to ponad 29 tysięcy pakietów dla dziewięciu architektur (i386, amd64, armel, sparc, powerpc, ia64, mips, mipsel oraz s390). Dodatkowo dostępne są wydania nieoparte na jądrze Linux, a przykładowo FreeBSD, NetBSD i Hurd.
Fedora to następca popularnego niegdyś systemu Red Hat Linux, rozwijany głównie przez fundację Fedora i finansowany przez notowaną na nowojorskiej giełdzie spółkę Red Hat. Twórcy dystrybucji stawiają głównie na innowacyjność: kolejne wydania publikowane są co około pół roku i zwykle zawierają najnowsze dostępne wersje oprogramowania, nawet jeśli nie zostało ono wydane w wersji stabilnej. W przeciwieństwie do twórców Debiana, którzy wprowadzają poprawki do oprogramowania w obrębie własnej dystrybucji, programiści Fedory starają się ulepszać aplikacje w taki sposób, by mogli na tym skorzystać wszyscy użytkownicy Linuksa, bez względu na wybraną dystrybucję.
Fedora wykorzystuje stworzony na potrzeby Red Hat Linux format pakietów RPM (początkowo z ang. RedHat Package Manager, obecnie RPM Package Manager). Do zarządzania oprogramowaniem służy polecenie yum (ang. Yellowdog Updater, Modified) lub jedna z nakładek graficznych: pup, pirut bądź puplet.
Według danych dostępnych na stronie serwisu Distrowatch jest to obecnie trzecia pod względem popularności dystrybucja Linuksa. Nazwa Fedora pochodzi od rodzaju kapelusza z rondem o tej samej nazwie.
openSUSE to finansowana głównie przez firmę Novell dystrybucja Linuksa ogólnego przeznaczenia, w której nacisk położono na prostotę obsługi, stworzona z myślą głównie o użytkownikach domowych. W przeciwieństwie do płatnego SUSE Linux Enterprise Desktop (120 dolarów za roczną licencję na jedno stanowisko) openSUSE jest całkowicie darmowy.
Twórcy openSUSE mieli duży wpływ na dzisiejszy wygląd biurkowych Linuksów. W styczniu 2006 roku David Reveman, jeden z twórców SUSE, zaprezentował Xgl – modyfikację X Serwera, pozwalającą na użycie sprzętowej akceleracji 3D aplikacjom korzystającym z X11. Powstanie Xgl umożliwiło rozwój słynnych menedżerów okien Beryl i Compiz, które jako pierwsze pozwalały na zastosowanie trójwymiarowych efektów pulpitu.
Podobnie jak Fedora openSUSE wykorzystuje pakiety oprogramowania w formacie RPM, a zarządzanie oprogramowaniem odbywa się za pośrednictwem menedżera YaST, używającego systemu ZYpp (z poziomu powłoki można stosować polecenie zypper).
Arch Linux, ostatnia z prezentowanych dystrybucji, to maksymalna prostota, „bez niepotrzebnych dodatków, modyfikacji i komplikacji” – jak określają to jej twórcy.
Zdecydowana większość oprogramowania dostarczana jest w postaci pakietów binarnych, chociaż instalacja ze źródeł została znacznie ułatwiona i częściowo zautomatyzowana dzięki ABS (ang. Arch Building System), spełniającemu podobną funkcję jak Portage w Gentoo Linux. Oficjalne repozytorium Arch Linuksa jest doskonale uzupełniane zarządzanym przez społeczność użytkowników AUR (ang. Arch User Repository).
W przeciwieństwie do większości dystrybucji Arch Linux nie ma ustalonego planu wydawania nowych wersji systemu. Zastosowano tak zwany model Rolling Release, w którym nowe wersje programów publikowane są każdego dnia, dzięki czemu użytkownicy mogą być na bieżąco pod względem aktualności oprogramowania i bibliotek. Dlatego z perspektywy użytkownika nie ma żadnego znaczenia, które wydanie wybierze, jeżeli po instalacji pobierze wszystkie uaktualnienia.
Osobną kwestią w przypadku Linuksa jest duży wybór dystrybucji uruchamianych bezpośrednio z nośników CD, DVD bądź flash, bez konieczności instalacji, nazywanych, odpowiednio, LiveCD, LiveDVD i LiveUSB. Niektóre z nich, jak Slax i Ubuntu LiveCD, są po prostu niewielkim, w pełni funkcjonalnym systemem operacyjnym. Inne ograniczają się do podstawowych funkcji, stawiając na minimalizację, czego przykładem jest zajmujący 50 MB Damn Small Linux. Niektóre z nich mają bardzo precyzyjnie określone zastosowanie, choćby System Rescue CD, nastawiony na zarządzanie partycjami dysku twardego i stawianie na nogi systemu plików w przypadku awarii.
System plików
Korzystanie z systemów z rodziny Linux niechybnie wiąże się z poznaniem nowych systemów plików. NTFS i FAT, znane z Windowsów, a nawet MS-DOS, chociaż są obsługiwane przez jądro, nie mogą być wykorzystywane na partycji systemowej z Linuksem. Każdy OS ma specyficzne dla siebie systemy plików. W przypadku produktów Microsoftu są to: FAT16, FAT32, NTFS; FreeBSD – FFS i UFS; Haiku OS – BFS; Mac OS X – HFS+. W nowoczesnych systemach linuksowych jest to najczęściej ReiserFS, ext3 lub ext4, któremu przyjrzymy się bliżej.
Generalnie system plików jest wykorzystywany przez system operacyjny do organizowania, zapisywania i odczytywania plików z danego urządzenia. Dobry system plików powinien być optymalny pod względem wykorzystania dostępnej powierzchni i szybkości dostępu do danych, a w razie ewentualnej awarii powinien zapewnić mechanizmy pozwalające zminimalizować uszkodzenia danych. Dzięki różnym systemom użytkownik nie musi przejmować się umiejscowieniem plików na powierzchni nośnika, bo zapewniają one pewną logiczną strukturę, którą najczęściej jest znane wszystkim drzewo katalogów. Dzięki niemu nikt nie musi zapamiętywać, jaki adres bloku czy sektora ma jego ulubiony film przyrodniczy.
Wyraźną różnicą w stosunku do systemów z rodziny Microsoft Windows jest charakterystyczna struktura katalogów. Zamiast oddzielnych liter dla każdej partycji czy każdego urządzenia w Linuksie mamy do czynienia ze strukturą pojedynczego drzewa, którego korzeń (ang. root) jest oznaczony znakiem /. W tym miejscu instalowany jest system operacyjny, wszystkie inne katalogi są podrzędne względem korzenia. Pozostałe partycje i urządzenia można „zamontować” (podobnie jak w nowszych wydaniach systemu Windows) praktycznie w dowolnym miejscu struktury katalogów, jednak zwyczajowo punkty montowania umieszcza się w katalogu /mnt bądź /media.
Charakterystyczną cechą wszystkich systemów uniksowych (a więc w szczególności tych wyposażonych w jądro Linux) są prawa dostępu. Każdy obiekt znajdujący się w strukturze katalogów ma właściciela, przynależną grupę oraz nadane uprawnienia, reprezentowane najczęściej przez trzy cyfry z zakresu 0 do 7. Wartości te oznaczają prawa dostępu dla właściciela pliku, przypisanej mu grupy oraz pozostałych użytkowników. Każda cyfra to suma nadanych obiektowi praw dostępu. I tak prawo odczytu ma wartość 4, zapisu – 2, wykonania – 1. Jeżeli więc dany plik ma uprawnienia reprezentowane przez ciąg 750, oznacza to:
- pełne prawa dostępu dla właściciela obiektu: odczyt, zapis, wykonanie (4 + 2 + 1 = 7),
- dla przypisanej grupy prawa do odczytu i wykonania (4 + 1 = 5),
- dla pozostałych użytkowników – brak uprawnień dostępu.
W przeciwieństwie do systemów Windows o tym, czy dany plik jest wykonywalny, nie decyduje jego rozszerzenie, a nadany mu atrybut. W przypadku katalogu bit wykonywalności oznacza możliwość wejścia do niego i przeglądania jego zawartości.
Ważną cechą wszystkich linuksowych systemów plików są i-węzły (ang. inodes). Są to specjalne struktury danych, w których przechowywane są informacje o prawach dostępu danego pliku, identyfikator jego właściciela i przynależnej grupy, typ (zwykły plik, dowiązanie symboliczne, urządzenie itp.) oraz wiele innych. Każdy znajdujący się na dysku plik i katalog ma swój własny, unikatowy numer identyfikacyjny (można go uzyskać, korzystając z polecenia ls -i). Wszystkie i-węzły są przechowywane w wydzielonym obszarze partycji o stałym rozmiarze, wynoszącym z reguły 1% powierzchni.
Przyjrzymy się teraz ext4 – ulepszonej wersji powszechnie stosowanego ext3. Czwarta wersja tego systemu została zaprojektowana tak, by być wstecznie kompatybilną z poprzednikiem, dzięki czemu partycje sformatowane w ext4 można montować w systemie z jądrem z obsługą ext3 kosztem utraty części funkcjonalności (na przykład „ekstentów”). W stosunku do ext3 wydłużone zostały (z 32 do 48 bitów) adresy bloków, co zwiększa teoretyczny limit rozmiaru pojedynczej partycji z 16 terabajtów (232 * 4 kB) do 1 eksabajta (248 * 4 kB) przy blokach o rozmiarze 4 kB.
W tradycyjnym systemie plików dane – w postaci ciągów zer i jedynek – są organizowane na powierzchni dysku twardego w bloki o stałym rozmiarze, na przykład 4 kB, z których każdy ma własny adres. Każdy znajdujący się na nośniku plik ma przyporządkowaną listę bloków, które zajmuje, wraz z ich adresami. Ta metoda (zwana mechanizmem bezpośredniego adresowania bloków) dość dobrze sprawdza się w przypadku przechowywania dużej liczby niewielkich plików, jednak przy większych rozmiarach pojedynczych zbiorów okazuje się nieoptymalna, bo pojedynczy zbiór wymaga przechowywania długiej listy odpowiadających mu bloków. W ext4 ta metoda została zastąpiona przez tak zwane ekstenty, czyli obszary bloków danych. Pojedynczy ekstent może w przypadku ext4 mapować do 128 MB ciągłej przestrzeni w pojedynczym 4-kilobajtowym bloku, dzięki czemu znacznie poprawia się prędkość odczytu dużych plików oraz zmniejsza fragmentacja danych. Informacje o ekstentach są przechowywane w strukturze i-węzłów, z których każdy może zawierać do 4 ekstentów. Gdy plik jest reprezentowany przy użyciu większej ich liczby, używa się H-Drzew.
Nowoczesne systemy plików (takie, jak: ext3, ext4, ReiserFS, HFS+) również zostały wyposażone w mechanizm znacznie poprawiający spójność danych w razie awarii, zwany księgowaniem (ang. journaling). Zmiany w systemie plików, takie jak ich tworzenie, kopiowanie i usuwanie, z reguły wymagają kilku oddzielnych operacji wykonywanych „transparentnie” dla użytkownika. Przykładowo usunięcie pliku wymaga dwóch kroków:
- usunięcia wpisu ze struktury plików,
- oznaczenia odpowiadającego mu i-węzła i zajmowanej przez niego przestrzeni na mapie wolnych bloków jako pustych.
Jeżeli pomiędzy pierwszym a drugim krokiem wystąpi awaria (przerwa w dostawie zasilania czy błąd krytyczny), usunięty ze struktury plików obiekt wciąż będzie miał swój i-węzeł.
W przypadku systemu plików bez księgowania wykrywanie tego typu niespójności wymaga sprawdzenia kolejno wszystkich wpisów tablicy alokacji plików i porównania z odpowiadającymi im i-węzłami. Przy dużym rozmiarze partycji lub/i względnie małej prędkości odczytu może to zająć dużo czasu.
W systemie plików z księgowaniem pewna przestrzeń partycji jest przeznaczona na tak zwany dziennik, w którym zapisywane są wszystkie zmiany w strukturze plików, zanim zostaną faktycznie wykonane. Dzięki temu w razie pojawienia się niespójności naprawa polega na prześledzeniu kolejnych wpisów w dzienniku i wykonaniu krok po kroku zapisanych czynności. Z tego powodu poszczególne wpisy muszą mieć charakter niepodzielny.
Często powtarzane jest zdanie o tym, że linuksowe systemy plików – w szczególności ext3 – w ogóle nie podlegają fragmentacji. To nieprawda, bo chociaż został on zaprojektowany tak, by minimalizować to zjawisko, są sytuacje, w których nie da się jej uniknąć, jak choćby powolny zapis dużych plików bez uprzedniej alokacji całej potrzebnej przestrzeni (w tego typu operacjach lubuje się Vuze, klient sieci BitTorrent, znany niegdyś jako Azureus). Co ciekawe, od pojawienia się specyfikacji systemu ext3 w 2001 roku nie powstało narzędzie do defragmentacji tego typu partycji. Jednym ze sposobów jej przeprowadzenia jest konwersja na leciwy ext2 i skorzystanie z narzędzia e2defrag, które wymaga zamontowania partycji w trybie tylko do odczytu (defragmentacja offline), co w szczególnych przypadkach może wiązać się z utratą danych. Z drugiej strony konstrukcja systemu ext4 poza jeszcze lepszymi mechanizmami unikania fragmentacji (ekstenty, opóźniona alokacja) pozwala na jego defragmentację w trybie online, bez konieczności jego odmontowywania. Podsumowując, fragmentacja w przypadku linuksowych systemów plików występuje, ale w porównaniu z FAT i NTFS jest to zjawisko na tyle marginalne, że przy normalnym wykorzystaniu partycji nie ma powodu, by zaprzątać sobie nim głowę.
Powłoka
Ważnym elementem wszystkich systemów z rodziny Linux jest powłoka systemowa (ang. shell). Na początku historii komputerów, w latach 60., korzystanie z powłoki było jedną z najczęściej stosowanych metod (a często jedyną) interakcji z nimi. Choć w dobie graficznego interfejsu użytkownika powłoka jest już nieco zapomniana, wciąż wielu użytkowników nie wyobraża sobie pracy bez niej. Prędzej czy później każdy użytkownik Linuksa powinien się z nią zapoznać.
Powłoka jest podstawowym interfejsem, pełniącym rolę pośrednika pomiędzy systemem operacyjnym a użytkownikiem, przyjmującym jego polecenia i zwracającym ewentualny wynik ich wykonania. Korzystanie z powłoki w praktyce jest bardzo wydajne, choć wymaga znajomości pewnych poleceń i parametrów. Przykładem niech będzie wykonanie zrzutu ekranu: zamiast czekać na załadowanie odpowiedniej aplikacji i ustawiać wybrane parametry za pośrednictwem graficznego interfejsu, wystarczy wydać polecenie import -w root /ścieżka/plik.png. Prawda, że proste?
Na przestrzeni lat powstało całe mnóstwo różnych powłok do systemów uniksowych, między innymi zsh, csh, sh i najbardziej znana bash. Mają element wspólny, czyli kompatybilność ze standardem POSIX, poza tym potrafią się różnić między sobą dość znacznie, na przykład Scsh jako jedyny obsługuje arytmetykę zmiennoprzecinkową i notację naukową, ash zaś nie ma obsługi wyrażeń regularnych. Chociaż wybór jest naprawdę duży, to początkujący użytkownik powinien pozostać przy standardowej powłoce dystrybucji, którą z dużym prawdopodobieństwem będzie właśnie bash.
Korzystając z powłoki, warto pamiętać o dwóch rzeczach. Po pierwsze, zwykle pod klawiszem Tab znajduje się funkcja autouzupełniania nazw poleceń, plików czy ścieżek, znacznie usprawniająca poruszanie się po systemie. Nie mniej istotne jest polecenie man, dzięki któremu można wyświetlić pełną instrukcję obsługi dla wybranej aplikacji czy polecenia systemowego. W razie wątpliwości co do użycia jakiegokolwiek polecenia rzut oka na instrukcję powinien je rozwiać.
Zwykle użytkownik Linuksa ma dostęp do sześciu samodzielnych kopii powłoki, pomiędzy którymi może się przełączać, korzystając z kombinacji klawiszy Ctrl + Alt + F1–F6, przy czym kolejne numery odpowiadają uruchomionym środowiskom graficznym. Jednak w dobie rozbudowanych interfejsów użytkownika rzadkością jest korzystanie bezpośrednio z powłoki. Zwykle używa się do tego nakładki dostarczanej wraz ze środowiskiem graficznym (np. konsoli w przypadku KDE), która umożliwia zmianę wyglądu konsoli czy otwieranie dowolnie wielu kopii powłoki.
Jedną z największych zalet znajomości poleceń powłoki jest niewątpliwie możliwość skorzystania z serwera SSH (pakiet openSSH znajduje się w repozytorium każdej dystrybucji), dzięki któremu – jeśli ma się publiczny adres IP – można uzyskać dostęp do systemu praktycznie z każdego miejsca, w którym jest internet. Co więcej, dzięki aplikacjom obsługującym protokół SCP (takim, jak WinSCP i Total Commander z odpowiednią wtyczką w systemach Microsoft Windows oraz Midnight Commander w Linuksach) możliwe jest nie tylko zdalne podłączenie się do powłoki, ale również korzystanie z wszystkich plików dostępnych z poziomu systemu operacyjnego.
X marks the desktop
Czasy, gdy interakcja użytkownika z systemem Linux możliwa była jedynie za pośrednictwem konsoli tekstowej bądź pseudograficznego interfejsu, dawno przeminęły. Obecnie wybór środowisk graficznych i menedżerów okien może przyprawić o zawrót głowy niejednego miłośnika dłubania w systemowych trzewiach i dostosowywania systemu do własnych potrzeb. A w „biurkowym” Linuksie graficzny interfejs użytkownika praktycznie nie istnieje bez X-ów.
X Window System (X11 lub po prostu X) to nazwa oprogramowania i protokołu tworzącego podstawę graficznego interfejsu użytkownika w systemach uniksowych. Jest na nim oparta znakomita większość dzisiejszych środowisk graficznych. X tworzy warstwę abstrakcji sprzętowej i ułatwia programom komunikację z urządzeniami, pośrednicząc w niej i ujednolicając obsługę sprzętu. Ponadto zarządza tworzeniem okien, obsługą urządzeń wejścia oraz wyświetlaniem obrazu na ekranie monitora. Istotną cechą X Window jest architektura klient-serwer, dzięki której wielu użytkowników może korzystać z samodzielnego środowiska graficznego uruchomionego na pojedynczej maszynie, również za pośrednictwem sieci. Przynajmniej w teorii. W praktyce przesyłanie 24-bitowego obrazu o rozdzielczości 640×480 z prędkością 30 kl./s wymaga przepustowości na poziomie około 221 Mb/s (24 * 640 * 480 * 30 = 221 184 000 b/s). Dzisiejsze komputery do przesyłu obrazu o rozdzielczości Full HD wymagałyby już przepustowości rzędu 1,49 Gb/s do każdego z podłączonych klientów.
X nie odpowiada za tworzenie interfejsu użytkownika – to zadanie samodzielnych pakietów oprogramowania, znanych jako menedżery okien, których część dostępna jest w postaci samodzielnej paczki (Fluxbox, awesome), a część – razem z kompletnym środowiskiem graficznym (Kwin z KDE, Metacity z GNOME, Xfwm z Xfce). Środowiska graficzne zwykle są połączone z konkretną biblioteką widżetów, determinującą wygląd interfejsu. Chociaż uruchamianie aplikacji opartych na GTK+ w środowisku opartym na Qt nie jest żadnym problemem, to z czysto estetycznego punktu widzenia dobrze jest wybierać te, których biblioteka interfejsu odpowiada tej z wybranego środowiska.
Istotną cechą wszystkich środowisk graficznych opartych na X Window jest udostępnianie użytkownikowi nie jednego, a wielu (zwykle od dwóch do czterech) wirtualnych pulpitów. Dzięki nim można dużo wygodniej zarządzać otwartymi oknami aplikacji, dowolnie przenosząc okna między nimi.
Osobną kwestią jest jakość przeznaczonych do X11 sterowników kart graficznych. Chociaż ich jakość w ostatnich latach poprawiła się odczuwalnie, to wciąż o pewnych opcjach dostępnych w środowisku Microsoft Windows można zapomnieć. W komputerach przenośnych nie działają obie techniki przełączania układów graficznych – Nvidia Optimus i ATI Switchable Graphics. W obu przypadkach można to robić jedynie z poziomu BIOS-u, więc zmiana wymaga ponownego załadowania systemu.
GNOME dzięki dynamicznemu rozwojowi dystrybucji Ubuntu – w której jest standardową opcją – to obecnie najpopularniejsze środowisko graficzne w systemach linuksowych. Jego wygląd opiera się na bibliotekach GTK+, a zarządzaniem oknami zajmuje się Metacity, bezpośrednio obsługujący trójwymiarowe efekty pulpitu: wyświetlanie poszczególnych pulpitów na ścianach sześcianu, przełączanie okien w 3D, rozmywanie nieaktywnych okien i wiele innych. Jego konfiguracja jest bardzo wygodna dzięki dużej liczbie graficznych narzędzi; dzięki zintegrowanemu menedżerowi tematów zmiana wyglądu nie nastręcza żadnych problemów. GNOME jest częścią wspomnianego już projektu GNU.
KDE jest drugim pod względem popularności środowiskiem graficznym w systemach uniksowych. Od wersji 4.0 jest ono oparte na rozwijanych głównie przez firmę Nokia bibliotekach interfejsu Qt 4. Tworzeniem okien aplikacji zarządza dołączany do środowiska menedżer KWin, pozwalający (od wersji 4.0) na wyświetlanie trójwymiarowych efektów pulpitu. Podobnie jak w przypadku GNOME KDE jest łatwe w konfiguracji dzięki dużej liczbie konfiguratorów i menedżerów.
Xfce to „lekkie” środowisko graficzne zbudowane z wykorzystaniem bibliotek GTK+ (podobnie jak GNOME). Jego twórcy położyli nacisk na minimalizację użycia zasobów systemowych, prędkość działania oraz przejrzystość interfejsu użytkownika. Dzięki modularnej budowie możliwe jest zainstalowanie jedynie najpotrzebniejszych komponentów, co oszczędza miejsce na dysku. Wygląd środowiska, chociaż nie rzuca na kolana, z pewnością nie odrzuca, a dzięki małym wymaganiom co do sprzętu, w tym przestrzeni dyskowej, jest to wybór wprost idealny dla posiadaczy starszych komputerów.
Enlightenment DR17 (lub E17) to nazwa zarówno samodzielnego menedżera okien, jak i niewielkiego środowiska graficznego opartego na bibliotekach ETK, będących częścią EFL (ang. Enlightenment Foundation Libraries). E17 jest najdłużej powstającym środowiskiem dla X Window, ale pomimo grubo ponad siedmiu lat prac wciąż nie doczekało się wersji stabilnej, ani nawet beta.
Zarządzanie oprogramowaniem
Istotną cechą zdecydowanej większości systemów linuksowych jest scentralizowanie zarządzania zainstalowanym oprogramowaniem. W przypadku systemu Windows instalacja oprogramowania z internetu zwykle sprowadza się do wejścia na stronę, pobrania instalatora i przejścia przez cały rytuał, który zwykle polega na wielokrotnym klikaniu w przycisk oznaczony „Dalej”, aby wreszcie triumfalnie go zakończyć użyciem przycisku „Zakończ”. Chociaż część oprogramowania tworzonego dla systemu Linux jest wyposażona w instalatory funkcjonalnością zbliżone do windowsowych odpowiedników, to zwykle sprawę załatwia wydanie pojedynczego polecenia z poziomu powłoki lub wybranie paczki z katalogu. Systemy zarządzania pakietami automatycznie wykonują za użytkownika takie operacje, jak pobranie oprogramowania z repozytorium, zainstalowanie, usunięcie, aktualizacja. Dzięki temu praktycznie nie istnieje problem „piekła zależności”, który pojawiał się, gdy instalowany pakiet wymagał do działania kilku innych, co to również miały swoje wymagania, i tak pozornie bez końca. Większość nowoczesnych systemów zarządzania pakietami jest wyposażona w funkcje śledzenia zależności: do każdej aplikacji i biblioteki znajdującej się w repozytorium danej dystrybucji dołączone są metadane z informacjami o tym, jakie pakiety są wymagane do ich poprawnego działania. W zasadzie jedynym wyjątkiem jest Slackware wraz z pochodnymi, w których użytkownik sam musi pilnować wszystkich zależności.
Każda dystrybucja ma własne internetowe repozytorium oprogramowania. To w nim są przechowywane najnowsze pakiety aplikacji i bibliotek w postaci skompresowanej paczki zawierającej, w zależności od dystrybucji, kod źródłowy lub gotową, skompilowaną postać binarną. Większość systemów zarządzania pakietami podczas instalacji oprogramowania informacje o najnowszej dostępnej wersji pobiera z lokalnej bazy. Dlatego przed zainstalowaniem czy aktualizacją oprogramowania zwykle dobrze jest zsynchronizować znajdującą się na dysku bazę danych z tą umieszczoną na serwerach repozytorium (przez wydanie odpowiedniego polecenia bądź wybranie stosownej opcji). Dystrybucje mają również własne formaty gotowych do instalacji pakietów oprogramowania, jednak wbrew pozorom to, że dwie różne dystrybucje korzystają z tego samego rodzaju paczek (na przykład popularnego RPM), nie oznacza ich kompatybilności we wszystkich przypadkach: pakiety przygotowane dla CentOS-a nie muszą poprawnie działać w openSUSE.
Oprogramowanie
Wybór oprogramowania dla systemów spod znaku pingwina, chociaż mniejszy niż w przypadku Microsoft Windows, większości użytkowników nie powinien dawać powodów do narzekań. Poniżej przedstawiamy kilka przykładowych propozycji dla najczęściej stosowanych grup oprogramowania.
Pakiet biurowy
Najbardziej rozbudowanym odpowiednikiem pakietu biurowego Microsoft Office jest OpenOffice.org, znany również jako OpenOffice, OOo lub po prostu OO. Większość kodu aplikacji wchodzących w skład pakietu została napisana w języku Java, dzięki czemu OpenOffice.org daje się uruchomić na wielu różnych platformach: od Windows poprzez BSD i Linuksa po Mac OS X. Większość użytkowników nie stwierdzi znaczących różnic w funkcjonalności w porównaniu z tym, co oferuje Microsoft Office. W skład pakietu wchodzą:
- edytor tekstu (Writer),
- arkusz kalkulacyjny (Calc),
- program do tworzenia grafiki wektorowej (Draw),
- program do tworzenia grafiki prezentacyjnej (Impress),
- aplikacja do obsługi baz danych (Base),
- program do tworzenia formuł matematycznych (Math).
Interfejs wszystkich składników jest bardzo tradycyjny i przypomina starsze wydania Microsoft Office (najbardziej wersję 2000). Ciekawą inicjatywą, zapoczątkowaną we wrześniu tego roku, jest „fork” o nazwie LibreOffice, tworzony przez nowo powstałą grupę The Document Foundation, składającą się po części z programistów pracujących niegdyś nad OpenOffice.org. Niebawem LibreOffice powinien wejść w skład najpopularniejszych dystrybucji przeznaczonych na komputery osobiste: Ubuntu, OpenSUSE oraz Fedory.
Muzyka
DeaDBeeF to oparty na bibliotekach GTK+ uniwersalny odtwarzacz muzyczny. Użytkownicy znanego z systemu Windows foobara2000 powinni się poczuć jak w domu, bo jego interfejs jest bardzo podobny: schludny i minimalistyczny. Chociaż DeaDBeeF nie ma aż tak rozbudowanej konfiguracji jak foobar, trudno narzekać na niedobór opcji, tym bardziej że odtwarzacz ma obsługę wtyczek, którymi łatwo można zwiększyć jego funkcjonalność, a nawet... wymienić całkowicie jego interfejs. Ponieważ aplikacja została spopularyzowana dopiero nieco ponad rok temu, wciąż trudno ją znaleźć w oficjalnych repozytoriach dużej liczby dystrybucji. Jednak na stronie projektu dostępne są gotowe pakiety binarne oraz – już tradycyjnie – pełen kod źródłowy.
Innym odtwarzaczem jest Clementine, po którego uruchomieniu część użytkowników może doznać uczucia déjà vu. Aplikacja wygląda niemal identycznie jak stary, dobry Amarok w wersji 1.4, z tą różnicą, że wykorzystuje biblioteki Qt w wersji 4, co zdecydowanie odświeża wygląd jego interfejsu. Clementine ma – podobnie jak jego starszy krewniak – bardzo wygodną obsługę biblioteki multimediów oraz przenośnych odtwarzaczy muzyki. Za dźwięk odpowiada silnik GStreamer, co w połączeniu z wieloplatformowymi bibliotekami Qt4 pozwoliło na dostosowanie aplikacji do środowiska Microsoft Windows.
Wideo
SMPlayer to obecnie najpopularniejsza graficzna nakładka na MPlayera, który nieprzerwanie od 10 lat zdobywa serca coraz większych rzeszy użytkowników Linuksa. Choć istnieją również jego „porty” przeznaczone do środowisk: Microsoft Windows, Mac OS X, BSD, a nawet Amiga OS, DOS oraz... Nintendo Wii, to właśnie wśród „pingwinów” zdobył największe uznanie i popularność. Lista obsługiwanych przez niego formatów strumieni audio i wideo jest bardzo długa i bezpiecznie można powiedzieć, że nie ma formatu, którego nie umiałby odtworzyć. SMPlayer ma dość prosty i przejrzysty interfejs, nieco podobny do tego, w który został wyposażony popularny Media Player Classic, dzięki czemu uchodźcy z systemów Microsoftu nie powinni mieć żadnych problemów z jego obsługą.
Komunikatory
Kadu to najczęściej używany w środowisku uniksowym zamiennik klienta rodzimej sieci Gadu-Gadu, choć w niedalekiej przyszłości autorzy planują dodanie obsługi otwartego protokołu XMPP/Jabber. Aplikacja ma dość prosty, choć intuicyjny interfejs, nieco przypominający starsze wersje oryginalnego klienta. Funkcjonalność jest w pełni zadowalająca i da się ją zwiększyć za pomocą wtyczek. Dzięki wykorzystaniu bibliotek Qt w wersji 4 dostępny jest nieoficjalny „port” Kadu przeznaczony na platformy Microsoft Windows oraz Meamo 5 (obecnie wykorzystywaną w jednym smartfonie firmy Nokia – N900)
Pidgin (znany wcześniej jako Gaim – twórcy zostali zmuszeni do zmiany nazwy przez koncern AOL) jest wieloplatformowym multikomunikatorem wyposażonym w interfejs oparty na bibliotekach GTK+. Obsługuje większość popularnych sieci IM: MSN/Windows Live, AIM, ICQ, XMPP oraz wiele innych, w tym nasze rodzime Gadu-Gadu. Ma bardzo prosty i funkcjonalny interfejs oraz bardzo duży zestaw wtyczek.
Na platformę linuksową dostępny jest również Skype, popularny klient sieci IM/VoIP. Podobnie jak jego windowsowy odpowiednik pozwala na komunikację jedynie w ramach macierzystej sieci, za pośrednictwem tekstu, głosu oraz obrazu. Interfejs oparty na bibliotekach Qt w wersji 4 jest dość spartański, a sama aplikacja pomimo trzech lat rozwoju wciąż nie może się doczekać wersji „stabilnej”. Możliwość wykonywania połączeń głosowych z tradycyjnymi telefonami jest w zasadzie jedynym powodem, dla którego warto zainstalować linuksowego Skype'a.
Przeglądarka
Na Linuksa dostępne są wszystkie najpopularniejsze przeglądarki internetowe znane z systemu Windows, czyli Mozilla Firefox, Opera oraz Chrome (w wydaniu Open Source znany pod nazwą Chromium). Warto jednak zaznaczyć, że z przeprowadzonych przez nas testów z użyciem benchmarku Peacekeeper jasno wynika, że jedynie w przypadku Chromium przesiadka na Linuksa nie wiąże się ze spadkiem wydajności.
Nie najgorzej zachowuje się również Opera 11: wynik okazał się o około 25% gorszy niż w przypadku wydania dla Windows. Mozilla Firefox w wersji 3.6.13 po przesiadce na Linuksa traci już 44% wydajności.
Wine is not an Emulator
Chociaż baza aplikacji dla systemów linuksowych zaspokaja potrzeby większości typowych użytkowników, duża część oprogramowania dostępna jest jedynie w wersji dla Windows. Jednak środowisko programistów Open Source znalazło sposób, by temu zaradzić.
Wine (od słów Wine Is Not an Emulator) umożliwia uruchamianie aplikacji stworzonych dla systemu Microsoft Windows w środowisku uniksowym (Linux, Solaris, BSD). Wbrew pozorom Wine nie jest emulatorem, lecz alternatywną implementacją windowsowego interfejsu programistycznego (WinAPI) dla X Window System, w całości działającą w przestrzeni użytkownika (niezależnie od jądra systemu). Poza samym WinAPI Wine implementuje takie biblioteki, jak Microsoft Direct3D, tłumacząc ich wywołania na zgodne z otwartym standardem OpenGL. Początkowo Wine był rozpowszechniany na licencji MIT, jednak po tym, jak w 2002 roku powstał zamknięty „fork” o nazwie Cedega (dawniej WineX), kod aplikacji – by uniknąć podobnych praktyk – jest rozprowadzany na zasadach licencji GNU LGPL.
Pomimo ponad 17 lat rozwoju i wsparcia takich gigantów, jak Google i Corel, uruchamianie windowsowych aplikacji wciąż przypomina loterię. W serwisie AppDB, na którego łamach użytkownicy raportują, jak dobrze dany program sprawuje się w środowisku Wine, stosunkowo niewielka ich liczba uzyskała status „platynowy”, oznaczający działanie bez żadnych problemów w większości przypadków. W praktyce duża część bardziej rozbudowanych i nowszych aplikacji może działać w sposób trudny do przewidzenia, a niektóre w ogóle nie dają się uruchomić, lub nawet zainstalować.
Ciekawą kwestią jest wydajność programów uruchamianych w środowisku Wine. Z opublikowanych w sieci testów wynika, że w pewnych okolicznościach niektóre programy (na przykład 3DMark2000) potrafią działać wydajniej niż uruchomione w macierzystym środowisku. W zasadzie jest to tylko jeden z wyjątków potwierdzających regułę – w większości przypadków korzystanie z Wine wiąże się z mniejszym lub większym spadkiem wydajności. Oczywiście, jeśli chodzi o trójwymiarowe gry, lepiej radzić sobie będą te korzystające z bibliotek OpenGL (dostępnych w wersji dla systemów uniksowych), bo nie jest konieczne tłumaczenie wywołań Direct3D.
Wbrew temu, co można by pomyśleć, korzystanie z Wine nie sprowadza na użytkowników systemów uniksowych problemu wirusów rodem z Windows. Nawet jeżeli użytkownik uruchomi aplikację zawierającą szkodliwy kod, ma on niewielkie lub zerowe szanse na zadziałanie w taki sposób jak w swoim macierzystym środowisku. Dzieje się tak z kilku powodów. Po pierwsze, uruchomiony z konta zwykłego użytkownika w praktyce będzie mieć dostęp jedynie do jego katalogu domowego. Nawet uruchomiony z konta roota, Wine ma zwykle dostęp do względnie małego fragmentu dysku twardego. Udostępnianie mu całej struktury katalogów jest nie tyle nierozsądne, co może być objawem szaleństwa.
Blaski i cienie życia z pingwinem
Systemy z rodziny Linux mają sporo zalet – są choćby bardzo wydajne i wyjątkowo elastyczne. Dzięki dużemu wyborowi dystrybucji każdy może wybrać dla siebie tę, która najbardziej odpowiada jego potrzebom. Czy system ma działać na komputerze biurkowym, czy na laptopie, czy na serwerze WWW, czy w postaci niewielkiego LiveUSB na pendrivie – zawsze do wyboru jest przynajmniej kilka różnych dystrybucji. Możliwość uruchamiania niektórych aplikacji stworzonych z myślą o systemie Windows również może pomóc w zaadaptowaniu się do nowego środowiska.
W każdej beczce miodu musi znaleźć się przynajmniej łyżka dziegciu. W przypadku Linuksa może być go sporo. Twórcy gier bardzo skrzętnie omijają tę platformę, w czego efekcie bardzo niewiele nowych daje się na niej uruchomić. Teoretycznie sprawę mogłoby załatwić korzystanie z Wine, ale jak zwykle praktyka okazała się oddzielona od teorii 5-metrowym, betonowym murem: nowsze produkcje z reguły kompletnie odmawiają działania lub prędkość wyświetlania obrazu jest całkowicie niezadowalająca. W przypadku starszych tytułów sytuacja wygląda nieco lepiej, ale trudno mówić o rewelacji – próby ich uruchomienia często mocno kojarzą się z wynikami pracy generatora liczb pseudolosowych. Problemy mogą dotyczyć również pozornie prozaicznych aspektów, jak konfiguracje wielomonitorowe pod X11.
Nie będziemy próbować nikogo na siłę przekonywać do korzystania z Linuksa. W żadnym razie nie twierdzimy również, że jest obiektywnie lepszy od systemów z rodziny Microsoft Windows. Jednak jest zupełnie inny i ta różnica może idealnie utrafić w potrzeby części użytkowników. Wbrew pozorom Linux nie jest systemem dla wszystkich. Nie jest to uniwersalny zamiennik Windowsów, tyle że darmowy. Użytkownicy przesiadający się z systemów Microsoftu będą zmuszeni zrezygnować z części przyzwyczajeń oraz poświęcić dłuższą chwilę na zapoznanie się z wybranym środowiskiem graficznym, jak również całym systemem.
Cena w dniu publikacji (z VAT): bezpłatny/darmowy