8,453 pregleda

Kako funkcionira Linux

6

linux-laptopPrije nego uopće krenete u GNU/Linux vode poželjno je da se informirate što je Linux, odakle dolazi te da pokušate shvatiti njegovu osnovnu filozofiju.

Ukoliko nikada prije niste radili s Linux sustavima sigurno ste poprilično zbunjeni. Sigurno vas buni zašto ima toliko Linuxa, ali i pojmovi poput distribucija, LiveCD ili pak GNU. Prvi koraci znaju biti poprilično teški i zbunjujući. Upravo radi toga sam i odlučio napraviti ovaj kratak pregled, kako bih početnicima olakšao snalaženje u njihovim prvim koracima.

Za početak, Linuxa nema puno Linux je samo jedan. Termin Linux se odnosi na kernel, dok je operacijski sustav baziran na Linux kernelu distribucija. Osnovni dijelovi Linux sustava su:

• kernel
• GNU paketi
• grafičko sučelje
• korisničke aplikacije

Svaka od ove četiri grane ima svoju specifičnu zadaću u sustavu.

Pogled u kernel

Srce svakog sustava je njegov kernel. Kernel upravlja hardverom i softverom, dodjeljuje hardver kad je potrebno te izvršava softver kad zatreba. Ukoliko ste barem malo pratili svijet računala zasigurno ste načuli ime Linus Torvalds. Ako je odgovor potvrdan, onda ste sigurno upoznati i s pričom kako je nastao prvi kernel. Uostalom, kako smo je nedavno i sami ispričali u sklopu povijesnog razvoja Unixa nećemo se ponavljati već idemo odmah na sam kernel.
Dakle kernel. Kernel je primarno odgovoran za četiri osnovne funkcije

• software memory management
• software program management
• hardware management
• filesystem management

pa krenimo pogledati svaku od njih.

Software memory management

Jedna od glavnih zadaća kernela operacijskog sustava je upravljanje memorijom. Ne samo da upravlja fizičkom memorijom na računalu već po potrebi može stvoriti određenu količinu virtualne memorije, odnosno memorije koja zapravo ne postoji. Tu virtualnu memoriju stvara koristeći posebnu particiju na disku zvanu swap. Kernel mijenja sadržaj virtualne memorije između swap particije i fizičke memorije varajući tako sistem stvarajući prividnu sliku većeg kapaciteta memorije nego što je zapravo kapacitet stvarne fizičke memorije. Lokacije memorije grupirane su u blokove nazvane stranice (eng. pages). Kernel locira svaku stranicu memorije bilo u swapu bilo u fizičkoj memoriji. Nakon toga kernel postavlja tabelu koja pokazuje koje stranice se nalaze u fizičkoj a koje u virtualnoj memoriji. Kernel pazi koje se stranice koriste, te automatski stranice koje se ne koriste kopira u swap prostor. Ukoliko neki program želi ili treba koristiti stranicu koja je bila swapana kernel prvo za nju napravi mjesta u fizičkoj memoriji. Ovaj proces treba vremena, te može usporiti trenutno aktivan proces prilikom izvršavanja. Sam proces swapanja traje koliko je i sustav aktivan.
Trenutno stanje virtualne memorije možete saznati pogledavši u /proc/meminfo sa naredbom cat /proc/meminfo.

Software program management

Linux trenutno aktivan program naziva procesom. Proces se može vrtjeti sprijeda ostavljajući izlaz na ekranu ili se pak može vrtjeti u pozadini, iza scene. Linux kernel kontrolira kako sustav upravlja s trenutno aktivnim procesima. Prvo kernel stvara proces nazvan init process koji kasnije pokreće sve ostale procese. Kod pokretanja sustava kernel prvo pokrene init proces i smješta ga u virtualnu memoriju. Kako kernel pokreće svaki sljedeći proces, dodjeljuje mu unikatno mjesto u virtualnoj memoriji za spremanje podataka i koda kojim taj proces raspolaže. Neke Linux implementacije koriste tabelu procesa koji se automatski podižu kod boota. Kod većine distribucija ta tabela je smještena pod /etc/inittabs . Linux sustav koristi init sistem koji koristi run levele. Run level se koristi kako bi init procesu odredio da koristi samo određene vrste procesa kako su definirani unutar /etc/inittabs datoteci. Na run level 1 pokreću se samo osnovni sistemski procesi zajedno s jednim console terminal procesom. To je tzv. Single user mod. Najčešće se koristi za hitno spašavanje sistema kad je nešto potrgano.

Init level standardan za rad je run level 3. U njemu se podiže mnoštvo aplikacija poput mrežnih aplikacija. Također popularan run level je run level 5. U njemu sistem pokreće X window manager te korisniku omogućuje logiranje i korištenje grafičkog sučelja.

Linux kontrolira sveukupnu sistemsku funkcionalnost kontroliravši init run levele. Promjenom run levela iz 3 u 5 sustav prelazi iz konzole u moderno grafičko sučelje na kakvog je većina korisnika navikla.

Hardware management

Još jedna odgovornost kernela je upravljanje hardwareom. Za svaki uređaj za kojega se želi da komunicira s Linuxom mora u sam kernel biti unesen driver. Driver omogućuje kernelu da prenese podatke s uređaja i na uređaj ponašajući se pritom kao posrednikom između uređaja i aplikacije. Postoje dvije metode umetanja drivera u kernel:

• driver ukompiliran u kernel
• driver moduli dodani u kernel

Nekade jedini način za ugradnju drivera bilo rekompiliranje čitavog kernela. Svaki puta kad bi dodali novi uređaj i driver trebali bi rekompilirati kernel. Kako je Linux podržavao sve više hardwarea taj proces je postajao sve naporniji, teži i duži. No na svu sreću developeri su pronašli bolju metodu za ubacivanje drivera u kernel bez potrebe za rekompiliranjem. Osmislili su koncept modula kojim su omogućili upravo ubacivanje drivera u kernel bez potrebe za rekompiliranjem no isto tako i mogućnost vađenja drivera nakon što bi uređaj prestao raditi.

Linux sistem identificira hardware kao posebne datoteke zvane device files koji se dijele na tri bitne skupine:

  1. character
  2.  block
  3.  network

Character skupina je za hardware koji može obrađivati podatke samo po jedan znak (eng. character) u određenm vremenu. Ovdje spada većina modema i terminala. Block grupa se odnosi na hardware koji može podatke obrađivati u više blokova u određenom vremenu dok je network grupa rezervirana za uređaje koji mogu primati i slati podatke. U network grupu spadaju mrežne kartice. Za svaki uređaj na računalu Linux stvara posebne datoteke zvane nodes kroz koje se odvija sva komunikacija s uređajem. Svaka nodes datoteka ima dodijeljen unikatan par brojeva preko kojih ih kernel identificira. Upareni brojevi se sastoje od velike i male znamenke. Slični uređaji se dodjeljuju pod istu veliku znamenku, a mala znamenka služi za identifikaciju određenog uređaja unutar skupine. Različite distribucije upravljaju s uređajima dodjeljujući im različita imena.

Filesystem management

Za razliku od ostalih sustava Linux kernel podržava više različitih datotečnih sistema. Potrebno je samo u kernelu uključiti sve sisteme na kojima će vaša distribucija raditi i s njima ga kompajlirati.
Linux može čitati i pisati po sustavima namijenjenim za druge operacijske sustave kao NTFS ili pak FAT16/32 te svim tipičnim Unix datotečnim sustavima. Kernel s njima komunicira preko virtualnog datotečnog sustava (VFS) koji pruža informacije o svim datotečnim sustavima na računalu.

GNU paketi

GNU projekt je primarno osmišljen i dizajniran za Unix administratore kako bi im pružio sučelje što sličnije Unixovom. Fokus na ovo je rezultirao portanjem mnogih aplikacija sa samog Unixa. Osnovan paket tih aplikacija za Linux se naziva core bundle. GNU core sadržava pakete za:

• rad s datotekama
• manipulaciju teksta
• za proces management

Svaka od ove tri skupine GNU paketa pruža mnoštvo aplikacija nezamjenjivih sa svakodnevan rad i održavanje računala.

Shell

Shell? Što je shell? Shell je poseban interaktivan alat koji omogućuje pokretanje programa, obradu teksta, manipulaciju datotekama, manipulaciju s datotečnim sustavima, upravljanje procesima, nadzor sustava i puno drugog. Prisjetite se nekog Hollywoodskog filma gdje super hacker (znate onaj debeli prištavi lik zatrpan kutijama pizze i limenka piva u oblaku cigaretna dima za manje od 30 sekunda upada u bilo koji sustav) sjedi pred računalom. Vidjet ćete da uopće ne dodiruje miša. E jedino taj dio oko filmskih hackera i stručnjaka nije pretjerivanje. Suprotno uvrijeđenom mišljenju kojeg su ljudima usadile velike kompanije shell nije alat iz prošlosti koji je na Unixoidnim sustavima ostao kao podsjetnik gerijatriji za neka bolja vremena. Ne shell je vrlo moćan alat i manevarski najbolji i najbrži način za stvarno nešto i uraditi. Nažalost, većina današnjih korisnika je upoznata samo s GUI sučeljem i mišem. U ovome članku nemam namjeru nikoga uvjeravati suprotno niti raditi shell scripting tutorial, već je namjera novopridošlog korisnika upoznati s osnovnim pojmovima kao i konceptom GNU/Linux sustava. Oni koje zanima tutorial mogu ga pronaći na sljedećoj poveznici.

Shell sadrži set internih naredba dostupnih za rad na Linux sustavu. Različiti shellovi imaju različite karakteristike no osnovan princip rada je isti. Osim internih naredba shell također omogućuje pokretanje bilo koje aplikacije. Dovoljno je unijeti ime aplikacije koju želite pokrenuti, pritisnuti enter te shell informaciju prosljeđuje kernelu koji je izvršava i pokreće program.

Linux korisnicima na raspolaganju je nekoliko različitih shellova. Svaki ima svoje karakteristike. Neki su bolji za skriptiranje, neki pak za process management. Nativna ljuska je bash shell (Bourn again shell). Osim spomenutog Bash shella postoje još i zsh, ash, ksh, tcsh, jsh, rc, rsh, es, wish, zoidberg shell, busybox (namijenjen embed uređajima ) i u zadnje vrijeme sve popularniji ipython no naravno i mnogi drugi manje popularni i poznati. Kad se utaborite svakako preporučujem eksperimentiranje s različitim shellovima dok ne nađete onoga koji vam savršeno odgovara. U mom slučaju je to zsh za usera i tcsh za root.

Linux desktop

1991. u samim počecima svima nam voljenog GNU/Linuxa nije bilo GUI sučelja, već samo CLI sučelje preko kojeg se izvršavao sav rad. Iako je grafičko korisničko sučelje postojalo i ranije, tek s rastom popularnosti Microsoft Windows operacijskog sustava korisnici su željeli nešto više od standardne konzole. Ovu ideju je podupiralo i sve više Linux developera, te je rođen Linux desktop.
Linux je poznat po tome što može stvari odraditi na više od jednog načina što je najizraženije u svijetu grafičkih sučelja. Kako je kolega Mario već obradio najpopularnija sučelja ja ću ih preskočiti (odličan članak kolega, čekam nastavak) pa ću se radije usredotočiti na njihov razvoj.

Postoje samo dvije komponente koje određuju vaše vizualno iskustvo s bilo koji operacijskim sustavom na svijetu. Grafička kartica u vašem računalu i vaš monitor. Kako bi sustav znao kako prikazati fancy grafiku na monitoru treba znati kako razgovarati s grafičkom karticom i monitorom. X windows software je paket programa koji rade direktno na komunikaciji grafička kartica – monitor. GNU/Linux nije jedini koji koristi X windows system. Koriste ga svi unixoidni operacijski sustavi. U samome Linux svijetu postoje dva paketa koja ga podržavaju. Stariji Xfree86 koji je kao što to i samo ime sugerira slobodna inačica X-a otvorena koda te relativno novi i popularniji X.org. Ima još i nedavno predstavljen Wayland, no kako trenutno Wayland stabilno radi jedino s GNU Hurd kernelom ne ću se previše zadržavati na njemu (nova šansa za hurd?).

Načelno oba sustava rade na isti način. Sjede na grafičkoj kartici, kontroliraju kako je Linux koristi, te signal od Linuxa šalju na monitor. Kako bi se taj proces odvijao ispravno, potrebno je prilikom instalacije X window system prilagoditi vašem računalu na kojem će raditi. Mnoge moderne distribucije nude to automatski već kod same instalacije. Sam X window system pruža samo osnovno grafičko sučelje. Ono nema nikakav meni te ne omogućava pokretanje programa drugačijeg od onog u konzoli. Za pokretanje aplikacije na kakvo su korisnici navikli potreban je desktop manager. Odličan pregleda desktop managera je, ponavljam opet, nedavno napravio kolega Mario te još jednom apeliram da ga pročitate.

Linux Distribucije

Kad smo upoznali osnovne komponente potrebne za rad Linuxa sigurno se pitate kako sve to ujediniti za rad. No na svu sreću dobri ljudi su to već napravili za nas. Ta njihova dobrota se naziva Linux distribucija, točnije GNU/Linux distribucija. Postoji mnoštvo distribucija koje zadovoljavaju apsolutno svaku i svačiju potrebu. Postoje i specijalizirane distribucije za sistem administratore, audio-video geekove, gamere, kućne korisnike, urede, knjigovodstvene urede,…
No ipak, dijele se samo u tri osnovne skupine:

  1. core distribucije
  2. specijalizirane distribucije
  3. live distribucije

U ranim danima distribucije su izlazile na setovima disketa te je trebalo oko 20 disketa za instalaciju jedne distribucije, no danas na svu sreću distribucije dolaze kao CD ili pak DVD slike.

Core distribucije

Distribucije ove skupine u pravilu korisnicima daju kernel, c library, gnu compiler, jedno desktop sučelje i mnoštvo raznih aplikacija. Zapravo specifičnost ove skupine je što su te distribucije neovisne i samostalne. Distribucije ove skupine su:

• Slackware
• openSUSE
• Debian
• RedHat/Fedora
• Mandriva
• Gentoo
• Arch

Specijalizirane distribucije

U ovu skupinu spadaju distribucije koje donose alate za određenu specifičnu namjenu. Neke od ovih distribucija spadaju načinom rada u sljedeću skupinu, među live cd distribucije.
Distribucije ove kategorije su:

• Pentoo
• Gparted
• CentOS
• Xandros
• dyne:bolic
• PuppyLinux

i mnoge druge. Distribucije ove kategorije su zapravo najbrojnije. Nažalost mnogi novi korisnici pokušavaju neke od distribucija ove kategorije zloupotrijebiti, posebice Backtrack, u ilegalne svrhe pritom misleći da su veliki hackeri (ako želite vidjeti tko i što su veliki hackeri preporučujem dokumentarac Revolution OS).

Live CD distribucije

Ove distribucije su relativno novi fenomen. One omogućuju da vidite i isprobate GNU/Linux sustav i bez da ga fizički instalirate da hard disk svog računala. Kako radi ograničene veličine ne mogu imati cjelokupan Linux sustav, kad isprobate barem jednu od njih bit ćete iznenađeni koliko mnogo aplikacije se zapravo gore i nalazi. Kako mnoštvo njih nudi i mogućnost instalacije, ukoliko vam se svidi ili pak želite dublje istražiti GNU/Linux možete bez problema izvršiti instalaciju koja je prijateljski nastrojena prema početnicima. Kako se ovaj fenomen proširio, a za sve je zaslužan Knoppix, mnoge specijalizirane distribucije su se prebacile na ovaj način distribucije i koriste sve njegove prednosti. Distribucije ove kategorije su:

• Knoppix
• Ubuntu
Linux Mint
• PCLinuxOS
• Sabayon
• Vector Linux

Završna riječ

Cilj ovog članka je bio upoznati korisnike sa samim pojmom Linux, odakle je došao i kako taj famozan Linux funkcionira na pristupačan i jednostavan način. U daljnjim člancima će se samo nadovezivati pa tako već u sljedećem odlazimo dublje u shell i napuštamo grafičko sučelje.

Autor: Velimir B.

VN:F [1.9.22_1171]
Rating: 5.0/5 (6 votes cast)
Kako funkcionira Linux, 5.0 out of 5 based on 6 ratings

Povezani članci:

Obljetnica: Dvadeset godi...
Objavljen Linux kernel 3....
Naučite raditi u naredben...
Kompiliranje kernela – ka...
Objavljen je Linux kernel...

6 Responses

  1. max360se kaže:

    Super clanak. Jako poucno, s nestrapljnjem iscekujem nastava!

  2. Nema se šta dodati.
    Odlično.

  3. denahv kaže:

    Odlican clanak!
    Dobio sam zelju za ponovnom instalacijom i konfiguracijom Archa :D

  4. Bojan kaže:

    Vrlo poučan članak, samo kroz cijeli članak se provlači tipfeler management. Managment je ispravno.

  5. Marijan (PunkBastard) kaže:

    Nemam što drugo reći osim Hvala

Ostavi komentar

© 2014 Linux Za Sve. | Impressum | Sadržaj je licenciran pod CC-SA-3.0 ako nije drugačije naznačeno.
Proudly designed by Theme Junkie.