Professional Documents
Culture Documents
Wstęp
Linux został opracowany przez młodego fińskiego studenta Linusa Torvaldsa i początkowo nie miał to być
„pełny” system operacyjny. W 1991 roku kompletny kod źródłowy Linuxa pojawił się po raz pierwszy na
największym fińskim serwerze FTP. Zaprezentowano go jako rozpowszechniany bezpłatnie klon Minixa –
dydaktycznego systemu operacyjnego napisanego przez Andrew Tannenbauma do zajęć z systemów
operacyjnych (nazwa Linux to akronim od Linux Is Not UniX - Linux nie jest Unixem). Załączony kompilator
GNU (gcc) dawał możliwość kompilacji małych programów w języku C, pozwalając na przeniesienie
uniksowego interpretatora poleceń. W miarę upływu czasu coraz więcej użytkowników zaczęło przysyłać swoje
uwagi i sugestie do Finlandii i w ten sposób doskonalono system Linuxa. To Internet okazał się najszybszym
narzędziem rozwoju tego systemu operacyjnego. Projekt rozwijał się i rozwija do dzisiaj dzięki entuzjastom
komunikującym się przez sieć. Stale dostarczane są ulepszenia i poprawki do istniejącego oprogramowania.
Linus Torvalds nadal zajmuje się rozwojem jądra systemu, a kilkudziesięciu innych programistów ( grup) zajęło
się innymi częściami systemu (np. kompilator GNU C, biblioteki C dla Linuxa, dokumentacja dla użytkowników
czy system X Windows
Linuxa dotyczy licencja GPL ( General Public Licence) fundacji FSF (Free Software Fundation), która ma na
celu rozwijanie wysokiej jakości wolnego oprogramowania dostępnego dla wszystkich. Licencja ta oznacza, że
kopiowanie i dystrybucja oprogramowania wraz z kodami źródłowymi, nie są ograniczone, ale zachowywane są
prawa autorskie. Jeżeli programista wykorzystuje tego typu oprogramowanie jako podstawę własnych
produktów, to jego dzieło musi być także dostępne na warunkach określonych w GPL.
Projekt GNU (Gnu's Not Unix - GNU nie jest Unixem) fundacji FSF ma na celu opracowanie kompletnego,
bezpiecznego i powszechnie dostępnego systemu operacyjnego, który w dużym stopniu ma być zgodny z
Unixem. W ramach tego projektu stworzono wiele programów użytkowych i narzędzi Unixa, a ponieważ Linux
( czytaj jądro systemu ) spełnia cel i warunki GNU to całość stanowi kompletny system uniksowy.
Dystrybucje Linuxa
Dystrybucja Linuxa to jądro (właściwy Linux) wraz z dostępnymi powłokami, kompilatorami, bibliotekami
systemowymi, środowiskiem graficznym oraz niezliczoną liczbą programów narzędziowych i użytkowych
dostarczanych jako skompilowane pakiety. Dystrybucja dostarcza zwykle mechanizmy instalacji, usuwania i
aktualizacji pojedynczych i całych grup pakietów wraz z interfejsem ich konfiguracji. Najbardziej znane
dystrybucje to:
Fedora/Centos – następca RedHat Linux rozwijana przez Fedora Project/Centos Project, nadająca się zarówno
na serwer jak i komputer domowy. Stawia na innowacyjność rozwiązań dlatego regularnie nowe wydania
pojawiają się co 6 miesięcy. Dystrybucja oparta jest o pakiety .rpm a do zarządzania nimi służy dedykowany
program yum
Debian – dystrybucja charakteryzująca się ogromną liczbą dostępnych pakietów, dobra zarówno na serwer jak i
komputer domowy. Ma opinię systemu bardzo stabilnego, a rozprowadzana jest w oparciu o pakiety .deb
1
Charakterystyka systemu Linux
wielodostęp,
wielozadaniowość, czyli praca z podziałem czasu procesora pomiędzy wiele
zadań,
wieloprzetwarzanie, czyli praca wieloprocesorowa,
obsługa różnych typów systemów plików,
obsługa różnych protokołów sieciowych,
obsługa różnych formatów plików wykonywalnych,
wykorzystanie współdzielonych bibliotek.
Proces autoryzacji
System Linux po uruchomieniu nie jest bezpośrednio dostępny dla użytkowników, tylko
oczekuje na ich zgłoszenia. Zgłaszając się do systemu, użytkownik podaje swoją nazwę i
hasło. System dokonuje autoryzacji poprzez:
sprawdzenie, czy użytkownik o podanej nazwie jest zarejestrowany w systemie w pliku
/etc/passwd,
zakodowanie podanego hasła,
porównanie z zakodowanym hasłem przechowywanym przez system w pliku
/etc/shadow.
W wyniku pomyślnej autoryzacji system uruchamia sesję użytkownika, udostępniając jego
konto. Proces zgłaszania i autoryzacji użytkownika określa się jako logowanie do systemu.
2
Praca wielodostępna
Podstawę pracy takiego systemu tworzy przypisanie dla każdego użytkownika unikatowego
identyfikatora (user identifications ID ), który należy podać systemowi wraz z przypisanym
hasłem ( ang. password) zgodnie z procedurą zwaną logowaniem. Na podstawie
identyfikatora oraz związanymi z nim uprawnieniami system zarządza dostępem do plików i
zasobów. W systemie Linux każdy użytkownik otrzymuje swój własny identyfikator oraz
identyfikator grupy, do której należy. Użytkownik może być przypisany do wielu grup.
W systemie wielodostępnym takim jak Linux istnieje jeden super-użytkownik ( administrator
systemu) o nazwie root i numerycznym identyfikatorze 0. Ma on dostęp do wszystkich zasobów
(plików i urządzeń), może dodawać nowych i usuwać istniejących użytkowników w systemie.
Wielozadaniowość
Przez wielozadaniowość należy rozumieć, że system potrafi wykonywać miej lub bardziej
równolegle wiele procesów ( zadań). W systemie Linux procesem może być program
uruchamiany przez użytkownika lub program działający zawsze w tle – demon. Istnieje
możliwość komunikacji miedzy procesami. Ponieważ zwykle mamy do czynienia z maszynami
pracującymi z jednym procesorem, musi on być dzielony pomiędzy poszczególne procesy.
Zadanie to wykonuje program szeregujący zlecający procesorowi obsługę kolejnych
procesów we właściwych odcinkach czasu.
Warstwa programów obsługi urządzeń komunikuje się bezpośrednio ze sprzętem komputerowym, więc musi
uwzględniać specyficzne cechy tego sprzętu. Programy obsługi muszą być napisane w języku programowania
niskiego poziomu oddzielnie dla każdej platformy sprzętowej. Cała reszta systemu została zaimplementowana w
języku C.
3
Jądra systemów Unix i Linux są monolityczne. Chociaż można w nich wyróżnić funkcjonalne części składowe,
to stanowią one jeden program i korzystają ze wspólnych struktur danych. Takie rozwiązanie zapewnia
największą efektywność systemu. Do podstawowych zadań jądra należy:
zarządzanie procesami,
zarządzanie pamięcią,
zarządzanie plikami,
zarządzanie urządzeniami wejścia-wyjścia.
Zarządzanie pamięcią
Linux wykorzystuje mechanizm zarządzania pamięcią wirtualną, czyli udostępnia więcej
pamięci operacyjnej niż ma w rzeczywistości. Wymaga to wydzielenia na twardym dysku tzw.
partycji wymiany (swap partition ). Jądro zapisuje zawartość nieużywanych bloków pamięci
fizycznej na dysku, umożliwiając tym samym wykorzystanie ich do innych celów. Jeżeli
oryginalna zawartość jest potrzebna następuje proces odwrotny. Wszystko to odbywa się
niewidocznie dla użytkownika; działające programy również nie dostrzegają różnicy.
Ponieważ czas dostępu do dysku twardego jest wielokrotnie dłuższy ( kilka ms) niż do pamięci
operacyjnej ( kilka ns), szybkość działania zmniejsza się.
System plików
Obecny układ katalogów jest wynikiem ewolucji i łączenia elementów składowych różnych dystrybucji
systemu. Znajomość przeznaczenia każdego z katalogów pozwala także zachować bardzo potrzebny porządek na
dyskach systemowych. Wykorzystanie poszczególnych katalogów jest następujące:
/bin - tu zapisane są wszystkie podstawowe programy, bez których niemożliwy jest start i późniejsza
praca systemu ( np. bash)
/boot - zawiera jądro systemu oraz pliki niezbędne do poprawnego uruchomienia i pracy systemu
/dev - w systemach uniksowych katalog ten zawiera pliki reprezentujące poszczególne komponenty
sprzętowe naszej maszyny (modem, napęd dyskietek, twarde dyski itp.)
/etc - tu są zapisane pliki konfiguracyjne wszystkich zainstalowanych w systemie programów
/home - tu tworzone są katalogi domowe użytkowników. Katalog ten może zostać umieszczony na
osobnej, dedykowanej partycji. Pozwala to dokonywać znaczących modyfikacji w systemie (łącznie z
całkowitą reinstalacją) bez narażania użytkowników na stratę ich danych.
/lib - gromadzi biblioteki współdzielone przez zainstalowane w systemie aplikacje
/lost+found - tu zapisywane są pliki i katalogi odtworzone podczas naprawiania systemu plików.
/mnt –w tym katalogu proponuje się podmontowywać zewnętrzne systemy plików (pendrive, napęd
CD-ROM). Jest to jedynie sugestia unifikująca metodologię korzystania z nośników zewnętrznych, bo
system pozwala na podmontowanie tych urządzeń w dowolnym punkcie struktury katalogów.
5
/opt - odpowiednik Program Files z Windows. Tu zwykle instalowane są poszczególne komercyjne
programy, a także inne aplikacje (StarOffice itd.)
/proc - podczas pracy system tworzy tu pliki umożliwiające kontrolę jego działania. Znajdują się tam
pliki, w których zapisane są informacje o działaniu systemu, np. interrupts - wykorzystywane
przerwania, ioports - porty, uptime - obciążenie systemu, net/ - wszystko, co jest związane z siecią i
kartą sieciową
/root - katalog domowy administratora systemu.
/sbin - zawiera programy umożliwiające administratorowi zarządzanie pracą systemu. Zwykli
użytkownicy nie mają potrzeby korzystania z zapisanych tu zbiorów.
/tmp - katalog przeznaczony do tworzenia i przechowywania przez programy plików tymczasowych
(Kosz z Windows)
/usr - bardzo duży objętościowo katalog zawierający pliki i biblioteki tworzące środowisko X
Window i inne podstawowe aplikacje uniksowe, (podkatalog bin). Tutaj też zapisane są pliki
kompilatora, programy sieciowe (telnet, ftp, irc, mail, tin, lynx), demony sieciowe: serwer httpd, ftpd,
telnetd, inetd, identd, sendmail (podkatalog sbin). Pliki źródłowe jądra systemu zapisane są w
podkatalogu src
/var - tutaj przechowywane są pliki dzienników systemowych (podkatalog log), w których zapisywane
są poszczególne zdarzenia oraz pliki blokujące (lock). Tu także trafia poczta przychodząca do
użytkowników naszego systemu oraz tworzone są kolejki: poczty wychodzącej (mqueue) i
drukowania (spool).
Charakterystyczną cechą systemu uniksowego są prawa dostępu do plików i katalogów – każdy z nich
przyporządkowany jest użytkownikowi oraz grupie, do której należy.
Każdy plik utworzony w systemie Linux posiada oprócz podstawowych informacji typu nazwa, data
utworzenia pliku, także identyfikator użytkownika, który go utworzył oraz identyfikator jego grupy.
Aby chronić pliki w systemie plików przed niepożądanym dostępem, dla każdego z nich zapisywane
są oddzielne prawa dostępu.
W systemie Linux operator (root) systemu ogranicza użytkownikom prawa dostępu do plików i
katalogów ustawiając określone uprawnienia. Istnieją trzy podstawowe rodzaje uprawnień:
r - prawo do odczytu ( umożliwia użytkownikom czytanie określonego pliku)
w – prawo do zapisu ( umożliwia użytkownikom zmianę zawartości pliku)
x – prawo do wykonania ( umożliwia użytkownikom wykonanie danego pliku)
Urządzenia
W systemie Linux oprócz danych i wykonywalnych programów, również katalogi i fizyczne
elementy komputera „traktowane” są jak pliki. Oznacza to, że istnieją pliki reprezentujące
klawiaturę, konsolę, drukarkę, CD-ROM, dysk twardy czy napęd dyskietek. Te specjalne pliki
to urządzenia w systemie (ang. devices) i znajdują się w katalogu /dev.
Przykładowa lista plików specjalnych
/dev/ttyN konsola wirtualna
/dev/hda pierwszy dysk IDE
/dev/hda1 pierwsza partycja pierwszego dysku IDE
/dev/sda pierwszy dysk SCSI lub sata
/dev/sda1 pierwsza partycja pierwszego dysku sata
/dev/sdb1 pierwsza partycja drugiego dysku sata
/dev/lp0 pierwszy port drukarki (LPT1)
/dev/null urządzenie puste ( całe wyjście znika)
/dev/fd0 pierwsza stacja dyskietek