Kapitola 4. Konfigurace systému

Obsah
Prohlídka systému
Vybíráme si jádro
Shrnutí

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.

Prohlídka 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.

Struktura souborového systému

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.

/bin

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ů.

/boot

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í.

/cdrom

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.

/dev

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.

/etc

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.

/home

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ářů.

/lib

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.

/lost+found

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.

/mnt

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.

/opt

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.

/proc

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.

/root

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.

/sbin

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.

/tmp

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.

/usr

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.

/var

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ě.

Vyhledávání souborů

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ů.

which

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.

whereis

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.

find

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ší...

locate

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.

Adresář /etc/rc.d

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í).

System Startup

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:

rc.S

Toto je vlastní systémový inicializační skript.

rc.modules

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í.

rc.pcmcia

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.

rc.serial

Konfiguruje sériové porty spuštěním příslušných příkazů setserial.

rc.sysvinit

Hledá System V init skripty pro požadovaný runlevel a spouští je. Detailněji o tom pohovoříme dále.

Runlevel Initialization Scripts

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.

rc.0

Zastavení systému (runlevel 0). Defaultně je symbolickým linkem spojen na rc.6.

rc.4

Víceuživatelský režim (runlevel 4) v X11 s KDM, GDM, nebo XDM coby přihlašovacím manažerem.

rc.6

Reboot systému (runlevel 6).

rc.K

Start v jednouživatelském módu (runlevel 1).

rc.M

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.

Inicializace sítě

Runlevely 2, 3 a 4 spouštějí síťové služby. Následující soubory jsou zodpovědné za inicializací sítě:

rc.inet1

Je vytvořen programem netconfig. Tento soubor zodpovídá za konfiguraci stávajícího síťového rozhraní.

rc.inet2

Běží po rc.inet1 a spouští základní síťové služby.

rc.atalk

Spouští služby AppleTalk.

rc.httpd

Spouští Apache web server.

rc.samba

Spouští služby pro sdílení souborů a tiskáren s Windows.

rc.news

Spouští news server.

System V Compatibility

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.

Ostatní soubory

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.

rc.cdrom

Je-li to povoleno, tento skript bude hledat CD-ROM v mechanice a namountuje ho pod /cdrom, když nějaké najde.

rc.gpm

Spouští "general purpose mouse services". Ty umožňují funkce kopíruj/vlož pomocí myši v linuxové konzoli.

rc.ibcs2

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ů.

rc.font

Zvádí "custom" obrazovkový font pro konzolu.

rc.local

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.