SYSTEM OPERACYJNY LINUX 

1. Linux i jego dystrybucja

 
Linux jest jednym z przykładów wolnego i otwartego oprogramowania (FLOSS): jego kod źródłowy może być dowolnie wykorzystywany, modyfikowany i rozpowszechniany. 
Cechą szczególną wyróżniającą dystrybucje Linuksa spośród innych systemów operacyjnych, a w szczególności systemów Microsoft Windows, jest sposób instalowania nowych aplikacji. Dystrybucje posiadają centralne repozytorium z pakietami reprezentującymi poszczególne programy zbudowane i przygotowane przez twórców dystrybucji pod kątem konkretnego systemu. Pakiet, oprócz binariów oraz wszystkich niezbędnych plików, zawiera dodatkowe informacje opisujące zawartość archiwum, wersję programu, zależności oraz dodatkowe skrypty niezbędne do poprawnej instalacji. Pakietami zarządza specjalny program zwany menedżerem pakietów, który potrafi zlokalizować najnowszą wersję danego pakietu w dostępnych repozytoriach, zainstalować program oraz znaleźć wszystkie niezbędne zależności. Liczba pakietów w typowej dystrybucji waha się od kilkuset do kilkunastu tysięcy. 
 
Dystrybucje Linuksa można klasyfikować według różnych kryteriów:
  • komercyjne lub niekomercyjne,
  • grupa odbiorców: dla użytkowników domowych, dla użytkowników biznesowych,
  • obsługiwane platformy sprzętowe: wieloplatformowość lub optymalizacja pod kątem wybranych platform,
  • przeznaczenie maszyn: serwery, komputery biurkowe, laptopy itd.
  • ogólnego przeznaczenia lub wyspecjalizowane w wybranych zastosowaniach,
  • wybór priorytetów: bezpieczeństwo, używalność, przenośność itd.
 
Dystrybucja Twórca Pierwsze wydanie
Debian Ian Murdock 1993
Slackware Patrick Volkerding 1993
Mandriva Linux Mandriva 1998
Arch Linux Judd Vinet 2002
openSUSE Społeczność, SUSE 2003
PCLinuxOS Texstar, Bill Reynolds 2003
CentOS/Red Hat Enterprise Linux Społeczność/Red Hat Inc. 2003
Ubuntu Canonical Ltd. 2004
Fedora Społeczność, Red Hat, Inc. 2005
Linux Mint Clement Lefebvre 2006
 

2. Wady i zalety Linuxa.

Zalety:
  • system jest darmowy
  • posiada otwarty kod źródłowy
  • bardziej zaawansowanym użytkownikom pozwala na  personalizowanie systemu i jego wszystkich parametrów
  • oferuje przebogatą ofertę darmowych programów, które funkcjonalnością odpowiadają bardzo drogim aplikacjom komercyjnym 
  • Linux oferuje bezpłatny odpowiednik Microsoft Office – OpenOffice 
  • duża stabilność i bezpieczeństwo danych 
  • bardzo mała ilość istniejących wirusów i programów szkodliwych 
 
Wady:
  • wymaga podstawowej wiedzy i wprawy w programowaniu i pisaniu skryptów 
  • brak ujednoliconej pomocy technicznej 
  • brak firmowych sterowników do sprzętu
  • najpopularniejsze gry komputerowe rzadko posiadają oficjalne linuxowe wersje 
 

3. Zarządzanie dyskami i partycjami.

Organizacja systemu plików pod Linuksem nieco różni się od tego co znamy z systemów MS Windows. Brak tutaj znanej wszystkim organizacji C:\ ; D:\ itd. W zamian tego mamy do czynienia z magicznym znakiem  /   , który to oznacza katalog "korzeń", do którego przypisane są odpowiednie katalogi, pliki, urządzenia zawnętrzne.
Jeżeli mamy w systemie kilka partycji jesteśmy w stanie przyporządkować je według własnych potrzeb jako osobny katalog w drzewie, a mianowicie, chcąc jedną z nich przeznaczyć jako katalog domowy umieszczamy ją w katalogu  /home
Podobnie z urządzeniami zewnętrznymi, jak napędy DVD czy pamięci USB. Według standardu FHS (Filesystem Hierarchy Standard), powinny być one zamontowane w katalogu /media. Np. /media/dvd0, /media/usb0, etc. 
W starszych dystrybucjach, często urządzenia te montowane są bezpośrednio w root, np. /dvd, /usb. Często też tworzone są linki symboliczne (skróty) w obu miejscach. 
Inaczej również wygląda sprawa jeśli chodzi o lokalizacje instalowanych w systemie programów. Ze względu na modułowość systemu (aplikacje korzystają zazwyczaj z wielu innych aplikacji – pakietów), programy nie instalują się w odseparowanych katalogach (a’la windowsowe Program Files). Zamiast tego, odpowiednie pliki umiejszane są w odpowiednich miejscach w systemie, tak aby mogły być użyte przez inne aplikacje (głównie chodzi tu o użyte w pakiecie biblioteki, ale również o pliki binarne). Zamiast Program Files mamy więc katalogi bin na pliki wykonywalne, lib na biblioteki, doc na dokumentację, i wiele innych, odpowiednio do zastosowania.
Dokładny opis systemu plików sprecyzowany jest w spceyfikacji FHS.
 
                                          Windows                                     Linux
Root C:\ /
Katalog domowy C:\Documents and settings\USER\Moje dokumenty /home/USER (np. /home/zdzisiek)
Pliki konfiguracyjne Rejestry, dostępne przez polecenie regedit /etc
Pliki systemowe C:\Windows Pliki wykonywalne: /bin, /sbin
Biblioteki systemowe: /lib
Zainstalowane aplikacje C:\Program Files Pliki wykonywalne: /usr/bin, /usr/local/bin, etc
Biblioteki: /usr/lib, /usr/local/lib, /usr/share/lib, etc
Dokumentacja: /usr/share/doc/, /usr/doc, etc
CDROM D:\ (lub kolejny wirtualny dysk) /media/cdrom (alternatywnie /mnt/cdrom lub /cdrom)
Dyskietka A:\ /media/fd0 (alternatywnie /mnt/fd0 lub /floppy)

4. Budowa systemu Linuxa

Struktura systemu Linux jest często przedstawiana jest za pomocą modelu warstwowego. Jądro systemu Linux zawiera takie elementy, jak program szeregujący oraz programy obsługi urządzeń (ang. device drivers), które umożliwiaja dostęp do sprzętu i urządzeń zewnętrznych. W jądrze realizowane jest także zarządzanie pamięcią. Procesy w jądrze różnią sie od procesów wykonywanych w warstwie je otaczającej. Zwyczajne procesy użytkowników, którymi zarządza proces szeregujący, mogą być przerwane w dowolnym momencie, a każdy z nich ma przydzielony pewien obszar pamięci. Jeżeli proces użytkownika próbuje dostać sie do nie swojego obszaru pamięci, to zostaje przerwany z komunikatem-  segmentation fault (bład segmentacji). Bieaca zawartosc pamieci procesu moe zostac w takim przypadku zapisana do pliku o nazwie core (zrzut pamieci, ang. core dump). Plik ten może przydac sie programiście przy szukaniu błedów.
 

5. Geneza Linuxa

Historia Linuksa rozpoczęła się w 1991 roku, kiedy to fiński programista, Linus Torvalds poinformował o hobbystycznym tworzeniu przez siebie niedużego, wolnego systemu operacyjnego. Opublikowane przez twórcę systemu informacje, znajdujące się na internetowej liście dyskusyjnej, w dużej mierze zainteresowały potencjalnych użytkowników, dlatego też niedługo później nad rozwojem tego systemu pracowała już spora grupa ludzi. Fakt ten znacznie przyspieszył rozwój systemu, który w niedługim czasie został nazwany Linuxem. Wraz ze wzrostem jego popularności, rosła również liczba osób wspierających jego rozwój, który to proces trwa nieustannie do dzisiaj, a liczba użytkowników jego różnych dystrybucji szacowana jest obecnie na kilka milionów. Nazwa Linux stanowi kombinację słów "Linus" (imię autora systemu) oraz "Unix". 
 
Wersje systemu Linux:
  • 1.0 (14.03.1994) - było pierwszym stabilnym jądrem Linuksa, w którym znajdowała się (wzorowana na systemie BSD) implementacja internetowych protokołów; został do niego również dołączony nowy system plików ext, likwidujący wiele utrudnień z systemu plików Minixa
  •  1.2 (06.03.1995) - ta wersja systemu obsługiwała już 4 następujące platformy: 
  1.  Alpha
  2. Sparc
  3. MIPS
  4.  i386

oraz umożliwiała korzystanie z nowej szyny PCI; została również zwiększona liczba obsługiwanych urządzeń

  • 2.0 (08.06.1996) - ta wersja jądra została wzbogacona o obsługę wielu procesorów (w trybie SMP), brakowało w niej jednak możliwości obsługi wielobieżności; zwiększono tu również poziom wydajności stosu TCP/IP oraz wprowadzono możliwość obsługiwania: protokołów Appletalk, amatorskich sieci radiowych AX.25 i standardu ISDN; umożliwiono tutaj również montowanie sieciowych systemów plików Netware i SMB
  • 2.2 (25.01.1999) - w wersji tej umożliwiono obsługę następnych architektur sprzętowych - IBM S/390, ARM czy Sparc64 oraz przeprojektowano realizację protokołu TCP/IP, wprowadzono również możliwość zaawansowanego routingu
  • 2.4 (04.01.2001) - dołożono obsługę procesorów IBM S/390 (wersja 64 - bitowa) i Intel Itanium, HP PA-RISC, CRIS oraz Hitachi SH, zostały również usunięte następujące ograniczenia pochodzące z poprzednich wersji Linuxa: większy niż 2 GB rozmiar plików oraz pełną 64-bitowość; nastąpiło udoskonalenie obsługi USB i szybkich dysków SCSI i ATA66 oraz dodanie obsługi złączy Firewire i kamer cyfrowych jak również możliwość korzystania z XFS i DevFS. Wersja ta również zawierała prosty serwer HTTP (kHTTPd) i obsługę LVM (polegająca na łączeniu kilku twardych dysków w jednej wirtualnej partycji)
  • 2.6 (18.12.2003) - została wprowadzona obsługa architektur H8/300, IBM POWER5, v850 i x86-64, a liczba wszystkich obsługiwanych architektur wzrosła tutaj aż do 22; została dołożona obsługa protokołu IPSec i został zmieniony scheduler (przez Ingo Molnara); prace prowadzone nad tym jądrem prowadziły do zwiększenia skalowalności oraz szybkości systemu, jak również zmniejszenia opóźnień; dodano także obsługę wspólnego API dla algorytmów kryptograficznych oraz obsługę wielobieżności, znacznie zostało również ułatwione tworzenie nowych modułów jądra
Podczas gdy Torvalds zajmuje się najnowszymi wersjami rozwojowymi, starszymi "stabilnymi" opiekują się inni programiści. 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.
Maskotką i nieoficjalnym logo Linuksa jest uśmiechnięty pingwin Tux.

6. Najważniejsze cechy systemu:

  • wielozadaniowośćmożna uruchamiać wiele programów naraz, innymi słowy to praca z podziałem czasu procesora na wiele zadań ( jednoczesne kopiowanie i oglądanie materiału video)
  • wielodostępowość - umozliwia pracę kilku użytkownikom na jednym systemie, każdy z użytkowników posiada osobne wydzielone/przydzielone zasoby, np. pamięć, czas procesora, miejsce na dysku, do których nikt oprócz niego nie ma dostępu. Użytkownik jest niezależny i odizolowany od innych
  • wieloprzetwarzalność/wieloprzetwarzanie
  • wielowątkowość - jądro obsługuje wiele niezależnych wątków w pojedynczej przestrzeni przydzielonej procesowi pamięci 
  • obsługa wielu systemu plików
  • obsługa różnych protokołów sieciowych
  • mozliwość obsługi różnych formatów plików wykonalnych

7. Wywłaszczanie

Wywłaszczanie to proces polegający na przerwaniu wykonywania procesu, odebraniu mu procesora i przekazaniu sterowania do planisty. Linux może wykorzystywać wiele procesorów. Gdy system ma mniej dostępnych procesorów niż zadań do wykonania, czas działania procesora jest dzielony pomiędzy wszystkie zadania. W systemach bez wywłaszczania procesy musza same dbać o sprawiedliwy podział czasu procesora.
Planista realizuje algorytm szeregowania odpowiedzialny za ustalanie kolejności dostępu zadań do procesora.
 

8. Systemy plików obsługiwane przez Linuxa

  • ext3,4,5 - domyślny system plików w większości dystrybucji systemu Linux opartych na jadrze 2.4 oraz nowszych. W starszych dystrybucjach można spotkać wersję ext2
  • FAT - system plików używany w środowisku DOS/Windows
  • NTFS - wersja systemu plików dla Windows (niektóre starsze dystrybucje mogą mieć problemy, zwłaszcza z obsługą zapisu)
  • ISO9660 - stosowny na dyskach CD/DVD
 

9. Struktura katalogów Linuxa

 

10. Co to jest interpretator poleceń

Jest to program pośredniczący we współpracy użytkownika z jądrem systemu, ma postać wiersza poleceń Nie można pracować bezpośrednio z podstawową częścią systemu linuksowego, jaką jest jego jądro (kernel) - niezbędny jest do tego program pośredniczący, czyli właśnie interpretator, inaczej nazywany powłoką systemu operacyjnego (shell). Jądro systemu zawiera wszelkie podprogramy potrzebne do przeprowadzania operacji wejścia i wyjścia, zarządzania plikami itp. Powłoka pozwala korzystać z tych podprogramów za pomocą wiersza poleceń. Poza tym, powłoki obsługują również język programowania. Programy napisane w języku powłoki nazywane są zwykle skryptami lub skryptami powłoki.