OpenSolutions.rs

Osnove linuxa PDF Štampa El. pošta
Ocena korisnika: / 2
LošeNajbolje 
  
sreda, 01 april 2009 11:25

Izbegavaću previše teoretisanja i potrudiću se da stavim samo onoliko teorije koliko je potrebno da bi se uspešno moglo razumeti rad na linux-u, za običnog kućnog korisnika.

Da krenemo od osnove. Šta je linux? Generalno pod Linuxom se smatra operativni sistem, ali ako bi baš išli u detalje linux je kernel (jezgro operativnog sistema). Da bi taj kernel imao bilo kakvu interakciju sa okolinom potrebno je da se na njega postavi neko spoljno okruženje, najčešće nazvano shell (ljuska). Shelovi mogu biti različiti, ali generalno se dele na tekstualne i grafičke. U zavisnosti od okruženja koje donose, zajedno sa aplikacijama dobijamo skup programa koje rade na linuxu, dobijamo pojam koji se zove distribucija linuxa (ustvari ona osnova od koje smo krenuli). Imamo različite distribucije, ali je za sve zajedno da rade na linux kernelu. Ima puno linux distribucija, ali neke najpopularnije su Ubuntu, SuSe, Fedora, PCLinuxOS/Mandriva, Debian, Slackware, Gentoo...

Uređenje fajl sistema i particionisanje

Mnogo često ljudi postavljaju pitanje šta je potrebno da bi instalirali po prvi put linux. Ne tako retko se može čuti pitanje da li može da se instalira preko Windowsa. Trebalo bi odmah u startu razjasniti da linux najbolje radi na svom fajl sistemu, tako da NTFS, FAT, FAT32 (standardni Windows sistemi) su nepožoljni kao osnova Linux sistema. To ne znači da se kasnije ne može koristiti, ali sam operativni sistem je najbolje smestiti na njemu prilagođeno okruženje. Trenutno su poznati kao linux fajl sistemi ext2, ext3, ext4 (koji je trenutno u exprerimentalnoj fazi, ali za sada se pokasuje kao odličan) i tu je RAISER FS, koji je u nekim stvarima mnogo bolji od ext2/3 sistema, ali trenutno nisam siguran u kojoj je fazi razvoja, s' obzirom da je njegov tvorac dobro zatarabljen iz nekih drugih razloga u 4 zida. Dakle moja preporuka je ext3 fs, eventualno ext4 (neću objašnjavati mnogo razlike jer bi me to daleko odvela od osnova). Ovde treba pomenuti još jedan FS, koji je sastavni deo linuxa, ali koristi se za druge stvari. SWAP je pojam koji je poznat svima onima koji su radili i u Windowsu i označavaju jedan virtulani deo memorije smešten na hard disku. Na linuxu može kao i na windowsu da se kreira swap fajl, ali ustaljena je praksa da se kreira čitava jedna particija koja će imati svoj SWAP FS.
Sledeće sa čime se novi korisnik susreće na linuxu su particije. U Windowsu se uvek nalazi C particija, a u zavisnosti od uređaja, podele na njima, možemo imati D i E ... Kod linuxa je to malo drugojačije. Moglo bi se najlakše reći da u linuxu imamo uređaje (malo kasnije ću ovo objasniti), čije putanje montiramo na stablo. Stablo je nešto karakteristično za sve unixolike sisteme, odnosno sastoje se od korena stabla (eng. root, a označava se sa / ) na kojem se nalaze direktorijumi (najčešće se označava kao tree - stablo). Koliko god delovalo nelogično, vremenom kada se povežu neke stvari uređenje linuxa je veoma logično i lagano.
Dakle ovo je jedan tipičan primer linux stabla, sa oznakama šta se u tim direktorijumima nalaze:
/ Koren stabla iz koga se izvlače svi ostali direktorijumi
/bin Binarni fajlovi koji se najčešće koriste u radu
/boot Fajlovi koji se koriste za podizanje (bootovanje) linuxa
/dev Ne bi bilo pogrešno da se kaže da se ovde nalaze driveri uređaja
/etc Konfiguracijski fajlovi
/home Prostor za čuvanje profila i podataka korisnika računara
/lib Biblioteke koje su osnovne/zajedničke za većinu programa
/media lokacija na koju se najčešće “kače” prenosivi diskovi (flopy, cd, dvd..)
/mnt lokacija za “kačenje” fixnih diskova
/opt najčešće se koristi za neke ne standardne instalacije
/proc Dinamički direktorijumi gde se beleže svi pokrenuti procesi (konstatno se menja)
/root (vodite računa ovo nije koren direktorijuma) lokacija gde se beleži profil root korisnika
/sbin binarni fajlovi koji najčešže se koriste prilikom startovanja i administracije sistema
/srv Servisi
/tmp Privremeni fajlovi
/usr Otprilike ekvivalent Program Filesu, sa nekim specifičnostima tipa da se ovde nalaze i ne standardne biblioteke, i uputstva, primeri, i sami programi...
/var Ovde se nalaze razne promenjive sistema, biblioteke, spooler za štampu, mail, web...
Naravno ovo je defaulno uređenje, koje nije ista na svim sistemima. Recimo na SuSe-u će izgredati tačno ovako, na Fedori neće biti npr. direktorijuma /srv . Vodite računa. Ovo nisu zasebne particije nego to je stablo koje može a ne mora da bude na zasebnoj particiji. Došlo je vreme i ovo da se malo bolje objasni. Rekao sam da se driveri smeštaju u /dev direktorijum. Npr. imamo sata hard disk. On će se “identifikovati” u /dev folderu kao /dev/sda1, gde je sd oznaka da je u pitanju sata disk, a je iznaka da je na primarnoj grani, 1 prva particija. Ovdite računa da se MBR (Master Boot Record) na linuxu najčešnje nalazi u “zaglavlju” prve particije i on se može obeležiti kao /dev/sda0. Isto tako CD/DVD uređaji nemaju particije, tako da oni se isto obelećavaju kao npr /dev/sdb ili /dev/sdb0 (u zavisnosti od distribucije). Ove particije mogu zameniti bilo koji deo stabla, odnosno možemo recimo kao osnovu stabla (/) definisati /dev/sda1, /boot kao /dev/sda2, a recimo /home kao /dev/sdb1. Linux će i dalje videti sve kao jednu celinu, ali će biti na različitim particijama, čak i hardovima. Sve što nije definisano kao zasebna particija, nalazi se na onoj particiji/hardu na kome se nalazi i root particija (ovo je veoma bitno zbog definisanja veličine ove particije). O veličinama particija bi pisao u odeljku instalacije.
Sve osnovne konfiguracije sistema, se nalaze u direktorijumu /etc koji pak može imati svoje pod direktorijume. Nazivi i lokacije konfiguracijskih fajlova može varirati u zavisnosti od distribucije koja se koristi, servera/demona/programa koji se koriste i od podešavanje istih. Koliko god ovo zvučalo razbijeno i čudno, ali vremenom se navikne, odnosno ako se zna šta se traži relativno će se lako pronaći.

Prava i korisnici

Sve što je u unixu/linuxu se može definisati ovako: Ili je proces ili je fajl. Svi fajlovi mogu čitati, pisati po njima ili pokrenuti njihovo izvršavanje u zavisnosti od prava koje im je dodeljeno. Međutim da bi objasnio pojam prava moram da dodirnem malo uređenje korisnika. Naime, svaki korisnik u linuxu je definisan parametrima: ime korisnika, šifra korisnika, i lokacija home direktorijuma, eventualno grupi kojoj korinik pripada (u nekim distribucijama ova grupa se automatski kreira, ili se korisnik automatski pridružuje nekoj već postojećoj grupi) i podaci tipa koje je okruženje defaultno, podaci o trajnju, aktivnosti... Neki podaci su manje bitni neki više. Grupe daju određeni nivo ovlašćenja korisnika, tako npr. korisnik ako pripada apache grupi, ako je web server definisan da ova gupa kontroliše isti moći će sve što je predviđeno toj grupi. Više ljudi u istoj grupi će recimo moći bez bilo kakvih problema da rade na istom projektu, dok recimo svi koji ne pripadaju toj gurpi će eventualno moći da čitaju samo isti. Prava u linuxu se definišu za 3 grupe prava:

1.pravo koje ima sam korisnik nad datim fajlom/procesom

2.pravo koje ima grupa kojoj korisnik pripada
3.pravo koje imaju svi ostali

Sve jedno koje od ove grupe prava definišemo one se sastoje od R-read, W-write,X - execute odnosno
-RWXRWXR--
prvi minus označava tip u ovom slučaju je fajl, ako na tom mestu stoj d onda je direktorijum, ako je l onda je link... Iza tog minusa stoji RWX odnosno to označava da korinik ima pravo da čita, piše i izvršava fajl. Iza ta tri simbola stoji još jedno RWX što opet označava da grupa kojoj korinik pripada isto ima pravo read,write,execute. Ita toga stoje naredna 3 simbola : R-- . Ovo pak označava da svi ostali koji nisu definisani sa predhodna 2 pravila imaju pravo da čitaju (r), a na mestima gde treba da se vide prava za pisanje i izvršavanje stoji - što označava da nemaju prava za odgovarajuća polja (pisanje i izvršavanje). Naravno ovo se sve može zakomplikovati sa nečim što se zovu ACL (Access control list), ali to je neka druga priča više namenjena poslovnoj primeni nego kućnim korisnicima.
Jedini korisnik koji uvek ima prava da radi šta god hoće na sistemu je root. Ovo je super korisnik, ekvivalent administratoru na Windows sistemima. Ovaj (root) nalog treba veoma restriktivno korisnititi, jer pogrešna akcija može proizvesti katastrofične posledice. U principu nikada se nemojte logovati kao root korinik, nego kada vam je potrebno neko pravo root korisnika vi ga uvek možete “pozvati” i odraditi posao kao on.
Generalno gledano, linux je od svog nastanka multiuser-multi tasking sistem, što bi u nekom slobodnom prevodu zančilo da više korisnika može da ga koristi (ali ne neogranien broj). Svaki od usera dobija pravo nad određenim količinama resursa i ako ovi "zahtevi za resursima" nisu veliki, jedan računar može može da simultano obradi i po nekoliko stotina čak i hiljada korisnika.

Svaki linux podržava veišestruko simultano logovanje korisnika na jednu mašinu, preko nečega što se zovu virtualne konzole. Generalno svaki linux ima 6 virtualnih tekstualnih konzola i 1 grafičku (ako je podignut x server). Ovo može i nemora biti u zavisnosti kako su kreatori distribucija to zamislili (negde se tekstualne konzole namerno "zaključavaju" ). Ovim tekstualnim konzolama se može pristupiti preko funkcijskih tastera i tastera ALT, odnosno ALT+F1 vodi u prvu tekstualnu konzolu, ALT+F2 u drugu i tako dalje do F6. Jedino ako se nalazimo u grafičkom okruženju ovom shortcutu moramo dodati i CTRL taster tako da se iz grafike na VT (virtualni terminal) 1 prelazi kombinacijom CTRL+ALT+F1. Povratak u grafički iz bilo kog VTa se radi sa ALT+F7. Recimo može se napraviti još jedno grafičko okruženje na VT8 (F8 taster) tako što se samo jednostavno u konzoli ukuca:
$startx -- :1 vt8
Nedavno sam pričao o root-u ili super useru. Mi se možemo kao super user ulogovati na više načina:
1. Direktno tako što ćemo se identifikovati kao user:root i ukucati šifru. Već sam pominjao da je ovo veoma opasno i ako se loguješ kao root najbolje je to raditi na kratak period. Većina sistema ima neka ograničenja za root logovanje, tako da recimo ne može se u grafičkom okruženju ulogovati kao root, nego samo iz konzole. Isto tako je zanimljiva pojava u Ubuntu serijalu i njegovim derivatima gde je root po defaultu "disableovan", i kao tako ne može se odmah koristiti.
2. Drugi način logovanja kao root je da u toku rada zatreba nam neka operacija ili skup operacija koje samo super korisnik može da odradi. Tada pristupamo naredbi Switch user, odnosno skraćeno su root . Naravno na ovaj način možemo tražiti bilo kog korisnika, odnosno ako ste ulogovani kao tonac, a želite da uzmete ovlašćenja arhimeda, onda će te samo ukucati su arhimed . Naravno da će u tom slučaju sistem tražiti arhimedov, odnosno u prvom slučaju root password da bi vam dozvolio ovu operaciju. Ovo se može napraviti i u grafičkom okruženju, da pojedine programe startujete kao drugi user, tako što npr. u grafičkom KDE okruženju u command linuju ubacimo kdesu ili jednostavno čekiramo u Advanced opcijama start program as i ukucamo ime korisnika.
3. Treći, je možda i najbolji način. Pomenuo sam da je logovanje kao root veoma opasno. Druga stvar je ako ima više korisnika na vašem računaru i želite da ograničite izvršavanje "opasnih" komandi. Ima jedna lepa deviza koju se ja pridržavam, kad god mogu, a to je "root lozinku znam samo ja". Elem, ovo se može odraditi preko naredbe super user do, ili skraćeno sudo, gde pre naredbe koja se želi izvšiti kao root se ukuca sudo. U zavisnosti kako je sistem podešen on će tražiti ili vaš password ili password root-a. Ovde je dobro što vi grupi korisnika možete odrediti nad kojim naredbama tačno ima prava i time obezbediti da vaš korisnik, ili korisnička grupa nesmetano radi na sistemu, a da pri tome ne zna koji je root password.


Paket manageri/tipovi paketa - programa


Na neku linux distribuciju, posle instalacije, je moguće dodavati pakete sa novim programima ili upgradeovati jednostavno već postojeće pakete sa novijim verzijama programa. Ovo se može raditi ručno, odnosno većina distribucija već poseduje programe koji vam isto ovo omogućavaju da radite iz grafičkog okruženja. Naravno, uvek je bolje/lakše iz grafičkog okruženja ovo raditi, ako nizbočega drugog zato što većina novih package managera vode računa o među zavisnosti (da bi instalirao ovaj program, mora se instalirati još to,to,to i to), a na kraju krajeva i zbog toga što vi ne morate znati šta koji program radi, nego je dovoljno pročitati descriptions za taj program i sve će vam se objasniti. Pojedini menadžeri ne samo da instaliraju programe nego i svlače programe sa interneta samostalno. Ovi grafički programi "skidaju" svoje pakete sa "repozitorijuma", skraćeno repoa, koji se pak nalaze u repolistama. Ima ih više, ali generalno za najbolji (trenutno) važi synaptic koji koristi ubuntu kao osnovu, odnosno pclinux os. Zašto sam baš naveo ova dva upravo ću da razjasnim ali preko ručne instalacije.
Kada se ručno instaliraju paketi mora se o mnogo toga voditi računa. Prva stvar o čemu treba da vodite računa jeste o tome da li je taj program predviđen za tu distribuciju. Uglavnom ovo se rešava tako što se već u samom nazivu programa to napiše npr:
2vcard-0.5.2-ubuntu-hardy.deb
Prvo što se ovde može zapaziti je da višestruko zadavanje tačaka u nazivu nekog programa ne predstavlja problem, šta više dosta često se primenjuje. Za razliku od windowsa, extenzija (zadnja 3 slova iza tačke) nije presuđujuća, odnosno može i ne mora da postoji. Pre bi se moglo reći da u unixolikim sistemima extenzija predstavlja samo "konvenciju" radi lakšeg raspoznavanja šta se nalazi u tom fajlu. Ono što možemo videti iz ovog naziva je da se program zove 2vcard, da je o verziji 0.5.2 i da je pravljen za ubuntu, konkretno verziju hardy, i naravno ovo potvđuje i extenzija deb. Ono našta ću se prvo skoncentrisati je 0.5.2 verzija, koja je dosta česta pojava u unixolikim sistemima. 0 na prvom mestu najčešće (naravno ne i pod obavezno) označava da je program još u testnoj fazi, dok sve ostale brojke iza samo označavaju koja je verzija testne faze. Uglavnom svi programi kada izađu iz tkz. bete dobijaju 1 na prvom mestu, pa 2 itd. Već preko ovih oznaka možete videti da li je program koji posedujete na vašem računaru noviji ili stariji u odnosu na predhodni. Druga stvar koja se zapazi je ova reč ubuntu u ovom slučaju -hardy. Naime, ova oznaka pokazuje da je paket striktno pravljen za ubuntu i tačno verziju hardy, odnosno verovatno će raditi i na novijim verzijama istog, ali da isto tako taj paket mogu koristiti i sve one distribucije koje za osnovu koriste ovaj ili noviji ubuntu. Dosta česta pojava je da pojedine distribucije koriste kao osnovu neku već postojeću, a u zadnje vreme pogotovu iz Ubuntua se stvorila čitava serija distribucija koji koriste jednostavnost ubuntua, dobru zajednicu i veliki broj paketa koju ta zajednica pruža. Npr. Mint, Comfusion, Ubuntu studio, Pioneer, Cp6linux... Sve one za osnovu koriste ubuntu tako da je ne tako retko u spisku repozitorijuma za tu distribuciju su uvršteni i direktno repozitorijumi za ubuntu. U nivu samog fajla može i ne mora stojati ovo ubuntu, ali ono što stoji na zadnjem mestu deb pokazuje koji package manager je korišten.
Elem, ubuntu je debian derivat, odnosno kao osnova za razvoj istog je korištena jedan od "najvećih" i "najstarijih" distribucija koja se zove debian (inače 3 najstarije su Slackware, RedHat i Debian - ne slučajno ovde navedene). Debijan kao svoju karakterističnost između ostalog ima i nešto što se zove Debian package manager (dpkg). Čemu služe ovi package manageri? Da bi ovo objasnio krenuću od samog principa gpl-a, a to je da svaki program koji se pod ovom licencom izdaje mora da ima objavljen i svoj source kod. Vi na bilo kom linuxu (pardon linux distribuciji) možete instalirati bilo koji program iz source koda,ali... Ili bolje rečeno ALI. Valjano kompajliranje programa podrazumeva izuzetno dobro vladanje raznim sitnicama koje služe za bolju optimizaciju koda, kao drugo, instalacija iz source koda često traje i jako drugo (čini mi se da kompletan KDE paket se kompajlira i instalira nekih 2-3 sata, ako se dobro sećam iz svoje avanture sa Gentoo-om), i tako instalirani paketi su "teški" (kasnije ćete videti da i nisu baš tako teški) za nadogradnju... Upravo kreatori prvih distribucija, da bi olakšali ovaj problem su kreirali svoje package managere gde oni lepo optimizuju za odrećenu platformu (i586, i686,amd64..), pripreme ti za instalaciju i ti bukvalno sa jednom naredbom instaliraš ovaj paket za ne duže od 1 minute. Prilikom ovakve instalacije, svi paketi koje instaliraš se beleže u jednu mini bazu, tako da veoma lako može se doći do podatke koji je program instaliran na tvom računaru. Kada dođe do novije verzije istog fajla, pošto se koristi ista konvencija za imenovanje novog (jer distributer ga je napravio), sistem će sam "prepoznati" da u bazi ima stariji paket i updateovati ga na noviji.
Sećate se one konstatacije koje su 3 prve distribucije? E svaka od njih je kreirala svoj package manager, odnosno extenzije koje se pojavljuju su:
Debian - deb
RedHat -rpm
Slackware - tgz
Source kodovi nekog programa se najčešće samo spakuju u tar arhivu (tar je ne kompresovana arhiva koja bukvalno pokupi strukturu direktorijuma i fajlova i zapakuje u 1 fajl), odnosno u kompresovanoj varijanti tar.gz (gzip arhiva) tar.bz ili novija tar.bz2 (bzip arhiva) ili jednostavno zip, arj ili neka druga poznata arhiva (sve se ovo može raspakovati pod linuxom, ali se ređe viđaju).
Svaki od ovih paketa kada se kreiraju sadrže informacije tipa: Informacije o paketu (kada je kreiran, ko ga je kreirao), inforamcije o fajlu (šta se sve njime instalira i gde), dependecies (od kojih paketa zavisi), provision (koje pakete omogućava).
Većina distrobucija razvijenih od ovih početnih, zadržale su i njen package manager, šta više uglavnom paketi koji su predviđeni za matičnu distribuciju mogu se koristiti i u nekom derivatu, sa više ili manje uspešnosti. Npr. Debijan paketi se mogu uglavnom koristiti u ubuntu-u, Rpm u Centos-u... Ali treba voditi računa na onu reč uglavnom. Recimo, SuSe je nastao iz Slackwarea (još pamtim kada sam instalirao na ovaj pakete tgz formata), ali u jednom koraku su rešili da pređu na rpm. Do nedavno Suse i pored toga što je koristio rpm, više je bio slackware, nego redhat. Isto tako vi kada instalirate paket ne znači da će sve biti kao na matičnoj distribuciji. Recimo instalirate paket pod RedHat-om on će vam čak izbaciti i ikonicu u meniju, ali ako to isto želite da imate na drugoj distribuciji, morate tačno da znate u kom folderu se nalaze date ikonice za tu distribuciju, a u kome se nalaze za redhat. Po nekad ni ovo nije dosta, jer pojedini paketi koriste specifične biblioteke, tako da i pored toga što će vam se "instalirati" vi iste nećete moći da koristite. Drugi problem se odnosi na programe koji su pravljeni za drugi package manager. Bez obzira što vam sada većina distribucija nudi naredbu za instaliranje iz drugog package managera, jednostavno što će vam se dogoditi je da ako tako instalirate, vaš sistem neće videti u svojoj bazi da je program instaliran, jer svaki program koristi drugačiju bazu. Ovo je jedan problem koji muči linux od samog nastanka i pokrenuto je mnogo alternativa, projekata koje bi sve ovo uniformisali i učinili instalaciju programa na bilo koji linux jednostavnim, ali ... Vreme će pokazati.
U svakom slučaju ako želite da prebacijete iz jednog package managera u drugi mogao bih vam preporučiti da koristite alien program, koji ima upravo tu namenu, čime ćete recimo deb, pakete pretvoriti u rpm i obrnuto. Ovo nije možda svršeno, ali recimo pokazalo se da sa ručnom instalacijom OpenOfficea (to ipak nije bezveze program) savršeno radi. U nekim slučajevima je ipak bolje krenuti sve od nule. Onosno instalirati iz source koda. Neka najjednostavnija varijanta instalacije je :
1. ./configure
2. make
3. make install
Međutim. Moja topla preporuka je da pogledate (pogotovu ako imate neku stariju verziju programa) kako je instaliran, koje su konvencije primenjivane na tim starijim verzijama i umesto 3 koraka, make install koristiti naredbu chkinstall ili checkinstall koja u principu radi pretvaranje ponuđenog u odgovarajući package manager (deb,rpm,tgz) i tek onda se instalira. Ovim dobijate da je program regularno zabeležen i u vašoj bazi za package manager, tako da ga uvek kasnije možete upgradeovati ili skinuti ako vam se ne sviđa, odnosno pošto kreira odgovarajući instalacioni fajl recimo ooffice.rpm, možete sačuvati taj rpm paket i kasnije ga instalirati gde god hoćete.
Ispada da sam zaboravio i jednu grupu source based distribucija, nastale iz Gentoo-a, kao osnovnog predstavnika iste. Gentoo je karakterističan po tome što "svlači" souce pakete, koji si definisani tkz. ebuild -ovia i koji se prema definisanim parametrima sistema kompajliraju i zatim instaliraju na vaš računar. Ovim dobijate maksimalno prilagođenu distribuciju vašoj mašini, odnosno vašim potrebama, što kudi kamo ubrzva rad na vašem računaru, ali to ubrzanje se kreće reda nekoliko procenata u sadašnjim uslovima, što nije mogo, ali ni malo. Možda glavna prednost gentoa, je maksimalno iskorišćenje resursa koje imate, tako da ako ste dobro izdefinisali flagove koje da koristi, vaš sistem će raditi maksimalno brzo, stabilno, koristeći sve resurse sa kojima raspolaže (recimo prilagođen vašem tipu, odnosno brzini procesora). Ovakve distribucije se izuzetno dobro ponašaju iz predhodno navedenih razloga i na slabijim računarima, ali za njihovu instalaciju i kasnije održavanje je potrebno odlično poznavanje računara, pogotovu linuxa.

 

 

 

 

 

Poslednje ažurirano ( utorak, 14 april 2009 18:58 )
 

Dodaj komentar


Sigurnosni kod
Osveži

Glavni meni

Open škola

Forum

J!Analytics

Baner
© 2010 OpenSolutions.rs. Sva prava zadržana.
Joomla! je Slobodan softver objavljen pod GNU/GPL Licencom.