Opisz system operacyjny Linux
Linux jest to jądro będące podstawą jednej z wersji uniksowych systemów operacyjnych. Nazwa Linux jest też powszechnie używana do określenia całego systemu opartego o te jądro, choć niektórzy (m.in. projekt GNU oraz Debian) używają w tym celu nazwy GNU/Linux.
Historia rozwoju
Linux zaczął powstawać w 1991 roku, kiedy to fiński programista, Linus Torvalds stworzył jądro nowego systemu operacyjnego przeznaczonego do pracy z procesorami rodziny 80386 firmy Intel. Informacje o systemie, opublikowane przez Torvaldsa na internetowej liście dyskusyjnej, spotkały się z dużym zainteresowaniem i wkrótce przy rozwoju systemu pracowała już grupa ludzi. Znacznie przyspieszyło to jego rozwój otrzymał on później nazwę "Linux". Im bardziej system ten stawał się popularny, tym więcej ludzi wspierało jego rozwój. Proces ten trwa do dziś, a liczbę użytkowników różnych dystrybucji Linuksa szacuje się obecnie na wiele milionów na całym świecie.
Kolejne wersje jądra systemu Linux przynosiły zmiany i wiele nowości:
jądro 1.0 - 14 marca 1994. Pierwsze stabilne jądro Linuksa. Znalazła się w nim implementacja protokołów internetowych zapożyczona z systemu BSD, dołączono też nowy system plików ext, który usuwał wiele niedogodności z systemu plików Miniksa.
jądro 1.2 - 6 marca 1995. Linux obsługuje już cztery platformy: Alpha, SPARC, MIPS oraz rodzime i386. Dodano możliwość korzystania z nowej szyny PCI oraz zwiększono liczbę obsługiwanych urządzeń.
jądro 2.0 - 8 czerwca 1996. Jądro wzbogaciło się o obsługę wielu procesorów (tryb SMP), jednak brakowało w nim obsługi wielobieżności. Wprowadzono obsługę platformy m68k. Znacząco zwiększono też wydajność stosu TCP/IP, wprowadzono obsługę protokołów Appletalk, amatorskich sieci radiowych AX.25 oraz standardu ISDN. Dodano także możliwość montowania sieciowych systemów plików NetWare oraz SMB.
jądro 2.2 - 25 stycznia 1999. Wersja ta przynosi obsługę kolejnych architektur sprzętowych (ARM, IBM S/390 oraz Sparc64). Przepisano też obsługę protokołu TCP/IP oraz wprowadzono możliwość zaawansowanego routingu.
jądro 2.4 - 4 stycznia 2001. Dodano obsługę procesorów Intel Itanium, oraz IBM S/390 w wersji 64-bitowej, CRIS, HP PA-RISC oraz Hitachi SH. Usunięto ograniczenia poprzednich wersji systemu: pełna 64-bitowość, rozmiar pliku > 2 GB. Ulepszenie obsługi USB, szybkich dysków ATA66 i SCSI, obsługa złączy FireWire oraz kamer cyfrowych. Możliwość korzystania z DevFS i XFS. Do jądra wprowadzono także prosty serwer HTTP (kHTTPd) oraz obsługę LVM (łączenie kilku dysków twardych w jedną wirtualną partycję).
jądro 2.6 - 18 grudnia 2003. Wprowadzono obsługę architektur H8/300. IBM POWER5, v850 oraz x86-64. Łączna liczba obsługiwanych architektur wzrasta do 22! Do jądra dodano obsługę protokołu IPSec oraz zmieniono scheduler (autorem zmian schedulera był Ingo Molnar). Prace nad jądrem 2.6 mają zwiększyć skalowalność i szybkość systemu, zmniejszenie opóźnień oraz obsługę wielobieżności, dodano także obsługę wspólnego API dla algorytmów kryptograficznych. Znacznie ułatwiono tworzenie nowych modułów jądra. Dodano obsługę nowych systemów plików: IBM JFS, ReiserFS oraz rozbudowano rodzime systemy plików o obsługę list kontroli dostępu, zgodnych ze specyfikacją POSIX. Z jądra usunięto natomiast kHTTPd, jako element zbędny.
Sama nazwa pochodzi ze zbitki słów Linus (będącego imieniem twórcy) i Unix (Linus' Unix). Nie przyjęła się proponowana przez Torvaldsa nazwa Freax. Nazwa "Linux" informuje nas także że nie jest to system Unix: Linux Is Not UNIX. Jakkolwiek teoria ta wydaje się prawdopodobna -> Freax = (free+freak+[uni]X), to jednak pewne inne źródła twierdzą, iż nazwa LINUX pochodzi po prostu od połączenia słów: Linus i Minix lub Linus i Unix. Ten dylemat może chyba wyjaśnić tylko sam Linus...
Cechy systemu
Linux charakteryzuje się dużą zgodnością ze standardami ANSI i POSIX, jest wielozadaniowy, wielowątkowy, wielobieżny, ma monolityczną budowę (choć z obsługą modułów - najczęściej zawierającymi sterowniki urządzeń), a także wsparcie dla klastrów (rozwijany w Izraelu akademicki projekt MOSIX) i architektury SMP (w najnowszych wersjach także NUMA). Jest bardzo wydajny, stabilny i bezpieczny. Wadą jest brak możliwości wywłaszczenia procesów jądra (taka możliwość istnieje w najnowszych jądrach 2.6) oraz korzystanie w małym stopniu z wątków jądra, które w Linuksie nie mogą zajmować się wykonywaniem programów użytkownika.
Działa na wielu platformach sprzętowych:
IA-32 - 32-bitowe procesory firmy Intel z rodziny x86 (386SX/DX-486SX/DX-Pentium/II/III/IV/EE/Pro/Xeon lub lepsze), AMD (K5/K6/Duron/Athlon/Sempron) oraz inne zgodne z pierwotną architekturą,
IA-64 - procesory Intel z rodziny Itanium oraz 64-bitowe wersje procesora Xeon,
Opteron i Athlon 64/Athlon-FX, a także Intel EMT,
IBM PowerPC - IBM PCs oraz Apple Mac (IBM Power1 - IBM Power5),
Mainframe - IBM CP S/390 i IBM CP zSeries,
m68k firmy Motorola (Atari, Amiga oraz Apple),
MIPS,
Alpha,
SPARC,
SPARC64,
Dzięki Wirtualnemu Systemowi Plików (ang. VFS) obsługuje blisko 50 systemów plików:
rodzime ext2 i ext3
SGI XFS
IBM JFS
NFS
SMB
ReiserFS
Reiser4
FAT
UFS - UFS2 tylko do odczytu
NTFS - tryb tylko do odczytu/częściowa obsługa zapisu (w jądrze 2.6)
Minix
Zastosowanie
Linux przede wszystkim stosowany jest na systemach serwerowych (serwery WWW, FTP, e-mail i inne), jako zapory sieciowe (firewall), a także w systemach osadzonych oraz w niektórych odtwarzaczach DVD. Ze względu na powstanie i rozwój dystrybucji o łatwej instalacji, graficznym wyglądzie i bogactwie wydajnego oprogramowania przewiduje się szerokie wejście Linuksa na rynek biurowy i domowy. Rządy kilku państw europejskich prowadzą wdrożenia Linuksa na komputerach administracji państwowej. Ponadto z Linuksa korzystają agencje wywiadowcze i kontrwywiad, ze względu na bezpieczeństwo, stabilność oraz możliwość audytu oraz modyfikacji kodu (dostępność kodu źródłowego). Niezawodność tego systemu została doceniona przez niektóre banki i instytucje finansowe korzystające z Linuksa (np. system notowań Wall Street oparty jest na tym systemie operacyjnym). Linux jest używany w większości superkomputerów z listy TOP500.
Rozwój Linuksa można podzielić na dwie gałęzie - stabilną (oznaczaną numerami parzystymi serii, np. 2.6) oraz rozwojową (oznaczaną numerami nieparzystymi np. 2.5).
Wersja stabilna - jak sama nazwa wskazuje - ma być stabilna, autorzy wstrzymują się od wprowadzania do niej rewolucyjnych zmian, jedynie poprawki wykrytych błędów, drobne usprawnienia. Jednym z najpoważniejszych odstępstw od tej reguły była wymiana nieefektywnego podsystemu pamięci wirtualnej w serii 2.4.
Po każdej serii stabilnej (a właściwie już w jej trakcie) rozpoczynana jest seria rozwojowa, w której jest miejsce na eksperymenty, przebudowy itd. Z tego powodu wersje rozwojowe nie nadają się do poważnego użytkowania, często nawet nie mogą zostać skompilowane. Po jakimś czasie seria rozwojowa "dojrzewa" i staje się pierwszą wersją nowej serii stabilnej, a poprzednia stabilna seria wchodzi w stan "spoczynku", kiedy wprowadzane są praktycznie tylko poprawki bezpieczeństwa oraz z rzadka porty fragmenty kodu z nowszych serii (np. sterowników urządzeń).
W serii 2.6 Linus w porozumieniu z jej opiekunem, Andrew Mortonem, wprowadzają model nawet dużych, choć stopniowo wprowadzanych modyfikacji, jeszcze w ramach wersji stabilnej. Zmiany zaakceptowane przez Torvaldsa po okresie niezbędnych testów są włączane do głównej gałęzi nadzorowanej przez Mortona.
Ponieważ ten model pracy sprawdza się, jak dotąd nie uznali za konieczne utworzenia gałęzi 2.7. Argumentem na rzecz takiego trybu rozwoju jest fakt, że faktyczna stabilizacja jądra dla końcowych użytkowników od dłuższego czasu odbywa się i tak w ramach poszczególnych dystrybucji.
Od wersji 2.6.11 zaczęto wydawać wersje 2.6.11.x, zawierające mniejsze poprawki. Taki tryb pracy wprowadza na nowo stabilną wersję jądra dla użytkowników niezadowolonych z eksperymentalnego charakteru głównej linii rozwojowej.
Numeracja jąder
Wersję Linuksa zapisujemy używając 3 lub 4 liczb naturalnych rozdzielonych kropką, na przykład: 2.4.17
Pierwsza liczba - 2 - to numer wydania, aktualnie 2. Następna liczba (u nas 4) oznacza serię. Gdy jest parzysta, mamy do czynienia z serią stabilną, jeśli nie - rozwojową. 17 to już numer wersji w danej serii. Dodatkowa, czwarta liczba w numerze wersji oznacza wersję lekko poprawionej, stabilnej wersji jądra.
Często używa się oznaczeń typu 2.4.18-pre6 - co oznacza szósta przymiarka do wydania 2.4.18
Oficjalną gałęzią Linuksa zarządza Linus Torvalds lub osoba przez niego wyznaczona:
2.0 - David Weinehall
2.2 - Marc-Christian Petersen (poprzednio Alan Cox)
2.4 - Marcelo Tosatti
2.6 - Andrew Morton
Często istnieją równoległe, nieoficjalne gałęzie, np. 2.4 Alana Coksa lub Andrei Arcangelego. Oznaczane są poprzez dodanie odpowiedniej końcówki, np.: -ac dla jąder Alana Coksa, -aa dla jąder Andrei itd. Należy zaznaczyć, że niektóre jądra nieoficjalne sprawują się lepiej niż te prowadzone przez samego Linusa Torvaldsa.
Oznaczenie typu 2.4.18-rc1, to tzw. wydanie kandydujące (ang. release candidate), czyli "kandydat" do bycia nową wersją stabilną, o ile nie zostaną w nim znalezione poważniejsze błędy. Gdy ich nie ma, to (w teorii) nowa wersja stabilna nie będzie się niczym różniła (oprócz samej nazwy) od powstałej na jej podstawie wersji stabilnej. Jeśli się znajdą, zostają one poprawione, w wyniku czego powstaje nowe wersja "kandydująca" i cykl się powtarza. Wersje -rc pojawiają się z reguły już po kilku wersjach -pre. Do używania "wersji kandydujących" zobowiązał się obecny opiekun linii 2.4, Marcelo Tosatti.
Odkąd zmiany w kodzie jądra, przechowywane były w repozytorium BitKeeper, na stronach projektu znaleźć można również wersje oznaczane jako np. 2.6.11-rc1-bk8. Są to tak zwane snapshoty, zawierające kod wprowadzony w przeciągu okresu który minął od wydania wersji (w tym wypadku) 2.6.11-rc1. Tworzone były automatycznie w formie patchy, które można nałożyć na kod jądra.
Oprogramowanie
Linux potrafi uruchamiać programy w formatach a.out oraz ELF. Dzięki zaznaczeniu przy kompilacji opcji Kernel support for MISC binaries może również uruchamiać inne programy np Java poprzez Maszynę wirtualną albo MS-DOS lub MS Windows poprzez emulatory.
Oprogramowanie dla Linuksa jest najczęściej otwarte i wolne. Jest rozprowadzane w formie gotowych pakietów binarnych dla danej dystrybucji (np. RPM, DEB i TGZ), lub jako źródła (np. tar.bz2, tar.gz), które należy przed użyciem skompilować.
Kwestie prawne
Linux jest wolno dostępnym systemem rozprowadzanym na licencji GNU General Public License, co oznacza, że kod źródłowy jest dostępny dla każdego i każdy może dowolnie go modyfikować wedle własnego uznania. Do gałęzi oficjalnej nie jest włączany żaden zamknięty kod, choć możliwe jest dołączanie do jądra modułów komercyjnych.
Moduły w Linuksie mają automatyczne oznaczenia licencji, tak żeby przypadkiem nie został włączony moduł na licencji niezgodnej z GPL (zgodnymi licencjami są GPL, LGPL, Licencja BSD i kilka innych).
Najpopularniejsze dystrybucje Linuxa
Slackware
Jedna z najstarszych dystrybucji Linuxa. Ma miano dystrybucji bardzo stabilnej oraz dobrze zabezpieczonej. Idealnie nadaje się na serwery jak i dla programistów i ludzi chcących poznać Linuxa "od środka". Raczej nielubiana przez początkujących użytkowników ze względu na to, ze jest bardzo wymagająca. Niektórych odstrasza juz instalator, który w tej dystrybucji jest tylko tekstowy. Oparta na dosyć popularnym formacie pakietów - TGZ. Możliwe jest także korzystanie z pakietów RPM i DEB poprzez załączony wraz z dystrybucja program.
Red Hat
Chyba najpopularniejsza dystrybucja na świecie. Idealna dla początkowego użytkownika tego systemu jak i dla zaawansowanego. Dystrybucja ta posiada bardzo prosty instalator graficzny, jest łatwa do skonfigurowania oraz obsługuje spora ilość sprzętu. Oparta na własnym formacie pakietów -RPM, z którego korzysta wiele innych dystrybucji (Mandrake, S.u.S.E). Ze względu na dużą popularność tego systemu użytkownik ma dostęp do wielu programów opartych na tym formacie. Dystrybucja ta bywa głównie wykorzystywana w komputerach biurowych i domowych, chociaż można ja także zainstalować jako serwer.
Mandrake
Uważany za "lepszego" brata Linux Red Hat, który był źródłem inspiracji twórców. Posiada ten sam format pakietów - RPM, lecz w odróżnieniu do Red Hat'a jest on znany z wielu eksperymentalnych rozwiązań. Prosty instalator graficzny, który w dodatku jest po polsku nie powinien stworzyć początkującemu użytkownikowi żadnych problemów. Optymalizowany pod układy Pentium. Ze względu na liczne luki w systemie raczej do domu niż na serwer.
Debian
Debian jest dystrybucja tworzona dla i przez ludzi na całym świecie pragnących stworzyć dystrybucje inna niż wszystkie. Jest to dystrybucja przeznaczona zarówno do użytku domowego, biurowego i na serwery. Cecha tej dystrybucji jest wielka stabilność oraz trudność w instalacji i użytkowaniu. Dystrybucja ta jest podobnie jak Slackware szczególnie unikana przez początkujących użytkowników. Oparta jest na formacie pakietów DEB. Użytkownicy mówią o tej dystrybucji, ze jest nie do zawieszenia!
SuSE
Gigantyczna, mającą około 7GB podstawowa wersja instalacyjna tworzona przez niemiecka firmę S.u.S.E jest ceniona przez użytkowników na całym święcie. Korzysta z formatu pakietów RPM. Zawiera wiele pakietów oraz bardzo bogate (jak na Linuxa) wsparcie techniczne. Instalator YAST pozwala łatwo i bezproblemowo zainstalować te dystrybucje na dysku. Udana alternatywa dla Red Hat Linux i Mandrake. Raczej do biur niż na serwer.
PLD
Polish(ed) Linux Distribution jest rodzima dystrybucja. Jest na razie w fazie testów, chociaż niektórzy mówią, ze wersja 1.0 jest juz stabilna i pełna. Wersja ta nie posiada instalatora (są pewne prowizorki, ale z tego co wiem maja błędy). Warto zainteresować się ta dystrybucja, gdyż jest ona tworzona dla polskich użytkowników i jest (będzie) całkowicie po polsku!