SOU s SOŠ Informatiky a spojů, Čichnova 23, Brno
ZÁVĚREČNÁ PRÁCE LINUX
Lukáš Tenora, DTT4 Obsah : 1) 2) 3) 4)
Historie Základní příkazy Adresářová struktura Hardware a. Zvukové systémy b. Graifické karty a X Window System c. Podpora čipových sad 5) Jádro (Kernel) 6) Souborový systém
Odkazy : http://www.root.cz http://www.kernel.org http://www.abclinuxu.cz http://www.mandrake.cz http://www.kde.org
2004 – 2005
1 . Historie Linuxu Autorem operačního systému Linux je Linus Torvalds. Původní verzi Linuxu napsal asi před deseti lety. Od té doby však byla tato verze mnohými dalšími programátory značně upravena a zdokonalena.Na vývoji Linuxu se nijak nepodílely společnosti, které vytvořily původní UNIXové systémy. Linux byl kompletně celý znovu vytvořen. Existují verze pro procesory Intel, ale například i pro procesory Alfa a další. (viz. Kernel)Vývoj operačního systému Linux je naprosto jedinečný. Při běžné tvorbě software se postupuje tak, že se vytyčí cíle, a předem určená skupina programátorů (zaměstnanci firmy) se těmto cílům snaží přiblížit. Tento systém má tu výhodu, že dopředu odhadneme množství potřebného času, náklady a koncovou formu software. Velkou nevýhodou je však uzavřená skupina programátorů a nejistota, zda byly cíle vytýčeny správně. Další problém je při hledání chyb, kdy menší skupina programátorů často přepisuje celé úseky programu, čímž se tvorba software prodlužuje a prodražuje. Pan Torvalds však přišel s jednou velice zajímavou myšlenkou. Rozhodl se, že neponechá vývoj Linuxu jen na svých bedrech, ale podělí se o starosti s širokou programátorskou veřejností. Tak vlastně došlo k velice zajímavému vývoji operačního systému, který vlastně probíhá dodnes. Každou část operačního systému má na starosti jeden programátor. Je to jakýsi koordinátor. Toho kontaktuje spousta dobrovolníků, kteří sami vytváří různá vylepšení a doplnění operačního systému. Pokud je doplnění nebo oprava výhodné, je tato zahrnuta koordinátorem do celku operačního systému.Tím byl vlastně vytvořen obrovský programátorský tým, který řeší úkoly daleko rychleji a s mnohem větší silou, než uzavřená skupina programátorů určité softwarové firmy. Je zde však ještě jedna obrovská výhoda. Operační systém Linux není vytvářen s nějakým konkrétním cílem, který nemusí být vždy správný, ale je vytvářen živelně a reaguje na přesné potřeby programátorů a správců sítí. Díky tomu je zaručeno, že operační systém nebude obsahovat zbytečné nesmysly, ale bude obsahovat přesně to, co potřebujete. Navíc všechny části, které se nově vkládají do Linuxu jsou testovány toutéž programátorskou veřejností, která systém vytváří, čímž je zaručena prakticky stoprocentní bezchybovost systému. Na Linux se vztahují licenční podmínky GPL (GNU General Public Licence). Tato licence se vztahuje na veškeré produkty tvořené nadací Free Software Foundation a jejím cílem je zpřístupnit distribuční práva široké veřejnosti. Znamená to, že můžete software GNU distribuovat za libovolný poplatek, ale nesmíte nikomu nařizovat, za jaký poplatek má šířit distribuci dále. Kromě toho musíte s každou distribucí GNU software dodat i zdrojové kódy, takže každý si může software upravit dle vlastních potřeb. Linux podporuje většinu software napsaného pro UNIX. Prakticky ale přichází s každou distribucí Linuxu takové množství aplikací, že nemáte potřebu hledat další softwarové vybavení. Pokud ale vaše distribuce neobsahuje potřebný software, je velká pravděpodobnost, že ho naleznete v jiné distribuci UNIXu a že bude software ve vašem Linuxu fungovat. Protože se Linux neustále vyvíjí, je třeba zavést pořádek do jednotlivých verzí jádra. Označení jádra se skládá ze tří částí. První část označuje číslo verze. Pokud máte verzi 1 a 2, zjistíte, že je v nich podstatný rozdíl. Druhé číslo označuje různé revize jednotlivých verzí. Pokud je číslo sudé, jedná se o stabilní revizi, pokud je číslo liché, jedná se o testovací revizi (unstable version). Po otestování a opravení chyb je revize prohlášena za stabilní a je jí přiděleno sudé číslo. Třetí číslo pak označuje podverzi revize. V době psaní této práce byla k dispozici verze 2.6.9 (stabilní verze) vydaná 18.10.2004 a verze 2.6.10 RC3 (testovací verze).
2 . Základní příkazy Operační systém Linux je založen na textové konzoli, která stejně jako systém MS DOS používá příkazy. Hned po přihlášení k systému se objeví volba příkazového řádku, která může vypadat takhle : /home/nick#
Systém Linux používá posloupnosti znaků, písmen a číslic k vyvolání příkazu. Linux je označován jako tzv. Case Sensitive, což znamená že je cislivý na velká a malá písmena (tzn. A není totéž co a). Příkazový řádek se zobrazuje pomocí speciálního programu – příkazového interpretu (Shell) Systém používá nekolik příkazových interpretů, mezi nimiž si můžeme vybrat. Zřejmě nejpoužáívanějším příkazem se v prvních krocích stane příkaz “man” jenž představuje výpis originálních manuálových stránek. Například : /home/nick# man mount
vypíše manuál k příkazu mount (jeho funkci si vysvětlíme pozdeji). Další možností je vypsání krátké nápovědy, která se podobá DOSu, jeho sintaxe je : /home/nick# mount –h nebo /home/nick# mount –help
Dalším důležitým příkazem je “ls” pomocí kterého zobrazíme adresářovou strukturu. Syntaxe thoto příkazu vypadá asi takto : /home/nick# ls /
Po zadání tohoto příkazu by se mel zobrazit výpis kořenového adresáře. Ovšem nerozlišují se tu adresáře ani soubory, k tomu slouží volba –F s jejíž volbou dojde k rotlišování na složky a soubory. Další neméně důležitý příkaz je “cd” jenž je totožný s operačním systémem DOS. Slouží k přepínání mezi jednotlivými andresáři. Syntaxe vypadá takto : /home/nick# cd Dokumenty /home/Dokumenty/nick#
Pro návrat o úrpoven níže použijeme “cd..”, pokud se chceme vrátit do domocského adresáře, napíšeme příkaz cd bez udání cesty. Pro vytváření adresářů máme příkaz “mkdir” (make dir) jehož sisnatxe je : /home/nick# mkdir mp3
Tímto jsme vytvořili adresář “mp3”. K odstranení adresáře používáme příkaz “rmdir” (remove dir). Sysntaxe vypadá takto : /home/nick# rmdir mp3
Tímtro jsem smazali dříve vytvořený adresář “mp3”. Pokud potřebujeme soubory kopírovat, použijeme příkaz “cp” Jeho syntaxe vypadá následovně : cp zdroj cíl
příklad : /home/nick# cp dokument.rtf /home/nick/Dokumenty
Zkopíruje soubor dokument.rtf ze složky /home/nick/ do cílového adresáře /home/nick/Dokumenty. K odstranění soubory použijeme příkaz “rm” jehož syntaxe je : Rm soubor 1 soubor 2 ...... soubor N
Tímto příkazem je možno zrušit nekolik souborů. Nevýhodou je, že se příkaz neptá, zda-li chceme soubory opravu smazat. Tzn. Pokud zadáme špatně přkaz, můžeme přijít i o velmi cenná data Pro přesun dat použijeme příkaz “mv” (move). Příkaz mv soubory zkopíruje podobně jako příkaz cp, ale s tím rozdílem, že zdrojový soubor smaže, je to vlastně kombinace mezi příkazy “cp” a “rm”. Příkaz mv funguje : /home/nick# mv doc1.rtf doc2.rtf
Tímto příkazem dojde k přejmenování dokumentu doc1.rtf na doc2.rtf. Pokud chceme soubor přesunout do jiného adresáře popužijeme syntaxi : /home/nick# mv doc1.rtf backup
nyní jsme přesunuli dokument doc1.rtf do adresáře backup, přičemzž původní soubor byl smazán.
3. Adresářová struktura Adresářová struktura systémů Linix je založena na systému souborů standardu FSSTND. To zavádí jisté způsoby ukládání souborů, z čehož vyplývají mnohé výhody, například že vždy najdeme soubory na místech, kde jsme zvyklí. Jsou složky, kde jsou pouze konfigurační, nebo pouze spistitelné soubory atd..., to přináší oproti systému MS Windows výhodu v jisté přehlednosti a organizaci. Obr. 3 Rozdělení adresářové struktury / ------- bin --- dev --- etc --- home --- nick --- nick1 --- lib --- proc --- tmp --- usr ------ X11R6 --- bin --- emcas --- etc --- g++-include --- include --- lib --- local------------bin --- emcas --- etc --- lib --- man --- spool --- src ------------- linux --- tmp Popis jednotlivých adresářů /bin Jsou zde uloženy základní příkazy k bootování, ke správě systému, změně hesel atd. /sbin Podobně jako /bin, ale programy slouží jen superuživateli (rootovi). Za jistých okolností je můžou používat i ostatní uživatelé. /boot Soubory, jež používá zavaděč operačního systému (angl. bootstrap loader), například LILO. Je zde uloženo jádro operačního systému LINUX, 300 - 700 KB ve zdrojovém kódu. Po instalaci je nutná kompilace aby fungovalo. /dev Devices - adresáře zastupující hardware zařízení. Jsou zde ke každému zařízení adresáře např. COA = COM1. Cokoli sem zapíšeme, pošle se na COM1. NULL adresář - cokoli sem zapíšeme, se nestane.
/etc Databáze uživatelů, hesla, shelly atd. Jsou zde uloženy konfigurační soubory programů (něco jako . ini v OS Microsoft Windows). /etc/rc, /etc/rc.d, /etc/rc?.d - jedná se o skripty a adresáře skriptů, které se spouší při startu, nebo v případě kdy se mění běh úrovné systému (init). /etc/passwd - databáze uživatelů systému s položkami, v nichž je uloženo uživatelské jméno, skutečné jméno uživatele, domovský adresář, šifrované heslo a další dodatečné informace. /home Obsahuje domovské adresáře všech uživatelů (třeba: /home/novakj). Díky oddělení se snáze zálohují. Často je tento adresář umístěn na jiném pevném disku. /lib Sdílené knihovny pro různé programy. /lib/modules - zaváděcí moduly jádra systému (zvláště ty, které jsou potřeba pro zavedení systému při zotavení po neočekávaných událostech (například síťové ovladače a ovladače pro souborový systém). /mnt Přípojné místo pro dočasná připojení dalších disků, například /mnt/cdrom). /proc Tento adresář je virtuálně simulovaný, jsou zde ke každému procesu adresáře a je tam o tom procesu záznam. Například co se vykonávalo, kdo to přikázal, kdy, atd. Při prohlížení těchto souborů jsou generovány operačním systémem. /root Domovský adresář roota. Je zvlášť kvůli bezpečnosti. V praxi ho často představuje jiný pevný disk. /tmp Adresář vyhrazený pro pracovní soubory všeho druhu. /usr/ Obsahuje všechny příkazy, knihovny, manuálové stránky a jiné soubory, jejichž obsah se nemění a které uživatel potřebuje při běžném provozu. /usr/bin - veřejně přístupné příkazy, /usr/doc - dokumentace, /usr/lib - knihovny, /usr/local - konfigurační soubory, /usr/man - manuálové stránky tj. nápověda pro programy, /usr/tmp - dočasné soubory programů, /usr/X11R6 - X-window 11 release 6 /var Proměnné - obsahuje soubory, které jsou časově závislé. Tedy především sdílené adresáře pro elektronickou poštu, systém -newsio, tiskárny, log-soubory, formátované manuálové stránky a dočasné soubory. Speciální adresáře Linux poskytuje dvě speciální jména adresářů. Použití tečky (.) je stejné jako uvedení cesty k pracovnímu adresáři. Dvě tečky (..) v cestě způsobí přechod o jednu úroveň zpět k nadřazenému adresáři.
4. Hardware a Linux a) Zvukový systém Zvukové systémy jsou součástí linuxového jádra. Slouží pro vytvoření jednotného API pro přímou komunikaci programů s různými zvukovými kartami. Mohou být přeloženy jednak jako moduly do jádra, nebo mohou být přímo jeho součástí. Pro většinu interaktivních systémů pro sazbu not jsou téměř nezbytností, neboť tyto systémy většinou umožňují vysázenou partituru přehrát na zvukové kartě pomocí MIDI rozhraní. Zvuková systém OSS (Open Sound Systém) Jedná se o starší verzi API, která je standardní součástí linuxových jader řady 2.4.x. Volně šiřitelná je pouze chudší verze OSS/Free, ve které je podpora různých typů zvukových karet poměrně slabá. V současné době je tento systém již na ústupu a je nahrazen dokonalejším zvukovým systémem ALSA Zvukový systém ALSA (Advenced Linux Sound Architekture) Jedná se o celkově modernějšího nástupce dnes již zastaralého zvukového systému OSS. ALSA používá modernější API a navíc umožňuje emulaci původního OSS API. Podpora různých typů zvukových karet je na mnohem lepší úrovni a navíc podporuje bezpečné více-vláknové provádění zvukových úloh. ALSA je již standardní součástí nových linuxových jader řady 2.6.x. V jadrech 2.4.x se standartně nenachází a proto musí být manuálně doinstalována. Výhody ALSA oproti OSS : • • •
Plně modularizovaná Nemá problémy s SMP Nabízí emulaci API OSS
b) Grafické karty a X Window system Grafika nás v Linuxu zajímá v případě, že používáme grafickou nástavbu X Window System a jeho implementaci XFree86 (dnes bohužel již komerční) V případě hardwarové akcelerace (DRI) spolupracuje Xfree86 s jásdrem. Pokud provozujeme Linux jako server v textovém režimu, tak ovladače nejsou potřeba. Pokud vyžadujeme vyšší výkon grafické karty (např. 3D Akcelerace) musíme použít firemní ovladače. Nejlepší podporu má firma nVidia, která produkuje vlastní ovladače a na rozdíl od Windows je vždy dobré použít tu nejnovejší verzi (odstranuje různé bugy a chyby). Konkurence nVidie firma ATi nevyvijí vlastní ovladače, pouze podporuje vývojáře XFree86. Pro Linux existují i další X Servery : • • •
Accelerated X – Rychlá implementace x serveru firmou XiG Metro-X – Implemewntace od firmy Metro Link Inc., má dobrou podporu dotykových obrazovek a jiných speciálních zařízení. X.Org – Nová volná implementace, která nahradila XFree86. Vznikla v lednu 2004, kdy s pomocí pracovníků původního X.Org vznikla X.Org Foundation.
c) Podpora čipových sad a základních desek Základní deska a na ní obsažená čipová sada je nedílnou součástí každého počítače. Problémy mohou nastan převážně u jednotlivých integrovaných komponent napž. řadič disku, AGP, apod. Problémy s IDE řadičy jsou velmi řídké (důvodem je rychlý vývoj jádra) , a je možné se s nimi setkat pouze u velmi nových řadičů. V tomto případě řediče (disky) nejedou naplno, protože systém nastaví starší kompatibilní módy. Je tu samozřejmě možnost nastavit konfiguraci ručně a pokusit se rařízení rozchodit. Problémy s ovladačem AGP mají za následek zpomalení 3D Akcelerace způsobenou problémy hardwarové akcelerace DRI.
5. Jádro (Kernel) kernel je takova ta vec ktera je jadrem celeho systemu. Verze kernelu Verze kernelu je velice zajimava hodnota, skladajici se ze tri cisel (tvaru a.b.c). Asi nejzajimavejsi je cislo druhe - resp. jeho sudost / lichost. Sude cislo znamena "stabilni" verzi, liche cislo znamena versi experimentalni. Kompilace kernelu Pote co si stahnete kernel odnekud z FTP serveru (např.: ftp.kernel.org, kde je volně ke stažení tzv. vanila verze) , je potreba ho zkompilovat. To se dela takhle: cd /usr/src/linux make clean; make dep; make bzimage
Obcas je potreba jeste udelat neco jako make menuconfig a kernel nakonfigurovat. Menuconfig je docela prijemna utilita, která má dokonce nápovědu pro kazdou polozku. Konfigurace kernelu by nemela byt problem - v podstate jde o to vybrat si co vsechno v kernelu ma byt. Pokud toho date moc, bude kernel hodne velky, pokud toho bude malo, nebude nektery hardware fungovat. Pokud vypnete nektere veci o kterych autori mlcky predpokladaji ze je zapnete (protoze uz jsou XY let), muzete mit taky problemy. Pokud chcete, aby se jadro po zkompilovani rovnou nainstalovalo (doporucuji) prepiste v Makefile all: zlilo a odkomentujte "install_path" takze vznikne INSTALL_PATH=/boot. A pak uz staci jen make; make modules; make modules_install a asi tak pul hodiny cekat. Patche Ke kernelu se distribuji patche - coz jsou zaplaty na kernel. Patche budete potrebovat ve chvili kdy mate nejaky hardware ktery neni podporovan standartni distribuci. Patche budete potrebovat pokud si chcete do kernelu dodelat neco ne uplne standartniho, prip. pokud uz mate silne upraveny kernel a chcete na novou versi. Patche se aplikuji takhle: cd /usr/src/linux; zcat patch-2.1.14.gz | patch -Esp1
Jak kernel funguje Kernel je ve vnitr vlastně velké množství kódu... Ve verzi 2.0 je oddeleny segment pro uzivatele a pro data, 2.1+ uz maji stejny segment (coz je dobre na vykon). Pri bootu kernel pise zajimave veci a taky se mu daji zajimave veci vysvetlit. Na to je potreba poustet linux lilem nebo loadlinem.
6. Souborový systém Historie FS v Linuxu Minix File System •
první Linuxový filesystem
•
implementoval Linus Torvalds
•
jenoduchý fs
•
•
podobný Unix V7 FS, používal bitmapy místo zřetězených seznamů
•
velikost omezena na 64MB
•
maximální délka jmen 14 znaků
linuxové rozšíření nekompatibilní s původním Minixem - podpora jmen s délkou jmen 30 znaků.
Extended File System •
druhý Linuxový filesystem, založen na kódu Minixu, uvolněn v dubnu 1992
•
implementoval Rémy Card
•
menší omezení než Minix
•
ne příliš dobrý návrh space managementu •
volné bloky spravovány pomocí seznamů
•
pomalejší než Minix
•
velká fragmentace
Xia File System •
navrhnul a implementoval Frank Xia jako jednoduchý a výkonný filesystem
•
založen na kódu Minixu, uvoněn v lednu 1993
•
pro správu volných bloků používal bitmapy místo zřetězených seznamů, lepší výkonnost než extfs
Second Extended File System •
navrhnul Rémy Card a Wayne Davison
•
implementoval Rémy Card, založen na ext, uvolněn v lednu 1993
•
vylepšen několika dalšími programátory (Stephen Tweedie - kernel code, Theodore Ts'o utility)
Ext2 Klasický unixovský FS obsahuje boot blok, super blok, tabuku inodů a datové bloky. Boot blok obsahuje zaváděcí kód operačního systému, který je natáhnut do paměti a spuštěn během butování. Super blok obsahuje všechny důležité informace o FS - velikost FS, velikost bloků, velikost tabulky inodů, počet datových bloků, informace o volných inodách a datových blocích. Každý soubor v Unixu je reprezentován inodou. Každá inoda ve FS je jednoznačně identifikovatelná pořadovým číslem v tabulce. Inoda obsahuje všechny informace o souboru - typ souboru, vlastník, skupina, přístupová práva, délka souboru, čas vytvoření, posledního přístupu a poslední modifikace Vlastnosti ext2 a jeho implementace v Linuxu: •
max. velikost 4TB
•
max. velikost soubory 2 GB
•
max. délka jména 255 znaků
•
max. velikost bloku 4KB (používá se 1KB)
•
při alokování nových bloků používá prealokaci - alokuje dopředu 32 bloků, pokud nejsou potřeba, po ukončení práce s inodou jsou zase uvolněny, zabraňuje se tak fragmentaci
Linux používá také swap oddíl, je to jakási virtuální pamět, do které se ukládají data z paměti RAM, pokud její kapacita nedostačuje. Souhrn něktrerých vlastností
max. velikost fs max. velikost souboru max. délka jmen rozšiřitelný variabilní velikost bloků podporovaný
minix 64M B 64M B 14/30 ne
ext 2G B 2G B 255 ne
ext2 xia
ne
ne
ano ne
ano
ne
ano ??
4TB 2GB 2G B 255 ano
64M B 248 ano