Gentoo Logo

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

Gentoo Linux alpha 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 pomocí instalačního CD Minimal nebo Universal.
    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
      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

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ů

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 4.6: 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

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

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:

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.

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 4.6: 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 Linux na platformě Alpha existuje více různých bootloaderů. Jeden z nich si nyní budete muset vybrat; volit můžete mezi aBoot a MILO.

Poznámka: aboot umí bootovat pouze z oddílů typu ext2 a ext3.

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

Nejprve si aboot nainstalujte, jak jinak, než přes emerge:

Výpis kódu 2.1: Instalace aboot

# emerge aboot

Dále zařídíme, aby se dalo z bootdisku bootovat, čili aby se po spuštění systému aktivoval aboot. Zapíšeme tedy aboot na začátek disku.

Výpis kódu 2.2: Učiňme bootdisk bootovatelným

# swriteboot -f3 /dev/sda /boot/bootlx
# abootconf /dev/sda 2

Poznámka: Pokud jste se rozhodli rozdělit disk jinak, než jak uvádějí naše příklady, budete muset některé příkazy poupravit. Přečtěte si prosím odpovídající manuálové stránky (man 8 swriteboot a man 8 abootconf). Pokud pro root filesystém používáte JFS, ujistěte se, že se zprvu připojí pouze pro čtení - přidejte jádru parametr ro.

Pokud chcete, aby Gentoo botovalo automaticky, musíte nastavit konfigurační soubor abootu a některé SRM proměnné. Můžete se o to pokusit přímo z Linuxu, avšak snazší to může být přímo ze SRM konzole.

Výpis kódu 2.3: Automatické bootování Gentoo

# echo '0:2/boot/vmlinux.gz root=/dev/sda2' > /etc/aboot.conf
# cd /proc/srm_environment/named_variables
# echo -n 0 > boot_osflags
# echo -n '' > boot_file
# echo -n 'BOOT' > auto_action
# echo -n 'dkc100' > bootdef_dev
(dkc100 nahraďte názvem bootovacího zařízení)

Pokud se do SRM konzoly budete chtít někdy v budoucnu vrátit (třeba pro opravu instalace, hraní si s některými proměnnými nebo jen tak), stačí během bootu stisknout CTRL+C.

Instalujete-li přes sériovou konzoli, nezapomeňte odpovídajícím způsobem nastavit aboot.conf, pro další informace viz /etc/aboot.conf.example.

Aboot je nyní nakonfigurovaný a připraven k použití. Pokračujte prosím rebootem systému.

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

Před pokračováním byste se měli rozhodnout, jak budete MILO používat. V této sekci budeme předpokládat, že chcete použít MILO bootovací disketu. Hodláte-li bootovat z MS-DOS oddílu na disku, změňte příslušné příkazy.

Pro instalaci MILO použijeme příkaz emerge.

Výpis kódu 3.1: Instalace MILO

# emerge --usepkg milo

Po instalaci najdete image MILO v adresáři /opt/milo. Následující příkazy připraví bootovací disketu; nezapomeňte použít správný image podle konkrétního systému.

Výpis kódu 3.2: Instalace MILO na disketu

(nejdříve vložte prázdnou disketu)
# fdformat /dev/fd0
# mformat a:
# mcopy /opt/milo/milo-2.2-18-gentoo-ruffian a:\milo
# mcopy /opt/milo/linload.exe a:\linload.exe
(pouze máte-li Ruffian:
  # mcopy /opt/milo/ldmilo.exe a:\ldmilo.exe
)
# echo -ne '\125\252' | dd of=/dev/fd0 bs=1 seek=510 count=2

Vaše MILO disketa nyní umí bootovat Gentoo Linux. Možná budete potřebovat nastavit proměnné prostředí v ARCS firmwaru; vše je popsáno v MILO-HOWTO spolu s příklady nastavení na běžných systémech a použitím příkazů v interaktivním režimu.

Pokud si nechcete přečíst MILO-HOWTO, neděláte dobře.

Nyní pokračujte 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: Ukončení chrootu, 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, jinak místo 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 4.15: 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 4.15: 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"
}

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

Poslední aktualizace původni verze tohoto dokumentu: 11. květen 2013

Shrnutí: Toto je Gentoo Handbook, projekt snažící se dokumentovat Gentoo Linux na jednom místě. Tato přiručka obsahuje pokyny pro instalaci Alpha 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

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-2013 Gentoo Foundation, Inc. Questions, Comments? Contact us.