- předchozí článek - následující článek - obsah - úvodní stránka -

Linuxové noviny 11/2000

Disky všech druhů spojte se

Milan Čermák, 23. ledna 2000

Tento článek je určen všem těm, kteří si v touze po levnějším a lepším operačním systému nainstalovali Linux a snaží se dopátrat (většinou marně), kde se skrývá jejich disketová mechanika, CD-ROMka, nebo kus disku, který obsahuje třeba M$-Windows (libovolné verze). Tento problém vychází z toho, že Linux (jak se ostatně dalo očekávat) používá pro správu mechanik a disků odlišný systém než operační systémy firmy Microsoft.

Organizace zařízení

V systému Linux je každému zařízení přiřazen jeden (nebo i více) speciální soubor z adresáře /dev. Způsob přiřazení je dán jednak typem zařízení a jednak ovladačem, který se pro dané zařízení používá. Některé vybrané soubory

jsou uvedeny v tabulce Přiřazení speciálních souborů k zařízením. DOSovské přiřazení písmen uvedené v tabulce téměř určitě nebude odpovídat vašemu. Šlo pouze o to ukázat, jakým způsobem přiděluje DOS označení.

tabulka: Přiřazení speciálních souborů k zařízením:
SouborOznačení v DOSuPopis
/dev/fd0 A První disketová mechanika
/dev/fd1 B Druhá disketová mechanika
/dev/hda   První IDE/ATAPI disk (master na prvním (E)IDE řadiči)
/dev/hda1 C První primární oddíl na prvním IDE disku
/dev/hda2 F Druhý primární oddíl na prvním IDE disku
/dev/hda5 D První rozšířený oddíl na prvním IDE disku
/dev/hda6 E Druhý rozšířený oddíl na prvním IDE disku
/dev/hdb   Druhý IDE/ATAPI disk (slave na prvním (E)IDE řadiči)
/dev/hdb1 G První primární oddíl na druhém IDE disku
/dev/hdc   Třetí IDE/ATAPI disk (master na druhém (E)IDE řadiči)
/dev/sda   První SCSI disk (s ID 0)
/dev/sda1 C První primární oddíl na prvním SCSI disku
/dev/sdb   Druhý SCSI disk (s ID 1)

V adresáři /dev nejsou samozřejmě pouze speciální soubory pro disky a mechaniky. Můžeme tam najít soubory pro paralelní a seriové porty, pro myš, pro zvukovou kartu a další zařízení.

Ruční připojování

Druhou odlišností proti DOSu nebo Windows je, že se všechny disky a mechaniky spojují do jediného adresářového stromu. Máme tedy nějaký disk, který je připojen do kořene a do adresářů se mohou "navěšovat" další disky a mechaniky. Nejčastěji se k tomuto účelu používají adresáře /mnt/zařízení (například /mnt/cdrom nebo /mnt/floppy) nebo adresáře v kořeni (například /cdrom nebo /floppy).

K připojení diskového oddílu nebo mechaniky slouží příkaz (nebo spíše program) mount. Například disketovou mechaniku můžeme připojit příkazem:

$ mount -t msdos /dev/fd0 /mnt/floppy
Může to vypadat děsivě, ale není to tak složité (navíc si dále ukážeme, jak to ještě zjednodušit). Znamená to, že po programu {\bd mount} chceme, aby připojil mechaniku zastoupenou souborem /dev/fd0, která obsahuje souborový systém "msdos" (parametry -t msdos) do adresáře /mnt/floppy.

Obdobným příkazem můžeme připojit třeba mechaniku CD-ROM, která je zastoupena souborem /dev/hdc.

$ mount -t iso9660 /dev/hdc /mnt/cdrom

kde "iso9660" je souborový systém používaný pro datová CD.

Ruční odpojování

Opačnou věcí, kterou je pod Linuxem v souvislosti s disky a mechanikami, nutné dělat, je nezapomenout je odpojit před vyjmutím z mechaniky. To je kritické zvláště u disketových mechanik, kde můžeme disketu bez problémů a bez odpojení vyjmout. U CD to nejde, protože Linux si mechaniku zamkne a dokud ji neodpojíte, tak se k CD dostanete pouze za pomoci šroubováku (nebo jiného nástroje). U disket jde hlavně o to, že Linux používá bufferovaný zápis a naší neopatrnou činností bychom mohli o dosud nezapsaná data přijít. Takže, dříve než disketu vyjmeme z mechaniky, jí odpojíme příkazem umount:
$ umount /dev/fd0
Tady už nejsou potřeba žádné další údaje, neboť Linux si vede přesnou evidenci připojených mechanik. (Konkrétně v souboru /etc/mtab.)

Bufferování je také důvod, proč je nutné Linux (a nejen ten) správně ukončit. Nějaká data, určená k zápisu, by totiž ještě mohla být v paměti, a my bychom tím, že počítač prostě vypneme, o ně mohli přijít.

Poloautomatické připojování

Bylo by samozřejmě velmi úmorné a nepraktické, kdybychom museli při každém připojení nějaké mechaniky zadávat znovu a znovu všechny parametry. Naštěstí existuje způsob, jak si tuto činnost zjednodušit. Jedná se o konfigurační soubor /etc/fstab, ve kterém jsou shromážděny popisy mechanik a diskových oddílů spolu s informacemi o souborových systémech, větvích, kam se mají připojovat, a dalších věcech.

Struktura souboru /etc/fstab je vidět na výpisu Struktura souboru /etc/fstab. Je to celkem přehledná tabulka s následujícím významem položek.

# <file system> <mount point> <type>  <options>             <dump> <pass>
/dev/hda1       /             ext2    defaults                 0      1
/dev/hda2       none          swap    sw                       0      0
proc            /proc         proc    defaults                 0      0
/dev/hdc        /mnt/cdrom    iso9660 defaults,noauto,ro,user  0      0
/dev/fd0        /mnt/floppy   msdos   defaults,noauto,user     0      0

výpis: Struktura souboru /etc/fstab

V prvním sloupci jsou uvedeny speciální soubory mechanik nebo diskových oddílů, v druhém pak místo, kam se mají připojit. Následuje souborový systém a doplňující nastavení. Položka dump určuje, zda se mají data na daném zařízení zálohovat. To je vhodné například pro server, kde je samostatný diskový oddíl s adresáři uživatelů. Položka může nabývat hodnot 0 nebo 1. Poslední položka pass může nabývat hodnot od nuly výše a udává, zda se má ten který souborový systém kontrolovat po špatném vypnutí počítače. Z toho je zřejmé, že například v druhém řádku (první řádek je komentář) souborový systém /dev/hda1 se připojí do adresáře /, což je kořen stromu, a obsahuje souborový systém "ext2", což je standardní linuxový systém.

Zajímavý je třetí řádek, který představuje informace o odkládacím oddílu. Ten se samozřejmě nikam nepřipojuje, ale systém o něm musí vědět.

První tři záznamy by se měly v souboru /etc/fstab objevit hned při prvním startu, protože jsou zakládány při instalaci. Pokud je jich víc, je to v pořádku (možná je adresář /home nebo /usr na samostatné oblasti). Pokud je jich míň, může to znamenat problémy (třeba chybějící odkládací oddíl).

Teď se dostáváme k tomu, co v souboru /etc/fstab (možná) není a co bychom tam chtěli přidat. Pátý řádek obsahuje informace o jednotce CD-ROM, která je zastoupena souborem /dev/hdc (a je tedy připojena jako "master" na druhém (E)IDE řadiči). Ta obsahuje souborový systém "iso9660" a má se připojovat do adresáře /mnt/cdrom. Co znamenají přídavné volby ve sloupci options vysvětlím {dále.}

V dalším řádku jsou uvedeny informace o disketové mechanice. Ta se má připojovat do adresáře /mnt/floppy a používá souborový systém "msdos".

Po přidání uvedených řádků stačí pro připojení například CD-ROMky napsat:

$ mount /dev/hdc

nebo

$ mount /mnt/cdrom

a program si už další parametry dohledá sám v souboru /etc/fstab.

Nyní se podívejme blíže na volby uvedené ve sloupci options. Zde jsou uvedeny různé přepínače, které ovlivňují práci se zařízením jak ze strany systému, tak ze strany uživatele.

Parametr "defaults" uvedený u všech záznamů (vyjma odkládacího oddílu) nastavuje základní způsob přístupu (zařízení je pro čtení i zápis, lze z něj spouštět programy, připojí se při startu systému a další). Ostatní volby uvedené u CD-ROMky a disketové mechaniky upravují právě toto základní nastavení.

Volbou "noauto" systému oznamujeme, že se nemá pokoušet dané zařízení připojovat při startu systému. Ono by se mu to stejně nepodařilo, pokud bychom náhodou nezapomněli v mechanice disketu a v CD-ROMce CD.

Dalším společným parametrem je volba "user". Tou může správce poskytnout právo připojovat zařízení běžným uživatelům. Spolu s touto volbou se automaticky nastaví zákaz spouštění programů z tohoto zařízení. To je možné změnit přidáním volby "exec".

Posledním použitým parametrem je volba "ro" u jednotky CD-ROM. Tou systému sdělíme, že je tento souborový systém určen jen ke čtení. Ne snad, že by se systém pokoušel na CD zapisovat (to on si zjistí, že to nejde), ale vypsal by o tom otravnou hlášku.

Občas může nastat situace, že potřebujeme jedno zařízení s několika souborovými systémy. Většinou se jedná o diskety, které mohou obsahovat "vfat" nebo (v unixových systémech běžnější) "minix". Můžeme to vyřešit buď tak, že pro každou možnost vytvoříme záznam a adresář. Uživatel pak podle typu své diskety použije vhodný příkaz a obsah najde v příslušném adresáři.

Druhým možným řešením je vložit do sloupce type hodnotu "auto". Tím se zbavíme starostí o formát diskety a přenecháme je systému k autodetekci. Tato metoda ale není všemocná. Rozezná sice "nápadně" odlišné souborové systémy jako "ext2" od "msdos", ale nerozezná například souborový systém "vfat". Ten identifikuje jako "msdos", čímž uživateli upře používání dlouhých jmen souborů.

Připojování stiskem tlačítka

Dalším možným zjednodušením uživatelova života v souvislosti s připojováním mechanik a oddílů, je použití grafické nadstavby nad programy mount a umount. Program, který takovou nadstavbu poskytuje, se jmenuje xvmount. Po spuštění nabídne uživateli okno, kde jsou sepsány všechny mechaniky a oddíly a u každého záznamu je tlačítko s nápisem "mount". To se po stisknutí a připojení daného zařízení změní na "unmount".

Seznam připojitelných zařízení se řídí souborem /etc/xvmounttab, který můžete vidět na výpisu Struktura konfiguračního souboru /etc/xvmounttab. Je to (stejně jako soubor /etc/fstab) přehledná tabulka.

#
# Config file for xvmount (v3.5)
#
# name     device       directory       type      options
Floppy:    /dev/fd0     /mnt/floppy     vfat      defaults
CD-ROM:    /dev/hdc     /mnt/cdrom      iso9660   ro
DOS-HD:    /dev/hda3    /mnt/dos        msdos     defaults

výpis: Struktura konfiguračního souboru /etc/xvmounttab

První sloupec udává identifikační text, který se vypíše do dialogového okna. Dále je uveden speciální soubor zařízení, adresář, kam se má souborový systém připojit, typ souborového systému a doplňující volby.

\Stahni0.8 Naneštěstí může používání tohoto nástroje působit drobné potíže jak správci, tak uživateli. Program si totiž načítá stav mechanik pouze při startu a pak už s okolím nekomunikuje, což může vést k nepříjemným situacím. Jedna taková je na obrázku.

K zobrazené situaci došlo, když jsem se pokusil odpojit zařízení, které jsem už předtím programem umount odpojil. Program xvmount pak neustále trvá na tom, že zařízení je připojeno, i když se v souboru /etc/mtab tvrdí opak. Obdobná situace může zaručeně nastat i při připojování již připojené mechaniky. Takovéto případy lze jednoduše řešit restartem programu, i když to není právě elegantní.

Správce systému může potkat podobný, ale obrácený problém. Zařízení připojené programem xvmount nejde programem umount odpojit. K tomu dojde, pokud je v souboru /etc/xvmounttab jako zařízení místo jména speciálního souboru uvedeno jméno linku (například /dev/cdrom místo /dev/hdc).

Další závadou je, že program neakceptuje volbu "nouser" (opak "user") a dovolí tak uživateli připojit libovolné zařízení, i když si to správce nepřeje. Naopak program umount, který tuto volbu zná, nedovolí dané zařízení odpojit. Kromě lehké nepříjemnosti to však má ještě jeden podstatnější rys. Pokud je program nevhodně nakonfigurován, může dojít ke zneužití a uživatel může získat přístup k datům, ke kterým přístup mít neměl.

Skoro úplně automatické připojování

Poslední a pro uživatele asi nejpříjemnější metodou připojování je použití tzv. automounteru. Jde o nástroj, který automaticky připojí určité zařízení, když ho uživatel požaduje. Takovým požadavkem už není volání nějakého programu, ale například přechod do adresáře (cd), kam má být ono zařízení připojeno. Bohužel přechod tak, jak ho provádí program Midnight Commander nestačí, protože se podadresáře pro připojení vytvářejí dynamicky (a adresář, ve kterém má obsah zařízení být, tam prostě není). Takže pro první vstup do adresáře (a s tím spojené připojení) je nutné použít příkaz cd adresář nebo ls adresář. A po určité době, kdy už se s adresářem nepracuje, jej automounter opět odpojí.

Ačkoliv to vypadá velmi lákavě při použití pro diskety, které by se pak mohly chovat podobně jako pod DOSem nebo Windows, musím všechny zklamat, protože právě pro diskety (které nejčastěji potřebuje běžný uživatel) se tento přístup naprosto nehodí. Vhodnější použití je například pro diskové oddíly na serveru (které potřebujeme jednou za čas), nebo pro FTP archivy.

Automounter totiž všechna zařízení připojuje s takovými právy, že zapisovat smí pouze administrátor (a to ještě pokud si to sám nezakáže).

Ke zprovoznění automounteru potřebujeme dvě věci. První se týká jádra, kde musí být přeložena podpora tohoto nástroje. (Článek o kompilaci jádra je možné najít v Linuxových novinách z prosince 1997.) Při konfiguraci je nutno odpovědět nebo zaškrtnout "yes" u položky "Kernel automounter support".

Druhou věcí je balík autofs, který je možné najít na adrese ftp://ftp.kernel.org/pub/linux/deamons/autofs. Po jeho nainstalování a potřebné konfiguraci je automounter plně k dispozici.

# Sample auto.master file
# Format of this file:
# mountpoint map options
# For details of the format look at autofs(8).

/mnt/local /etc/auto.local /mnt/ftp /etc/auto.ftp

výpis: Struktura souboru /etc/auto.master

Konfigurace je obsažena v několika souborech /etc/auto.*. Základním konfiguračním souborem je soubor /etc/auto.master, který můžete vidět na výpise Struktura souboru /etc/auto.master. Ten určuje, se kterými adresáři bude automounter pracovat. Zařízení se pak budou připojovat do podadresářů tohoto adresáře. V druhém sloupci jsou názvy dalších konfiguračních souborů, které popisují způsob a místo připojení jednotlivých zařízení. Názvy těchto souborů nemusí mít nic společného s adresářem, ale pro přehlednost je vhodné je pojmenovat aspoň podobně.

V souboru na výpise jsou definovány dva adresáře s příslušnými konfiguračními soubory. První je určen pro lokální disky, druhý pro vzdálené FTP archivy.

# This is an automounter map and it has 
# the following format
# key [ -mount-options-separated-by-comma ] 
# location
# Details may be found in the autofs(5) manpage

dos -fstype=msdos :/dev/hda1 winnt -fstype=ntfs,ro :/dev/hda2

výpis: Struktura podřízeného konfiguračního souboru /etc/auto.*

Formát podřízených konfiguračních souborů je vidět na výpise Struktura podřízeného konfiguračního souboru /etc/auto.* (je to přímo soubor /etc/auto.local). První sloupec označený jako klíč (vlastně "key") obsahuje názvy adresářů, do kterých se připojují jednotlivá zařízení. Například diskový oddíl /dev/hda1, který obsahuje DOS, se pak bude připojovat do adresáře /mnt/local/dos.

V druhém sloupci jsou parametry obdobné těm ze souboru /etc/fstab. A konečně ve třetím sloupci jsou uvedeny speciální soubory připojovaných zařízení. Ta dvojtečka znamená, že jde o lokální zařízení. Pro vzdálený systém (třeba FTP archiv) by bylo na stejném místě napsáno například ftp.fi.muni.cz:/pub/linux/.

Když jsme si už nastavili všechno, co jsme chtěli, musíme ještě systému říct, aby si naši konfiguraci přečetl a zařídil se podle toho. Uděláme to příkazem:

$ /etc/init.d/autofs restart
Ta cesta nemusí nutně platit (závisí na používané distribuci), můžete případně vyzkoušet /etc/rc.d/init.d/ nebo /etc/rc.d/.

Závěr

Cílem tohoto článku bylo poskytnout začátečníkům přehled a návod, jak pod Linuxem pracovat s disky a mechanikami, které vypadají na první pohled ztracené. Doufám, že se mi to podařilo, aniž bych způsobil újmu na zdraví těm, kteří tuto problematiku znají. *


- předchozí článek - následující článek - obsah - úvodní stránka -