Dřív než budete moci nastavovat složitější části systému, bude dobré se naučit něco o tom, jak je systém organizován a jaké příkazy je možné používat k vyhledávání souborů a programů. Je také dobré vědět, jaké kroky je třeba podniknout, když si budete chtít vytvořit jádro podle svých představ. Tato kapitola vás obeznámí s organizací systému a s konfiguračními soubory. Pak už se můžeme dostat k nastavování i složitějších částí systému.
Ještě než se vrhneme na různé možnosti nastavovení, je důležité pochopit jak je linuxový systém poskládán. Linuxový systém je významně odlišný od DOSu či Windows (jakož i Macintoshe), takže v této části knihy vám pomůžeme ponořit se do jeho struktury, abyste si mohli později snáze nastavit váš systém tak, aby se to potkalo s vašimi potřebami.
První výrazný rozdíl mezi Slackware Linuxem a DOSem či Windows najdeme v uspořádání souborového systému. Pro začátečníky: Nepoužívají se písmena k označování diskových oddílů. Pod Linuxem máme jeden hlavní adresář. Můžete si ho představit třeba jako C: pod DOSem. Každý oddíl ve vašem systému je mountován (připojován) do adresáře v onom hlavním adresáři. Vypadá to jako nějaký stále se nafukující harddisk.
Tomuto hlavnímu adresáři říkáme "root" (kořenový) adresář a označujeme jej prostě lomítkem (/). Toto pojetí možná vypadá podivně, ale ve skutečnosti vám velmi usnadňuje život v situaci, kdy chcete diskový prostor rozšířit. Například se vám stane, že už se nevejdete na disk, kde máte připojený adresář /home. Většina lidí instaluje Slackware s jediným obrovským root systémem. Takže, když diskový oddíl může být připojen pod libovolný adresář, můžete jednoduše skočit do obchodu, koupit tam další harddisk a namountovat (připojit) si jej pod adresář /home. No a máte "naroubováno" o něco více prostoru do vašeho systému. A to vše bez nutnosti hýbat s mnoha věcmi okolo.
Dále vám popíšeme hlavní adresáře nacházející se na nejvrchnější úrovni souborového systému Slackwaru.
Zde jsou uloženy ty nejzákladnější uživatelské programy. Ty představují nejminimálnější sadu programů nutných k tomu, aby uživatel mohl systém používat. Jsou tu uloženy takové věci, jako je shell, příkazy souborového systému (ls, cp) a podobně. Adresář /bin se po nainstalování systému už zpravidla nemění. Pokud ano, tak obvykle jen z důvodu upgradu softwarových balíčků.
Zde jsou soubory, které používá Linux Loader (LILO). I v tomto adresáři se toho po nainstalování systému už moc nemění.
Pamatujete si ještě, že všechna zařízení se musí připojovat do nějakého adresáře pod hlavním root adresářem? Dobrá, takže /cdrom se používá jako přípojný bod (mount point) pro vaši CD-ROM jednotku.
Se všemi věcmi v Linuxu se zachází jako se soubory. Takže i s hadrwarovými zařízeními jako např. sériovými porty, harddisky a scanery. Abychom mohli k těmto zařízením přistupovat, musí být přítomen speciální soubor nazývaný "device node". Všechy "device nodes" jsou uloženy v adresáři /dev. Zjistíte, že takhle je to uděláno ve většině operačních systémů Unixového typu.
V tomto adresáři jsou uloženy systémové konfigurační soubory. Všechno od konfigruačních souborů pro X Window, přes uživatelské databáze až po systémové startovací skripty je zde. Systémový administrátor se časem s tímto adresářem hodně sžije.
Linux je víceuživatelský operační systém. Každému uživateli je v systému zřízen účet a jedinečný adresář pro jeho osobní soubory. Tento adresář je nazýván jako uživatelův domovský (home). Adresář /home je používán jako defaultní lokace pro umístění uživatelských domovských adresářů.
Zde jsou uloženy systémové knihovny, které jsou vyžadovány pro základní operace. Najdeme tu například knihovnu jazyka C, dynamický zavaděč, knihovnu ncurses, moduly jádra, atd.
Při startu systému probíhá i kontrola souborových systémů na chyby. Jsou-li chyby zjištěny, spustí se program fsck, aby zjistil, zda půjdou opravit. Opravené části souborového systému jsou zapsány do adresáře /lost+found.
Tento adresář je používán jako dočasný přípojný bod (mount point) pro práci na pevných discích či vyjímatelných médiích.
Volitelné (optional) softwarové balíčky. Hlavní myšlenkou pro /opt je, aby se každý softwarový balíček instaloval do /opt/<software package>, což usnadňuje jeho pozdější odstranění. Slackware umísťuje nějaké věci do /opt (např. KDE dává do /opt/kde). I vy si můžete do /opt svobodně přidávat co chcete.
Toto je velmi zvláštní adresář. Ve skutečnosti není částí souborového systému, ale je virtuálním souborovým systémem, který poskytuje přístup k informacím jádra. Různé informace, které vám chce kernel dávat na vědomí, jsou vám dávány prostřednictvím "souborů" v adresáři /proc. Rověž vy můžete zasílat informace do kernelu prostřednictvím některých těchto "souborů". Vyzkoušejte si třeba cat /proc/cpuinfo.
Správce systému - administrátor - je systému znám pod jménem "root". Rootův domovský adresář je v /root místo v /home/root. Důvod k tomu je jednoduchý. Co kdyby /home byl na jiném diskovém oddílu než / a nemohl by být připojen? Root by se měl přirozeně přihlásit do systému a opravit tento problém. Kdyby byl jeho domovský adresář na poškozeném filesystému, asi by mu to přihlašování hodně zkomplikovalo.
Zde jsou programy, které může spouštět jen root a nebo které jsou spouštěny v průběhu startu systému. Normální uživatelé nemohou spouštět programy z tohoto adresáře.
Místo pro umisťování dočasně existujících souborů. Všichni uživatelé mohou z tohoto adresáře číst i zapisovat do něj.
Toto je největší adresář v linuxovém systému. Všechno ostatní musí jít hezky sem: Programy, dokumentace, zdrojový kód kernelu a X Window systém. Většinu programů budete instalovat do tohoto adresáře.
Systémové logovací soubory, cache data a programové zámky jsou ukládány sem. Toto je adresář pro často se měnící data.
Nyní byste měli mít dobrý přehled o tom, co který adresář v souborovém systému obsahuje. V následující sekci vám řekneme, jak lze jednoduše nalézt nějaký soubor tak, abyste to nemuseli dělat ručně.
Teď už víte, co který adresář obsahuje, ale při hledání souborů vám to až tak moc nepomůže. Jistě, můžete se probírat jednotlivými adresáři, ale jsou tu i rychlejší cesty. V Slackwaru máme čtyři základní příkazy pro vyhledávání souborů.
Prvním z nich je příkaz which(1). Obvykle je používán k rychlému zjištění umístění nějakého programu. Prohledává jen adresáře uvedené "v cestě" PATH a jako výsledek vrací první výskyt hledaného souboru a adresářovou cestu k němu. Příklad:
$ which bash /bin/bash |
Tady vidíte, že bash je v adresáři /bin. Toto je velmi omezený příkaz, protože prohledává jen adresáře v PATH.
Příkaz whereis(1) pracuje podobně jako which, ale navíc může vyhledávat man stránky a zdrojové soubory. whereis vyhledávání soborů bash by mělo dát tento výsledek:
$ whereis bash bash: /bin/bash /usr/bin/bash /usr/man/man1/bash.1.gz |
Tento příkaz nám neříká jen, kde je hledaný program, ale též kde je uložena online dokumetace k němu. Rovněž tento příkaz je omezený. Co kdybyste chtěli nalézt nějaký konfigurační soubor? Na to nemůžete použít which ani whereis.
Příkaz find(1) umí hledat cokoliv. Když bychom například chtěli prohledat celý systém, abychom zjistili, kde se nachází defaultní xinitrc soubor, napíšeme:
$ find / -name xinitrc ./var/X11R6/lib/xinit/xinitrc |
Práce příkazu find trvá trochu déle, protože musí prohledat celý adresářový strom. Navíc, pokud jej spouštíte jako normální uživatel, obdržíte nejspíš spoustu chybových hlášení o odmítnutém přístupu do adresářů, které smí prohlížet jenom root. Ale find nám soubor našel a to je príma. Jenom, kdyby to mohlo být trochu rychlejší...
Příkaz locate(1) prohledává celý souborový systém stejně, jako to dělá příkaz find, ale namísto skutečného souborového systému prohledává svoji databázi. Databáze je nastavena tak, aby se automaticky updatovala ve 4:40 ráno, abyste měli v systému hodně čerstvý seznam souborů. Databázi pro locate můžete updatovat i ručně spuštěním příkazu updatedb(1). Příkaz updatedb(1) nemůže spouštět normální uživatel. Tady je příklad příkazu locate v akci:
$ locate xinitrc # we don't have to go to the root # nemusíme být přihlášeni jako root /var/X11R6/lib/xinit/xinitrc /var/X11R6/lib/xinit/xinitrc.fvwm2 /var/X11R6/lib/xinit/xinitrc.openwin /var/X11R6/lib/xinit/xinitrc.twm |
Dostali jsme víc, než jsme očekávali, a ještě k tomu rychle. S těmito příkazy byste měli být schopni nalézt cokoli co chcete.
Systémové inicializační soubory jsou uloženy v adresáři /etc/rc.d. Slackware pro svoje inicializační soubory používá rozmístění ve stylu BSD. Každý task (úloha) či runlevel má svůj odpovídající rc soubor. To poskytuje organizovanou strukuru, kterou je snadné udržovat.
Je několik kategorií inicializačních souborů. Jsou to: system startup, runlevels, inicializace sítě a System V kompatibilita. A - v souladu s tradicí - všechno ostatní házíme do kategorie "other" (ostatní).
Prvním programem, který se spouští pod Slackwarem (nepočítáme-li kernel) je init(8). Tento program čte soubor /etc/inittab(5), aby věděl, jak zprovoznit systém. Dále spouští skript /etc/rc.d/rc.S, který připraví systém před tím, než přejde do požadovaného runlevelu. Soubor rc.S zpřístupňuje virtuální paměť, připojuje filesystémy, čistí určité logovací adresáře, inicializuje zařízení Plug and Play, zavádí moduly jádra, konfiguruje zařízení PCMCIA, nastavuje sériové porty a spouští inicializační skripty pro System V (pokud nějaké najde). Dále rc.S volá některé další skripty:
Toto je vlastní systémový inicializační skript.
Zavádí moduly jádra. Věci jako je vaše síťová karta, podpora PPP, a další věci se zavádějí tady. Pokud tento skript najde soubor rc.netdevice, rovněž jej spustí.
Hledá a nastavuje veškará PCMCIA zařízení, která můžete ve svém systému mít. To je nejužitečnější pro majitele laptopů, kteří pravděpodobně mají PCMCIA modem nebo síťový adaptér.
Konfiguruje sériové porty spuštěním příslušných příkazů setserial.
Hledá System V init skripty pro požadovaný runlevel a spouští je. Detailněji o tom pohovoříme dále.
Po dokončení inicializace systému se init pustí do inicializace runlevelu. Runlevel popisuje v jakém stavu váš stroj poběží. Jinak řečeno: Runlevel říká initu jestli budete akceptovat víceuživatelské přihlašování nebo jen jednouživatelský mód, zda chcete nebo nechcete síťové služby a jestli se o obsluhu přihlašování postará X Window systém, nebo agetty(8). Následující soubory definují různé runlevely v Slackware Linuxu.
Zastavení systému (runlevel 0). Defaultně je symbolickým linkem spojen na rc.6.
Víceuživatelský režim (runlevel 4) v X11 s KDM, GDM, nebo XDM coby přihlašovacím manažerem.
Reboot systému (runlevel 6).
Start v jednouživatelském módu (runlevel 1).
Víceuživatelský mód (runlevel 2 a 3) se standardním přihlašováním v textové konzoli. Toto je standardní runlevel ve Slackwaru.
Runlevely 2, 3 a 4 spouštějí síťové služby. Následující soubory jsou zodpovědné za inicializací sítě:
Je vytvořen programem netconfig. Tento soubor zodpovídá za konfiguraci stávajícího síťového rozhraní.
Běží po rc.inet1 a spouští základní síťové služby.
Spouští služby AppleTalk.
Spouští Apache web server.
Spouští služby pro sdílení souborů a tiskáren s Windows.
Spouští news server.
System V init compatibility byla zavedena v Slackware 7.0. Mnoho jiných linuxových distribucí používá tento styl místo BSD stylu. V podstatě je v System V každému runlevelu přidělen podadresář, kde má umístěny svoje init skripty, zatímco BSD styl dává každému runlevelu po jednom skriptu.
Skript rc.sysvinit vyhledává inicializační skripty pro System V, které máte v /etc/rc.d a spouští je, odpovídá-li to danému runlevelu. To je užitečné pro některé komerční softwarové balíčky, které instalují inicializační skripty jak pro System V, tak i pro BSD styl.
Skripty popisované níže jsou dalšími systémovými inicializačními skripty. Jsou typicky spuštěny z jednoho z výše uvedených hlavních inicializačních skriptů, takže jediné co potřebujete udělat, je editovat jejich obsah.
Je-li to povoleno, tento skript bude hledat CD-ROM v mechanice a namountuje ho pod /cdrom, když nějaké najde.
Spouští "general purpose mouse services". Ty umožňují funkce kopíruj/vlož pomocí myši v linuxové konzoli.
Spouští "Intel Binary Compatibility support". To je potřeba jedině když plánujete spouštění programů kompilovaných pro SCO UNIX, nebo jiný komerční Intel UNIX. Nepotřebujete to pro spouštění linuxových programů.
Zvádí "custom" obrazovkový font pro konzolu.
Obsahuje startovací příkazy specifické pro váš systém. Po instalaci je prázdný a je rezervován pro místní administrátory. Tento skript je spouštěn až po všech ostatních inicializacích.
K povolení (enable) skriptu musíte udělat jedinou věc: Nastavit mu práva ke spouštění pomocí příkazu chmod. Zakázání spouštění skriptu dosáhnete odebráním spouštěcích práv. Více informací o příkazu chmod najdete v sekci Permissions v 9. kapitole.