Gentoo Logo

Upozornění : Tento dokument již neplatí a není udržován.

Gentoo Linux x86 Handbook

Obsah:

  • Instalace Gentoo
    V této části se naučíte Gentoo nainstalovat.
    1. O instalaci Gentoo Linuxu
      Tato kapitola Vám stručně představí instalační proces.
    2. Výběr správného instalačního média
      Gentoo můžete nainstalovat mnoha způsoby. Zde si popíšeme instalaci z minimálního instalačního CD nebo pomocí instalátoru.
    3. Konfigurace sítě
      Abyste mohli stahovat nejnovější zdrojové kódy, musíte nejdříve nastavit své připojení k síti.
    4. Příprava disků
      Nyní je potřeba vytvořit diskové oddíly. Tato kapitola popisuje rozdělení disku pro další použití.
    5. Instalace instalačních souborů
      Gentoo se instaluje z takzvaného stage3 archivu. Popíšeme jeho rozbalení a konfiguraci Portage.
    6. Instalace základního Gentoo systému
      Po rozbalení stage3 archivu chcete mít k dispozici základní Gentoo systém. V této kapitole se dozvíte, jak toho dosáhnout.
    7. Konfigurace kernelu
      Linuxový kernel čili jádro je srdcem každé distribuce. Zde popíšeme, jak se konfiguruje.
    8. Konfigurace systému
      Je potřeba změnit některé důležité konfigurační soubory. V této kapitole naleznete jejich přehled a vysvětlení, co s nimi.
    9. Instalace nezbytných systémových nástrojů
      Jak již bylo zmíněno, Gentoo je o volbách a možnostech. Provedeme Vás výběrem a instalací některých klíčových nástrojů.
    10. Konfigurace bootloaderu
      Pro x86 architekturu existuje více bootloaderů, z nichž každý se konfiguruje po svém. Naučíme Vás nastavit si bootloader k obrazu svému.
    11. Dokončení instalace Gentoo
      Jste skoro hotoví - ještě zbývá vytvořit uživatelské účty.
    12. Co dělat teď?
      Nyní máte systém nainstalovaný - co dál?
  • Práce s Gentoo
    Naučte se pracovat s Gentoo - instalace softwaru, změna proměnných, nastavení Portage atd.
    1. Úvod do Portage
      Tato kapitola popisuje "jednoduché" kroky, které jsou potřeba ke správě softwaru v systému.
    2. USE proměnné
      USE proměnné jsou velmi důležitou stránkou Gentoo. V této kapitole se s nimi naučíte pracovat a porozumíte tomu, jak ovlivňují Váš systém.
    3. Možnosti Portage — FEATURES
      Objevte možnosti, které Vám Portage nabízí, jako například distribuované překlady, ccache a další.
    4. Init skripty
      Gentoo používá speciální formát init skriptů, který, kromě jiných možností, podporuje rozhodování pomocí závislostí a virtuální init skripty. Tato kapitola popisuje všechny tyto aspekty a vysvětluje, jak s těmito skripty zacházet.
    5. Proměnné prostředí
      S Gentoo můžete jednoduše spravovat proměnné prostředí na Vašem systému. Vysvětlíme, jak s nimi pracovat, a podáme popis těch nejpoužívanějších.
  • Práce s Portage
    Tato kapitola jde do hloubky v popisu Portage, nástroje, který Gentoo využívá pro správu softwaru.
    1. Soubory a adresáře
      Pokud chcete opravdu poznat Portage, musíte vědět, kam ukládá svá data.
    2. Konfigurace pomocí proměnných
      Portage je plně konfigurovatelný pomocí různých proměnných nastavovaných přes konfigurační soubory nebo jako proměnné prostředí.
    3. Kombinování více větví
      Gentoo rozděluje software do více větví podle stability a podpory různých HW architektur. V této kapitole Vás naučíme, jak mohou být tyto větve nakonfigurovány a jak toto rozdělení pro konkrétní balíčky změnit.
    4. Doplňky Portage
      Portage je dodáváno s několika nástroji, které Vám mohou pomoci při správě programových balíčků. Přečtěte si tuto kapitolu, abyste zjistili, jak používat dispatch-conf a jiné nástroje.
    5. Odchylování od oficiálního stromu
      V této kapitole naleznete informace, jak používat vlastní strom Portage, jak synchronizovat pouze kategorie, které Vás zajímají, jak vkládat balíčky a podobně.
  • Konfigurace sítě v Gentoo
    Kompletní průvodce sítěmi v systémech Gentoo.
    1. Úvod
      Návod, jak rychle zprovoznit Vaše připojení k síti v běžných podmínkách.
    2. Pokročilá konfigurace
      V této kapitole zjistíte, jak konfigurace pracuje, což se Vám bude hodit později při popisu modulů pro sítě.
    3. Moduly pro sítě
      Síťování je v Gentoo řešeno velice flexibilně - zde jsou vysvětleny věci jako výběr DHCP klientů, nastavení bondingu, bridgovaní či VLANů.
    4. Bezdrátové sítě
      Nastavení bezdrátových sítí není přímočaré. Doufejme, že Vám tato kapitola pomůže.
    5. Přidávání funkcí
      Jste-li dobrodružné povahy, můžete do nastavení síťování přidat vlastní funkce.
    6. Správa nastavení sítí
      Pro uživatele notebooků a ty, kdo své stroje přenášejí mezi různými sítěmi.

A. Instalace Gentoo

1. O instalaci Gentoo Linuxu

1.a. Úvod

Vítejte!

V první řadě, vítejte v Gentoo. Chystáte se vstoupit do světa možností a výkonu. Gentoo je celé o volbách - během instalace i po ní to sami mnohokrát poznáte. Můžete si vybrat, kolik budete chtít kompilovat sami, jak systém nainstalovat, který systémový logger chcete použít atd.

Gentoo je rychlá moderní metadistribuce čistého a flexibilního designu. Je postavené na svobodném softwaru a neskrývá před svými uživateli, co má pod kůží. Portage, systém pro správu balíčků, je napsán v Pythonu, což znamená, že si můžete snadno přečíst i změnit jeho zdrojový kód. Portage používá distribuci ve formě zdrojového kódu (avšak můžete samozřejmě používat i již předkompilované balíčky). Gentoo se konfiguruje pomocí normálních textových souborů. Jinými slovy, otevřenost všude.

Je důležité, abyste porozuměli, že volby jsou to, co umožňuje Gentoo existovat. Snažíme se, abychom Vás nenutili do ničeho, co nechcete. Pokud máte pocit, že ano, ohlaste to, prosím.

Jak je instalace rozdělená?

Na instalaci Gentoo se můžeme dívat jako na proceduru o deseti krocích, odpovídajících kapitolám 2 až 11. Každý krok vede dál:

  • po kroku 1 jste ve fungujícím prostředí, připraveni instalovat Gentoo
  • po kroku 2 je Vaše připojení k Internetu funkční
  • po kroku 3 jsou Vaše pevné disky připraveny k instalaci
  • po kroku 4 je Vaše instalační prostředí připraveno a můžete do něj přes chroot vstoupit
  • po kroku 5 jsou klíčové balíčky, stejné na všech Gentoo strojích, nainstalovány
  • po kroku 6 je připraveno linuxové jádro
  • po kroku 7 máte zapsánu většinu konfiguračních souborů svého Gentoo systému
  • po kroku 8 jsou nainstalovány nezbytné systémové nástroje, které si můžete zvolit z hezkého seznamu
  • po kroku 9 je bootloader, který jste si vybrali, nainstalován a nakonfigurován, a jste přihlášeni do své nové instalace
  • po kroku 10 je Vaše Gentoo linuxové prostředí připraveno k prozkoumání

Je-li Vám dána určitá volba, děláme vše k tomu, abychom Vám vysvětlili výhody i nevýhody. Potom budeme pokračovat s předvolenou možností, které budeme dále říkat "Výchozí: ". Jiné možnosti jsou označeny "Alternativní: ". Nemyslete si, že předvolba je to, co doporučujeme -- je to jen to, co si myslíme, že použije většina uživatelů.

Někdy můžete provést dobrovolný krok -- takové situace jsou označeny jako "Volitelně: " a tudíž nejsou vyžadovány k instalaci Gentoo. Některé volitelné kroky však závisí na Vašich předchozích rozhodnutích. Upozorníme Vás, až se něco takového stane, jak předem při rozhodování, tak tehdy, když je popisován volitelný krok.

Jaké jsou mé volby?

Gentoo můžete nainstalovat mnoha různými způsoby. Můžete si stáhnout jedno z našich instalačních CD a instalovat pak z něj. Stejně tak můžete instalační proces spouštět ze stávající linuxové distribuce, z bootovatelného CD jako například Knoppix, z prostředí spuštěného přes síť, ze záchranné diskety a tak dále.

Tento dokument popisuje instalaci z Gentoo LiveCD nebo, v určitých případech, z prostředí spuštěného přes síť. Předpokládáme, že chcete instalovat poslední dostupné verze každého balíčku. Pokud chcete provést instalaci bez použití sítě, měli byste si přečíst Gentoo 2006.1 Handbook, který obsahuje instalační pokyny pro taková prostředí.

Plánujete-li použít GRP, Gentoo Referenční Platformu - kolekci předkompilovaných balíčků pro okamžité použití ihned po instalaci, budete muset použít instrukce popsané v Gentoo 2006.1 Handbooku.

Pro pomoc s jinými instalačními postupy si prosím přečtěte naši příručku pro alternativní instalaci. Také máme připravené tipy a triky pro instalaci Gentoo, které Vám rovněž mohou pomoci. Pokud si myslíte, že jsou tyto instrukce příliš komplikované, můžete použít naši příručku pro rychlou instalaci dostupnou na přehledu dokumentace, má-li Vaše architektura takový dokument dostupný.

Také máte více možností: můžete kompilovat celý systém od základů či použít předkompilované prostředí, díky kterému můžete svoji instalaci Gentoo uvést do chodu v minimálním čase. A samozřejmě můžete použít řešení prostřední, ve kterém nekompilujete vše, ale začínáte od předem připraveného základu.

Problémy?

Pokud narazíte na problém při instalaci či v dokumentaci, navštivte prosím náš systém pro sledování chyb a zkontrolujte, zda je chyba známá. Pokud ne, vytvořte prosím oznámení, abychom ji mohli vyřešit. Nebojte se vývojářů, kterým budou chyby přiřazeny, většinou lidi nejíme.

Dokumentace, kterou nyní čtete, je sice specifická pro Vaši architekturu, ale může obsahovat zmínky i o architekturách jiných. Je to způsobeno tím, že velká část Gentoo Handbooku je společná všem (abychom ušetřili kapacity lidí pro další dokumentaci). Budeme se snažit Vás nezmást.

Pokud si nejste jistí, zda je problém na Vaší straně (udělali jste chybu i přesto, že jste si pozorně přečetli dokumentaci) či u nás (udělali jsme chybu i přes veškeré testování), můžete se přidat na #gentoo na irc.freenode.net. Samozřejmě jste vítání i v jiném případě :-).

Pokud máte dotaz k Gentoo, podívejte se na náš seznam často kladených otázek, dostupný z přehledu Gentoo dokumentace. Také si můžete prohlédnout FAQ na našich fórech. Pokud nemůžete najít odpověď zde, zeptejte se na #gentoo, našem IRC kanále na irc.freenode.net. Ano, pár z nás jsou závisláci vysedávající na IRC :-)

2. Výběr správného instalačního média

2.a. Hardwarové požadavky

Úvod

Předtím, než začneme, seznámíme Vás s hardwarovými požadavky, které potřebujete splnit, abyste mohli Gentoo úspěšně nainstalovat na svůj stroj.

Hardwarové požadavky

Minimal CD LiveCD
CPU i486 nebo novější i686 nebo novější
Paměť 64 MB 128 MB
Místo na disku 1.5 GB (kromě místa pro swap)
Místo pro swap alespoň 256 MB

2.b. Gentoo instalační CD

Úvod

Gentoo instalační CD jsou bootovatelná CD, obsahující samostatné prostředí Gentoo. Umožňují Vám spustit Váš počítač do Linuxu z CD. Během spouštění je detekován Váš hardware a systém načítá odpovídající ovladače. Gentoo instalační CD jsou spravovaná vývojáři Gentoo.

Všechna instalační CD Vám umožňují nabootovat, nastavit síť, vytvořit diskové oddíly a začít instalovat Gentoo z Internetu. V současnosti Vám nabízíme dvě instalační CD, která jsou stejně vhodná pro instalaci Gentoo, plánujete-li instalovat přes Internet s použitím nejnovějších verzí dostupných balíčků.

Důležité: Pokud si přejete instalovat Gentoo bez funkčního připojení k Internetu, případně použít instalátor, řiďte se prosím instalačními instrukcemi z Gentoo 2006.0 Handbooku.

Poskytujeme tato instalační CD:

  • Gentoo Minimal instalační CD, malé bootovatelné CD bez zbytečností, jehož jediným cílem je spustit systém, připravit síť a pokračovat s instalací Gentoo.
  • Gentoo Installer LiveCD obsahuje všechno, co pro instalaci Gentoo potřebujete. Můžete jej spustit do grafického prostředí a spustit instalátor, buď konzolový, nebo s grafickou nadstavbou, a nebo si přečíst přiloženou dokumentaci.

Abychom Vám pomohli s rozhodnutím, které instalační CD potřebujete, sepsali jsme jejich hlavní výhody a nevýhody.

Gentoo Minimal instalační CD

Minimal instalační CD se jmenuje install-x86-minimal-2006.0.iso a zabírá pouze 49 MB místa na disku. Můžete ho použít k instalaci Gentoo, ale pouze a jenom s funkčním připojením k Internetu.

Minimal instalační CD Výhody a nevýhody
+ nejmenší velikost downloadu
- neobsahuje žádný stage3 soubor, archiv Portage stromu ani předkompilované balíčky, a tudíž není vhodné pro instalaci bez sítě

Gentoo Installer LiveCD

Installer LiveCD se jmenuje livecd-i686-installer-2006.1.iso a zabírá 697 MB. Můžete ho použít pro instalaci Gentoo, a to dokonce bez funkčního připojení k Internetu. Může se hodit tehdy, když budete chtít později instalovat Gentoo na jiný počítač, který nemá přístup k Internetu.

Installer LiveCD Výhody a nevýhody
+ obsahuje vše, co potřebujete, můžete jej použít i bez připojení k síti.
- obrovská velikost ke stažení

Stage3 archiv

Satge3 v sobě zahrnuje minimální Gentoo prostředí vhodné pro pokračování v instalaci podle tohoto manuálu. Dříve popisoval Gentoo Handbook instalaci pomocí jednoho ze tří stage archivů; tyto jsou stále distribuovány, avšak oficiální instalační metoda používá pouze stage3. Zajímá-li vás, jak provést instalaci ze stage1 či stage2, přečtěte si prosím Gentoo FAQ, konkrétně Jak nainstalovat Gentoo ze stage1 nebo stage2.

Stage3 tarbally si můžete stáhnout z adresáře releases/x86/2006.1/stages/ na jakémkoli z našich oficiálních mirrorů; na LiveCD obsaženy nejsou.

2.c. Stažení, vypálení a boot instalačního CD

Stažení a vypálení instalačního CD

Vybrali jste si použití Gentoo instalačního CD. Nejprve začneme jeho stažením a vypálením. Již jsme probrali různá instalační CD, ale kde je můžete najít?

Všechna instalační CD si můžete stáhnout z jednoho z našich mirrorů. Instalační CD jsou umístěna v adresáři releases/x86/2006.1/installcd/.

Uvnitř tohoto adresáře najdete ISO soubory, kompletní obrazy CD připravené k zápisu na CD-R.

V případě, že chcete zjistit, zda je stažený soubor poškozen, můžete si jej zkontrolovat podle kontrolního součtu generovaného algoritmem MD5. Porovnejte kontrolní součet staženého souboru s údajem, který uvádíme (například install-x86-minimal-2006.1.iso.DIGESTS). Pro ověření můžete použít md5sum (Unix/Linux) nebo md5sum pro Windows.

Jiná možnost ověření stažených souborů je použití GnuPG k ověření poskytovaného kryptografického podpisu (soubor končící na .asc). Stáhněte si tento soubor a obstarejte si veřejný klíč:

Výpis kódu 3.1: Obstarání si veřejného klíče

$ gpg --keyserver subkeys.pgp.net --recv-keys 17072058

Nyní ověřte podpis:

Výpis kódu 3.2: Ověření kryptografického podpisu

$ gpg --verify <signature file> <downloaded iso>

Abyste mohli vypálit stažený ISO soubor, musíte zvolit takzvané "raw" vypalování. Konkrétní způsob závisí na programu, který používáte. Zde popíšeme cdrecord a K3B; více informací můžete najít v našem Gentoo FAQ.

  • Přes cdrecord pouze napište cdrecord dev=/dev/hdc <stažený iso soubor> (nahraďte /dev/hdc cestou k zařízení CD-RW vypalovačky).
  • Používáte-li K3B, vyberte Tools > CD > Burn Image. Poté vyberte Váš ISO soubor v oblasti 'Image to Burn' a klikněte na Start.

Bootování z instalačního CD

Jakmile jste vypálili svá instalační CD, je čas z nich nabootovat počítač. Vyjměte všechna CD z mechanik, restartujte systém a vstupte do BIOSu. Obvykle se to dělá zmáčknutím klávesy DEL, F1 nebo ESC, záleží na Vašem BIOSu. Změňte pořadí bootování, aby byla CD-ROM vyzkoušena před pevným diskem. Často je tato volba k dispozici pod položkou "CMOS Setup". Pokud tento krok neprovedete, systém se prostě spustí z pevného disku a CD-ROM bude ignorovat.

Nyní vložte instalační CD do CD-ROM mechaniky a rebootujte. Měli byste uvidět výzvu "boot: ". Na této obrazovce můžete zmáčknout Enter pro začátek bootování počítače s přednastavenými volbami, a nebo můžete specifikovat volby vlastní napsáním jména kernelu a případnými parametry. Boot začne stisknutím klávesy Enter.

Zvolení kernelu? Ano, na instalačním CD je k dispozici více kernelů. Předvolený se jmenuje gentoo. Další jádra jsou pro zvláštní hardwarové požadavky; varianty -nofb zakazují framebuffer, grafický režim.

Níže najdete krátký přehled dostupných kernelů:

Kernel Popis
gentoo předvolený 2.6 kernel s podporou více CPU (SMP)
gentoo-nofb stejné jako gentoo, ale bez podpory framebufferu, grafického módu
memtest86 pro otestování paměti RAM na chyby

Můžete také specifikovat parametry pro kernel. Reprezentují volitelná nastavení, která můžete (de)aktivovat dle libosti. Následující seznam je překlad toho, co uvidíte na obrazovce po zmáčknutí F2.

Výpis kódu 3.3: Dostupné bootovací možnosti kernelu

- agpgart       načte agpgart (použijte při grafických problémech, zatuhnutí)
- acpi=on       načte podporu pro ACPI firmware
- ide=nodma     zakázat DMA pro špatně fungující IDE zařízení
- doscsi        otestovat systém na SCSI zařízení (může znefunkčnit některé ethernetové karty)
- dopcmcia      spustí službu pcmcia pro PCMCIA CD-ROMy
- nofirewire    zakáže moduly pro IEEE1394 v initrd (pro Firewire CD-ROMy, atd)
- nokeymap      zakáže výběr klávesových map pro neanglické rozvržení klávesnic
- docache       načte celé CD-ROM do paměti, takže budete moci provést
                `umount /mnt/cdrom` a připojit jiné
- nodetect      zakáže spouštení hwsetup/kudzu a hotplug
- nousb         zakáže načítání USB modulů z initrd, zakáže hotplug
- nodhcp        zakáže automatické použití DHCP
- nohotplug     zakáže automatické spuštění služby hotplug
- noapic        zakáže APIC (zkuste, pokud máte hardwarové problémy s NIC, SCSI, atd)
- noevms        zakáže načítání EVMS2 modulů
- nolvm2        zakáže načítání modulů pro LVM2
- hdx=stroke    umožní rozvrhnout a používat celý disk, i když Váš BIOS
                nepodporuje velké disky
- noload=modul1,[modul2,[...]]
                zakáže načítání konkrétních jaderných modulů

Nyní nabootujte ze svého LiveCD; pokud nejste spokojeni s výchozím gentoo kernelem, vyberte jiné jádro, případně zadejte bootovací parametry. Jako příklad, pokud byste chtěli spustit gentoo kernel s parametrem dopcmcia:

Výpis kódu 3.4: Bootování z instalačního CD

boot: gentoo dopcmcia

Budete uvítání bootovací obrazovkou a ukazatelem průběhu. Pokud instalujete Gentoo na systému s neanglickou klávesnicí, ujistěte se, že jste zmáčkli Alt-F1 pro přepnutí do výřečného módu a sledujte výzvy. Pokud není proveden výběr během 10 sekund, je zvolena výchozí anglická klávesnice a proces spouštění počítače pokračuje. Jakmile je bootování dokončeno, budete automaticky přihlášeni do "živého" Gentoo Linuxu jako "root", superuživatel. Měli byste mít rootovskou relaci ("#") na aktuální konzoli a být schopni se přepínat do jiných konzolí přes stisknutí Alt-F2, Alt-F3 a Alt-F4. Do výchozí konzole se vrátíte přes zmáčknutí Alt-F1.

Nyní budeme pokračovat konfigurací speciálního hardwaru.

Konfigurace speciálního hardwaru

Když instalační CD bootuje, zkouší detekovat všechna hardwarová zařízení a načíst vhodné moduly jádra jako ovladače. Ve velké většině případů odvádí skvělou práci, avšak někdy nenačte vše, co potřebujete. Jestliže PCI autodetekce vynechala nějaký hardware, budete muset načíst potřebné moduly ručně.

V dalším příkladě zkusíme načíst modul 8139too (podpora pro určitý druh síťových adaptérů):

Výpis kódu 3.5: Načítání jaderných modulů

# modprobe 8139too

Potřebujete-li podporu PCMCIA, měli byste spustit init skript pcmcia:

Výpis kódu 3.6: Spouštění PCMCIA init skriptu

# /etc/init.d/pcmcia start

Volitelně: Vyladění výkonu disků

Pokud jste pokročilý uživatel, možná budete chtít vyladit výkon Vašeho IDE disku pomocí hdparm. Pomocí parametru -tT můžete otestovat výkon disku (spusťte jej několikrát, abyste dosáhli přesnějších výsledků):

Výpis kódu 3.7: Testování výkonu disků

# hdparm -tT /dev/hda

Pro vyladění můžete použít jakýkoli z těchto příkladů a nebo experimentujte sami. Jako disk zde používáme /dev/hda, nahraďte jej podle Vašeho disku:

Výpis kódu 3.8: Ladění výkonu disků

(Activace DMA:)
# hdparm -d 1 /dev/hda

(Aktivace bezpečných voleb:)
# hdparm -d 1 -A 1 -m 16 -u 1 -a 64 /dev/hda

Volitelně: uživatelské účty

Pokud plánujete dát dalším lidem přístup do Vašeho instalačního prostředí nebo si jen chcete popovídat pomocí irssi bez rootovských privilegií (bezpečnostní důvody), musíte vytvořit nezbytné uživatelské účty a změnit rootovské heslo.

Ke změně hesla superuživatele root použijte nástroj passwd:

Výpis kódu 3.9: Změna rootovského hesla

# passwd
New password: (vložte své nové heslo)
Re-enter password: (napište jej ještě jednou)

Pro vytvoření uživatelského účtu nejdříve zadáme osobní údaje a poté heslo. K těmto účelům použijeme useradd a passwd. V dalším přikladu vytvoříme uživatele jménem "jenicek".

Výpis kódu 3.10: Vytvoření uživatelského účtu

# useradd -m -G users jenicek
# passwd jenicek
New password: (vložte heslo uživatele jenicek)
Re-enter password: (a zopakujte jej)

Nyní můžete změnit své user-id z roota na nově vytvořeného uživatele pomocí su:

Výpis kódu 3.11: Změna user id

# su - jenicek

Volitelně: zobrazení dokumentace během instalace

Pokud chcete zobrazit Gentoo Handbook (ať už z CD či z webu) během instalace, ujistěte se, že jste vytvořili uživatelský účet (viz Volitelně: uživatelské účty). Poté zmáčkněte Alt-F2 pro přepnutí do nového terminálu a přihlášení.

Pokud chcete zobrazit dokumentaci z CD, můžete ihned spustit links a studovat:

Výpis kódu 3.12: Zobrazení dokumentace z CD

# links /mnt/cdrom/docs/html/index.html

Je však lepší použít on-line Gentoo Handbook, protože může obsahovat novější informace než dokumentace na CD. Můžete tak rovněž učinit pomocí links, ale až poté, co dokončíte kapitolu Konfigurace sítě, jinak nebudete moci přistupovat k Internetu:

Výpis kódu 3.13: Zobrazení online dokumentace

# links http://www.gentoo.org/doc/cs/handbook/handbook-x86.xml

Zpátky do svého původního terminálu se můžete vrátit stisknutím Alt-F1.

Volitelně: spuštění SSH démona

Pokud chcete povolit ostatním uživatelům přístup k tomuto počítači během instalace (možná proto, že Vám s ní pomohou, nebo ji dokonce provedou za Vás), musíte jim vytvořit uživatelský účet a možná jim prozradit rootovské heslo (pouze tehdy, pokud jim zcela důvěřujete).

Ke spuštění SSH démona spusťte následující příkaz:

Výpis kódu 3.14: Spuštění SSH démona

# /etc/init.d/sshd start

Abyste však byli schopni používat sshd, musíte nejprve nastavit síť, pokračujte proto kapitolou konfigurace sítě.

3. Konfigurace sítě

3.a. Automatická detekce nastavení sítě

Možná to prostě funguje?

Je-li Váš systém zapojen do ethernetové sítě používající DHCP protokol, je velmi pravděpodobné, že se již vše automaticky nastavilo. Pokud připojení funguje, měli byste být schopni používat síťové aplikace dostupné na instalačním CD, jako například ssh, scp, ping, irssi, wget a links.

Pokud je síť funkční, příkaz /sbin/ifconfig ukáže další síťová rozhraní kromě lo, například eth0:

Výpis kódu 1.1: /sbin/ifconfig pro funkční konfiguraci sítě

# /sbin/ifconfig
(...)
eth0      Link encap:Ethernet  HWaddr 00:50:BA:8F:61:7A
          inet addr:192.168.0.2  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::50:ba8f:617a/10 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1498792 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1284980 errors:0 dropped:0 overruns:0 carrier:0
          collisions:1984 txqueuelen:100
          RX bytes:485691215 (463.1 Mb)  TX bytes:123951388 (118.2 Mb)
          Interrupt:11 Base address:0xe800

Volitelně: nastavení serverů proxy

Pokud přistupujete k Internetu přes proxy, budete ji během instalace potřebovat správně nastavit. Je to jednoduché - pouze nastavíte proměnnou obsahující informace o proxy serveru.

Ve většině případů stačí definovat proměnnou obsahující jméno serveru. V tomto příkladu budeme předpokládat, že se Vaše proxy jmenuje proxy.gentoo.org a komunikuje na portu 8080.

Výpis kódu 1.2: Nastavení proxy serverů

(Pokud proxy filtruje protokol HTTP)
# export http_proxy="http://proxy.gentoo.org:8080"
(Pokud proxy filtruje FTP provoz)
# export ftp_proxy="ftp://proxy.gentoo.org:8080"
(Pokud filtruje komunikaci pomocí RSYNC)
# export RSYNC_PROXY="proxy.gentoo.org:8080"

Pokud Vaše proxy vyžaduje uživatelské jméno a heslo, použijte pro proměnnou tento zápis:

Výpis kódu 1.3: Přidání uživatelského jména a hesla do proměnné definující proxy

http://uživatelské-jméno:heslo@proxy.gentoo.org:8080

Testování sítě

Můžete zkusit ping na DNS server Vašeho ISP (najdete ho v /etc/resolv.conf) a nějakou webovou stránku podle vlastního výběru, abyste se ujistili, že pakety odeslané Vaším strojem dojdou do sítě, že správně funguje převod DNS jmen na IP adresy atd.

Výpis kódu 1.4: Další testování sítě

# ping -c 3 www.yahoo.com

Pokud jste nyní schopni používat svoji síť, můžete přeskočit zbytek této sekce a pokračovat přípravou disků. Pokud ne, čtěte dále.

3.b. Automatická konfigurace sítě

Pokud Vaše síť ihned nefunguje, umožní Vám některá instalační média použít net-setup (pro klasické i bezdrátové sítě), pppoe-setup (pro uživatele ADSL) či pptp (pro uživatele PPTP - dostupné na architekturách x86, amd64, alpha, ppc a ppc64).

Pokud Vaše instalační médium tyto nástroje neobsahuje a Vaše síť ještě nefunguje, pokračujte ruční konfigurací sítě.

Výchozí: použití net-setup

Nejjednodušší cestou, jak nastavit síť, i když se nespustila automaticky, je spustit skript net-setup:

Výpis kódu 2.1: Spuštění skriptu net-setup

# net-setup eth0

net-setup se Vás zeptá na pár otázek o Vašem síťovém prostředí. Když je vše hotovo, měli byste mít k dispozici fungující síťové připojení. Otestujte jej, jak bylo ukázáno výše. Pokud testy proběhnou úspěšně, gratulujeme, jste připraveni nainstalovat Gentoo. Přeskočte zbytek této sekce a pokračujte přípravou disků.

Pokud Vaše síť ještě pořád nefunguje, pokračujte ruční konfigurací sítě.

Volitelně: použití RP-PPPoE

Potřebujete-li PPPoe k připojení k Internetu, všechny verze instalačních CD vám usnadní život pomocí rp-pppoe. Použijte poskytnutý skript pppoe-setup ke konfiguraci spojení. Budete požádáni o jméno ethernetového zařízení (síťové karty), ke které je připojen Váš ADSL modem, IP adresy Vašich DNS serverů a dotázáni, zda potřebujete jednoduchý firewall.

Výpis kódu 2.2: Použití rp-pppoe

# pppoe-setup
# pppoe-start

Pokud je něco špatně, překontrolujte, že jste správně zadali uživatelské jméno a heslo (/etc/ppp/pap-secrets nebo /etc/ppp/chap-secrets), a ujistěte se, že jste zadali správný název síťové karty. Pokud ethernetové zařízení neexistuje, budete muset načíst odpovídající jaderné moduly - v tom případě byste měli pokračovat ruční konfigurací sítě, kde je vysvětleno, jak na to.

Pokud všechno funguje, pokračujte přípravou disků.

Volitelně: použití PPTP

Poznámka: Podpora PPTP je dostupná pouze na x86.

Pokud potřebujete podporu PPTP, můžete použít pptpclient z naších instalačních CD. Avšak nejprve se musíte ujistit, že je Vaše konfigurace v pořádku. Změňte obsah /etc/ppp/pap-secrets resp. /etc/ppp/chap-secrets tak, aby obsahoval správnou kombinaci uživatelského jména a hesla:

Výpis kódu 2.3: Editace /etc/ppp/chap-secrets

# nano -w /etc/ppp/chap-secrets

Nyní nastavte /etc/ppp/options.pptp, pokud potřebujete:

Výpis kódu 2.4: Editace /etc/ppp/options.pptp

# nano -w /etc/ppp/options.pptp

Když je vše hotovo, prostě spusťte pptp (spolu s možnostmi, které jste nemohli nastavit v options.pptp), abyste se připojili na server:

Výpis kódu 2.5: Připojování k dial-in serveru

# pptp <server ip>

Nyní pokračujte přípravou disků.

3.c. Ruční konfigurace sítě

Načtení odpovídajících jaderných modulů

Instalační CD se při bootování snaží detekovat všechna připojená zařízení a načíst pro ně odpovídající ovladače ve formě jaderných modulů. Ve velké většině případů odvádí skvělou práci, avšak může se stát, že nenačte vše, co je potřeba.

Pokud net-setup nebo pppoe-setup selžou, je možné, že Vaše síťová karta nebyla detekována. To znamená, že pro ni budete muset načíst odpovídající jaderný modul ručně.

Abyste viděli, jaké jaderné moduly pro síťování poskytujeme, použijte ls:

Výpis kódu 3.1: Zobrazení poskytovaných modulů

# ls /lib/modules/`uname -r`/kernel/drivers/net

Vybraný ovladač síťové karty nakonec načteme příkazem modprobe:

Výpis kódu 3.2: Použití modprobe k načtení jaderného modulu

(Jako příklad zde načítáme modul pcnet32)
# modprobe pcnet32

Pro zjištění, zda je Vaše síťová karta nyní správně obsluhovaná, použijte ifconfig. Pokud vše proběhlo v pořádku, měli byste vidět něco podobného:

Výpis kódu 3.3: Testování dostupnosti Vaší síťové karty proběhlo úspěšně

# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr FE:FD:00:00:00:00
          BROADCAST NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

Pokud však uvidíte tuto chybu, síťová karta nebyla detekována:

Výpis kódu 3.4: Testování dostupnosti Vaší síťové karty selhalo

# ifconfig eth0
eth0: error fetching interface information: Device not found

Pokud máte více síťových karet, jsou pojmenovány eth0, eth1, atd. Ujistěte se, že karta, kterou chcete používat, pracuje dobře, a zapamatujte si, jak se jmenuje, pro další použití v tomto dokumentu. Budeme předpokládat, že používáte kartu pojmenovanou eth0.

Pokud nyní pracuje Vaše síťová karta správně, můžete zkusit znovu použít net-setup nebo pppoe-setup; je možné, že už budou fungovat. Avšak pro ty otrlejší mezi čtenářstvem popíšeme, jak nastavit síť ručně.

Vyberte si jednu z těchto sekcí podle Vaší sítě:

Použití DHCP

DHCP (Dynamic Host Configuration Protocol) umožňuje automatické nastavení se síti souvisejících údajů (jako je například IP adresa, maska (netmask), adresa všesměrového vysílání (broadcast), výchozí brána (gateway), adresy DNS serverů (nameserver) atd). Funguje jenom tehdy, je-li v síti dostupný DHCP server nebo když ho poskytuje Váš internetový provider. Aby síťové rozhraní obdrželo tyto informace, použijte dhcpcd:

Výpis kódu 3.5: Použití dhcpcd

# dhcpcd eth0
Někteří správci sítí požadují, abyste použili
jméno počítače a domény poskytnuté DHCP serverem.
V takovém případě použijte:
# dhcpcd -HD eth0

Pokud to funguje (vyzkoušejte ping na nějaký internetový server, třeba Google), máte nastaveno vše, co potřebujete, a jste připraveni pokračovat. Přeskočte zbytek této sekce a pokračujte přípravou disků.

Příprava bezdrátového přístupu

Poznámka: Podpora příkazu iwconfig je dostupná pouze na instalačních CD architektur x86, amd64 a ppc. Bezdrátová rozšíření však můžete zprovoznit i jinde pomocí instrukcí projektu linux-wlan-ng.

Používáte-li bezdrátovou (802.11) kartu, možná budete nejprve potřebovat nakonfigurovat bezdrátová nastavení své karty. Abyste zjistili jejich současný stav, můžete použít iwconfig. Spuštění iwconfig může ukázat něco jako:

Výpis kódu 3.6: Zobrazení současných bezdrátových nastavení

# iwconfig eth0
eth0      IEEE 802.11-DS  ESSID:"GentooNode"
          Mode:Managed  Frequency:2.442GHz  Access Point: 00:09:5B:11:CC:F2
          Bit Rate:11Mb/s   Tx-Power=20 dBm   Sensitivity=0/65535
          Retry limit:16   RTS thr:off   Fragment thr:off
          Power Management:off
          Link Quality:25/10  Signal level:-51 dBm  Noise level:-102 dBm
          Rx invalid nwid:5901 Rx invalid crypt:0 Rx invalid frag:0 Tx
          excessive retries:237 Invalid misc:350282 Missed beacon:84

Poznámka: Některé bezdrátové karty mohou používat jméno zařízení wlan0 nebo ra0 místo eth0. Neznáte-li správný název, můžete jej zjistit spuštěním příkazu iwconfig bez dalších parametrů.

Většina uživatelů bude potřebovat nastavit pouze dva parametry, ESSID (zvané též jméno bezdrátové sítě) a případně WEP klíč. Patří-li zobrazená ESSID a adresa Access Pointu vašemu přístupovému bodu a nepoužíváte-li WEP, je Vaše bezdrátová síť nastavena. Pokud potřebujete změnit ESSID či nastavit WEP klíč, postupujte takto:

Výpis kódu 3.7: Změna ESSID a/nebo přidání WEP klíče

(Toto nastaví jméno sítě na "GentooNode")
# iwconfig eth0 essid GentooNode

(Toto nastaví WEP klíč v hexadecimálním formátu)
# iwconfig eth0 key 1234123412341234abcd

(Toto nastaví ASCII klíč - na začátku jej doplňte "s:")
# iwconfig eth0 key s:nějaké-heslo

Nyní si můžete prohlédnout platná nastavení bezdrátové sítě pomocí iwconfig. Jakmile je bezdrátová část funkční, můžete pokračovat konfigurací IP vrstvy, jak je popsáno v další části (porozumění síťovým technologiím) nebo můžete použít nástroj net-setup, jak již bylo popsáno.

Porozumění síťovým technologiím

Poznámka: Znáte-li svoji IP adresu, broadcast adresu, masku sítě a nameservery, můžete přeskočit tuto podsekci a pokračovat částí použití ifconfig a route.

Pokud vše výše zmíněné selhalo, budete si muset nastavit svoji síť ručně. Není to obtížné, ale nejprve však musíte být seznámeni s některými základními pojmy, abyste si svou síť mohli nastavit k plné spokojenosti. Až dočtete tuto část, budete vědět, co to je gateway, k čemu slouží netmask (maska sítě), jak vypadá broadcast adresa (adresa všesměrového vysílání) a proč potřebujeme nameservery.

V síti jsou všechny stroje (host) identifikovány pomocí své IP adresy (Internet Protocol address). Tato adresa je kombinací čtyř čísel od 0 do 255. No, alespoň ji tak vnímáme - ve skutečnosti sestává ze 32 bitů (jedničky a nuly). Podívejme se na jednu takovou:

Výpis kódu 3.8: Příklad IP adresy

IP adresa (číslo):      192.168.0.2
IP adresa (bity):       11000000 10101000 00000000 00000010
                        -------- -------- -------- --------
                           192      168       0        2

Takováto IP adresa je unikátní pro každý stroj (host), mluvíme-li o dosažitelných sítích (tj. všechny stroje, se kterými můžete komunikovat, musí mít unikátní IP adresu). Abyste byli schopni rozlišovat mezi stroji uvnitř Vaší sítě a mezi stroji v sítích jiných, je IP adresa rozdělena do dvou částí: do části identifikující síť a části identifikující stroj (host).

Oddělení je provedeno pomocí masky sítě, skupiny jedniček doplněné skupinou nul. Ta část IP adresy, které v síťové masce odpovídají jedničky, identifikuje síť (síťová část), zbytek identifikuje stroj v síti. Maska sítě může být zapsána ve stejném formátu jako IP adresa:

Výpis kódu 3.9: Příklad oddělení sítě a stroje

IP adresa:      192      168      0         2
             11000000 10101000 00000000 00000010
Maska sítě:  11111111 11111111 11111111 00000000
                255      255     255        0
            +--------------------------+--------+
                     Network              Host

Jinými slovy, 192.168.0.14 je součástí naší ukázkové sítě, zatímco 192.168.1.2 už ne.

Broadcast adresa je IP adresa, která má síťovou část stejnou jako Vaše IP adresa, ale druhou část, která normálně identifikuje stroj, tvoří samé jedničky. Každý stroj ve Vaší síti naslouchá na této adrese, ta je proto používána pro posílání paketů určených pro všechny stanice v síti.

Výpis kódu 3.10: Broadcast adresa

IP adresa:     192      168      0         2
            11000000 10101000 00000000 00000010
Broadcast:  11000000 10101000 00000000 11111111
               192      168      0        255
           +--------------------------+--------+
                     Network             Host

Abyste mohli brouzdat po Internetu, musíte vědět, kudy na něj, přes který počítač. Tento počítač se nazývá gateway, brána. Protože je to normální stroj, má také normální IP adresu (například 192.168.0.1).

Řekli jsme si, že každý stroj musí mít svoji vlastní IP adresu. Abyste s ním však mohli komunikovat podle jména, musíte jej nepjrve nějak převést na IP adresu (například z  dev.gentoo.org udělat 64.5.62.82). Služba, která se o to stará, se nazývá name service, a abyste ji mohli využívat, musíte seznámit svůj stroj s adresami takzvaných nameserverů neboli serverů DNS. Uděláte to tak, že je zapíšete do souboru /etc/resolv.conf.

V některých případech slouží Vaše gateway také jako nameserver. Pokud ne, budete muset zadat nameservery poskytované Vaším ISP.

Abychom si to shrnuli - před pokračováním budete potřebovat následující informace:

Položka Příklad
Vaše IP adresa 192.168.0.2
Maska sítě 255.255.255.0
Broadcast adresa 192.168.0.255
Gateway 192.168.0.1
Nameserver(y) 195.130.130.5, 195.130.130.133

Použití ifconfig a route

Nastavení sítě sestává ze tří kroků: nejprve si přiřadíme IP adresu pomocí ifconfig, poté nastavíme routování (směrování) na bránu pomocí route a nakonec zapíšeme IP adresy nameserverů do souboru /etc/resolv.conf.

Pro přiřazení IP adresy budete potřebovat svoji IP adresu, broadcast adresu a masku sítě. Poté proveďte tento příkaz, ve kterém nahraďte ${IP_ADDR} svojí IP adresou, ${BROADCAST} svojí broadcast adresou a ${NETMASK} maskou sítě:

Výpis kódu 3.11: Použití ifconfig

# ifconfig eth0 ${IP_ADDR} broadcast ${BROADCAST} netmask ${NETMASK} up

Nyní nastavte routování pomocí route. Nahraďte ${GATEWAY} IP adresou brány:

Výpis kódu 3.12: Použití route

# route add default gw ${GATEWAY}

Nyní otevřete /etc/resolv.conf ve svém oblíbeném editoru (v našem příkladu použijeme nano):

Výpis kódu 3.13: Vytvoření /etc/resolv.conf

# nano -w /etc/resolv.conf

Nyní nastavte své DNS servery; použijte následující příklad jako šablonu. Nahraďte ${NAMESERVER1} a ${NAMESERVER2} odpovídajícími adresami nameserverů:

Výpis kódu 3.14: Šablona pro /etc/resolv.conf

nameserver ${NAMESERVER1}
nameserver ${NAMESERVER2}

To je všechno. Nyní otestujte síť pomocí pingu na nějaký internetový server, třeba Google. Pokud to funguje, gratulujeme, nyní jste připraveni nainstalovat Gentoo. Pokračujte přípravou disků.

4. Příprava disků

4.a. Úvod do blokových zařízení

Bloková zařízení

Nyní se podíváme na to, jak Gentoo Linux i Linux obecně zachází s disky a souvisejícími věcmi, jako jsou třeba souborové systémy, diskové oddíly a bloková zařízení. Až budete s těmito věcmi srozuměni, provedeme Vás procesem vytvoření diskových oddílů a souborových systémů (filesystémů), na které později nainstalujete svůj Gentoo Linux.

Na začátku představíme bloková zařízení. Nejznámější z nich jsou zřejmě ta, která reprezentují první IDE zařízení v linuxovém systému, a to sice /dev/hda. Pokud používáte SCSI nebo SATA zařízení, váš první pevný disk bude /dev/sda.

Tato bloková zařízení poskytují abstraktní rozhraní pro přístup k disku. Uživatelské programy je mohou používat, aniž by se museli starat o to, jestli je Váš disk IDE, SCSI a nebo něco jiného - programy mohou disk používat prostě jako úložiště dat, jako množinu souvislých, libovolně přístupných bloků o velikosti 512 bajtů.

Diskové oddíly

I když můžete teoreticky použít celý disk pro uchování instalace svého systému, téměř nikdy se to tak nedělá. Namísto toho se celé blokové zařízení reprezentující disk rozdělí do několika menších, lépe spravovatelných částí, tvořících opět další bloková zařízení. Na x86 systémech se jim říká diskové oddíly čili partition.

Oddíly se dělí do tří typů: primární, rozšířený a logický.

Informace o primárních diskových oddílech je uchovány přímo v MBR (master boot record) disku. Protože je MBR velmi malý (512 bajtů), mohou být založeny pouze čtyři primární oddíly, například /dev/hda1/dev/hda4.

Rozšířený oddíl je speciální primární oddíl, který může obsahovat další oddíly. Původně rozšířené oddíly neexistovaly, ale protože se omezení na pouhé čtyři oddíly na disk ukázalo jako silně limitující, byl tento způsob zaveden jako zpětně kompatibilní metoda.

Logický oddíl sídlí v rozšířeném oddíle. Záznamy o logických oddílech nejsou součástí MBR, ale jsou uschovány uvnitř rozšířeného oddílu.

Pokročilé metody ukládání dat

Instalační CD pro architekturu x86 podporují EVMS a LVM2, metody zvyšující flexibilitu správy diskových oddílů. Během instalace se zaměříme na "běžná" schémata, ale je dobré vědět, že máte EVMS i LVM2 k dispozici.

4.b. Návrh rozdělení disku

Výchozí rozdělení disku

Pokud Vás nezajímají detaily návrhu rozdělení disku, můžete použít výchozí schéma, které používáme pro účely této příručky:

Oddíl Systém souborů Velikost Popis
/dev/hda1 ext2 32M bootovací oddíl
/dev/hda2 (swap) 512M oddíl pro swap
/dev/hda3 ext3 zbytek disku oddíl pro kořenový adresář

Zajímá-li Vás, jak velké oddíly vytvářet nebo kolik jich je potřeba, čtěte dále, jinak pokračujte rozdělením disku podle části rozdělení disků - fdisk.

Kolik a jak velké?

Počet oddílů úzce závisí na Vašem prostředí. Máte-li kupříkladu hodně uživatelů, asi budete chtít vyhradit pro /home vlastní diskový oddíl pro zvýšení bezpečnosti a lepší zálohování. Pokud instalujete Gentoo na budoucí mailserver, měli byste mít oddělený /var, protože bude sloužit pro ukládání všech mailů. Dobrý výběr souborového systému poté zvýší výkon celého systému. Herní servery budou mít pravděpodobně oddělený /opt, protože většina herních serverů se instaluje právě tam. Důvody jsou podobné jako u /home: bezpečnost a zálohy. V každém případě je důležité ponechat dostatek místa na /usr - nejen kvůli nainstalovaným aplikacím, ale i proto, že jen samotný strom Portage zabírá okolo 500 MB bez stažených zdrojových kódů.

Jak vidíte, velmi záleží na tom, čeho chcete dosáhnout. Oddělené oddíly nebo svazky mají tyto výhody:

  • můžete si vybrat nejlepší systém souborů pro každý oddíl či svazek
  • systému nedojde volné místo kvůli tomu, že jeden nefunkční nástroj začne nepřetržitě zapisovat soubory do oddílu či svazku
  • je-li to nezbytné, kontroly systému souborů mohou být zkráceny, protože se jich může provádět více paralelně (toto je velmi patrné zejména při konfiguracích s více fyzickými disky)
  • můžete zlepšit bezpečnost připojením některých oddílů či svazků v režimu pouze pro čtení, nosuid (ignorování setuid bitů), noexec (ignorování příznaků "spustitelný") atd.

Avšak více oddílů má jednu velkou nevýhodu: pokud není takové rozdělení provedeno správně, můžete skončit se systémem, který má hodně volného místa v jednom oddílu a žádné jinde. Navíc na SCSI a SATA existuje limit 15 oddílů na disk.

Jako ukázkové rozdělení Vám předvedeme 20GB disk používaný v demonstračním notebooku (obsahuje webserver, mailserver, GNOME,...):

Výpis kódu 2.1: Příklad využití souborových systémů

$ df -h
Filesystem    Type    Size  Used Avail Use% Mounted on
/dev/hda5     ext3    509M  132M  351M  28% /
/dev/hda2     ext3    5.0G  3.0G  1.8G  63% /home
/dev/hda7     ext3    7.9G  6.2G  1.3G  83% /usr
/dev/hda8     ext3   1011M  483M  477M  51% /opt
/dev/hda9     ext3    2.0G  607M  1.3G  32% /var
/dev/hda1     ext2     51M   17M   31M  36% /boot
/dev/hda6     swap    516M   12M  504M   2% <not mounted>
(nerozdělené místo pro budoucí použití: 2 GB)

/usr je v našem příkladu poměrně plný (z 85%), ale jakmile máme programy nainstalované, /usr už moc neroste. Mohlo by se zdát, že několik GB místa pro oddíl /var je příliš; pamatujte však, že Portage tento oddíl používá pro kompilaci balíčků, a proto pokud pro /var ponecháte méně místa, třeba 1 GB, budete muset v souboru /etc/make.conf nastavit proměnnou PORTAGE_TMPDIR tak, aby odkazovala do adresáře s dostatkem volného místa, zejména při kompilaci velkých balíčků, jako například OpenOffice.

4.c. Rozdělení disků - fdisk

V následující části vysvětlíme, jak přenést ukázkové rozvržení oddílů na Váš pevný disk. Použijeme:

Oddíl Popis
/dev/hda1 bootovací oddíl
/dev/hda2 oddíl pro swap
/dev/hda3 oddíl pro kořenový adresář

Změňte si toto rozvržení podle vlastních potřeb.

Zobrazení současného rozvržení oddílů

fdisk je populární a mocný nástroj k rozdělení disku na oddíly. Spusťte fdisk nad svým diskem (v našem příkladě použijeme /dev/hda):

Výpis kódu 3.1: Spouštíme fdisk

# fdisk /dev/hda

Uvnitř nástroje fdisk budete uvítáni výzvou, která bude vypadat přibližně takto:

Výpis kódu 3.2: Výzva fdisku

Command (m for help):

Zadejte p pro zobrazení současného rozvržení oddílů:

Výpis kódu 3.3: Ukázkové rozdělění disku

Command (m for help): p

Disk /dev/hda: 240 heads, 63 sectors, 2184 cylinders
Units = cylinders of 15120 * 512 bytes

Device Boot    Start       End    Blocks   Id  System
/dev/hda1             1        14    105808+  83  Linux
/dev/hda2            15        49    264600   82  Linux swap
/dev/hda3            50        70    158760   83  Linux
/dev/hda4            71      2184  15981840    5  Extended
/dev/hda5            71       209   1050808+  83  Linux
/dev/hda6           210       348   1050808+  83  Linux
/dev/hda7           349       626   2101648+  83  Linux
/dev/hda8           627       904   2101648+  83  Linux
/dev/hda9           905      2184   9676768+  83  Linux

Command (m for help):

Tento disk je nakonfigurován tak, aby uchovával sedm linuxových souborových systémů (každý oddíl je vypsán jako "Linux") a jeden oddíl pro swap (vypsáno jako "Linux swap").

Odstranění všech oddílů

Nejdříve z disku odstraníme všechny oddíly. Pro odstranění oddílu napište d. Chcete-li například odstranit stávající /dev/hda1:

Výpis kódu 3.4: Odstranění oddílu

Command (m for help): d
Partition number (1-4): 1

Oddíl byl naplánován k odstranění. Již se neukáže, napíšete-li p, ale nebude vymazán, dokud nebudou změny uloženy. Pokud jste se spletli, ihned napište q a zmáčkněte Enter; Vaše oddíly nebudou odstraněny.

Nyní, chcete-li opravdu smazat všechny oddíly ve svém systému, opakovaně pište p (výpis tabulky oddílů) a poté d následované číslem oddílu k vymazání. Nakonec budete mít tabulku oddílů prázdnou:

Výpis kódu 3.5: Prázdná tabulka oddílů

Disk /dev/hda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes

Device Boot    Start       End    Blocks   Id  System

Command (m for help):

Nyní je kopie tabulky oddílů v paměti, nad kterou program pracuje, prázdná, a můžeme tedy přistoupit k vytvoření oddílů podle již probraného schématu. Samozřejmě, pokud používáte vlastní rozvržení, nemůžete se řídit těmito instrukcemi do posledního slova.

Vytvoření bootovacího oddílu

Napřed vytvoříme malý bootovací oddíl. Pro vytvoření nového oddílu zmáčkněte n následované 1 pro výběr primárního typu oddílu. Program se Vás zeptá na první cylindr ("First cylinder"), zmáčkněte Enter. Na dotaz na poslední cylindr ("Last cylinder") napište +32M, aby měl oddíl velikost 32MB:

Výpis kódu 3.6: Vytvoření bootovacího oddílu

Command (m for help): n
Command action
  e   extended
  p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-3876, default 1): (zmáčkněte Enter)
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-3876, default 3876): +32M

Když nyní zadáte p, měli byste uvidět následující rozvržení:

Výpis kódu 3.7: Vytvořený bootovací oddíl

Command (m for help): p

Disk /dev/hda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes

Device Boot    Start       End    Blocks   Id  System
/dev/hda1          1        14    105808+  83  Linux

Nyní musíte označit oddíl jako bootovací; dosáhnete toho napsáním a a 1. Vyberete-li znovu p, uvidíte * ve sloupci "Boot".

Vytvoření oddílu pro swap

Nyní vytvořme oddíl pro swap. Napište n pro nový oddíl, p pro výběr primárního typu oddílu, poté 2, protože se chystáte vytvořit druhý primární oddíl čili /dev/hda2. Při dotazu na první cylindr zmáčkněte Enter, při dotazu na druhý zadejte +512M, protože chcete vytvořit oddíl o velikosti 512MB. Poté vyberte t pro nastavení typu oddílu - napsáním 2 vyberete oddíl, který jste právě vytvořili, a poté zadejte 82, abyste nastavili jeho typ na "Linux Swap". Nakonec můžete vybrat p, abyste se přesvědčili, že tabulka oddílů vypadá podobně, jako tato:

Výpis kódu 3.8: Výpis tabulky oddílů po vytvoření oddílu pro swap

Command (m for help): p

Disk /dev/hda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes

Device Boot    Start       End    Blocks   Id  System
/dev/hda1 *        1        14    105808+  83  Linux
/dev/hda2         15        81    506520   82  Linux swap

Vytvoření oddílu pro hlavní souborový systém

Nyní vytvořme oddíl pro uložení kořenového systému souborů, takzvanou "root partition". Nový oddíl vytvoříte napsáním n, poté p, aby fdisk věděl, že chcete vytvořit primární oddíl, a 3, neboť chcete vytvořit třetí primární oddíl, /dev/hda3. Při dotazu na první cylindr zmáčkněte Enter, totéž na dotaz o posledním, protože chcete, aby oddíl zabíral veškeré zbylé místo na disku. Nakonec se můžete pomocí p přesvědčit, jak jste to zvládli. Výsledek by měl vypadat přibližně takto:

Výpis kódu 3.9: Výpis tabulky oddílů po vytvoření oddílu pro kořenový systém souborů

Command (m for help): p

Disk /dev/hda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes

Device Boot    Start       End    Blocks   Id  System
/dev/hda1 *        1        14    105808+  83  Linux
/dev/hda2         15        81    506520   82  Linux swap
/dev/hda3         82      3876  28690200   83  Linux

Uložení rozvržení oddílů

Pro uložení provedených změn a ukončení programu fdisk napište w.

Výpis kódu 3.10: Uložení a ukončení nástroje fdisk

Command (m for help): w

Nyní máme připravené diskové oddíly, můžeme tedy přistoupit k vytvoření souborových systémů.

4.d. Vytvoření souborových systémů

Úvod

Máte připravené diskové oddíly, je tedy čas na nich vytvořit systém souborů, filesystém. Pokud je Vám jedno, jaký filesystém si zvolit, a jste spokojeni s výchozí volbou, kterou používáme v této příručce, pokračujte vytvořením souborového systému na oddílu, jinak čtěte dále, abyste se dozvěděli o dostupných filesystémech.

Filesystémy?

Linuxové jádro podporuje mnoho různých souborových systémů. Představíme si ext2, ext3, ReiserFS, XFS a JFS, které jsou na linuxových strojích používané nejčastěji.

ext2 je pravý a vyzkoušený linuxový souborový systém, avšak nemá žurnálování metadat (metadata journaling), což znamená, že rutinní prohlídky filesystému při spuštění počítače mohou být časově poměrně náročné. Nyní je k dispozici široký výběr souborových systémů nové generace, u kterých probíhá kontrola konzistence velmi rychle a jsou proto všeobecně preferovány před svými nežurnálovými konkurenty. Žurnálové filesystémy zabraňují dlouhým prodlevám při spuštění počítače, kdy systém souborů nevypadá úplně v pořádku.

ext3 je žurnálovací verze souborového systému ext2, poskytující žurnálování metadat pro rychlou obnovu spolu s vylepšenými žurnálovacími režimy jako "full data journaling" a "ordered data journaling". ext3 je velmi dobrý a spolehlivý filesystém. Má možnost doplňkového indexování pomocí b-stromů, které umožňuje dosahovat vysokého výkonu v téměř každé situaci (pro jeho povolení přidejte příkazu mke2fs parametr -O dir_index). Zkrátka a dobře, ext3 je výborný filesystém.

ReiserFS je souborový systém založený na B*-tree, který poskytuje velmi dobrý celkový výkon a vysoce předčí jak ext2, tak ext3, pokud jde o zpracování malých souborů (menších než 4kB), často i 10x až 15x. ReiserFS je také velmi dobře škálovatelný a má žurnálování metadat. Od kernelu 2.4.18 je ReiserFS stabilní a použitelný stejně dobře jako všeobecný systém souborů i v extrémních případech, jako je vytváření obrovských filesystémů, uchování mnoha malých souborů a nebo naopak velmi velkých souborů či adresářů obsahujících desetitisíce položek.

XFS je systém s žurnálováním metadat přicházející s širokou paletou možností, optimalizovaný pro škálovatelnost. Doporučujeme ho pouze na linuxové systémy s high-end SCSI nebo Fibre Channel zařízeními pro ukládání dat a s UPS. Protože XFS uchovává mnoho dat v RAM, špatně navržené programy (ty, které si nedávají dobrý pozor při zápisu na disk, a jejich poměrně hodně) mohou ztratit velké množství dat, pokud systém havaruje.

JFS je vysoce výkonný žurnálovací systém souborů od IBM. Teprve nedávno se stal připraveným k produkčnímu nasazení a tudíž ještě nemůže být jeho stabilita objektivně hodnocena, ať už pozitivně či negativně.

Vytvoření souborového systému na oddílu

Pro vytvoření systému souborů na diskovém oddíle jsou k dispozici tyto odpovídající nástroje:

Filesystém Příkaz k vytvoření
ext2 mke2fs
ext3 mke2fs -j -O dir_index
reiserfs mkreiserfs
xfs mkfs.xfs
jfs mkfs.jfs

Chcete-li kupříkladu mít bootovací oddíl (v našem příkladu /dev/hda1) na ext2 a kořenový filesystém (/dev/hda3 dle příkladu) na ext3, použijete:

Výpis kódu 4.1: Vytvoření souborového systému na oddílu

# mke2fs /dev/hda1
# mke2fs -j -O dir_index /dev/hda3

Nyní vytvořte systémy souborů na svých diskových oddílech či logických svazcích.

Aktivace oddílu se swapem

mkswap je příkaz používaný k inicializaci oddílů se swapem:

Výpis kódu 4.2: Inicializace swap oddílu

# mkswap /dev/hda2

Pro aktivaci swap oddílu použijte swapon:

Výpis kódu 4.3: Aktivace swap oddílu

# swapon /dev/hda2

Vytvořte a aktivujte oddíl se swapem pomocí výše zmíněných příkazů.

4.e. Připojení souborových systémů

Nyní jsou oddíly připraveny a inicializovány, a je je tedy možno připojit, slouží k tomu příkaz mount. Nezapomeňte vytvořit nezbytné adresáře, do kterých budete připojovat každý vytvořený systém souborů. Jako příklad připojíme naše souborové systémy / a /boot:

Výpis kódu 5.1: Připojení souborových systémů

# mount /dev/hda3 /mnt/gentoo
# mkdir /mnt/gentoo/boot
# mount /dev/hda1 /mnt/gentoo/boot

Poznámka: Chcete-li, aby Váš /tmp byl na odděleném oddílu, změňte po připojení jeho práva: chmod 1777 /mnt/gentoo/tmp. Toto platí i pro /var/tmp.

Také budeme potřebovat připojit souborový systém proc (virtuální rozhraní jádra) na /proc, avšak nejdříve musíme na nové filesystémy umístit naše soubory.

Pokračujte instalací instalačních souborů.

5. Instalace instalačních souborů

5.a. Instalace stage archivu

Nastavení data a času

Před pokračováním budete muset nastavit systémový čas. Špatně nastavené hodiny mohou vést k divným chybám v budoucnu.

Pro ověření aktuálního data a času spusťte date:

Výpis kódu 1.1: Ověření data a času

# date
Fri Mar 29 16:21:18 UTC 2005

Pokud je zobrazené datum nebo čas špatně, nastavte ho pomocí date MMDDhhmmRRRR (Měsíc, Den, hodina, minuta a Rok). Údaje jsou pro časové pásmo UTC, místní čas bude nastaven později. Například pro nastavení aktuálního data na 29. března 2005, 16:21 proveďte toto:

Výpis kódu 1.2: Nastavení data a času v UTC

# date 032916212004

Rozhodnutí

Další krok, který potřebujete udělat, je instalace stage3 archivu do systému. Máte možnost stáhnout požadované soubory z Internetu a nebo, nabootovali jste-li do Universal instalačního CD, zkopírovat je přímo z něj. Pokud máte Universal CD a stage, kterou chcete použít, je na CD, bylo by její stahování z Internetu zbytečné, protože stage soubory jsou stejné. Ve většině případů Vám při rozhodování, kterou stage použít, pomůže příkaz uname -m.

5.b. Výchozí: použití stage z Internetu

Stažení stage archivu

Přejděte do přípojného bodu (mountpoint), kam je připojená Vaše nová instalace Gentoo, pravděpodobně /mnt/gentoo:

Výpis kódu 2.1: Přechod do Gentoo mountpointu

# cd /mnt/gentoo

Podle použitého instalačního média máte k dispozici pár možností, jak stáhnout stage. Máte-li dostupný links, můžete ihned otevřít seznam Gentoo mirrorů a vybrat si nějaký Vám blízký.

Nemáte-li links, měli byste mít k dispozici lynx. Potřebujete-li projít přes proxy, nastavte proměnné http_proxy a ftp_proxy:

Výpis kódu 2.2: Nastavení informací o proxy pro lynx

# export http_proxy="http://proxy.server.com:port"
# export ftp_proxy="http://proxy.server.com:port"

Dále budeme předpokládat, že máte k dispozici links.

Vejděte do adresáře releases/ následovaného Vaší architekturou (například x86/) a verzí Gentoo (2006.1/) a do podadresáře stages/. Zde byste měli vidět všechny stage soubory pro svoji architekturu (mohou být uloženy do podadresářů podle různých podarchitektur). Vyberte jednu a zmáčkněte D ke stažení. Až budete hotoví, stiskem Q ukončíte prohlížeč.

Výpis kódu 2.3: Zobrazení seznamu mirrorů pomocí links

# links http://www.gentoo.org/main/en/mirrors.xml

(Potřebujete-li s linksem použít proxy:)
# links -http-proxy proxy.server.com:8080 http://www.gentoo.org/main/en/mirrors.xml

Ujistěte se, že jste si stáhli stage3 archiv — instalace ze stage1 či stage2 nejsou podporovány.

Chcete-li otestovat integritu staženého archivu, použijte md5sum a porovnejte výsledek s MD5 součtem poskytnutým na zrcadle. Například pro kontrolu x86 stage archivu:

Výpis kódu 2.4: Ukázkové ověření integrity stage archivu

# md5sum -c stage3-x86-2006.1.tar.bz2.DIGESTS
stage3-x86-2006.1.tar.bz2: OK

Rozbalení stage archivu

Důležité: LiveCD "Installer" pro architekturu xáž neobsahuje stage tarbally, budete si je proto muset stáhnout z Internetu.

Nyní rozbalte archiv do systému. Použijeme tar, protože to je nejjednodušší metoda:

Výpis kódu 2.5: Rozbalení stage

# tar xvjpf stage3-*.tar.bz2

Ujistěte se, že zadáváte stejné parametry (xvjpf) — x znamená rozbalit (extract), v výřečný (verbose) pro zobrazování toho, co se děje, během průběhu operace (volitelně), j znamená rozbalit pomocí bzip2, p zachovat přístupová práva a konečně f pro určení, že chceme rozbalit soubor a ne stdin (standardní vstup procesu).

Poznámka: Instalační CD některých architektur (například MIPS) a bootovací image používají tar zabudovaný do BusyBoxu, který nyní nepodporuje volbu v, použijte na nich proto prosím pouze xjpf.

Nyní, když je stage rozbalená, pokračujme instalací Portage.

5.c. Alternativní: použití stage z instalačního CD

Rozbalení stage

Důležité: Používáte-li LiveCD instalátoru (Installer LiveCD) na architektuře x86, stage archivy na CD nenajdete, budete si je muset stáhnout z Internetu.

Stage soubory jsou na CD v adresáři /mnt/cdrom/stages. Abyste zobrazili jejich výpis, použijte ls:

Výpis kódu 3.1: Seznam dostupných stage souborů

# ls /mnt/cdrom/stages

Odpoví-li systém chybou, možná potřebujete nejdříve disk CD-ROM připojit:

Výpis kódu 3.2: Připojení CD-ROM

# ls /mnt/cdrom/stages
ls: /mnt/cdrom/stages: No such file or directory
# mount /dev/cdroms/cdrom0 /mnt/cdrom
# ls /mnt/cdrom/stages

Nyní přejděte do přípojného bodu (mountpoint), kam je připojená Vaše nová instalace Gentoo, pravděpodobně /mnt/gentoo:

Výpis kódu 3.3: Přechod do Gentoo mountpointu

# cd /mnt/gentoo

Nyní rozbalíte stage archiv dle Vašeho výběru pomocí tar. Ujistěte se, že používáte stejné parametry (xvjpf)! (v je opět volitelné a nemusí pracovat s některými verzemi nástroje tar). V dalším příkladu rozbalíme archiv stage3-<subarchitektura>-2006.1.tar.bz2. Nahraďte toto jméno jménem souboru archivu své stage.

Výpis kódu 3.4: Rozbalení stage

# tar xvjpf /mnt/cdrom/stages/stage3-<subarchitektura>-2006.1.tar.bz2

Nyní, když je stage rozbalená, pokračujme instalací Portage.

5.d. Instalace Portage

Aktualizace archivu Portage stromu

Nyní musíte nainstalovat archiv Portage stromu (Portage snapshot), kolekci souborů, které informují Portage o tom, jaký software můžete nainstalovat, jaké profily jsou dostupné atd.

Stažení a instalace Portage snapshotu

Vejděte do mountpointu, kam jste připojili své souborové systémy (pravděpodobně /mnt/gentoo):

Výpis kódu 4.1: Změna adresáře do Gentoo mountpointu

# cd /mnt/gentoo

Spusťte links (či lynx) přejděte na náš seznam Gentoo mirrorů. Vyberte si mirror, který je Vám blízko, a otevřete adresář snapshots/. Odtud stáhněte nejnovější archiv (portage-latest.tar.bz2) tím, že ho vyberete a zmáčknete D.

Výpis kódu 4.2: Zobrazení seznamu mirrorů

# links http://www.gentoo.org/main/en/mirrors.xml

Nyní stisknutím Q ukončete prohlížeč. Portage snapshot je nyní uložen v adresáři /mnt/gentoo.

Pokud budete chtít ověřit integritu staženého snapshotu, porovnejte nástrojem md5sum MD5 hash vašeho souboru a souboru na mirrorech:

Výpis kódu 4.3: Kontrola integrity staženého souboru

# md5sum -c portage-latest.tar.bz2.md5sum
portage-latest.tar.bz2: OK

V dalším kroku rozbalíme archiv do filesystému. Ujistěte se, že používáte přesně stejné parametry, poslední je velké C, ne c.

Výpis kódu 4.4: Rozbalení Portage snapshotu

# tar xvjf /mnt/gentoo/portage-latest.tar.bz2 -C /mnt/gentoo/usr

5.e. Nastavení voleb pro kompilaci

Úvod

Pro optimalizaci Gentoo můžete nastavit několik proměnných, které ovlivní chování Portage. Všechny tyto proměnné mohou být nastaveny jako proměnné prostředí (použitím export), avšak takováto změna není stálá. Abyste nastavení zachovali, nabízí Portage svůj konfigurační soubor /etc/make.conf. Ten budeme nyní editovat.

Poznámka: Komentovaný výpis všech možných proměnných můžete najít v /mnt/gentoo/etc/make.conf.example. Pro úspěšnou instalaci Gentoo potřebujete nastavit pouze dále zmíněné proměnné.

Spusťte svůj oblíbený editor (v této příručce užíváme nano), abychom mohli změnit zmíněné optimalizační proměnné:

Výpis kódu 5.1: Otevření /etc/make.conf

# nano -w /mnt/gentoo/etc/make.conf

Jak jste si pravděpodobně všimli, soubor make.conf.example má určitou strukturu - komentáře začínají na "#", jiné řádky definují proměnné pomocí syntaxe PROMĚNNÁ="hodnota". Soubor make.conf má ten samý formát. Některé proměnné probereme dále.

CHOST

Proměnná CHOST definuje "build host" vašeho systému. Její hodnota by již měla být správně nastavena na správnou hodnotu. Neměňte ji, protože byste mohli zničit celý systém. Pokud vám její hodnota přijde divná, možná používáte špatný stage3 archiv.

CFLAGS a CXXFLAGS

Proměnné CFLAGS a CXXFLAGS definují optimalizační parametry pro C (resp. C++) kompilátor gcc. I když je zde definujeme obecně, nejlepších výsledků dosáhnete, pokud je budete optimalizovat pro každý program zvlášť, neboť každý program je jiný.

make.conf byste měli definovat takové optimalizační parametry, o kterých si myslíte, že Váš systém zlepší celkově a obecně. Nenastavujte tyto proměnné na experimentální hodnoty; příliš optimalizací může přinutit programy selhat (spadnout, nebo ještě hůře, fungovat špatně).

Nepopíšeme si všechna možná nastavení optimalizací. Pokud je chcete znát všechny, přečtěte si GNU Online Manuál(y) nebo gcc info stránku (info gcc -- pouze z funkčního linuxového systému). Samotný soubor make.conf.example také obsahuje hodně příkladů a informací, nezapomeňte si ho přečíst.

První nastavení je volba -march=, která specifikuje jméno cílové architektury. Možné volby jsou popsány jako komentáře v souboru make.conf.example. Například pro x86 Athlon XP:

Výpis kódu 5.2: Nastavení GCC march

# uživatelé AMD64 toužící po nativním 64bitovém systému by měli použít -march=k8
# uživatelé EM64T nechť zvolí -march=nocona
-march=athlon-xp

Druhý parametr je -O (velké písmeno O, nikoli nula), který specifikuje třídu optimalizací prováděnou gcc. Možné hodnoty jsou s (optimalizace na velikost - size), 0 (nula - pro žádné optimalizace), 1, 2 nebo 3 pro více rychlostně orientovaných optimalizací (každá třída provádí stejné optimalizace jako třída předchozí plus nějaké další). Například pro optimalizace třídy 2:

Výpis kódu 5.3: Nastavení O pro GCC

-O2

Dalším populárním parametrem je -pipe, který použije roury (pipes) namísto dočasných souborů pro komunikaci mezi různými stupni kompilace.

Pamatujte, že použití -fomit-frame-pointer (které neudržuje frame pointer v registrech pro funkce, které to nepotřebují) může mít kritický vliv na ladění aplikací!

Do definice CFLAGS a CXXFLAGS byste měli zahrnout více optimalizačních příznaků, jako v následujícím příkladě:

Výpis kódu 5.4: Definice proměnných CFLAGS a CXXFLAGS

CFLAGS="-march=athlon-xp -pipe -O2"   # uživatelé AMD64 by měli použít march=k8
                                      # uživatelé EM64T nechť zvolí march=nocona
CXXFLAGS="${CFLAGS}"                  # pro obě proměnné použijeme stejné nastavení

MAKEOPTS

Proměnnou MAKEOPTS definujete, kolik paralelních kompilací má probíhat najednou, zatímco Portage instaluje software. Dobrá hodnota je počet CPU ve Vašem systému plus jedna, ale neplatí to absolutně.

Výpis kódu 5.5: MAKEOPTS pro normální, jednoprocesorový systém

MAKEOPTS="-j2"

Připravit, pozor, teď!

Aktualizujte /mnt/gentoo/etc/make.conf podle svých představ a uložte jej (uživatelé nano zmáčknou Ctrl-X). Nyní jste připraveni pokračovat instalací základního Gentoo systému.

6. Instalace základního Gentoo systému

6.a. Chroot

Volitelně: volba mirrorů

Abyste mohli stáhnout potřebné archivy zdrojových kódů co nejrychleji, je doporučeno nastavit používání blízkého mirroru (zrcadla, serveru obsahujícího potřebné soubory). Portage zjišťuje použité mirrory podle proměnné GENTOO_MIRRORS v souboru make.conf. Nejbližší (a tudíž zpravidla i ten nejrychlejší) mirror si můžete vybrat z našeho seznamu a nebo můžete využít nástroj mirrorselect, který Vám výběr usnadní hezkým rozhraním.

Výpis kódu 1.1: Použítí mirrorselect pro nastavení proměnné GENTOO_MIRRORS

# mirrorselect -i -o >> /mnt/gentoo/etc/make.conf

Varování: Nevybírejte žádná IPv6 zrcadla - naše stage soubory je v současné době neumožňují použít.

Druhé důležité nastavení je proměnná SYNC, opět v souboru make.conf. Obsahuje jméno rsync serveru, který chcete používat pro synchronizaci svého Portage stromu (sbírky souborů ebuild, skriptů obsahujících vše, co Portage potřebuje pro stažení a instalaci softwaru). I když můžete nastavit proměnnou RSYNC ručně (pro použití v České republice je doporučená hodnota rsync://rsync.europe.gentoo.org/gentoo-portage), mirrorselect Vám může ulehčit práci:

Výpis kódu 1.2: Výběr rsync mirroru pomocí mirrorselect

# mirrorselect -i -r -o >> /mnt/gentoo/etc/make.conf

Po použití nástroje mirrorselect je doporučeno překontrolovat nastavení v souboru /mnt/gentoo/etc/make.conf!

Kopírování nastavení DNS

Ještě je potřeba zkopírovat nastavení DNS z instalačního CD do nového systému, aby síť správně pracovala i nadále. Tyto informace jsou uloženy v souboru /etc/resolv.conf.

Výpis kódu 1.3: Kopírování informací o DNS

(Paramter "-L" je potřeba k tomu, abychom nekopírovali případný symbolický odkaz)
# cp -L /etc/resolv.conf /mnt/gentoo/etc/resolv.conf

Připojení souborových systémů /proc a /dev

Připojte souborový systém /proc do /mnt/gentoo/proc, aby instalace v novém prostředí mohla využívat informace poskytované jádrem, a rovněž zpřístupněte i systém /dev:

Výpis kódu 1.4: Připojení /proc a /dev

# mount -t proc none /mnt/gentoo/proc
# mount -o bind /dev /mnt/gentoo/dev

Vstup do nového prostředí

Nyní jsou všechny diskové oddíly inicializovány a základní prostředí připraveno, můžeme do něj tedy vstoupit. Použijeme k tomu chroot, proces je proto také nazýván chrooting. Aktivní prostředí se změní z instalačního média (například z instalačního CD) do nově instalovaného systému (do nového prostředí).

Chroot je tvořen třemi kroky. Nejprve změníme aktuální root z / (na instalačním médiu) na /mnt/gentoo (na nově inicializovaných oddílech), poté vytvoříme nové prostředí pomocí env-update (vytvoření proměnných prostředí) a nakonec tyto proměnné načteme do paměti přes source.

Výpis kódu 1.5: Chroot do nového prostředí

# chroot /mnt/gentoo /bin/bash
# env-update
>> Regenerating /etc/ld.so.cache...
# source /etc/profile
# export PS1="(chroot) $PS1"

Gratulujeme! Nyní jste uvnitř svého nového Gentoo Linuxu. Samozřejmě ještě zdaleka nejste hotovi, proto Vám ostatně také ještě zbývá pár kapitol :-)

6.b. Konfigurace Portage

Aktualizace stromu Portage

Nyní byste měli aktualizovat svůj Portage strom na nejnovější verzi. emerge --sync to zařídí:

Výpis kódu 2.1: Aktualizace stromu Portage

# emerge --sync
(Používáte-li pomalý terminál, jako jsou například některé
framebuffery nebo sériová konzole, můžete tento proces zrychlit přidáním
volby --quiet:)
# emerge --sync --quiet

Blokuje-li Váš firewall protokol rsync, můžete použít emerge-webrsync, který stáhne a nainstaluje aktualizovaný strom Portage jinou metodou.

Pokud dostanete varování, že je k dispozici nová verze Portage a že byste jej měli zaktualizovat, je dobré tak učinit. Aktualizaci Portage provedete příkazem emerge portage.

Výběr správného profilu

Nejprve si vysvětlíme, co profil znamená.

Profil je základ každého Gentoo systému. Nejen, že specifikuje výchozí hodnoty CHOST, CFLAGS a jiných důležitých proměnných, ale zároveň nastavuje, jaké verze balíčků bude systém používat. Toto vše udržují vývojáři Gentoo.

Dříve se uživatelé o profily téměř vůbec nezajímali. Avšak na architekturách x86, hppa a alpha je nyní možné zvolit z více možností; je k dispozici jeden profil pro jádra řady 2.4 a jeden pro řadu 2.6. Bez dvou profilů by se integrace jader řady 2.6 zkomplikovala. Rovněž uživatelé architektur ppc a ppc64 mají k dispozici více profilů; detaily budou zmíněny později.

Zjistit, jaký profil právě používáte, můžete tímto příkazem:

Výpis kódu 2.2: Ověření systémového profilu

# ls -FGg /etc/make.profile
lrwxrwxrwx  1 48 Apr  8 18:51 /etc/make.profile -> ../usr/portage/profiles/default-linux/x86/2006.0/

Používáte-li jednu z výše zmíněných tří architektur, výchozí profil používá jádro řady 2.6. Toto nastavení je doporučené, ale máte možnost jej změnit.

Někteří uživatelé mohou chtít nainstalovat systém založený na starším profilu využívajícím linuxové jádro řady 2.4. Máte-li k tomu dobrý důvod, nejprve se přesvědčte o tom, že takový profil existuje. Na architektuře x86 použijte tento příkaz:

Výpis kódu 2.3: Zjištění, zda další profil existuje

# ls -d /usr/portage/profiles/default-linux/x86/no-nptl/2.4
/usr/portage/profiles/default-linux/x86/no-nptl/2.4

Ve výše uvedeném příkladu vidíte, že hledaný profil existuje (tj. příkaz ls si nestěžoval na nenalezený soubor či adresář). Profil není doporučeno měnit, avšak chcete-li tak učinit, máte možnost:

Výpis kódu 2.4: Přepnutí na profil 2.4

(Ujistěte se, že používáte správnou architekturu; následující příklad je pro x86)
# ln -snf /usr/portage/profiles/default-linux/x86/no-nptl/2.4 /etc/make.profile
(Výpis souborů profilu 2.4)
# ls -FGg /etc/make.profile/
total 12
-rw-r--r--  1 939 Dec 10 14:06 packages
-rw-r--r--  1 347 Dec  3  2004 parent
-rw-r--r--  1 573 Dec  3  2004 virtuals

Pro ppc je ve verzi 2006.0 k dispozici několik nových profilů.

Výpis kódu 2.5: PPC profily

(všeobecný PPC profil, pro všechny stroje této architektury, minimální verze)
# ln -snf /usr/portage/profiles/default-linux/ppc/ppc32/2006.0 /etc/make.profile
(profil pro G3)
# ln -snf /usr/portage/profiles/default-linux/ppc/ppc32/2006.0/G3 /etc/make.profile
(profil pro G3 Pegasos)
# ln -snf /usr/portage/profiles/default-linux/ppc/ppc32/2006.0/G3/Pegasos/ /etc/make.profile
(G4 (Altivec) profil)
# ln -snf /usr/portage/profiles/default-linux/ppc/ppc32/2006.0/G4 /etc/make.profile
(G4 (Altivec) Pegasos profil)
# ln -snf /usr/portage/profiles/default-linux/ppc/ppc32/2006.0/G4/Pegasos/ /etc/make.profile

Podobně i pro ppc64:

Výpis kódu 2.6: PPC64 profily

(všeobecný profil pro 64bit userland, pro všechny PPC64 stroje)
# ln -snf /usr/portage/profiles/default-linux/ppc/ppc64/2006.0/64bit-userland /etc/make.profile
(všeobecný profil pro 32bit userland, pro všechny PPC64 stroje)
# ln -snf /usr/portage/profiles/default-linux/ppc/ppc64/2006.0/32bit-userland /etc/make.profile
(každý profil má následující subprofily - "(userland)" je nahrazeno odpovídajícím řetězcem, viz výše)
(970 profil pro JS20)
# ln -snf /usr/portage/profiles/default-linux/ppc/ppc64/2006.0/(userland)/970 /etc/make.profile
(G5 profil)
# ln -snf /usr/portage/profiles/default-linux/ppc/ppc64/2006.0/(userland)/970/pmac /etc/make.profile
(POWER3 profil)
# ln -snf /usr/portage/profiles/default-linux/ppc/ppc64/2006.0/(userland)/power3 /etc/make.profile
(POWER4 profil)
# ln -snf /usr/portage/profiles/default-linux/ppc/ppc64/2006.0/(userland)/power4 /etc/make.profile
(POWER5 profil)
# ln -snf /usr/portage/profiles/default-linux/ppc/ppc64/2006.0/(userland)/power5 /etc/make.profile
(Profil multilib není v této verzi stabilní.)

Nastavení USE proměnných

USE je jedna z nejmocnějších proměnných, které Gentoo nabízí. Programy mohou být zkompilovány s podporou různých rozšíření, například GTK nebo QT, jiné s a nebo bez podpory SSL, některé s podporou framebufferu (svgalib) namísto X11 (X-serveru).

Většina distribucí kompiluje balíčky s podporou co nejvíce věcí, což způsobuje značnou velikost programů a delší čas spouštění, o ohromném množství závislostí ani nemluvě. Proto jsme zavedli USE.

Pomocí proměnné USE definujete klíčová slova, která jsou promítnuta do voleb pro kompilaci. Například ssl aktivuje podporu SSL v programech, které ji mohou využít. Nastavení gnome gtk -kde -qt zkompiluje Vaše programy s podporou GTK a GNOME a bez KDE a QT, takže bude Váš systém vyladěn pro GNOME.

Výchozí hodnoty USE jsou umístěny v souboru make.defaults Vašeho profilu. Tento soubor najdete v adresáři, kam ukazuje /etc/make.profile, a v jeho nadřazených adresářích. Výchozí nastavení USE jsou výsledkem kombinace všech souborů make.defaults. To, co umístíte do svého /etc/make.conf, je zpracováváno po výchozích nastaveních - pokud něco přidáte, přidá se to i do výsledku, pokud něco uberete (provádí se to znaménkem mínus před konkrétní USE volbou), bude daná možnost ze seznamu USE proměnných odstraněna, pokud v nich vůbec byla. Nikdy neměňte nic uvnitř adresáře /etc/make.profile, tato nastavení by byla ztracena při aktualizaci Portage!

Celkový popis USE proměnných můžete nalézt ve druhé části Gentoo Handbooku, USE proměnné. Ve Vašem systému je popis uložen v souboru /usr/portage/profiles/use.desc.

Výpis kódu 2.7: Zobrazení dostupných USE proměnných

# less /usr/portage/profiles/use.desc
(Můžete se posouvat pomocí kláves se šipkami, ukončíte stiskuntím "q")

Jako příklad si uvedeme nastavení USE pro systém založený na KDE s podporou DVD, ALSA a vytváření CD:

Výpis kódu 2.8: Otevření /etc/make.conf

# nano -w /etc/make.conf

Výpis kódu 2.9: Nastavení USE

USE="-gtk -gnome qt kde dvd alsa cdr"

Volitelně: lokalizační nastavení GLIBC

Pravděpodobně budete používat pouze jedno či dvě lokalizační nastavení (locales). Zadejte je do souboru /etc/locale.gen.

Výpis kódu 2.10: Editace /etc/locale.gen

# nano -w /etc/locale.gen

Následující nastavení jsou příkladem, jak povolit angličtinu (Spojené Státy) a češtinu (Česká republika) s odpovídajícími kódováními (například UTF-8):

Výpis kódu 2.11: Určení locales

en_US ISO-8859-1
en_US.UTF-8 UTF-8
cs_CZ ISO-8859-2
cs_CZ.UTF-8 UTF-8

Nyní je na čase spustit locale-gen. Tento příkaz se postará o vygenerování všech potřebných locales, jak jste určili v souboru /etc/locale.gen.

Poznámka: locale-gen je obsažena v balíčku glibc-2.3.6-r4 a novějších. Pokud používáte starší verzi, může být nyní vhodná doba pro jeho aktualizaci.

Nyní pokračujte konfigurací jádra.

7. Konfigurace kernelu

7.a. Časové pásmo

Nejprve musíte nastavit své časové pásmo, aby systém věděl, kde je umístěn. Najděte jej v /usr/share/zoneinfo a zkopírujte do /etc/localtime. Nepoužívejte prosím soubory /usr/share/zoneinfo/Etc/GMT*, protože jejich jména zcela neodpovídají obsahu, například GMT-8 je ve skutečnosti GMT+8.

Výpis kódu 1.1: Nastavení časové zóny

# ls /usr/share/zoneinfo
(použijeme časové pásmo vhodné pro Českou republiku)
# cp /usr/share/zoneinfo/Europe/Prague /etc/localtime

7.b. Instalace zdrojových kódů

Výběr jádra

Srdcem každé linuxové distribuce je kernel, linuxové jádro, tvořící vrstvu mezi uživatelskými programy a hardwarem systému. Gentoo umožňuje svým uživatelům výběr z několika možných kernelů, jejichž podrobný popis najdete v dokumentu Linuxová jádra v Gentoo.

Pro x86 systémy máme mezi jinými jádra vanilla-sources (výchozí jádro, tak, jak ho vyvíjejí linux-kernel vývojáři), gentoo-sources (jádro opatchované pro lepší výkon) a další.

Vyberte si jedno z těchto jader a nainstalujte ho pomocí emerge. USE="-doc" je nutné pro dočasné zabránění instalace xorg-x11 a dalších závislostí. USE="symlink" na nových instalacích nezbytné není, avšak zajistí správné vytvoření symbolického odkazu /usr/src/linux.

Výpis kódu 2.1: Instalace zdrojových kódů jádra

# USE="-doc symlink" emerge gentoo-sources

Podíváte-li se do adresáře /usr/src, měli byste vidět symbolický odkaz linux ukazující na zdrojové kódy Vašeho jádra. V tomto případě je nainstalován balíček gentoo-sources-2.6.17-r5 (verze, kterou používáte vy, může být jiná).

Výpis kódu 2.2: Zobrazení symbolického odkazu na zdrojové kódy jádra

# ls -l /usr/src/linux
lrwxrwxrwx    1 root     root           12 Oct 13 11:04 /usr/src/linux -> linux-2.6.17-r5

Nyní je čas nakonfigurovat a zkompilovat Váš kernel. Můžete na to použít genkernel, který sestaví všeobecně použitelné jádro, stejné, jako používá instalační CD. My si však nejprve popíšeme ruční konfiguraci, protože to je ta nejlepší cesta, jak dosáhnout nejlépe optimalizovaného prostředí.

Chcete-li si nakonfigurovat své jádro, pokračujte částí výchozí: ruční konfigurace. Chcete-li použít genkernel, měli byste místo toho použít alternativní: použití genkernelu.

7.c. Výchozí: Ruční konfigurace

Úvod

Na ruční konfiguraci jádra je často pohlíženo jako na jeden z nejtěžších kroků, které kdy musí uživatel Linuxu provést. Nic není dále od pravdy - až si nakonfigurujete pár vlastních kernelů, ani si nebudete pamatovat, že to bylo obtížné ;-)

Ale jedna věc je pravda - než začnete konfigurovat jádro, musíte znát svůj systém. Většinu informací získáte instalací balíčku pciutils (emerge pciutils) uvnitř chrootovaného prostředí. S klidným svědomím můžete ignorovat varování pcilib (například "pcilib: cannot open /sys/bus/pci/devices"), které lspci ohlásí. lspci můžete použít i v původním prostředí (bez chrootu); výsledek je stejný. Rovněž můžete spustit lsmod, abyste viděli, jaké moduly instalační CD používá, což Vám může napovědět, jaké volby při konfiguraci jádra povolit.

Nyní vejděte do adresáře se zdrojovými kódy jádra a spusťte make menuconfig. Zobrazí se Vám konfigurační menu založené na knihovně ncurses.

Výpis kódu 3.1: Spouštíme menuconfig

# cd /usr/src/linux
# make menuconfig

Budete uvítáni seznamem různých sekcí. Ukážeme si, které volby budete muset aktivovat, aby Gentoo pracovalo správně bez dalšího vylaďování.

Aktivace vyžadovaných voleb

Nejprve povolíme použití vývojového a experimentálního kódu a ovladačů. Je to potřeba, jinak se některé důležité volby nezobrazí:

Výpis kódu 3.2: Povolení použítí použití vývojového a experimentálního kódu a ovladačů

Code maturity level options --->
  [*] Prompt for development and/or incomplete code/drivers

Ujistěte se, že jste zakompilovali do jádra, ne jako modul, vše potřebné k bootu systému (například SCSI řadič). V opačném případě Váš systém nebude možné spustit.

Nyní vyberte správnou rodinu procesorů:

Výpis kódu 3.3: Výběr rodiny procesorů

Processor type and features --->
  (Změňte podle svého systému)
  (Athlon/Duron/K7) Processor family

Nyní v sekci File Systems zvolte podporu souborových systémů, které chcete používat. Nekompilujte je jako moduly, jinak Gentoo nebude schopné připojit Vaše oddíly. Také povolte Virtual memory a /proc file system.

Pokud používáte kernel řady 2.4, budete muset povolit i volbu /dev file system, protože tato řada nepodporuje udev.

Výpis kódu 3.4: Výběr nezbytných souborových systémů

(Pro jádro řady 2.4.x)
File systems --->
  [*] Virtual memory file system support (former shm fs)
  [*] /proc file system support
  [*] /dev file system support (EXPERIMENTAL)
  [*]   automatically mount /dev at boot
  [ ] /dev/pts file system for Unix98 PTYs

(Pro jádro řady 2.6.x)
File systems --->
  Pseudo Filesystems --->
    [*] /proc file system support
    [*] Virtual memory file system support (former shm fs)

(Vyberte jednu nebo více z následujících voleb, podle toho, co potřebujete)
  <*> Reiserfs support
  <*> Ext3 journalling file system support
  <*> JFS filesystem support
  <*> Second extended fs support
  <*> XFS filesystem support

Neumí-li Váš BIOS zacházet s velkými disky a vy jste je nastavili tak, aby hlásily omezenou velikost, povolte následující volbu, abyste měli přístup k celému disku:

Výpis kódu 3.5: Povolení "autogeometry resizing"

(Pouze pro jádra řady 2.4.x)
ATA/IDE/MFM/RLL support --->
  IDE, ATA and ATAPI Block devices --->
    <*>   Include IDE/ATA-2 DISK support
    [ ]     Use multi-mode by default
    [*]     Auto-Geometry Resizing support

Nezapomeňte povolit DMA pro disky:

Výpis kódu 3.6: Aktivace DMA

Device Drivers --->
  ATA/ATAPI/MFM/RLL support --->
    [*] Generic PCI bus-master DMA support
    [*]   Use PCI DMA by default when available

Používáte-li PPPoE pro připojení k Internetu nebo máte-li modem pro vytáčené připojení, budete muset povolit tyto volby:

Výpis kódu 3.7: Výběr ovladačů pro PPPoE

(Pro jádro 2.4.x)
Network device support --->
  <*> PPP (point-to-point protocol) support
  <*>   PPP support for async serial ports
  <*>   PPP support for sync tty ports

(Pro jádro 2.6.x)
Device Drivers --->
  Networking support --->
    <*> PPP (point-to-point protocol) support
    <*>   PPP support for async serial ports
    <*>   PPP support for sync tty ports

Dvě volby pro kompresi neuškodí, ale nejsou nutné, stejně jako volba PPP over Ethernet, která je použita pouze tehdy, je-li rp-pppoe nastaveno pro použití PPPoE v režimu jádra.

Potřebujete-li, nezapomeňte povolit podporu své síťové karty.

Máte-li procesor Intel, který podporuje HyperThreading (tm), a nebo víceprocesorový systém, měli byste povolit "Symmetric multi-processing support":

Výpis kódu 3.8: Povolení podpory SMP

Processor type and features  --->
  [*] Symmetric multi-processing support

Poznámka: Máte-li procesor s více jádry (multi-core), počítá se každé z nich jako samostatný procesor.

Používáte-li USB vstupní zařízení jako je klávesnice a nebo myš, nezapomeňte je rovněž povolit:

Výpis kódu 3.9: Aktivace podpory USB pro vstupní zařízení

Device Drivers --->
  USB Support --->
    <*>   USB Human Interface Device (full HID) support

Uživatelé notebooků, kteří chtějí podporu PCMCIA, by ji neměli povolit v jádře 2.4, protože novější ovladače jsou k dispozici pomocí balíčku pcmcia-cs, který mohou nainstalovat později. Naproti tomu uživatelé jader řady 2.6 by měli podporu PCMCIA povolit přímo v jádře.

Kromě přikompilování podpory PCMCIA v jádře řady 2.6 nezapomeňte přidat rovněž podporu pro PCMCIA card bridge svého systému:

Výpis kódu 3.10: Povolení podpory PCMCIA pro jádra řady 2.6

Bus options (PCI, PCMCIA, EISA, MCA, ISA)  --->
  PCCARD (PCMCIA/CardBus) support  --->
    <*> PCCard (PCMCIA/CardBus) support
(Vyberte 16-bit, potřebujete-li podporu pro starší PCMCIA karty.
Většina lidí to potřebuje.)
    <*>   16-bit PCMCIA support
    [*]   32-bit CardBus support
(Vyberte odpovídající bridge)
    --- PC-card bridges
    <*> CardBus yenta-compatible bridge support (NEW)
    <*> Cirrus PD6729 compatible bridge support (NEW)
    <*> i82092 compatible bridge support (NEW)
    <*> i82365 compatible bridge support (NEW)
    <*> Databook TCIC host bridge support (NEW)

Až dokončíte konfiguraci kernelu, pokračujte kompilací a instalací.

Kompilace a instalace

Nyní máte své jádro nakonfigurované, je tedy čas jej zkompilovat a nainstalovat. Ukončete konfigurační program a zahajte kompilační proces:

Výpis kódu 3.11: Kompilace jádra

(Pro jádra řady 2.4)
# make dep && make bzImage modules modules_install

(Pro jádra řady 2.6)
# make && make modules_install

Až se kompilace dokončí, zkopírujte image jádra do adresáře /boot. Jako jméno image použijte cokoliv, co Vám bude připadat vhodné, avšak nezapomeňte, že jej budete potřebovat při konfiguraci bootloaderu. V dalším příkladu tedy nahraďte kernel-2.6.17-gentoo-r5 zvoleným jménem:

Výpis kódu 3.12: Instalace jádra

# cp arch/i386/boot/bzImage /boot/kernel-2.6.17-gentoo-r5

Nyní pokračujte instalací modulů jádra.

7.d. Alternativní: Použití genkernelu

Čtete-li tuto sekci, vybrali jste si genkernel, který nastaví Vaše jádro za Vás.

Zdrojové kódy jádra jsou již nainstalované, je tedy čas je nakonfigurovat a zkompilovat. Skript genkernel sestaví jádro za Vás. Výsledek funguje skoro stejně jako instalační CD, to znamená, že pokud použijete genkernel, systém se při startu pokusí detekovat Váš hardware. Protože genkernel nevyžaduje ruční konfiguraci jádra, je ideálním řešením pro uživatele, kteří se jí chtějí vyhnout.

Podívejme se, jak se genkernel používá. Nejprve ho nainstalujeme:

Výpis kódu 4.1: Instalace genkernelu

# emerge genkernel

Chystáte-li se použít jádro řady 2.6, zkopírujte výchozí konfiguraci jádra z instalačního CD do umístění, kde ji genkernel očekává:

Výpis kódu 4.2: Kopírování konfigurace jádra z instalačního CD

(Pouze chystáte-li se konfigurovat jádro řady 2.6)
# zcat /proc/config.gz > /usr/share/genkernel/x86/kernel-config-2.6

Nyní zkompilujte zdrojové kódy jádra pomocí genkernel all. Protože však genkernel vytvoří jádro podporující skoro všechen možný hardware, bude kompilace trvat poměrně dlouho.

Pokud jste na /boot použili jiný systém souborů než ext2 nebo ext3, budete potřebovat spustit genkernel --menuconfig all a přidat podporu pro použitý filesystém přímo do jádra, tj. ne jako modul. Uživatelé EVMS2 číi LVM2 budou pravděpodobně chtít přidat i volby --evms2, resp. --lvm2.

Výpis kódu 4.3: Spuštění genkernelu

# genkernel all

Jakmile genkernel skončí, je vytvořeno jádro, všechny moduly a initial root disk čili initrd, sloužící k detekci Vašeho hardwaru ještě před tím, než vstoupí do hry "opravdový" systém. Jména jádra a initrd budete potřebovat pro pozdější nastavení bootloaderu, proto si je poznamenejte.

Výpis kódu 4.4: Kontrola vytvořeného image jádra a initrd

# ls /boot/kernel* /boot/initramfs*

Nyní proveďte ještě jeden krok, aby byl Váš systém více podobný instalačnímu CD - nainstalujte coldplug. Initrd detekuje vše potřebné pro spuštění systému, coldplug se postará o zbytek. Abyste mohli používat coldplug, napište následující:

Výpis kódu 4.5: Instalace a povolení coldplugu

# emerge coldplug
# rc-update add coldplug boot

7.e. Jaderné moduly

Konfigurace modulů

Poznámka: Pokud jste se rozhodli použít jádro řady 2.4, místo řetězce 2.6 použijte 2.4.

Moduly, které chcete automaticky načíst při startu, byste měli zapsat do souboru /etc/modules.autoload.d/kernel-2.6. Můžete tam přidat i různé parametry předávané modulům, pokud potřebujete.

Pro zobrazení všech dostupných modulů použijte příkaz find. Nezapomeňte nahradit 2.6.17-r5 verzí jádra, které jste zrovna zkompilovali:

Výpis kódu 5.1: Zobrazení všech dostupných modulů

# find /lib/modules/2.6.17-r5/ -type f -iname '*.o' -or -iname '*.ko'

Chcete-li kupříkladu automaticky načíst modul 3c59x, změňte kernel-2.6 a zadejte do něj jméno modulu:

Výpis kódu 5.2: Editace /etc/modules.autoload.d/kernel-2.6

# nano -w /etc/modules.autoload.d/kernel-2.6

Výpis kódu 5.3: /etc/modules.autoload.d/kernel-2.6

3c59x

V instalaci pokračujte konfigurací systému.

8. Konfigurace systému

8.a. Informace o souborových systémech

Co je to fstab?

Pod Linuxem musí být všechny používané oddíly zapsány v souboru /etc/fstab, který obsahuje informace o přiřazení přípojných bodů jednotlivým diskovým oddílům a různé další informace (například zda připojovat automaticky, zda je může připojit běžný uživatel atd.).

Vytvoření /etc/fstab

/etc/fstab má speciální skladbu - každý řádek sestává ze šesti polí oddělených nějakým druhem mezery (jedna či více obyčejných mezer, tabulátor,...). Každé políčko má vlastní význam:

  • První pole specifikuje oddíl - cestu k blokovému zařízení, na kterém je souborový systém uložen.
  • Druhé pole určuje přípojný bod - místo, kam se má filesystém připojit.
  • Jako třetí je specifikován typ souborového systému.
  • Čtvrté pole je určeno pro volby používané programem mount pro připojování oddílu. Každý typ souborového systému má své vlastní povolené parametry, pro jejich přehled použijte man mount (zobrazení manuálové stránky). Jednotlivé volby se oddělují čárkami.
  • Páté pole je používáno programem dump pro určení, zda má být tento oddíl tímto způsobem zálohován. Políčku můžete klidně ponechat hodnotu 0 (nula).
  • Šesté pole používá program fsck pro určení pořadí, ve kterém se bude provádět kontrola souborových systémů v případě, že systém nebyl řádně ukončen. Kořenový filesystém by zde měl mít uvedeno 1, ostatní 2 (případně 0, nevyžadují-li kontrolu).

Důležité: Výchozí /etc/fstab, který je obsažen v Gentoo, není přímo použitelný, budete si muset vytvořit vlastní.

Výpis kódu 1.1: Otevření /etc/fstab

# nano -w /etc/fstab

Pojďme se podívat, jak zapsat volby pro oddíl /boot. Je to pouze příklad, takže pokud jste /boot nevytvářeli nebo nemohli vytvořit, směle tuto část ignorujte.

V našem výchozím rozdělení pro x86 je /boot umístěn na oddílu /dev/hda1 (případně /dev/sda*, pokud používáte SATA nebo SCSI zařízení) a je použit systém souborů ext2. Během spouštění systému je navíc požadovaná jeho kontrola, napíšeme tedy:

Výpis kódu 1.2: Ukázkový řádek o /boot v /etc/fstab

/dev/hda1   /boot     ext2    defaults        1 2

Někteří uživatelé nechtějí mít z bezpečnostních důvodů automaticky připojen /boot, dosáhneme toho tím, že položku defaults nahradíme klíčovým slovem noauto. Učiníte-li tak, budete muset tento oddíl připojit vždy, když ho budete chtít použít.

Nakonec přidáme pravidla pro /proc, tmpfs a pro CD-ROM mechaniku, a samozřejmě pokud máte další disky nebo oddíly, tak i pro ně.

Pojme tedy vytvořit soubor /etc/fstab:

Výpis kódu 1.3: Kompletní příklad /etc/fstab

/dev/hda1   /boot        ext2    defaults,noatime     1 2
/dev/hda2   none         swap    sw                   0 0
/dev/hda3   /            ext3    noatime              0 1

none        /proc        proc    defaults             0 0
none        /dev/shm     tmpfs   nodev,nosuid,noexec  0 0

/dev/cdrom  /mnt/cdrom   auto    noauto,user          0 0

Volba auto říká programu mount, aby se snažil uhádnout použitý systém souborů; hodí se to pro výměnná média, kde se můžete setkat s více možnostmi. Volba user umožňuje připojit CD i pro obyčejné uživatele.

Pro zlepšení výkonu je dobré přidate volbu noatime. Při přistupu k souborům nebude muset docházet k aktualizaci informace o času posledního přístupu, která většinou ani není potřeba.

Soubor po sobě překontrolujte, uložte a ukončete editor.

8.b. Informace o síti

Jméno počítače, domény,...

Další z voleb, kterou musí uživatel podstoupit, je pojmenování svého stroje. Zdá se to jednoduché, ale ve skutečnosti má mnoho uživatelů problémy s výběrem správného jména. Nebojte se, naštěstí jde kdykoliv změnit. Dále budeme používat jméno tux a doménu domacisit. Nejprve nastavíme jméno počítače, hostname:

Výpis kódu 2.1: Nastavení hostname

# nano -w /etc/conf.d/hostname

(Nastavte proměnnou HOSTNAME na jméno stroje)
HOSTNAME="tux"

Nyní jméno domény, tentokrát v /etc/conf.d/net:

Výpis kódu 2.2: Natavení jména domény

# nano -w /etc/conf.d/net

(Nastavte proměnnou dns_domain na jméno domény)
dns_domain_lo="domacisit"

Máte-li NIS doménu (pokud nevíte, co to je, tak ji nemáte), nastavte ji:

Výpis kódu 2.3: Nastavení jména NIS domény

# nano -w /etc/conf.d/net

(Nastavte proměnnou NISDOMAIN na jméno NIS domény)
nis_domain_lo="my-nisdomain"

Nastavení sítě

Předtím, než podlehnete pocitu "ale to už jsme přece udělali", měli byste si uvědomit, že nastavení sítě provedené před instalací bylo pouze dočasné pro její potřeby; nyní nakonfigurujete síť nastálo.

Poznámka: Detailnější informace o nastavení sítí včetně pokročilých oblastí jako bonding, bridging, 802.1Q VLANy nebo bezdrátové sítě najdete v části Konfigurace sítě v Gentoo.

Všechny potřebné informace jsou shromážděny v souboru /etc/conf.d/net. Jeho formát je vcelku přímočarý, avšak nevíte-li, jak nastavit síť ručně, nemusí Vám připadat zrovna intuitivní. Ale nebojte se, všechno si vysvětlíme :-). Ukázkovou konfiguraci doplněnou mnoha komentáři naleznete v souboru /etc/conf.d/net.example.

Výchozí volba je nastavení přes DHCP, abyste jej však mohli používat, budete si muset nainstalovat DHCP klienta. Instrukce naleznete v části o instalaci nezbytných systémových nástrojů. Nezapomeňte DHCP klienta nainstalovat.

Potřebujete-li nakonfigurovat Vaše síťové připojení (například kvůli dalšímu nastavení DHCP nebo pro ruční konfiguraci), otevřete /etc/conf.d/net ve svém oblíbeném editoru (v tomto příkladu použijeme nano):

Výpis kódu 2.4: Editace /etc/conf.d/net

# nano -w /etc/conf.d/net

Uvidíte toto:

Výpis kódu 2.5: Výchozí /etc/conf.d/net

# This blank configuration will automatically use DHCP for any net.*
# scripts in /etc/init.d.  To create a more complete configuration,
# please review /etc/conf.d/net.example and save your configuration
# in /etc/conf.d/net (this file :]!).

Pro zadání vlastní IP adresy, masky sítě a brány potřebujete nastavit config_eth0 a routes_eth0:

Výpis kódu 2.6: Ruční nastavení IP adresy pro eth0

config_eth0=( "192.168.0.2 netmask 255.255.255.0 brd 192.168.0.255" )
routes_eth0=( "default gw 192.168.0.1" )

Chcete-li použít DHCP a ovlivnit jeho chování, definujte proměnné config_eth0 a dhcp_eth0:

Výpis kódu 2.7: Automatické získání IP adresy pro eth0

config_eth0=( "dhcp" )
dhcp_eth0="nodns nontp nonis"

Pro přehled všech dostupných voleb se prosím podívejte do souboru /etc/conf.d/net.example.

Máte-li více síťových rozhraní, aplikujte výše uvedený postup na config_eth1, config_eth2, atd.

Nyní uložte konfiguraci a ukončete editor.

Automatické spouštění sítě při startu

Aby byla Vaše síťová rozhraní spuštěna během bootu systému, musíte přidat skript do výchozího runlevelu. Máte-li PCMCIA rozhraní, měli byste tento krok přeskočit, protože taková rozhraní jsou spouštěna init skriptem pro PCMCIA.

Výpis kódu 2.8: Přidání net.eth0 do výchozího runlevelu

# rc-update add net.eth0 default

Máte-li více síťových rozhraní, musíte vytvořit odpovídající initskripty net.eth1, net.eth2,... Můžete pro to použít příkaz ln:

Výpis kódu 2.9: Vytvoření dalších initskriptů

# cd /etc/init.d
# ln -s net.lo net.eth1
# rc-update add net.eth1 default

Informace o síti

Dále budete muset systému sdělit některé informace o síti. Pro převod (resolving) jmen strojů na IP adresy se jako doplněk služby DNS používá soubor /etc/hosts. Tento soubor by měl obsahovat informace o stroji, který právě instalujete, a pokud ve své síti nepoužíváte službu DNS, tak i o dalších počítačích.

Výpis kódu 2.10: Otevření souboru /etc/hosts

# nano -w /etc/hosts

Výpis kódu 2.11: Vyplnění informací o síti

127.0.0.1     tux.domacisit tux localhost

(Můžete přidat informace o dalších počítačích.
Lze použít pouze pevné IP adresy.)
192.168.0.5   janicka.domacisit janicka
192.168.0.6   barborka.domacisit barborka

Změny uložte a ukončete editor.

Nemáte-li ve svém systému PCMCIA, můžete nyní pokračovat systémovými informacemi, jinak čtěte dále.

Volitelně: zprovoznění PCMCIA

Uživatelé PCMCIA by měli nejprve nainstalovat balíček pcmcia-cs. Platí to i pro ty, kdo budou pracovat s jádrem řady 2.6 (i když nebudou používat ovladače z tohoto balíčku, ale přímo z jádra). Použití proměnné USE="-X" je nezbytné, jinak by se nyní začalo instalovat xorg-x11:

Výpis kódu 2.12: Instalace pcmcia-cs

# USE="-X" emerge pcmcia-cs

Až se balíček nainstaluje, přidejte pcmcia do výchozího (default) runlevelu:

Výpis kódu 2.13: Přidání pcmcia do runlevelu default

# rc-update add pcmcia default

8.c. Systémové informace

Heslo superuživatele root

Nejprve nastavíme rootovské heslo:

Výpis kódu 3.1: Nastavení rootovského hesla

# passwd

Přejete-li si, aby se mohl root přihlašovat i přes sériovou konzoli, přidejte tts/0 do souboru /etc/securetty:

Výpis kódu 3.2: Přidání tts/0 do /etc/securetty

# echo "tts/0" >> /etc/securetty

Systémové informace

Pro všeobecnou konfiguraci systému používá Gentoo soubor /etc/rc.conf. Otevřete jej a užijte si jeho přehlednou dokumentaci v podobě komentářů :-)

Výpis kódu 3.3: Otevření /etc/rc.conf

# nano -w /etc/rc.conf

Až provedete potřebné změny, soubor /etc/rc.conf uložte a ukončete editor.

Jak vidíte, soubor je velmi dobře okomentován, což by Vám mělo pomoci s nastavením nezbytných proměnných. Určíte, zda má systém používat Unicode a nastavíte výchozí editor a display manager (grafické přihlašování, například gdm nebo kdm).

Klávesové mapy se v Gentoo nastavují pomocí souboru /etc/conf.d/keymaps.

Výpis kódu 3.4: Editace /etc/conf.d/keymaps

# nano -w /etc/conf.d/keymaps

Dejte pozor na správnou hodnotu KEYMAP, jinak může psaní na klávesnici dopadnout podivně.

Až dokončíte konfiguraci souboru /etc/conf.d/keymaps, uložte jej a ukončete editor.

Nastavení voleb ovlivňujících hodiny je v souboru /etc/conf.d/clock; změňte jej podle Vašich potřeb.

Výpis kódu 3.5: Editace /etc/conf.d/clock

# nano -w /etc/conf.d/clock

Neběží-li Vaše hardwarové hodiny v UTC, je potřeba navíc přidat řádek CLOCK="local", jinak mohou být posunuté.

Až budete hotovi s konfigurací souboru /etc/conf.d/clock, uložte jej a ukončete editor.

Pokračujte instalací nezbytných systémových nástrojů.

9. Instalace nezbytných systémových nástrojů

9.a. Device Manager

Používáte-li jádro řady 2.4 a instalujete-li Gentoo ze stage 3, je potřeba, abyste podnikli několik kroků. Protože Gentoo nyní ve výchozím nastavení používá udev, který není podporován pod jádry 2.4, musíte použít devfsd a udev odebrat.

Výpis kódu 1.1: Instalace devfsd

(Pro ty, kdož používají jádro 2.4.x a instalaci ze stage 3)
# emerge --unmerge udev
# emerge devfsd

9.b. Systémový logger

Některé nástroje ve stage3 obsaženy nejsou, protože pro ně existuje více různých implementací. Nyní je na vás, abyste se rozhodli, jaké z nich budete chtít nainstalovat.

První takový nástroj se stará o zaznamenávání různých událostí -- chcete-li, můžete vše, co se v systému děje, zaznamenávat (logovat) do logovacích souborů, do logů. Tuto činnost obstarává systémový logger.

S Gentoo si můžete vybrat z několika různých loggerů. Nabízíme sysklogd, tradiční záznamník, syslog-ng, pokročilý logger, a vysoce konfigurovatelný metalog. Další mohou být dostupné přes Portage - počet balíčků roste každým dnem.

Plánujete-li používat sysklogd nebo syslog-ng, nejspíše budete poté chtít nainstalovat také logrotate, protože tyto záznamníky neposkytují žádnou funkci pro rotaci logovacích souborů.

Instalaci systémového loggeru provedete příkazem emerge. Nezapomeňte záznamník rovněž přidat do výchozího runlevelu pomocí rc-update. Následující příklad demonstruje instalaci balíčku syslog-ng, samozřejmě jej můžete nahradit za jakýkoli jiný:

Výpis kódu 2.1: Instalace systémového loggeru

# emerge syslog-ng
# rc-update add syslog-ng default

9.c. Volitelně: démon cron

Další na řadě je démon cron. Tento krok je sice volitelný, avšak v každém případě se vyplatí. Cron démon slouží k plánování provádění příkazů; hodí se tehdy, když potřebujete něco pravidelně spouštět, ať už jednou za den, týden nebo třeba měsíc.

Gentoo Vám nabízí hned tři možné crony: dcron, fcron a vixie-cron. Instalace jednoho z nich je podobná instalaci systémového loggeru. dcron a fcron však navíc vyžadují další konfigurační příkaz, konkrétně crontab /etc/crontab. Nevíte-li, jaký cron si vybrat, zvolte vixie-cron.

Pro instalace bez použití sítě je dostupný pouze vixie-cron. Chcete-li používat jiný, musíte s jeho instalací počkat na později.

Výpis kódu 3.1: Instalace cron démona

# emerge vixie-cron
# rc-update add vixie-cron default
(Pouze pokud jste si vybrali dcron nebo fcron)
# crontab /etc/crontab

9.d. Volitelně: indexování souborů

Chcete-li indexovat soubory ve svém systému pro rychlejší vyhledávání nástrojem locate, musíte nejdříve nainstalovat sys-apps/slocate:

Výpis kódu 4.1: Instalace slocate

# emerge slocate

9.e. Nástroje pro souborové systémy

Podle toho, jaký systém souborů jste si zvolili, budete potřebovat nainstalovat potřebné nástroje, například pro kontrolu filesystémů, vytváření dalších atd.

Následující tabulka podává přehled potřebných nástrojů pro jednotlivé souborové systémy:

Systém souborů Nástroj Příkaz pro instalaci
XFS xfsprogs emerge xfsprogs
ReiserFS reiserfsprogs emerge reiserfsprogs
JFS jfsutils emerge jfsutils

Jste-li uživatel EVMS, musíte nainstalovat balíček evms:

Výpis kódu 5.1: Instalace nástrojů pro EVMS

# USE="-gtk" emerge evms

Nastavení USE="-gtk" zabrání instalaci závislostí. Pokud budete chtít používat grafické nástroje pro evms, budete moci tento balíček přeinstalovat později.

Nepotřebujete-li žádné další balíčky související se síťováním, jako například rp-pppoe nebo DHCP klienta, pokračujte konfigurací bootloaderu.

9.f. Nástroje pro síť

Volitelně: instalace DHCP klienta

Požadujete-li, aby Gentoo automaticky nastavilo IP adresu Vašich síťových rozhraní, musíte nejprve nainstalovat DHCP klienta, například dhcpcd. Neučiníte-li tak nyní, nebudete se moci po instalaci připojit k Internetu!

Výpis kódu 6.1: Instalace dhcpcd

# emerge dhcpcd

Volitelně: instalace klienta PPPoE

Potřebujete-li pro připojení k síti rp-pppoe, nainstalujte jej:

Výpis kódu 6.2: Instalace rp-pppoe

# USE="-X" emerge rp-pppoe

Proměnná USE="-X" zabrání instalaci xorg-x11 jako závislosti (rp-pppoe obsahuje grafické nástroje; potřebujete-li je, můžete rp-pppoe překompilovat později a nebo nechat xorg-x11 nainstalovat teď, což však zabere poměrně hodně času).

Volitelně: Nástroje pro RAID na systémech IBM

Používáte-li SCSI RAID na systémech založených na POWER5, měli byste zvážit instalaci balíčku iprutils, který mimo jiné umožňuje pracovat s diskovým polem, zkontrolovat stav disků v polích nebo aktualizovat mikrokód.

Výpis kódu 6.3: Instalace iprutils

# emerge iprutils

Nyní pokračujte konfigurací bootloaderu.

10. Konfigurace bootloaderu

10.a. Vyberte si

Úvod

Po kompilaci jádra, instalaci nezbytných systémových nástrojů a další konfiguraci nastal nyní čas nainstalovat program, který po startu systému jádro načítá, tzv. bootloader (zavaděč).

Pro architekturu x86 poskytuje Gentoo Linux GRUB a LILO.

Než jeden z těchto zavaděčů nainstalujete, ukážeme si, jak nastavit tzv. framebuffer, díky kterému můžete spustit linuxovou příkazovou řádku s (omezenými) grafickými prvky, jako je např. hezká spouštěcí obrazovka, bootsplash. Tento krok je samozřejmě volitelný.

Volitelně: framebuffer

Pokud jste v jádře povolili podporu framebufferu nebo jste použili výchozí konfiguraci skriptu genkernel, můžete framebuffer aktivovat přidáním voleb vga nebo video do konfigurace zavaděče.

Ze všeho nejdříve musíte vědět, jaký typ framebufferového zařízení používáte. Jestliže jste si vybrali opatchované jádro Gentoo (jako např. gentoo-sources), byla výchozí hodnota typu ovladače VESA vesafb-tng; jestliže jste ji tak ponechali, nemusíte zadávat údaj vga. V opačném případě užíváte ovladač vesafb a údaj vga zadat musíte.

Parametr vga řídí rozlišení a barevnou hloubku obrazovky framebufferu pro vesafb. Jak je popsáno v dokumentu /usr/src/linux/Documentation/fb/vesafb.txt nainstalovaném spolu se zdrojovými kódy jádra, musíte zadat číslo VESA módu odpovídající požadovanému rozlišení a barevné hloubce.

Následující tabulka uvádí kombinace dostupných rozlišení a barevné hloubky spolu s odpovídajícími hodnotami, které musíte zadat s údajem vga.

640x480 800x600 1024x768 1280x1024
256 0x301 0x303 0x305 0x307
32 tisíc 0x310 0x313 0x316 0x319
64 tisíc 0x311 0x314 0x317 0x31A
16 milionů 0x312 0x315 0x318 0x31B

Volba video nastavuje parametry framebufferového displeje. Je třeba uvést ovladač (pro jádra řady 2.6 vesafb, pro řadu 2.4 vesa) následovaný řídícími údaji podle Vašeho uvážení. Všechny možné volby jsou uvedeny v dokumentu /usr/src/linux/Documentation/fb/vesafb.txt, zde ukážeme tři nejužívanější možnosti:

Parametr Popis
ywrap předpokládá, že grafická karta dokáže přetočit paměť (tj. pokračovat znovu od začátku, když dosáhla konce)
mtrr:n nastaví MTRR registry; n může být:
0 - zakázáno (disabled)
1 - uncachable
2 - write-back
3 - write-combining
4 - write-through
mode (pouze vesafb-tng)
nastaví rozlišení, barevnou hloubku a obnovovací frekvenci, např. 1024x768-32@85 ro rozlišení 1024x768, 32 bitovou barevnou hloubku a obnovovací frekvenci 85 Hz

Tyto dva údaje by mohly vypadat přibližně jako vga=0x318 video=vesafb:mtrr:3,ywrap nebo video=vesafb:mtrr:3,ywrap,1024x768-32@85. Zanedlouho budou potřeba, proto si je poznamenejte.

Pokračujeme instalací GRUBu nebo LILa.

10.b. Výchozí: použití GRUBu

Orientace v terminologii GRUBu

Abychom porozuměli GRUBu, je velmi důležité pochopit způsob, jakým odkazuje na pevné disky a diskové oddíly. Tak např. linuxový oddíl /dev/hda1 (IDE disky) nebo /dev/sda1 (SATA/SCSI) se v GRUBu bude velmi pravděpodobně nazývat (hd0,0). Všimněte si kulatých závorek kolem hd0,0, jsou bezpodmínečně nutné.

Pořadí pevných disků se počítá od nuly, ne od "a", označení diskových oddílů začíná rovněž na nule, ne na jedničce. Dejte také pozor na to, že do "hd" se započítávají pouze pevné disky, nikoliv ostatní zařízení ATAPI-IDE, jako jsou CDROM mechaniky nebo vypalovačky. To samé platí pro SCSI zařízení. (Obvykle obdrží vyšší čísla než IDE disky, kromě případu, kdy je BIOS konfigurován tak, aby bootoval ze SCSI zařízení.) Nastavíte-li BIOS, aby bootoval z jiného pevného disku (např. ze druhého zařízení na prvním kanálu - primary slave), bude takový disk označen za hd0.

Dejme tomu, že máte první pevný disk na /dev/hda, CD-ROM mechaniku na /dev/hdb, vypalovačku na /dev/hdc, druhý pevný disk na /dev/hdd a v systému není žádný SCSI disk. V takovém případě si GRUB přeloží /dev/hdd7 jako (hd1,6). Možná to vypadá na první pohled zmateně, ale jak uvidíte, GRUB nabízí funkci automatického doplňování pomocí klávesy TAB, která Vám pomůže, když by hrozilo, že se v tomto číselném schématu ztratíte.

Jestli jste to už strávili, dejme se do instalace GRUBu.

Instalace GRUB

Jako první krok zadáme příkaz emerge:

Výpis kódu 2.1: Instalace GRUB

# emerge grub

GRUB je nyní sice nainstalován, je však ještě potřeba pro něj napsat konfigurační soubor a zapsat GRUB do MBR pevného disku, aby mohl automaticky zavést nové jádro. Spusťte svůj oblíbený editor (pro potřeby tohoto návodu používáme nano) a vytvořte v něm soubor /boot/grub/grub.conf:

Výpis kódu 2.2: Vytvoření /boot/grub/grub.conf

# nano -w /boot/grub/grub.conf

Nyní se chystáte vytvořit konfigurační soubor grub.conf. Níže najdete příklady dvou možných podob grub.conf pro ukázkové rozdělení disků použité jako příklad pro účely tohoto návodu. Podrobně komentován je pouze první grub.conf. Ujistěte se, že zadáváte název svého obrazu jádra, a pokud je třeba, i svého initrd obrazu.

  • první grub.conf je pro uživatele, jejichž jádro není sestavené příkazem genkernel
  • druhý grub.conf pak pro ty, kdo pro sestavení svého jádra použili genkernel

Poznámka: Je-li Váš kořenový souborový systém typu JFS, musíte přidat "ro" k řádce kernel, protože JFS potřebuje přehrát svůj záznam dříve, než dovolí připojit disk v režimu pro čtení i zápis.

Výpis kódu 2.3: grub.conf pro ty, kdož nepoužili genkernel

# určuje, který systém se zavádí jako výchozí (default), 0 znamená první, 1 druhý atd.
default 0
# kolik sekund čekat před zavedením výchozího systémů
timeout 30
# pěkný obrázek, aby při bootvání nebyla nuda :-)
# zakomentujte, pokud nemáte nainstalovanou grafickou kartu
splashimage=(hd0,0)/boot/grub/splash.xpm.gz

title=Gentoo Linux 2.6.17-r5
# oddíl, na kterém je umístěn obraz jádra nebo operační systém
root (hd0,0)
kernel /boot/kernel-2.6.17-gentoo-r5 root=/dev/hda3

# Následující čtyři řádky jsou třeba pouze pro duální boot se systémem Windows
# v tomto příkladu jsou Windows nainstalovány na
/dev/hda6
title=Windows XP
rootnoverify (hd0,5)
makeactive
chainloader +1

Výpis kódu 2.4: grub.conf pro uživatele genkernelu

default 0
timeout 30
splashimage=(hd0,0)/boot/grub/splash.xpm.gz

title=Gentoo Linux 2.6.17-r5
root (hd0,0)
kernel /boot/kernel-genkernel-x86-2.6.17-gentoo-r5 root=/dev/ram0 init=/linuxrc ramdisk=8192 real_root=/dev/hda3 udev
initrd /boot/initramfs-genkernel-x86-2.6.17-gentoo-r5


# pouze v případě, že chcete dual-boot
title=Windows XP
rootnoverify (hd0,5)
makeactive
chainloader +1

Poznámka: Údaj udev na konci řádky, která definuje umístění jádra, je nutný k opravě chyby v některých verzích genkernelu v případě, že používáte primárně udev, což je standardní nastavení.

Pokud jste zvolili jiné rozdělení oddílů nebo obrazy jádra, musíte údaje náležitě upravit. Dbejte zejména na to, aby všechny odkazy za určením zařízení podle GRUBu (jako např. (hd0,0)) byly uvedeny relativně vzhledem k bodu připojení (mountpoint), nikoliv ke kořenovému adresáři (root). Jinými slovy, (hd0,0)/grub/splash.xpm.gz je ve skutečnosti /boot/grub/splash.xpm.gz, protože (hd0,0) je /boot.

Navíc pokud jste se rozhodli pro jiné rozdělení oddílů a neumístili /boot na zvláštní oddíl, je uvedení prefixu /boot nutné. Jestliže jste se drželi našeho doporučení, vyžadován není, avšak symbolický odkaz boot umožní, že rovněž funguje. Výše uvedené příklady proto můžete použít, ať už máte /boot na zvláštním oddíle či nikoli.

Chcete-li jádru předat nějaké dodatečné volby, jednoduše je zapište na konec řádku příkazu kernel. Už jste zadali jeden parametr (root=/dev/hda3, případně real_root=/dev/hda3), ale můžete připsat i další, jako třeba video nebo vga pro framebuffer, viz výše.

Používáte-li jádro ve verzi 2.6.7 nebo vyšší a nastavili jste svůj disk, aby ohlašoval menší velikost, protože Váš BIOS neumí zacházet s velkými disky, musíte přidat hdx=stroke.

Jestliže jste použili genkernel, měli byste vědět, že Vaše jádro používá tytéž bootovací příkazy jako instalační CD, proto například máte-li SCSI zařízení, měli byste přidat jako volbu jádra parametr doscsi.

Nyní uložte soubor grub.conf a ukončete editor. Stále je ještě potřeba nainstalovat GRUB do MBR (Master Boot Record), aby byl GRUB automaticky zaveden, když spustíte počítač.

Vývojáři GRUBu doporučují použít k instalaci nástroj grub-install. Kdyby však z nějakého důvodu nepracoval správně, máte stále možnost nainstalovat GRUB ručně.

Pokračujte buď částí výchozí: nastavení GRUBu pomocí grub-install anebo sekcí alternativní: ruční nastavení GRUBu.

Výchozí: nastavení GRUBu pomocí grub-install

Instalaci GRUBu provedete příkazem grub-install, který by však nyní ještě nefungoval, neboť jste stále v chrootovaném prostředí. Nejprve tedy musíte vytvořit /etc/mtab, soubor s informacemi o všech připojených souborových systémech. Naštěstí existuje jednoduchý způsob, jak to provést - jednoduše zkopírujete /proc/mounts do /etc/mtab vyjma řádky rootfs, pokud jste nevytvořili pro bootovací oddíl zvláštní partition. Následující příklad bude fungovat v obou případech:

Výpis kódu 2.5: Vytvoření /etc/mtab

# grep -v rootfs /proc/mounts > /etc/mtab

Nyní už můžete nainstalovat GRUB pomocí grub-install:

Výpis kódu 2.6: Spuštění grub-install

# grub-install /dev/hda

Máte-li další otázky týkající se GRUBu, konzultujte prosím GRUB FAQ nebo GRUB Manuál (obojí anglicky).

Pokračujte rebootem systému.

Alternativní: ruční nastavení GRUBu

Konfiguraci GRUBu zahájíte příkazem grub. Objeví se příkazový řádek GRUBu grub>. Nyní musíte zadat správné příkazy, abyste nainstalovali bootovací záznam GRUBu na pevný disk.

Výpis kódu 2.7: Spuštění GRUB shellu

# grub

Poznámka: Nemá-li Váš systém disketovou jednotku, přidejte k výše uvedenému příkazu volbu --no-floppy, abyste zabránili GRUBu testovat (neexistující) disketové jednotky.

V tomto příkladu chceme nainstalovat GRUB tak, aby načítal informace z bootovacího (zaváděcího) oddílu /dev/hda1 a nainstaloval svůj bootovací záznam do MBR (Master Boot Record) pevného disku, aby se po zapnutí počítače jako první objevila výzva GRUBu. Nezapomeňte upravit zadávané příkazy podle své konfigurace, pokud jste se rozhodli pro jiné rozdělení disků.

V příkazové řádce GRUBu můžete používat automatické doplňování pomocí klávesy TAB. Např. když zadáte "root (" a stisknete klávesu TAB, zobrazí se vám seznam dostupných zařízení (jako např. hd0). Napíšete-li "root (hd0," a stisknete klávesu TAB, zobrazí se seznam dostupných oddílů, ze kterých si můžete vybrat, jako například hd0,0.

S pomocí tohoto automatického doplňování by neměla být instalace GRUBu tak obtížná. Tak jdeme na to, ne? :-)

Výpis kódu 2.8: Instalace GRUBu do MBR

grub> root (hd0,0)          (zadejte umístění oddílu /boot)
grub> setup (hd0)           (nainstalujte GRUB do MBR)
grub> quit                  (a ukončete příkazovou řádku GRUBu)

Poznámka: Chcete-li nainstalovat GRUB namísto do MBR na nějaký jiný oddíl, musíte změnit příkaz setup tak, aby na příslušný oddíl odkazoval. Například pokud chcete nainstalovat GRUB na /dev/hda3, bude mít příkaz podobu setup (hd0,2). To se však týká jen mála uživatelů.

Máte-li další otázky týkající se GRUBu, konzultujte prosím GRUB FAQ nebo GRUB Manuál (obojí anglicky).

Pokračujte restartem systému.

10.c. Alternativní: použití LILO

Instalace LILO

LILO, LInuxLOader, je ověřený a opravdový pracant mezi zavaděči, postrádá však některé možnosti, které GRUB umí, což je také důvod, proč popularita GRUBu nyní roste. LILO se však stále používá, a to proto, že existují systémy, kde GRUB nefunguje, zatímco LILO ano, a samozřejmě i kvůli tomu, že někteří lidé LILO dobře znají a chtějí ho používat i nadále. Buď jak buď, Gentoo podporuje oba zavaděče, a jak je vidět, Vy jste se rozhodli pro LILO.

Instalace LILO je hračka - použijte emerge:

Výpis kódu 3.1: Instalace LILO

# emerge lilo

Konfigurace LILO

Ke konfiguraci LILO musíte vytvořit soubor /etc/lilo.conf. Spusťte svůj oblíbený editor (v tomto návodu používáme nano) a vytvořte tento soubor.

Výpis kódu 3.2: Vytvoření /etc/lilo.conf

# nano -w /etc/lilo.conf

V jedné z předešlých kapitol jsme vás žádali, abyste si zapamatovali název obrazu jádra (kernel-image), který jste vytvořili. V následujícím příkladu souboru lilo.conf použijeme naše výchozí hodnoty. Ukázka obsahuje dvě samostatné části:

  • jednu pro ty, kdo sestavili své jádro bez použití skriptu genkernel
  • druhou pro ty, kdo si nechali jádro vytvořit skriptem genkernel

Ujistěte se, že používáte jméno svého image jádra a pokud je to nutné i svůj název souboru s initrd.

Poznámka: Je-li Váš kořenový souborový systém typu JFS, musíte přidat "ro" k řádce kernel, protože JFS potřebuje přehrát svůj záznam dříve, než dovolí připojit disk v režimu pro čtení i zápis.

Výpis kódu 3.3: Ukázkový /etc/lilo.conf

boot=/dev/hda             # nainstaluje LILO na MBR
prompt                    # umožní uživateli vybrat jiný systém
timeout=50                # před spuštením výchozí volby počkat pět sekund
default=gentoo            # a po vypršení této doby spustit systém "gentoo"

# Pro ty, kdo nepoužili genkernel
image=/boot/kernel-2.6.17-gentoo-r5
  label=gentoo            # jméno sekce
  read-only               # startuje kořenový adresář s parametrem read-only (pouze čtení) - neměnit!
  root=/dev/hda3          # určuje umístění kořenového souborového systému

# Pro uživatele genrkernelu
image=/boot/kernel-genkernel-x86-2.6.17-gentoo-r5
  label=gentoo
  read-only
  root=/dev/ram0
  append="init=/linuxrc ramdisk=8192 real_root=/dev/hda3 udev"
  initrd=/boot/initramfs-genkernel-x86-2.6.17-gentoo-r5

# Následující dva řádky platí, když chcete dual-boot se systémem Windows
# v tomto příkladu jsou Windows nainstalovány v /dev/hda6.
other=/dev/hda6
  label=windows

Poznámka: Údaj udev na konci řádky, která definuje umístění jádra, je nutný k opravě chyby v některých verzích genkernelu v případě, že používáte primárně udev, což je standardní nastavení.

Poznámka: Používáte-li jiné rozdělení disku nebo jiný obraz jádra, příkazy patřičně upravte.

Chcete-li zadat nějaký dodatečný parametr jádra, přidejte k sekci příkaz append. V našem příkladu přidáme volbu video, abychom povolili framebuffer:

Výpis kódu 3.4: Použití příkazu append k přidání volby jádra

image=/boot/kernel-2.6.17-gentoo-r5
  label=gentoo
  read-only
  root=/dev/hda3
  append="video=vesafb:mtrr,ywrap,1024x768-32@85"

Používáte-li jádro ve verzi 2.6.7 nebo vyšší a nastavili jste svůj disk, aby ohlašoval menší velikost, protože Váš BIOS neumí zacházet s velkými disky, musíte přidat hdx=stroke.

Jestliže jste použili genkernel, měli byste vědět, že Vaše jádro používá tytéž bootovací příkazy jako instalační CD, proto například máte-li SCSI zařízení, měli byste přidat jako volbu jádra parametr doscsi.

Nyní uložte soubor a ukončete editor. Pro dokončení ještě musíte spustit /sbin/lilo, aby LILO mohlo aplikovat nastavení z /etc/lilo.conf, tj. zapsat samo sebe na disk. Zapamatujte si, že musíte tento příkaz spustit pokaždé, když instalujete nové jádro nebo provádíte jakékoli změny v menu.

Výpis kódu 3.5: Dokončení instalace LILO

# /sbin/lilo

Pokud máte nějaké další dotazy ohledně LILa, mohla by vám pomoci wikipedie.

Nyní můžete pokračovat restartem systému.

10.d. Restart systému

Opusťte chrootované prostředí a odpojte všechny připojené oddíly. Pak zadejte onen magický příkaz, na který jste tolik čekali: reboot.

Výpis kódu 4.1: Odpojení všech oddílů a reboot

# exit
cdimage ~# cd
cdimage ~# umount /mnt/gentoo/boot /mnt/gentoo/dev /mnt/gentoo/proc /mnt/gentoo
cdimage ~# reboot

Nezapomeňte vyjmout bootovací CD, nebo vám místo vašeho nového systému Gentoo naběhne znovu jen CD.

Až se nově nainstalovaný systém Gentoo spustí, pokračujte dokončením instalace.

11. Dokončení instalace Gentoo

11.a. Správa uživatelů

Přidání uživatelského účtu pro každodenní použití

Pracovat jako root je nebezpečné a měli byste se toho pokud možno vyvarovat. Proto je silně doporučeno přidat pro běžné použití další uživatelský účet.

Skupiny, do kterých účet patří, určují, jaké činnosti mu jsou povoleny. Následující tabulka obsahuje seznam důležitých skupin, které byste mohli chtít použít:

Skupina Popis
audio umožní přístup ke zvukovým zařízením
cdrom umožní přímý přístup k optickým mechanikám
floppy umožní přímý přístup k disketovým mechanikám
games umožní hrát hry
portage povolí použití emerge --pretend pod běžným uživatelem
usb umožní přístup k USB zařízením
plugdev povolí připojovat a používat připojitelná zařízení jako fotoaparáty či USB disky
video umožní přistupovat k zařízením pro záznam videa a hardwarovou akceleraci
wheel dovolí použít su

Pokud například chcete vytvořit uživatele jenicek, který bude patřit do skupin wheel, users a audio, přihlašte se nejprve jako root (který jako jediný může přidávat nové uživatele) a spusťte useradd:

Výpis kódu 1.1: Přidání uživatele pro běžné použití

Login: root
Password: (Vaše rootovské heslo)

# useradd -m -G users,wheel,audio -s /bin/bash jenicek
# passwd jenicek
Password: (vložte Jeníčkovo heslo)
Re-enter password: (pro ověření zadejte heslo ještě jednou)

Pokud uživatel potřebuje vykonat nějakou činnost s právy roota, může k jejich dočasnému získání použít příkaz su -. Další možnost poskytuje balíček sudo, který, pokud je správně nastaven, je velmi bezpečný.

12. Co dělat teď?

12.a. Dokumentace

Blahopřejeme! Nyní máte funkční systém s Gentoo. Ale kam jít teď? Jaké máte další možnosti? Co zkoumat nejdřív? Gentoo nabízí svým uživatelům spoustu možností, a tedy i mnoho více či méně zdokumentovaných vlastností.

Určitě byste měli věnovat pár chvil další části této příručky, nesoucí název Práce s Gentoo, která vysvětluje postup při instalaci dalšího softwaru, jeho aktualizacích, použití USE proměnných, způsob práce Gentoo init systému atd.

Pokud Vás zajímá optimalizace Vašeho systému pro desktopové použití nebo se jej chcete naučit nastavit tak, aby se z něj stal plnohodnotný desktopový systém, nahlédněte do rozsáhlé Dokumentace Gentoo pro desktop. Také doporučujeme lokalizační příručku, abyste se v systému cítili více doma.

Za přečtení stojí také Gentoo bezpečnostní příručka.

Kompletní soupis dokumentace naleznete na stránce Gentoo dokumentační zdroje.

12.b. Gentoo Online

Samozřejmě jste kdykoliv vítáni na našem Gentoo Fóru nebo na některém z mnoha Gentoo IRC kanálů.

Také provozujeme několik poštovních konferencí, které jsou otevřené pro všechny uživatele. Způsob registrace je popsán na výše uvedené stránce.

Ale teď už zmlkneme a necháme Vás užívat si svou novou instalaci :)

B. Práce s Gentoo

1. Úvod do Portage

1.a. Vítejte do Portage

Portage je pravděpodobně jedna z nejvýznamnějších inovací v oblasti správy softwaru. Díky své vysoké flexibilitě a širokému rozsahu možností je často pokládáno za nejlepší dostupný nástroj pro správu softwaru pod Linuxem.

Portage je celé napsáno ve skriptovacích jazycích Pythonu a Bash, a proto i otevřené vůči uživatelům.

Většina uživatelů se s Portage setká prostřednictvím nástroje emerge. Tato kapitola nesupluje jeho manuálovou stránku, ve které najdete kompletní popis možností:

Výpis kódu 1.1: Zobrazení manuálové stránky emerge

$ man emerge

1.b. Strom Portage

Ebuildy

Mluvíme-li o balíčcích, často myslíme softwarové produkty dostupné přes strom Portage, strukturu obsahující sbírku ebuildů, souborů obsahujících všechny informace potřebné ke správě softwaru (instalace, vyhledávání,...). Ve výchozím nastavení jsou tyto soubory uloženy v /usr/portage.

Kdykoli požádáte Portage, aby podniklo nějakou akci, použije ebuildy z Vašeho systému jako základ. Proto je důležité, abyste je pravidelně aktualizovali, aby Portage vědělo o nových verzích, bezpečnostních aktualizacích atd.

Aktualizace stromu Portage

Strom Portage je obvykle aktualizován přes rsync, rychlý nástroj pro inkrementální synchronizaci. Celý proces je jednoduchý, protože příkaz emerge sám zavolá rsync:

Výpis kódu 2.1: Aktualizace stromu Portage

# emerge --sync

Nelze-li kvůli omezení firewallem použít rsync, stále můžete aktualizovat pomocí denně vytvářených snapshotů stromu. Nástroj emerge-webrsync automaticky stáhne a nainstaluje poslední dostupnou verzi:

Výpis kódu 2.2: Spuštění emerge-webrsync

# emerge-webrsync

1.c. Správa softwaru

Vyhledávání softwaru

Pro vyhledávání ve stromu Portage můžete rovněž použít příkaz emerge. emerge --search vrátí jména balíčků, jejichž název alespoň částečně odpovídá zadanému výrazu.

Například pro zobrazení všech balíčků obsahujících v názvu "pdf":

Výpis kódu 3.1: Hledání balíčků pojmenovaných po pdf

$ emerge --search pdf

Chcete-li prohledávat i popisy, můžete použít volbu --searchdesc (nebo -S):

Výpis kódu 3.2: Hledání balíčků souvisejících s PDF

$ emerge --searchdesc pdf

Podíváte-li se na výstup, uvidíte, že podává velké množství informací. Vše je jasně popsáno, proto nebudeme vysvětlovat, co která řádka znamená:

Výpis kódu 3.3: Ukázka výstupu 'emerge --search'

*  net-print/cups-pdf
      Latest version available: 1.5.2
      Latest version installed: [ Not Installed ]
      Size of downloaded files: 15 kB
      Homepage:    http://cip.physik.uni-wuerzburg.de/~vrbehr/cups-pdf/
      Description: Provides a virtual printer for CUPS to produce PDF files.
      License:     GPL-2

Instalace softwaru

Když naleznete balíček, který se Vám líbí, můžete ho snadno nainstalovat pomocí emerge; jednoduše zadáte jeho jméno. Například pokud Vás zaujal gnumeric:

Výpis kódu 3.4: Instalujeme gnumeric

# emerge gnumeric

Protože mnoho aplikací závisí na jiných, pokus o jejich instalaci může způsobit i jejich instalaci. Není však žádný důvod k obavám, Portage se o závislosti postará samo. Chcete-li vědět, co by Portage nainstalovalo "navíc", přidejte volbu --pretend, například takto:

Výpis kódu 3.5: Jak by se nainstaloval gnumeric

# emerge --pretend gnumeric

Požádáte-li Portage o instalaci konkrétního balíčku, je-li potřeba, samo stáhne potřebné zdrojové kódy z Internetu, uloží je (ve výchozím nastavení) do /usr/portage/distfiles, rozbalí, zkompiluje a nainstaluje je. Chcete-li, aby proběhlo pouze stažení a ne samotná instalace, přidejte volbu --fetchonly:

Výpis kódu 3.6: Stažení zdrojových kódů pro gnumeric

# emerge --fetchonly gnumeric

Dokumentace nainstalovaných balíčků

Mnoho balíčků je dodáváno s vlastní dokumentací, někdy pouze při použití USE proměnné doc. Její nastavení můžete ověřit pomocí příkazu emerge -vp <jméno balíčku>.

Výpis kódu 3.7: Kontrola USE proměnné doc

(alsa-lib je samozřejmě pouze příklad.)
# emerge -vp alsa-lib
[ebuild  N    ] media-libs/alsa-lib-1.0.9_rc3  +doc -jack 674 kB

USE proměnná doc může být nastavena buď globálně v souboru /etc/make.conf nebo pro konkrétní balíčky v souboru /etc/portage/package.use. Podrobnější informace o tomto tématu najdete v kapitole USE proměnné.

Jakmile je balíček nainstalovaný, jeho dokumentace se většinou nalézá v podadresáři pojmenovaném podle balíčku uvnitř adresáře /usr/share/doc. Také si můžete zobrazit seznam všech nainstalovaných souborů pomocí nástroje equerybalíčku app-portage/gentoolkit.

Výpis kódu 3.8: Dokumentace balíčků

# ls -l /usr/share/doc/alsa-lib-1.0.9_rc3
total 28
-rw-r--r--  1 root root  669 May 17 21:54 ChangeLog.gz
-rw-r--r--  1 root root 9373 May 17 21:54 COPYING.gz
drwxr-xr-x  2 root root 8560 May 17 21:54 html
-rw-r--r--  1 root root  196 May 17 21:54 TODO.gz

(Volitelně můžete použít equery:)
# equery files alsa-lib | less
media-libs/alsa-lib-1.0.9_rc3
* Contents of media-libs/alsa-lib-1.0.9_rc3:
/usr
/usr/bin
/usr/bin/alsalisp
(výstup zkrácen)

Odebrání softwaru

Když chcete ze svého systému odebrat softwarový balíček, použijte příkaz emerge --unmerge, který odebere všechny soubory patřící danému balíčku kromě konfiguračních souborů, pokud od instalace došlo k jejich změně. Tyto soubory jsou v systému ponechány pro případ, že byste se v budoucnu rozhodli balíček znovu nainstalovat.

Avšak zde je na místě velké varování - Portage nekontroluje, zda balíček, který chcete odebrat, není vyžadován jako závislost jiného balíčku. Varování však dostanete, pokusíte-li se odebrat důležitý balíček nutný pro chod systému.

Výpis kódu 3.9: Odstranění gnumeric ze systému

# emerge --unmerge gnumeric

Odinstalace balíčku neovlivní jeho závislosti, ty v systému zůstanou nainstalované. Pokud chcete, aby Portage nalezl všechny balíčky, které již nemají důvod v systému být, použijte volbu --depclean příkazu emerge, toto bude popsáno později.

Aktualizace systému

Aby byl Váš systém v dobrém stavu (o bezpečnostních aktualizacích ani nemluvě), je potřeba ho pravidelně aktualizovat. Protože Portage pracuje pouze s ebuildy ve Vašem místním stromu Portage, je potřeba nejprve aktualizovat jej. Zbytek systému se zaktualizuje pomocí emerge --update world. V následujícím příkladu navíc použijeme i přepínač --ask, který Portage požádá o zobrazení aktualizovaných balíčků a vyžádá si váš souhlas s dalším postupem:

Výpis kódu 3.10: Aktualizace systému

# emerge --update --ask world

Tento příkaz řekne Portage, aby se pokusilo nainstalovat novější verze od všech balíčků, jež máte nainstalované. Bude se však zabývat pouze těmi, které jste explicitně nainstalovali, ne jejich závislostmi. Budete-li chtít provést aktualizaci všech přítomných balíčků, přidejte parametr --deep:

Výpis kódu 3.11: Aktualizace celého systému

# emerge --update --deep world

Protože jsou bezpečnostní aktualizace vydávány i pro balíčky, které v systému nemáte nainstalovány přímo, ale jako závislosti jiných programů, je doporučeno občas tento příkaz spustit.

V případě, že jste nedávno změnili nastavení USE proměnných, pravděpodobně budete chtít přidat i parametr --newuse. Portage pozná změnu nastavení a balíček podle něj překompiluje:

Výpis kódu 3.12: Úplná aktualizace

# emerge --update --deep --newuse world

Metabalíčky

Některé balíčky nemají žádný skutečný obsah, ale slouží k instalaci určité skupiny balíčků. Například balík kde nainstaluje kompletní prostředí KDE, protože má v závislostech uvedeny všechny potřebné balíčky.

Když byste chtěli takový balíček odinstalovat, emerge --unmerge Vám moc nepomůže, protože závislosti v systému zůstávají.

Portage samozřejmě umí najít a odstranit i takovéto osiřelé závislosti, ale protože se tyto závislosti dynamicky mění, je potřeba nejprve plně zaktualizovat systém, včetně následků případných změn USE proměnných. Poté již můžete spustit emerge --depclean pro odstranění balíčků, jež nejsou potřeba, a nakonec znovu přeložit balíčky, které jsou dynamicky linkovány s nyní odebraným softwarem, ale nevyžadují je.

Toho všeho dosáhnete těmito třemi příkazy:

Výpis kódu 3.13: Ostranění nepotřebných závislostí

# emerge --update --deep --newuse world
# emerge --depclean
# revdep-rebuild

revdep-rebuild je součástí balíčku gentoolkit; nezapomeňte si ho nainstalovat:

Výpis kódu 3.14: Instalace balíčku gentoolkit

# emerge gentoolkit

1.d. Když si Portage stěžuje...

O SLOTech, virtuálech, větvích, architekturách a profilech

Jak již bylo řečeno, Portage je mocný nástroj mající mnoho vlastností, které jiné nástroje pro správu softwaru postrádají. Pro lepší představu popíšeme některé jeho aspekty, aniž bychom zabíhali do větší hloubky.

S Portage není problém mít více verzí jednoho balíčku v systému najednou. Jiné distribuce často pojmenovávají své balíčky včetně verzí (jako například freetype a freetype2), Portage používá technologii SLOTů. Ebuild deklaruje, do kterého SLOTu daná verze patří, a ebuildy s různými SLOTy mohou existovat vedle sebe. Například ebuildy balíčku freetype mají SLOT="1" a SLOT="2".

Existují balíčky poskytující shodné funkce, avšak různými způsoby. Například metalogd, sysklogd a syslog-ng jsou systémové loggery, a proto uspokojí závislost aplikace vyžadující "syslog". Taková aplikace nemůže záviset například na balíčku metalogd, protože existují i jiné loggery. Proto přichází Portage s konceptem virtuálů - každý systémový logger poskytuje virtual/syslog, a proto mohou aplikace záviset právě na této hodnotě.

Software ve stromu Portage se může nacházet ve více větvích. Ve výchozím nastavení se Portage zabývá pouze softwarem, který Gentoo považuje za stabilní. Když je do stromu přidán nový balíček, jde většinou nejprve do testovací větve, což znamená, že před tím, než bude označen jako stabilní, musí projít více testy. Ebuildy jsou již sice součástí stromu, avšak Portage je nepoužije, dokud nepřejdou do stabilní větve.

Některý software je dostupný pouze pro pár architektur, nebo na některých nefunguje, případně ještě vyžaduje testování. Je také možné, že vývojář, který balíček do stromu umístil, není schopen ověřit, zda je software funkční na jiných architekturách.

Každá instalace Gentoo se řídí určitým profilem, který obsahuje, kromě dalších informací, seznam balíčků nutných pro normální chod systému.

Blokované balíčky

Výpis kódu 4.1: Varování Portage o blokovaných balíčcích (s --pretend)

[blocks B     ] mail-mta/ssmtp (is blocking mail-mta/postfix-2.2.2-r1)

Výpis kódu 4.2: Varování Portage o blokovaných balíčcích (bez --pretend)

!!! Error: the mail-mta/postfix package conflicts with another package.
!!!        both can't be installed on the same system together.
!!!        Please use 'emerge --pretend' to determine blockers.

Ebuildy v sobě obsahují informaci, podle které Portage určuje závislosti. Jsou dva druhy závislostí: závislosti pro překlad, deklarované pomocí DEPEND, a závislosti pro běh programu, deklarované v sekci RDEPEND. Když jedna z nich označí balíček nebo virtuál jako nekompatibilní, nastane blokování.

Pro vyřešení blokování máte dvě možnosti - nový balíček nemusíte instalovat, a nebo odstraníte balík vytvářející konflikt. Ve výše uvedeném příkladu se buď můžete rozhodnout nenainstalovat postfix a nebo nejprve odstranit ssmtp.

Je také možné, že se mají nainstalovat dva balíčky, které se však navzájem blokují. Pokud tento případ nastane (což se neděje nijak často), měli byste zvážit, k čemu je potřebujete oba; pokud najdete nějaký důvod, budeme rádi, když nám jej ohlásíte prostřednictvím Bugzilly.

Zamaskované balíčky

Výpis kódu 4.3: Varování Portage o zamaskovaných balíčcích

!!! all ebuilds that could satisfy "bootsplash" have been masked.

Výpis kódu 4.4: Varování Portage o zamaskovaných balíčcích - důvod

!!! possible candidates are:

- gnome-base/gnome-2.8.0_pre1 (masked by: ~x86 keyword)
- lm-sensors/lm-sensors-2.8.7 (masked by: -sparc keyword)
- sys-libs/glibc-2.3.4.20040808 (masked by: -* keyword)
- dev-util/cvsd-1.0.2 (masked by: missing keyword)
- media-video/ati-gatos-4.3.0 (masked by: package.mask)
- sys-libs/glibc-2.3.2-r11 (masked by: profile)

Když se pokusíte nainstalovat balíček, který není pro Váš systém dostupný, dočkáte se takovéto chyby. Měli byste buď nainstalovat jiný podobný balíček a nebo počkat, než ten Vámi vybraný bude dostupný. Vždy je důvod, proč je konkrétní balíček nedostupný:

  • ~arch keyword znamená, že balíček ještě není dostatečně otestovaný pro stabilní větev. Počkejte pár dní nebo týdnů a zkuste to znovu.
  • -arch keyword nebo -* keyword znamená, že aplikace nepracuje na Vaší architektuře. Věříte-li, že ano, vyplňte oznámení o chybě v naší bugzille.
  • missing keyword znamená, že aplikace ještě nebyla na Vaší architektuře testována. Zeptejte se týmu starajícího se o portování na danou architekturu, případně balíček rovnou vyzkoušejte a oznamte své výsledky přes naší bugzillu.
  • package.mask znamená, že je balíček poškozený, nestabilní nebo něco ještě horšího, a byl po zralé úvaze označen "nepoužívejte".
  • profile znamená, že balíček není vhodný pro Váš profil. Aplikace může poškodit Váš systém, pokud ji nainstalujete, a nebo prostě není s Vámi používaným profilem kompatibilní.

Chybějící závislosti

Výpis kódu 4.5: Varování Portage o chybějící závislosti

emerge: there are no ebuilds to satisfy ">=sys-devel/gcc-3.4.2-r4".

!!! Problem with ebuild sys-devel/gcc-3.4.2-r2
!!! Possibly a DEPEND/*DEPEND problem.

Aplikace, kterou se pokoušíte nainstalovat, závisí na jiné, které na Vašem systému není dostupná. Prosím přesvědčte se, zda naše bugzilla o problému ví, a pokud ne, ohlaste ho, prosím. Pokud nekombinujete více větví, neměla by taková situace nastat a je to tudíž chyba.

Nejednoznačná jména ebuildů

Výpis kódu 4.6: Varování Portage o nejednoznačných jménech balíčků

!!! The short ebuild name "aterm" is ambiguous.  Please specify
!!! one of the following fully-qualified ebuild names instead:

    dev-libs/aterm
    x11-terms/aterm

Aplikace, kterou chcete nainstalovat, má stejné jméno, jako jiný balíček, a proto je potřeba, abyste uvedli i jméno kategorie. Portage Vám dá vybrat z možných řešení.

Kruhové závislosti

Výpis kódu 4.7: Varování Portage o kruhových závislostech

!!! Error: circular dependencies:

ebuild / net-print/cups-1.1.15-r2 depends on ebuild / app-text/ghostscript-7.05.3-r1
ebuild / app-text/ghostscript-7.05.3-r1 depends on ebuild / net-print/cups-1.1.15-r2

Dva (nebo více) balíčky, které chcete nainstalovat, na sobě navzájem závisí, a proto nemohou být nainstalovány. Toto je velmi pravděpodobně chyba ve stromu Portage, a proto prosím zkuste znovu sesynchronizovat svoji kopii z Internetu o chvíli později, a pokuste se instalaci opakovat. Také se můžete podívat do bugzilly, zda je problém znám, a pokud ne, ohlásit ho.

Selhání stažení

Výpis kódu 4.8: Varování Portage o selhání stažení

!!! Fetch failed for sys-libs/ncurses-5.4-r5, continuing...
(...)
!!! Some fetch errors were encountered.  Please see above for details.

Portage nebylo schopné stáhnout zdrojové kódy dané aplikace a bude pokračovat instalací dalšího softwaru (pokud to půjde). Tato chyba může být způsobena zrcadlem, které nebylo správně synchronizované, nebo ebuildem, který se pokouší stáhnout špatný soubor. Je také možné, že server, na kterém jsou soubory umístěny, je zrovna z nějakého důvodu nedostupný.

Zkuste to znovu za hodinu, problém pravděpodobně vymizí.

Ochrana profilem systému

Výpis kódu 4.9: Varování Portage o ochraně balíčku profilem

!!! Trying to unmerge package(s) in system profile. 'sys-apps/portage'
!!! This could be damaging to your system.

Chcete odebrat balíček, který tvoří důležitou část systému. Je uveden v profilu jako vyžadovaný, a proto by neměl být ze systému odstraněn.

2. USE proměnné

2.a. Co jsou USE proměnné?

Proč USE proměnné

Při instalaci Gentoo (nebo jakékoli jiné distribuce, a dokonce i jakéhokoli operačního systému) činíte volby závisející na prostředí, se kterým pracujete. Nastavení pro server je jiné než nastavení pro pracovní stanici. Stanice určená pro hry je jiná než stanice pro renderování 3D grafiky.

Tyto volby se nevztahují jenom na výběr balíčků, ale týkají se i vlastností, které by měl daný balíček poskytovat. Nebudete-li používat OpenGL, nač ho instalovat a proč aktivovat jeho podporu v jiných balíčcích? Nechcete-li používat KDE, proč byste měli aktivovat jeho podporu v balíčcích, které bezchybně fungují i bez ní?

Abychom uživatelům usnadnili rozhodování co aktivovat a co ne, chceme od nich, aby jednoduše specifikovali své prostředí. To je přiměje k tomu, že si rozmyslí, co vlastně potřebují, a umožní Portage, našemu systému pro správu balíčků, užitečné rozhodování.

Definice USE proměnné

Vítejte do USE proměnných. Tyto proměnné (USE flags) jsou klíčová slova obsahující podporu a informace o závislosti pro konkrétní oblast. Když definujete nějakou USE proměnnou, dáváte tím Portage vědět, že chcete podporu pro danou funkci. To samozřejmě ovlivní závislosti balíčků.

Pojďme se podívat na konkrétní příklad - klíčové slovo kde. Pokud jej nemáte v proměnné USE, všechny balíčky, které mají volitelnou podporu pro KDE budou zkompilovány bez ní. Balíčky, které mají KDE uvedeno jako volitelnou závislost, nebudou instalovat knihovny z KDE. Naopak přidáte-li kde do USE proměnné, budou tyto balíčky zkompilovány s podporou KDE a knihovny z tohoto prostředí budou nainstalovány jako závislosti.

Správným nastavením této proměnné dostanete systém ušitý na míru Vaším potřebám.

Jaké USE proměnné existují?

Jsou dva druhy USE proměnných - globální a lokální.

  • Globální USE proměnnou používá více balíčků z celého systému. Tento druh USE proměnných je to, čemu většina lidí říká USE proměnné.
  • Lokální USE proměnné jsou používané jedním balíčkem pro rozhodnutí, která se týkají pouze jej samotného.

Seznam dostupných globálních USE proměnných je k dispozici na webu nebo na Vašem systému v souboru /usr/portage/profiles/use.desc.

Seznam dostupných lokálních USE proměnných je v nainstalovaném systému dostupný v souboru /usr/portage/profiles/use.local.desc.

2.b. Používáme USE proměnné

Deklarace stálých USE proměnných

Doufejme, že jste již přesvědčeni o důležitosti USE proměnných; nyní Vám ukážeme, jak je používat.

Jak jsme již zmínili, USE flagy se nastavují v proměnné USE. Abychom usnadnili uživatelům život, existují výchozí nastavení USE, která reflektují to, co si myslíme, že bude používat většina uživatelů Gentoo Linuxu. Tato výchozí nastavení jsou deklarována v souboru make.defaults a jsou součást profilu.

Profil, kterým se Váš systém řídí, je určen symbolickým odkazem /etc/make.profile. Konečné nastavení je kombinací celého stromu profilů, z nichž hlavní se jmenuje base (/usr/portage/profiles/base).

Podívejme se na výchozí nastavení pro profil 2004.3:

Výpis kódu 2.1: Celkové nastavení proměnné USE pro profil 2004.3

(Tento příklad je výsledek nastavení z profilů base, default-linux,
 default-linux/x86 a default-linux/x86/2004.3)
USE="x86 oss apm arts avi berkdb bitmap-fonts crypt cups encode fortran f77
     foomaticdb gdbm gif gpm gtk imlib jpeg kde gnome libg++ libwww mad
     mikmod motif mpeg ncurses nls oggvorbis opengl pam pdflib png python qt
     quicktime readline sdl spell ssl svga tcpd truetype X xml2 xmms xv zlib"

Jak vidíte, poměrně hodně klíčových slov je již aktivních. Neměňte žádná nastavení v souboru make.defaults - změny v tomto souboru budou potlačeny při aktualizaci Portage.

Chcete-li změnit tato výchozí nastavení, musíte změnit proměnnou USE. Celý systém ovlivní její nastavení v souboru /etc/make.conf. USE proměnné můžete přidávat i odebírat; odstranění se provádí přidáním znaménka mínus ("-") před dané klíčové slovo.

Například pro odstranění podpory KDE a QT a zároveň aktivaci podpory pro LDAP nastavte USE v souboru /etc/make.conf takto:

Výpis kódu 2.2: Ukázka nastavení USE proměnné v /etc/make.conf

USE="-kde -qt ldap"

Individuální nastavení USE proměnných

Někdy je potřeba nastavit USE proměnnou pro jeden (nebo více) balíčků, avšak ne pro celý systém. V takovém případě musíte vytvořit adresář /etc/portage (pokud ještě neexistuje) a použít soubor /etc/portage/package.use.

Například nechcete-li mít většinu systému zkompilovanou s podporou berkdb, avšak chcete ji používat v mysql, měli byste přidat:

Výpis kódu 2.3: Ukázka /etc/portage/package.use

dev-db/mysql berkdb

Je také možné danou USE proměnnou pro daný balíček zakázat. Například pokud nechcete mít aktivovanou java v PHP:

Výpis kódu 2.4: Druhý příklad /etc/portage/package.use

dev-php/php -java

Dočasná nastavení USE proměnných

Někdy můžete chtít nastavit určitou USE proměnnou pouze jednou. Namísto dvojnásobné editace /etc/make.conf (nejprve změna nastavení a poté uvedení do původního stavu) můžete použít USE jako proměnnou prostředí. Avšak pamatujte, že při aktualizaci dané aplikace (ať už explicitně jí samotné a nebo při aktualizaci systému) o svá nastavení přijdete!

Jako příklad dočasně zakážeme Javu během instalace Mozilly.

Výpis kódu 2.5: Použití USE jako proměnné prostředí

# USE="-java" emerge mozilla

Přednosti

Nastavení USE proměnných se řídí určitými pravidly o přednosti. Například může být zbytečné deklarovat USE="-java" jen abyste zjistili, že je definovaná jinde a s vyšší prioritou. USE proměnné jsou zpracovávány v tomto pořadí (počínaje nejnižší prioritou):

  1. výchozí nastavení USE deklarované v souboru make.defaults uvnitř profilu
  2. uživatelem definovaná nastavení v /etc/make.conf
  3. uživatelem definovaná nastavení v /etc/portage/package.use
  4. uživatelem definovaná nastavení předaná jako proměnná prostředí

Pro zobrazení výsledných nastavení USE proměnných spusťte emerge --info; tato volba zajistí zobrazení všech proměnných, které Portage použije, včetně USE.

Výpis kódu 2.6: Zobrazení emerge --info

# emerge --info

Promítnutí změn USE proměnných do systému

Změnili-li jste nastavení USE proměnných a přejete-li si, aby se tyto změny promítly do systému, použijte volbu --newuse příkazu emerge:

Výpis kódu 2.7: Rebuild systému

# emerge --update --deep --newuse world

Nyní spusťte depclean (součást Portage), který odstraní závislosti, které již nejsou kvůli změněným USE proměnným potřeba.

Varování: Spouštění emerge --depclean je nebezpečná operace a měli byste na ní dát pozor. Překontrolujte, zda jsou "zbytečné" balíčky opravdu zbytečné, abyste si neodstranili něco, co potřebujete. V následujícím příkladu přidáme parametr -p, který zajistí, že depclean pouze vypíše seznam balíčků, aniž by je odstranil.

Výpis kódu 2.8: Odstranění nepotřebných balíčků

# emerge -p --depclean

Až depclean skončí, spusťte revdep-rebuild pro nový překlad aplikací, jež jsou dynamicky linkované se sdílenými objekty patřícími možná odstraněným balíčkům. revdep-rebuild je součástí balíčku gentoolkit; nezapomeňte si ho nejprve nainstalovat.

Výpis kódu 2.9: Spuštění revdep-rebuild

# revdep-rebuild

Až toto vše proběhne, bude Váš systém používat nová nastavení USE proměnných.

2.c. USE proměnné pro specifické pro balíčky

Zobrazení dostupných USE proměnných

Podívejme se kupříkladu na Mozillu - jaké USE proměnné ji ovlivní? Pro jejich zobrazení předejte emerge parametry --pretend a --verbose:

Výpis kódu 3.1: Zobrazení použitých USE proměnných

# emerge --pretend --verbose mozilla
These are the packages that I would merge, in order:

Calculating dependencies ...done!
[ebuild   R   ] www-client/mozilla-1.7.12-r2  USE="crypt gnome java mozsvg ssl
truetype xprint -debug -ipv6 -ldap -mozcalendar -mozdevelop -moznocompose
-moznoirc -moznomail -moznoxft -postgres -xinerama" 0 kB

emerge není jediný nástroj vhodný k tomuto účelu. Ve skutečnosti existuje nástroj pro informace o balíčcích jménem equery, který je opět součástí balíčku gentoolkit. Nejprve jej tedy nainstalujme:

Výpis kódu 3.2: Instalace gentoolkitu

# emerge gentoolkit

Nyní spusťte equery s argumentem uses, což zobrazí přehled USE proměnných používaných daným balíčkem. Kupříkladu pro balíček gnumeric:

Výpis kódu 3.3: Použití equery pro přehled aktivních USE proměnných

# equery uses gnumeric
[ Colour Code : set unset ]
[ Legend      : (U) Col 1 - Current USE flags        ]
[             : (I) Col 2 - Installed With USE flags ]

 U I [ Found these USE variables in : app-office/gnumeric-1.2.0 ]
 - - libgda  : Adds GNU Data Access (CORBA wrapper) support for gnumeric
 - - gnomedb : unknown
 + + python  : Adds support/bindings for the Python language
 + + bonobo  : Adds support for gnome-base/bonobo (Gnome CORBA interfaces)

3. Možnosti Portage — FEATURES

3.a. Možnosti Portage (FEATURES)

Aby se Vám s Gentoo lépe pracovalo, nabízí Portage mnoho dalších možností. Některé z nich závisí na různých doplňkových nástrojích vylepšujících výkon, spolehlivost, bezpečnost,...

Pro povolení nebo zakázání určité možnosti musíte změnit proměnnou FEATURES v souboru /etc/make.conf, která obsahuje různé hodnoty oddělené mezerami. V některých případech budete navíc muset doinstalovat příslušný nástroj, na kterém daná funkce závisí.

V tomto dokumentu nebudou popsány všechny funkce, které Portage umí; pro jejich kompletní přehled se podívejte na manuálovou stránku make.conf:

Výpis kódu 1.1: Zobrazení manuálové stránky make.conf

$ man make.conf

Abyste zjistili, jaké možnosti jsou zapnuty, podívejte se do výstupu emerge --info na proměnnou FEATURES:

Výpis kódu 1.2: Které FEATURES jsou již zapnuté?

$ emerge --info | grep FEATURES

3.b. Distribuované kompilace

Použití distcc

distcc slouží pro rozdělení kompilace mezi více strojů v síti, které navíc nemusí být nutně stejné. Klient distcc posílá dostupným serverům, na kterých běží distccd, všechny potřebné informace, takže mohou kompilovat části zdrojového kódu paralelně. Výsledkem je celkové urychlení kompilace.

Více informací o distcc a o jejím použití s Gentoo můžete najít v Gentoo distcc dokumentaci.

Instalace distcc

Distcc je dodávaná s grafickým nástrojem pro monitorování úkolů, které Váš počítač požaduje od ostatních. Používáte-li Gnome, přidejte do USE proměnnou 'gnome', pokud ne, a přesto chcete mít tento nástroj k dispozici, přidejte 'gtk'.

Výpis kódu 2.1: Instalace distcc

# emerge distcc

Aktivace podpory v Portage

V souboru /etc/make.conf přidejte do proměnné FEATURES hodnotu distcc. Dále je potřeba změnit nastavení MAKEOPTS; známé pravidlo je hodnota "-jX", kde X je celkový počet procesorů, na kterých běží distccd (včetně počítače, který posílá požadavky na kompilace) plus jedna, avšak můžete dosáhnout lepších výsledků i s jinými hodnotami.

Nyní spusťte distcc-config a zadejte seznam dostupných distcc serverů. Popíšeme si jednoduchý příklad, kde budeme používat servery 192.168.1.102 (počítač, na kterém nyní pracujeme), 192.168.1.103 a 192.168.1.104 ("vzdálené" stroje):

Výpis kódu 2.2: Nastavení distcc pro použití tří serverů

# distcc-config --set-hosts "192.168.1.102 192.168.1.103 192.168.1.104"

Nezapomeňte spustit démona distccd:

Výpis kódu 2.3: Spuštění démonu distccd

# rc-update add distccd default
# /etc/init.d/distccd start

3.c. Vyrovnávací paměť kompilace (cache)

Představujeme ccache

ccache je rychlá vyrovnávací paměť (cache) kompilátoru, která si zapamatuje výsledek každého překladu. V případě, že budete chtít překompilovat stejný program později, se tak celý proces podstatně urychlí, pro běžné aplikace přibližně pětkrát až desetkrát.

Pokud Vás zajímají výhody i nevýhody ccache, navštivte prosím její domovskou stránku.

Instalace ccache

Pro instalaci ccache spusťte emerge ccache:

Výpis kódu 3.1: Instalace ccache

# emerge ccache

Aktivace podpory v Portage

Otevřete soubor /etc/make.conf a přidejte ccache do proměnné FEATURES. Navíc vytvořte další proměnnou CCACHE_SIZE a nastavte ji na hodnotu "2G":

Výpis kódu 3.2: Změna CCACHE_SIZE v /etc/make.conf

CCACHE_SIZE="2G"

Abyste zjistili, zda ccache funguje, požádejte ji o zobrazení statistiky. Protože Portage používá pro ccache jiný domovský adresář, musíte nastavit proměnnou CCACHE_DIR:

Výpis kódu 3.3: Zobrazení statistiky ccache

# CCACHE_DIR="/var/tmp/ccache" ccache -s

Adresář /var/tmp/ccache je výchozí umístění domovského adresáře ccache pro Portage. Chcete-li jej přesunout jinam, změňte proměnnou CCACHE_DIR v souboru /etc/make.conf.

Když však spouštíte ccache ručně, snaží se používat adresář ${HOME}/.ccache. Při dotazech na využití ccache Portage proto musíte použít proměnnou CCACHE_DIR.

Použití ccache pro C kompilace mimo Portage

Chcete-li používat ccache i pro kompilace mimo Portage, musíte přidat /usr/lib/ccache/bin na začátek proměnné PATH (před /usr/bin). Dosáhnete toho editací souboru /etc/env.d/00basic, který obsahuje první definici proměnné prostředí PATH:

Výpis kódu 3.4: Editace /etc/env.d/00basic

PATH="/usr/lib/ccache/bin:/opt/bin"

3.d. Podpora binárních balíčků

Vytváření předkompilovaných balíčků

Portage podporuje instalace z předkompilovaných balíčků. I když je samo Gentoo kromě takzvaných GRP snapshotů neposkytuje, Portage je zpracovávat umí.

Pokud je balíček již nainstalován, můžete z něj vytvořit binární pomocí quickpkg; pokud není, použijte emerge s parametrem --buildpkg či --buildpkgonly.

Chcete-li, aby Portage vytvářelo předkompilované balíčky při každé instalaci, přidejte do proměnné FEATURES hodnotu buildpkg.

Rozšířenější podporu vytváření předkompilovaných skupin balíčků poskytuje catalyst; pro více informací si prosím přečtěte Referenční manuál Catalyst (anglicky) a Catalyst často kladené dotazy (anglicky).

Instalace předkompilovaných balíčků

Gentoo sice předkompilované balíčky přímo neposkytuje, ale můžete si je vytvořit sami. Pokud se tak rozhodnete, musíte Portage informovat, kde je má hledat, a to pomocí proměnné PORTAGE_BINHOST. Ukládáte-li například balíčky na ftp://buildhost/gentoo, použijte:

Výpis kódu 4.1: Nastavení PORTAGE_BINHOST v /etc/make.conf

PORTAGE_BINHOST="ftp://buildhost/gentoo"

Když chcete nainstalovat předkompilovaný balíček, přidejte --getbinpkg k volbě --usepkg příkazu emerge. První zajistí stažení předkompilovaného balíčku, druhá jeho použití namísto nové kompilace.

Chcete-li například nainstalovat gnumeric z předkompilovaného balíčku, použijte toto:

Výpis kódu 4.2: Instalace gnumeric z předkompilovaného balíčku

# emerge --usepkg --getbinpkg gnumeric

Více informací o předkompilovaných balíčcích najdete v manuálové stránce příkazu emerge:

Výpis kódu 4.3: Manuálová stránka příkazu emerge

$ man emerge

4. Init skripty

4.a. Runlevely

Boot systému

Během bootování systému si pravděpodobně všimnete toho, jak po monitoru ubíhá poměrně hodně textu. Budete-li pozorní, zjistíte, že při každém rebootu jde o ty samé informace. Pořadí těchto akcí se nazývá bootovací sekvence a je (do značné míry) pevně daná.

Nejprve bootloader načte do paměti obraz jádra (určený v konfiguračním souboru) a předá jej CPU k provedení. Kernel si poté zinicializuje potřebné datové struktury a pochody a spustí proces init.

Tento proces postupně namountuje všechny potřebné souborové systémy (určeno v /etc/fstab) a spustí různé soubory z adresáře /etc/init.d, které se starají o spuštění služeb, které potřebujete k bezproblémovému provozu počítače.

Nakonec, když jsou všechny skripty provedeny, aktivuje init terminály (ve většině případů pouze virtuální konzole ukryté za Alt-F1, Alt-F2 atd.) pomocí procesu agetty. Ten se postará o to, abyste se byli schopni přihlásit - spustí login.

Init skripty

init samozřejmě neprovádí skripty z adresáře /etc/init.d náhodně. Nejen, že dodržuje jejich správné pořadí, ale provádí jenom ty, které má. Všechny potřebné informace má k dispozici v adresáři /etc/runlevels.

Nejprve spouští init ty skripty z /etc/init.d, na které vede odkaz z /etc/runlevels/boot. Většinou je pořadí spouštění určeno abecedně, ale některé skripty obsahují informace o závislostech, podle kterých systém zjistí, že je potřeba nejdříve spustit jiný skript.

Po zpracování /etc/runlevels/boot pokračuje init skripty, na které vede symbolický odkaz z in /etc/runlevels/default. Znovu platí, že pořadí jejich spuštění je určeno abecedně, a případné závislosti jsou dodrženy.

Jak init pracuje

Samozřejmě se init o tom všem nerozhoduje sám; potřebuje konfigurační soubor, který mu říká, co má dělat. Tento soubor se jmenuje /etc/inittab.

Pamatujete-li si na bootovací sekvenci, jistě si vzpomenete i na to, že jako první byly připojeny potřebné souborové systémy. Tuto akci obstará následující řádek v /etc/inittab:

Výpis kódu 1.1: Řádek inicializace systému v /etc/inittab

si::sysinit:/sbin/rc sysinit

Tento řádek říká initu, že pro inicializaci systému musí spustit /sbin/rc sysinit. Skript /sbin/rc se o ni postará; můžeme tedy říci, že init toho moc nedělá - úkol pouze převede na jiný proces.

Jako druhý krok init provede všechny skripty, na které vedou symbolické odkazy z /etc/runlevels/boot, viz tento řádek:

Výpis kódu 1.2: Pokračování inicializace systému

rc::bootwait:/sbin/rc boot

O samotné provedení úkolu se opět stará skript rc. Povšimněte si, že parametr předaný skriptu (boot) je zároveň i jméno použitého adresáře uvnitř /etc/runlevels.

Nyní se init podívá do svého konfiguračního souboru, aby zjistil, v jakém runlevelu má systém běžet. Řádka z /etc/inittab:

Výpis kódu 1.3: Řádek initdefault

id:3:initdefault:

V tomto případě (který bude používat většina uživatelů Gentoo) je číslo runlevelu 3. init tedy zjistí, že musí spustit runlevel 3:

Výpis kódu 1.4: Definice runlevelů

l0:0:wait:/sbin/rc shutdown
l1:S1:wait:/sbin/rc single
l2:2:wait:/sbin/rc nonetwork
l3:3:wait:/sbin/rc default
l4:4:wait:/sbin/rc default
l5:5:wait:/sbin/rc default
l6:6:wait:/sbin/rc reboot

Opět vidíme, že řádka definující runlevel 3 používá ke spuštění služeb skript rc, nyní s parametrem default. Parametr předaný skriptu rc se znovu shoduje se jménem adresáře z /etc/runlevels.

rc skončí svoji práci, init se rozhodne, jaké virtuální konzole má aktivovat a jaké programy na nich spustit:

Výpis kódu 1.5: Definice virtualních konzolí

c1:12345:respawn:/sbin/agetty 38400 tty1 linux
c2:12345:respawn:/sbin/agetty 38400 tty2 linux
c3:12345:respawn:/sbin/agetty 38400 tty3 linux
c4:12345:respawn:/sbin/agetty 38400 tty4 linux
c5:12345:respawn:/sbin/agetty 38400 tty5 linux
c6:12345:respawn:/sbin/agetty 38400 tty6 linux

Co je to runlevel?

Ukázali jsme, že se init při rozhodování o tom, do jakého runlevelu vstoupit, drží číselného schématu. Runlevel je stav, ve kterém Váš systém běží; váží se k němu skripty (skripty runlevelu nebo init skripty), které musí být spuštěny, když systém do runlevelu vstupuje a nebo jej ukončuje.

V Gentoo je definováno sedm runlevelů: tři pro vnitřní potřebu a čtyři uživatelsky definované. Runlevely pro vnitřní potřebu jsou sysinit, shutdown a reboot a dělají to, co jejich jména napovídají - starají se o inicializaci systému, jeho vypnutí a restart.

Uživatelsky definované runlevely jsou ty, které používají podadresář /etc/runlevels - boot, default, nonetwork a single. Runlevel boot spouští všechny nezbytné služby, které dále používají další runlevely. Zbývající tři runlevely se odlišují počtem a druhy služeb, které spouští: runlevel default slouží pro běžný chod systému, nonetwork pro dobu, kdy není potřeba síť, a single tehdy, je-li potřeba opravit systém.

Práce s init skripty

Skripty, které spouští proces rc, se nazývají init skripty. Každý ze skriptů uložených v /etc/init.d může být spuštěn s parametry start, stop, restart, pause, zap, status, ineed, iuse, needsme, usesme nebo broken.

Pro spuštění, zastavení a nebo restart služby (a zároveň všech služeb, které na ní závisí), slouží parametry start, stop a restart:

Výpis kódu 1.6: Spuštění Postfixu

# /etc/init.d/postfix start

Poznámka: Pouze služby, které ji potřebují, jsou zastaveny nebo restartovány. Další na ní závislé služby (ty, které ji používají, ale nepotřebují), nejsou dotčeny.

Chcete-li zastavit službu, ale ne další služby, které na ní závisí, můžete použít parametr pause:

Výpis kódu 1.7: Pozastavení Postfixu a ponechání dalších služeb naživu

# /etc/init.d/postfix pause

Chcete-li vědět, v jakém stavu se daná služba právě nachází (zda běží, je ukončená a nebo pozastavená), můžete použít argument status:

Výpis kódu 1.8: Informace o stavu Postfixu

# /etc/init.d/postfix status

Říká-li informace o stavu, že služba běží, avšak Vy víte, že ne, můžete tuto informaci změnit pomocí argumentu zap:

Výpis kódu 1.9: Změna informace o stavu služby postfix

# /etc/init.d/postfix zap

Pro zjištění závislostí služby můžete použít iuse či ineed. Parametr ineed vypíše seznam služeb, které služba aktuální ke svému chodu opravdu potřebuje; iuse naproti tomu ukáže ty služby, které daná služba používat může, ale ke správné funkci je nutně nevyžaduje.

Výpis kódu 1.10: Výpis všech služeb, na kterých Postfix závisí

# /etc/init.d/postfix ineed

Podobně se můžete dotázat na služby, které danou službu potřebují (needsme) nebo mohou používat (usesme):

Výpis kódu 1.11: Výpis všech služeb, které potřebují Postfix

# /etc/init.d/postfix needsme

Konečně, je možné požádat i o výpis závislostí, které služba vyžaduje, ale které chybí:

Výpis kódu 1.12: Výpis chybějících závislostí Postfixu

# /etc/init.d/postfix broken

4.b. Práce s rc-update

Co je rc-update?

Init systém Gentoo používá pro rozhodování o pořadí spouštění služeb strom závislostí. Protože jeho udržování je poměrně zdlouhavé a únavné, vytvořili jsme nástroje, které správu runlevelů a init skriptů usnadňují.

Nástrojem rc-update můžete do runlevelu přidávat a odebírat skripty, a on se sám postará o zavolání skriptu depscan.sh pro znovuvytvoření stromu závislostí

Přidání a odebírání služeb

Během instalace Gentoo jste již init skripty přidávali do runlevelu "default". Tehdy jste možná ještě neměli páru, k čemu onen "default" slouží, ale teď už byste to vědět měli. Skript rc-update vyžaduje i druhý argument definující akci k provedení: add, del nebo show.

Pro přidání či odebrání init skriptu jednoduše spusťte rc-update s argumentem add (přidání) nebo del (odebrání) následovaným jménem init skriptu a runlevelem. Například takto:

Výpis kódu 2.1: Odstranění Postfixu z výchozího runlevelu

# rc-update del postfix default

Příkaz rc-update show zobrazí dostupné init skripty a patřičné runlevely, ve kterých jsou skripty aktivní:

Výpis kódu 2.2: Informace o init skriptech

# rc-update show

4.c. Konfigurace služeb

K čemu další konfigurace?

Init skripty mohou být poměrně komplexní, a proto není vhodné, aby je měnili uživatelé sami, kvůli riziku zanesení chyb. Služby je však potřeba konfigurovat, například někdy můžete potřebovat předat samotné službě další parametry.

Druhým důvodem k tomu, abychom udržovali informace o konfiguraci mimo init skript jsou aktualizace, resp. zamezení obavám o to, že o svoji konfiguraci během aktualizace přijdete.

Adresář /etc/conf.d

Konfigurace služeb je v Gentoo snadná - každý konfigurovatelný init skript má svůj soubor v adresáři /etc/conf.d. Kupříkladu konfigurace init skriptu apache2 (/etc/init.d/apache2) se provádí v souboru /etc/conf.d/apache2; tento obsahuje parametry předávané serveru Apache 2 při jeho spuštění:

Výpis kódu 3.1: Proměnná definovaná v /etc/conf.d/apache2

APACHE2_OPTS="-D PHP4"

V těchto konfiguračních souborech nenajdete nic než proměnné, ovlivňující chování daného init skriptu, a samozřejmě komentáře. Formát je podobný jako v /etc/make.conf.

4.d. Psaní init skriptu

Musím?

Ne, psaní init skriptů většinou není nutné, protože Gentoo poskytuje skripty připravené k použití. Avšak je možné, že jste si nainstalovali nějakou službu, která není v Portage, a v takovém případě si budete muset init skript pravděpodobně vytvořit.

Nepoužívejte init skript, který není napsaný přímo pro Gentoo -- formát jiných distribucí není s naším kompatibilní!

Schéma

Základní uspořádání init skriptu je ukázáno níže:

Výpis kódu 4.1: Základní uspořádání init skriptu

#!/sbin/runscript

depend() {
  (informace o závislostech)
}

start() {
  (příkazy potřebné pro start služby)
}

stop() {
  (příkazy nezbytné pro zastavení služby)
}

restart() {
  (příkazy potřebné pro restart služby)
}

Každý init skript musí obsahovat funkci start(), všechny další sekce jsou volitelné.

Závislosti

Můžete definovat dva druhy závislostí: use a need. Jak již bylo zmíněno výše, need je striktnější než use. Obě dvě akceptují buď jméno služby, kterou potřebujete či používáte a nebo virtuální závislost.

Virtuální závislost může být poskytovaná více službami. Váš init skript může například záviset na systémovém loggeru, avšak protože jich je více možných (metalogd, syslog-ng, sysklogd,...), a služba nemůže přes need záviset na všech (žádný rozumný systém nemá všechny nainstalované a spuštěné), použijete virtuální závislost, poskytovanou pomocí provide.

Podívejme se na na informace o závislostech pro službu postfix:

Výpis kódu 4.2: Informace o závislostech Postfixu

depend() {
  need net
  use logger dns
  provide mta
}

Jak můžete vidět, služba postfix:

  • vyžaduje (virtuální) závislost net (kterou poskytuje například /etc/init.d/net.eth0)
  • používá (virtuální) závislost logger (kterou poskytuje například /etc/init.d/syslog-ng)
  • používá (virtuální) závislost dns (kterou poskytuje například /etc/init.d/named)
  • poskytuje (virtuální) závislost mta (která je společná pro všechny mailservery)

Kontrola pořadí

V některých případech nebudete nějakou službu potřebovat, ale přejete si, aby byla ta Vaše spuštěna před (before) nebo až po (after) nějaké jiné, pokud je tato v systému přítomná (povšimněte si podmínky - již nejde o závislost) a zároveň je ve stejném runlevelu (opět podmínka - v úvahu jsou brány pouze služby ve stejném runlevelu). Takového chování můžete dosáhnout pomocí nastavení before nebo after.

Jako příklad se podíváme na nastavení služby portmap:

Výpis kódu 4.3: Funkce depend() služby portmap

depend() {
  need net
  before inetd
  before xinetd
}

Také můžete použít metaznak "*", který znamená "všechny služby v runlevelu", avšak není to doporučeno.

Výpis kódu 4.4: Spuštění init skriptu jako první v runlevelu

depend() {
  before *
}

Standardní funkce

Dále je potřeba definovat funkci start(), která musí obsahovat všechny příkazy potřebné ke spuštění služby. Je dobré použít funkce ebegin a eend, aby uživatel viděl, co se děje:

Výpis kódu 4.5: Ukázková funkce start()

start() {
  ebegin "Starting my_service"
  start-stop-daemon --start --quiet --exec /path/to/my_service
  eend $?
}

Potřebujete-li více příkladů funkce start(), přečtěte si, prosím, zdrojové kódy dostupných init skriptů v adresáři /etc/init.d. Příkaz start-stop-daemon má výbornou manuálovou stránku, potřebujete-li další informace:

Výpis kódu 4.6: Zobrazení manuálové stránky start-stop-daemon

# man start-stop-daemon

Další funkce, které můžete definovat, jsou stop a restart, není to však povinné! Náš init systém je natolik inteligentní, že pokud používáte start-stop-daemon, doplní si tyto funkce sám.

Syntaxe init skriptů používaných v Gentoo je kompatibilní s Bourne Again Shellem (bash), čili v nich můžete používat rozšíření bashe.

Přidání vlastních možností

Chcete-li, aby Vaše init skripty podporovaly více voleb než ty, na které jsme zatím narazili, měli byste je přidat do proměnné opts a definovat funkci se jménem shodným, jako má daná možnost. Například pro volbu restartdelay:

Výpis kódu 4.7: Podpora volby restartdelay

opts="${opts} restartdelay"

restartdelay() {
  stop
  sleep 3    # před novým spuštěním počkej 3 sekundy
  start
}

Proměnné pro konfiguraci služeb

Abyste mohli využívat konfiguraci v /etc/conf.d, nemusíte dělat vůbec nic - když je váš skript spuštěn, provede se "source" všech těchto souborů (tj. proměnné z nich budou k dispozici):

  • /etc/conf.d/<Váš init skript>
  • /etc/conf.d/basic
  • /etc/rc.conf

Zároveň pokud Váš init skript poskytuje virtuální závislost (například net), bude soubor s ní asociovaný rovněž zpracován (například /etc/conf.d/net).

4.e. Změna výchozího chování

Kdo by to mohl použít?

Mnoho uživatelů notebooků tuto situaci zná - doma chcete spouštět net.eth0, ale na cestách ne, protože během nich síť k dispozici nemáte. S Gentoo můžete změnit chování runlevelů k obrazu svému.

Můžete si například přidat druhý "výchozí" runlevel, do kterého můžete nabootovat, s přiřazenými patřičnými skripty. Při spuštění počítače si budete moci vybrat, který runlevel se má zavést.

Používáme softlevel

Nejprve vytvořte adresář pro svůj "druhý" výchozí runlevel. Jako příklad vytvoříme runlevel offline:

Výpis kódu 5.1: Vytvoření adresáře runlevelu

# mkdir /etc/runlevels/offline

Přidejte nezbytné init skripty do nově vytvořeného adresáře. Například pokud chcete mít přesnou kopii současného runlevelu default, avšak bez net.eth0:

Výpis kódu 5.2: Přidání nezbytných init skriptů

(zkopírujeme všechny služby z runlevelu default do runlevelu offline)
# cd /etc/runlevels/default
# for service in *; do rc-update add $service offline; done
(odstraníme služby, které v runlevelu offline nechceme)
# rc-update del net.eth0 offline
(zobrazíme seznam aktivních služeb pro runlevel offline)
# rc-update show offline
(ukázka část výstupu)
               acpid | offline
          domainname | offline
               local | offline
            net.eth0 |

Nyní změňte konfiguraci svého bootloaderu a přidejte novou položku pro runlevel default. Například pro /boot/grub/grub.conf:

Výpis kódu 5.3: Přidání položky pro runlevel offline

title Gentoo Linux Offline Usage
  root (hd0,0)
  kernel (hd0,0)/kernel-2.4.25 root=/dev/hda3 softlevel=offline

Voilà, to je všechno. Když nyní při bootování Vašeho systému vyberete nově přidanou položku, runlevel offline bude použit místo výchozího default.

Používáme bootlevel

Použití bootlevelu je úplně stejné jako pro softlevel, jediný rozdíl je, že místo druhého runlevelu "default" definujete druhý runlevel "boot".

5. Proměnné prostředí

5.a. Proměnné prostředí?

Co to je

Proměnná prostředí je pojmenovaný objekt, který uchovává nějakou informaci používanou jedno nebo více aplikacemi. Mnoho uživatelů (hlavně ti, kdo s Linuxem nepracují déle) tato nastavení považují za divné nebo nesnadno udržovatelné, není to však pravda: použití proměnných prostředí se dá ve skutečnosti snadno ovlivnit nastavení celé řady aplikací jedinou změnou.

Důležité příklady

V následující tabulce naleznete několik důležitých proměnných prostředí, které jsou použity na linuxových systémech, včetně jejich popisu. Ukázkové hodnoty jsou popsány níže.

Proměnná Popis
PATH Tato proměnná obsahuje dvojtečkou oddělený seznam adresářů, ve kterých systém vyhledává spustitelné soubory. Zadáte-li jméno příkazu (jako například ls, rc-update nebo emerge), avšak tento není nalezen v žádném z těchto adresářů, systém jej nebude moci spustit a budete muset použít plnou cestu (například /bin/ls).
ROOTPATH Slouží ke stejné funkci jako PATH, avšak obsahuje seznam procházených adresářů pro uživatele root.
LDPATH Tato proměnná obsahuje dvojtečkou oddělený seznam adresářů procházených dynamickým linkerem při hledání knihovny.
MANPATH Dvojtečkou oddělený seznam adresářů, ve kterých příkaz man vyhledává manuálové stránky.
INFODIR Dvojtečkou oddělený seznam adresářů, ve kterých příkaz info vyhledává informační stránky.
PAGER Cesta k programu, který se používá pro výpis obsahu souborů (například less nebo more).
EDITOR Tato proměnná určuje cestu k programu, který se používá pro editaci obsahu souborů (například nano nebo vi).
KDEDIRS Obsahuje dvojtečkou oddělený seznam adresářů obsahujících data specifická pro KDE.
CLASSPATH Dvojtečkou oddělený seznam adresářů obsahujících Javové třídy (class).
CONFIG_PROTECT Tato proměnná obsahuje mezerou oddělený seznam adresářů, které by Portage mělo při aktualizacích chránit.
CONFIG_PROTECT_MASK Tato proměnná obsahuje mezerou oddělený seznam adresářů, které by Portage nemělo chránit během aktualizací.

Následují ukázky definic všech výše zmíněných proměnných:

Výpis kódu 1.1: Ukázkovy proměnných

PATH="/bin:/usr/bin:/usr/local/bin:/opt/bin:/usr/games/bin"
ROOTPATH="/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin"
LDPATH="/lib:/usr/lib:/usr/local/lib:/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3"
MANPATH="/usr/share/man:/usr/local/share/man"
INFODIR="/usr/share/info:/usr/local/share/info"
PAGER="/usr/bin/less"
EDITOR="/usr/bin/vim"
KDEDIRS="/usr"
CLASSPATH="/opt/blackdown-jre-1.4.1/lib/rt.jar:."
CONFIG_PROTECT="/usr/X11R6/lib/X11/xkb /opt/tomcat/conf \
                /usr/kde/3.1/share/config /usr/share/texmf/tex/generic/config/ \
                /usr/share/texmf/tex/platex/config/ /usr/share/config"
CONFIG_PROTECT_MASK="/etc/gconf"

5.b. Globální definice proměnných

Adresář /etc/env.d

Adresář /etc/env.d v Gentoo slouží k centralizaci správy proměnných prostředí; naleznete v něm mnoho souborů, jako například 00basic, 05gcc atd., které obsahují definice proměnných pro aplikace, po kterých jsou pojmenovány.

Například při instalaci gcc byl ebuildem vytvořen soubor 05gcc, který obsahuje definice těchto proměnných:

Výpis kódu 2.1: /etc/env.d/05gcc

PATH="/usr/i686-pc-linux-gnu/gcc-bin/3.2"
ROOTPATH="/usr/i686-pc-linux-gnu/gcc-bin/3.2"
MANPATH="/usr/share/gcc-data/i686-pc-linux-gnu/3.2/man"
INFOPATH="/usr/share/gcc-data/i686-pc-linux-gnu/3.2/info"
CC="gcc"
CXX="g++"
LDPATH="/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3"

Jiné distribuce Vás žádají o změnu nebo přidávání proměnných prostředí do souboru /etc/profile nebo podobných, avšak Gentoo Vám (a systému Portage) jejich správu usnadní, neboť vše potřebné naleznete v jednom adresáři.

Například během aktualizace gcc dojde ke změně souboru /etc/env.d/05gcc bez nutnosti ručního zásahu uživatele.

Toto není výhoda jenom pro Portage, ale i pro Vás jakožto uživatele. Občas můžete potřebovat nastavit nějakou proměnnou pro celý systém, například proměnnou http_proxy. Nemusíte se probírat obrovským souborem /etc/profile, ale stačí, abyste vytvořili nový soubor (/etc/env.d/99local) a do něj zadali potřebné definice:

Výpis kódu 2.2: /etc/env.d/99local

http_proxy="proxy.server.com:8080"

Použitím jednoho souboru pro všechny Vaše proměnné navíc získáte přehled o těch proměnných, které jste zadali sami.

Skript env-update

Proměnnou PATH definuje v adresáři /etc/env.d více souborů. Není to však omyl - spuštění env-update spojí tyto definice dohromady před samotnou aktualizací proměnných. Proto je snadné, aby jednotlivé balíčky (a nebo uživatelé) přidávaly vlastní nastavení bez vzájemné interference.

Skript env-update spojí definice proměnných ze souborů z adresáře /etc/env.d; zpracovávány jsou pouze ty soubory, jejichž jména začínají dvěma číslicemi.

Výpis kódu 2.3: Pořadí aktualizací pro env-update

         00basic        99kde-env       99local
     +-------------+----------------+-------------+
PATH="/bin:/usr/bin:/usr/kde/3.2/bin:/usr/local/bin"

Toto spojování obsahu proměnných však neproběhne vždy, avšak pouze pro tyto proměnné: KDEDIRS, PATH, CLASSPATH, LDPATH, MANPATH, INFODIR, INFOPATH, ROOTPATH, CONFIG_PROTECT, CONFIG_PROTECT_MASK, PRELINK_PATH a PRELINK_PATH_MASK. Pro všechny ostatní proměnné platí, že se použije naposledy definovaná hodnota (abecední pořadí souborů uvnitř /etc/env.d).

Spuštění skriptu env-update vytvoří proměnné prostředí a uloží je do /etc/profile.env, který je dále používán souborem /etc/profile. Zároveň použije informace z proměnné LDPATH a použije je k vytvoření souboru /etc/ld.so.cache sloužícího dynamickému linkeru.

Chcete-li ihned použít výsledky env-update ihned po jeho spuštění, spusťte následující příkaz. Uživatelé, kteří Gentoo instalovali sami, si jej pravděpodobně pamatují z instalace:

Výpis kódu 2.4: Aktualizace prostředí

# env-update && source /etc/profile

Poznámka: Výše zmíněný příkaz pouze aktualizuje proměnné v aktuálním terminálu, nově otevřených konzolích a jejich potomcích. Proto pokud pracujete v X11, buď budete muset spustit source /etc/profile v každém terminálu který otevřete nebo restartovat X, aby se změny promítly. Používáte-li login manager (grafického správce přihlašování), spusťte jako root /etc/init.d/xdm restart; pokud jej nepoužíváte, odhlaste se a znovu se nalogujte.

5.c. Lokální definice proměnných

Pro jednoho uživatele

Ne vždy chcete definovat proměnnou prostředí globálně pro celý systém. Můžete například chtít přidat /home/uzivatel/bin a aktuální adresář (tj. ten, ve kterém se právě nacházíte) do proměnné PATH, avšak ne pro všechny uživatele. V takovém případě byste měli použít ~/.bashrc nebo ~/.bash_profile:

Výpis kódu 3.1: Rozšíření PATH pro jedonoho uživatele - ~/.bashrc

(dvojtečka na konci použije aktuální adresář)
PATH="${PATH}:/home/my_user/bin:"

Až se znovu přihlásíte, proměnná PATH bude změněna.

Pro aktuální relaci

Někdy můžete chtít použít programy z dočasnéhop adresáře bez jakéhokoli editování souborů nebo zadávání plné cesty před každým příkazem, protože o změnu stojíte pouze na krátkou dobu.

V takovém případě stačí definovat proměnnou PATH pouze pro současnou relaci příkazem export. Tyto dočasné změny proměnné budou funkční až do odhlášení.

Výpis kódu 3.2: Definice proměnné prostředí pro současnou relaci

# export PATH="${PATH}:/home/my_user/tmp/usr/bin"

C. Práce s Portage

1. Soubory a adresáře

1.a. Soubory Portage

Konfigurační direktivy

Výchozí konfigurace Portage je uložena v /etc/make.globals. Podíváte-li se na jeho obsah, uvidíte, že jsou všechna nastavení kontrolována pomocí proměnných; jejich jména a význam bude popsán později.

Protože se mnoho konfiguračních direktiv liší podle systémové architektury, jsou výchozí nastavení kontrolována profilem. Profil, který právě používáte, je určen symbolickým odkazem /etc/make.profile; konfigurace Portage je nastavena pomocí souborů make.defaults umístěných v odkazovaném adresáři a rodičovských adresářích. Více o profilech a adresáři /etc/make.profile bude popsáno dále.

Chcete-li změnit konfigurační proměnnou, neměňte soubory /etc/make.globals a make.defaults, ale použijte /etc/make.conf, který má větší prioritu. Také vám doporučujeme podívat se na soubor /etc/make.conf.example (jak název napovídá, je to pouze ukázkový soubor a Portage z něj žádné nastavení nečte).

Portage můžete konfigurovat i pomocí proměnných prostředí, avšak tento způsob nedoporučujeme.

Informace o profilech

Adresář /etc/make.profile jsme již zmínili. Ve skutečnosti to není adresář, ale symbolický odkaz na adresář s profilem, kterým se váš systém řídí. Ve výchozím nastavení jsou profily umístěny pod /usr/portage/profiles, i když je samozřejmě možné si vytvořit vlastní profil někde jinde a odkazovat na něj.

Profil obsahuje informace pro Portage platné na konkrétní architektuře, například seznam balíčků tvořících systém, seznam balíčků, které na dané architektuře nefungují nebo jsou zamaskovány a tak dále.

Uživatelská konfigurace

Potřebujete-li změnit chování Portage pro instalaci softwaru, budete muset změnit soubory uvnitř /etc/portage. Je silně doporučeno používat soubory z /etc/portage, rozhodně ne proměnné prostředí!

Uvnitř /etc/portage najdete tyto soubory:

  • package.mask obsahuje jména balíčků, jejichž instalaci chcete zabránit
  • package.unmask uvádí balíčky, které chcete nainstalovat i přesto, že to vývojáři Gentoo silně nedoporučují
  • package.keywords obsahuje jména balíčků, které chcete nainstalovat, i když (ještě) nebyly prohlášeny dostatečně stabilní pro váš systém či architekturu
  • package.use uvádí USE proměnné, které chcete použít pro určité balíčky, aniž byste je nastavovali globálně pro celý systém

Více informací o adresáři /etc/portage a úplný výpis možných souborů naleznete v manuálové stránce Portage:

Výpis kódu 1.1: Zobrazení manuálové stránky Portage

$ man portage

Změna umístění souborů a adresářů Portage

Výše zmíněné soubory nemohou být uloženy jinde, Portage je bude vždy očekávat na původních místech. Portage však zároveň používá i mnoho jiných souborů a adresářů, například pro sestavování balíčků, ukládání zdrojových kódů, strom Portage,...

Všechna tato umístění se dají snadno předefinovat pomocí nastavení v /etc/make.conf. Ve zbytku této kapitoly popíšeme, jaké soubory Portage používá a jak změnit jejich umístění.

Tento dokument však není koncipován jako referenční příručka; potřebujete-li kompletní popis, podívejte se na manuálové stránky Portage a make.conf:

Výpis kódu 1.2: Manuálové stránky Portage a make.conf

$ man portage
$ man make.conf

1.b. Ukládání souborů

Strom Portage

Výchozí umístění stromu Portage je /usr/portage. Máte-li jej uložen jinde, změňte proměnnou PORTDIR a nezapomeňte rovněž odpovídajícím způsobem změnit symbolický odkaz /etc/make.profile.

Změníte-li proměnnou PORTDIR, možná budete chtít změnit i PKGDIR, DISTDIR a RPMDIR, protože tyto si změny PORTDIR nevšimnou. Je to způsobeno tím, jak Portage zachází s proměnnými.

Předkompilované balíčky

Portage sice předkompilované binární balíčky ve výchozím nastavení nepoužívá, ale obsahuje pro ně vyčerpávající podporu. Proměnná PKGDIR specifikuje, že budou tyto balíčky vyhledávány, ve výchozím nastavení to je /usr/portage/packages.

Zdrojové kódy

Zdrojové kódy aplikací jsou ukládány do /usr/portage/distfiles, změna se provádí proměnnou DISTDIR.

RPM soubory

Portage sice nepoužívá RPM soubory, avšak umí je vytvářet pomocí příkazu ebuild (viz Aplikace ebuild). Výchozí umístění, kam Portage tyto soubory ukládá, je určeno proměnnou RPMDIR.

Databáze Portage

Stav systému (například jaké balíčky jsou nainstalovány, jaké soubory jim patří atd) ukládá Portage do adresáře /var/db/pkg. Neměňte zde ručně žádné soubory, jinak můžete poškodit Portage!

Vyrovnávací paměť

Vyrovnávací paměť (Portage cache), obsahující informace jako čas poslední změny, virtuály, strom závislostí a pod., je uložena v /var/cache/edb. Tento adresář je opravdu pouze vyrovnávací paměť, a proto jej můžete pročistit, pokud zrovna neběží nějaká aplikace používající Portage.

1.c. Sestavování softwaru

Dočasné soubory

Dočasné soubory, které Portage používá, jsou ve výchozím nastavení ukládány do /var/tmp, viz proměnná PORTAGE_TMPDIR.

Změníte-li PORTAGE_TMPDIR, pravděpodobně budete chtít modifikovat i další proměnné kvůli způsobu, jak s nimi Portage pracuje, konkrétně proměnnou BUILD_PREFIX.

Adresář pro kompilace

Portage vytváří adresáře potřebné pro sestavování balíčků uvnitř /var/tmp/portage, viz proměnnou BUILD_PREFIX.

Umístění "živého" filesystému

Ve výchozím nastavení instaluje Portage všechny soubory do kořenového adresáře (/). Pokud to chcete změnit, například pro vytvoření nových build imagů, použijte proměnnou ROOT.

1.d. Možnosti logování

Zaznamenávání zpráv z ebuildů

Portage umí vytvářet logy pro každý ebuild, který zpracovává. Chcete-li tuto funkci aktivovat, musíte mastavit proměnnou PORT_LOGDIR tak, aby ukazovala do adresáře, kam může Portage (uživatel portage) zapisovat. Ve výchozím nastavení není tato proměnná nastavena.

2. Konfigurace pomocí proměnných

2.a. Konfigurace Portage

Jak již bylo řečeno, Portage je konfigurovatelné pomocí mnoha proměnných nastavovaných v souboru /etc/make.conf. Více informací získáte z jeho manuálové stránky:

Výpis kódu 1.1: Manuálová stránka make.conf

$ man make.conf

2.b. Parametry pro sestavování balíčků

Volby pro konfiguraci a kompilaci

Portage předává kompilátorům a konfiguračním skriptům tyto proměnné:

  • CFLAGS a CXXFLAGS určují volby kompilátoru pro překlady zdrojových kódů v C a C++
  • CHOST určuje "build host" pro skript ./configure
  • MAKEOPTS je předán programu make a většinou se používá pro nastavení paralelizace během překladu. Více informací je k dispozici v manuálové stránce příkazu make.

Proměnná USE je během této části také používána, avšak již byla vysvětlena v minulých kapitolách.

Parametry pro instalaci do systému

Poté, co Portage nainstaluje do systému novou verzi balíčku, odstraní staré soubory patřící původní verzi. Uživatel má možnost během pěti sekund tuto akci přerušit; tato doba se konfiguruje proměnnou CLEAN_DELAY.

2.c. Ochrana konfiguračních souborů

Chráněné adresáře

Při instalaci nové verze balíčku přepíše Portage staré soubory pouze tehdy, pokud nejsou umístěny v chráněném adresáři. Tato umístění jsou definovaná proměnnou CONFIG_PROTECT, seznam je oddělovaný mezerou.

Soubor, který by měl přepsat existující v chráněném adresáři, je přejmenován a uživatel je na přítomnost nového souboru (pravděpodobně konfiguračního) upozorněn.

Zjistit, jaké adresáře jsou chráněny, můžete z výstupu příkazu emerge --info:

Výpis kódu 3.1: Zjištění nastavení CONFIG_PROTECT

$ emerge --info | grep 'CONFIG_PROTECT='

Více informací o ochraně konfiguračních souborů je k dispozici přes emerge:

Výpis kódu 3.2: Více informací o ochraně konfiguračních souborů

$ emerge --help config

Vynechání adresářů

Pro vyřazení ochrany některých podadresářů můžete použít proměnnou CONFIG_PROTECT_MASK.

2.d. Volby pro stahování

Umístění serverů

Nejsou-li požadované informace či data k dispozici ve vašem systému, Portage je stáhne z Internetu. Jména serverů jsou nastavena v následujících proměnných:

  • GENTOO_MIRRORS obsahuje seznam serverů, ze kterých se stahují zdrojové kódy (distfiles)
  • PORTAGE_BINHOST určuje umístění serverů nabízejících předkompilované balíčky

Konečně třetí proměnná určuje rsync server, ze kterého je aktualizován strom Portage:

  • SYNC určuje umístění, ze kterého Portage stahuje strom Portage

Proměnné GENTOO_MIRRORS a SYNC mohou být nastaveny automaticky pomocí aplikace mirrorselect. Před jejím použitím ji budete muset nainstalovat (emerge mirrorselect). Pro více informací viz nápovědu:

Výpis kódu 4.1: Více informací o mirrorselectu

# mirrorselect --help

Pokud potřebujete na Internet přistupovat přes proxyserver, použijte proměnné HTTP_PROXY, FTP_PROXY a RSYNC_PROXY.

Přikazy pro stahování

Ve výchozím nastavení používá Portage pro stahování souborů wget. Toto chování můžete změnit proměnnou FETCHCOMMAND.

Portage umí pokračovat ve stahování částečně stažených zdrojových kódů. Ve výchozím nastavení opět používá wget, změnu můžete provést v proměnné RESUMECOMMAND.

Ujistěte se, že FETCHCOMMAND i RESUMECOMMAND uloží soubor do správného místa. Uvnitř těchto proměnných můžete použít \${URI} a \${DISTDIR} jako odkaz na původní adresu a cílový adresář.

Také můžete definovat programy podle použitého protokolu - FETCHCOMMAND_HTTP, FETCHCOMMAND_FTP, RESUMECOMMAND_HTTP, RESUMECOMMAND_FTP a tak dále.

Nastavení rsync

Příkaz rsync, který Portage používá pro aktualizaci stromu Portage, změnit nemůžete, avšak celý proces můžete ovlivnit:

  • proměnná RSYNC_EXCLUDEFROM odkazuje na soubor obsahující seznam balíčků a/nebo kategorií, jež budou během aktualizace ignorovány
  • RSYNC_RETRIES říká, jak dlouho se má rsync pokoušet připojit na server specifikovaný proměnnou SYNC, než to vzdá; výchozí hodnota je 3
  • RSYNC_TIMEOUT určuje čas v sekundách, po kterém dojde v případě spojení vyprší, není-li aktivní. Výchozí hodnota je 180, ale majitelé slabších počítačů nebo uživatelé dialupu ji možná budou chtít nastavit na 300 či výš.

2.e. Gentoo konfigurace

Výběr větve

Větev můžete změnit pomocí proměnné ACCEPT_KEYWORDS; výchozí hodnota je stabilní větev pro vaší architekturu. Více informací o této problematice najdete v další kapitole.

Možnosti Portage

Různé možnosti můžete aktivovat pomocí proměnné FEATURES. Tyto volby byly popsány v minulých kapitolách, zejména možnosti Portage.

2.f. Chování Portage

Správa prostředků

Pomocí proměnné PORTAGE_NICENESS můžete změnit hodnotu nice, se kterou bude Portage spouštět další procesy. Tato proměnná se přičítá k aktuální hodnotě nice.

Pro více informací o nice se podívejte na jeho manuálovou stránku:

Výpis kódu 6.1: Více informací o nice

$ man nice

Chování výstupu

Proměnná NOCOLOR určuje, zdá má Portage zakázat používání barevného výstupu (výchozí hodnota je "false", čili zobrazování barev).

3. Kombinování více větví

3.a. Použití jedné větve

Stabilní větev

Proměnná ACCEPT_KEYWORDS říká, kterou softwarovou větev budete ve vašem systému používat. V základním nastavení je to stabilní větev určená pro vaši architekturu, např. x86.

Doporučujeme vám používat pouze stabilní větev. Pokud Vám však na stabilitě systému tolik nezáleží a chcete pomoci vývoji Gentoo vyplňováním hlášení o chybách přes http://bugs.gentoo.org/, čtěte dále.

Testovací větev

V případě, že chcete používat nejčerstvější programy, můžete upřednostnit používání testovací větve. Abyste mohli používat programy z testovací větve, musíte před symbol vaší architektury přidat znak ~.

Testovací větev je přesně to, co o sobě tvrdí, tedy testovací. Jestliže je balíček zařazen do testovací větve, pak jsou si vývojáři jistí, že funguje, ale není ještě důkladně otestován. Klidně se můžete stát prvním, kdo v balíčku rozpozná chybu; v tom případě byste měli vyplnit hlášení o chybě, aby se o ní vývojáři dozvěděli.

Dejte si však pozor, protože používání testovací větve s sebou může nést problémy se stabilitou, nedokonalé balíčky (například špatné či chybějící závislosti), příliš časté aktualizace (a tudíž i mnoho procesorového času stráveného překladem) či rozbité balíčky. Pokud nevíte, jak Gentoo pracuje a jak řašit problémy, doporučujeme, abyste zůstali u stabilní otestované větve.

Chcete-li například použít testovací větev pro architekturu x86, zadejte do /etc/make.conf:

Výpis kódu 1.1: Nastavení proměnné ACCEPT_KEYWORDS

ACCEPT_KEYWORDS="~x86"

Když nyní zaktualizujete systém, zjistíte, jak moc balíčků bude upgradováno. Mějte na paměti, že když systému dovolíte používat testovací větev, neexistuje jednoduchá cesta, jak se vrátit zpět k větvi stabilní (samozřejmě kromě použití zálohy).

3.b. Míchání stabilní a testovací větve

Soubor package.keywords

Můžete dovolit Portage použít pro část balíčků testovací větev, ale pro zbytek systému stabilní větev. Abyste toho dosáhli, musíte kategorii balíčku a jeho jméno zadat do /etc/portage/package.keywords. Například pro použití testovací větve pro gnumeric:

Výpis kódu 2.1: Nastavení /etc/portage/package.keywords pro gnumeric, celý řádek

app-office/gnumeric ~x86

Otestování konkrétních verzí

Chcete-li použít určitou verzi softwaru z testovací větve, ale nechcete, aby Portage používalo testovací větev i pro další verze, můžete do package.keywords zadat i číslo verze. V tomto případě musíte použít operátor =, a nebo pomocí operátorů <=, <, > nebo >= určit rozsah verzí, které chcete používat.

V každém případě, když použijete určitou verzi, musíte použít i operátor; když informaci o verzi vynecháte, operátor použít nemůžete.

V následujícím případě chceme, aby Portage použilo gnumeric-1.2.13:

Výpis kódu 2.2: Užití konkrétní testovací verze gnumeric

=app-office/gnumeric-1.2.13 ~x86

3.c. Používání zamaskovaných balíčků

Soubor package.unmask

Vývojáři Gentoo nepodporují použití těchto programů. Počítejte s tím, prosím, pokud se je rozhodnete použít. Žádosti o podporu pro soubory z package.unmask a/nebo package.mask nebudou vyslyšeny. Byli jste varováni.

I když byl balíček vývojáři Gentoo zamaskován, a Vy jej přesto chcete používat, i přes důvody uvedené v souboru package.mask (který je ve výchozím nastavení umístěn v adresáři /usr/portage/profiles), doplňte naprosto stejnou řádku do /etc/portage/package.unmask.

Například když je zamaskován =net-mail/hotwayd-0.8, odmaskujete jej tím, že přidáte stejnou řádku do souboru package.unmask:

Výpis kódu 3.1: /etc/portage/package.unmask

=net-mail/hotwayd-0.8

Soubor package.mask

Pokud nechcete, aby Portage používalo nějaký balíček/program nebo nějakou verzi balíčku/programu, můžete jej zamaskovat sami přidáním odpovídající řádky do /etc/portage/package.mask.

Když třeba nechcete, aby Portage instalovalo novější zdrojové kódy jádra než gentoo-sources-2.6.8.1, přidejte do package.mask následující řádku:

Výpis kódu 3.2: Příklad /etc/portage/package.mask

>sys-kernel/gentoo-sources-2.6.8.1

4. Doplňky Portage

4.a. etc-update

etc-update je nástroj usnadňující slučování souborů ._cfg0000_<jméno>. Poskytuje interaktivní rozhraní a je schopen automaticky zpracovat triviální změny. Soubory ._cfg0000_<jméno> vytváří Portage v případě, že chce přepsat soubor z adresáře uvedeného v proměnné CONFIG_PROTECT.

Použití etc-update je poměrně jednoduché:

Výpis kódu 1.1: Spuštění etc-update

# etc-update

Po zpracování triviálních rozdílů vám bude předložen seznam chráněných souborů, které by Portage chtělo přepsat. Vespodu uvidíte přehled možných voleb:

Výpis kódu 1.2: Možnosti nabízené skriptem etc-update

Please select a file to edit by entering the corresponding number.
              (-1 to exit) (-3 to auto merge all remaining files)
                           (-5 to auto-merge AND not use 'mv -i'):

Zadáte-li -1, etc-update se ukončí, aniž by provádělo další změny. Zadáte-li -3 nebo -5, všechny uvedené soubory budou nahrazeny novější verzí; je proto velmi důležité, abyste nejdříve zpracovali soubory, jež nechcete automaticky přepsat. To zařídíte zadáním čísla uvedeného vlevo vedle názvu souboru.

Jako příklad zde vybereme konfigurační soubor /etc/pear.conf:

Výpis kódu 1.3: Aktualizace specifického konfiguračního souboru

Beginning of differences between /etc/pear.conf and /etc/._cfg0000_pear.conf
[...]
End of differences between /etc/pear.conf and /etc/._cfg0000_pear.conf
1) Replace original with update
2) Delete update, keeping original as is
3) Interactively merge original with update
4) Show differences again

Nyní můžete vidět rozdíly mezi oběma verzemi daného souboru. Pokud si myslíte, že nová verze může být bez obtíží použita, zadejte 1. Myslíte-li si, že aktualizace není zapotřebí nebo neposkytuje nové či jinak užitečné informace, zmáčkněte 2. Chcete-li interaktivně aktualizovat současný konfigurační soubor, zadejte 3.

Není potřeba, abychom zde dále rozvíjeli interaktivní sloučení souborů. Pro úplnost si uvedeme seznam možných příkazů, které můžete použít. Uvítáni jste dvěma řádky (jedním původním a dalším z nového souboru) a výzvou, na kterou máte napsat jeden z následujících příkazů:

Výpis kódu 1.4: Příkazy dostupné pro interaktivní sloučení

ed:     editace, poté použití obou verzí, každá s hlavičkou
eb:     editace, poté použití obou verzí
el:     editace, poté použití levé verze
er:     editace, poté použití pravé verze
e:      editace nové verze
l:      použije levou verzi
r:      použije pravou verzi
s:      tiše vloží společné řádky
v:      ukecaně vloží společné řádky
q:      konec

Až dokončíte aktualizaci důležitých konfiguračních souborů, budete moci automaticky zaktualizovat všechny zbývající. etc-update se ukončí, až neobjeví žádné další soubory k aktualizaci.

4.b. dispatch-conf

Použijete-li dispatch-conf, budete moci slučovat změny v souborech a udržovat historii změn; dispatch-conf ji ukládá jako patche nebo pomocí systému pro kontrolu revizí (RCS).

Stejně jako s etc-update můžete i s tímto nástrojem zachovat současnou verzi, použít nový soubor, editovat stávající či interaktivně sloučit změny. dispatch-conf má však další dobré vlastnosti:

  • automatické sloučení konfiguračních souborů, které pouze mění komentáře
  • automatické sloučení konfiguračních souborů, které se liší pouze v mezerách a pod. (whitespace)

Ujistěte se, že nejprve zeditujete soubor /etc/dispatch-conf.conf a vytvoříte adresář odkazovaný proměnnou archive-dir.

Pro více informací si prosím přečtěte manuálovou stránku příkazu dispatch-conf:

Výpis kódu 2.1: Čtení manuálové stránky příkazu dispatch-conf

$ man dispatch-conf

4.c. quickpkg

quickpkg můžete vytvořit archiv balíčků, které jsou již v systému nainstalovány, a použít je jako předkompilované balíčky. Spuštění příkazu quickpkg je jednoduché, pouze přidáte jméno balíčků, které chcete archivovat.

Například pro archivaci curl, arts a procps:

Výpis kódu 3.1: Ukázkové použití quickpkg

# quickpkg curl arts procps

Předkompilované balíčky budou uloženy v $PKGDIR/All (ve výchozím nastavení /usr/portage/packages/All) a symbolické odkazy na ně vedoucí se vytvoří v $PKGDIR/<kategorie>.

5. Odchylování od oficiálního stromu

5.a. Použití podskupiny stromu Portage

Vyjmutí balíčků/kategorií

Je možné selektivně aktualizovat pouze některé kategorie/balíčky a jiné přeskočit pomocí jejich vyloučení z rsync během emerge --sync.

Do souboru /etc/make.conf musíte přidat proměnnou RSYNC_EXCLUDEFROM, jež bude odkazovat na soubor obsahující seznam přeskakovaných objektů.

Výpis kódu 1.1: Odkaz na soubor s nastavením v /etc/make.conf

RSYNC_EXCLUDEFROM=/etc/portage/rsync_excludes

Výpis kódu 1.2: Vynechání všech her — nastavení /etc/portage/rsync_excludes

games-*/*

To však může vést k problémům se závislostmi, protože některé balíčky mohou záviset na nových, ale nesynchronizovaných balíčcích.

5.b. Přidávání neoficiálních ebuildů

Definování překryvného adresáře Portage

Můžete chtít, aby Portage použil ebuildy, které nejsou oficiálně dostupné ve stromu Portage. Vytvořte nový adresář (např. /usr/local/portage), ve kterém budete ukládat ebuildy třetích stran; použijte stejnou adresářovou strukturu, jako má oficiální strom Portage.

Poté nastavte PORTDIR_OVERLAY v /etc/make.conf tak, aby odkazovala na právě vytvořený adresář. Pokud nyní použijete Portage, bude brát ebuildy z tohoto adresáře do úvahy, aniž by je smazalo nebo přepsalo, až příště spustíte emerge --sync.

Práce s více překryvnými adresáři

Pokročilým uživatelům, kteří vyvíjejí software ve více překryvných adresářích, testují balíčky před jejich uvedením do oficiálního stromu Portage nebo prostě těm, kdo chtějí používat neoficiální ebuildy z více zdrojů, se může hodit balíček app-portage/gentoolkit-dev a jeho nástroj gensync, který pomáhá udržovat více repozitářů aktuálních.

gensync umí aktualizovat všechny repozitáře najednou, případně pouze vámi vybrané. Každý repozitář by měl mít v adresáři /etc/gensync/ samostatný soubor .syncsource obsahující informace jako umístění repozitáře, jeho jméno, identifikátor atd.

Předpokládejme, že používáte dva doplňkové překryvné adresáře - java pro Javové ebuildy, které se ještě vyvíjejí, a entapps pro aplikace lokálně vývíjené pro potřeby vaší společnosti. Oba můžete aktualizovat tímto příkazem:

Výpis kódu 2.1: Použití gensync pro aktualizaci více repozitářů

# gensync java entapps

5.c. Software mimo Portage

Použití Portage s jiným softwarem

V některých případech můžete chtít konfigurovat, instalovat a udržovat software sami, bez automatické asistence Portage, i když jsou balíčky ve stromu Portage dostupné; mezi časté případy patří zdrojové kódy jádra nebo ovladače nvidia. Portage se dá snadno nakonfigurovat tak, aby vědělo, že je daný balíček v systému nainstalován ručně; tento proces se nazývá injecting (český ekvivalent by mohlo být například "vkládání") a Portage jej podporuje díky souboru /etc/portage/profile/package.provided.

Například pokud chcete informovat Portage o tom, že jste si sami nainstalovali vanilla-sources-2.6.11.6, přidejte do /etc/portage/profile/package.provided následující řádku:

Výpis kódu 3.1: Ukázka řádku v package.provided

sys-kernel/vanilla-sources-2.6.11.6

D. Konfigurace sítě v Gentoo

1. Úvod

1.a. Pro začátek

Poznámka: Dále budeme předpokládat, že máte správně nastavené jádro, zejména moduly pro váš hardware, a že víte, jaké jméno rozhraní dostala vaše síťová karta. Konfigurovanému rozhraní budeme říkat eth0, ačkoli může stejně dobře jít o eth1, wlan0 atd.

Poznámka: Další popis platí pouze pro baselayout-1.11.11 a novější.

Aby se init skripty síťovým rozhraním vůbec zaobíraly, RC systém se o něm musí dozvědět, proto je potřeba v adresáři /etc/init.d vytvořit symbolický odkaz z net.lo na net.eth0:

Výpis kódu 1.1: Symlink z net.eth0 na net.lo

# cd /etc/init.d
# ln -s net.lo net.eth0

RC systém Gentoo nyní o rozhraní ví, avšak zatím mu není jasné, jak má vaše rozhraní nastavit. Veškerá konfigurace sítě se provádí v /etc/conf.d/net. Pro statickou adresu či DHCP může tento soubor vypadat hodně jednoduše:

Výpis kódu 1.2: Ukázky /etc/conf.d/net

# Pro DHCP
config_eth0=( "dhcp" )

# Pro statickou IP adresu zapsanou ve formátu CIDR
config_eth0=( "192.168.0.7/24" )
routes_eth0=( "default via 192.168.0.1" )

# Pro statickou IP adresu zapsanou pomocí masky sítě
config_eth0=( "192.168.0.7 netmask 255.255.255.0" )
routes_eth0=( "default gw 192.168.0.1" )

Poznámka: Pokud pro rozhraní neurčíte žádnou konfiguraci, automaticky se použije DHCP.

Poznámka: CIDR je zkratka z Classless InterDomain Routing. Původně byly IPv4 adresy rozděleny do skupin A, B, C a D, tento systém však nepočítal s masivním rozvojem Internetu a záhy mu začalo hrozit vyčerpání nových unikátních adres. Adresovací schéma CIDR umožňuje jedné IP adrese označit celý rozsah. CIDR IP adresa vypadá jako běžná IP adresa, avšak končí lomítkem a číslem, například 192.168.0.0/16. CIDR je popsáno v RFC 1519.

Rozhraní je nakonfigurováno, můžeme jej tedy zkusit spustit a zastavit:

Výpis kódu 1.3: Spuštení a zastavení síťového rozhraní

# /etc/init.d/net.eth0 start
# /etc/init.d/net.eth0 stop

Důležité: Během ladění sítě se může hodit nastavit zobrazování detailních zpráv pomocí deklarace RC_VERBOSE="yes" v souboru /etc/conf.d/rc.

Poté, co jste si ověřili, že se rozhraní dá spustit a zastavit ručně, budete pravděpodobně chtít zařídit jeho automatickou aktivaci při bootu. Druhý příkaz řekne systému init skriptů, aby spustil všechno, co má v aktuálním runlevelu běžet, a přitom neběží.

Výpis kódu 1.4: Spouštení síťového rozhraní při bootu

# rc-update add net.eth0 default
# rc

2. Pokročilá konfigurace

2.a. Pokročilá konfigurace

Proměnná config_eth0 je jádrem konfigurace síťového rozhraní (v tomto případě eth0). Obsahuje seznam instrukcí, jež se mají provést pro jeho správnou funkci. Příkazy jsou prováděny jeden po druhém a aby bylo rozhraní považováno za funkční, musí alespoň jeden z nich proběhnout bez chyb.

Následuje seznam dostupných instrukcí.

Příkaz Popis
null nedělej nic
noop pokud je rozhraní v provozu a má přiřazenou adresu, skonči úspěšně
IPv4 nebo IPv6 adresa přidej rozhraní tuto adresu
dhcp, adsl nebo apipa (případně vlastní příkaz z dalšího modulu) Aktivuj modul, jenž poskytuje daný příkaz. Například dhcp zavede některý z modulů dhcpcd, udhcpc, dhclient či pump, jež všechny obsahují funkce pro práci s DHCP.

Můžete zadat i další přikaz (fallback), který se provede tehdy, pokud předcházející selže. Tento nouzový příkaz musí přesně odpovídat struktuře konfigurace.

Výše zmíněné konstrukce se samozřejmě dají kombinovat. Následují ukázky z praxe:

Výpis kódu 1.1: Ukázky konfigurace

# přidání tří adres IPv4
config_eth0=(
  "192.168.0.2/24"
  "192.168.0.3/24"
  "192.168.0.4/24"
)

# přidání jedné IPv4 adresy a dvou adres pro IPv6
config_eth0=(
  "192.168.0.2/24"
  "4321:0:1:2:3:4:567:89ab"
  "4321:0:1:2:3:4:567:89ac"
)

# Zachová adresu přiřazenou jádrem, pokud taková existuje,
# jinak se ji pokusí získat přes DHCP. Pokud DHCP selže, přidá statickou adresu
# určenou přes APIPA.
config_eth0=(
  "noop"
  "dhcp"
)
fallback_eth0=(
  "null"
  "apipa"
)

Poznámka: Pokud používáte modul ifconfig a přidáváte více než jednu adresu, bude pro každou další vytvořeno naaliasované rozhraní. Proto v předchozích dvou příkladech dojde k aktivaci rozhraní eth0, eth0:1 a eth0:2. Nic zvláštního se s nimi dělat nedá, protože jádro i další programy mezi nimi nerozlišují.

Důležité: Pořadí příkazů v bloku fallback je důležité. Pokud bychom nespecifikovali volbu null, byl by příkaz apipa proveden pouze tehdy, pokud by došlo k selhání příkazu noop.

Poznámka: APIPA a DHCP jsou popsány dále.

2.b. Závislosti a síťování

Init skripty z /etc/init.d mohou záviset buď na konkrétním síťovém rozhraní a nebo obecně na "dostupnosti sítě". Závislost na službě net může znamenat různé věci, záleží na nastavení proměnné RC_NET_STRICT_CHECKING v souboru /etc/conf.d/rc:

Hodnota Popis
none vždy předpokládáme, že je služba net funkční
no Alespoň jedna služba net.* kromě net.lo musí běžet. Tato volba je vhodná například pro majitele notebooků s WiFi a pevnou ethernetovou síťovou kartou, protože vyžaduje, aby bylo funkční alespoň jedno připojení k síti.
lo Stejné jako volba no, avšak net.lo je rovněž započítáváno. Tato volba se může hodit lidem, kteří nepotřebují mít žádné konkrétní rozhraní aktivní při bootu.
yes aby byla služba net funkční, musí být v provozu všechna síťová rozhraní

Ale co když má net.br0 záviset na net.eth0 a net.eth1? net.eth1 může být bezdrátové zařízení nebo PPP spoj, a tudíž je ho potřeba konfigurovat předtím, než se přidá do bridge. Takovou závislost však není možno zařídit v souboru /etc/init.d/net.br0, protože je to symbolický odkaz na net.lo.

Řešení je vytvořit vlastní funkci depend()/etc/conf.d/net.

Výpis kódu 2.1: Závislost net.br0 v /etc/conf.d/net

# můžete použít všechny druhy závislostí, jež jsou podporovány (use, after, before)
depend_br0() {
  need net.eth0 net.eth1
}

Pro více informací viz sekci init skripty.

2.c. Jména a hodnoty proměnných

Jména proměnných jsou dynamická. Normálně jsou ve tvaru proměnná_${rozhraní|mac|essid|apmac}; například dhcpcd_eth0 určuje volby pro dhcpcd nad rozhraním eth0 a dhcpcd_essid určuje parametry dhcpcd pro jakékoli zařízení, které se připojí k ESSID "essid".

Je zde však jedna komplikace — jména rozhraní nemusí být pouze ethx. Například mnoho bezdrátových síťových karet používá jména jako wlanx či rax, rozhraní vytvářená uživateli (například bridge) mohou mít dokonce zcela libovolné jméno. Situace se stává ještě zajímavější, pokud přejdeme k bezdrátovým přístupovým bodům — ty mohou mít jména obsahující i nealfanumerické znaky, a protože jména proměnných mohou obsahovat ESSID, narážíme na problém.

Gentoo používá pro nastavování síťování bash a bash neumí používat proměnné s názvy obsahujícími znaky, které nejsou v anglické abecedě. Proto se provádí změna každého takového znaku na znak _, podtržítko.

Dalším z limitujících faktorů je samotný obsah proměnných — některé znaky musí být vloženy pomocí escape sekvencí. Například znaky ", ' a \ musí být v zápisu doplněny znakem \ těsně před nimi.

V tomto příkladu použijeme ESSID bezdrátové sítě, protože ty mohou obsahovat nejvíce speciálních znaků. Předpokládejme ESSID My "\ NET:

Výpis kódu 3.1: Ukázka jména proměnné

# funguje, i když je jméno domény špatně:
dns_domain_My____NET="My \"\\ NET"

# Výše uvedený příklad nastaví jméno DNS domény na My "\ NET pokaždé,
# když se bezdrátová síťová karta připojí na ESSID My "\ NET.

3. Moduly pro sítě

3.a. Moduly

Síťové skripty používané v Gentoo jsou modulární, což znamená, že je snadné přidávat podporu nových typů rozhraní a zcela nových funkcí za současného zachování zpětné kompatibility.

Načítání modulů probíhá plně automaticky — pokud je balíček, na kterém modul závisí, v systému nainstalován, modul se sám aktivuje. Pokud se pokusíte zavést modul, aniž by byl k dispozici odpovídající balíček, zobrazí se chybová zpráva, která vám oznámí, co je potřeba doinstalovat. Proto je v ideálním případě potřeba se moduly zaobírat pouze pokud je v systému nainstalováno více různých balíčků poskytujících shodné funkce, a je proto mezi nimi potřeba vybrat ten, který se má použít.

Poznámka: Pokud nebude řečeno jinak, všechna zde popsaná nastavení patří do souboru /etc/conf.d/net.

Výpis kódu 1.1: Preference modulů

# Máme raději iproute2 než ifconfig
modules=( "iproute2" )

# Preference se dají určit i pro jednotlivá síťová rozhraní; zde
říkáme, aby se pro eth0 použilo udhcpc místo dhcpcd.
modules_eth0=( "udhcpc" )

# Také můžete určit, jaké moduly se nemají použít, například pokud pro
# nastavení bezdrátové sítě používáte supplicant nebo linux-wlan-ng, avšak
# stále chcete konfigurovat nastavení podle aktuálního ESSID.
modules=( "!iwconfig" )

3.b. Ovladače pro základní konfiguraci rozhraní

V současné době nabízíme dva různé moduly pro základní konfiguraci rozhraní — ifconfig a iproute2. Jeden z nich je potřeba pro jakoukoli práci se sítí.

ifconfig je výchozí volba a je součástí systémového profilu. iproute2 podporuje pokročilejší volby, avšak ve výchozí instalaci není k dispozici.

Výpis kódu 2.1: Instalace iproute2

# emerge sys-apps/iproute2

# preferujme iproute2 před ifconfig (v případě, že jsou oba
nainstalované)
modules=( "iproute2" )

Jak ifconfig, tak i iproute2 se používají k podobným úkolům, a proto je i jejich základní konfigurace stejná. Následující ukázky tedy budou fungovat, ať už používáte jakýkoli z těchto modulů.

Výpis kódu 2.2: Ukázky ifconfig a iproute2

config_eth0=( "192.168.0.2/24" )
config_eth0=( "192.168.0.2 netmask 255.255.255.0" )

# také můžeme specifikovat broadcast adresu
config_eth0=( "192.168.0.2/24 brd 192.168.0.255" )
config_eth0=( "192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255" )

3.c. DHCP

DHCP je způsob pro získání základních informací o síti (jako například IP adresa, DNS servery či výchozí brána) od DHCP serveru. Pokud vám v síti běží DHCP server, stačí pouze všechny počítače nastavit tak, aby svoji síťovou konfiguraci získávali z něj, a síť se nastaví "sama". Pokročilejší volby, jako například bezdrátové sítě či PPP, však budete muset nakonfigurovat ještě předtím, než DHCP vstoupí do hry.

Funkcionalita DHCP je poskytována více balíčky — dhclient, dhcpcd, pump a udhcpc. Každý z nich má své klady a zápory:

DHCP modul balíček + -
dhclient net-misc/dhcp Pochází od ISC, tj. od lidí, jež stojí za BIND DNS. Je rovněž velice konfigurovatelný. Konfigurace je velmi komplexní, software je vcelku nafouklý. Neumí z DHCP získat adresy NTP serverů a ve výchozím nastavení neposílá jméno počítače.
dhcpcd net-misc/dhcpcd dlouhodobá výchozí volba v Gentoo, nezávisí na dalších nástrojích Již není udržovaný původními vývojáři, v některých momentech může být pomalý. Pokud je doba výpůjčky adresy nekonečná, nepřejde do režimu démona.
pump net-misc/pump odlehčený nástroj, nezávisí na dalších nástrojích Již není udržovaný původními vývojáři, nespolehlivý, zejména přes modemy. Nepodporuje získání adres NIS serverů.
udhcpc net-misc/udhcp velmi odlehčený — nejmenší známý DHCP klient, ideální pro embedded systémy není příliš odzkoušený — žádná distribuce ho nepoužívá ve výchozím nastavení, neumí nastavit timeout na více než 3 sekundy

Pokud máte nainstalovaného více než jednoho DHCP klienta, musíte určit, jaký z nich se má použít, jinak se automaticky vybere dhcpcd.

Pokud potřebujete DHCP modulu předat nějaké parametry, použijte module_eth0="..." (nahraďte "modul" DHCP modulem, který používáte, tj. např. dhcpcd_eth0).

Podporované nastavení DHCP je poměrně všeobecné, a proto máte prostřednictvím proměnné dhcp_eth0 k dispozici tyto příkazy (ve výchozím nastavení není aktivní žádný z nich):

  • release — uvolní IP adresu k dalšímu použití
  • nodns — nepřepíše /etc/resolv.conf
  • nontp — nepřepíše /etc/ntp.conf
  • nonis — nepřepíše /etc/yp.conf

Výpis kódu 3.1: Ukázkové nastavení DHCP v /etc/conf.d/net

# Toto je potřeba pouze tehdy, pokud máte nainstalovaný více než jeden modul DHCP:
modules=( "dhcpcd" ) 

config_eth0=( "dhcp" )
dhcpcd_eth0="-t 10" # timeout po 10 sekundách
dhcp_eth0="release nodns nontp nonis" # pouze nastaví IP adresu

Poznámka: dhcpcd, udhcpc a pump posílají ve výchozím nastavení DHCP serveru jméno počítače, proto ho již není třeba zadávat.

3.d. ADSL modem

Nejprve je potřeba nainstalovat odpovídající software:

Výpis kódu 4.1: Instalace balíčku rp-pppoe

# emerge net-dialup/rp-pppoe

Varování: baselayout-1.11.x podporuje pouze PPPoE. PPPoA bude podle předpokladů zahrnuta do novějších verzí.

Dalším krokem je nastavení eth0 jakožto ADSL rozhraní a zadání uživatelského jména. Nastavujeme v souboru /etc/conf.d/net.

Výpis kódu 4.2: Konfigurace eth0 pro ADSL (/etc/conf.d/net)

config_eth0=( "adsl" )
adsl_user_eth0="jméno"

Nakonec je potřeba zadat uživatelské jméno a heslo v souboru /etc/ppp/pap-secrets.

Výpis kódu 4.3: Ukázka /etc/ppp/pap-secrets

# Hvězdička (*) je důležitá
"jméno"  *  "heslo"

3.e. APIPA (Automatic Private IP Addressing)

APIPA se pokusí získat volnou IP adresu z rozsahu 169.254.0.0-169.254.255.255 zasláním arping dotazu na jednu náhodně vybranou přes odpovídající rozhraní. Pokud neobdrží žádnou odpověď, předpokládá, že je zvolená adresa volná, a použije ji.

Tento způsob konfigurace je vhodný pouze pro sítě LAN bez DHCP serveru či připojení k Internetu, kde navíc všechny počítače používají APIPA.

Pro podporu APIPA musíte nainstalovat net-misc/iputils nebo net-analyzer/arping.

Výpis kódu 5.1: Konfigurace APIPA — /etc/conf.d/net

# Nejprve se vyzkouší DHCP; pokud selže, přejde se na APIPA
config_eth0=( "dhcp" )
fallback_eth0=( "apipa" )

# Další možností je použití APIPA za všech okolností
config_eth0=( "apipa" )

3.f. Bonding

Pro bonding či trunking nainstalujte net-misc/ifenslave.

Bonding se používá ke zvýšení propustnosti sítě. Pokud máte dvě síťové karty vedoucí do stejné sítě, můžete je spojit do jednoho, takže aplikace si s existencí více fyzických rozhraní nemusí lámat hlavu.

Výpis kódu 6.1: Bonding — /etc/conf.d/net

# Spojení více rozhraní dohromady
slaves_bond0="eth0 eth1 eth2"

# Možná nebudete chtít přiřadit vytvořenému rozhraní adresu
config_bond0=( "null" )

# Definujeme eth0, eth1 a eth2 jakožto závislosti, neboť tyto mohou vyžadovat
# speciální konfiguraci
depend_bond0() {
  need net.eth0 net.eth1 net.eth2
}

3.g. Bridging (podpora 802.1d)

Pro podporu funkce bridge nainstalujte net-misc/bridge-utils.

Bridging se používá pro spojení více sítí dohromady. Například pokud máte server připojený do Internetu přes ADSL modem a bezdrátovou síťovou kartu, můžete je přes bridge spojit dohromady.

Výpis kódu 7.1: Konfigurace bridge — /etc/conf.d/net

# Konfigurace bridge, viz "man btctl"
brctl_br0=( "setfd 0" "sethello 0" "stp off" )

# Přidání rozhraní eth0 a eth1 do bridge br0
bridge_br0="eth0 eth1"

# Zabráníme spuštění DHCP
config_eth0=( "null" )
config_eth1=( "null" )

# Nakonec přiřadíme bridgi IP adresu (samozřejmě je možné použít i DHCP)
config_br0=( "192.168.0.1/24" )

# Definujeme eth0 a eth1 jakožto závislosti, neboť tyto mohou vyžadovat
# speciální konfiguraci
depend_br0() {
  need net.eth0 net.eth1
}

Důležité: Pro některá nastavení může být důležité se seznámit s dokumentací jmen proměnných.

3.h. MAC adresy

Pokud používáte sys-apps/baselayout-1.11.14 nebo novější a pokoušíte se změnit MAC adresu na konkrétní hodnotu, není nutné cokoliv instalovat. Pokud však požadujete komplexnější změny nebo používáte baselayout starší, budete muset nainstalovat balíček net-analyzer/macchanger.

Výpis kódu 8.1: Ukázka změny MAC adresy

# Nastaví MAC adresu rozhraní
mac_eth0="00:11:22:33:44:55"

# Náhodně zovlí poslední 3 bajty
mac_eth0="random-ending"

# Náhodně zvolí adresu za zachování stejného typu (např. optika,
# metalika, bezdrát,...), nezachová výrobce
mac_eth0="random-samekind"

# Náhodně zvolí adresu bez ohledu na typ rozhraní (např. optika,
# metalika, bezdrát,...) či výrobce
mac_eth0="random-anykind"

# Zcela náhodná adresa — POZOR, některé adresy nebudou fungovat tak,
# jak si představujete
mac_eth0="random-full"

3.i. Tunely

Není potřeba nic instalovat, init skripty se o vše potřebné postarají samy.

Výpis kódu 9.1: Konfigurace tunelů v /etc/conf.d/net

# GRE tunely
iptunnel_vpn0="mode gre remote 207.170.82.1 key 0xffffffff ttl 255"

# IPIP tunely
iptunnel_vpn0="mode ipip remote 207.170.82.2 ttl 255"

# Konfiguarce rozhraní
config_vpn0=( "192.168.0.2 peer 192.168.1.1" ) 

3.j. VLAN (podpora 802.1q)

Pro podporu VLAN si nainstalujte net-misc/vconfig.

Virtual LAN je skupina síťových rozhraní, která se chovají, jako by byly připojeny do jednoho segmentu sítě, i když ve skutečnosti nejsou. Členové skupiny VLAN nevidí jiná rozhraní, i když jsou fyzicky umístěna na stejném segmentu sítě.

Výpis kódu 10.1: VLAN — /etc/conf.d/net

# Zadejte čísla VLANů, do kterých má rozhraní patřit
# Ujistěte se, prosím, že čísla NEZAČÍNAJÍ nulou
vlans_eth0="1 2"

# VLAN můžete detailně zkonfigurovat
# Více informací viz manuálová stránka vconfig
vconfig_eth0=( "set_name_type VLAN_PLUS_VID_NO_PAD" )
vconfig_vlan1=( "set_flag 1" "set_egress_map 2 6" )

# Nakonec běžná konfigurace VLANu
config_vlan1=( "172.16.3.1 netmask 255.255.254.0" )
config_vlan2=( "172.16.2.1 netmask 255.255.254.0" )

Důležité: Pro některá nastavení může být důležité se seznámit s dokumentací jmen proměnných.

4. Bezdrátové sítě

4.a. Úvod

V současné době je podporováno nastavení bezdrátové sítě pomocí wireless-tools nebo wpa_supplicant. Důležitá poznámka je, že se nastavení provádí globálně a ne pro konkrétní rozhraní.

wpa_supplicant je nejlepší volba, avšak nepodporuje všechny ovladače, viz seznam podporovaných. wpa_supplicant navíc zatím umožňuje připojení pouze k těm SSID, pro které jste jej nakonfigurovali.

wireless-tools podporuje skoro všechny karty a ovladače, avšak neumí se připojit k přístupovým bodům (AP), které vyžadují WPA.

Varování: Baselayout nepodporuje ovladač linux-wlan-ng, neboť tento balíček využívá vlastní systém konfigurace a nastavení, zcela odlišný od zbytku světa. Podle některých zpráv to vypadá, že se vývojáři linux-wlan-ng chystají přejít na systém podobný wireless-tools; pokud se tak stane, budete moci používat i linux-wlan-ng.

4.b. WPA Supplicant

WPA Supplicant je balíček pro připojování k AP používajícím WPA. Nastavení je poměrně jednoduché, ačkoli stále ještě může docházet k některým změnám. Většina funkcí však funguje správně.

Výpis kódu 2.1: Instalace wpa_supplicant

# emerge net-wireless/wpa_supplicant

Důležité: Aby wpa_supplicant pracoval správně, je potřeba v konfiguraci jádra povolit volbu CONFIG_PACKET.

V souboru /etc/conf.d/net je nyní potřeba zadat, aby se wpa_supplicant používal místo wireless-tools, neboť pokud jsou k dispozici oba, jako výchozí se použije wireless-tools.

Výpis kódu 2.2: /etc/conf.d/net pro wpa_supplicant

# Preferuj wpa_supplicant před wireless-tools
modules=( "wpa_supplicant" )

# wpa_supplicant neumí příliš dobře rozpoznat, jaký ovladač používáme,
# a proto je lepší jej ručně zadat
wpa_supplicant_eth0="-Dmadwifi"

Poznámka: Pokud používáte ovladač host-ap, musíte kartu ještě před použitím funkcí wpa_supplicant uvést do managed módu. Nejjednodušší je přidat do /etc/conf.d/net řádku iwconfig_eth0="mode managed".

Vcelku jednoduché, že? Stále však před sebou máme konfiguraci samotného wpa_supplicant, což není zcela triviální, zejména při některých bezpečnostních nastaveních vašeho AP. Následuje zjednodušený příklad /etc/wpa_supplicant.conf.example dodávaného v rámci balíčku wpa_supplicant.

Výpis kódu 2.3: Ukázka /etc/wpa_supplicant.conf

# Následující řádek by neměl být měněn
ctrl_interface=/var/run/wpa_supplicant

# Informace o WPA smí číst pouze root
ctrl_interface_group=0

# wpa_supplicant zajistí skenování a výběr AP
ap_scan=1

# Jednoduchý příklad: WPA-PSK, PSK — ASCII heslo, povoleny
# jsou všechny šifrovací prostředky
network={
  ssid="ukazka"
  psk="strašně tajné heslo"
  # Čím vyšší priorita, tím dříve dojde k "aktivaci" nastavení
  priority=5
}

# Totéž jako předchozí příklad, avšak provede se sken na konkrétní SSID
# (vhodné pro AP, která SSID nevysílají) 
network={
  ssid="druhá ssid"
  scan_ssid=1
  psk="strašně tajné heslo"
  priority=2
}

# Používá se pouze WPA-PSK, povolena je jakákoli kombinace šifrování
network={
  ssid="ukázka"
  proto=WPA
  key_mgmt=WPA-PSK
  pairwise=CCMP TKIP
  group=CCMP TKIP WEP104 WEP40
  psk=06b4be19da289f475aa46a33cb793029d4ab3db7a23ee92382eb0106c72ac7bb
  priority=2
}

# Obyčejné spojení (bez WPA či IEEE 802.1X)
network={
  ssid="plaintext-test"
  key_mgmt=NONE
}

# Spojení se sdíleným WEP klíčem (bez WPA či IEEE 802.1X)
network={
  ssid="static-wep-test"
  key_mgmt=NONE
  wep_key0="abcde"
  wep_key1=0102030405
  wep_key2="1234567890123"
  wep_tx_keyidx=0
  priority=5
}

# Spojení se sdíleným WEP klíčem (bez WPA či IEEE 802.1X) pomocí mechanismu
# Shared Key IEEE 802.11 authentication
network={
  ssid="static-wep-test2"
  key_mgmt=NONE
  wep_key0="abcde"
  wep_key1=0102030405
  wep_key2="1234567890123"
  wep_tx_keyidx=0
  priority=5
  auth_alg=SHARED
}

# IBSS/ad-hoc síť s WPA-None/TKIP
network={
  ssid="test adhoc"
  mode=1
  proto=WPA
  key_mgmt=WPA-NONE
  pairwise=NONE
  group=TKIP
  psk="tajný kód"
}

4.c. Wireless Tools

Základní nastavení, mód managed

Wireless Tools nabízí obecnou metodu, jak nastavovat základní parametry bezdrátového připojení až po jednoduché zabezpečení pomocí WEP. WEP je sice pouze slabé šifrování, avšak stále ještě nejčastější.

Konfigurace wireless tools je ovlivněna několika proměnnými. Následující ukázka obsahuje vše potřebné. Důležité je si uvědomit, že žádná konfigurace neznamená "připoj se na nejsilnější nešifrovaný přístupový bod" — vždy dojde ke zkoušce a proběhne připojení "k něčemu".

Výpis kódu 3.1: Instalace wireless-tools

# emerge net-wireless/wireless-tools

Poznámka: Nastavení pro bezdrátové sítě je sice možné umístit do /etc/conf.d/wireless, lepší možnost je však využít /etc/conf.d/net.

Důležité: Budete si muset přečíst kapitolu o názvech proměnných.

Výpis kódu 3.2: Jendnoduché nastavení iwconfig v /etc/conf.d/net

# Preferuj iwconfig před wpa_supplicant
modules=( "iwconfig" )

# WEP klíče pro přístupové body ESSID1 a ESSID2
# Je možné zadat až čtyři WEP klíče, aktivní však může být pouze
# jeden z nich. Nejprve tedy pomocí indexu "[1]" určíme první klíč a následně
# jej aktivujeme. Tento postup se hodí, pokud chcete definovat více # klíčů.
#
# Pokud klíč začíná na "s:", znamená to, že jde o zápis v ASCII, jinak o
# hexadecimální hodnotu.
#
# "enc open" udává "open security" (nejbezpečnější)
# "enc restricted" udává "restricted security" (nejméně bezpečné)
key_ESSID1="[1] s:yourkeyhere key [1] enc open"
key_ESSID2="[1] aaaa-bbbb-cccc-dd key [1] enc restricted"

# Následující funguje pouze pokud proběhne sken dostupných AP

# Můžeme nalézt více viditelných AP, proto určíme jejich
# preference
preferred_aps=( "ESSID1" "ESSID2" )

Detailní nastavení výběru AP

Ačkoli to ve většině případů není potřeba, můžete nastavit i další volby, které jemně ovlivní výběr AP.

První možností je rozhodnutí, zda se můžeme připojit pouze k preferovaným AP, nebo i k jiným. Ve výchozím nastavení se systém chová tak, že pokud všechny pokusy o připojení k preferovaným AP selžou, provede se pokus o připojení k jakémukoli nešifrovanému přístupovému bodu. Toto chování je ovlivněno proměnnou associate_order:

hodnota popis
any výchozí chování
preferredonly připojí se pouze k viditelným AP ze seznamu
forcepreferred pokusí se připojit na AP ze seznamu i tehdy, pokud nejsou ve výsledku skenu vidět
forcepreferredonly žádné skenování se neprovede — pouze se pokusí připojit k bodům ze seznamu
forceany stejné jako forcepreferred, při selhání se pokusí připojit na libovolný dostupný bod

Využít můžete i proměnné blacklist_aps a unique_ap. blacklist_aps je podobná preferred_aps, avšak k uvedeným AP se nebude systém připojovat. unique_ap může obsahovat hodnoty yes nebo no a určuje, zda se může druhá bezdrátová síťová karta připojit na stejné AP jako první.

Výpis kódu 3.3: Ukázka blacklist_aps a unique_ap

# Pokud se nikdy nechcete připojit k uvedeným AP
blacklist_aps=( "ESSID3" "ESSID4" )

# Pokud máte více bezdrátových síťových karet, můžete určit, zda se
# mohou připojit ke stejnému AP. Povolené hodnoty jsou "yes" a "no",
# výchozí je "yes"
unique_ap="yes"

Režimy ad-hoc a master

Pokud chcete v případě, že se nepodaří připojit k žádnému AP, přejít do módu ad-hoc, můžete samozřejmě také.

Výpis kódu 3.4: Náhradní ad-hoc mód

adhoc_essid_eth0="Tento bod adhoc"

Také je možné pouze provozovat ad-hoc síť či vlastní přístupový bod ("master mode"). Pokud chcete používat WEP, bude samozřejmě nutné zadat odpovídající klíče, viz výše.

Výpis kódu 3.5: Jednoduchá konfigurace pro ad-hoc/master mód

# Nastavení módu — managed (výchozí nastavení), ad-hoc či master.
# Tato funkce není podporovaná všemi ovladači.
mode_eth0="ad-hoc"

# Nastaví ESSID rozhraní. V módu managed donutí rozhraní k pokusu
# o připojení k zadané ESSID, nikam jinam.

essid_eth0="Tento bod adhoc"

# Ve výchozím nastavení se používá kanál 3
channel_eth0="9"

Důležité: Následující je převzato z BSD dokumentace wavelan (The NetBSD Documentation). Celkem je pro WiFi k dispozici 14 kanálů, z nichž 1-11 jsou legální v Severní Americe, 1-13 ve velké části Evropy (včetně České republiky), 10-13 ve Francii a pouze 14 v Japonsku. Pokud si nejste jisti, podívejte se do dokumentace své bezdrátové karty. Ujistěte se, že se vybraný kanál shoduje s kanálem, na kterém pracuje AP, příp. další karty v režimu ad-hoc. Výchozí nastavení kanálu na kartách prodávaných v Severní Americe a většině Evropy je 3, ve Francii 11 a v Japonsku 14.

Odstraňování chyb s Wireless Tools

Následující proměnné vám mohou pomoci uvést do provozu vaše bezdrátové připojení, pokud narazíte na problémy s ovladači či prostředím. Tato tabulka podává přehled věcí, které můžete vyzkoušet:

proměnná výchozí hodnota popis
iwconfig_eth0 parametry pro iwconfig, viz jeho manuálová stránka
iwpriv_eth0 parametry pro iwpriv, viz jeho manuálová stránka
sleep_scan_eth0 0 Čas v sekundách, po který se bude čekat před pokusem o skenování. Tato volba se hodí, pokud ovladač nebo firmware potřebuje nějaký čas na uklidnění předtím, než jej lze použít.
sleep_associate_eth0 5 čas v sekundách, po který se bude snažit rozhraní asociovat k AP; po uplynutí této doby se přejde k dalšímu
associate_test_eth0 MAC Některé ovladače při ztrátě spojení s AP (či po odpojení) nenastaví aktuální MAC adresu AP na neplatnou hodnotu, jiné opomenou vynulovat hodnotu kvality signálu. Platné hodnoty pro tuto proměnnou jsou MAC, quality a all.
scan_mode_eth0 Některé ovladače musí skenovat v režimu ad-hoc, takže pokud skenování selže, zkuste zde nastavit ad-hoc.
iwpriv_scan_pre_eth0 Zašli následující příkazy iwpriv před samotným skenováním. Pro další informace viz manuálovou stránku iwpriv.
iwpriv_scan_post_eth0 iwpriv příkazy odesílané po skenování. Opět viz manuálovou stránku iwpriv.

4.d. Konfigurace podle ESSID

Občas potřebujete nastavit statickou IP adresu při připojení k ESSID1 a DHCP pro ESSID2. Většina proměnných se dá nastavit pro konkrétní ESSID, zde si ukážeme jak.

Poznámka: Tato nastavení fungují s WPA Supplicant a Wireless Tools.

Důležité: Budete se potřebovat seznámit s dokumentací jmen proměnných.

Výpis kódu 4.1: Nastavení sítě podle ESSID

config_ESSID1=( "192.168.0.3/24 brd 192.168.0.255" )
routes_ESSID1=( "default via 192.168.0.1" )

config_ESSID2=( "dhcp" )
fallback_ESSID2=( "192.168.3.4/24" )
fallback_route_ESSID2=( "default via 192.168.3.1" )

# Také můžeme definovat DNS servery a další údaje
# UPOZORNĚNÍ: DHCP tato nastavení přepíše, pokud jej nepožádáte o opak
dns_servers_ESSID1=( "192.168.0.1" "192.168.0.2" )
dns_domain_ESSID1="nějaká.doména"
dns_search_domains_ESSID1="hledej.v.této.doméně hledej.i.v.téhle"

# Nastavení mohou záviset také na MAC adrese přístupového bodu
# (například pokud se připojujete na různé AP se stejnou ESSID a jiným nastavením)
config_001122334455=( "dhcp" )
dhcpcd_001122334455="-t 10"
dns_servers_001122334455=( "192.168.0.1" "192.168.0.2" )

5. Přidávání funkcí

5.a. Standardní funkce

Pro ovlivnění operací start a stop můžete definovat čtyři vlastní funkce. Jako první parametr je jim předáno jméno rozhraní, a proto můžete využít jednu funkci pro nastavování více rozhraní.

Pokud funkce preup() a predown() vrátí hodnotu 0 (tj. úspěch), může konfigurace či dekonfigurace rozhraní pokračovat. Pokud je návratová hodnota nenulová, preup() přeruší aktivaci rozhraní a predown() zabrání jeho deaktivaci.

Návratové hodnoty funkcí postup() a postdown() jsou ignorovány, neboť na případné selhání již není možné reagovat.

Proměnná ${IFACE} obsahuje jméno rozhraní, se kterým se právě operuje, ${IFVAR} je ${IFACE} ve formátu, který bash povoluje pro názvy proměnných.

Výpis kódu 1.1: Ukázky funkcí pre/post up/down

preup() {
  # Otestování spojení (typicky zasunutý kabel) před aktivací rozhraní.
  # Všechny druhy síťových adaptérů tuto funkci nepodporují, navíc je
  # vyžadována instalace balíčku mii-diag.
  if mii-tool ${IFACE} 2> /dev/null | grep -q 'no link'; then
    ewarn "No link on ${IFACE}, aborting configuration"
    return 1
  fi

  # Otestování spojení (typicky zasunutý kabel) před aktivací rozhraní.
  # Všechny druhy síťových adaptérů tuto funkci nepodporují, navíc je
  # vyžadována instalace balíčku ethtool.
  if ethtool ${IFACE} | grep -q 'Link detected: no'; then
    ewarn "No link on ${IFACE}, aborting configuration"
    return 1
  fi

  # Pro indikaci úspěchu je nutné vrátit hodnotu 0
  return 0
}

predown() {
  # Výchozí chování této funkce zabrání deaktivaci rozhraní, pokud je
  # kořenový systém souborů připojený přes NFS. Pokud specifikujete vlastní
  # funkci predown(), zakážete tuto kontrolu. Zde je odpovídající kód:
  if is_net_fs /; then
    eerror "root filesystem is network mounted -- can't stop ${IFACE}"
    return 1
  fi

  # Pro indikaci úspěchu je nutné vrátit hodnotu 0
  return 0
}

postup() {
  # V této funkci můžete například zaregistrovat svoji IP adresu
  # do služby poskytující dynamická DNS jména, případně odeslat a přijmout poštu
  # a podobně.
       return 0
}

postdown() {
  # Funkce postdown() existuje de facto pouze pro úplnost. Na žádné
  # kreativní využití jsme ještě nepřišli ;-)
  return 0
}

5.b. Funkce pro bezdrátové sítě

Poznámka: Pokud používáte WPA Supplicant, nebudou tyto funkce pracovat, máte však možnost využít proměnné ${ESSID} a ${ESSIDVAR} ve funkci postup().

Pro kontrolu chování při asociaci k bezdrátové síti je možné definovat dvě další funkce. Jejich první parametr je opět jméno rozhraní.

Návratová hodnota 0 (úspěch) funkce preassociate() indikuje, že konfigurace/dekonfigurace rozhraní může pokračovat, nenulová hodnota prováděnou akci přeruší.

Výsledek funkce postassociate() je ignorován, neboť na něj ani nelze odpovídajícím způsobem reagovat.

Hodnota proměnné ${ESSID} obsahuje přesné ESSID AP, na které se připojujete, ${ESSIDVAR} totéž, avšak po konverzi do podoby, kterou bash akceptuje pro názvy proměnných.

Výpis kódu 2.1: Funkce před asociací a po ní

preassociate() {
  # Následující kód přidává dvě konfigurační proměnné — leap_user_ESSID
  # a leap_pass_ESSID. Pokud obě dvě pro danou ESSID existují, je je možné
  # použít pro spuštení skriptu CISCO LEAP.

  local user pass
  eval user=\"\$\{leap_user_${ESSIDVAR}\}\"
  eval pass=\"\$\{leap_pass_${ESSIDVAR}\}\"

  if [[ -n ${user} && -n ${pass} ]]; then
    if [[ ! -x /opt/cisco/bin/leapscript ]]; then
      eend "For LEAP support, please emerge net-misc/cisco-aironet-client-utils"
      return 1
    fi
    einfo "Waiting for LEAP Authentication on \"${ESSID//\\\\//}\""
    if /opt/cisco/bin/leapscript ${user} ${pass} | grep -q 'Login incorrect'; then
      ewarn "Login Failed for ${user}"
      return 1
    fi
  fi

  return 0
}

postassociate() {
  # Funkce postdown() existuje de facto pouze pro úplnost. Na žádné
  # kreativní využití jsme ještě nepřišli ;-)

  return 0
}

Poznámka: Proměnné ${ESSID} a ${ESSIDVAR} nejsou k dispozici ve funkcích predown() a postdown().

6. Správa nastavení sítí

6.a. Správa sítě

Pokud s počítačem často cestujete, pravděpodobně nemáte neustále k dispozici síťovou konektivitu. Může se proto hodit, pokud při zasunutí síťového kabelu nebo nalezení AP dojde k automatické aktivaci sítě.

Následuje přehled některých nástrojů, jež můžete s výhodou použít.

Poznámka: Ačkoli se tato část zaobírá pouze démonem ifplugd, existují i jeho alternativy, například quickswitch.

6.b. ifplugd

ifplugd je démon, který spouští a zastavuje síťová rozhraní při zasunutí, resp. vypojení síťového kabelu. Také se dá použít k detekci úspěšného připojení k přístupovému bodu bezdrátové sítě nebo pro upozornění, když se další bod objeví v dosahu.

Výpis kódu 2.1: Instalace ifplugd

# emerge sys-apps/ifplugd

Konfigurace pro ifplugd je rovněž poměrně přímočará. Konfigurační soubor je umístěn v /etc/conf.d/ifplugd. Pro vysvětlení funkce jednotlivých proměnných vás odkážeme na manuálovou stránku — man ifplugd.

Výpis kódu 2.2: Ukázková konfigurace ifplug

# Jaká rozhraní chceme monitorovat?
INTERFACES="eth0"

AUTO="no"
BEEP="yes"
IGNORE_FAIL="yes"
IGNORE_FAIL_POSITIVE="no"
IGNORE_RETVAL="yes"
POLL_TIME="1"
DELAY_UP="0"
DELAY_DOWN="0"
API_MODE="auto"
SHUTDOWN="no"
WAIT_ON_FORK="no"
MONITOR="no"
ARGS=""

# Nastavení specifická pro jednotlivá rozhraní. Tyto hodnoty mají
vetší prioritu než výše zmíněná globální nastavení.
MONITOR_wlan0="yes"
DELAY_UP_wlan0="5"
DELAY_DOWN_wlan0="5"

Tisk

Aktualizace: 12. září 2006

Tento překlad již není udržován

Shrnutí: Toto je Gentoo Handbook, projekt snažící se dokumentovat Gentoo Linux na jednom místě. Tato přiručka obsahuje pokyny pro instalaci x86 systémů s využitím připojení k Internetu a části o práci s Gentoo a Portage.

Sven Vermeulen
Autor

Roy Marples
Autor

Daniel Robbins
Autor

Chris Houser
Autor

Jerry Alexandratos
Autor

Seemant Kulleen
Gentoo x86 vývojář

Tavis Ormandy
Gentoo Alpha vývojář

Jason Huebel
Gentoo AMD64 vývojář

Guy Martin
Gentoo HPPA vývojář

Pieter Van den Abeele
Gentoo PPC vývojář

Joe Kallar
Gentoo SPARC vývojář

John P. Davis
Editor

Pierre-Henri Jondot
Editor

Eric Stockbridge
Editor

Rajiv Manglani
Editor

Jungmin Seo
Editor

Stoyan Zhekov
Editor

Jared Hudson
Editor

Colin Morey
Editor

Jorge Paulo
Editor

Carl Anderson
Editor

Jon Portnoy
Editor

Zack Gilburd
Editor

Jack Morgan
Editor

Benny Chuang
Editor

Erwin
Editor

Joshua Kinard
Editor

Tobias Scherbaum
Editor

Xavier Neys
Editor

Joshua Saddler
Editor

Grant Goodyear
Korektor

Gerald J. Normandin Jr.
Korektor

Donnie Berkholz
Korektor

Ken Nowack
Korektor

Lars Weiler
Přispěvatel

Jan Kundrát
Překladatel

Jan Nárovec
Překladatel

Martin Tesař
Překladatel

Mirek Dvořák
Korektor

Adam Kudrna
Korektor

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.