Pravděpodobně máte jisté zkušenosti s používáním jednouživatelského operačního systému, jako je DOS nebo OS/2. Chcete-li pracovat v těchto operačních systémech, nemusíte se identifikovat - předpokládá se, že jste jediným uživatelem operačního systému, který má přístup ke všem jeho zdrojům. Na druhé straně, operační systém Unix je víceuživatelským systémem.
To znamená, že v daném okamžiku může mít k systému přístup více uživatelů najednou. Aby mohl operační systém Unix komunikovat s každým uživatelem odděleně, musí jej identifikovat procesem, který se nazývá “přihlášení se” (logging in). Když zapnete počítač, proběhne spousta inicializačních procesů a až potom je počítač schopen komunikovat s uživatelem. Protože je tato příručka věnována operačnímu systému Linux, vysvětlíme si, co se odehrává v průběhu zavádění tohoto operačního systému Linux.
Pokud nepoužíváte operační systém Linux na osobním počítači s procesorem Intel, pak se vás nebudou některé informace v této kapitole týkat. Většinu užitečných informací najdete v oddílu 3.1. Jestliže se pouze zajímáte o používání vašeho počítače, pak kromě oddílu 3.3 nemusíte tuto kapitolu číst.
Po zapnutí počítače s procesorem Intel se jako první provede program zvaný BIOS. BIOS je zkratkou pro Basic Input/Output System. Tento program je trvale uložen ve zvláštní paměti počítače. Realizuje některé základní testy a identifikuje technické vybavení, jako je pevný disk či disketová jednotka. Po identifikaci disku najde tzv. zaváděcí sektor (boot sector) a spustí kód, který v něm nalezne. Jestliže byl nalezen disk, ale žádný zaváděcí sektor, vypíše BIOS následující hlášení:
Non system or disk error
Pak ovšem stačí disk bez zaváděcího sektoru vyjmout, stisknout kteroukoliv klávesu a zaváděcí proces bude pokračovat.
Pokud není v disketové jednotce vložena disketa, BIOS vyhledá hlavní zaváděcí záznam MBR (master boot record) na pevném disku (závisí na nastavení BIOSu). Ten obsahuje kód (zaváděcí program), jehož úkolem je zavést operační systém. Pro operační systém Linux se tento program jmenuje LILO (LInux LOader). Linux Loader je nejpoužívanějiím bootovacím programem pro Linux, ale je možno použít i GRUB Loader, SYSLinux nebo i NT Loader. To znamená, že program LILO je uložen právě v diskové oblasti MBR. Nyní budeme předpokládat, že se zavádí operační systém Linux. (U vaší konkrétní distribuce může proces zavádění operačního systému Linux probíhat poněkud odlišně - proto si pečlivě pročtěte dokumentaci k vaší distribuci. Další užitečné informace naleznete v dokumentaci k zaváděcímu programu LILO.)
Nejdříve tedy předá BIOS kontrolu zaváděcímu programu LILO a ten pak předá kontrolu jádru operačního systému Linux (Linux kernel). Jádro je centrálním programem celého systému a řídí všechny ostatní programy. V prvním kroku jádro realizuje přepnutí procesoru do tzv. chráněného módu. Procesor 80386, jež řídí váš počítač, může pracovat ve dvou módech: v tzv. “reálném módu” a v tzv. “chráněném módu”. Operační systém DOS, stejně jako BIOS, funguje v reálném módu. Vyspělejší operační systémy však pracují v chráněném módu. Proto platí, že Linux po svém zavedení zcela nahradí BIOS.
Pokud jde o počítače s jinými procesory, probíhá tato fáze zavádění systému Linux poněkud jinak. Zpravidla nedochází k přepínání do chráněného módu a jen několik málo procesorů vyžaduje komplikované zavádění operačního systému podobné kombinaci BIOS - LILO. Po zavedení jádra pracuje Linux na všech počítačích stejně bez ohledu na procesor.
V dalším kroku se Linux pokouší identifikovat technické vybavení počítače, na kterém běží. Musí znát informace o pevném disku, zda je nebo není k dispozici myš, zda je nebo není váš počítač připojen k počítačové síti a podobně. Linux si není schopen po vypnutí počítače tyto údaje pamatovat, proto je pokaždé zjišťuje znovu. Naštěstí nemusíte údaje o technickém vybavení vašeho počítače zadávat - Linux si je zjistí sám.
V průběhu zavádění vypisuje operační systém Linux řadu hlášení. Podrobněji se jimi budeme zabývat v oddílu 3.4. Asi by se vám nelíbilo, pokud byste museli při každém startu odpovídat na spoustu dotazů týkajících se technického vybavení a konfigurace vašeho počítače. Na několik důležitých dotazů tohoto druhu však budete muset odpovědět při instalaci systému. Budete-li mít jakékoliv problémy, pročtěte si dokumentaci k vaší distribuci.
Jak jsme se již zmínili, jádro řídí všechny ostatní programy. Jestliže tedy úspěšně identifikuje veýkeré technické vybavení počítače, spustí jiný program, který již začne dělat něco užitečného. Tento program má název init. (Všimněte si, že pro název programu jsme použili jiný font. Neproporcionální font budeme používat k označení programů, adresářů i obecných souborů.) Po nastartování programu init se jádro stane jakýmsi “manažerem”, avšak již není aktivním programem.
Jestliže chceme vědět, co dělá počítač po zavedení jádra, musíme studovat program init. Ten prochází mnoha komplikovanými stádii, která nejsou na všech počítačích stejná.
Operační systém Linux má mnoho verzí programu init - každá z nich realizuje své cíle různými způsoby. Také záleží na tom, zda je váš počítač zapojen do sítě a jakou distribuci operačního systému Linux používáte. Nyní si uveďme některé základní procesy, jež program init realizuje:
Zpravidla proběhne kontrola souborového systému. Co je to souborový systém? Je to systém je způsob organizace a ukládání souborů na pevném disku. Linux při kontrole souborového systému zjiššuje, které části disku jsou již použity a které jsou volné. Souborový systém se podobá rejstříku nebo štítkovému katalogu v knihovně. Bohužel se stává, že například při výpadku elektrické energie dojde k poškození některých souborů a pak je používání některých částí pevného disku konfliktní. Program init proto spouští další program označený jako fsck, jenž se pokouší vadné soubory a konfliktně obsazené části pevného disku opravit.
Pokud je váš počítač připojen k síti, spustí se několik speciálních programů, jež zajišťují komunikaci vašeho počítače s jinými počítači. Na pevném disku mohou zůstat některé dočasné soubory, které jsou jinak neužitečné. Ty mohou být programem init zrušeny.
Zpravidla také dojde k aktualizaci systémového času. Operační systém Unix předpokládá, že je čas definován jako UCT (Universal Coordinated Time), známý také jako střední greenwichský čas. Přitom je čas ve vašem počítači pravděpodobně nastaven na lokální – to znamená, že některý program musí přečíst lokální čas nastavený ve vašem počítači a korigovat jej na čas UCT.
Jakmile program init ukončí všechny uvedené aktivity, přejde do stavu, jenž lze označit jako “rodič” všech procesů v systému Unix. Pod pojmem proces si lze jednoduše představit běžící program. Protože jeden program může být spuštěn dvakrát nebo vícekrát, mohou existovat dva procesy nebo více procesů realizujících konkrétní program.
V operačním systému Unix tedy platí, že proces je instancí programu. Vytváří se systémovým voláním (službou poskytovanou jádrem systému) nazvaným “fork” (rozvětvení). Pojem “fork” se používá proto, že se původně jeden proces při spuštění dalšího procesu rozdělí na dva oddělené procesy. Typickým příkladem programu, který běží jako několikanásobný proces, je program getty. getty je důležitý program, jenž voláním programu login umožňuje uživateli přihlásit se do systému.
Než začnete používat operační systém Unix, musíte se identifikovat. Procesu identifikace se říká “přihlášení do systému” (login). Jedná se o proces, ve kterém se operační systém přesvědčí, zda má uživatel oprávnění systém používat. Systém se vás zeptá na jméno účtu (account name) a heslo (password). Jméno účtu je zpravidla podobné vašemu jménu - pravděpodobně jste jej obdrželi od vašeho systémového správce nebo jste si vytvořili vlastní, pokud jste sami systémovým správcem. (Informace o vytváření jména účtu naleznete v příručce “Příručka správce operačního systému Linux”.)
Po dokončení všech zaváděcích procesů byste měli na svém monitoru spatřit hlášení podobné následujícímu. Nejnovější verze Linuxu se hlásí takto (první řádek je pouze uvítací zprávou - může zde být cokoliv jiného):
RedHat Linux release 5.1 (Manhattan) with all updates.
Kernel 4.1.108 on an Intel
mousehouse login:
Je však možné, že vás systém uvítá něčím úplně jiným. Místo nudné textové obrazovky se vám může představit nějaká grafická obrazovka. Avšak i v tomto případě budete vyzváni k přihlášení se do systému a proběhnou stejné procedury identifikace uživatele. Pokud se vám objevila zmíněná grafická obrazovka, pak jste zřejmě uživateli systému X Window. To znamená, že budete pracovat v systému oken, o kterém se podrobněji zmíníme v kapitole 5. Všimněte si, že veškerý výklad o systému X Window bude v této knize označován velkým písmenem X na levém okraji textu.
Jako jméno účtu budeme používat smyšlené jméno larry. Kdykoliv uvidíte v následujícím textu jméno larry, měli byste místo něj dosadit své vlastní jméno účtu. Jména účtu by měla být založena na skutečném jménu uživatele; ve větších operačních systémech typu Unix se zpravidla používají příjmení uživatelů, kombinace jména a příjmení nebo kombinace jména a číslic. Pro uživatele se jménem Larry Greenfield by se mohly použít například tyto kombinace: larry, greenfie, lgreenfi nebo lg19.
Pro bližií vysvětlení, jméno mousehouse je “jménem” počítače, na kterém pracuji. Je pravděpodobné, že jste při instalaci operačního systému Linux použili jiné, podobně duchaplné jméno. Jméno počítače není důležité; v této knize budeme používat již uvedené jméno mousehouse, případně lionsden. Jestliže tedy zadáte své jméno účtu a stisknete klávesu Enter, objeví se výzva k zadání hesla:
mousehouse login: larry
Password:
Na druhém řádku očekává operační systém Linux zadání hesla (password). Při zadávání hesla neuvidíte na obrazovce, co píšete, proto zadávejte heslo pečlivě. Chybně zadaný znak můžete zrušit, ale opět nebudete vidět, který znak jste zrušili. Jestliže se na vás zrovna někdo dívá, nezadávejte heslo příliš pomalu. Mohlo by tak dojít k vyzrazení vašeho hesla a nepovolaná osoba by jej mohla zneužít. Jestliže zadáte heslo chybně, budete mít možnost zadat je znovu.
Pokud jste zadali heslo správně, objeví se zpravidla na vaší obrazovce nějaká zpráva, jež se většinou nazývá “zpráva dne”. Tato zpráva může obsahovat cokoliv - její znění zadává systémový správce.
Jako další se objeví tzv. výzva příkazového řádku (prompt). Výzva příkazového řádku je řetězec indikující skutečnost, že systém očekává zadání příkazu. Mohla by vypadat takto:
/home/larry#
Pokud jste uživateli systému X Window, pak zřejmě uvidíte výzvu podobnou výše uvedené v nějakém okně na obrazovce. Okno je obdélníková orámovaná oblast obrazovky, která v tomto případě imituje terminál. Pokud chcete zadat příkaz v příkazovém řádku v okně, musí být okno aktivní - stačí například do tohoto okna přesunout kurzor myši.
Chcete-li skončit práci s počítačem, pak rozhodně nestačí pouze počítač vypnout. Pokud to uděláte v operačním systému Linux, s největší pravděpodobností ztratíte nějaká data nebo poýkodíte nějaké důležité soubory.
Na rozdíl od operačního systému DOS, kde lze počítač vypnout vypínačem nebo restartovat tlačítkem Reset, je v operačním systému Linux nutné provést řadu kroků, které zajistí bezpečné ukončení systému. Uveďme si hlavní důvod. Operační systém Linux používá tzv. paměť cache pro diskové operace. To znamená, že jistá část souborů uložených na pevném disku je umístěna do paměti RAM. K synchronizaci mezi pamětí RAM a pevným diskem dochází přibližně každých třicet sekund. Jestliže se má vypnout nebo restartovat počítač, pak je nutné, aby se část paměti RAM obsahující disková data uložila.
Máte-li tedy ukončit práci s počítačem a přitom jste normálně přihlášeni (t.j. zadali jste jméno uživatelského účtu a heslo), pak se musíte odhlásit. K tomuto účelu slouží příkaz logout. Napište v příkazovém řádku logout a stiskněte klávesu Enter. Klávesou Enter odesílá každý příkaz. Než tuto klávesu stisknete, můžete chybně zadané znaky opravovat, případně celý příkaz zrušit a zadat nový.
RedHat Linux release 5.1 (Manhattan) with all updates.
Kernel 4.1.108 on an Intel
mousehouse login:
Nyní se může do systému přihlásit další uživatel.
Jste-li jediným uživatelem počítače, pak po odhlášení můžete počítač odpojit od zdroje elektrické energie. V takovém případě se přihlašujte jako uživatel se speciálním jménem účtu root. Účet root je účtem systémového správce, který má zajištěn přístup ke každému souboru v systému. Pokud hodláte vypnout počítač, pak musíte obdržet heslo od systémového správce. (Jste-li jediným uživatelem počítače, pak jste systémovým správcem právě vy! Proto nikdy nezapomeňte heslo!)
Přihlášení a odhlášení by mohlo vypadat takto:
mousehouse login: root
Password:
Last login: Sun 5 11:14:57 on tty1
/# shutdown -h now
Broadcast message from root (tty1) Sun 14:52:32 1998...
The system is going down for system halt NOW!
INIT:Switching to runlevel: 0
INIT: sending processes the TERM signal
The system is halted
System Halted
Po zadání příkazu shutdown -h now proběhnou jisté procedury, které připraví systém na vypnutí nebo reset.
Na závěr ještě uveďme krátkou poznámku pro pohodlnější uživatele. Místo procesu přihlašování a odhlašování jako uživatel root lze použít příkaz su. Jako běžný uživatel zadejte v příkazovém řádku příkaz su a stiskněte klávesu Enter. Systém si vyžádá heslo uživatele root a pak vám přidělí všechna jeho privilegia. Nyní můžete bez problémů systém ukončit příkazem shutdown -h now.
Když poprvé startujete počítač, objeví se na obrazovce spousta hlášení popisující technické vybavení vašeho počítače. Uvedená hlášení vypisuje jádro operačního systému Linux. V tomto oddílu si některá důležitá hlášení podrobněji popíšeme.
Přirozeně platí, že se hlášení jádra systému budou lišit, což je dáno jednak typem počítače a jednat distribucí operačního systému Linux. V následujícím textu budou popsána hlášení platná pro můj počítač. Některá mají obecnou platnost, jiná jsou více specifická. Musím poznamenat, že můj počítač má minimální konfiguraci, pokud jde o technické vybavení, proto dále neuvidíte příliš mnoho informací týkajících se speciálního technického vybavení. Následující hlášení pocházejí z verze operačního systému Linux 1.3.55. Tato verze patří v době, kdy píši tuto knihu, k nejnovějším.
1. V prvním kroku operační systém Linux identifikuje grafickou kartu, aby mohl vybrat nejvhodnější font a jeho velikost. (Čím menší font je zvolen, tím větší počet hlášení se vejde na jednu obrazovku.) Linux se vás může zeptat, jaký font má používat, nebo použije standardní “kompilovaný” font (compiled font).
Console: 16 point font, 400 scans
Console: colour VGA 80x25, 1 virtual console (max 63)
V předcházejícím příkladu se vlastník počítače v době kompilace rozhodl pro větší, standardní font. Také si všimněte zastaralého tvaru slova “colour”. Linus se evidentně naučil špatnou verzi angličtiny.
2. V dalším kroku zobrazí jádro operačního systému zprávu o výkonnosti vašeho počítače. Výkonnost se měří v jednotkách “BogoMIPS” Zkratka MIP (million instructions per second) označuje počet instrukcí, které je počítač schopen provést za sekundu. “BogoMIP” je zkratkou “bogus MIP” (bogus=podvodný, faleiný) a označuje, kolikrát za sekundu neudělá počítač absolutně nic. Protože cyklus, kterým se výkonnost počítače měří, nedělá ve skutečnosti nic, nelze uvedené číslo považovat za objektivní ukazatel výkonnosti. Operační systém Linux toto číslo používá v případě, kdy potřebuje vyčkat na odezvu nějakého zařízení.
Calibrating delay loop.. ok - 33.28 BogoMIPS
3. V třetím kroku vypíše jádro systému informace o použití paměti:
Memory: 23180k/24576k available (544 kernel code, 384k reserved, 468k data)
Z této informace vyplývá, že má počítač 24 MB operační paměti. Část této paměti byla rezervována pro jádro. Zbytek může být využíván ostatními programy. Uvedené informace se týkají paměti RAM, která může být používána k uchovávání dat, jen když je počítač zapnut. Počítač však má k dispozici permanentní paměš zvanou pevný disk. Obsah pevného disku zůstává uchován i tehdy, když je váš počítač vypnut.
4. V průběhu zavádění operačního systému provádí Linux řadu testů technického vybavení a o výsledcích těchto testů vypisuje průběžné zprávy.
This processor honours the WP bit even when in supervisor mode. Good.
5. V dalším kroku se Linux zabývá konfigurací sítě. Následující zpráva by měla být popsána v manuálu “Příručka správce sítě”
Swansea University Computer Society NET3.O33 for Linux 1.3.50
IP Protocols: ICMP, UDP, TCP
Popis konfigurace sítě přesahuje rámec této dokumentace, a proto se jím nebudeme zabývat.
6. Operační systém Linux podporuje jednotku pro výpočet v pohyblivé řádové čárce FPU (floating point unit). Jedná se o speciální integrovaný obvod (nebo přímo součást procesoru 80486DX), jenž realizuje aritmetické operace s neceločíselnými operandy. Některé z těchto integrovaných obvodů mohou být ýpatné a když se je operační systém Linux pokusí detekovat, dojde k jeho zhroucení - počítač přestane být funkční. Pokud nastane tento případ, uvidíte na obrazovce zprávu:
Checking 386/387 coupling...
V případě, že používáte procesor 486DX, uvidíte tuto zprávu:
Checking 386/387 coupling... Ok, fpu using exception 16 error reporting.
Máte-li starší procesor 386 s matematickým koprocesorem 387, uvidíte zprávu:
Checking 386/387 coupling... Ok, fpu using irq13 error reporting.
7. Nyní proběhne další test, jenž testuje instrukci “halt”.
*
Checking 'hlt' instruction... Ok.
8. Po dokončení počáteční konfigurace vypíše operační systém Linux řádek, kterým identifikuje sám sebe. Na tomto řádku je informace o verzi systému, verzi překladače GNU C Compiler, kterým bylo jádro přeloženo, a kdy byl překlad realizován.
Linux version 1.3.55 (root@mousehouse) (gcc version 2.7.0)
Sun Jan 7 14:56:26 EST 1996
9. Jako další se nastartuje ovladač sériového portu, který zjistí informace o příslušném technickém vybavení. Ovladač (driver) je součást jádra operačního systému, která řídí nějaké zařízení, zpravidla periferní. Ovladač je odpovědný za detaily komunikace mezi procesorem a periferním zařízením. Ovladače umožňují, aby se programátoři mohli při psaní aplikací soustředit na vlastní aplikaci a nemuseli se starat o takové problémy, jako je například tisk na tiskárně.
Serial driver version 4.11 no serial optins enabled
tty00 at 0x03f8 (irq = 4) is a 16450
tty01 at 0x02f8 (irq = 3) is a 16450
tty02 at 0x03e8 (irq = 4) is a 16450
V tomto případě byly nalezeny tři sériové porty. Sériový port je ekvivalentní portu COM v operačním systému DOS. Jedná se o zařízení běžně používané ke komunikaci s modemy nebo myší.
Uvedený výpis sděluje, že sériový port s pořadovým číslem 0 (COM1) má adresu 0x03f8. Když port přeruší činnost jádra (zpravidla proto, aby sdělil systému, že chce přenášet data), použije přerušení IRQ 4. Přerušení IRQ představuje další prostředek pro komunikaci mezi programovým vybavením a periferním zařízením. Každý sériový port má také svůj řídící integrovaný obvod. Často se používají obvody 16450, mohou se však také vyskytnou obvody 16550 nebo 820.
10. Nyní přichází na řadu paralelní port. Paralelní port se nejčastěji připojuje k tiskárně a v operačním systému Linux začínají jména paralelních portů dvojicí písmen lp. lp je zkratkou pro Line Printer (řádková tiskárna), i když v poslední době by se mělo spíše jednat o zkratku pro Laser Printer (laserová tiskárna). Samozřejmě platí, že je operační systém Linux schopen komunikovat s každým typem paralelní tiskárny - jehličkovou, bublinkovou i laserovou.
lp0 at 0x03bc, (polling)
Uvedená zpráva říká, že v systému byl nalezen jeden paralelní port a že pro něj bude použit standardní driver.
11. V dalším kroku identifikuje operační systém Linux ovladače pevných disků. Podle následující zprávy byly identifikovány dva pevné disky IDE:
hda: WDC AC2340, 325MB, w/127KB Cache, CHS=1010/12/55
hda: WDC AC2850F, 814MB, w/64KB Cache, LBA, CHS=827/32/63
12. Dále provede jádro kontrolu disketových jednotek. Podle následujícího příkladu má počítač dvě disketové jednotky: jednotku “A” pro diskety 5 1/4 palce a jednotku “B” pro diskety 3 1/2 palce. Operační systém Linux přidělí disketové jednotce “A” jméno fd1 a disketové jednotce “B” jméno fd0.
Floppy drive(s): fd0 is 1.44M, fd1 is 1.2M
floppy: FDC 0 is a National Semiconductor PC87306
13. Dalším ovladačem v případě mého počítače je ovladač SLIP. Vypíše následující zprávu o své konfiguraci:
SLIP: version 0.8.3-NET3.019-NEWTTY (dynamic channels, max=256)
(6 bit encapsulation enabled)
CSLIP: code copyright 1989 Regents of the University of California
14. Dále jádro ověří všechny pevné disky, které byly identifikovány. Prohledá různé diskové oddíly a identifikuje ty části, na kterých se nachází operační systém, aby zabránil případné interferenci s jinými operačními systémy. V následujícím příkladě jsou identifikovány dva pevné disky: hda se čtyřmi oddíly a hdb s jedním oddílem:
Partition check:
hda: hda1 hda2 hda3 hda4
hdb: hdb1
15. V konečné fázi provede operační systém Linux připojení (mount) hlavního souborového systému platného pro kořenový oddíl (root partition). Kořenový oddíl je část pevného disku, ve které je umístěn operační systém. Když operační systém připojuje hlavní souborový systém, zpřístupní jej uživateli:
VFS: Mounted root (ext2 filesystem) readonly.