Linux cz.1: Czym jest Linux, struktura plików

MZ | 02-06-2017 | 17:43:16

Plan wykładu: czym jest Linux, twórca Linus Torvalds, pingwin Tux, Wolne Oprogramowanie, jądro, GNU GPL, historia i rozwój Linuxa, dystrybucje, cechy sytemu, wielozadaniowość, wielodostępność, system plików, ext, struktura katalogów: bin, etc, boot, dev, home, lib, mnt, media, proc, sbin, root, usr, tmp, var, powłoka, interpreter, bash, csh, ksh.

Czym jest Linux?

  • Linux to rodzina systemów operacyjnych opartych o udostępniane na licencji GNU GPL jądro Linux napisane przez Fina Linusa Torvaldsa w roku 1991.
  • Linux jest Wolnym Oprogramowaniem.
  • Wolność Linuksa oznacza to, że jest rozprowadzany wraz z kodem źródłowym, który możesz dowolnie zmieniać wedle swoich potrzeb.
  • Poprzez słowa dystrybucja Linuxa rozumiemy złożony w całość system operacyjny oparty o jądro Linux (czyli zestaw złożony z jądra, oprogramowania narzędziowego i użytkowego oraz instalatora).
  • Linux formalnie oznacza jądro systemu, jednak większość ludzi zwykła nazywać w ten sposób całą dystrybucję.
Linus Torvalds

Poznaj pana Tuxa

Pingwin Tux
maskotka Linuksa, funkcjonująca jako nieoficjalne logo. Jest to objedzony - żeby nie powiedzieć: tłusty ;) - oraz wiecznie uśmiechający się pingwin. Imię pochodzi najprawdopodobniej od słów: Torvalds Unix, często jest wyprowadzana również od angielskiej nazwy smokingu (tuxedo), ponieważ pingwiny wyglądają, jakby nosiły smokingi. Tux stał się symbolem społeczności użytkowników Linuksa i zwolenników wolnego oprogramowania na całym świecie.
Pingwin Tux

Jądro systemu operacyjnego

Jądro systemowe
(ang. kernel) – podstawowa część systemu operacyjnego, która jest odpowiedzialna za wszystkie jego podstawowe zadania: współpracę z rejestrami procesora, pamięcią (operacje zapisu/odczytu) oraz urządzeniami zewnętrznymi.

Z budowy jądra wynikają jego cechy, takie jak: wielozadaniowość, wielowątkowość, wielodostępność, wywłaszczalność.

Jądro systemowe

Jądro systemu Linux

Linus Torvalds nadal koordynuje wydawanie nowych wersji jądra, konsolidując poprawki napisane przez innych programistów i dodając własne zmiany. Wydania jądra z parzystym drugorzędnym numerem wersji należą do serii stabilnych wydań: 1.0.x, 1.2.x, 2.0.x, 2.2.x, 2.4.x, 2.6.x i obecna 3.0.x; wydania z nieparzystym drugorzędnym numerem wersji, np. seria 2.5.x, nazywane są rozwojowymi i nie są zalecane do celów produkcyjnych.

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.

Licencja GNU GPL

Licencja GNU GPL (General Public Licence)
zasady licencyjne określone przez konsorcjum Free Software Foundation. Jeśli ktoś wprowadza do obiegu oprogramowanie zawierające jakąkolwiek część podlegającą licencji GPL, to musi udostępnić wraz z każdą dystrybucją binarną jej postać źródłową.
Freeware
programy, których można używać i rozpowszechniać za darmo. Nie wolno ich jednak sprzedawać, ani dokonywać w nich zmian - mogą być rozpowszechniane wyłącznie w niezmienionej formie.

Jądro Linux jest rozprowadzane na licencji GNU GPL. Celem licencji GNU GPL jest zagwarantowanie użytkownikowi swobody udostępniania i zmieniania wolnego oprogramowania, a więc danie pewności, iż oprogramowanie jest wolno dostępne dla wszystkich użytkowników. System Linux nie jest oprogramowaniem będącym własnością ogółu (public domain). Prawa autorskie do poszczególnych źródeł części składowych Linuxa należą do różnych autorów poszczególnych części kodu.

GNU i Tux

Jednakże Linux jest oprogramowaniem w wolnym obiegu w tym sensie, że jego użytkownikom wolno go kopiować, zmieniać i stosować w dowolny sposób oraz rozdawać własne kopie bez ograniczeń. Ograniczenia tej licencji wynikające z zasad licencji GNUGPL nie zakazują tworzenia ani sprzedawania wyłącznie binarnych dystrybucji oprogramowania, jeżeli tylko każdy, kto otrzymuje kopie binarne, będzie miał szansę uzyskania również kodu źródłowego za rozsądną opłatą dystrybucyjną.

Nazwa GNU (ang. GNU is Not Unix) pochodzi od tzw. Projektu GNU – przedsięwzięcia mającego na celu stworzenie kompletnego, wolnego systemu operacyjnego GNU, zapoczątkowane w styczniu 1984 roku przez Richarda Stallmana (hackera o pseudonimie RMS, twórcy ruchu na rzecz wolnego oprogramowania, autora m.in. kompilatora GCC).

Richard Stallman

Trochę historii - rozwój Linuxa

Poniższa infografika przedstawia ewolucję systemu Linux ma przestrzeni lat (kliknij na obraz, aby otworzyć większą wersję w nowej karcie):

Rozwój Linuxa

Dystrybucje Linuxa

Dystrybucja
(ang. distro) cały system operacyjny oparty o jądro Linux (czyli zestaw złożony z jądra, oprogramowania narzędziowego i użytkowego oraz instalatora. Przykładowe distros ukazano poniżej (więcej na ich temat powiemy w kolejnych wykładach).
Dystrybucje Linuxa

Najważniejsze cechy systemu

Sytem powinien cechować się przede wszystkim następującymi właściwościami:

  • wielozadaniowość, czyli praca z podziałem czasu procesora pomiędzy wiele zadań,
  • wielodostępność,
  • 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.
Wielozadaniowość
cecha systemu operacyjnego umożliwiająca mu równoczesne wykonywanie więcej niż jednego procesu. Za realizację wielozadaniowości odpowiedzialne jest jądro systemu operacyjnego. Można więc jednocześnie np. kopiować pliki na pendrive'a, drukować coś na drukarce i dokonywać obliczeń w arkuszu kalkulacyjnym.
Proces systemowy
egzemplarz wykonywanego programu, posiadający własną przestrzeń adresową.
Przestrzeń adresowa
zbiór adresów pamięci, do których potencjalnie moze sie odnieść procesor.
Wielozadaniowość
Wielozadaniowość zapewniona jest między innymi przez program nazywany planistą. Planista realizuje algorytm szeregowania odpowiedzialny za ustalanie kolejności dostępu zadań do procesora. 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.
Wywłaszczanie
Polega na przerwaniu wykonywania procesu, odebraniu mu procesora i przekazaniu sterowania do planisty. W systemach bez wywłaszczania procesy musza same dbać o sprawiedliwy podział czasu procesora.
Wielodostępność
cecha umożliwiająca wielu użytkownikom pracę na jednym systemie w tym samym czasie. Każdy użytkownik ma 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.

System plików systemu Linux

System Linux potrafi obsługiwać wiele różnych systemów plików, w tym również te najbardziej popularne:

  • ext3,4,5 - domyślny system plików w większości dystrybucji systemu Linux opartych na jadrze 2.4 oraz nowszych,
  • 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.
System plików
metoda przechowywania plików i zarządzania nimi, tak by dostęp do nich i danych w nich zgromadzonych był łatwy dla użytkownika systemu.

Struktura katalogów systemu Linux

Podczas instalacji Linuxa tworzona jest struktura folderów na dysku lub dyskach zainstalowanych w komputerze.

Struktura po instalacji

Podstawowa struktura katalogów jest dość ściśle określona wg standardu FHS (z ang. Filesystem Hierarchy System). Oficjalną stronę standardu znajdziesz tutaj.

Struktura plików

Wyjaśnienie przeznaczenia katalogów

Folder główny

Folder główny oznaczony jest w Linuksie symbolem slash lub czasami słowem root, które oznacza z angielskiego korzeń. Wszystkie katalogi wywodzą się od tego folderu. To w tym miejscu jest zainstalowana cała struktura plików, katalog główny tworzy osobną partycję.

bin

Tutaj znajdują się binarne (wykonywalne) pliki najbardziej podstawowych narzędzi systemowych.

boot

Przechowywane jest w nim jądro systemu (kernel) oraz m.in. pliki bootloadera w przypadku GRUB (czyli programu rozruchowego).

dev

Znajdujące się tutaj pliki nie są faktycznie plikami na dysku, lecz odnoszą się do urządzeń - są to punkty dostępu do urządzeń systemowych, np. napędów CD/DVD.

etc

Zawiera pliki konfiguracyjne, ustawienia systemowe

home

Przechowywane są w nim katalogi domowe poszczególnych użytkowników. Ponadto jest on przeznaczony na zapisywanie danych, np. dokumentów, obrazków, muzyki i wszelkich plików których używa dany user.

lib

Zawiera biblioteki (ang. libraries) dla programów z katalogów /bin i /sbin.

lost+found

Z uwagi na to, że katalog główny w Linuksie musi być odrębną partycją, w katalogu głównym znajduje się również folder, w którym system plików umieszcza zagubione pliki (np. z powodu błędów na dysku).

mnt

Punkt montowania (ang. mount point) innych niż natywny systemów plików.

media

Punkty montowań dla nośników wymienialnych (ang. media; np. CD-ROMów) - katalog pojawił się w FHS v2.3.

opt

Zawiera statycznie kompilowane aplikacje.

proc

Wirtualny system plików proc informujący o stanie systemu i poszczególnych procesów, w większości pliki tekstowe.

root

Katalog domowy użytkownika root.

sbin

Pliki wykonywalne do zarządzania systemem (ang. system binaries).

tmp

Przechowywane sa w nim pliki tymczasowe (ang. temporary files), wykorzystywane przez różne aplikacje.

usr

Przechowywane są w nim pliki dokumentacji systemu oraz większość programów użytkownika.

var

Pliki często ulegające zmianom (ang. variable files), takie jak: logi, bazy danych, tymczasowe pliki e-mail.

Interpreter poleceń, powłoka systemowa

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 interpreter, inaczej nazywany powłoką systemu operacyjnego (shell).

Interpreter poleceń = powłoka systemowa
Program pośredniczący we współpracy użytkownika z jądrem systemu, ma postać wiersza poleceń. 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.

Powłoka znana z systemu MS-DOS

command.com
domyślna powłoka (interpreter poleceń) systemu MS-DOS. Tłumaczy polecenia wpisane po znaku zachęty (ang. prompt - zwykle w postaci C:\ lub C>) na komendy wykonywalne przez system MS-DOS

Po wpisaniu przez użytkownika dowolnego ciągu znaków i naciśnięciu przycisku enter powłoka interpretuje wpisany ciąg znaków, sprawdzając czy jest to polecenie wewnętrzne (np. CLS, CHOICE, ECHO, PROMPT, IF, FOR) albo polecenie uruchomienia programu zewnętrznego (np. FORMAT.COM, EDIT.COM).

Schemat komunikacji w systemie

Komunikacja w systemie

Zasada działania powłoki

Zasada działania powłoki

Powłoki linuxowe

BASH
Powłoka systemowa napisana dla projektu GNU. Program jest rozprowadzany na licencji GNU GPL. BASH to jedna z najpopularniejszych powłok systemowych. Jest domyślną powłoką w większości dystrybucji systemu GNU/Linux oraz w systemie Mac OS X od wersji 10.3, istnieją także wersje dla większości systemów uniksowych. Nazwa jest akronimem od Bourne-Again Shell (angielska gra słów: fonetycznie brzmi tak samo, jak born again shell, czyli odrodzona powłoka). Wywodzi się od powłoki Bourne'a sh, która była jedną z pierwszych i najważniejszych powłok systemu UNIX.
CSH
(od ang. C shell) jest jedną z systemowych powłok uniksowych. Została stworzona przez Billa Joya dla systemu BSD. Nazwa C shell jest grą słów: dosłownie oznacza powłokę [o składni] języka C, fonetycznie da się to jednak odczytać sea shell, czyli muszelka :) Powłoka ta pochodzi od powłoki SH. Powłoka C shell wniosła wiele ulepszeń w stosunku do SH, takich jak m.in. aliasy i historia komend. Niestety jej możliwości skryptowe pozostawiają wiele do życzenia.
KSH
(ang. Korn shell) to powłoka unixowa stworzona przez Davida Korna z AT&T Bell Laboratories w połowie lat osiemdziesiątych. Powłoka KSH jest całkowicie kompatybilna wstecz z powłoką SH, zawiera także wiele elementów z powłoki CSH – takich jak historia wpisanych komend. KSH zawiera wbudowany system obliczania wyrażeń arytmetycznych oraz zaawansowane funkcje skryptów podobne do tych używanych w bardziej zaawansowanych językach programowania, takich jak AWK, Perl. Korn Shell jest sprzedawany w postaci kodu źródłowego oraz plików binarnych – przez AT&T i Novell oraz przez inne firmy poza granicami USA. PDKSH jest implementacją KSH na licencji public domain (czyli "dla dobra publicznego").

Źródła

W przygotowaniu niniejszego wykładu pomogły mi między innymi następujące źródła:

  • Systemy operacyjne i sieci komputerowe. Cz. 1. WSIP. Krzysztof Pytel, Sylwia Osetek
  • Systemy operacyjne i sieci komputerowe. Cz. 2. WSIP. Krzysztof Pytel, Sylwia Osetek

Zobacz także

Daj się zaskoczyć! Poniżej wylosowałem dla Ciebie pięć wpisów z całego archiwum bloga:

Komentarze

Disqus
Facebook
Pasja informatyki