Produkty Novinky Články Návody Kontakty

Konfigurační soubory - III

Jako poslední si představíme ty skripty a konfigurační soubory, které definují základní charakteristiky systému jako jsou přípojné body souborových systémů, organizace souborů zařízení v adresáři /dev, prezentace systému na síti atd.

Soubor /etc/fstab

Zde jsou uloženy informace o souborových systémech a parametrech pro jejich připojování. Je proto vhodné, zde uvést všechny použité souborové systémy, protože pak lze při jejich připojování uvést pouze přípojný bod a příkaz mount všechny ostatní potřebné údaje vyčte ze souboru /etc/fstab. Další výhoda je v tom, že souborové systémy uvedené v /etc/fstab mohou být připojeny příkazem mount běžným uživatelem. Souborové systémy zde neuvedené může připojit pouze superuživatel root.
Obsah soubor:
# /etc/fstab: static file system information
​
# <fs>  <mount point>   <type>   <options>       <dump> <pass>
​
# mdev file system in /dev 
mdev    /dev            tmpfs    size=64k,mode=0755   0     0
​
# virtual file systems 
proc    /proc           proc     defaults             0     0 
sysfs   /sys            sysfs    defaults             0     0 
devpts  /dev/pts        devpts   gid=5,mode=0620      0     0 
shm     /dev/shm        tmpfs    defaults             0     0
usbfs   /proc/bus/usb   usbfs    defaults             0     0
​
# RAM disk for /tmp 
tmpfs   /tmp            tmpfs    defaults             0     0
​
# root file system 
/dev/hda1 /             ext2     rw                   0     1
Poznámka: Připojení souborového systému usbfs nám zajistí, že v adresáři /proc/bus/usb budou k dispozici informace o připojených USB zařízeních.

Soubor /etc/mtab

Některé programy vyžadují v systému přítomnost souboru /etc/mtab, v kterém příkazem mount je udržován aktuální seznam připojených souborových systémů. Jelikož Busybox a jeho verze příkazu mount tak nečiní, tak je nutné jako jakési náhradní řešení vytvořit tento soubor jako symbolický odkaz na soubor /proc/mounts.
To zajistíme příkazem:
$ ln -s /proc/mounts /home/emlin/mylindist-root/etc/mtab

Soubor/etc/issue.rcs

Tento soubor není standardní součástí konfigurace systému. Vytvořili jsme jej čistě pro možnost upravovat text zobrazený na začátku vykonávání inicializačního skriptu /etc/init.d/rcS, aniž by bylo potřeba upravovat samotný skript.
Obsah souboru:
######################################### 
#                                       # 
#              Devel PC                 # 
#                                       # 
#########################################

Soubor /etc/issue.net

Zde je uložen text, který se uživateli zobrazí po přihlášení k systému prostřednictvím protokolu telnet.
Obsah souboru:
#  
#    Welcome to Devel PC 
#

Soubor /etc/hostname

Je soubor, kde je uloženo jméno počítače.
Obsah souboru:
pc-devel

Soubor /etc/hosts

V tomto souboru jsou uvedeny IP adresy počítačů a jim odpovídající aliasy (hostnames). Při otevírání spojení pak není nutné zadávat IP adresu vzdáleného počítače, ale stačí uvést jeho alias. Pokud v síti funguje DNS server, tak se v tomto souboru uvádí jen počítače s kterými je potřeba komunikovat ještě předtím, než se podaří připojit k DNS serveru.
Obsah souboru:
# /etc/hosts
# IP address      Alias 
127.0.0.1         localhost
192.168.1.15      pc-devel 
Obsah souboru v naší distribuci je nejmenší možný - je zde lokální síťová smyčka a pak už jen síťové rozhraní počítače.

Soubor/etc/networks

V souboru /etc/networks se nachází seznam sítí a jejich název. Seznam síti je používán příkazem route.
Obsah souboru:
default            0.0.0.0
loopback        127.0.0.0 
localnet        192.168.1.0
První dva záznamy jsou povinné. Dále platí, že každá sít, pro niž chceme příkazem route přidat směrovací pravidla, musí být v tomto souboru uvedená.

Soubor/etc/resolv.conf

Je soubor, kde je uložen seznam IP adres DNS serverů. Při prohledávání souboru se postupuje odshora dolů. Tzn., že první server uvedený v tomto souboru je považován za primární DNS server, druhý uvedený pak za sekundární DNS server.
Obsah souboru:
# /etc/resolv.conf
​
# primary DNS server 
nameserver 212.24.132.132
Uvedený DNS server jen příkladem. Každý si musí nastavit svůj vlastní platný pro jeho síť.

Soubor/etc/nsswitch.conf

Je soubor pro konfiguraci rodiny knihoven libnss*.so Určuje, kde se nalézají tzv. systémové databáze (hesla, skupiny, názvy počítačů v síti apod.), ke kterým přistupují uživatelské programy skrze funkce knihovny glibc.
Obsah souboru /etc/nsswitch.conf:
# /etc/nsswitch.conf
​
passwd:         files 
group:          files 
shadow:         files
​
hosts:          files dns 
networks:       files
​
protocols:      files 
services:       files 
ethers:         files 
rpc:            files
​
netgroup:       nis
K tomuto souboru zároveň přísluší i samotné databáze. V našem případě jsou v podobě textových souborů. Níže uvádíme seznam potřebných souborů. Některé z nich už máme vytvořené (ty označené hvězdičkou). Ty chybějící vezmeme z distribuce Debian 6.0 Squeeze.
/etc/passwd (*)
/etc/group (*)
​
/etc/hosts (*)
/etc/networks (*)
​
/etc/protocols
/etc/services
/etc/rpc

Soubor/etc/mdef.conf

Soubor /etc/mdev.conf je konfiguračním souborem správce souborů zařízení mdev. Před tím, než si rozebereme jeho formát a uvedeme jeho obsah, si řekněme něco málo o samotném správci souborů zařízení mdev. Správce zařízení mdev je zjednodušená varianta systémové služby (démona) udev, který podporuje dynamické vytváření souborů zařízení v adresáři /dev.
Dynamické vytváření souborů zařízení v adresáři /dev, které v systému Linux reprezentují samotná zařízení, je moderním způsobem správy obsahu adresáře /dev. Původní způsob vyžadoval, aby v adresáři /dev byly vytvořeny všechny možné soubory zařízení, tak aby bylo zjištěno, že pro každé zařízení přidané do systému, bude existovat odpovídající soubor zařízení, který by jej reprezentoval. S rozmachem zařízení připojitelných za běhu systému (zařízení s podporou USB, zařízení připojovaná přes Bluetooth, apod.) tento způsob správy adresáře /dev přestal vyhovovat. Vývojáři jádra proto přišli s podporou služby udev, která na základě událostí z jádra o přidaní/odebrání zařízení, vytvoří, resp. zruší odpovídající soubor zařízení a případně pro něj zavede i příslušný ovladač. Služba udev se konfiguruje pomocí sady pravidel.
Pro potřeby minimalistických distribucí pro embedded zařízení je udev příliš komplexní nástroj. Proto vnikl mdev jako zjednodušená varianta udev, která základní funkce, jako je vytvoření/zrušení souboru zařízení a vykonání zadaného příkazu zvládá s přehledem.
Správce souborů zařízení mdev je součástí Busyboxu. Pokud jej chceme využít ve své distribuci, stačí zatrhnout jeho podporu při konfigurování Busyboxu. Instalace mdev je také jednoduchá - je totiž součástí instalace Busyboxu do kořenového adresáře budoucí distribuce Linuxu, neboť je jen dalším apletem.
mdev může docela dobře fungovat i bez konfiguračního souboru, nicméně kvůli možnosti mít vše pod svou kontrolou, doporučujeme při konfiguraci Busyboxu zatrhnout i podporu konfiguračního souboru /etc/mdev.conf. Pak tento soubor musí být v naší distribuci přítomen.
Obsah konfiguračního souboru mdev:
# /etc/mdev/conf
​
# Provide user, group, and mode information for devices.  If a regex matches 
# the device name provided by sysfs, use the appropriate user:group and mode 
# instead of the default 0:0 660. 
​
# Syntax: 
# [-]devicename_regex user:group mode [>|=path] [@|$|*cmd args...] 
# 
# >=path: = move, > move and create a symlink 
# @|$|*cmd args: run $cmd on delete, @cmd on create, *cmd on both
​
# generic needed stuff 
null                    root:root 0666 
zero                    root:root 0666 
full                    root:root 0666
​
random                  root:root 0666 
urandom                 root:root 0444 
hwrandom                root:root 0660
​
kmem                    root:root 0640 
mem                     root:root 0640 
port                    root:root 0640
​
# console, virtual terminals, pseudo terminals, virtual consoles 
# items with ! are used to reduce number of device nodes generated
console                 root:tty 0600 
tty[0-9]                root:tty 0660 
tty[0-9].+              root:tty 0660 ! 
ttyS[0-9]               root:uucp 0640 
ttyS[0-9].+             root:uucp 0640 ! 
ptmx                    root:tty 0660 
pty.*                   root:tty 0660 
vcs[0-9]                root:tty 0660 
vcsa[0-9]               root:tty 0660
​
# disks 
ram([0-9]*)             root:disk 0660 
sd[a-z]*                root:disk 0660 
hd[a-z]*                root:disk 0660
​
# Flash memories aka MTD devices
mtdblock[0-9]+          root:disk 0660 
mtd[0-9].*              root:disk 0660 !
​
# inputs, moved to /dev/intput/ 
event[0-9]+             root:root 0640 =input/ 
mice                    root:root 0640 =input/ 
mouse[0-9]              root:root 0640 =input/ 
ts[0-9]                 root:root 0600 =input/
​
# video output  
agpgart                 root:video 0660 
​
# misc
rtc0                    root:root 0664 @ln -sf $MDEV rtc
Soubor /etc/mdev.conf je v podstatě seznam názvů zařízení v podobě regulárních výrazů, spolu s parametry souboru zařízení, cesty, kam má být soubor zařízení umístěn, a příkazů shellu, které se mají vykonat. Co řádek, to záznam pro dané zařízení. Tento seznam mdev prochází od shora dolů vždy při vzniku nové události z jádra, která informuje mdev o přidání/odebrání zařízení ze systému. Hledá takový řádek, kde se název zařízení shoduje s názvem zařízení uvedeném v události z jádra. První řádek, který vyhoví, je proveden, resp. mdev podle uvedených parametrů vytvoří soubor zařízení, přesune jej z /dev do uvedené cesty(většinou do nějakého podadresáře /dev) a vykoná uvedený příkaz (pokud je uveden). Jestliže není nalezen žádný řádek, který by vyhovoval jménu zařízení, je použito výchozí pravidlo 0:0 0660. Jelikož 0 je obvykle ID uživatele root a zároveň také ID skupiny root, výchozí pravidlo můžeme přepsat na root:root 0660.
Formát řádků v souboru /etc/mdev.conf je tento:
nazev_zarizeni_jako_reg_vyraz      uzivatel:skupina        cesta   prikaz
Znak = v zadání cesty říká, že vytvořený soubor zařízení má být přesunut do adresáře uvedeném za znakem =. Např. zápis =input/ zajistí, že soubor zařízení bude vytvořen v adresáři /dev/input. Naproti tomu znak > zajistí stejné chování, zároveň ovšem bude v adresáři /dev vytvořen symbolický odkaz do nového umístění.
Jestliže je před příkazem znak $, tak se tento příkaz vykoná při odebrání zařízení ze systému (kdy se maže soubor zařízení). Naopak, znak @ způsobí, že následující příkaz bude vykonán při přidání zařízení do systému (kdy se vytváří soubor zařízení). A konečně příkaz uvozený znakem * bude vykonán v obou situacích.
Zajímavostí je znak ! v zadání cesty. Tento znak říká, že soubory zařízení nebudou pro daná zařízení vytvářeny.