mwiacek.comColorColor | Mobile  
Linux - rozwiązanie dla ludzi ? (2010, wersja 1.01)
Submitted by marcin on Tue 18-May-2010

Polski
Linux
Polski artykuł
x86
OS


Znacznym rozszerzeniem poniższego tekstu jest artykuł Ubuntu 10.04 i Mint 9 - rozwiązania dla ludzi ?

 Spis treści
 
  1. Dawno, dawno temu...
  2. Podstawą są jądra
  3. Wszystko jest plikiem
  4. Konsola
  5. Środowisko graficzne
  6. Grafika 3D
  7. DOS i Linux i Windows w jednym stali domku...
  8. Bezpieczeństwo
  9. Podsumowanie

Po opublikowaniu mojego tekstu Ubuntu 10.04 - Linux dla ludzi ? w portalu benchmark.pl okazało się, że pewne fragmenty nie były zbyt jasne dla Czytelników, wskazana została również ogólność mojego tekstu (która nawiasem mówiąc wydawała się mi się oczywista przy formacie MINI-recenzji).

Z uwagi na to wszystko postanowiłem napisać trochę więcej na temat Unixa i Linuxa oraz zastanowić się na przykładzie wybranych tematów, na ile to ostatnie rozwiązanie jest dla przeciętnego użytkownika... Będzie też kilka słów o Windows i nie tylko...

Dawno, dawno temu...

Wszystko zaczęło się od Multicsa działającego na komputerach GE-645. Został on stworzony przez MIT (Massachusetts Institute of Technology), AT&T Bell Labs i General Electric w latach 60 XX wieku (a więc w czasie, gdy Ameryka jest uwikłana w wojnę w Wietnamie, trwa wyścig o lądowanie na Księżycu, korporacje takie jak Intel i AMD jeszcze nie istnieją). Był rewolucyjny, ale sprawiał różne problemy.

Z tego powodu w AT&T Bell Labs zapada decyzja o stworzeniu czegoś nowego. Tym czymś jest UNICS (nazwa została później zmieniona na Unix) powstały w 1969 na architektury PDP-7 i PDP-11/20 firmy DEC. W pracach nad nim biorą tacy ludzie jak Ken Thompson, Dennis Ritchie czy Brian Kernighan (znany głównie jako twórca języka programistycznego C stworzonego początkowo na potrzeby pisania Unixa). 3 listopada 1971 zostaje opublikowana pierwsza edycja. W 1972 Unix zostaje przepisany na język C i powstaje druga edycja. 1973 - trzecia i czwarta edycja.

AT&T licencjonuje całość dla uniwersytetów i firm trzecich. Od 1974 zaczynają powstawać ich wersje niekoniecznie zgodne z kolejnymi edycjami od AT&T i między sobą. Z tego względu po wielu latach w końcu tworzone są pewne standardy. I tak w 1999 Executable and Linkable Format (ELF) stał się podstawowym dla plików binarnych, a w latach 80-tych XX wieku organizacja IEEE (Institute of Electrical and Electronics Engineers) opublikowała zestaw norm opisujących standard POSIX (Portable Operating System Interface for Unix) przedstawiający sposoby budowania systemów operacyjnych tak, aby zachować między nimi przenośność oprogramowania. Pierwsza wersja jest z 1988, były też oczywiście kolejne. Żeby nie było wątpliwości - obecne Windows również przynajmniej częściowo potrafią być zgodne z tymi standardami (i stąd np. system umie umieszczać na dyskach pliki i katalogi z rozróżnieniem wielkości ich liter, co zresztą jakiś czas temu pokazywałem dla partycji NTFS).

Z ciekawostek: swoją wersję Unixa w latach 80-tych XX wieku rozwijał Microsoft (Xenix bazowany początkowo na wersji 7 Unixa od AT&T). Z kolei w 1978 z wersji 6 powstaje 1BSD będący początkiem linii, z której wywodzą się np. darmowe FreeBSD (tworzony od 1993) i OpenBSD (od 1994). Również darmowy Open Solaris ma swoje korzenie w Solarisie (wcześniej znanym jako SunOS i tworzonym od 1982). Obecnie także MacOS (a dokładniej Mac OS X z 2001 i późniejsze) to system unixopodobny (oparty m.in. na rozwiązaniach FreeBSD i OpenBSD).

Przytoczę jeszcze dwie ważne daty (dlaczego ? wyjaśnię to później). Pierwszą jest 1983. Richard Stallman ogłasza wtedy rozpoczęcie projektu GNU mającego na celu stworzenie darmowego klona Unixa (w ramach projektu powstaną m.in. różne programy). Jest to odpowiedź na działanie AT&T z początku lat 80-tych ("zamknięcie" źródeł systemu i komercyjne ich sprzedawanie). Drugą jest 1987 i opublikowanie przez Andrew Tanenbauma pierwszej wersji darmowego Minixa używanego do nauczania studentów.

Szerzej na temat tego typu zależności można poczytać chociażby w WikiPedii, ja odesłałbym dodatkowo np. do wykresu na stronie Unix History.

Do góry

Podstawą są jądra

Mówimy, że DOS, Windows, Linux, FreeBSD, OpenBSD, ReactOS, itd. itd. są systemami operacyjnymi. Co to tak naprawdę znaczy ?

Definicji jest wiele, ja odwołam się do polskiego tłumaczenie słów Andrew Tanenbauma: "System operacyjny jest warstwą oprogramowania operującą bezpośrednio na sprzęcie, której celem jest zarządzanie zasobami systemu komputerowego i stworzenie użytkownikowi środowiska łatwiejszego do zrozumienia i wykorzystania.".

Myślę, że definicja jest prosta i czytelna. W każdym systemie jest to rozwiązane trochę inaczej, niemniej jednak zawsze będziemy mogli mówić o podstawowym elemencie jakim jest jądro. Jest ono wczytywane i uruchamiane po starcie komputera przez moduł ładujący czyli tzw. bootloader (ten z kolei jest uruchamiany przez BIOS/EFI) i który w obecnych systemach zawiera mechanizmy związane z obsługą procesów (ich przerywanie, kontrola uprawnień, itd.), urządzeń (sterowniki), pamięci operacyjnej, jej rozszerzenia na dysku (czyli pamięci wirtualnej), systemów plików... O ile w Windows to instalator dobiera komponenty związane z daną konfiguracją sprzętową, o tyle w różnego rodzaju rozwiązaniach unixopodobnych to użytkownik jest w stanie bardzo precyzyjnie kontrolować ten fragment systemu.

Czym tak naprawdę jest Linux ? Nazwa ta określa nie jeden system, ale całą rodzinę systemów, w których wspólne jest właśnie jądro. Do niego dodane są inne programy (najczęściej powstałe w ramach projektu GNU, ale nie tylko) tworząc tzw. dystrybucję. Takimi dystrybucjami są np. Debian, Ubuntu, Slackware, itd. Każda z nich ma zazwyczaj jakieś swoje zasady (np. zakaz włączania oprogramowania bez kodu źródłowego), całość jest zazwyczaj zgodna z normami POSIX. Spotyka się czasem nazwę GNU/Linux.

Z historią jądra systemu GNU/Linux nierozłącznie wiąże się data 25 sierpnia 1991 i osoba Linusa Torvaldsa (wtedy studenta uniwersytetu w Helsinkach). Wysyła on wtedy swój historyczny list, w którym pisze o chęci stworzenia takiego rozwiązania na architekturę x86. Całość jest w jakiś sposób inspirowana m.in. Minixem. We wrześniu 1991 powstaje wersja 0.01, wydanie 0.11 z grudnia 1991 jest kompilowalne na komputerze działającym pod kontrolą siebie samego, z kolei 0.12 (luty 1992) jest opublikowana pod licencją GNU General Public License (GPL). W styczniu 1992 powstaje grupa dyskusyjna alt.os.linux, wielu ochotników zaczyna wspierać pracę Linusa i całość zaczyna być rozwijana coraz szybciej:

  • 14 marca 1994 - 1.0.0
  • 9 czerwca 1996 - 2.0.0
  • 25 stycznia 1999 - 2.2.0
  • 4 stycznia 2001 - 2.4.0
  • 17 grudnia 2003 - 2.6.0

Jak widać - numery wersji składają się obecnie minimum z trzech cyfr. Jeżeli środkowa jest nieparzysta, dana wersja jest testową. Z kolei czasem spotyka się również czwartą cyfrę.

Z bardziej znanych wydarzeń: w 2003 SCO pozywa IBM o złamanie należących do nich praw patentowych (a dokładniej o dodanie do jądra linuxowego fragmentów, których byli właścicielami). Całość zostaje w końcu oddalona...

Obecnie jądro linuxowe jest udostępniane na stronie www.kernel.org na licencji GNU GPL2, skąd każdy może je bezpłatnie pobrać. Jest ono monolityczne. Poszczególne elementy wewnątrz takie jak sterowniki mają dostęp do wszystkich zasobów (a więc również np. pamięci zajętej przez inne elementy) czyli działają w tzw. trybie jądra. Nie jest ważne w tym przypadku, iż mogą być one fizycznie ładowane z oddzielnych plików na dysku. Przyspiesza to całość, ale powoduje problemy w przypadku błędów.

Ta ostatnia wada spowodowała, iż od dawna próbowano stworzyć takie jądro, w którym ilość elementów z dostępem do wszystkich zasobów byłaby minimalna, a możliwie duża ilość sterowników byłaby fizycznie od siebie odseparowana (tzw. mikrojądro). W 1992 i 2006 kwestia ta (tzn. co jest lepsze - mikrojądro czy jądro monolityczne ?) była dosyć gorąco omawiana między Linusem Torvaldsem i Andrew Tanenbaumem. O ile wczesne implementacje idei mikrojądra były dosyć wolne, obecnie z ich zaletami można się zapoznać np. w systemie Minix 3.

Jeżeli chodzi o linuxowe sterowniki, w przypadku platformy x86 obsługiwane są m.in. standardy oszczędzania energii APM i obecny ACPI, dźwięk powstaje z użyciem pakietów powstałych w ramach projektu ALSA (OSS jest już praktycznie nieużywany), z obsługą tunerów czy kamer związane są elementy z projektu Video4Linux, monitorowanie temperatury uzyskamy dzięki lm-sensors, sterowniki dla Bluetooth pochodzą z Bluez, wspierane są praktycznie wszystkie popularne systemy plików (może z wyjątkiem darmowej obsługi dla exFAT) włącznie z własnymi z serii "ext" (gdzie najnowszy to "ext4"), dodatkowo możliwe jest częściowe używanie sterowników napisanych dla Windows np. dla różnych kart wifi (rozwiązanie ndiswrapper - tutaj jest przykładowy opis jego wykorzystania dla dystrybucji Ubuntu). O takich "drobiazgach" jak obsługa SATA, USB czy kart graficznych wszystkich znaczących producentów nawet nie wspomnę...

Do góry

Wszystko jest plikiem

Paradoksalnie wpierw napomknę trochę o Windows - obecne wersje (takie jak XP, Vista czy 7) wywodzą się z Windows NT oraz linii Windows 9x opartej na MS-DOS. Przez wiele lat użytkownicy zostali przyzwyczajeni do tego, iż:

  • wielkość liter nie ma znaczenia w nazwach plików i katalogów
  • kolejne partycje i urządzenia (dyski twarde, napędy optyczne, itp.) są oznaczane literami alfabetu i dwukropkiem. I tak stacja dyskietek to zazwyczaj "A:" lub "B:", pierwsza partycja dysku twardego to "C:", itd. (nawiasem mówiąc - o ile obecnie można przynajmniej częściowo zmieniać przypisania w oknie "Computer Management", o tyle kiedyś było to całkowicie niemożliwe).
  • pełna ścieżka do katalogu czy pliku zazwyczaj składa się z nazwy urządzenia i kolejnych katalogów oddzielonych wyłącznie "\"
  • uprawnienia do katalogów i plików są teraz (na partycjach NTFS) określane z użyciem tzw. list dostępu (ACL)
  • w nazwie pliku może być tylko jedna kropka, a fragment nazwy po niej jednoznacznie określa format

Nie jest to obecnie częściowo prawda - wielkość liter może mieć znaczenie, urządzenia mogą być udostępniane również jako kolejny "katalog", ścieżki mogą zawierać także "/", kropek może być już wiele. Dzieje się tak częściowo właśnie ze względu na zgodność z POSIX.

W systemach unixopodobnych wygląda to następująco:

  • wielkość liter ma znaczenie
  • pełna ścieżka składa się z kolejnych katalogów oddzielonych wyłącznie "/"
  • w klasycznych rozwiązaniach dany plik czy katalog ma swojego właściciela (najczęściej użytkownika, który go stworzył) oraz jest przypisany do tzw. grupy (w której mogą się znaleźć dowolni użytkownicy systemu). Uprawnienia określa się dla właściciela, grupy i wszystkich innych.
  • kropek może być wiele

Nie ma dowolności w umieszczaniu plików gdziekolwiek (do tego dąży także obecnie Windows ;)). Podam kilka przykładów:

  • "/boot" - skompilowane jądro
  • "/dev" - pliki, które plikami nie są :) Wszystkie widoczne tam "zbiory" są bowiem tworzone dynamicznie przez jądro i zawierają dane związane z kolejnymi fizycznymi urządzeniami (są mocno zależne od systemu) takie jak np. zawartość ich pamięci (Unix bowiem próbuje wprowadzić ideę, aby dosłownie wszystko móc obsługiwać podobnie jak plik)
  • "/etc" - pliki konfiguracyjne
  • "/home" - katalogi kolejnych użytkowników systemu, w których mogą oni składować swoje dokumenty (jego odpowiednikiem jest windowsowy "Documents and Settings", a obecnie "Users")
  • "/mnt" lub "/media" - najczęściej w nich możemy znaleźć zawartość dyskietki czy CD-ROM
  • "/proc" - zawiera tworzone dynamicznie przez jądro "pliki" z informacjami o wszystkich uruchomionych w systemie programach
  • "/root" - pliki administratora
  • "/tmp" - pliki tymczasowe

Pełna ścieżka do katalogu z plikami użytkownika (w "/home" albo "/root") bywa skrótowo oznaczana przez "~/", pliki o nazwach rozpoczynających się od kropki są traktowane przez wiele programów jako ukryte. Prawda, że jest to proste ?

Do góry

Konsola

Historycznie wcześniejsze rozwiązanie. Użytkownik wpisuje szereg poleceń (ich składnia częściowo zależy od tego, z jakiego rozwiązania czyli tzw. powłoki korzysta), a one w formie tekstowej pokazują rezultaty. Wynik działania jednego może być przekazany do innego. Przykładowo: "ls" pokaże nam spis plików i katalogów w katalogu, w którym się znajdujemy, a "ls | more" podzieli ten spis na strony (żeby przejść do kolejnej, niezbędne będzie naciśnięcie klawisza). Kilka odpowiedników poleceń z linii komend Windows:

  • "dir" to "ls"
  • "ipconfig" to "ifconfig"
  • "copy" to "cp"
  • "move" to "mv"
  • "cd" to "cd"

Żeby zobaczyć pomoc do jakiejś komendy, wystarczy wpisać "man nazwa_komendy". Aby z kolei zadziałała ona w tle (zanim się zakończy, my mamy znów dostęp do terminala i możliwość wydawania poleceń), na jej końcu należy dodać spację i "&". Pracę w konsoli możemy sobie ułatwić wykorzystując np. Midnight Commandera (komenda "mc") naśladującego nieśmiertelnego Norton Commandera (dla osób, którego nie kojarzą tego drugiego - jest to to rozwiązanie w stylu Total Commandera).

Wspomniałem o powłokach - są bardzo różne, wiele ma swój język programowania (możliwość uruchamiania skomplikowanych skryptów). Dla ciekawych: Ubuntu standardowo proponuje powłokę bash.

Do góry

Środowisko graficzne

Rozwiązania unixopodobne mają również grafikę, czyli X Window System (częściej znane jako X11). Jego istotą jest obecność serwera (tzw. X Servera). Obsługuje on pulpit, zdefiniowane są z jego użyciem wyłącznie elementarne operacje, do niego wysyłane są np. informacje o ruchach myszki. Jest to więc klasyczna architektura klient-serwer i nie jest wielkim problemem udostępnienie pulpitu np. poprzez sieć (coś na wzór Remote Desktop z Windows). Dystrybucje Linuxa zawierają jego implementację o nazwie XFree86 albo (znacznie częściej) X.Org. Z ciekawostek: w większości dystrybucji przy włączonym środowisku graficznym mamy dalej dostęp do maksymalnie sześciu terminali (kombinacja klawiszy CTRL+ALT+F1 do CTRL+ALT+F6), a nasze środowisko zobaczymy po użyciu CTRL+ALT+F7.

X11 nie definiuje styli okien albo wyglądu ich krawędzi. Robi to dodatkowy element czyli tzw. menedżer okien. Istnieje wiele różnych (np. Fluxbox, AfterStep czy Xmonad), dwoma najpopularniejszymi są obecnie KDE i Gnome (które dodatkowo zawierają aplikacje pozwalające zbudować całe środowisko graficznie jak w Windows oraz udostępniają zestawy bibliotek pozwalających programistom w prosty sposób pisać aplikacje okienkowe - odpowiednio QT i GTK+).

Gnome powstaje w ramach projektu GNU. Wersja 1.0 została wydana w marcu 1999, wersja 2.0 w czerwcu 2002, obecna to 2.30.

Biblioteki QT przez lata były własnością firmy Qt Development Frameworks przejętej obecnie przez Nokię (znaną z produkcji telefonów komórkowych). Obecnie są udostępnione na licencji GNU GPL. Niestety, ale KDE w wersji 4 jest dosyć mocno krytykowane ze względu na powolność, duże zużycie zasobów oraz brak stabilności.

Do góry

Grafika 3D

Na rynku dostępne są obecnie dwa standardy związane z tworzeniem grafiki 3D: Direct3D będący częścią bibliotek DirectX (nieodłączanie związanych z Windows, zamkniętych i tworzonych przez Microsoft) oraz OpenGL (dostępny dla bardzo różnych systemów operacyjnych).

Dystrybucje Linuxa zawierają najczęściej bibliotekę Mesa 3D będącą darmową implementacją OpenGL. Jest ona w stanie działać nawet, gdy w systemie nie ma działającej sprzętowej akceleracji (poniżej przykładowe demo "glxgears" i wynik komendy "glxinfo" z zaznaczonym fragmentem wskazującym na użycie programowego sterownika). Nawiasem mówiąc Windows ma podobne rozwiązanie dopiero wraz z siódemką (tzw. WARP10).

Praktyczne działanie całości (sugeruję jednak sprzętową akceleracje ;)) możemy sprawdzić grając np. w sympatyczną grę Extreme Tux Racer.

Do góry

DOS i Linux i Windows w jednym stali domku...

Podstawowym chyba argumentem zwolenników systemów Microsoftu przeciw Linuxowi jest brak zgodności. Nie do końca jest to prawda. Najbardziej znanym pakietem pozwalającym na uruchamianie skompilowanych aplikacji Windows jest Wine (skrót "Wine Is Not an Emulator"), który próbuje zaimplementować funkcje tego systemu w środowisku X11. Jest to trudne (co widać po liście obsługiwanych programów w najwyższym statusie Platinum) ze względu na ilość funkcji. Powstały (ale już komercyjne) próby stworzenia doskonalszego Wine. Są one ukierunkowane np. na gry. Mówię tutaj o pakietach Cedega i CrossOver. Jest nawet pewne wsparcie dla DirectX.

Mamy darmowe DOSEMU tworzące maszynę wirtualną x86 pozwalającą na pracę ze starszymi programami przeznaczonych do DOS (uruchamia ono w niej najczęściej darmową wersję systemu DOS napisaną w ramach projektu FreeDOS). Z kolei darmowy DOSBox jest emulatorem ukierunkowanym na uruchamianie gier działających w DOS.

Istnieją również silniki napisane przez entuzjastów różnych gier pozwalające w nie zagrać pomimo tego, że ich producent tego nigdy nie przewidział (np. ScummVM działa chociażby z plikami "The Secret of Monkey Island").

Gdy to nie wystarczy, możemy skorzystać z odpowiedników. I tak np. "K3b" zamiast Nero, "Open Office" i "Thunderbird" zamiast Microsoft Office, "Krita" zamiast Paint.NET, "Krusader" zamiast Total Commandera, "Chromium" zamiast Chrome. Nie należy się tutaj absolutnie obawiać niskich numerów wersji - w przypadku komercyjnych programów dla okienek Microsoftu często ich producenci publikują ich kolejne "duże" wersje tylko po to, aby wywołać wrażenie dużych zmian i zwiększyć sprzedaż (a tutaj nie ma podobnej "potrzeby").

Czasem nawet to nie jest możliwe (przykład: musimy czytać pliki CHM wymagające oryginalnego Internet Explorera). Wtedy wystarczy użyć np. VMware Playera albo chociażby VirtualBox i w nim uruchomić oryginalne okienka (na które oczywiście potrzebna będzie odpowiednia licencja)... Jest też oczywiście wirtualna maszyna Javy, która pozwoli wykorzystać emulator JPC w przeglądarce (który z Windows może sobie nie poradzi, ale z kilkoma innymi systemami tak ;))

Ale uruchamianie to nie wszystko - z wyjątkiem najnowszego rozwiązania Microsoftu o nazwie exFAT systemy GNU/Linux są w stanie obsłużyć wszystkie inne systemy plików stworzone przez tę firmę z użyciem darmowych sterowników. Nie ma problemu np. z odzyskiwaniem z nich skasowanych danych (można znaleźć chociażby odpowiedni opis na stronach związanych z dystrybucją Ubuntu). Podobnie można współdzielić pliki (rozwiązanie o nazwa Samba) albo odczytywać zawartość plików w formacie VHD (komenda "vdfuse"). Z ciekawostek: jeżeli mamy jeszcze jakieś stare dyskietki z czasów, gdy używaliśmy DOS (teraz raczej rzadkość :)) i nasz system będzie miał jakiekolwiek z nimi problemy, możemy wykorzystać pakiet Mtools. Dzięki nim np. do wyświetlenia zawartości wystarczy komenda "mdir" wydana obowiązkowo z konsoli :)

Do góry

Bezpieczeństwo

Systemy unixopodobne są kojarzone głównie z bezpieczeństwem. Od zawsze wymagane było tutaj chociażby logowanie, trzeba było również ręcznie "podłączać" (montować) np. zawartość płyt CD/DVD po fizycznym ich włożeniu do napędu, aplikacje działały z najniższymi możliwymi uprawnieniami, itd.

Obecnie troszkę się to zmienia, a podejście do tego tematu jest inne w każdym systemie. I tak np. w popularnym Ubuntu można ustawić, aby któryś z użytkowników był automatycznie logowany do systemu, zawartość pamięci flash pokazuje się od razu, sieć jest automatycznie włączana, powiększenie uprawnień wymaga natomiast użycia komendy "sudo". Pozwala to pogodzić bezpieczeństwo z wygodą użytkowania. Dodatkowo możliwe jest doinstalowanie aplikacji pozwalających łatwo ustawić sieciowy firewall (np. "firestarter") i wtedy poziom bezpieczeństwa będzie niewątpliwie większy niż w Windows. Na pewno nie należy się obawiać złośliwych aplikacji przeznaczonych dla okienek Microsoftu, gdyż te najczęściej się nie uruchomią.

Trzeba zauważyć, iż nawet wtedy nie można zapominać o zwykłym elementarnym rozsądku ani ciągłym aktualizowaniu komponentów systemu (ale wyłącznie z oficjalnych repozytoriów !). Więcej możemy uzyskać np. uruchamiając przeglądarkę www i aplikacje korzystające z sieci w maszynach witualnych (pomysł ten został wykorzystany w opartym m.in. na dystrybucji Linuxa Fedora systemie Qubes znanej polskiej specjalistki od bezpieczeństwa Joanny Rutkowskiej, który obecnie jest w trakcie tworzenia).

Chciałbym tutaj również podać odnośnik do artykułu Dlaczego pingwiny żyją dłużej, czyli o atakach na Linuksa pracowników Kaspersky Lab Polska. Myślę bowiem, iż lepiej mówić o pewnych problemach niż je przemilczać.

Do góry

Podsumowanie

Moim zdaniem dystrybucje GNU/Linux wprowadzają tak niezbędną konkurencję na rynku systemów operacyjnych. Coraz mniej czynności wymaga w nich doktoratu z informatyki i tak naprawdę w wielu wypadkach użytkownicy bywają do nich uprzedzeni głównie z uwagi na...nazwę ("skoro to Linux, to musi być coś trudnego"). Z tych i wielu innych względów najbardziej znanym i używanym systemem jest niewątpliwie Windows XP. "Wystarczająco dobry", wspierany przez lata, obecnie jest pewnym problemem dla Microsoftu, który stara się przekonać użytkowników do zakupu niekoniecznie lepszego Windows 7. Po prostu korporacja chce na czymś zarobić. Jest o co walczyć - kwota z każdej licencji pomnożona przez miliony kopii daje niezłą sumkę. Dystrybucje Linuxa są w większości darmowe, nikt nie zmusza do niczego ich użytkowników. To oni wybierają to co lubią. Powoduje to, iż przez lata wiele "gorszych" dystrybucji musiało ustąpić pola "lepszym", a praktycznie wszystkie liczące się na rynku mają obecnie wsparcie firm. A że mamy różnorodność ? Każdy z nas ma różne potrzeby... A że czasem coś nie od razu zadziała ? No cóż, gdyby wszyscy programiści tego oprogramowania mieli tyle funduszy, co Microsoft...

Siłą ale i słabością Windows jest zgodność. Kolejne wersje "okienek" potrzebują coraz więcej zasobów w celu jej zachowania, całość jest coraz bardziej skomplikowana (jak przyznał jeden z projektantów firmy Mark Russinovich nie rozumieją oni już nawet pewnych zależności między różnymi elementami). Jak to działa w praktyce, widać w przypadku tabletów i zapowiedzi kolejnych firm, iż rezygnują z łączenia z nimi Windows 7. Dystrybucje Linuxa są często o wiele lepsze pod tym względem - zazwyczaj programy w nich instalowane są z pakietów zawierających odpowiednie informacje tego typu (dzięki temu wiadomo, iż A wymaga np. również bibliotek X, Y i Z). Nie trzeba również umieszczać wszystkiego na dysku "na wszelki wypadek".

Wiele programów dostępnych dla dystrybucji linuxowych ma publikowany również kod źródłowy. Może to powodować pewne zagrożenia (np. to, iż jakaś usterka zostanie zauważona przez "nieodpowiednich" ludzi), ale też zazwyczaj przyspiesza pojawianie się poprawek oraz uzupełnień (wszak mogą je robić wszyscy). Dostępność kodu przydaje się nie tylko programistom. Również "zwykli" użytkownicy mogą bowiem na tym zyskać - po zbudowaniu wersji binarnych aplikacji z uwzględnieniem np. specyfiki konkretnego procesora (np. czy jest to układ Intela czy AMD) może ona działać szybciej lub być mniejsza. Czasem takie budowanie oznacza wydanie np. jednej czy dwóch komend w konsoli, w niektórych dystrybucjach jest to robione wręcz "automatycznie" przy instalacji programów.

Nie chciałbym oczywiście tworzyć wrażenia, iż wszystko tutaj działa idealnie. Jest to oprogramowanie pisane przez ludzi i także zawiera błędy oraz niedoróbki. Jego mocną stroną jest fakt, że zazwyczaj dowiadujemy się o wielu z nich i są one poprawiane często szybciej niż w przypadku produktów pewnych znanych korporacji. Jak wspomniałem wcześniej, również chociażby jądro monolityczne zawsze będzie sprawiać problemy. I tu wychodzi kolejna zaleta - wiele oprogramowania znanego z dystrybucji GNU/Linux działa również w innych systemach unixopodobnych i często jest to możliwe właśnie z uwagi na dostępność kodu. A prace nad innymi (lepszymi) jądrami trwają, o czym świadczy np. strona projektu Debian GNU/Hurd.

Czy więc Linux jest obecnie dla zwykłych przeciętnych użytkowników ? Porównałbym sytuację trochę do jazdy samochodzem z automatyczną skrzynią biegów. Tak działa Windows - spalanie jest wyższe, jest dużo części wewnątrz i dosyć często trzeba coś łatać. A skrzynia manualna ? Bardzo prosta, wystarczy trochę wiedzy i rozsądku (wszak nikt chyba nie próbuje włączyć pierwszego biegu przy 100 km/h ;)), aby jeździć dynamiczniej i z większą frajdą. I co z tego, że czasem jakiś bieg zazgrzyta ? Coś za coś ;)

Do góry