Ipv6 v Linuxu

Transkript

Ipv6 v Linuxu
Ipv6 v Linuxu
Obecně
Účelem tohoto návodu je odpovědět na základní i zasvěcené otázky o IPv6 v operačním systému Linux. Tento návod poskytne
čtenáři dostatek informací k tomu, aby mohl systém nainstalovat, zkonfigurovat a používat aplikace IPv6 na linuxových strojích.
Informace o překladech naleznete na adrese http://tldp.org/HOWTO/Linux+IPv6-HOWTO/general-translations.html. Seznam
změn najdete na http://tldp.org/HOWTO/Linux+IPv6-HOWTO/revision-history.html.
Napsal a autorská práva vlastní Peter Bieringer. Autora je možno kontaktovat elektronickou poštou na adrese <[email protected]>
a také prostřednictvím jeho stránky http://www.bieringer.de/pb/.
Předmluva
Pár slov úvodem:
Kolik verzí návodu k Linuxu & IPv6 koluje po Internetu?
Včetně tohoto 3. Jestli se vám to zdá mnoho, omlouvám se.
Linux IPv6 FAQ/návod (nepoužívaný)
První dokument na téma IPv6 napsal Eric Osborne a jmenoval se Linux IPv6 FAQ/HOWTO (http://www.linuxhq.com/IPv6/,
prosím, používejte jej pouze z historických důvodů). Poslední verze 3.2.1 byla vydaná 14. července 1997.
Prosím o pomoc: Zná-li někdo datum narození tohoto návodu, pošlete mi, prosím, e-mail (tuto informaci potřebuji do „historie “).
IPv6 & Linux – návod (udržovaný)
Druhá verze se jmenuje IPv6 & Linux – HowTo (http://www.bieringer.de/linux/IPv6/), napsal jsem ji já (Peter Bieringer) v čistém
HTML. Vznikla v dubnu 1997 a první anglická verze vyšla v červnu 1997. Budu pokračovat v její údržbě, avšak ve srovnání s
Návodem k systému Linux IPv6, který právě čtete, bude pomalu zastarávat (ne však úplně).
Návod k systému Linux IPv6 (tento dokument)
Vzhledem k tomu, že IPv6 & Linux – HowTo (http://www.bieringer.de/linux/IPv6/) je napsán v čistém HTML, není kompatibilní
s The Linux Documentation Project (TLDP, http://www.tldp.org/). Koncem listopadu 2001 jsem (Peter Bieringer) byl požádán o
přepracování IPv6 & Linux – HowTo (http://www.bieringer.de/linux/IPv6/) do SGML. Avšak vzhledem k nedostatečné návaznosti
tohoto návodu (Future of IPv6 & Linux – HowTo, http://www.bieringer.de/linux/IPv6/IPv6-HOWTO/IPv6HOWTO-0.html#history ) a vzhledem k tomu, že IPv6 se stává standardem, rozhodl jsem se napsat nový dokument, který by
obsahoval veškeré základní i detailní informace, jež budou platné i do budoucna. Současně jsem do jisté míry aktualizoval i obsah
druhého návodu v pořadí IPv6 & Linux – HowTo (http://www.bieringer.de/linux/IPv6/).
Pojmy, vysvětlivky a zkratky Sí
Base 10 (základ 10)
Desítková soustava, číselné hodnoty se vyjadřují číslicemi 0–9.
Base 16 (základ 16)
Používá se v nižších i vyšších programovacích jazycích, také se nazývá hexadecimální (šest-náctková) soustava, číselné
hodnoty se vyjadřují číslicemi 0–9 a znaky A–F (je jedno, zda malý-mi nebo velkými).
Base 85 (základ 85)
Číselné hodnoty se vyjadřují 85 různými číslicemi a znaky, takže řetězce jsou kratší. V praxi jsem však toto vyjádření ještě
nikdy neviděl.
Bit
Nejmenší paměťová jednotka, nabývá hodnot 1 (zapnuto/pravda) nebo 0 (vypnuto/nepravda).
Byte (bajt)
Většinou 8 bitů (nikoli však nutně – viz starší počítačové systémy).
Device (zařízení)
Zde je to hardware síťového připojení, viz také NIC.
Dual homed host (počítač připojený ke dvěma sítím)
Počítač připojený ke dvěma sítím tvoří uzel se dvěma síťovými rozhraními (na fyzickou nebo virtuální síť) určenými pro dvě
různá připojení, který však mezi těmito rozhraními nepřenáší žádné pakety.
Host (počítač)
Obecně počítač s jedním připojením k síti. Obvykle má jedno aktivní síťové rozhraní, tj. Ethernet, nebo (nikoli „a“) PPP
(point-to-point, dvoubodové spojení).
Interface (rozhraní)
Většinou totéž, co „zařízení“, viz také NIC.
IP Header (IP hlavička)
Hlavička IP paketu (každý paket v síti má hlavičku závislou na síťové vrstvě).
Link (připojení)
Připojení je přenosové médium pro přenos síťových paketů druhé vrstvy, například Ethernet, Token Ring, PPP, SLIP, ATM,
ISDN, Frame Relay...
Node (uzel)
Uzel je tvořen počítačem nebo směrovačem.
Octet (oktet, osmice)
8 bitů, zhruba totéž co „bajt“.
Port
Informace pro dispečera TCP/UDP (4. vrstva) o přenosu do vyšších vrstev.
Protocol (protokol)
Každá síťová vrstva většinou obsahuje pole protokolů, které jí pomáhá s dispečinkem přená-šených dat z vrstvy 2 (MAC,
spojové) a 3 (IP, síťové) do vyšších vrstev.
Router (směrovač)
Směrovač je uzel se dvěma nebo více síťovými rozhraními (fyzických nebo virtuálních sítí ), který předává pakety mezi těmito
rozhraními.
Soket
IP soket je definován zdrojovými a cílovými IP adresami a porty (a spojením).
Stack (zásobník)
Soubor síťových vrstev.
Subnetmask (podmaska sítě)
IP sítě používají bitové masky k oddělení lokálních a vzdálených sítí.
Tunnel (tunel)
Tunel je obvykle dvoubodové spojení pro přenos paketů s daty v různých protokolech, napří-klad tunel z IPv6 do IPv4.
Zkratky
ACL
Access Control List (seznam pro řízení přístupů).
API
Application Programming Interface (aplikační programové rozhraní ).
ASIC
Application Specified Integrated Circuit (integrovaný obvod pro aplikaci).
BSD
Berkeley Software Distribution (distribuce Unixu).
CAN-Bus
Controller Area Network Bus (systém fyzických sběrnic).
ISP
Internet Service Provider (poskytovatel připojení k Internetu).
KAME
Projekt – společné úsilí šesti japonských společností o vytvoření volného zásobníku adres IPv6 a IPsec (pro IPv4 i pro IPv6)
pro varianty systému BSD, http://www.kame.net/.
LIR
Local Internet Registry (lokální internetový registr).
NIC
Network Interface Card (síťová karta).
RFC
Request For Comments – množina technických a organizačních poznámek o Internetu.
USAGI
UniverSAl playGround for Ipv6 Project – práce, jejichž účelem je zajistit kvalitní zásobník protokolů IPv6 pro systémy
Linux.
Další informace Pokračovací znak dlouhého řádku
Kvůli lepší viditelnosti v souborech PDF a PS se pro signalizaci zalomených řádků používá speci-ální znak „ “.
Zástupné symboly
V obecných příkladech někdy naleznete něco jako:
<myipaddress>
Aby byly příkazové řádky nebo skripty ve vašem systému funkční, je nutno tyto zástupné symboly nahradit náležitým obsahem
(pochopitelně bez znaků < a >). Výsledkem bude například:
1.2.3.4
Příkazy v shellu
Příkazy proveditelné běžným uživatelem (nikoli root) začínají znakem $, např.:
$ whoami
Příkazy proveditelné uživatelem root začínají znakem #, např.:
# whoami
Předpoklady k užívání návodu Personální předpoklady
Zkušenosti s unixovými nástroji
Měli byste být schopni používat hlavní unixové nástroje jako grep, awk, find, ... a znát jejich běžně používané volby na
příkazovém řádku.
Zkušenosti s teorií sítí
Měli byste něco vědět o vrstvách, protokolech, adresách, kabelech, zásuvných modulech atd. Pokud v této oblasti teprve začínáte,
můžete si doplnit znalosti například z http://www.linux-ports.com/howto/intro_to_networking/.
Zkušenosti s konfigurací IPv4
S konfigurací IPv4 byste určitě měli mít nějaké zkušenosti, jinak bude pro vás dost obtížné pocho-pit, o co jde.
Zkušenosti s DNS
Také byste měli rozumět tomu, co je DNS (Domain Name System).
Zkušenosti se strategiemi ladění v síti
Přinejmenším byste měli umět používat tcpdump a vědět, k čemu je. Jinak pro vás bude ladění na síti složité.
Hardware kompatibilní s operačním systémem Linux
Určitě chcete experimentovat se skutečným hardwarem a ne jen usínat u čtení návodu.
Základy
Co je IPv6?
IPv6 je nový protokol pro vrstvu 3 (viz http://www.linuxports.com/howto/intro_to_networking/ c4412.htm#PAGE103HTML),
který nahrazuje IPv4 (známý také pod jménem IP). IPv4 byl navržen už dávno (RFC 760/Internet Protocol z ledna 1980) a už od
jeho počátků se množily požadavky na zvět-šení počtu adres a rozšíření funkcionality. Nejnovějším protokolem RFC je RFC
2460/Internet Proto-col Version 6 Specification. Nejdůležitější změnou je v něm nový tvar hlavičky pro adresový prostor zvětšený
z 32 bitů na 128 bitů. Vzhledem k tomu, že vrstva 3 je zodpovědná za přenos paketů na základě adres, musí obsahovat nové
adresy IPv6 (zdrojovou i cílovou) podobně jako původně adre-sy IPv4.
Další informace o historii IPv6 naleznete v odpovídajícím RFC například na adrese
http://www.switch.ch/lan/ipv6/references.html.
Historie IPv6 v Linuxu
Historie IPv6 v letech 1992, 1993 a 1994 je v hlavních rysech popsána v http://www.laynet works.com/IPv6.htm#CH3.
Zbývá doplnit: podrobnější časové a věcné údaje ...
Počátek
První kód, který se vztahoval k IPv6, doplnil do linuxového jádra 2.1.8 Pedro Roque v listopadu 1996. Byl založen na BSD API:
diff -u --recursive --new-file v2.1.7/linux/include/linux/in6.h
linux/include/linux/in6.h --- v2.1.7/linux/include/linux/in6.h Thu Jan 1 02:00:00 1970 +++ linux/include/linux/in6.h Sun Nov 3 11:04:42 1996
@@ -0,0 +1,99 @@ +/* + * Types and definitions for AF_INET6 + * Linux INET6 implementation + * + * Authors: + * Pedro Roque <******>
+ * + * Source: + * IPv6 Program Interfaces for BSD Systems + * <draft-ietf-ipngwg-bsd-api-05.txt>
Tyto řádky byly okopírovány ze záplaty 2.1.8 (e-mailová adresa byla přepsána).
Mezitím
Vzhledem k nedostatku pracovních sil nedržela implementace jádra krok s návrhy nových vydá-ní RFC. V říjnu 2000 byl v
Japonsku zahájen projekt USAGI (http://www.linux-ipv6.org/), jehož cílem bylo implementovat veškerou chybějící nebo
zastaralou podporu IPv6 v Linuxu. Projekt sle-doval průběžnou implementaci IPv6 ve FreeBSD v rámci projektu http://
www.kame.net/. Občas provedli porovnání se zdrojovým kódem jádra vanilla Linuxu.
Současnost
Záplata USAGI je bohužel tak velká, že není možné ji zahrnout do zdrojového kódu linuxového jádra řady 2.4.x. Tato řada tak
postrádá některá (nebo dokonce mnohá) rozšíření a ani neodpoví-dá současným návrhům RFC (viz http://www.ietf.org/
html.charters/ipv6-charter.html). To může způsobit určité problémy při součinnosti s jinými operačními systémy.
Budoucnost
Projekt USAGI využívá probíhajícího vývoje jádra řady 2.5.x k tomu, aby do něj přidal veškerá svá rozšíření. Jádro řady 2.6.x už
obsahuje úplnou a aktuální implementaci IPv6.
Jak vypadají adresy IPv6
Jak už jsme se zmínili, adresa IPv6 má 128 bitů. To je počet, který odpovídá velmi vysokým desítkovým číslům s 39 číslicemi:
2^128-1: 340282366920938463463374607431768211455
Taková čísla nejsou adresy, které bychom si byli schopni zapamatovat. Adresové schéma IPv6 je bitově orientováno (podobně
jako IPv4, což ale není zcela zřejmé). Proto je lépe zapisovat tako-vá velká čísla hexadecimálně. V hexadecimálním tvaru
odpovídají 4 bity (polovina bajtu, říká se jim také „nibble“) číslici nebo znaku v rozsahu 0–9 a a–f (10–15). Tento tvar redukuje
délku adre-sy IPv6 na 32 znaků.
2^128-1: 0xffffffffffffffffffffffffffffffff
Tento tvar ještě úplně nevyhovuje (možná záměna nebo přehlédnutí hexadecimální číslice), takže návrháři IPv6 vymysleli
hexadecimální tvar s dvojtečkou jako oddělovačem šestnáctic bitů. Navíc odstranili úvodní „0x“ (označení hexadecimálních
hodnot používané v programovacích jazycích):
2^128-1: ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff
Adresa pak může vypadat například takto (viz typy adres dále):
3ffe:ffff:0100:f101:0210:a4ff:fee3:9566
Úvodní nuly v každé šestnáctici lze pro zjednodušení vynechat:
3ffe:ffff:0100:f101:0210:a4ff:fee3:9566 -> ¬ 3ffe:ffff:100:f101:210:a4ff:fee3:9566
Jednu posloupnost šestnáctic, které obsahují pouze nuly, lze zapsat jako „::“. Avšak nejvýše jednu, při větším počtu by zápis už
nebyl jednoznačný.
3ffe:ffff:100:f101:0:0:0:1 -> 3ffe:ffff:100:f101::1
Největší redukce lokální adresy IPv6:
0000:0000:0000:0000:0000:0000:0000:0001 -> ::1
Existuje také tzv. compact (soustava se základem 85) definovaná v RFC 1924 (vydaná 1. dubna 1996). V praxi jsem ji ještě
neviděl, (nejspíš jde o aprílový žert ), ale zde je příklad:
# ipv6calc --addr_to_base85 3ffe:ffff:0100:f101:0210:a4ff:fee3:9566 Itu&-ZQ82s>J%s99FJXT
Informace: Kalkulátor a konverzní program ipv6calc na adresový formát IPv6 naleznete zde:
http://www.deepspace6.net/projects/ipv6calc.html.
Často kladené otázky (základní) Proč je následníkem IPv4
IPv6a nikoli IPv5?
V hlavičce IP adresy jsou první čtyři bity vyhrazeny verzi protokolu, takže teoreticky může být číslo protokolu 1 až 15:
4: se používá pro IPv4,
5: je vyhrazeno pro Stream Protocol (STP, RFC 1819), který nebyl nikdy používán.
První volné číslo bylo 6 – a IPv6 byl na světě!
Adresy IPv6: proč tolik bitů?
Při návrhu IPv4 se mnozí domnívali, že 32 bitů postačí pro celý svět. Stačily dodnes a možná bystačily ještě pár let. 32 bitů však
nestačí k tomu, aby v budoucnosti byla každému síťovému zaří-zení přidělena síťová adresa. Když vezmete mobilní telefony, auta
(včetně elektronických zařízenína sběrnici CAN-bus), topinkovače, ledničky, spínače osvětlení atd.
Návrháři tedy zvolili 128 bitů, což je číslo čtyřikrát delší a 2^96krát větší než dnešní IPv4.Využitelnost je ovšem menší, než se
může zdát. To proto, že v současném adresovém schématuje 64 bitů využito pro identifikátor rozhraní a zbývajících 64 bitů pro
směrování. Vezmeme-li
v úvahu současnou omezenou úroveň agregace (/48, /32, ...), je docela možné, že ani 128 bitůnebude stačit. Doufejme však, že už
se toho nedožijeme.Další informace viz RFC 1715 a RFC 3194 .
Adresy IPv6: proč tak málo bitů?
I když na Internetu jsou (možná) lidé (vím jen o Jimovi Flemingovi...), kteří už uvažují o IPv8 a IPv16, jejich návrhy mají ještě
daleko ke schválení a k implementaci. 128 bitů je prozatím nej-lepší volbou z hlediska režie hlavičky a přenosu dat. Když
vezmete minimální MTU (Maximum Transfer Unit) v IPv4 (576 oktetů) a v IPv6 (1 280 oktetů), délka hlavičky v IPv4 je 20
oktetů (mini-málně, s volbami může vzrůst až na 60) a v IPv6 je 48 oktetů (pevná). To je 3,4 % MTU v IPv4 a 3,8 % v IPv6.
Znamená to, že režie je prakticky stejná. Víc bitů pro adresu by vyžadovalo větší hlavičky, a tedy větší režii. Uvážíme-li tedy
maximální MTU u běžných připojení (např. Ethernet): 1 500 oktetů (ve speciálních případech: 9k oktetů při použití Jumbo
Frame ). Používat 10 až 20 % přenášených dat v paketech vrstvy 3 pro adresy a jen zbytek pro užitečný náklad by nebylo dobré.
Typy adres
Podobně jako v IPv4 lze adresy IPv6 rozdělit pomocí masky na síťovou část a počítačovou část. V IPv4 se ukázalo, že někdy by
bylo příjemné, kdyby jednomu rozhraní bylo možné přidělit více než jednu IP adresu, každou pro jiný účel (aliasy, multicast). S
ohledem na použitelnost i v budoucnosti šla IPv6 dál a umožňuje připojit ke každému rozhraní více než jednu adresu IPv6.
V RFC neexistuje žádné omezení, pouze v implementaci zásobníku IPv6 (prevence útoků typu
DoS – odmítnutí služby).Vzhledem k velkému počtu bitů určených pro adresu jsou v IPv6 využity některé úvodní bity natypy
adres a doufejme, že nebudou dále rozděleny jako v případě tříd A, B a C v současné adre-se IPv4.
Bity jsou tedy rozděleny na síťovou část (horních 64 bitů) a počítačovou část (spodních 64 bitů)
kvůli snazší autokonfiguraci.
Adresy bez speciálního prefixu
Adresy lokálních počítačů
Toto je speciální loopback adresa podobná adrese „127.0.0.1“ v IPv4. V IPv6 má tvar:
0000:0000:0000:0000:0000:0000:0000:0001
anebo ve zkráceném tvaru:
::1
Pakety s touto zdrojovou nebo cílovou adresou by nikdy neměly opustit odesilatele.
Nespecifikovaná adresa
Toto je speciální adresa „kohokoli“, resp. „0.0.0.0“ v IPv4. V IPv6 je to:
0000:0000:0000:0000:0000:0000:0000:0000
resp.:
::
Tyto adresy se většinou používají v připojení soketů (k libovolné adrese IPv6) nebo ve směrova
cích tabulkách.
Poznámka: Nespecifikovanou adresu nelze použít jako cílovou adresu.
Adresa IPv6 s vestavěnou adresou IPv4
Existují dva druhy adres, které obsahují adresu IPv4.
IPv4-mapped IPv6 address
IP adresa kompatibilní s adresou IPv6 se někdy používá pro sokety vytvořené démonem aktuali-zovaným pro IPv6, avšak s
vazbou pouze na adresu IPv4.Tyto adresy jsou definované speciálním prefixem o délce 96 (a.b.c.d je adresa IPv4):
0:0:0:0:0:ffff:a.b.c.d/96
anebo ve zkráceném tvaru:
::ffff:a.b.c.d/96
Například adresa IPv4 1.2.3.4 vypadá takto:
::ffff:1.2.3.4
Adresa IPv6 kompatibilní s IPv4
Používá se pro automatické tunelování (RFC 2893 ), které je nahrazeno tunelováním 6to4 (kapitola „Vytváření tunelů 6to4“).
0:0:0:0:0:0:a.b.c.d/96
nebo ve zkráceném tvaru:
::a.b.c.d/96
Síová část adresy (prefix)
Návrháři definovali pouze některé typy adres a ponechali značný prostor pro budoucí definice plynoucí z nově vznikajících
požadavků. Adresové schéma je definováno v RFC 2373, avšak exi-stuje už i nový návrh: ftp://ftp.ietf.org/internet-drafts/.
Podívejme se nyní na různé typy prefixů (a tedy typů adres):
Lokální adresový typ pro připojení
Speciální adresy, které budou platné pouze při napojení na rozhraní. Pokud by taková adresa byla cílovou adresou, paket by nikdy
neprošel směrovačem. Používá se pro spojovací komunikaci, například:
Je na tomto spojení někdo jiný?
Má někdo speciální adresu (tj. hledá směrovač)?
Začínají (kde „x“ je libovolný hexadecimální znak, obvykle „0“):
fe8x: <-v současnosti se používá pouze tento.fe9x:feax:febx:
Adresa s tímto prefixem se po bezstavové autokonfiguraci nalézá na všech rozhraních s aktivova-ným IPv6 (v jiných případech
obvykle nikoli).
Lokální adresový typ pro sí (angl. „site“)
Adresy podobné RFC 1918 v IPv4 s tou výhodou, že je možno využít těchto 16 bitů pro nejvýše
65 536 podsítí. Srovnatelné s 10.0.0.0/8 v IPv4.Další výhoda: Vzhledem k tomu, že rozhraní IPv6 je možné přiřadit více než
jednu adresu, jemožné přiřadit této síti kromě globální adresy také lokální adresu.
Začíná od:
fecx: <- nejčastěji používaná.
fedx:
feex:
fefx:
(kde „x“ je libovolný hexadecimální znak, obvykle „0“)
Poznamenejme, že v současnosti probíhají diskuse o zrušení tohoto typu adres, neboť jsou s nímspojeny určité problémy. Další
informace viz http://www.ietf.org/internet-drafts/.Podle mého skromného názoru laboratorní testy prokázaly, že tyto adresy
vyhovují.
Globální adresový typ pro „(agregovatelné) globální jednosměrné vysílání”
V současnosti existuje jediný definovaný globální adresový typ (první návrh nazvaný „provider based“ [založený na
poskytovateli] byl před několika lety zamítnut: RFC 1884, některé zbytky po něm naleznete ve zdrojovém kódu starších
linuxových jader).
Začíná na („x“ jsou hexadecimální znaky):
2xxx: 3xxx:
Poznámka: Prefix „agregovatelný“ je v současných návrzích opuštěn. Jsou definovány některé další podtypy, viz:
Testovací adresy 6bone
To byly první definované a používané globální adresy. Všechny začínají na:
3ffe:
Příklad:
3ffe:ffff:100:f102::1
Speciální testovací adresa typu 6bone, která nikdy nebude globálně jednoznačná, začíná na:
3ffe:ffff:
a můžete se s ní setkat ve starších příkladech, neboť kdyby v nich byla uvedena skutečná adresa, mohl by si ji někdo přenést do
svého konfiguračního souboru, čímž by nechtěně vytvořil dupli-kát globálně jednoznačné adresy. Tím by mohly původnímu
počítači vzniknout vážné problémy (např. by mohl dostávat odpovědní pakety na požadavek, který neodeslal). Vzhledem k tomu,
že IPv6 se nyní tvoří, tento prefix nebude podporován a po 6. 6. 2006 bude pravděpodobně zcela odstraněn (podrobnosti viz RFC
3701 ).
Adresy 6to4
Tyto adresy jsou určeny pro speciální tunelové mechanismy RFC 3056 a RFC 2893, kódování adres IPv4 a možné podsítě.
Začínají na:
2002:
Například IP adresa 192.168.1.1/5 by vypadala takto:
2002:c0a8:0101:5::1
Z dané adresy IPv4 můžeme vytvořit tuto adresu pomocí krátkého příkazového řádku v shellu:
ipv4=”1.2.3.4”; sla=”5”; printf “2002:%02x%02x:%02x%02x:%04x::1” `echo $ipv4 ¬ | tr “.” “ “` $sla
Viz také kapitoly „Vytváření tunelů 6to4“ a „Online informace“.
Přiděleno poskytovatelem pro hierarchické směrování
Tyto adresy jsou delegovány poskytovatelům připojení k Internetu (ISP) a začínají na:
2001:
Prefixy pro hlavní (páteřní) ISP (někdy se nazývají LIR) jsou delegovány v hlavních regionálníchrejstřících (viz kapitola „On-line
informace“) a dostávají prefix dlouhý 32 bitů.Zákazník dostává prefix dlouhý 48 bitů.
Adresy vyhrazené pro příklady a dokumentaci
Pro příklady a dokumentaci jsou běžně vyhrazeny dvě oblasti adres:
3ffe:ffff::/32 2001:0DB8::/32 EXAMPLENET-WF
Tyto oblasti adres by měly být filtrované na základě zdrojových adres a pokud možno by NEMĚLY být směrovány na hraniční
směrovače Internetu.
Adresy pro vícesměrový přenos (multicast)
Vícesměrové adresy se používají pro související služby. Začínají vždy na (xy je
rozsah):
ffxy:
Jsou rozděleny na rozsahy a typy:
Rozsahy vícesměrového přenosu
Rozsah vícesměrového přenosu je parametr, který udává maximální vzdálenost, kam až může putovat vícesměrový paket od
odesilatele. V současnosti jsou definovány následující oblasti (rozsahy):
ffx1: lokální vzhledem k uzlu, paket nikdy neopustí uzel,
ffx2: lokální vzhledem k připojení, pakety nikdy nejsou přeposílány směrovači, takže nikdy neopustí dané připojení,
ffx5: lokální vzhledem k síti, paket nikdy neopustí síť,
ffx8: lokální vzhledem k organizaci, paket nikdy neopustí organizaci (implementace není jednoduchá, je nutno použít
směrovací protokol),
ffxe: globální rozsah,
další jsou rezerva.
Vícesměrové typy
Existuje mnoho dalších definovaných a rezervovaných typů (podrobnosti viz RFC 2373). Například:
Adresa všech uzlů: ID = 1h, adresuje všechny počítače na lokálním uzlu (ff01:0:0:0:0:0:0:1) nebo na připojení
(ff02:0:0:0:0:0:0:1).
Adresa všech směrovačů: ID = 2h, adresuje všechny směrovače na lokálním uzlu (ff01:0:0:0:0:0:0:2) nebo na připojení
(ff02:0:0:0:0:0:0:2) nebo na lokální síti (ff05:0:0:0:0:0:0:2).
Vyžádaná vícesměrová adresa připojení k lokálnímu uzlu
Speciální vícesměrová adresa používaná jako cílová adresa při „zjišťování souseda“, neboť na roz
díl od IPv4 v IPv6 není protokol ARP.
Adresa může vypadat například takto:
ff02::1:ff00:1234
Prefix říká, že je to vícesměrová adresa připojení k lokálnímu uzlu. Přípona je generovaná z cílo-vé adresy. V tomto příkladu by
měl být paket poslán na adresu „fe80::1234”, avšak síťový zásob-ník nezná fyzickou adresu spojové vrstvy (vrstvy 2). Nahradí
horní 104 bity číslem „ff02:0:0:0:0:1:ff00::/104” a spodní 24 bity ponechá beze změny. Tato adresa se nyní použije „na
připojení“, aby se nalezl odpovídající uzel, který musí poslat odpověď se svojí fyzickou adresou spojové vrstvy.
Výběrové (anycast) adresy
Výběrové adresy jsou speciální adresy používané například k vyhledávání nejbližšího serveru DNS, serveru DHCP nebo
podobných dynamických skupin. Adresy jsou přejaty z jednosměrného adresového prostoru (v současnosti agregovatelné
globálně nebo v lokální síti). Mechanismus výběrové adresy (z pohledu klienta) zpracovávají dynamické směrovací protokoly.
Poznámka: Výběrové adresy nemohou být zdrojovými adresami, používají se pouze jako cílové adresy.
Výběrová adresa směrovače podsítě
Jednoduchým příkladem výběrové adresy je výběrová adresa směrovače podsítě. Předpokládejme, že uzel má následující globálně
přidělenou adresu IPv6:
3ffe:ffff:100:f101:210:a4ff:fee3:9566/64 <- Adresa uzlu
Výběrovou adresu směrovače podsítě vytvoříme úplným vynecháním přípony (poslední 64 významové bity):
3ffe:ffff:100:f101::/64 <- Výběrová adresa směrovače podsítě
Adresové typy (počítačová část)
Pro autokonfiguraci a pro účely mobility bylo rozhodnuto, že ve většině běžných adresových typů se budou pro počítač používat
spodní 64 bity. Každá podsíť tak může mít velké množství adres. Na tuto část je nutno pohlížet rozdílně.
Automaticky vypočtená (též nazývaná bezstavová)
Při autokonfiguraci se počítačová část adresy vypočte tak, že se metodou EUI-64 provede kon-verze fyzické adresy rozhraní
(pokud existuje) na jednoznačnou adresu IPv6. Neexistuje-li k tomu-to zařízení fyzická adresa (například u virtuálních zařízení),
použije se něco jiného (například adresa IPv4 fyzické adresy fyzického rozhraní).
Uvažujme znovu o prvním příkladu:
3ffe:ffff:100:f101:210:a4ff:fee3:9566
zde,
210:a4ff:fee3:9566
je počítačová část adresy a je vypočtena z fyzické adresy síťové karty:
00:10:A4:E3:95:66
pomocí http://standards.ieee.org/regauth/oui/tutorials/EUI64.html pro identifikátory EUI-48.
Problém se zachováním soukromí u automaticky počítaných adres a jeho řešení
Vzhledem k tomu, že „automaticky vypočtená“ počítačová část je globálně jednoznačná (pokud ovšem výrobce síťových karet
nepřiřadil stejnou adresu více než jedné kartě), je možné daného klienta zjistit, pokud nepoužívá nějakou formu zastoupení.
To je známý problém a řešení bylo provedeno rozšířením definice v RFC 3041 (už existuje i nový návrh: ftp://ftp.ietf.org/internetdrafts/ ). Občas se na základě statické hodnoty náhodně vygene-ruje nová přípona. Poznámka: Tento způsob má smysl pouze v
případě odchozích klientských spojení, zatímco u známých serverů se nepoužívá.
Ruční nastavení
Pro server je pravděpodobně snazší zapamatovat si jednodušší adresy, což lze provést. Rozhraní můžeme přidat další adresu IPv6,
tj.:
3ffe:ffff:100:f101::1
Pro ruční přípony jako „::1”, jak je uvedeno v předchozím příkladu, musí být 7. nejvýznamnější bit nastaven na 0 (bit označující
globální/lokální u automaticky generovaného identifikátoru). Také některé jiné (jinak nevybrané) bitové kombinace jsou
vyhrazeny pro výběrové adresy.
Délky prefixu pro směrování
Ve fázi časného návrhu bylo plánováno používání plně hierarchického přístupu ke směrování, aby se co nejvíce zredukovaly
velikosti směrovacích tabulek. Vzhledem k počtu stávajících směrova-cích položek IPv4 v hlavních směrovačích (> 104 tisíce v
květnu 2001) se tak u hardwarových smě-rovačů (řízených ASIC, tj. „Application Specified Integrated Circuit”) měly snížit
nároky na paměť pro ukládání směrovacích tabulek a měla se zvýšit rychlost (při menším počtu položek je vyhle-dávání
rychlejší ).
Viděno dnešním pohledem, hierarchické směrování bude navrhováno pro sítě pouze v rámci jed-noho poskytovatele připojení. V
případě spojení zajišťovaných více ISP to není možné a také to není možné kvůli problému zvanému multi-homing (podrobnosti
viz http://www.ietf.org/internet-drafts/ a http://arneill-py.sacramento.ca.us/ipv6mh/).
Délky prefixů (známé i pod jménem „síové masky“)
Podobně jako v IPv4 existuje i zde směrování cesty po síti. Vzhledem k tomu, že standardní zápis síťové masky v případě 128
bitů nevypadá pěkně, návrháři využili schématu CIDR z Ipv4 (CIDR, RFC 1519), kterým se specifikuje počet bitů IP adresy pro
směrování. Zápisu se také říká „lomítková“ (slash) notace.
Příklad:
3ffe:ffff:100:1:2:3:4:5/48
Po expanzi:
Síť:
Síťová maska:
3ffe:ffff:0100:0000:0000:0000:0000:0000
ffff:ffff:ffff:0000:0000:0000:0000:0000
Hledání cesty
Za normálních okolností (bez QoS, tj. požadavku na kvalitu služby) hledání ve směrovacích tabulkách dopadne tak, že cesta s
nejvýznamnějším počtem adresových bitů znamená, že cesta s největší délkou prefixu se najde nejdříve.
Když například jsou ve směrovací tabulce následující položky (seznam není úplný):
3ffe:ffff:100::/48 :: U 1 0 0 sit1 2000::/3 ::192.88.99.1 UG 1 0 0 tun6to4
Uvedená cílová adresa paketů IPv6 bude nasměrována přes dané zařízení
3ffe:ffff:100:1:2:3:4:5/48 -> nasměrováno přes zařízení sit1 3ffe:ffff:200:1:2:3:4:5/48 -> nasměrováno přes zařízení tun6to4
Kontrola systému na IPv6
Než začnete používat IPv6 na linuxovém počítači, musíte otestovat, zda je systém na práci s tímto adresovým schématem
připraven. Možná pro to budete muset nejdříve něco udělat.
Jádro a IPv6
Současné linuxové distribuce už obsahují jádra s podporou IPv6. Tuto funkci zajišťuje samostatně
překládaný modul, je však možné, že při spuštění systému nebyl automaticky zaveden. Nejaktuálnější informace naleznete na
stránce http://www.bieringer.de/linux/IPv6/status/ IPv6+Linux-status-distributions.html.
Poznámka
Už byste neměli používat jádro 2.2.x, neboť skončila aktualizace těch částí, které zpraco
vávají IPv6.
Jak zkontrolovat za chodu, zda jádro podporuje IPv6
Když chcete zkontrolovat, zda stávající jádro podporuje IPv6, podívejte se nejdříve do souboro-vého systému /proc . Musí v něm
být položka:
/proc/net/if_inet6
Krátký automatický test vypadá takto:
# test -f /proc/net/if_inet6 && echo „Jádro podporuje IPv6”
Když test zhavaruje, je velmi pravděpodobné, že není zaveden modul IPv6.
Zkuste zavést modul IPv6
Modul IPv6 můžete zkusit zavést pomocí
# modprobe ipv6
Budete-li úspěšní, můžete otestovat jeho zavedení pomocí následujícího kouzelného příkazového řádku:
# lsmod |grep -w ‘ipv6’ && echo „Modul IPv6 úspěšně zaveden”
A test shora by nyní měl proběhnout úspěšně.
Poznámka
Bez zavedeného modulu IPv6 může jádro za určitých okolností zhavarovat.
Automatické zavedení modulu
V konfiguračním souboru si můžete nastavit automatické zavádění modulu IPv6. Stačí přidat do konfi-guračního souboru
zavaděče jádra (obvykle /etc/modules.conf nebo /etc/conf.modules) řádek:
alias net-pf-10 ipv6 # automatické zavedení modulu IPv6
Naopak je možné automatické zaváděné modulu IPv6 zablokovat pomocí řádku:
alias net-pf-10 off # zablokuj automatické zavedení modulu IPv6
Doplňující poznámka
V jádru řady 2.6.x byl mechanismus zavádění jádra změněn. Nový konfigurační soubor
musíte místo /etc/modules.conf pojmenovat /etc/modprobe.conf .
Kompilace jádra s podporou IPv6
Pokud oba výsledky shora byly negativní a jádro nemá podporu IPv6, máte na vybranou z těchto možností:
Aktualizovat distribuci na takovou verzi, aby podporovala IPv6 již v základu (doporučeno začátečníkům).
Přeložit nové jádro vanilla (snadné, pokud víte, jaké potřebujete volby).
Znovu přeložit zdrojový kód jádra, které patří k vaší distribuci (což nemusí být zcela jednoduché).
Přeložit jádro s USAGI.
Rozhodnete-li se přeložit jádro, měli byste s tím mít už určitou zkušenost a také si přečíst
http://www.tldp.org/HOWTO/Kernel-HOWTO.html.
Nejaktuálnější srovnání mezi jádrem vanilla a rozšířeními jádra USAGI je k dispozici na
http://www.bieringer.de/linux/IPv6/status/IPv6+Linux-status-kernel.html.
Překlad jádra vanilla
Podrobnější pokyny k překladu jádra s podporou IPv6 naleznete na http://www.bieringer.de/ linux/IPv6/IPv6-HOWTO/IPv6HOWTO-2.html#kernel.
Poznámka
Je-li to možné, měli byste používat jádro řady 2.6.x nebo vyšší, neboť podpora IPv6 v řadě
2.4.x je pouze částečná a používání IPv6 v řadě 2.2.x je beznadějně zastaralé.
Překlad jádra s rozšířeními USAGI
Stejně jako v případě jádra vanilla je překlad tohoto jádra možné doporučit jen pokročilým uži-vatelům, kteří jsou zběhlí v
překladech jádra. Viz také projekt USAGI (http://www.linux-ipv6.org/faq.html) a http://www.deepspace6.net/docs/
best_ipv6_support.html.
Síová zařízení s podporou IPv6
Ne všechna stávající síťová zařízení mají už (nebo vůbec) schopnost přenášet pakety IPv6. Hlavní potíž je v tom, že kvůli
struktuře síťových vrstev implementace jádra není paket IPv6 ve sku-tečnosti rozpoznáván podle čísla hlavičky (6 místo 4). Je
rozpoznáván podle čísla protokolu vrstvy 2 transportního protokolu. Proto žádný transportní protokol, který nepoužívá toto číslo
protokolu, nemůže přenášet pakety IPv6. Poznámka: Paket je přenášen spojovou vrstvou, avšak na straně pří-jemce nebude přenos
fungovat (můžete si to vyzkoušet například programem tcpdump).
Dosud známá „spojení neschopná přenosu IPv6“
Serial Line IP (SLIP, RFC 1055) by se nyní raději mělo nazývat SLIPv4, jména zařízení: slX.
Parallel Line IP (PLIP), totéž jako SLIP, jména zařízení: plipX.
ISDN se zapouzdřením rawip, jména zařízení: isdnX.
Dosud známá „nepodporovaná spojení schopná přenosu IPv6“
■
ISDN se zapouzdřením syncppp, jména zařízení: ipppX (návrh položky ipppd bude zahr-nut do obecnější vrstvy PPP v
jádru řady 2.5.x).
Síové konfigurační nástroje IPv6
Jestliže provozujete jádro s podporou IPv6, avšak nemáte nástroje na konfiguraci IPv6, nedostanete se příliš daleko.
Balík síových nástrojů
Balík síťových nástrojů obsahuje některé nástroje, např. ifconfig nebo route, které vám pomo-hou zkonfigurovat IPv6 na rozhraní.
Podívejte se na výstup příkazů ifconfig -? nebo route -?, jest-li se u některé položky objeví IPv6 nebo inet6. Pokud ano, tento
nástroj podporuje IPv6.
Zjistíme to pomocí kouzelné formulky:
# /sbin/ifconfig -? 2>& 1|grep -qw ‘inet6’ && echo “utilita ‘ifconfig’ ¬ podporuje IPv6”
Stejný test můžeme provést v případě route:
# /sbin/route -? 2>& 1|grep -qw ‘inet6’ && echo “utilita ‘route’ podporuje ¬ IPv6”
Balík iproute
Alexej N. Kuzněcov (člověk odpovědný za údržbu síťového kódu Linuxu) vytvořil množinu nástro-jů pro konfiguraci sítí
prostřednictvím síťových zařízení. S touto množinou nástrojů dosáhnete vyšší funkcionalitu, než jakou nabízejí síťové nástroje,
avšak není příliš dobře zdokumentovaná a vyža-duje odvážného ducha.
# /sbin/ip 2>&1 |grep -qw ‘inet6’ && echo “utilita ‘ip’ podporuje IPv6”
Pokud se program /sbin/ip nenajde, vřele doporučuji nainstalovat balík iproute.
Můžete jej získat z vaší linuxové distribuce (pokud jej obsahuje).
Můžete si jej stáhnout v tar balíku z ftp://ftp.inr.ac.ru/ip-routing/ (zrcadlo chybí) a zkom-pilovat jej.
Můžete se pokusit najít odpovídající balík RPM na http://rpmfind.net/linux/rpm2html/ search.php?query=iproute
(někdy je doporučován překlad balíku SRPMS).
Programy pro testování a ladění podpory IPv6
Poté co jste si připravili systém s podporou IPv6, určitě budete chtít využít IPv6 pro komunikaci po síti. Nejdříve byste se měli
naučit prohlížet pakety IPv6 nějakým „očichávacím“ programem. To je velmi důležité, neboť při ladění a odstraňování chyb vám
to velmi usnadní diagnostiku.
ping IPv6
Tento program obvykle bývá součástí balíku iputils. Je určen pro jednoduchý přenosový test, který provede tak, že odešle pakety
ICMPv6 pro vyžádání ozvěny a čeká na pakety ICMPv6 s odpovědí. Použití:
# ping6 <hostwithipv6address> # ping6 <ipv6address> # ping6 [-I <device>] <link-local-ipv6address>
Příklad:
# ping6 -c 1 ::1 PING ::1(::1) from ::1 : 56 data bytes 64 bytes from ::1: icmp_seq=0 hops=64 time=292 usec --- ::1 ping statistics ---1 packets
transmitted, 1 packets received, 0% packet loss round-trip min/avg/max/mdev = 0.292/0.292/0.292/0.000 ms
Doporučení: ping6 vyžaduje přímý přístup k soketům, musí tedy mít přístupová práva uživatele root. Pokud se tedy běžnému
uživateli nedaří spustit ping6, příčiny mohou být dvě:
ping6 není v uživatelské cestě (pravděpodobně proto, že obvykle bývá uložen v /usr/sbin ) -> doplnění cesty. Tento
postup však nedoporučujeme.
ping6 nepracuje správně zřejmě proto, že nemá přístupová práva uživatele root -> chmod u+s /usr/sbin/ping6.
Specifikace rozhraní pro ping IPv6
Použije-li ping IPv6 lokální adresu připojení, jádro neví, přes které (fyzické nebo virtuální) zařízení musí poslat paket – každé
zařízení má lokální adresu připojení. Takový pokus bude mít za následek výpis chybového hlášení:
# ping6 fe80::212:34ff:fe12:3456 connect: Invalid argument
V tomto případě musíte specifikovat rozhraní dodatečně, viz:
# ping6 -I eth0 -c 1 fe80::2e0:18ff:fe90:9205 PING fe80::212:23ff:fe12:3456(fe80::212:23ff:fe12:3456) from ¬ fe80::212:34ff:fe12:3478 eth0: 56
data bytes 64 bytes from fe80::212:23ff:fe12:3456: icmp_seq=0 hops=64 time =445 usec --- fe80::2e0:18ff:fe90:9205 ping statistics ---1 packets
transmitted, 1 packets received, 0% packet loss round-trip ¬ min/avg/max/mdev = 0.445/0.445/0.445/0.000 ms
Ping6 na vícesměrové adresy
Zajímavý způsob, jak zjistit počítače s podporou IPv6 ve spojové vrstvě, je spustit ping6 s lokál-ní vícesměrovou adresou
pokrývající všechny uzly:
# ping6 -I eth0 ff02::1 PING ff02::1(ff02::1) from fe80:::2ab:cdff:feef:0123 eth0: 56 data bytes 64 bytes from ::1: icmp_seq=1 ttl=64 time=0.104
ms 64 bytes from fe80::212:34ff:fe12:3450: icmp_seq=1 ttl=64 time=0.549 ms (DUP!)
Na rozdíl od IPv4, kde mohou být odpovědi na všesměrovou adresu blokovány, v případě IPv6 takto postupovat nelze (s
výjimkou lokálního firewallu IPv6).
traceroute6 IPv6
Tento program je obvykle součástí balíku iputils. Je podobný programu traceroute v IPv4, viz příklad:
# traceroute6 www.6bone.net
traceroute to 6bone.net (3ffe:b00:c18:1::10) from 3ffe:ffff:0000:f101::2, 30 hops max, 16 byte packets 1 localipv6gateway (3ffe:ffff:0000:f101::1)
1.354 ms 1.566 ms 0.407 ms 2 swi6T1-T0.ipv6.switch.ch (3ffe:2000:0:400::1) 90.431 ms 91.956 ms 92.377 ms 3 3ffe:2000:0:1::132
(3ffe:2000:0:1::132) 118.945 ms 107.982 ms 114.557 ms 4 3ffe:c00:8023:2b::2 (3ffe:c00:8023:2b::2) 968.468 ms 993.392 ms 973.441 ms 5
3ffe:2e00:e:c::3 (3ffe:2e00:e:c::3) 507.784 ms 505.549 ms 508.928 ms 6 www.6bone.net (3ffe:b00:c18:1::10) 1265.85 ms * 1304.74 ms
Poznámka
Na rozdíl od některých novějších verzí IPv4, jež mohou používat pakety ICMPv4 s vyžá-dáním ozvěny a pakety UDP
(implicitně), program traceroute6 může posílat pouze pake-ty UDP. Jak možná víte, pakety ICMP s vyžádáním ozvěny
prozatím přijímají spíše firewally a ACL na směrovačích.
tracepath6 IPv6
Tento program je obvykle součástí balíku iputils. Je podobný programu traceroute6, sleduje cestu k danému místu určení a na této
cestě vyhledává MTU, viz příklad:
# tracepath6 www.6bone.net 1?: [LOCALHOST] pmtu 1480
1: 3ffe:401::2c0:33ff:fe02:14 150.705ms
2: 3ffe:b00:c18::5 267.864ms
3: 3ffe:b00:c18::5 asymm 2 266.145ms pmtu 1280
3: 3ffe:3900:5::2 asymm 4 346.632ms
4: 3ffe:28ff:ffff:4::3 asymm 5 365.965ms
5: 3ffe:1cff:0:ee::2 asymm 4 534.704ms
6: 3ffe:3800::1:1 asymm 4 578.126ms !N Resume: pmtu 1280
tcpdump IPv6
tcpdump je v Linuxu hlavním nástrojem na prohlížení paketů. Příklady najdete v dalším textu.Podpora IPv6 je součástí stávajících
vydání verze 3.6.Aby se minimalizoval šum, pro filtrování paketů používá tcdump výrazy:
icmp6: filtry pro provoz skupiny ICMPv6,
ip6: filtry pro provoz skupiny IPv6 (včetně ICMPv6),
proto ipv6: filtry pro provoz skupiny tunelů Ipv6-in-IPv4,
not port ssh: potlačení výpisu paketů SSH v programu tcpdump, který běží na vzdáleném sezení SSH.
Také některé volby v příkazových řádcích jsou užitečné k zachycení a výpisu více informací
z paketu, a to zejména z paketů ICMPv6: ■-s 512: zvětšení prohlížené délky (snap length) při
prohlížení paketů na 512 bajtů, ■-vv: velmi upovídaný výstup, ■-n: nepřevádět adresy na
jména, používá se, když nepracuje korektně reverzní DNS.
ping IPv6 na skupinu adres 3ffe:ffff:100:f101::1 prostřednictvím lokálního spojení
# tcpdump -t -n -i eth0 -s 512 -vv ip6 or proto ipv6 tcpdump: listening on eth0 3ffe:ffff:100:f101:2e0:18ff:fe90:9205 > 3ffe:ffff:100:f101::1:
icmp6: echo
request (len 64, hlim 64) 3ffe:ffff:100:f101::1 > 3ffe:ffff:100:f101:2e0:18ff:fe90:9205: icmp6: echo
reply (len 64, hlim 64)
ping IPv6 na 3ffe:ffff:100::1 směrovaný přes tunel z IPv6 do IPv4
1.2.3.4 a 5.6.7.8 jsou koncové body tunelů (všechny adresy jsou příklady)
# tcpdump -t -n -i ppp0 -s 512 -vv ip6 or proto ipv6
tcpdump: listening on ppp0
1.2.3.4 > 5.6.7.8: 2002:ffff:f5f8::1 > 3ffe:ffff:100::1: icmp6: echo request (len 64, hlim 64) (DF) (ttl 64, id 0, len 124)
5.6.7.8 > 1.2.3.4: 3ffe:ffff:100::1 > 2002:ffff:f5f8::1: icmp6: echo reply (len 64, hlim 61) (ttl 23, id 29887, len 124)
1.2.3.4 > 5.6.7.8: 2002:ffff:f5f8::1 > 3ffe:ffff:100::1: icmp6: echo request (len 64, hlim 64) (DF) (ttl 64, id 0, len 124)
5.6.7.8 > 1.2.3.4: 3ffe:ffff:100::1 > 2002:ffff:f5f8::1: icmp6: echo reply (len 64, hlim 61) (ttl 23, id 29919, len 124)
Programy s podporou IPv6
Současné distribuce už obsahují klienty a servery s tolik potřebnou aktivovanou podporou IPv6. Viz nejdříve http://
www.bieringer.de/linux/IPv6/status/IPv6+Linux-status-distributions.html. Pokud zde nic nenajdete, zkuste se ještě podívat na
http://www.bieringer.de/linux/IPv6/status/IPv6+Linux -status-apps.html, zda byl program už převeden do tvaru IPv6 pod
Linuxem. Některé rady k nej-častěji používaným programům naleznete i na adresách http://www.bieringer.de/linux/IPv6/IPv6HOWTO/IPv6-HOWTO-3.html a http://www.bieringer.de/linux/IPv6/IPv6-HOWTO/IPv6-HOWTO-4.html.
Klientské programy s podporou IPv6 (výběr)
K provozování následujících testů je nutno mít systém aktivovaný pro IPv6 a některé příklady používají adresy, existuje-li spojení
na 6bone.
Test DNS na rozlišování adres IPv6
Kvůli bezpečnostním aktualizacím v minulých letech by měl být na všech serverech DNS provo-zován novější software, který už
rozumí (přechodnému) adresovému typu AAAA (novější jménem A6 ještě není v tomto okamžiku k dispozici, neboť ten musí mít
podporu BIND9 a novějších a také dosud neexistující podporu kořenové domény IP6.ARPA). Jednoduchý test, zda systém umí
zpra-covávat adresy IPv6, můžeme provést takto:
# host -t AAAA www.join.uni-muenster.de
a mělo by se ukázat něco takového:
www.join.uni-muenster.de. is an alias for tolot.join.uni-muenster.de. tolot.join.uni-muenster.de. has AAAA address
2001:638:500:101:2e0:81ff:fe24:37c6
Klienti telnet s podporou IPv6
K dispozici jsou klienti telnet s podporou IPv6. Jednoduchý test lze provést takto:
$ telnet 3ffe:400:100::1 80 Trying 3ffe:400:100::1... Connected to 3ffe:400:100::1. Escape character is '^]'. HEAD / HTTP/1.0 HTTP/1.1 200 OK
Date: Sun, 16 Dec 2001 16:07:21 GMT Server: Apache/2.0.28 (Unix) Last-Modified: Wed, 01 Aug 2001 21:34:42 GMT ETag: "3f02-a4db1b3e080" Accept-Ranges: bytes Content-Length: 2637 Connection: close Content-Type: text/html; charset=ISO-8859-1 Connection closed by
foreign host.
Jestliže klient telnet nerozumí adrese IPv6 a řekne něco jako „cannot resolve hostname”, IPv6 není aktualizovaná.
Klienti ssh s podporou IPv6
openssh
Stávající verze openssh podporují IPv6. V závislosti na konfiguraci před kompilací existuje ve dvou verzích:
bez implicitní ipv4: klient nejprve zkouší spojení IPv6, a když neuspěje, vrátí se k IPv4.
s implicitní ipv4: implicitní spojení je IPv4, spojení IPv6 musí být nastaveno, viz následují-cí příklad:
$ ssh -6 ::1 user@::1’s password: ****** [user@ipv6host user]$
Když váš klient nerozumí volbě „-6“, nemá aktivovanou podporu IPv6, což platí pro většinu balí-ků SSH ve verzi 1.
ssh.com
Klient a server SSH z ssh.com také umí zpracovávat adresy IPv6 a je zdarma pro všechny systémy Linux a FreeBSD bez ohledu
na soukromé či komerční využití.
Internetové prohlížeče s podporou IPv6
Momentální stav internetových prohlížečů s podporou IPv6 je k dispozici na http://www. bieringer.de/linux/IPv6/status/IPv6
+Linux-status-apps.html#HTTP.
Většina z nich ovšem ještě dosud nemá vyřešené některé problémy:
Při používání proxy serveru, který je nastaven jen na IPv4, nebude tento server rozumět požadavku s IPv6 a odmítne jej.
Řešení: aktualizace softwaru proxy serveru (viz dále).
Automatická nastavení proxy ( *.pac) nelze rozšířit tak, aby zpracovával požadavky IPv6 odlišně (tedy nevyužíval proxy)
kvůli jejich podstatě (jsou napsány v Java skriptu a zdro-jové texty jsou pevně zakódovány podobně jako ve zdrojovém kódu
Maxilla).
Ani starší verze nerozumějí URL se zakódovanou adresou IPv6, jako např. http://[3ffe:400:100::1]/(Toto URL pracuje pouze s
prohlížečem s podporou IPv6!).Kterýkoli prohlížeč můžete otestovat pomocí uvedeného URL bez použití proxy.
Testovací URL
Brouzdání po Internetu s využitím adres IPv6 je vhodné začít na http://www.kame.net/. Pokud je želva na těchto stránkách
animovaná, spojení je uskutečněno prostřednictvím IPv6, jinak se želva nehýbe.
Serverové programy s podporou IPv6
Tato část návodu se týká spíše klientů. Proto jsou informace o serverech s podporou IPv6, např. sshd, httpd, telnetd atd., popsány
v kapitole „Popis démonů s aktivovanými IPv6 “.
Často kladené otázky (Kontrola systému s podporou IPv6) Nástroje
Otázka: Programem ping6 se nemohu dostat na lokální adresy
Chybová zpráva: „connect: Invalid argument“ Jádro neví, jaké fyzické nebo virtuální spojení chcete použít pro odeslání těchto
paketů ICMPv6.Proto se vypíše toto chybové hlášení.
Řešení: Uveďte např. rozhraní:
ping6 -I eth0 fe80::2e0:18ff:fe90:9205
Viz také kapitola „ping IPv6“.
Otázka: Jako normální uživatel se nemohu dostat k programům ping6 a traceroute6
Chybová zpráva: „icmp socket: Operation not permitted“Tyto nástroje vytvářejí speciální pakety ICMPv6 a odesílají je. To se
provádí přímým využitím soketů v jádru. Sokety však může přímo využívat pouze uživatel root. Proto se normálnímu uživateli
vypisuje tato zpráva.
Řešení: Pokud je opravdu nutné, aby směli tyto nástroje používat všichni uživatelé, můžete pomo
cí chmod u+s /path/to/program přidat suid bit, viz kapitola „ping Ipv6“. Není-li to nutné, může-te změnit skupinu programu například
na „wheel“, zařadit do této skupiny ty, kteří mají mít právopoužívat tento program, a ostatním uživatelům pomocí chmod o-rwx /
path/to/program zaká-zat spuštění programu. Anebo zkonfigurujte sudo tak, aby se aktivovala vaše bezpečnostní poli-tika.
Konfigurace síových zařízení
Různá síová zařízení
V daném uzlu existují různá síťová zařízení. Lze je seskupit do tříd:
Připojené fyzicky, např. eth0, tr0.
Existující virtuálně, např. ppp0, tun0, tap0, sit0, isdn0, ippp0.
Fyzicky připojená
Fyzicky připojená rozhraní jako Ethernet nebo Token-Ring jsou normální zařízení a nevyžadují zvláštní zacházení.
Virtuálně připojená
Virtuálně připojená rozhraní potřebují vždy zvláštní podporu.
Tunelová rozhraní IPv6-in-IPv4
Tato rozhraní se obvykle nazývají sitx. Jméno sit je zkratka vzniklá ze slov Simple Internet Tran-sition. Toto zařízení například
umí zapouzdřovat pakety IPv6 do paketů IPv4 a posílat je tunelem do jiného koncového bodu.
Rozhraní sit0 má speciální význam a nelze je používat pro tunely.
Rozhraní PPP
Rozhraní PPP poskytuje podporu IPv6 démon PPP s aktivovanou podporou IPv6.
Rozhraní ISDN HDLC
Podpora IPv6 pro HDLC se zapouzdřeným ip je zabudovaná v jádru.
Rozhraní ISDN PPP
V rozhraních ISDN PPP (ippp) není podpora IPv6 aktivovaná jádrem a ani není známo, že by ji měl někdo v plánu vytvořit, neboť
v jádru 2.5+ budou nahrazeny obecnější vrstvou rozhraní ppp.
SLIP + PLIP
Jak jsme se už zmínili, tato rozhraní nepodporují přenos IPv6 (odesílání je možné, avšak určování příjemce nefunguje).
Ether-tap
Zařízení Ether-tap (zařízení pro monitorování sítě) podporují IPv6 a také jsou bezstavově zkonfi-gurována. Před používáním je
nutno zavést modul ethertap.
Zařízení tun
Dosud jsem netestoval.
ATM
01/2002: Dosud nejsou podporovány jádrem vanilla, zatímco rozšířeními USAGI ano.
Ostatní
Zapomněl jsem na nějaké rozhraní?
Zapínání a vypínání rozhraní
Rozhraní můžeme zapínat a vypínat dvěma způsoby.
Příkaz ip
Použití:
# ip link set dev <interface> up # ip link set dev <interface> down
Příklad:
# ip link set dev eth0 up # ip link set dev eth0 down
Příkaz ifconfig
Použití:
# /sbin/ifconfig <interface> up # /sbin/ifconfig <interface> down
Příklad:
# /sbin/ifconfig eth0 up # /sbin/ifconfig eth0 down
Konfigurace adres IPv6
Adresu IPv6 můžete na rozhraní konfigurovat různými způsoby. Můžete použít příkazy ifconfig nebo ip.
Výpis existujících adres IPv6
Nejdříve byste si měli ověřit, zda a které adresy IPv6 jsou už zkonfigurované (pravděpodobně automaticky v průběhu bezstavové
autokonfigurace).
Příkaz ip
Použití:
# /sbin/ip -6 addr show dev <interface>
Příklad staticky zkonfigurovaného počítače:
# /sbin/ip -6 addr show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP&gt; mtu 1500 qdisc pfifo_ fast qlen 100 inet6 fe80::210:a4ff:fee3:9566/10 scope link inet6
3ffe:ffff:0:f101::1/64 scope global inet6 fec0:0:0:f101::1/64 scope site
Příklad auto-konfigurovaného počítače:
Zde vidíte některé automaticky zkonfigurované adresy IPv6 a jejich životnost.
# /sbin/ip -6 addr show dev eth0
3: eth0: <BROADCAST,MULTICAST,PROMISC,UP&gt; mtu 1500 qdisc pfifo_fast qlen
100 inet6 2002:d950:f5f8:f101:2e0:18ff:fe90:9205/64 scope global dynamic valid_lft 16sec preferred_lft 6sec inet6
3ffe:400:100:f101:2e0:18ff:fe90:9205/64 scope global dynamic valid_lft 2591997sec preferred_lft 604797sec inet6 fe80::2e0:18ff:fe90:9205/10
scope link
Příkaz ifconfig
Použití:
# /sbin/ifconfig <interface>
Příklad (výstup je odfiltrován pomocí programu grep tak, aby vypsal pouze adresu IPv6): Zde vidíte různé adresy IPv6 s různými
poli působnosti.
# /sbin/ifconfig eth0 |grep “inet6 addr:” inet6 addr: fe80::210:a4ff:fee3:9566/10 Scope:Link inet6
addr: 3ffe:ffff:0:f101::1/64 Scope:Global inet6 addr: fec0:0:0:f101::1/64 Scope:Site
Přidání adresy IPv6
Přidání adresy IPv6 je podobné adresovému mechanismu „IP ALIAS“ při adresování rozhraní IPv4.
Příkaz ip
Použití:
# /sbin/ip -6 addr add <ipv6address>/<prefixlength> dev <interface>
Příklad:
# /sbin/ip -6 addr add 3ffe:ffff:0:f101::1/64 dev eth0
Příkaz ifconfig
Použití:
# /sbin/ifconfig <interface> inet6 add <ipv6address>/<prefixlength>
Příklad:
# /sbin/ifconfig eth0 inet6 add 3ffe:ffff:0:f101::1/64
Odstranění adresy IPv6
Nepoužívá se často. Pozor při odstraňování neexistující adresy IPv6, u některých starších jader to vede k havárii systému!
Příkaz ip
Použití:
# /sbin/ip -6 addr del <ipv6address>/<prefixlength> dev <interface>
Příklad:
# /sbin/ip -6 addr del 3ffe:ffff:0:f101::1/64 dev eth0
Příkaz ifconfig
Použití:
# /sbin/ifconfig <interface> inet6 del <ipv6address>/<prefixlength>
Příklad:
# /sbin/ifconfig eth0 inet6 del 3ffe:ffff:0:f101::1/64
Konfigurace normální trasy IPv6
Chcete-li opustit svoje spojení a posílat pakety do světa Internetu IPv6, je nutno provést směro-vání. Pokud už máte na svém
připojení směrovač s aktivovanými adresami IPv6, stačí přidat trasu IPv6.
Výpis existujících tras IPv6
Nejdříve byste si měli ověřit, zda a které adresy IPv6 jsou už zkonfigurované (pravděpodobně automaticky prostou
autokonfigurací).
Příkaz ip
Použití:
# /sbin/ip -6 route show [dev <device>]
Příklad:
# /sbin/ip -6 route show dev eth0 3ffe:ffff:0:f101::/64 proto kernel metric 256 mtu 1500 advmss 1440
fe80::/10 ff00::/8 default
proto kernel metric 256 mtu 1500 advmss 1440 proto kernel metric 256
mtu 1500 advmss 1440 proto kernel metric 256 mtu 1500 advmss 1440
Příkaz route
Použití:
# /sbin/route -A inet6
Příklad (výstup je odfiltrován na rozhraní eth0). Na jednom rozhraní vidíte různé trasy IPV6 pro různé adresy.
# /sbin/route -A inet6 |grep -w "eth0" 3ffe:ffff:0:f101 ::/64 :: UA 256 0 0 eth0 <- Interface
route for global address fe80::/10 :: UA 256 0 0 eth0 <- Interface route for link-local
address ff00::/8 :: UA 256 0 0 eth0 <- Interface route for all multicast addresses ::/0 ::
UDA 256 0 0 eth0 <- Automatic default route
Přidání trasy IPv6 pomocí brány
Většinou potřebné k dosažení vnější sítě s adresou IPv6 pomocí směrovače s aktivací IPv6 na spojení.
Příkaz ip
Použití:
# /sbin/ip -6 route add <ipv6network>/<prefixlength> via <ipv6address> ¬ [dev <device>]
Příklad:
# /sbin/ip -6 route add 2000::/3 via 3ffe:ffff:0:f101::1
Příkaz route
Použití:
# /sbin/route -A inet6 add <ipv6network>/<prefixlength> gw ¬ <ipv6address> [dev <device>]
Zařízení může být potřebné také tehdy, je-li adresa IPv6 brány lokální.
V následujícím příkladu je trasa přidána ke všem globálním adresám (2000::/3) pomocí brány
ffe:ffff:0:f101::1.
# /sbin/route -A inet6 add 2000::/3 gw 3ffe:ffff:0:f101::1
Odstranění trasy IPv6 pomocí brány
Ručně se provádí zřídka, většinou síťovými konfiguračními skripty při vypínání systému (plném nebo po jednotlivých
rozhraních).
Příkaz ip
Použití:
# /sbin/ip -6 route del <ipv6network>/<prefixlength> via <ipv6address> ¬ [dev <device>]
Příklad:
# /sbin/ip -6 route del 2000::/3 via 3ffe:ffff:0:f101::1
Příkaz route
Použití:
# /sbin/route -A inet6 del <network>/<prefixlength> [dev <device>]
Příklad na odstranění shora přidané trasy:
# /sbin/route -A inet6 del 2000::/3 gw 3ffe:ffff:0:f101::1
Přidání trasy IPv6 pomocí rozhraní
Používá se zřídka, většinou jen v případě jednoúčelového dvoubodového spojení.
Příkaz ip
Použití:
# /sbin/ip -6 route add <ipv6network>/<prefixlength> dev <device> ¬ metric 1
Příklad:
# /sbin/ip -6 route add 2000::/3 dev eth0 metric 1
Metrika 1 je zde použita kvůli kompatibilitě s metrikou v trase, neboť implicitní metrika v příkazu ip je 1024.
Příkaz route
Použití:
# /sbin/route -A inet6 add <network>/<prefixlength> dev <device>
Příklad:
# /sbin/route -A inet6 add 2000::/3 dev eth0
Odstranění trasy IPv6 pomocí rozhraní
Ručně se provádí zřídka, většinou síťovými konfiguračními skripty při vypínání systému.
Příkaz ip
Použití:
# /sbin/ip -6 route del <ipv6network>/<prefixlength> dev <device>
Příklad:
# /sbin/ip -6 route del 2000::/3 dev eth0
Příkaz route
Použití:
# /sbin/route -A inet6 del <network>/<prefixlength> dev <device>
Příklad:
# /sbin/route -A inet6 del 2000::/3 dev eth0
Často kladené otázky k trasám IPv6 Podpora implicitní trasy IPv6
Jednou z idejí IPv6 je hierarchické směrování, proto je ve směrovačích nutných méně položek. V současných jádrech Linuxu
jsou určité problémy:
Klienti (kteří nesměrují pakety!)
Klient může nastavit implicitní trasu pomocí prefixu „::/0“, toto směrování mohou zadat i při auto-konfiguraci například pomocí
radvd na spojení, jak je zřejmé z následujícího příkladu:
# ip -6 route show | grep ^default default via fe80::212:34ff:fe12:3450 dev eth0 proto kernel metric 1024
expires 29sec mtu 1500 advmss 1440
Přeposílání paketů směrovači
Současná jádra Linuxu (přinejmenším <= 2.4.17) nepodporují implicitní trasy. Můžete je nastavit, avšak vyhledávání trasy
zhavaruje v okamžiku, kdy by měl být paket přeposlán (což je běžná činnost směrovače).
Z toho důvodu lze v současnosti nastavit implicitní směrování pouze pomocí prefixu globální adresy 2000::/3.
Poznámka
Opatrně při implicitním směrování bez filtrování adresy na krajních směrovačích. Jinak se vícesměrový přenos nebo
přeprava v místní síti dostane ven.
Zjišování sousedů
Zjišťování sousedů je následníkem protokolu ARP (Address Resolution Protocol) v IPv4. Můžete získávat informace o svých
sousedech a navíc můžete tyto položky nastavovat a rušit. Jádro sle-duje úspěšnou detekci souseda (jako ARP v IPv4). Do tabulky
sousedů můžete zasahovat pomo-cí příkazu ip.
Výpis sousedů pomocí ip
Zjištěné a zkonfigurované sousedy IPv6 můžete vypsat následujícím příkazem:
# ip -6 neigh show [dev <device>]
V následujícím příkladu vidíme jednoho souseda, kterým je směrovač v dosahu:
# ip -6 neigh show fe80::201:23ff:fe45:6789 dev eth0 lladdr 00:01:23:45:67:89 router nud reachable
Provádění změn v tabulce sousedů příkazem ip Ruční přidání položky
Následujícím příkazem můžete přidat do tabulky položku:
# ip -6 neigh add <IPv6 address> lladdr <link-layer address> dev <device>
Příklad:
# ip -6 neigh add fec0::1 lladdr 02:01:02:03:04:05 dev eth0
Ruční zrušení položky
Položku lze do tabulky nejen přidat, nýbrž i odstranit:
# ip -6 neigh del <IPv6 address> lladdr <link-layer address> dev <device>
Příklad:
# ip -6 neigh del fec0::1 lladdr 02:01:02:03:04:05 dev eth0
Pokročilejší nastavení
Nástroj ip není příliš dobře zdokumentován, avšak je velmi silný. Podrobnosti viz on-line nápo-věda:
# ip -6 neigh help
Usage: ip neigh { add | del | change | replace } { ADDR [ lladdr LLADDR ]
[ nud { permanent | noarp | stale | reachable } ]
| proxy ADDR } [ dev DEV ]
ip neigh {show|flush} [ to PREFIX ] [ dev DEV ] [ nud STATE ]
Vypadá to, jako by některé volby byly platné jen pro IPv4 ... můžete-li přispět informacemi o vol-bách a pokročilejším použití,
prosím, pošlete je.
Konfigurace tunelů IPv6-in-IPv4
Chcete-li opustit svoje připojení a kolem sebe nemáte síť s podporou IPv6, k dosažení Internetus IPv6 potřebujete tunel typu
IPv6-in-IPv4.Existují určité druhy tunelových mechanismů a také některé možnosti nastavení.
Typy tunelů
Existuje několik možností, jak posílat pakety IPv6 přes připojení IPv4.
Statický dvoubodový tunel: 6bone
Dvoubodový tunel je jednoúčelový tunel do koncového bodu, který ví o síti IPv6 (kvůli zpětné-mu směrování) a zná adresu IPv4
koncového bodu tunelu. Je definován v RFC 2893. Požadavky:
Adresa IPv4 lokálního koncového bodu tunelu musí být statická, globálně jednoznačná a dosažitelná z koncového bodu
cizího tunelu.
Musíte mít přiřazen prefix IPv6 (viz registr 6bone).
Koncový bod cizího tunelu, který je schopen nasměrovat váš prefix IPv6 na váš lokální koncový bod tunelu (většinou
vyžaduje vzdálenou ruční konfiguraci).
Automatické vytváření tunelů
K automatickému vytvoření tunelu dojde, když je některý uzel přímo napojen na jiný uzel, jehož adresu IPv4 získal už dříve.
Vytváření tunelů 6to4
Vytváření tunelů 6to4 (RFC 3056) využívá jednoduchého mechanismu. Každý uzel s globálně jednoznačnou adresou IPv4 může
být koncovým bodem tunelu 6to4 (není-li provoz blokován firewallem). Vytváření tunelů 6to4 většinou není obousměrné. Tento
případ lze rozdělit na tunelování jedním nebo druhým směrem. Speciální adresa IPv6 tedy určuje, že tento uzel bude pro napojení
na globální síť IPv6 využívat tunel 6to4.
Generování prefixu 6to4
Adresa 6to4 je definovaná takto (schéma je převzato z RFC 3056):
| 3+13 | 32 | 16 | 64 bits | +---+------+-----------+--------+--------------------------------+ | FP+TLA | V4ADDR | SLA ID | ID
rozhraní | | 0x2002 | | | | +---+------+-----------+--------+--------------------------------+
FP a TLA mají dohromady (16 bitů) hodnotu 0x2002. V4ADDR je jednoznačná adresa IPv4 uzlu (v hexadecimálním tvaru). SLA
je identifikátor podsítě (může existovat 65 536 podsítí) a lze jej použít pro lokální strukturu sítí.
V případě brány je tento prefix generován pomocí SLA „0000“ a přípony „::1“ (nikoli nutně, stačí, když je lokální) a přiřadí se
rozhraní tunelu 6to4. Poznamenejme, že Microsoft Windows používají V4ADDR také jako příponu.
Tunel 6to4 směrem ven
Uzel musí vědět, kterému koncovému bodu cizího tunelu má poslat pakety IPv6 zabalené do paketů IPv4. V začátcích tunelů 6to4
byly definovány jednoúčelové přijímací směrovače pro ode-sílání ven. Seznam směrovačů viz http://www.kfu.com/~nsayer/6to4/.
Nyní lze odesílací směrovače 6to4 nalézt automaticky pomocí výběrové adresy 192.88.99.1, kterou směrovací protokoly zpracují
na pozadí, podrobnosti viz RFC 3068.
Tunel 6to4 směrem dovnitř
Tunel směrem dovnitř (6bone -> váš uzel aktivovaný pro 6to4) není pevný a může se pro různé cizí počítače lišit v závislosti na
tom, komu byly původní pakety odeslány. Existují dvě možnosti:
Cizí počítač použije 6to4 a pošle paket přímo zpět na váš uzel (viz níže).
Cizí počítač posílá pakety zpět do globální sítě IPv6 a předávací směrovač vytváří automa-tický tunel zpět na váš uzel v
závislosti na dynamickém směrování.
Možnosti provozu 6to4
Z 6to4 do 6to4: normální přímý tunel mezi dvěma počítači s podporou 6to4.
Z 6to4 do non-6to4: posílá se tunelem směrem ven.
Z non-6to4 do 6to4: posílá se tunelem směrem dovnitř.
Výpis existujících tunelů
Příkaz ip
Použití:
# /sbin/ip -6 tunnel show [<device>]
Příklad:
# /sbin/ip -6 tunnel show sit0: ipv6/ip remote any local any ttl 64 nopmtudisc sit1: ipv6/ip remote 195.226.187.50 local any ttl 64
Příkaz route
Použití:
# /sbin/route -A inet6
Příklad (výstup je filtrován tak, aby se vypisovaly pouze tunely vedoucí virtuálním rozhraním sit0):
# /sbin/route -A inet6 | grep "\Wsit0\W*$" ::/96 :: U 256 2 0 sit0 2002::/16 :: UA 256 0 0 sit0
2000::/3 ::193.113.58.75 UG 1 0 0 sit0 fe80::/10 :: UA 256 0 0 sit0 ff00::/8 :: UA 256 0 0
sit0
Nastavení dvoubodových tunelů
Dvoubodové tunely můžeme přidávat nebo rušit třemi různými způsoby.Užitečné doplňující informace o nastavování tunelů
příkazem ip naleznete na adrese
http://www.deepspace6.net/docs/iproute2tunnel-en.html.
Přidání dvoubodového tunelu
Příkaz ip
Metoda používaná pro přidávání malého počtu tunelů.
Použití pro vytvoření tunelového zařízení (které však potom nezůstane zapnuté, a musí být uve
deno také TTL, neboť implicitní hodnota je 0):
# /sbin/ip tunnel add <device> mode sit ttl <ttldefault> remote ¬ <ipv4addressofforeigntunnel> local <ipv4addresslocal>
Použití (obecný příklad pro tři tunely):
# /sbin/ip tunnel add sit1 mode sit ttl <ttldefault> remote ¬ <ipv4addressofforeigntunnel1> local <ipv4addresslocal> # /sbin/ip link set dev sit1 up
# /sbin/ip -6 route add <prefixtoroute1> dev sit1 metric 1 # /sbin/ip tunnel add sit2 mode sit ttl <ttldefault> ¬ <ipv4addressofforeigntunnel2> local
<ipv4addresslocal> # /sbin/ip link set dev sit2 up # /sbin/ip -6 route add <prefixtoroute2> dev sit2 metric 1 # /sbin/ip tunnel add sit3 mode sit ttl
<ttldefault> ¬ <ipv4addressofforeigntunnel3> local <ipv4addresslocal> # /sbin/ip link set dev sit3 up # /sbin/ip -6 route add <prefixtoroute3> dev
sit3 metric 1
Příkazy ifconfig a route (neschválené)
Tento způsob přidávání tunelů nelze příliš doporučit, neboť je poněkud podivný. Přidáváte-li jeden tunel, problém nenastane,
avšak nastavíte-li více než jeden, první nejdou zavřít tak, aby ostatní zůstaly v činnosti.
Použití (obecný příklad pro tři tunely):
# /sbin/ifconfig sit0 up # /sbin/ifconfig sit0 tunnel <ipv4addressofforeigntunnel1> # /sbin/ifconfig sit1 up # /sbin/route -A inet6 add
<prefixtoroute1> dev sit1 # /sbin/ifconfig sit0 tunnel <ipv4addressofforeigntunnel2> # /sbin/ifconfig sit2 up # /sbin/route -A inet6 add
<prefixtoroute2> dev sit2 # /sbin/ifconfig sit0 tunnel <ipv4addressofforeigntunnel3> # /sbin/ifconfig sit3 up # /sbin/route -A inet6 add
<prefixtoroute3> dev sit3
Důležité
Tyto příkazy NEPOUŽÍVEJTE, neboť toto nastavení implicitně aktivuje „automatické tunelování“ odkudkoli z Internetu,
což je neobhajitelné riziko.
Pouze příkaz route
Tunely také můžete nastavit způsobem Non Broadcast Multiple Access (NBMA), což je jednoduchý způsob, jak přidat mnoho
tunelů současně. Žádný z nich však nemůže být číslován (což ovšem není požadovaná vlastnost).
Použití (obecný příklad pro tři tunely):
# /sbin/ifconfig sit0 up # /sbin/route -A inet6 add <prefixtoroute1> gw ¬ ::<ipv4addressofforeigntunnel1> dev sit0 # /sbin/route -A inet6 add
<prefixtoroute2> gw ¬ ::<ipv4addressofforeigntunnel2> dev sit0 # /sbin/route -A inet6 add <prefixtoroute3> gw
¬ ::<ipv4addressofforeigntunnel3> dev sit0
Důležité: Tyto příkazy NEPOUŽÍVEJTE, neboť toto nastavení implicitně aktivuje „automatické tunelování“ odkudkoli z
Internetu, což je neobhajitelné riziko.
Odstraňování dvoubodových tunelů
Manuálně se tento způsob nepoužívá často, avšak používají jej skripty pro čisté ukončení nebo restart konfigurace IPv6.
Příkaz ip
Použití pro odstranění tunelového zařízení:
# /sbin/ip tunnel del <device>
Použití (obecný příklad pro tři tunely):
# /sbin/ip -6 route del <prefixtoroute1> dev sit1 # /sbin/ip link set sit1 down # /sbin/ip tunnel del sit1 # /sbin/ip
-6 route del <prefixtoroute2> dev sit2 # /sbin/ip link set sit2 down # /sbin/ip tunnel del sit2 # /sbin/ip -6 route
del <prefixtoroute3> dev sit3 # /sbin/ip link set sit3 down # /sbin/ip tunnel del sit3
Příkazy ifconfig a route (neschválený, protože jejich použití není žádná legrace)
Nejen že vytváření je podivné, ale podivné je i ukončení ... tunely musíte odstraňovat v obráce-ném pořadí, což znamená, že
posledně vytvořený musí být odstraněn jako první. Použití (obecný příklad pro tři tunely):
# /sbin/route -A inet6 del <prefixtoroute3> dev sit3 # /sbin/ifconfig sit3 down # /sbin/route -A inet6 del <prefixtoroute2> dev sit2 # /sbin/ifconfig
sit2 down # /sbin/route -A inet6 add <prefixtoroute1> dev sit1 # /sbin/ifconfig sit1 down # /sbin/ifconfig sit0 down
Příkaz „route”
Stejně se odstraňují normální trasy IPv6. Použití (obecný příklad
pro tři tunely):
# /sbin/route -A inet6 del <prefixtoroute1> gw ¬ ::<ipv4addressofforeigntunnel1> dev sit0 # /
sbin/route -A inet6 del <prefixtoroute2> gw ¬ ::<ipv4addressofforeigntunnel2> dev sit0 # /sbin/
route -A inet6 del <prefixtoroute3> gw ¬ ::<ipv4addressofforeigntunnel3> dev sit0 # /sbin/
ifconfig sit0 down
Číslované dvoubodové tunely
Někdy potřebujete zkonfigurovat dvoubodové tunely s adresami IPv6 jako v případě IPv4. To je možné pouze s prvním (ifconfig
+route – zamítnutým) a třetím (ip+route) nastavením tunelů. V takových případech můžete k rozhraní tunelu přidat adresy IPv6,
jak je zřejmé z konfigurace rozhraní.
Nastavení tunelů 6to4
Všimněte si, že podpora tunelů 6to4 v jádru vanilla řady 2.2.x chybí (další informace viz kapitola „Jádro a IPv6“). Také si
všimněte, že délka prefixu pro adresu 6to4 je kvůli sítím 16, všechny ostatní počítače aktivované pro 6to4 jsou na téže vrstvě 2.
Přidání tunelu 6to4
Nejprve musíte vypočítat prefix 6to4 z lokálně přiřazené globálně směrovatelné adresy IPv4 (nemá-li váš počítač žádnou globálně
směrovatelnou adresu IPv4, ve zvláštních případech je na hraničních bránách možný NAT):
Předpokládejme, že vaše IPv4 adresa je:
1.2.3.4
vygenerovaný prefix 6to4 bude:
2002:0102:0304::
Lokální brány 6to4 by vždy měly mít (není to však nutné, můžete zvolit libovolnou lokální příponu, bude-li vám to vyhovovat)
přiřazenou příponu „::1“, proto bude vaše lokální adresa 6to4:
2002:0102:0304::1
Pro automatickou generaci můžete použít například:
ipv4=”1.2.3.4”; printf “2002:%02x%02x:%02x%02x::1” `echo $ipv4 | tr “.” “ “`
Nyní tedy existují dva způsoby nastavení tunelů 6to4.
Příkaz ip a jednoúčelové tunelové zařízení
V současné době je to doporučovaný způsob (je nutno specifikovat TTL, protože implicitní hodnota je 0).
Vytvoření nového tunelového zařízení:
# /sbin/ip tunnel add tun6to4 mode sit ttl <ttldefault> remote any local <localipv4address>
Zapojte rozhraní:
# /sbin/ip link set dev tun6to4 up
K rozhraní přidejte lokální adresu 6to4 (Poznámka: Délka prefixu 16 je důležitá!):
# /sbin/ip -6 addr add <local6to4address>/16 dev tun6to4
Ke globální síti IPv6 přidejte pomocí výběrové adresy IPv4 všech směrovačů 6to4 (implicitní) trasu:
# /sbin/ip -6 route add 2000::/3 via ::192.88.99.1 dev tun6to4 metric 1
Bylo oznámeno, že některé verze ip (např. v SuSE Linuxu 9.0) nepodporují adresy IPv6 kompa-tibilní s IPv4 pro brány, v
takovém případě musí být použita odpovídající adresa IPv6:
# /sbin/ip -6 route add 2000::/3 via 2002:c058:6301::1 dev tun6to4 metric 1
Příkazy ifconfig a route a obecné tunelové zařízení „sit0“ (neschváleno)
Toto nyní není schváleno, protože používání obecného tunelu zařízení sit0 neumožňuje filtraci po
jednotlivých zřízeních.
Zapojení obecného tunelového rozhraní sit0:
# /sbin/ifconfig sit0 up
K rozhraní přidejte lokální adresu 6to4:
# /sbin/ifconfig sit0 add <local6to4address>/16
Ke globální síti IPv6 přidejte pomocí výběrové adresy IPv4 na všechna předání 6to4 (implicitní) trasu:
# /sbin/route -A inet6 add 2000::/3 gw ::192.88.99.1 dev sit0
Odstranění tunelu 6to4
Příkaz ip a jednoúčelové tunelové zařízení
Odstranění všech tras pomocí tohoto jednoúčelového tunelového zařízení:
# /sbin/ip -6 route flush dev tun6to4
Zavřete rozhraní:
# /sbin/ip link set dev tun6to4 down
Odstraňte vytvořená tunelová zařízení:
# /sbin/ip tunnel del tun6to4
Příkazy ifconfig a route a obecné tunelové zařízení „sit0“ (neschváleno)
Odstraňte (implicitní) trasu pomocí tunelového rozhraní 6to4:
# /sbin/route -A inet6 del 2000::/3 gw ::192.88.99.1 dev sit0
Odstraňte lokální adresu 6to4 na rozhraní:
# /sbin/ifconfig sit0 del <local6to4address>/16
Vypněte obecné tunelové zařízení (s tím opatrně, možná se ještě používá...)
# /sbin/ifconfig sit0 down
Poznámka
Kapitola o konfiguraci tunelů IPv4-in-IPv6 bude doplněna později. V daném okamžiku se tyto tunely používají spíše v
testovacím prostředí; vypadá to, že v současné době chybí podpora pro Linux (03/2004). Informace mezitím získáte v
RFC 2473.
Nastavení jádra v souborovém systému /proc
Poznámka
Převážná část této kapitoly pochází ze souboru ip-sysctl.txt , který je součástí stávající-ho zdrojového kódu v adresáři
Documentation/networking. Díky Pekku Savolovi za údržbu té části souboru, která se týká IPv6. Text této kapitoly je
víceméně zkopírován z tohoto dokumentu.
Jak zacházet se souborovým systémem /proc Příkazy cat a echo
Nejjednodušší přístup do souborového systému /proc vám umožní příkazy cat a echo, musí však splňovat určité požadavky:
■ Souborový systém /proc musí být aktivován v jádru, tj. při překladu musí být nastaven tento přepínač:
CONFIG_PROC_FS=y
■
Souborový systém /proc je nutno nejdříve připojit, což můžeme otestovat takto:
# mount | grep “type proc” none on /proc type proc (rw)
■
K souborovému systému /proc musíte mít přístupová práva ke čtení, někdy i k zápisu (což obvykle má pouze uživatel
root).
Obvykle se zapisuje pouze do položek v /proc/sys/*, z ostatních je možno jen číst a slouží pouze k získávání informací.
Přečtení hodnoty
Hodnotu položky můžete přečíst pomocí cat:
# cat /proc/sys/net/ipv6/conf/all/forwarding 0
Nastavení hodnoty
Novou hodnotu můžete nastavit (je-li možno do položky zapisovat) pomocí příkazu echo:
# echo “1” >/proc/sys/net/ipv6/conf/all/forwarding
Příkaz sysctl
Program sysctl zajišťuje přístup k přepínačům jádra a patří k moderním nástrojům. Lze jej použít i tehdy, když souborový systém
není připojen. Máte však přístup pouze k /proc/sys/*! Program sysctl je součástí balíku procps (v systému Red Hat Linux).
■ Rozhraní sysctl musí být aktivováno v jádru, tj. při kompilaci musel být zapnut přepínač:
CONFIG_SYSCTL=y
Čtení hodnoty
Nyní můžete přečíst hodnotu:
# sysctl net.ipv6.conf.all.forwarding net.ipv6.conf.all.forwarding = 0
Nastavení hodnoty
Novou hodnotu lze nastavit (je-li možno do položky zapisovat):
# sysctl -w net.ipv6.conf.all.forwarding=1 net.ipv6.conf.all.forwarding = 1
Poznámka: Při nastavování hodnoty nesmí být zleva ani zprava u rovnítka mezery. Je-li na řádku více hodnot, musí být
uzávorkovány jako v následujícím příkazu:
# sysctl -w net.ipv4.ip_local_port_range=”32768 61000” net.ipv4.ip_local_port_range = 32768 61000
Doplnění
Poznámka
V praxi existují i verze, které místo „.“ vypisují „/“.
Podrobnosti viz manuálové stránky sysctl.
Tip
Rychlý přehled o nastavení získáte volbou -a (výpis všech položek) ve spojení s příkazem grep.
Jaké najdete v souborovém systému /proc hodnoty
V souborovém systému /proc jsou hodnoty v několika formátech:
BOOLEAN: „0“ (nepravda) a „1“ (pravda).
INTEGER: Používá se i celočíselná hodnota.
Sofistikovanější řádky s několika hodnotami: Někdy se vypisuje také hlavička, pokud ne, informace o významu
jednotlivých hodnot naleznete ve zdrojovém kódu jádra...
Položky v /proc/sys/net/ipv6/ conf/default/*
Změna implicitního nastavení určitého rozhraní.
conf/all/*
Změna nastavení všech rozhraní.Výjimka: conf/all/forwarding má zde jiný význam.
conf/all/forwarding
■ Typ: BOOLEAN Aktivace globálního přeposílání IPv6 mezi všemi rozhraními. V IPv6 nemůžete řídit přeposílání na
každém rozhraní, řízení přeposílání se musí provádět pomo
cí množiny pravidel síťového filtru IPv6 (řízeného ip6tables) a je nutno specifikovat vstupní a výstupní zařízení (viz kapitola
„Firewally s filtry netfilter6“). Tím se IPv6 liší od IPv4, kde je možno řídit přeposílání po jednotlivých zařízeních (rozhodnutí se
provede na rozhraní, přes něž paket přišel).
Tím se také nastaví všechna rozhraní počítačů/směrovačů na „přeposílání“ na určitou hodnotu.
Podrobnosti viz dále. Tento způsob nazýváme globální přeposílání.
Je-li tato hodnota 0, není aktivováno přeposílání, pakety nikdy neopustí jiné rozhraní, a to ani
fyzické, ani logické (např. tunely).
conf/interface/*
Změna speciálního nastavení po jednotlivých rozhraních.
Funkce určitého nastavení je odlišná v závislosti na tom, zda je aktivováno lokální přeposílání či
nikoli.
accept_ra
Typ: BOOLEAN.
Implicitní nastavení funkce: Aktivovaná, když je lokální přeposílání zablokované, zabloko
vaná, když je lokální přeposílání aktivované. Přijetí oznámení ze směrovače a autokonfigurace tohoto rozhraní se
zaslanými daty.
accept_redirects
Typ: BOOLEAN.
Implicitní nastavení funkce: Aktivovaná, když je lokální přeposílání zablokované, zabloko
vaná, když je lokální přeposílání aktivované. Přijetí přesměrování
zaslané směrovačem Ipv6.
autoconf
Typ: BOOLEAN.
Implicitní hodnota: TRUE.
Konfigurace lokální adresy (viz také kapitola „“) pomocí hardwarové adresy L2. Na rozhraní s fyzickou adresou L2 je
automaticky vygenerovaná adresa, např. fe80::201:23ff:fe45:6789.
dad_transmits
Typ: INTEGER.
Implicitní hodnota: 1. Zaslání počtu zjištěných duplikátních adres.
forwarding
Typ: BOOLEAN.
Implicitní hodnota: FALSE, je-li zablokováno globální přeposílání, jinak TRUE. Konfigurace chování počítače/
směrovače v závislosti na rozhraní.
Poznámka
Je vhodné mít na všech rozhraních stejné nastavení; smíšené scénáře nastavení směrovač/počítač jsou neobvyklé.
■
Hodnota FALSE: Implicitně se předpokládá chování počítače. To znamená:
1.
V oznámení souseda není nastaven příznak IsRouter. Je-li to nutné, posílají se žádosti
o směrovač.
Má-li accept_ra hodnotu TRUE (implicitní nastavení), přijmi oznámení směrovače (a proveď autokonfiguraci).
Má-li accept_redirects hodnotu TRUE (implicitní nastavení), přijmi přesměrování.
■
Hodnota TRUE: Je-li aktivováno lokální přeposílání, předpokládá se chování směrovače. Míní se tím pravý
opak toho, co bylo uvedeno shora:
V oznámení souseda je nastaven příznak IsRouter.
Žádosti o směrovač se neposílají.
Oznámení směrovače jsou ignorována.
Přesměrování jsou ignorována.
hop_limit
Typ: INTEGER.
Implicitní hodnota: 64. Nastavení implicitní hodnoty Hop Limit.
mtu
Typ: INTEGER.
Implicitní hodnota: 1 280 (minimum vyžadované IPv6). Implicitní MTU.
router_solicitation_delay
Typ: INTEGER.
Implicitní hodnota: 1. Délka zpoždění v sekundách poté, co je rozhraní zapojeno před odesláním žádosti o směrovač.
router_solicitation_interval
Typ: INTEGER.
Implicitní hodnota: 4. Délka zpoždění v sekundách mezi dvěma odesláními žádosti o směrovač.
router_solicitations
Typ: INTEGER.
Implicitní hodnota: 3.
Počet žádostí o směrovač, které se pošlou, než se usoudí, že žádné směrovače nejsou přítomny.
neigh/default/*
Změna implicitního nastavení pro detekci sousedů a některé speciální globální intervaly a prahové hodnoty:
gc_thresh1
Typ: INTEGER.
Implicitní hodnota: 128.
gc_thresh2
Typ: INTEGER.
Implicitní hodnota: 512.
gc_thresh3
Typ: INTEGER.
Implicitní hodnota: 1 024. Ladicí parametr pro velikost tabulky sousedů. Máte-li mnoho rozhraní a problémy s počátky
tras, chovají-li se podivně a havarují, tuto hodnotu
zvětšete. Anebo když běžící zebra (směrovací démon, http://www.zebra.org/) ohlásí:
ZEBRA: netlink-listen error: No buffer space available, type=RTM_NEWROUTE(24), seq=426, pid=0
gc_interval
Typ: INTEGER.
Implicitní hodnota: 30.
neigh/interface/*
Změna speciálního nastavení jednotlivých rozhraní kvůli detekci sousedů.
anycast_delay
Typ: INTEGER.
Implicitní hodnota: 100.
gc_stale_time
Typ: INTEGER.
Implicitní hodnota: 60.
proxy_qlen
Typ: INTEGER.
Implicitní hodnota: 64.
unres_qlen
Typ: INTEGER.
Implicitní hodnota: 3.
app_solicit
Typ: INTEGER.
Implicitní hodnota: 0.
locktime
Typ: INTEGER.
Implicitní hodnota: 0.
retrans_time
Typ: INTEGER.
Implicitní hodnota: 100.
base_reachable_time
Typ: INTEGER.
Implicitní hodnota: 30.
mcast_solicit
Typ: INTEGER.
Implicitní hodnota: 3.
ucast_solicit
Typ: INTEGER.
Implicitní hodnota: 3.
delay_first_probe_time
Typ: INTEGER.
Implicitní hodnota: 5.
proxy_delay
Typ: INTEGER.
Implicitní hodnota: 80.
route/*
Mění globální nastavení routování.
flush
Odstraněno v novějších jádrech.
gc_interval
Typ: INTEGER.
Implicitní hodnota: 30.
gc_thresh
Typ: INTEGER.
Implicitní hodnota: 1 024.
mtu_expires
Typ: INTEGER.
Implicitní hodnota: 600.
gc_elasticity
Typ: INTEGER.
Implicitní hodnota: 0.
gc_min_interval
Typ: INTEGER.
Implicitní hodnota: 5.
gc_timeout
Typ: INTEGER.
Implicitní hodnota: 60.
min_adv_mss
Typ: INTEGER.
Implicitní hodnota: 12.
max_size
Typ: INTEGER.
Implicitní hodnota: 4 096.
Položky IPv6 v /proc/sys/net/ipv4/
V tomto okamžiku (a bude tomu tak, dokud nebude IPv4 kompletně převeden do nezávislého modulu jádra) se pro IPv6 také
používají některé přepínače.
ip_*
ip_local_port_range
Toto řídicí nastavení používá i IPv6.
tcp_*
Tato řídicí nastavení používá i IPv6.
icmp_*
Tato řídicí nastavení IPv6 nepoužívá. K aktivaci omezení rychlosti ICMPv6 (které lze velmi doporučit kvůli schopnosti čelit
útokům ICMPv6) je nutno respektovat pravidla netfilter-v6.
Ostatní
V souvislosti s IPv6 nejsou známy.
Položky IPv6 v /proc/net/
V /proc/net existuje několik položek, které můžete pouze číst. Informace z nich nelze přečíst příkazem sysctl, musíte použít cat.
if_inet6
■ Typ: Každé adrese odpovídá jeden řádek s několika hodnotami. Zde jsou uloženy všechny zkonfigurované adresy ve
zvláštním tvaru. V příkladu je uvedeno pouze
rozhraní loopback. Význam je popsán v dalším textu (další informace viz zdrojový kód jádra, sou-bor net/ipv6/addrconf.c ).
# cat /proc/net/if_inet6 00000000000000000000000000000001 01 80 10 80 lo
+------------------------------+ ++ ++ ++ ++ ++ | | | | | |
2 3 4 5 6
Adresa IPv6 má 32 hexadecimálních znaků bez dvojteček.
Číslo síťového zařízení (index rozhraní) je v hexadecimálním tvaru (viz také „ip addr“).
Délka prefixu hexadecimálně.
Hodnota rozsahu platnosti (další viz include/net/ipv6.h a net/ipv6/addrconf.c ve zdrojovém kódu jádra).
5. Příznaky rozhraní (další viz include/linux/rtnetlink.h a net/ipv6/addrconf.c).
6. Jméno zařízení.
ipv6_route
■ Typ: Každé trase odpovídá jeden řádek s několika hodnotami.
Zde jsou uloženy všechny trasy IPv6 ve zvláštním tvaru. V příkladu je uvedeno pouze roz-hraní loopback. Význam je
popsán v dalším textu (další informace viz net/ipv6/route.c ). # cat /proc/net/ipv6_route 00000000000000000000000000000000 00
00000000000000000000000000000000 00 +------------------------------+ ++ +------------------------------+ ++ | | | | 1 2 3 4 ¬
00000000000000000000000000000000 ffffffff 00000001 00000001 00200200 lo ¬ +------------------------------+ +------+ +------+ +------+
+------+ ++ ¬ | | | | | | ¬ 5 6 7 8 9 10
Cílová síť IPv6 má 32 hexadecimálních znaků bez dvojteček.
Délka cílového prefixu IPv6 hexadecimálně.
Zdrojová síť IPv6 má 32 hexadecimálních znaků bez dvojteček.
Délka zdrojového prefixu IPv6 hexadecimálně.
Další směrovač IPv6, 32 hexadecimálních znaků bez dvojteček.
Metrika hexadecimálně.
Referenční čítač.
Uživatelský čítač.
Příznaky.
Jméno zařízení.
sockstat6
■ Typ: Každému protokolu odpovídá jeden řádek s popisem a s hodnotou. Statistiky použitých soketů IPv6.
Příklad:
# cat /proc/net/sockstat6 TCP6: inuse 7 UDP6: inuse 2 RAW6: inuse 1 FRAG6: inuse 0 memory 0
snmp6
■ Typ: Každému popisu SNMP a hodnotě odpovídá jeden řádek. Statistiky SNMP, lze je získat softwarem pro správu sítí ze
serveru SNMP a příslušné tabulky MIB.
ip6_tables_names
Tabulky netfilter6, které jsou k dispozici.
Ladění v síti
Připojování serverových soketů.
Kontrola připojení serverových soketů příkazem netstat
Vědět, který serverový soket je aktivní na uzlu, je vždy zajímavé. Jednoduše můžete získat tyto
informace pomocí příkazu netstat.Volby: -nlptuPříklad:
# netstat -nlptu
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address PID/Program name
tcp 0 0 0.0.0.0:32768
¬ 1258/rpc.statd
tcp 0 0 0.0.0.0:32769
¬ 1502/rpc.mountd
tcp 0 0 0.0.0.0:515
¬ 22433/lpd Waiting
tcp 0 0 1.2.3.1:139
¬ 1746/smbd
tcp 0 0 0.0.0.0:111
¬ 1230/portmap
tcp 0 0 0.0.0.0:6000
¬ 3551/X
tcp 0 0 1.2.3.1:8081
¬ 18735/junkbuster
tcp 0 0 1.2.3.1:3128
¬ 18822/(squid)
tcp 0 0 127.0.0.1:953
¬ 30734/named
tcp 0 0 ::ffff:1.2.3.1:993
¬ 6742/xinetd-ipv6
tcp 0 0 :::13
¬ 6742/xinetd-ipv6
tcp 0 0 ::ffff:1.2.3.1:143
¬ 6742/xinetd-ipv6
tcp 0 ¬ 30734/named tcp 0 ¬ 1410/sshd tcp 0 ¬ 13237/sshd udp 0 ¬ 1258/rpc.statd
udp
¬
udp
0
0
ャ 1502/rpc.mountd udp 0 ャ -udp 0 ャ 1751/nmbd udp 0 ャ 1751/nmbd udp 0
0 :::53 0 :::22 0 :::6010 0 0.0.0.0:32768 0 0.0.0.0:2049 0 0.0.0.0:32770 0 0.0.0.0:32771
0 1.2.3.1:137
0 0.0.0.0:137
0 1.2.3.1:138
Foreign Address
0.0.0.0:*
0.0.0.0:*
0.0.0.0:*
0.0.0.0:*
State
LISTEN
LISTEN
LISTEN
LISTEN
0.0.0.0:*
0.0.0.0:*
0.0.0.0:*
0.0.0.0:*
0.0.0.0:*
:::*
:::*
:::*
:::*
:::*
:::*
0.0.0.0:*
0.0.0.0:*
0.0.0.0:*
0.0.0.0:*
0.0.0.0:*
0.0.0.0:*
0.0.0.0:*
LISTEN
LISTEN
LISTEN
LISTEN
LISTEN
LISTEN
LISTEN
LISTEN
LISTEN
LISTEN
LISTEN
¬ 1751/nmbd
udp 0
¬ 1751/nmbd
udp 0
¬ 30734/named
udp 0
¬ 30734/named
udp 0
¬ 30734/named
udp 0
¬ 1530/dhcpd
udp 0
¬ 1530/dhcpd
udp 0
¬ 18822/(squid)
udp 0
¬ 18822/(squid)
udp 0
¬ 1230/portmap
udp 0
¬ 30734/named
0 0.0.0.0:138
0.0.0.0:*
0 0.0.0.0:33044
0.0.0.0:*
0 1.2.3.1:53
0.0.0.0:*
0 127.0.0.1:53
0.0.0.0:*
0 0.0.0.0:67
0.0.0.0:*
0 0.0.0.0:67
0.0.0.0:*
0 0.0.0.0:32858
0.0.0.0:*
0 0.0.0.0:4827
0.0.0.0:*
0 0.0.0.0:111
0.0.0.0:*
0 :::53
:::*
Příklady výpisů paketů příkazem tcdump
Uvádíme několik příkladů zachycených paketů, které se mohou hodit k ladění...
Zjištění směrovače
Oznámení směrovače
15:43:49.484751 fe80::212:34ff:fe12:3450 > ff02::1: icmp6: router ¬ advertisement(chlim=64, router_ltime=30, reachable_time=0, ¬
retrans_time =0)(prefix info: AR valid_ltime=30, preffered_ltime=20, ¬ prefix=2002:0102:0304:1::/64)(prefix info: LAR valid_ltime=2592000, ¬
preffered_ltime=604800, prefix=3ffe:ffff:0:1::/64)(src lladdr: ¬ 0:12:34:12:34:50) (len 88, hlim 255)
Směrovač s lokální adresou „fe80::212:34ff:fe12:3450“ zašle oznámení vícesměrovou adresou všem uzlům. Adresa „ff02::1“
obsahuje dva prefixy „2002:0102:0304:1::/64“ (doba životnosti 30 s) a „3ffe:ffff:0:1::/64“ (doba životnosti 2 592 000 s) včetně
své fyzické adresy „0:12:34:12:34:50“.
Vyžádání směrovače
15:44:21.152646 fe80::212:34ff:fe12:3456 > ff02::2: icmp6: router solicitation ¬ (src lladdr: 0:12:34:12:34:56) (len 16, hlim 255)
Uzel s lokální adresou „fe80::212:34ff:fe12:3456“ a fyzickou adresou „0:12:34:12:34:56“ hledá na připojení směrovač, proto
posílá tuto žádost všem směrovačům na připojení vícesměrovou adresou „ff02::2“.
Zjišování sousedů
Žádost o zjištění sousedů z důvodu detekce duplicitní adresy
Následující pakety jsou odeslány uzlem s fyzickou adresou „0:12:34:12:34:56“ v průběhu autokonfigurace, aby se ověřilo, zda
potenciální adresu nepoužívá jiný uzel na spojení. Pakety jsou odeslány na vícesměrovou lokální adresu zkoumaných uzlů.
■ Uzel, který chce zkonfigurovat svoji lokální adresu „fe80::212:34ff:fe12:3456“, si ověří možnou duplicitu.
15:44:17.712338 :: > ff02::1:ff12:3456: icmp6: neighbor sol: who has ¬ fe80::212:34ff:fe12:3456(src lladdr: 0:12:34:12:34:56) (len 32,
hlim 255)
■
Uzel, který chce zkonfigurovat svoji globální adresu „2002:0102:0304:1:212:34ff:fe12:3456“ (poté co obdržel oznámení
shora), si ověří možnou duplicitu.
15:44:21.905596 :: > ff02::1:ff12:3456: icmp6: neighbor sol: who has ¬ 2002:0102:0304:1:212:34ff:fe12:3456(src lladdr:
0:12:34:12:34:56) (len 32, ¬ hlim 255)
■
Uzel, který chce zkonfigurovat svoji globální adresu „3ffe:ffff:0:1:212:34ff:fe12:3456“ (poté co obdržel oznámení shora),
si ověří možnou duplicitu.
15:44:22.304028 :: > ff02::1:ff12:3456: icmp6: neighbor sol: who has ¬ 3ffe:ffff:0:1:212:34ff:fe12:3456(src lladdr: 0:12:34:12:34:56)
(len 32, hlim ¬ 255)
Zjišování sousedů kvůli hledání počítače nebo brány
■
Uzel chce poslat pakety na „3ffe:ffff:0:1::10“, avšak nemá fyzickou adresu, aby mohl posílat pakety, takže nejdříve pošle
žádost.
13:07:47.664538 2002:0102:0304:1:2e0:18ff:fe90:9205 > ff02::1:ff00:10: icmp6: ¬ neighbor sol: who has 3ffe:ffff:0:1::10(src lladdr:
0:e0:18:90:92:5) (len 32, ¬ hlim 255)
■
Uzel teď hledá „fe80::10“.
13:11:20.870070 fe80::2e0:18ff:fe90:9205 > ff02::1:ff00:10: icmp6: neighbor ¬ sol: who has fe80::10(src lladdr: 0:e0:18:90:92:5) (len
32, hlim 255)
Podpora stálé konfigurace IPv6 v linuxových
distribucích
Některé linuxové distribuce už obsahují podporu stálé konfigurace IPv6 pomocí stávající nebo nové konfigurace a skriptů a
pomocí úprav ve skriptech IPv4.
Red Hat Linux a „klony“
Od okamžiku, kdy jsem začal psát tento návod, bylo mým úmyslem dát k dispozici stálou konfi-guraci IPv6, která by pokrývala
většinu požadovaných případů, jako je samostatný počítač, samo-statný směrovač, počítač připojený ke dvěma sítím, směrovač s
druhou sítí, normální tunely, tune-ly 6to4 atd. Nyní existuje množina konfigurací a skriptů, které tyto požadavky splňují (nikdy
jsem v této souvislosti neslyšel o vážných problémech, ale nevím, kolik uživatelů je využívá). Vzhledem k tomu, že tyto
konfigurace a skripty jsou průběžně doplňovány, mají svoji domovskou stránku: http://www.deepspace6.net/projects/initscriptsipv6.html. Vzhledem k tomu, že jsem svoje zkuše-nosti začal sbírat v klonu systému Red Hat Linux 5.0, moje vývojové systémy
IPv6 jsou převážně založeny na systému Red Hat Linux a je vcelku logické, že skripty byly vyvinuty pro tuto distri-buci (tzv.
historické vydání). Také bylo velmi jednoduché některé konfigurační soubory rozšířit, vytvořit nové anebo upravit nastavení IPv4
na IPv6.
Šťastnou náhodou se některé moje skripty dostaly do distribuce Red Hat Linux 7.1, což je zásluha Pekky Savoly.
Mandrake od verze 8.0 také obsahuje balík skriptů s podporou IPv6, avšak jejich využívání brání drobná chyba (ifconfig nemá
inet6 před add).
Test, zda síové konfigurační skripty podporují IPv6
Pomocí mé množiny si můžete otestovat, jestli vaše linuxová distribuce obsahuje podporu trvalé konfigurace IPv6. V distribuci by
měla být tato knihovna skriptů:
/etc/sysconfig/network-scripts/network-functions-ipv6
Automatický test:
# test -f /etc/sysconfig/network-scripts/network-functions-ipv6 && echo ¬”Hlavní knihovna skriptů IPv6 existuje”
Pokud některé funkce chybějí, je důležité znát verzi knihovny. Můžete ji zjistit pomocí následujícího příkazu (anebo snadněji,
když se podíváte na začátek souboru):
# source /etc/sysconfig/network-scripts/network-functions-ipv6 && ¬ getversion_ipv6_functions 20011124
V uvedeném příkladu je použita verze 20011124. Porovnejte ji s nejnovější verzí uvedenou na http://www.deepspace6.net/
projects/initscripts-ipv6.html, abyste zjistili, co se změnilo. Také zde naleznete údaj o datu změny.
Krátký tip, jak aktivovat IPv6 na stávajícím RHL 7.1, 7.2, 7.3, ...
■ Ověřte si, zda má systém zavedené moduly IPv6
# modprobe -c | grep net-pf-10 alias net-pf-10 off
■
Je-li výsledkem „off“, aktivujte podporu sítí IPv6 tak, že do souboru /etc/sysconfig/net-work přidáte následující nový řádek:
NETWORKING_IPV6=yes
■
Podporu sítí znovu zaveďte nebo restartujte pomocí:
# service network restart
■
Nyní by měly být moduly IPv6 zavedeny:
# modprobe -c | grep ipv6 alias net-pf-10 ipv6
Je-li váš systém na spojení, které zajišťuje ohlašování směrovačů, autokonfigurace se provede auto-maticky. Další informace o
tom, které nastavení je podporováno, naleznete v souboru /usr/share/doc/initscripts-$verze/sysconfig.txt .
SuSE Linux
Ve verzích novějších než 7.x je skutečně jen základní podpora, podrobnosti viz /etc/rc.config. Vzhledem k velkým rozdílům v
konfiguracích a ve struktuře skriptů je velmi obtížné (ne-li nemož-né) používat nástroje Red Hat Linuxu a klonů v této distribuci.
Ve verzi 8.x byl dokonce zcela změněn způsob konfigurace.
SuSE Linux 7.3
■ http://www.feyrer.de/IPv6/SuSE73-IPv6+6to4-setup.html
SuSE Linux 8.0
Konfigurace adres IPv6
Do souboru /etc/sysconfig/network/ifcfg-<jméno-rozhraní> nastavte hodnotu IP6ADDR=”<adresa-ipv6>/<prefix>”
Doplňující informace
Viz soubor /usr/share/doc/packages/sysconfig/README .
SuSE Linux 8.1
Konfigurace adres IPv6
Do souboru /etc/sysconfig/network/ifcfg-<jméno-rozhraní> nastavte hodnotu IPADDR=”< adresa-ipv6>/<prefix>”
Doplňující informace
Viz soubor /usr/share/doc/packages/sysconfig/Network .
Debian Linux
Následující informace poskytl Stephane Bortzmeyer <[email protected]>.
1. Přesvědčte se, zda je zaveden modul pro IPv6. Buď musel být přeložen společně s jádrem nebo musel být zaveden jako
samostatný modul anebo přinejmenším bylo zavedení vyře-šeno jedním ze tří následujících způsobů: Modul byl přidán do
/etc/modules, bylo pro-vedeno „předzavedení“ (trik, který bude vysvětlen později) anebo byl zaveden pomocí kmod
(uvádíme bez dalších podrobností).
2. Zkonfigurujte rozhraní. Předpokládejme eth0 a adresu
(3ffe:ffff:1234:5::1:1). Soubor /etc/network/interfaces upravte takto:
iface eth0 inet6 static pre-up modprobe ipv6 address 3ffe:ffff:1234:5::1:1 # To
suppress completely autoconfiguration: # up echo 0 > /proc/sys/net/ipv6/conf/
all/autoconf netmask 64 # The router is autoconfigured and has no fixed
address. # It is magically
# found. (/proc/sys/net/ipv6/conf/all/accept_ra). Otherwise: #gateway 3ffe:ffff:1234:5::1
Nyní buď znovu zaveďte systém, nebo zadejte příkaz:
# ifup --force eth0
a získáte svoji statickou adresu.
Další informace
http://people.debian.org/~csmall/ipv6/, napsal Craig Small.
Jean-Marc V. Liotier: http://www.ruwenzori.net/ipv6/Jims_LAN_IPv6_global_ connectivity_howto.html (oznámeno 24.
12. 2002 v IPv6 konferenci účastníkem s adresou <[email protected]>).
Autokonfigurace a mobilita
Bezstavová autokonfigurace
Poté co je rozhraní aktivované pro IPv6 připojeno, je podporováno a viditelné na přiřazené lokál
ní adrese.
Příklad:
# ip -6 addr show dev eth0 scope link
2: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qlen1000
inet6
fe80::211:d8ff:fe6b:f0f5/64
valid_lft
forever
scope
preferred_lft
link
forever
Stavová autokonfigurace pomocí démona pro oznamování směrovače (radvd)
Viz Autokonfigurace démona radvd v dalším textu.
Protokol DHCPv6
Po dlouhých diskusích byl konečně dokončen protokol RFC 3315 (Dynamic Host Configuration Protocol for IPv6, DHCPv6). V
době aktualizace této části (10/2005) byly k dispozici dvě implementace:
Dibbler (http://klub.com.pl/dhcpv6/) od Tomasze Mrugalského <[email protected] dot pl>.
DHCPv6 on Sourceforge (http://dhcpv6.sourceforge.net/).
Mobilita
Momentálně jsou podrobnosti v http://www.mipl.mediapoli.com/. Další informace lze nalézt zde (prosím, ohlaste nefunkční
odkazy):
http://www.ietf.org/internet-drafts/,
http://www.cs-ipv6.lancs.ac.uk/ipv6/MobileIP/,
http://gsyc.escet.urjc.es/Mobiquo/Mind/documentacion/MontajeMaquetaIPv6_en/Montaje-MaquetaIPv6_en.html,
http://www.piuha.net/~jarkko/publications/mipv6/MIPv6-Issues.html.
Firewally
Firewally IPv6 jsou důležité, zejména když se používá IPv6 na interních sítích s globálními adre-sami IPv6. Protože na rozdíl od
IPv4, kde v běžných interních počítačích jsou globální adresy auto-maticky chráněny pomocí privátních adres IPv4, např. RFC
1918 nebo APIPA (Automatic Private IP Addressing, http://www.google.com/search?q=apipa+microsoft), v případě IPv6 se
globální adre-sy obvykle používají a někdo s konektivitou IPv6 může obsáhnout všechny interní uzly s podpo-rou IPv6.
Firewally s filtry netfilter6
Vlastní firewally IPv6 jsou podporovány v jádru verze 2.4+. Ve starších jádrech 2.2- můžete používat pouze filtry IPv6-in-IPv4
podle protokolu 41.
Upozornění: Neexistuje záruka, že popsaná pravidla nebo příklady mohou skutečně ochránitsystém.
Podrobnosti o auditu pravidel po instalaci viz kapitola „Bezpečnostní audit IPv6“.Také poznamenejme, že projekt USAGI je v
současné době před dokončením spojení pro IPv6!Díky tomu bude množina pravidel do budoucnosti jednodušší a bezpečnější.
Další informace
http://www.netfilter.org/,
https://lists.netfilter.org/mailman/listinfo/netfilter,
https://lists.netfilter.org/mailman/listinfo/netfilter-devel,
http://www.bieringer.de/linux/IPv6/status/IPv6+Linux-status-kernel.html#netfilter6.
Příprava
Získání zdrojů
Obstarejte si nejnovější zdrojový kód jádra: http://www.kernel.org/. Obstarejte si nejnovější balík
iptables:
Zdrojový archív v taru (záplaty jádra): http://www.netfilter.org/.
Zdrojový balíček RPM pro vytvoření binárních souborů (systém RedHat): ftp://ftp. redhat.com/redhat/linux/rawhide/
SRPMS/SRPMS/ nebo možná také na http://www.-netcore.fi/pekkas/linux/ipv6/.
Rozbalení zdrojů
Přejděte do zdrojového adresáře:
# cd /path/to/src
Rozbalte a přejmenujte zdroje jádra:
# tar zxf kernel-version.tar.gz # mv linux linux-version-iptables-version+IPv6
Rozbalte zdroje iptables:
# tar zxf iptables-version.tar.gz
Aplikujte nejnovější záplaty iptables/IPv6 na zdroj jádra
Přejděte do zdrojového adresáře:
# cd iptables-version
Aplikujte stávající záplaty:
# make pending-patches KERNEL_DIR=/path/to/src/linux-version-iptables-version/
Aplikujte dodatečné záplaty IPv6 (prozatím nejsou součástí vanilla jádra):
# make patch-o-matic KERNEL_DIR=/path/to/src/linux-version-iptables-version/
Potvrďte následující volby (iptables-1.2.2):
ah-esp.patch,
masq-dynaddr.patch (pouze pro systémy s dynamickou IP adresou přiřazenou spojení WAN, např. PPP nebo PPPoE),
ipv6-agr.patch.ipv6,
ipv6-ports.patch.ipv6,
LOG.patch.ipv6,
REJECT.patch.ipv6.
Ověřte rozšíření IPv6:
# make print-extensions Extensions found: IPv6:owner IPv6:limit IPv6:mac IPv6:multiport
Konfigurace, vytvoření a instalace nového jádra
Přejděte do zdrojového adresáře:
# cd /path/to/src/linux-version-iptables-version/
Upravte Makefile:
-EXTRAVERSION =
+ EXTRAVERSION = -iptables-version+IPv6-try
Spusťte konfiguraci, aktivujte IPv6:
Code maturity level options Prompt for development and/or incomplete code/drivers:yes
Networking options
Network packet filtering: yes
The IPv6 protocol: module
IPv6: Netfilter Configuration IP6 tables support: module All new options like following:
limit match support: module MAC address match support: module Multiple port
match support: module Owner match support: module netfilter MARK match
support: module Aggregated address check: module Packet filtering: module
REJECT target support: module
LOG target support: module Packet mangling: module MARK target support: module
Zkonfigurujte zbytek systému.
Kompilace a instalace: viz část o jádru v tomto návodu a také v jiných návodech
Vytvoření a instalace binárního tvaru iptables
Přesvědčte se, že je dostupná i horní část stromu zdrojového kódu jádra na /usr/src/linux/ . Přejmenujte starší adresář:
# mv /usr/src/linux /usr/src/linux.old
Vytvořte nový odkaz na software:
# ln -s /path/to/src/linux-version-iptables-version /usr/src/linux
Vytvořte nový SRPMS:
# rpm --rebuild /path/to/SRPMS/iptables-version-release.src.rpm
Nainstalujte nové balíky iptables (iptables + iptables-ipv6):
■ V systémech RH 7.1 je obvykle už nainstalována starší verze, použijte proto parametr pro „freshen“ (aktualizaci).
# rpm -Fhv /path/to/RPMS/cpu/iptables*-version-release.cpu.rpm
■
Není-li už nainstalován, zadejte „install“:
# rpm -ihv /path/to/RPMS/cpu/iptables*-version-release.cpu.rpm
■
V systémech RH 6.2 obvykle není nainstalováno jádro 2.4.x, proto požadavky nevyhovují. Nainstalujte je pomocí -nodeps.
# rpm -ihv --nodeps /path/to/RPMS/cpu/iptables*-version-release.cpu.rpm
Pravděpodobně je nutné vytvořit odkaz na knihovny iptables, kde je iptables hledá:
# ln -s /lib/iptables/ /usr/lib/iptables
Použití Kontrola podpory
Zaveďte modul, je-li zkompilován:
# modprobe ip6_tables
Zkontrolujte podporu:
# [ ! -f /proc/net/ip6_tables_names ] && echo “Current kernel doesn’t support ¬ ‘ip6tables’ firewalling (IPv6)!”
Naučte se používat ip6tables
Vypište si všechny položky síových filtrů IPv6
■
Krátce:
# ip6tables -L
■
Podrobně:
# ip6tables -n -v --line-numbers -L
Výpis určitého filtru
# ip6tables -n -v --line-numbers -L INPUT
Do vstupního filtru vložte logovací pravidla s volbami
# ip6tables --table filter --append INPUT -j LOG --log-prefix “INPUT:” ¬ --log-level 7
Do vstupního filtru vložte pravidla pro odmítání
# ip6tables --table filter --append INPUT -j DROP
Zrušte pravidlo dle čísla
# ip6tables --table filter --delete INPUT 1
Povolte ICMPv6
Se starším jádrem (jádro bez záplat 2.4.5 a iptables-1.2.2) nelze specifikovat typ.
■ Akceptujte příchozí ICMPv6 prostřednictvím tunelů:
# ip6tables -A INPUT -i sit+ -p icmpv6 -j ACCEPT
■
Povolte odchozí ICMPv6 prostřednictvím tunelů:
# ip6tables -A OUTPUT -o sit+ -p icmpv6 -j ACCEPT
Novější jádra umožňují specifikaci typů ICMPv6:
# ip6tables -A INPUT -p icmpv6 --icmpv6-type echo-request -j ACCEPT
Omezování rychlosti
Může se stát (autor to už viděl dvakrát), že dojde k útoku ICMPv6. Z toho důvodu byste měli pou-žívat dostupné omezování
rychlosti alespoň na úrovni množiny pravidel ICMPv6. Navíc by měla být omezena i pravidla pro přihlašování, abyste zabránili
útokům DoS na logy systému a ukládá-ní oblastí s logovacím souborem. Příklad omezení rychlosti ICMPv6 vypadá takto:
# ip6tables -A INPUT --protocol icmpv6 --icmpv6-type echo-request ¬ -j ACCEPT --match limit --limit 30/minute
Povolení příchozího SSH
Množina pravidel v uvedeném příkladu umožňuje příchozí spojení SSH z určité adresy IPv6.
■ Povolení příchozího SSH z 3ffe:ffff:100::1/128:
# ip6tables -A INPUT -i sit+ -p tcp -s 3ffe:ffff:100::1/128 --sport 512:65535 ¬ --dport 22 -j ACCEPT
■
Povolení odpovědních paketů (v současné době není sledování spojení IPv6 v hlavní části netfilter6 implementováno):
# ip6tables -A OUTPUT -o sit+ -p tcp -d 3ffe:ffff:100::1/128 --dport 512:65535 ¬ --sport 22 ! --syn -j ACCEPT
Aktivace tunelu IPv6-in-IPv4
Abyste mohli přijímat pakety z tunelu IPv6-in-IPv4, musíte do nastavení firewallu vložit pravidla, která se vztahují k těmto
paketům, například:
Přijímej příchozí IPv6-in-IPv4 na rozhraní ppp0:
Povol odchozí IPv6-in-IPv4 na rozhraní ppp0:
# iptables -A INPUT -i ppp0 -p ipv6 -j ACCEPT
# iptables -A OUTPUT -o ppp0 -p ipv6 -j ACCEPT
Máte-li pouze statický tunel, můžete také specifikovat adresu IPv4, např.:
Přijímej příchozí IPv6-in-IPv4 na rozhraní ppp0 z koncového bodu tunelu 1.2.3.4:
Povol odchozí IPv6-in-IPv4 na rozhraní ppp0 na koncovém bodu tunelu 1.2.3.4:
# iptables -A INPUT -i ppp0 -p ipv6 -s 1.2.3.4 -j ACCEPT
# iptables -A OUTPUT -o ppp0 -p ipv6 -d 1.2.3.4 -j ACCEPT
Ochrana proti příchozím požadavkům na spojení TCP
VELMI DOPORUČUJEME! Z důvodu bezpečnosti byste skutečně měli vložit pravidlo, které bloku-je příchozí požadavky na
spojení TCP. Jsou-li ostatní jména rozhraní použita, zadejte volbu -i.
■ Blokování příchozích požadavků na spojení TCP na tomto počítači:
# ip6tables -I INPUT -i sit+ -p tcp --syn -j DROP
■ Blokování příchozích požadavků na spojení TCP na počítačích za tímto směrovačem
# ip6tables -I FORWARD -i sit+ -p tcp --syn -j DROP
Pravidla musí pravděpodobně být umístěna za ostatními, avšak to je práce, kterou byste si měli dobře promyslet. Nejlepší je
vytvořit skript a pravidla provádět uvedeným způsobem.
Ochrana proti příchozím požadavkům na spojení UDP
TAKÉ DOPORUČUJEME! Jak už jsem se zmínil v popisu firewallu, je možné řídit porty na odcho-zích sezeních UDP/TCP.
Pokud tedy všechny lokální systémy IPv6 používají lokální porty napří-klad v rozmezí od 32 768 do 60 999, jste schopni filtrovat
také spojení UDP (dokud funguje sle-dování spojení), například:
■ Blokování příchozích paketů UDP, které nemohou být odpověďmi na odchozí požadavky tohoto počítače:
# ip6tables -I INPUT -i sit+ -p udp ! --dport 32768:60999 -j DROP
■
Blokování příchozích paketů UDP, které nemohou být odpověďmi na přeposlané požadavky počítačů za tímto
směrovačem:
# ip6tables -I FORWARD -i sit+ -p udp ! --dport 32768:60999 -j DROP
Demonstrační příklad
V následujícím příkladu naleznete sofistikovanější nastavení. Šťastné je vytváření množiny pravidel netfilter6...
# ip6tables -n -v -L
Chain INPUT (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination 0 0 extIN all sit+ * ::/0 ::/0 4 384 intIN all eth0 * ::/0 ::/0 0 0 ACCEPT all * * ::1/128 ::1/128
0 0 ACCEPT all lo * ::/0 ::/0 0 0 LOG all * * ::/0 ::/0
¬ LOG flags 0 level 7 prefix `INPUT-default:' 0 0 DROP all * * ::/0 ::/0
Chain FORWARD (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source destination
0 0 int2ext all eth0 sit+ ::/0 ::/0 0 0 ext2int all sit+ eth0 ::/0 ::/0 0 0 LOG all * * ::/0 ::/0
¬ LOG flags 0 level 7 prefix `FORWARD-default:' 0 0 DROP all * * ::/0 ::/0
Chain OUTPUT (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 extOUT all * sit+ ::/0 ::/0 4 384 intOUT
all * eth0 ::/0 ::/0 0 0 ACCEPT all * * ::1/128 ::1/128 0 0 ACCEPT all * lo ::/0 ::/0 0 0 LOG all * * ::/0 ::/0
¬ LOG flags 0 level 7 prefix `OUTPUT-default:' 0 0 DROP all * * ::/0 ::/0
Chain ext2int (1 references) pkts bytes target prot opt in out source destination
¬ 0 0 ACCEPT icmpv6 * * ::/0 ::/0 0 0 ACCEPT tcp * * ::/0 ::/0
¬ tcp spts:1:65535 dpts:1024:65535 flags:!0x16/0x02 0 0 LOG all * * ::/0 ::/0
¬ LOG flags 0 level 7 prefix `ext2int-default:' 0 0 DROP tcp * * ::/0 ::/0 0 0 DROP udp * * ::/0 ::/0 0 0 DROP all * * ::/0 ::/0
Chain extIN (1 references) pkts bytes target prot opt in out source destination
0 0 ACCEPT tcp * * 3ffe:400:100::1/128 ::/0 ¬ tcp spts:512:65535 dpt:22 0 0 ACCEPT tcp * *
3ffe:400:100::2/128 ::/0
¬ tcp spts:512:65535 dpt:22 0 0 ACCEPT icmpv6 * * ::/0 ::/0 0 0 ACCEPT tcp * * ::/0 ::/0
¬ tcp spts:1:65535 dpts:1024:65535 flags:!0x16/0x02 0 0 ACCEPT udp * * ::/0 ::/0 ¬ udp spts:1:65535 dpts:1024:65535
0 0 LOG all * * ::/0 ::/0 ¬ limit: avg 5/min burst 5 LOG flags 0 level 7 prefix `extIN-default:' 0 0 DROP all * * ::/0 ::/0
Chain extOUT (1 references) pkts bytes target prot opt in out source destination ¬ 0 0
ACCEPT tcp * * ::/0 ¬ 3ffe:ffff:100::1/128tcp spt:22 dpts:512:65535 flags:!0x16/0x02 0 0
ACCEPT tcp * * ::/0
¬ 3ffe:ffff:100::2/128tcp spt:22 dpts:512:65535 flags:!0x16/0x02 0 0 ACCEPT icmpv6 * * ::/0 ::/0 0 0 ACCEPT tcp * * ::/0 ::/0
¬ tcp spts:1024:65535 dpts:1:65535 0 0 ACCEPT udp * * ::/0 ::/0 ¬ udp spts:1024:65535 dpts:1:65535 0 0
LOG all * * ::/0 ::/0 ¬ LOG flags 0 level 7 prefix `extOUT-default:' 0 0 DROP all * * ::/0 ::/0
Chain int2ext (1 references)
pkts bytes target prot opt in out source destination ¬
0 0 ACCEPT icmpv6 * * ::/0 ::/0
0 0 ACCEPT tcp * * ::/0 ::/0 ¬ tcp spts:1024:65535 dpts:1:65535
0 0 LOG all * * ::/0 ::/0 ¬ LOG flags 0 level 7 prefix `int2ext:'
0 0 DROP all * * ::/0 ::/0
0 0 LOG all * * ::/0 ::/0 ¬ LOG flags 0 level 7 prefix `int2ext-default:'
0 0 DROP tcp * * ::/0 ::/0
0 0 DROP udp * * ::/0 ::/0
0 0 DROP all * * ::/0 ::/0
Chain intIN (1 references) pkts bytes target prot opt in out source
destination ¬ 0 0 ACCEPT all * * ::/0 ¬ fe80::/ffc0:: 4 384 ACCEPT all *
* ::/0 ff02::/16
Chain intOUT (1 references) pkts bytes target prot opt in out source
destination ¬ 0 0 ACCEPT all * * ::/0
¬ fe80::/ffc0::
4 384 ACCEPT all * * ::/0 ff02::/16
0 0 LOG all * * ::/0 ::/0
LOG flags 0 level 7 prefix `intOUT-default:'
0 0 DROP all * * ::/0 ::/0
Bezpečnost
Bezpečnost uzlu
Velmi doporučujeme aplikovat všechny existující záplaty a zablokovat všechny nepotřebné služ-by. Také připojte služby pouze k
adresám IPv4/IPv6 a nainstalujte lokální firewall.
Omezení přístupu
Mnohé služby používají pro řízení přístupu knihovnu tcp_wrapper. V dalším textu je popsáno použití tcp wrapperu, viz kapitola
„Tcp_wrapper“.
Bezpečnostní audit IPv6
Momentálně nejsou k dispozici účinné nástroje, jimiž by bylo možné po síti zkontrolovat bezpeč-nostní opatření IPv6. Pokud vím,
těmto účelům nevyhovuje ani Nessus (http://www.nessus.org/), ani žádný jiný komerční skener.
Zákonná úprava
UPOZORNĚNÍ: Nechcete-li porušit zákon, vždy dbejte na to, abyste skenovali pouze své vlastní systémy anebo jiné systémy jen
na základě písemné objednávky. Než začnete se skenováním, cílovou adresu IPv6 si raději DVAKRÁT OVĚŘTE!
Bezpečnostní audit prováděný pomocí utility netcat s podporou IPv6
Pomocí nástroje netcat s podporou IPv6 (podrobnosti viz http://www.bieringer.de/linux/IPv6/ status/IPv6+Linux-statusapps.html#security-auditing) můžete spustit portscan tak, že zabalíte skript, aby prošel daný rozsah portů, zachytil bannery atd.
Příklad použití:
# nc6 ::1 daytime 13 JUL 2002 11:22:22 CEST
Bezpečnostní audit prováděný pomocí nástroje nmap s podporou IPv6
NMap (http://www.insecure.org/nmap/), jeden z nejlepších skenerů portů na světě, podporuje IPv6 od verze 3.10ALPHA1.
Příklad použití:
# nmap -6 -sT ::1Starting nmap V. 3.10ALPHA3 ( www.insecure.org/nmap/ ) Interesting ports on localhost6 (::1): (The 1600 ports scanned but
not shown below are in state: closed)
Port
22/tcp
53/tcp
515/tcp
2401/tcp
State
open
open
open
open
Service
ssh
domain
printer
cvspserver
Nmap run completed -- 1 IP address (1 host up) scanned in 0.525 seconds
Bezpečnostní audit prováděný pomocí nástroje strobe s podporou IPv6
Strobe je (ve srovnání s NMap) jednodušší, existuje záplata pro podporu IPv6 (podrobnosti viz http://www.bieringer.de/linux/
IPv6/status/IPv6+Linux-status-apps.html#security-auditing). Příklad použití:
# ./strobe ::1 strobe 1.05 (c) 1995-1999 Julian Assange <[email protected]>. ::1 2401 unassigned unknown ::1 22 ssh Secure Shell - RSA encrypted
rsh ::1 515 printer spooler (lpd) ::1 6010 unassigned unknown ::1 53 domain Domain Name Server
Poznámka: Vývoj strobe už nepokračuje, uvedená verze není správná.
Výsledky auditu
Jestliže výsledky auditu nejsou ve shodě s vaší bezpečnostní politikou IPv6, zabezpečte zranitel-ná místa firewallem IPv6 s
použitím netfilter6 (podrobnosti viz kapitola „Firewally“).Informace: Podrobnější informace o bezpečnosti IPv6 naleznete na
adrese:
■ http://www.ietf.org/internet-drafts/.
Šifrování a autentizace
Na rozdíl od IPv4 je šifrování a autentizace povinnou součástí IPv6. Tyto funkce jsou obvykle implementovány pomocí IPsec (jež
lze použít i v případě IPv4).
Režimy šifrování a autentizace
Existují dva režimy šifrování a autentizace spojení:
Transportní režim
Transportní režim je skutečný režim koncového spojení. Zašifrován je pouze obsah (obvykle ICMP, TCP nebo UDP) s hlavičkou,
zatímco hlavička IP není zašifrovaná (avšak obvykle je součástí autentizace).
Transportní režim se šifrováním AES-128 a autentizací SHA1 snižuje MTU o 42 oktetů.
Tunelový režim
Tunelový režim je využíván buď pro koncové spojení nebo pro spojení mezi branami. V tomto případě jsou zašifrovány celé IP
pakety a jsou opatřeny novými IP hlavičkami, čímž je vytvořen nový paket (tento mechanismus je znám pod názvem
„zapouzdření“, angl. „encapsulation“).
Tento režim obvykle snižuje MTU o 40 oktetů oproti transportnímu režimu, tj. se šifrováním AES-128 a autentizací SHA1 je
MTU o 82 oktetů nižší než normální MTU.
Podpora v jádru (ESP a AH)
Podpora v jádru vanilla
Linuxu 2.4.x
V době psaní chyběla podpora IPv6 v jádru systému vanilla do verze 2.4.28. Kvůli exportním zákonům vztahujícím se na
šifrování vznikl problém s volným šířením jádra. Toto je další případ, kdy do zdrojového kódu vanilla nebyl zahrnut projekt
FreeS/WAN (http://www.freeswan.org/). Snad bude v budoucnosti toto jádro doplněno z jádra 2.6.x.
Podpora v jádru vanilla Linuxu 2.6.x
Současné verze (v době psaní 2.6.9 a vyšších) podporují vlastní IPsec pro IPv4 a IPv6. Pomoc při implementaci přišla i z projektu
USAGI.
Automatická výměna klíčů (IKE)
V IPsec je požadována výměna klíčů. To se většinou děje automaticky pomocí tzv. démonů IKE. Také zpracovávají autentizaci
účastníků buď pomocí sdílených klíčů (angl. „pre-shared secret“) nebo klíčů RSA (je možné je získat i z certifikátů X.509).
V Linuxu jsou v současnosti k dispozici dva různé démony IKE, které se podstatně liší jak v kon
figuraci, tak i způsobem použití.Já dávám přednost démonu pluto v implementaci *S/WAN, neboť je jednodušší a vyžaduje
pouzejednu konfiguraci.
IKE démon racoon
IKE démon racoon byl převzat z projektu KAME a přenesen do Linuxu. V současných linuxových distribucích jsou součástí
balíku ipsec-tools. Ke správnému nastavení IPsec jsou potřebné dva pro-gramy. Viz také http://lartc.org/howto/lartc.ipsec.html.
Manipulace s databází IPsec SA/SP pomocí nástroje setkey
Nástroj setkey je důležitý pro definici bezpečnostní politiky jádra. Soubor: /etc/racoon/setkey.sh
■ Příklad šifrovaného koncového spojení v transportním režimu:
#!/sbin/setkey -f
flush;
spdflush;
spdadd 2001:db8:1:1::1 2001:db8:2:2::2 any -P out ipsec esp/transport//require;
spdadd 2001:db8:2:2::2 2001:db8:1:1::1 any -P in ipsec esp/transport//require;
■ Příklad
šifrovaného koncového spojení v tunelovém režimu:
#!/sbin/setkey -fflush;spdflush;spdadd 2001:db8:1:1::1 2001:db8:2:2::2 any -P out ipsec¬ esp/tunnel/2001:db8:1:1::1-2001:db8:2:2::2/
require;spdadd 2001:db8:2:2::2 2001:db8:1:1::1 any -P in ipsec¬ esp/tunnel/2001:db8:2:2::2-2001:db8:1:1::1/require ;
U ostatních účastníků musíte místo „in“ dát „out“.
Konfigurace IKE démona racoon
Pro správnou činnost vyžaduje racoon konfigurační soubor. Obsahuje příslušná nastavení bez-pečnostní politiky, která by měla
být nastavena pomocí setkey už dřív.
Soubor: /etc/racoon/racoon.conf # Racoon IKE daemon
configuration file. # See 'man racoon.conf' for a description
of the format and entries. path include "/etc/racoon"; path
pre_shared_key "/etc/racoon/psk.txt"; listen { isakmp
2001:db8:1:1::1; } remote 2001:db8:2:2::2
{ exchange_mode main; lifetime time 24 hour; proposal
{ encryption_algorithm 3des; hash_algorithm md5;
authentication_method pre_shared_key ; dh_group 2; } } #
gateway-to-gateway sainfo address 2001:db8:1:1::1 any
address 2001:db8:2:2::2 any { lifetime time 1 hour;
encryption_algorithm 3des; authentication_algorithm
hmac_md5; compression_algorithm deflate; } sainfo address
2001:db8:2:2::2 any address 2001:db8:1:1::1 any {
lifetime time 1 hour;
encryption_algorithm 3des;
authentication_algorithm hmac_md5;
compression_algorithm deflate;
}
Nastavení sdíleného klíče: Soubor: /etc/racoon/psk.txt
# file for pre-shared keys used for IKE authentication # format is: ‘identifier’ ‘key ’ 2001:db8:2:2::2 verysecret
Spuštění IPsec s IKE démonem racoon
Nakonec je třeba démona spustit. Při prvním spuštění použijte ladicí program a démona spusťte na pozadí. Následující příklad
znázorňuje úspěšnou komunikaci ve fázi 1 IKE (ISAKMP-SA) a 2 (IPsec-SA):
# racoon -F -v -f /etc/racoon/racoon.confForeground mode. 2005-01-01 20:30:15: INFO: @(#)ipsec-tools 0.3.3 (http://ipsec-tools.sourceforge.net)2005-01-01 20:30:15: INFO: @(#)This product linked¬ OpenSSL 0.9.7a Feb 19 2003 (http://www.openssl.org/)2005-01-01 20:30:15:
INFO: 2001:db8:1:1::1[500] used as isakmp port (fd=7)2005-01-01 20:31:06: INFO: IPsec-SA request for 2001:db8:2:2::2¬ queued due to no
phase1 found.2005-01-01 20:31:06: INFO: initiate new phase 1 negotiation:¬ 2001:db8:1:1::1[500]<=>2001:db8:2:2::2[500]2005-01-01
20:31:06: INFO: begin Identity Protection mode.2005-01-01 20:31:09: INFO: ISAKMP-SA established¬ 2001:db8:1:1::1[500]-2001:db8:2:2::2
[500]spi:da3d3693289c9698:ac039a402b2db4012005-01-01 20:31:09: INFO: initiate new phase 2 negotiation:¬ 2001:6f8:900:94::2
[0]<=>2001:db8:2:2::2[0]2005-01-01 20:31:10: INFO: IPsec-SA established:¬ ESP/Tunnel 2001:db8:2:2::2->2001:db8:1:1::1 spi=253935531
(0xf22bfab) 2005-01-01 20:31:10: INFO: IPsec-SA established:¬ ESP/Tunnel 2001:db8:1:1::1->2001:db8:2:2::2 spi=175002564(0xa6e53c4)
Každý směr dostal vlastní IPsec-SA (jak je definováno ve standardu IPsec ). Když provedete tcdump na příslušné rozhraní, jako
výsledek IPv6 ping uvidíte:
20:35:55.305707 2001:db8:1:1::1 > 2001:db8:2:2::2:
ESP(spi=0x0a6e53c4,seq=0x3)
20:35:55.537522 2001:db8:2:2::2 > 2001:db8:1:1::1:
ESP(spi=0x0f22bfab,seq=0x3)
Zadaná SPI jsou dle předpokladu použita zde. Stávající aktivní parametry si
vypíšeme pomocí setkey:
# setkey -D 2001:db8:1:1::1 2001:db8:2:2::2 esp
mode=tunnel spi=175002564(0x0a6e53c4) reqid=0
(0x00000000)
E: 3des-cbc bd26bc45 aea0d249 ef9c6b89 7056080f 5d9fa49c 924e2edd
A: hmac-md5 60c2c505 517dd8b7 c9609128 a5efc2db seq =0x00000000 replay=4 flags=0x00000000 state=mature
created: Jan 1 20:31:10 2005
diff: 577(s) hard: 3600(s)
last: Jan 1 20:35:05 2005
current: Jan 1 20:40:47 2005
soft: 2880(s)
hard: 0(s)
soft: 0(s )
current: 540(bytes) hard: 0(bytes) soft: 0(bytes) allocated: 3 hard: 0 soft: 0 sadb_seq=1
pid=22358 refcnt=0
2001:db8:2:2::2 2001:db8:1:1::1 esp mode=tunnel spi=253935531(0x0f22bfab) reqid=0
(0x00000000)
E: 3des-cbc c1ddba65 83debd62 3f6683c1 20e747ac 933d203f 4777a7ce
A: hmac-md5 3f957db9 9adddc8c 44e5739d 3f53ca0e seq=0x00000000 replay=4
flags=0x00000000 state=mature created: Jan 1 20:31:10 2005 current: Jan 1 20:40:47 2005 diff:
577(s) hard: 3600(s) soft: 2880(s) last: Jan 1 20:35:05 2005 hard: 0(s) soft: 0(s) current: 312
(bytes) hard: 0(bytes) soft: 0(bytes) allocated: 3 hard: 0 soft: 0 sadb_seq=0 pid=22358 refcnt=0
IKE démon pluto
IKE démon pluto je součástí distribuce projektu *S/WAN, který se dříve jmenoval FreeS/WAN. Další vývoj tohoto projektu byl
bohužel zastaven v roce 2004. Kvůli pomalému tempu vývoje v minulosti se od hlavního projektu oddělily dva vedlejší produkty:
StrongSwan (http://www.strongswan.org/) a Openswan (http://www.openswan.org/). V současnosti je k dispo-zici přinejmenším
instalační balík Openswan (je součástí Fedora Core 3).
Hlavním rozdílem oproti racoon je nutnost pouze jednoho konfiguračního souboru. Automatické nastavení po zavedení systému
se provede pomocí inicializačního skriptu.
Konfigurace IKE démona pluto
Konfigurace je velice podobná konfiguraci v IPv4, pouze jedna volba je důležitá.
Soubor: /etc/ipsec.conf # /etc/ipsec.conf - Openswan IPsec configuration
file # # Manual: ipsec.conf.5 version 2.0 # conforms to second version of
ipsec.conf specification # basic configuration config setup # Debuglogging controls: "none" for (almost) none, "all" for lots. #
klipsdebug=none # plutodebug="control parsing" #Disable Opportunistic
Encryption include /etc/ipsec.d/examples/no_oe.conf conn ipv6-p1-p2
connaddrfamily=ipv6 # Important for IPv6! left=2001:db8:1:1::1
right=2001:db8:2:2::2 authby=secret esp=aes128-sha1 ike=aes128-shamodp1024 type=transport
#type=tunnel compress=no #compress=yes auto=add #auto=start
Nezapomeňte zde také definovat sdílený klíč.Soubor: /etc/ipsec.secrets2001:db8:1:1::1 2001:db8:2:2::2 : PSK “verysecret”
Spuštění IPsec s IKE démonem pluto
Byla-li instalace Openswan úspěšná, pro spuštění IPsec by měl existovat inicializační skript. Na každém počítači pouze zadejte:
# /etc/rc.d/init.d/ipsec start
Poté spusťte toto spojení na jednom počítači. Pokud zahlédnete řádek „IPsec SA established“, funguje vše správně.
# ipsec auto --up ipv6-peer1-peer2 104 "ipv6-p1-p2" #1: STATE_MAIN_I1: initiate 106 "ipv6-p1-p2" #1: STATE_MAIN_I2: sent MI2, expecting
MR2 108 "ipv6-p1-p2" #1: STATE_MAIN_I3: sent MI3, expertčin MR3 004 "ipv6-p1-p2" #1: STATE_MAIN_I4: ISAKMP SA established 112
"ipv6-p1-p2" #2: STATE_QUICK_I1: initiate 004 "ipv6-p1-p2" #2: STATE_QUICK_I2: sent QI2, ¬ IPsec SA established {ESP=>0xa98b7710
<0xa51e1f22}
Vzhledem k tomu, že *S/WAN a setkey/racoon používají v jádru Linuxu 2.6.x stejnou implemen-taci, můžeme zde použít setkey,
abychom si ukázali stávající aktivní parametry:
# setkey -D 2001:db8:1:1::1 2001:db8:2:2::2 esp
mode=transport spi=2844489488(0xa98b7710)
reqid=16385(0x00004001)
E: aes-cbc 082ee274 2744bae5 7451da37 1162b483
A: hmac-sha1 b7803753 757417da 477b1c1a 64070455 ab79082c seq=0x00000000 replay=64 flags=0x00000000 state=mature
created: Jan 1 21:16:32 2005
diff: 348(s) hard: 0(s)
last:
current: Jan
soft: 0(s )
hard: 0(s)
1 21:22:20 2005
soft: 0(s)
current: 0(bytes) hard: 0(bytes) soft: 0(bytes) allocated: 0 hard: 0 soft: 0 sadb_seq=1 pid=23825
refcnt=0
2001:db8:2:2::2 2001:db8:1:1::1 esp mode=transport spi=2770214690(0xa51e1f22) reqid=16385
(0x00004001)
E: aes-cbc 6f59cc30 8d856056 65e07b76 552cac18
A: hmac-sha1 c7c7d82b abfca8b1 5440021f e0c3b335 975b508b seq=0x00000000 replay=64
flags=0x00000000 state=mature created: Jan 1 21:16:31 2005 current: Jan 1 21:22:20 2005 diff:
349(s) hard: 0(s) soft: 0(s) last: hard: 0(s) soft: 0(s) current: 0(bytes) hard: 0(bytes) soft: 0(bytes)
allocated: 0 hard: 0 soft: 0 sadb_seq=0 pid=23825 refcnt=0
Doplňující informace:
V linuxovém jádru 2.6.x můžete získat bezpečnostní politiku a stav IPsec také pomocí ip:
# ip xfrm policy ... # ip xfrm state ...
Kvalita služby (QoS)
IPv6 podporuje QoS pomocí Flow Labels a Traffic Classes. K řízení můžete použít tc (součást balí-ku iproute).Doplňující
informace:
■ RFC 3697.
Démoni s podporou IPv6
Nabízíme některé tipy na démony s podporou IPv6.
BIND (Berkeley Internet Name Daemon, named)
IPv6 je podporováno od verze 9. Vždy používejte nejnovější možnou verzi, a to nejméně 9.1.3. Starší verze mohou obsahovat
zranitelná místa zneužitelná po síti.
Naslouchání na adresách IPv6
Poznámka
Na rozdíl od IPv4 stávající verze neumožňuje svázat soket na serveru s určitou adresou IPv6, takže platné adresy jsou
pouze libovolná nebo žádná. Vzhledem k tomu, že může jít o bezpečnostní problém, přečtěte si i část Access Control List
(ACL) v dalším textu.
Aktivace démona BIND named pro naslouchání na adrese IPv6
Aktivace IPv6 pro naslouchání vyžaduje následující změnu voleb:
options { # sure other options here, too listen-on-v6 { any; };
};
Výsledek po restartu by měl být následující:
# netstat -lnptu |grep "named\W*$" tcp 0 0 :::53 :::* LISTEN 1234/named ¬ # incoming TCP requests udp 0 0 1.2.3.4:53 0.0.0.0:* 1234/named ¬
# incoming UDP requests to IPv4 1.2.3.4 udp 0 0 127.0.0.1:53 0.0.0.0:* 1234/named ¬ # incoming UDP requests to IPv4 localhost udp 0 0
0.0.0.0:32868 0.0.0.0:* 1234/named ¬ # dynamic chosen port for outgoing queries udp 0 0 :::53 :::* 1234/named ¬ # incoming UDP request to
any IPv6
A jednoduchý test vypadá takto:
# dig localhost @::1
Poté by se měl vypsat výsledek.
Blokování démona BIND named pro naslouchání na adrese IPv6:
Blokování IPv6 pro naslouchání vyžaduje následující změnu voleb
options { # sure other options here, too listen-on-v6 { none; };
};
Seznamy přístupových práv (Access Control Lists, ACL) s aktivací IPv6
ACL s aktivací IPv6 by se měly používat všude tam, kde je to možné. Například:
acl internal-net { 127.0.0.1; 1.2.3.0/24;
3ffe:ffff:100::/56; ::1/128; ::ffff:1.2.3.4/128;
};
acl ns-internal-net { 1.2.3.4 ; 1.2.3.5; 3ffe:ffff:100::4/128; 3ffe:ffff:100::5/128;
};
ACL se mohou používat například při dotazování klientů nebo přenosové zóny pomocných jmenných serverů. Tím zabráníte
využívání jmenných serverů IPv6 zvenčí.
options { # sure other options here, too listen-on-v6 { none; }; allow-query { internal-net; }; allow-transfer { ns-internal-net; };
};
Je také možné nastavit volby allow-query a allow-transfer pro většinu definovaných samo-statných zón.
Posílání dotazů s jednoúčelovou adresou IPv6
Tato volba není povinná, avšak pravděpodobně je nutno ji uvést:
query-source-v6 address <ipv6address|*> port <port|*>;
Jednoúčelové adresy IPv6 definované pro zóny
Adresy IPv6 mohou být definovány pro zóny.
Přenos zdrojové adresy
Přenos zdrojové adresy se používá pro přenosy ze zón:
transfer-source-v6 <ipv6addr|*> [port port];
Oznámení zdrojové adresy
Oznámení zdrojové adresy se používá pro odchozí oznamovací zprávy:
notify-source-v6 <ipv6addr|*> [port port];
Příklady zónových souborů DNS IPv6
Některé informace naleznete i na http://www.isi.edu/~bmanning/v6DNS.html. Něco užitečného asi najdete i na http://
tools.fpsn.net/ipv6-inaddr/.
Poskytování DNS dat IPv6
Pro nové typy IPv6 a kořenové zóny pro inverzní vyhledávání jsou definovány:
AAAA a inverzní IP6.INT: specifikované v RFC 1886, využitelné od verze BIND 4.9.6.
A6, DNAME (NYNÍ NESCHVÁLENÉ!) a inverzní IP6.ARPA: specifikované v RFC 2874, vyu-žitelné od verze BIND
9, viz také informace o současném stavu na http://www.ietf.org/ internet-drafts/.
Později bude pravděpodobně doplněno, prozatím si prohlédněte stávající RFC a také:
AAAA a inverzní IP6.INT: http://www.isi.edu/~bmanning/v6DNS.html.
A6, DNAME (NYNÍ NESCHVÁLENÉ!) a inverzní IP6.ARPA: nahlédněte do kapitol 4 a 6 dokumentu BIND 9
Administrator Reference Manual (ARM) distribuovaného s balíkem bind nebo na adrese: http://www.nominum.com/content/
documents/bind9arm.pdf.
Vzhledem k tomu, že IP6.INT není schválené (avšak používá se), DNS server, který bude podporovat informace IPv6, musí
obsluhovat obě inverzní zóny.
Současná nejlepší praxe
Vzhledem k tomu, že s používáním nových formátů jsou určité problémy, současná nejlepší praxe je: Podpora přímého hledání:
AAAA. Podpora inverzního hledání:
Inverzní „nibble“ (čtyřbitový) formát pro zónu ip6.int (PRO ZPĚTNOU KOMPATIBILITU).
Inverzní „nibble“ formát pro zónu ip6.arpa (DOPORUČENO).
Ověření spojení s aktivací IPv6
Jak ověřit, jestli BIND naslouchá na soketu IPv6 a poskytuje data, se dozvíte z následujících příkladů.
Spojení IPv6 odmítnuté ACL
Specifikací jednoúčelového serveru pro dotazy lze vytvořit spojení:
$ host -t aaaa www.6bone.net 3ffe:ffff:200:f101::1 Using domain server: Name: 3ffe:ffff:200:f101::1 Address: 3ffe:ffff:200:f101::1#53
Aliases:Host www.6bone.net. not found: 5(REFUSED)
Odpovídající položka v logu vypadá takto:
Jan 3 12:43:32 gate named[12347]: client ¬ 3ffe:ffff:200:f101:212:34ff:fe12:3456#32770:
query denied
Pokud v logu uvidíte takové položky, ověřte, zda dotazy od tohoto klienta jsou povolené, a také asi bude nutné zkontrolovat
konfiguraci ACL.
Úspěšné spojení IPv6
Úspěšné spojení IPv6 vypadá takto:
$ host -t aaaa www.6bone.net 3ffe:ffff:200:f101::1 Using domain server: Name: 3ffe:ffff:200:f101::1 Address: 3ffe:ffff:200:f101::1#53 Aliases:
www.6bone.net. is an alias for 6bone.net. 6bone.net. has AAAA address 3ffe:b00:c18:1::10
Internetový super démon (xinetd)
Xinetd (http://www.xinetd.org/) podporuje IPv6 od verze asi 1.8.9. Vždy používejte nejnovější možnou verzi, a to nejméně 2.3.3. Starší verze mohou obsahovat zranitelná místa zneužitelná po síti. Některé linuxové distribuce
obsahují zvláštní balík pro xinetd s aktivovanou IPv6, některé jiné spouštějí xinetd s aktivovanou IPv6 tehdy, je-li nastavená
proměnná NETWORKING_IPV6 na hod-notu yes, přičemž spuštění většinou provede /etc/sysconfig/network (což však platí pouze v
distribucích Red Hat a odvozených). V novějších vydáních je podpora IPv4 i IPv6 zajištěna v jedi-ném binárním souboru.
Pokud aktivujete vestavěnou službu, např. daytime, modifikací konfiguračního souboru
v /etc/xinetd.d/daytime , například takto: # diff -u /etc/xinetd.d/daytime.orig /etc/xinetd.d/daytime --- /etc/xinetd.d/daytime.orig Sun Dec 16
19:00:14 2001
+++ /etc/xinetd.d/daytime Sun Dec 16 19:00:22 2001
@@ -10,5 +10,5 @@ protocol = tcp user = root wait = no
-disable = yes
+
disable = no }
po restartu xinetd byste měli obdržet pozitivní výsledek, např.:
# netstat -lnptu -A inet6 |grep "xinetd*" tcp 0 0 ::ffff:192.168.1.1:993 :::* LISTEN 12345/xinetd-ipv6 tcp 0 0 :::13 :::* LISTEN 12345/xinetd-ipv6
<- service ¬ daytime/tcp tcp 0 0 ::ffff:192.168.1.1:143 :::* LISTEN 12345/xinetd-ipv6
V uvedeném příkladu je také výpis xinetd, který naslouchá IMAP a IMAP-SSL s IPv4.
Poznámka
Ve starších verzích nebylo možné spustit xinetd/IPv4 na uzlu IPv6 a naopak xinetd/IPv6 nebylo možné spustit na uzlu
IPv4. Chyba byla v novějších verzích odstraněna, přinejmenším od verze 2.3.11.
Webový server Apache2 (httpd2)
Webový server Apache podporuje IPv6 od verze 2.0.14. Záplaty pro starší verze řady 1.3.x nejsou aktualizované a neměly by se
používat ve veřejném prostoru. Lze je nicméně nalézt na ftp://ftp.kame.net/pub/kame/misc/.
Naslouchání na adresách IPv6
Poznámka
Do verze 2.0.28 nefungují virtuální počítače na adresách IPv6 (pro verzi 2.0.28 existuje záplata). Vždy však nejdříve
vyzkoušejte nejnovější verzi, neboť starší verze mají určité bezpečnostní problémy.
Virtuální počítač naslouchá pouze na adrese IPv6
Listen [3ffe:ffff:100::1]:80
<VirtualHost [3ffe:ffff:100::1]:80> ServerName ipv6only.yourdomain.yourtopleveldomain # ...sure more config lines
</VirtualHost >
Virtuální počítač naslouchá na adrese IPv6 i na adrese IPv4
Listen [3ffe:ffff:100::2]:80 Listen 1.2.3.4:80 <VirtualHost [3ffe:ffff:100::2]:80 1.2.3.4:80>
ServerName ipv6andipv4.yourdomain.yourtopleveldomain # ...sure more config lines </
VirtualHost>
Po restartu by měl být výsledek:
# netstat -lnptu |grep “httpd2\W*$” tcp 0 0 1.2.3.4:80 0.0.0.0:* LISTEN 12345/httpd2 tcp 0 0 3ffe:ffff:100::1:80 :::* LISTEN 12345/httpd2 tcp 0
0 3ffe:ffff:100::2:80 :::* LISTEN 12345/httpd2
K jednoduchému testu použijte příklad s příkazem telnet shora.
Doplňující poznámka
■
Kvůli urychlení přenosu podporuje Apache2 metodu zvanou „sendfile“. Některé ovladače síťových karet také podporují
kontrolní součty prováděné off-line. V některých případech to může vést k problémům se spojením a chybným
kontrolním součtům TCP. V takovém případě zablokujte vlastnost „sendfile“ buď novou kompilací s volbou --withoutsendfile nebo do konfiguračního souboru doplňte direktivu EnableSendfile off .
Démon pro oznamování směrovačů (radvd)
Démon pro oznamování směrovačů je v LAN velice užitečný, má-li být provedena autokonfigura-ce klienta. Démon samotný by
měl běžet na implicitním směrovači brány IPv6 (tato brána však nemusí být současně implicitní bránou IPv4, takže věnujte
pozornost tomu, kdo na vaší lokální síti posílá oznámení směrovače).
Můžete uvést určité informace a příznaky, které by mělo oznámení obsahovat. Obvykle se uvádí:
Prefix (povinný).
Životnost prefixu.
Četnost odesílání oznámení (volitelné).
Poté co je démon správně zkonfigurovaný, odešle oznámení přes uvedená rozhraní, klienti je snad obdrží a automaticky
zkonfigurují adresy se zaslaným prefixem a s implicitní trasou.
Konfigurace radvd
Jednoduchá konfigurace
Konfigurační soubor radvd se obvykle jmenuje /etc/
radvd.conf. Zde je jednoduchý příklad: interface eth0
{ AdvSendAdvert on; MinRtrAdvInterval 3;
MaxRtrAdvInterval 10; prefix 3ffe:ffff:0100:f101::/64
{ AdvOnLink on; AdvAutonomous on; AdvRouterAddr
on; }; };
Výsledek na straně klienta pak vypadá takto:
# ip -6 addr show eth0
3: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 100 inet6 3ffe:ffff:100:f101:2e0:12ff:fe34:1234/64 scope
global dynamic
valid_lft 2591992sec preferred_lft 604792sec
inet6 fe80::2e0:12ff:fe34:1234/10 scope link
Vzhledem k tomu, že nebyla definovaná životnost, dosadí se vysoká hodnota.
Speciální konfigurace 6to4
Verze od 0.6.2pl3 podporují automatické (re)generování prefixu v závislosti na adrese IPv4 na určeném rozhraní. Toho lze využít
při distribuci oznámení v lokální síti po změně tunelu 6to4. Vět-šinou se využívá za dynamickým vytáčeným směrovačem. Kvůli
zaručeně kratší době životnosti takového prefixu (po každém vytočení je platný jiný prefix) je životnost zkonfigurovaná na minimální hodnotu:
interface eth0 { AdvSendAdvert on; MinRtrAdvInterval 3; MaxRtrAdvInterval 10; prefix 0:0:0:f101::/64 {
AdvOnLink off;
AdvAutonomous on;
AdvRouterAddr on;
Base6to4Interface ppp0;
AdvPreferredLifetime 20;
AdvValidLifetime 30;
}; };
Tento výsledek na straně klienta je (předpokládejme, že ppp0 má lokální adresu IPv4 1.2.3.4):
# /sbin/ip -6 addr show eth0
3: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 100 inet6 2002:0102:0304:f101:2e0:12ff:fe34:1234/64
scope global dynamic
valid_lft 22sec preferred_lft 12sec
inet6 fe80::2e0:12ff:fe34:1234/10 scope link
Nepřijde-li příslušné oznámení, bude prefix vzhledem ke krátké životnosti záhy odstraněn.
Doplňující poznámka
Pokud v inicializačních skriptech nepoužíváte zvláštní podporu 6to4, musíte na interním rozhraní směrovače nastavit
speciální trasu, jinak vzniknou problémy se zpáteční trasou, viz příklad:
# /sbin/ip -6 route add 2002:0102:0304:f101::/64 dev eth0 metric 1
Trasa se musí při každé změně prefixu také změnit, což je případ přiřazení adresy IPv4 vytáčenému rozhraní.
Ladění
Odeslaná a přijatá oznámení si můžete prohlížet pomocí programu radvdump. Použití je jedno-duché:
# radvdump
Router advertisement from fe80::280:c8ff:feb9:cef9 (hoplimit 255) AdvCurHopLimit: 64 AdvManagedFlag: off AdvOtherConfigFlag: off
AdvHomeAgentFlag: off AdvReachableTime: 0 AdvRetransTimer: 0 Prefix 2002:0102:0304:f101::/64
AdvValidLifetime: 30
AdvPreferredLifetime: 20
AdvOnLink: off
AdvAutonomous: on
AdvRouterAddr: on
Prefix 3ffe:ffff:100:f101::/64
AdvValidLifetime: 2592000
AdvPreferredLifetime: 604800
AdvOnLink: on
AdvAutonomous: on
AdvRouterAddr: on
AdvSourceLLAddress: 00 80 12 34 56 78
Oznamovací balíky jsou na výstupu v čitelném tvaru. Měli byste v něm najít svoje konfigurační hodnoty; nenajdete-li je,
oznámení pravděpodobně neposílá váš radvd ... vyhledejte na spojení jiný směrovač (a použijte LLAddress, což je fyzická adresa
pro sledování).
Server DHCPv6 (dhcp6s)
DHCPv6 lze využít pro stavovou konfiguraci. Démon samotný nemusí běžet pouze na implicitním směrovači brány IPv6.
Můžete uvést více informací než v případě radvd. Server je velmi podobný serveru DHCP IPv4. Po správném zkonfigurování
démon reaguje na obdržené vícesměrové pakety ICMPv6 odeslané klientem na adresu ff02::16.
Konfigurace serveru DHCPv6 (dhcp6s)
Jednoduchá konfigurace
Konfigurační soubor dhcp6s se obvykle jmenuje /etc/dhcp6s.conf. Zde je
jednoduchý příklad: interface eth0 { server-preference 255; renew-time 60;
rebind-time 90;
prefer-life-time 130;
valid-life-time 200;
allow rapid-commit;
option dns_servers 2001:db8:0:f101::1 sub.domain.example;
link AAA {
range 2001:db8:0:f101::1000 to 2001:db8:0:f101::ffff/64; prefix
2001:db8:0:f101::/64; }; };
Konfigurace klienta DHCPv6 (dhcp6c)
Jednoduchá konfigurace
Konfigurační soubor dhcp6s se obvykle jmenuje /etc/dhcp6s.conf. Zde je
jednoduchý příklad: interface eth0 { send rapid-commit; request domainname-servers; };
Použití
dhcpv6_server
Start serveru, tj.
# service dhcp6s start
dhcpv6_client
Start klienta na pozadí, tj.
# dhcp6c -f eth0
Ladění
dhcpv6_server
Server má jeden klíč pro popředí a dva pro ladění (všechny by se měly používat pouze při ladění):
# dhcp6c -d -D -f eth0
dhcpv6_client
Klient má jeden klíč pro popředí a dva pro ladění, viz příklad:
# dhcp6c -d -f eth0 Oct/03/2005 17:18:16 dhcpv6 doesn't support hardware type 776 Oct/03/2005 17:18:16 doesn't support sit0 address family 0
Oct/03/2005 17:18:16 netlink_recv_rtgenmsg error Oct/03/2005 17:18:16 netlink_recv_rtgenmsg error Oct/03/2005 17:18:17 status code for this
address is: success Oct/03/2005 17:18:17 status code: success Oct/03/2005 17:18:17 netlink_recv_rtgenmsg error Oct/03/2005 17:18:17
netlink_recv_rtgenmsg error Oct/03/2005 17:18:17 assigned address 2001:db8:0:f101::1002 prefix len is not in any RAs prefix length using 64 bit
instead Oct/03/2005 17:18:17 renew time 60, rebind time 9
Poznamenejme, že chybová zpráva „netlink“ nemá žádný význam.
tcp_wrapper
tcp_wrapper je knihovna, která slouží k ochraně libovolné služby před zneužitím.
Filtrovací funkce
tcp_wrapper můžete využívat pro:
Filtrování podle zdrojových adres (IPv4 nebo IPv6).
Filtrování podle uživatelů (na klientovi musí běžet démon ident).
Které programy využívají tcp_wrapper
Známy jsou tyto:
Všechny služby volané démonem xinetd (je-li xinetd zkompilován s knihovnou tcp_wrapper).
Démon sshd (je-li zkompilován s knihovnou tcp_wrapper).
Použití
tcp_wrapper je řízen dvěma soubory jménem /etc/hosts.allow a /etc/hosts.deny. Další informace viz:
$ man hosts.allow
Příklad souboru /etc/hosts.allow
V tomto souboru musí mít každá pozitivně filtrovaná služba (tj. spojení je přijato) vlastní řádek
sshd: 1.2.3. [3ffe:ffff:100:200::]/64 daytime-stream: 1.2.3. [3ffe:ffff:100:200::]/64
Poznámka: Vyskytují se ještě i vadné implementace, které obsahují následující nesprávný popis sítě IPv6: [3ffe:ffff:100:200::/64].
Doufejme, že budou brzy odstraněny.
Příklad souboru /etc/hosts.deny
Tento soubor obsahuje položky se všemi negativními filtry a obvykle by měl odmítat zbytek pomocí:
ALL: ALL
Je-li uzel příliš citlivý, můžete standardní řádek shora nahradit řádkem následujícím, což však může umožnit útok typu DoS
(odmítnutí služby, přetížení poštovního programu a vyrovnávacího adresáře pro spooling), pokud je v krátkém čase uskutečněno
příliš mnoho spojení. Pro tento případ je pravděpodobně vhodnější nástroj logwatch.
ALL: ALL: spawn (echo “Attempt from %h %a to %d at `date`”
root@localhost )
| tee -a /var/log/tcp.deny.log | mail
Logy
V závislosti na položce v konfiguračním souboru /etc/syslog.conf démona syslog zapisuje tcp_wra-pper obvykle do souboru /var/
log/secure.
Odmítnuté spojení
Odmítnutí spojení IPv4 s démonem xinetd, který zajišťuje službu daytime, má za následek výpis podobný následujícímu příkladu:
Jan 2 20:40:44 gate xinetd-ipv6[12346]: FAIL: daytime-stream libwrap
¬ from =::ffff:1.2.3.4 Jan 2 20:32:06 gate xinetd-ipv6[12346]: FAIL: daytime-stream libwrap
from=3ffe:ffff:100:200::212:34ff:fe12:3456
Odmítnutí spojení IPv4 s démonem sshd, který zajišťuje dvojí naslouchání, má za následek výpis podobný následujícímu
příkladu:
Jan 2 20:24:17 gate sshd[12345]: refused connect from ::ffff:1.2.3.4 ¬ (::ffff:1.2.3.4) Jan 2 20:39:33 gate sshd[12345]: refused connect
from 3ffe:ffff:100:200::212:34ff:fe12:3456 ¬ (3ffe:ffff:100:200::212:34ff:fe12:3456)
Povolené spojení
Povolené spojení IPv4 s démonem xinetd, který zajišťuje službu daytime, má za následek výpis podobný následujícímu příkladu:
Jan 2 20:37:50 gate xinetd-ipv6[12346]: START: daytime-stream pid=0 ¬ from=::ffff:1.2.3.4 Jan 2 20:37:56 gate xinetd-ipv6[12346]: START:
daytime-stream pid=0 ¬ from=3ffe:ffff:100:200::212:34ff:fe12:3456
Povolené spojení IPv4 s démonem sshd, který zajišťuje dvojí naslouchání, má za následek výpis podobný následujícímu příkladu:
Jan 2 20:43:10 gate sshd[21975]: Accepted password for user from ::ffff:1.2.3.4 ¬ port 33381 ssh2 Jan 2 20:42:19 gate sshd[12345]: Accepted
password for user ¬ from 3ffe:ffff:100:200::212:34ff:fe12:3456 port 33380 ssh2
vsftpd Naslouchání na adresách IPv6
Volbu pro naslouchání nastavte v konfiguračním souboru (obvykle je to /etc/vsftpd/vsftpd.conf) takto:
listen_ipv6=yes
Toť vše.
proftpd Naslouchání na adresách IPv6
Volbu pro naslouchání nastavte v konfiguračním souboru (obvykle je to /etc/vsftpd/ proftpd.conf) takto (avšak pozor, ne vše je v
nastavení virtuálního počítače stoprocentně logic-ké):
<VirtualHost 192.0.2.1 > ... Bind 2001:0DB8::1 ...
</VirtualHost >
Toť vše.
Ostatní démoni
Nyní je situace poměrně jednoduchá. Chcete-li naslouchat na IPv6, vyhledejte buď příslušnou volbu na příkazovém řádku nebo
konfigurační hodnotu. Přečtěte si manuálové stránky démona nebo si projděte často kladené otázky. Může se stát, že z důvodu
nedostatku podpory lze někdy démona svázat pouze s „libovolnou“ adresou IPv6 (any, ::), nikoli s určitou adresou. Záleží na tom,
jak daleko je programátor s implementací...
Další informace a URL
Programování (s použitím API)
S programováním IPv6 nemám žádné zkušenosti. Možná, že kapitolu doplní někdo jiný nebo budepřenesena do jiného
návodu.Informace naleznete v RFC 2553 a na adresách:
http://www.ietf.org/internet-drafts/
http://jungla.dit.upm.es/~ecastro/IPv6-web/ipv6.html, aut. Eva M. Castro
Součinnost
Ve světě existují projekty, které se zabývají součinností různých operačních systémů vzhledem k implementaci vlastností IPv6.
Zde jsou některé odkazy:
■ TAHI Project, http://www.tahi.org/
Tištěné knihy, články, on-line časopisy (směs) Tištěné knihy (anglicky)
Cisco
Cisco Self-Study: Implementing IPv6 Networks (IPV6), Regis Desmeules. Cisco Press; ISBN 1587050862; 500 stran;
1. vydání (11. 4. 2003).
Configuring IPv6 with Cisco IOS, Sam Brown, Neal Chen, Robbie Harrell, Edgar, Jr. Parenti (redaktor), Eric Knipp
(redaktor ), Paul Fong (redaktor), 362 stran; Syngress Media Inc; ISBN 1928994849 (12. 7. 2002).
Obecné
IPv6 Essentials, Silvia Hagen, červenec 2002, O’Reilly. Obj. číslo: 1258, ISBN 0-5960-0125-8; 352 stran. ToC, Index,
Sample Chapter etc.; O’Reilly Pressrelease.
IPv6: The New Internet Protocol. By Christian Huitema; Vydalo Prentice-Hall; ISBN 0138505055. Popis: Autorem
knihy je Christian Huitema – člen InternetArchitecture Board. Kniha nabízí vynikající popis IPv6, odlišnosti od IPv4 a otázky
spojené s vývojem. Zdroj:
http://www.cs.uu.nl/wais/html/na-dir/internet/tcp-ip/resource-list.html.
IPv6 Networks, Niles, Kitty (ISBN 0070248079); 550 stran. Vyšlo 05/01/1998.
■
Implementing IPv6. Supporting the Next Generation Internet Protocols, P. E. Miller, Mark
A. Miller. Vydavatel: John Wiley & Sons; ISBN 0764545892; 2. vydání (15/03/2000); 402 stran.
Big Book of IPv6 Addressing Rfcs, Peter H. Salus (překlad ); vyd. Morgan Kaufmann Publishers; 04/2000; 450 stran;
ISBN 0126167702.
Understanding IPV6, Davies, Joseph; ISBN 0735612455. Vyšlo 05/01/2001; 350 stran. Understanding IPV6, Davies,
Joseph; ISBN 0735612455. Vyšlo 13/11/2002; 544 stran.
Migrating to IPv6 – IPv6 in Practice, Marc Blanchet. Vydavatel: John Wiley & Sons; ISBN 0471498920; 1. vydání
(11/2002); 368 stran.
Ipv6 Network Programming, Jun-ichiro Hagino; ISBN 1555583180.
Wireless boosting IPv6, Carolyn Duffy Marsan, 23/10/2000.
O’Reilly Network, klíčové slovo IPv6, 29 odkazů (28/01/2002).
Tištěné knihy (německy)
Technik der IP-Netze (TCP/IP incl. IPv6); vyd. Amazon.de; Anatol Badach, Erwin Hoffmann; Carl Hanser Verlag;
München, Wien, 2001 ISBN 3-446-21501-8. Kap. 6: Protokol IPv6, s. 205-242. Kap. 7: Plug&Play – podpora IPv6; s. 243-276.
Kap. 8: Migrace v IPv6, s. 277–294. Kap. 9.3.4: RIP protokolu IPv6 (RIPng), s. 349-351. Kap. 9.4.6: OSPF pro IPv6, s. 384-385.
Komentář: nikoli zcela aktuální a nikoli zcela bez chyb.
■
Internet-Sicherheit (Browser, Firewalls und Verschlüsselung); vyd. Amazon. Kai Fuhrberg.
2. uprav. vyd., vyšlo r. 2000, Carl Hanser Verlag, München, Wien, ISBN 3-446-21333-3. Kap.
2.3.1.4. IPv6, s. 18-22. Stručný přehled: RFC1825 – Security Association Konzept RFC1826
– IP authentication Header RFC1827 – IP Encapsulation Security Payload.
IPv6. Das neue Internet-Protokoll. Technik, Anwendung, Migration; vyd. Amazon Hans Peter Dittler. 2. upr. a doplň.
vyd. 2002, ISBN 3-89864-149-X.
Das neue Internetprotokoll IPv6; vyd. Amazon Herbert; Wiese 2002;Carl Hanser Verlag, ISBN 3446216855.
Tištěné knihy (česky)
IPv6. Satrapa Pavel, Neokortex 2002; 238 stran; ISBN 80-86330-10-9. Patrně jediná česká kniha věnovaná výhradně
IPv6.
TCP/IP v kostce, Pužmanová Rita; Kopp 2004; 608 stran; ISBN 80-7232-236-2. Podrobný popis protokolů TCPI/IP,
zabývá se částečně i IPv6.
Články, eKnihy, on-line časopisy (směs)
Getting Connected with 6to4, http://www.onlamp.com/pub/a/onlamp/2001/06/01/ipv6_ tutorial.html, Huber Feyrer,
06/01/2001.
Transient Addressing for Related Processes: Improved Firewalling by Using IPv6 and Mul-tiple Addresses per Host;
written by Peter M. Gleiz, Steven M. Bellovin (PC-PDF-Version: http://www.securiteinfo.com/ebooks/pdf/tarp.pdf; Palm-PDFVersion: http://www.securite info.com/ebooks/palm/tarp.pdf; PDB-Version: http://www.securiteinfo.com/ebooks/ pdb/tarp.pdb).
■
IPv6, théorie et pratique (francouzsky); http://www.oreilly.fr/catalogue/ipv6-3ed.html;
3. vydání, 03/2002, O'Reilly; ISBN 2-84177-139-3.
IPSec (francouzsky), http://www.securiteinfo.com/crypto/IPSec.shtml.
Internetworking IPv6 with Cisco Routers, http://www.ip6.com/index.html, Silvano Gai, McGrawHill Italia, 1997. 13
kapitol a přílohy A-D si lze stáhnout jako dokumenty PDF.
Secure and Dynamic Tunnel Broker, http://www.vermicelli.pasta.cs.uit.no/ipv6/ students/vegars/, Vegar Skaerven Wang,
Disetrační práce v IT; 02/06/2000; Faculty of Sci-ence, Dep.of Computer Science, University of Tromso, Norsko.
Aufbruch in die neue Welt – IPv6 in IPv4 Netzen, http://www.old.netobjectdays.org/pdf/ 99/stja/doering.pdf. Dipl. Ing.
Ralf Döring, TU Illmenau, 1999.
Migration and Co-existence of IPv4 and IPv6 in Residential Networks, http://www.csc.fi/~psavola/residential.html;
Pekka Savola, CSC/FUNET, 2002.
Vědecké publikace (abstrakty, bibliografie, on-line zdroje)
GEANT IPv6 Workplan, http://www.ipv6.ac.uk/gtpv6/workplan.html.
A simulation study on the performance of Mobile IPv6 in a WLAN-based cellular network, Perez Costa X.; Hartenstein
H. Computer Networks, 09/2002, sv. 40, č. 1, s. 191–204 (14); Elsevier Science.
IPv6 Trials on UK Academic Networks: Bermuda Project; Aug. 2002; http://www.ipv6.ac.uk/ bermuda2/, Participants –
Getting connected – Project deliverables – Network topology – Address assignments – Wireless IPv6 access – IPv6 migration –
Project presentations – Internet 2 – Other IPv6 projects – IPv6 fora and standards Bermuda 2...
http://www.ipv6.ac.uk/, http://www.ipv6.ac.uk/.
A scalable parallel internet router that enables the QoS through merging ATM with IPv6. Song S. – Computer
Communications, 01/05/2002, sv. 25, č. 7, s. 647–651 (5) – Elsevier Science.
■
Linux IPv6: Which One to Deploy? Linux Journal, č. 96, s. 86, 88–90, 04/2002.
■ An overview and analysis of mobile Internet protocols in cellular environments; http://www.ingenta.com/isis/
searching/ExpandSearch/ingenta?year_to=2002&year_from=1
997&date_type=range&title=IPv6&title_type=tka&database=1&newMatches=false&page-Start=1&index=3, Chao H-C. –
Internet Research: Electronic Networking Applications and Policy, 24/10/2001, sv. 11, č. 5, s. 435–450 (16) – MCB University
Press
IPv6 for Future Wireless NetworksToftegaard Nielsen T. – Wireless Personal Communicati-ons, June 2001, sv. 17, č.
2/3, s. 237–247 (11) – Kluwer Academic Publishers, Dordrecht, Nizozemí.
IPv6 at the University of Southampton, http://www.ipv6.ecs.soton.ac.uk/
Seamless Support for Mobile Internet Protocol Based Cellular Environments, Chao H-C.; Chu Y-M. – International
Journal of Wireless Information Networks, 07/2001, sv. 8, č. 3, s. 133–153 (21) – Kluwer Academic/Plenum Publishers, New
York, USA.
IPv6: The Solution for Future Universal Networks. Lecture Notes in Computer Science, sv. 1818, s. 82, 2000.
Modeling and performance analysis for IPv6 traffic with multiple QoS classes. Zhang L.; Zheng L. – Computer
Communications; 09/2001, sv. 24, č. 15, s. 1626–1636 (11) – Elsevier Science.
Threshold-Based Registration (TBR) in Mobile IPv6. Lecture Notes in Computer Science, sv. 1818, s. 150, 2000.
IPv6 Performance Analysis on FreeBSD Workstation Using Simple Applications. Lecture Notes in Computer Science,
sv. 1961, s. 33, 2000.
Microsoft Research IPv6 Implementation (MSRIPv6): http://www.research.microsoft.com/ msripv6/.
New fr, http://www.ingenta.com/isis/searching/ExpandSearch/ingenta?year_to=2002&year
from=1997&date_type=range&title=IPv6&title_type=tka&database=1&newMatches=false&p ageStart=1&index=9.
On-line informace Globální rejstříky
http://www.6bone.net/, http://www.6bone.net/6bone_hookup.html, http://ww.w.join. uni-muenster.de/6bone/6boneteilnahme.html (německy),
http://www.join.uni-muenster.de/6bone/6bone-participation.html (anglicky).
Hlavní regionální rejstříky
Amerika: ARIN, http://www.arin.net/.
Evropa a Blízký východ: Ripe NCC, http://www.ripe.net/.
Asie/Pacifik: APNIC, http://www.apnic.net/.
Latinská Amerika a Karibik: LACNIC, http://lacnic.org/.
Afrika: AfriNIC, http://www.afrinic.org/.
Seznam hlavních (délka prefixu 32) umístění lokálních registrů je zde: http://www.ripe.net/ ripencc/mem-services/registration/
ipv6/ipv6allocs.html.
Tuneloví makléři
Sourcecode, http://www.vermicelli.pasta.cs.uit.no/ipv6/students/vegars/TunnelBroker/; viz Vermicellis, disertační práce
o tunelových makléřích, University of Tromso, Norsko.
Původní IPng. Tunelový makléř a zdroje IPv6, nyní migrovalo do http://www.sixxs.net/main/.
Eckesovy stránky: IPv6-with-Linux, http://sites.inka.de/lina/linux/ipv6.html.
tunnelc – tunelový klientský skript založený na perl: freshmeat.net; http://freshmeat.net/ projects/tunnelc, SourceForge:
http://sourceforge.net/projects/tunnelc
Linux Advanced Routing & Traffic Control HOWTO, http://howtos.linuxbroker.com/
howtoreader.shtml?file=Adv-Routing-HOWTO.html#LARTC.TUNNEL-IPV6.ADDRESSING. Další informace a URL
na http://www.ipv6-net.de/.
6to4
NSayer's 6to4 information, http://www.kfu.com/~nsayer/6to4/.
RFC 3068.
ISATAP
■ http://www.join.uni-muenster.de/Dokumente/Howtos/Howto_ISATAP.php?lang=en,
muenster.de/.
Novinky a URL ostatních dokumentů
Náměty uvítáme!
http://www.ipv6-net.de/, německé fórum.
http://www.estoile.com/links/ipv6, aut. Anil Edathara.
Odkazy na protokoly
RFC/IPv6
autor
http://www.join.uni-
Rozsah tohoto dokumentu neumožňuje publikování seznamu RFC/IPv6, avšak následující URL vás k tomuto seznamu přivedou:
Setříděný seznam je v http://playground.sun.com/pub/ipng/html/specs/standards.html nebo v http://playground.sun.com/
pub/ipng/html/specs/specifications.html, aut. Robert Hinden.
http://www.ipv6.org/specs.html na IPv6.org.
Návrhy pracovních skupin
Návrhy pracovních skupin, které se týkají IPv6, naleznete na:
http://www.ietf.org/ids.by.wg/ipv6.html
http://www.ietf.org/ids.by.wg/ngtrans.html
http://www.ietf.org/ids.by.wg/dhc.html
http://www.ietf.org/ids.by.wg/dnsext.html
http://www.ietf.org/ids.by.wg/mobileip.html
http://playground.sun.com/pub/ipng/html/ipng-main.html (včetně dostupnosti zásobníků na různých platformách &
zdrojový kód pro zásobníky IPv6)
Ostatní
http://www.networksorcery.com/enp/protocol/ipv6.htm, hlavička protokolu IPv6
http://www.switch.ch/lan/ipv6/references.html, velký seznam odkazů na IPv6, který udržu-je Simon Leinen.
Další informace
http://www.deepspace6.net/sections/links.html
Vztahující se k určité distribuci Linuxu
PLD
http://www.pld-linux.org/ („jednička na trhu“ v balících IPv6)
Red Hat
http://www.redhat.com/, http://www.netcore.fi/pekkas/linux/ipv6/ (Pekka Savola)
Debian
http://www.debian.org/,
http://people.debian.org/~csmall/ipv6/,
Jims_LAN_IPv6_global_connectivity_howto.html
http://www.jipo.org/jim/
Novell/openSUSE
http://www.novell.com/linux/suse/
Mandriva Linux
http://www.mandriva.com/ Další na stránkách http://www.bieringer.de/linux/IPv6/status/IPv6+Linux-status-distributions.html.
Obecně
http://www.ipv6.org/
http://www.6bone.net/
http://www.cs-ipv6.lancs.ac.uk/ – Spojené království
http://www.ipv6forum.com/ – světové konsorcium internetových prodejců, Research & Education Networks
http://playground.sun.com/pub/ipng/html/ipng-main.html – udržuje Robert Hinden, Nokia. Veškeré informace o IPv6,
od přehledů přes RFC & návrhy až k implementacím (včetně dostupnosti zásobníků na různých platformách & zdrojový kód pro
zásobníky IPv6)
http://www.6init.com/ – Internetová iniciativa IPv6 – Pátý rámcový program EU, součást programu IST..
http://www.ipv6-taskforce.org/
http://www.6init.org/ – IPv6 INternet IniTiative
http://www.isoc.org/HMP/PAPER/PT1/html/pt1.html.hinden
http://www.usenix.org/publications/library/proceedings/ana97/summaries/deering.html, aut. Steve Deering
http://www.garykessler.net/library/ipv6_exp.html, aut. Gary C. Kessler
http://www.3com.com/nsc/ipv6.html – 3Com
http://www.ngi.gov/
http://www.internet2.org/ a http://ipv6.internet2.edu/ – http://ipv6.internet2.edu/ presentations/ z dílen IPv6 (Bezstavová
autokonfigurace, adresování IPv6, USAGI, adreso-vání IPv6 nezávislé na poskytovateli a další témata)
NetworkWorldFusion (102 dokumentů k datu 22. 12. 2002)
http://www.theregister.co.uk/ (30 dokumentů IPv6, 22. 12. 2002)
http://zdnet.search.com/search?cat=279&q=IPv6
http://whatis.techtarget.com/wsearchResults/1,290214,sid9,00.html?query=IPv6
http://www.faqs.org/faqs/internet/tcp-ip/resource-list/index.html
http://ipv6.klingon.nl/, http://www.ipv6.klingon.nl/: příklady firewallů IPv6, testování šířky pásma a portscanner
Informace v češtině
http://www.ipv6.cz/
http://www.cesnet.cz/ipv6/
http://www.logix.cz/michal/doc/article.xp/ipv6-1
Bezpečnost IPv6
Internet Security Systems: Security Center, http://www.iss.net/security_center/search.php?
type= 3&type=3&pattern=IPv6 (21. 12. 2002 – nalezeno 6 částí věnovaných IPv6)
http://csrc.nist.gov/ipsec/ (National Institute of Standards and Technology, NIST)
http://www.infosecuritymag.com/index.shtml
http://neworder.box.sk/search.php3?srch=IPv6 (články, využití, soubory, databáze atd.)
Seznamy aplikací
http://www.deepspace6.net/docs/ipv6_status_page_apps.html
http://www.ipv6.org/v6-apps.html
http://freshmeat.net/search/ ?q=IPv6, v současnosti (14/12/2002) 62 projektů
Fórum IPv6: http://www.ipv6forum.com/navbar/links/v6routerlist.htm
Nástroje na analýzu
http://www.wireshark.org/ – Wireshark (dříve Ethereal) je volně dostupný analyzátor pro-tokolů v systémech Unix a
Windows.
http://www.ip6.com/us/analyzer.htm. Stáhnout lze: Radcom RC100-WL protocol analyzer, verze 3.20.
Produkty IPv6
http://www.6wind.com/ – řešení pro směrovače IPv4/IPv6, QoS, vícesměr, mobilitu, bez-pečnost/VPN/firewally.
http://www.fefe.de/dns/ 08/2002 – Co je djbdns a proč potřebuje IPv6? (djbdns je plnohod-notný DNS server, který
předčí BIND prakticky ve všech ohledech)
http://www.ipinfusion.com/products/server/products_server.html.
Inframail (Advantage Server Edition) 6.0, http://download.com.com/3000-2165-8202652.html?tag=lst-0-2.
http://download.com.com/3000-2377-10149393.html?tag=lst-0-1.
ftp://ftp.porcupine.org/pub/ipv6/.
SNMP
■
http://www.cs.uu.nl/wais/html/na-dir/snmp-faq/part1.html
Infrastruktura IPv6
Statistiky
http://www.space.net/~gert/RIPE/, aut. Gert Döring
http://6bone.informatik.uni-leipzig.de/ipv6/stats/stats.php3
http://www.ripe.net/ripe/meetings/archive/ripe-42/presentations/ripe42-ipv6-survey/sld001.html, IPv6 WG, Ripe 42,
Ripe NCC
Propojovací centra
Seznam propojovacích center lze nalézt na: http://www.v6nap.net/ nebo na http://www.euro-ix.net/isp/choosing/search/matrix.php.
Evropa
■
http://www.euro6ix.net/, European IPv6 Internet Exchange Backbone
USA
http://www.6tap.net/: Chicago. Supports peerings around the globe
http://www.ny6ix.net/: New York City IPv6 based Internet Exchange
http://www.paix.net/: Palo Alto
Tuneloví makléři
Viz také: http://www.deepspace6.net/docs/tunnelbrokers.html
Evropa
■
http://www.xs26.net/, USA & Evropa
Německo
http://6bone.informatik.uni-leipzig.de/
http://fix.ipv6.berkom.de/cgi-bin/tb.pl
USA
http://www.es.net/hypertext/welcome/pr/ipv6.html, USA – Energy Sciences Network: Tun-nel Registry & Address
Delegation for directly connected ESnet sites and ESnet collabo-rators.
http://www.6ren.net/, USA – Iniciativa 6ren je koordinovaná společností Energy Sciences Network (ESnet), což je síť
pro energetický výzkumný program Ministerstva pro energii USA, je umístěna v kalifornské laboratoři Lawrence Berkeley
National Laboratory.
http://www.xs26.net/, USA & Evropa
http://ipv6tb.he.net/, US backbone; http://tunnelbroker.com/
Další tuneloví makléři...
■
http://www.kfu.com/~nsayer/6to4/ (bojkot MS IIE!)
Služby IPv6
Poznámka: Tyto služby jsou většinou dostupné pouze s platným připojením IPv6!
Novinky na síti (NNTP)
■
nntp://news.ipv6.scarlet-internet.nl/ (dostupné přes všechny SixXS POPy).
Server s hrami
■
http://www.viagenie.qc.ca/en/ipv6/quake2/ipv6-quake2.shtml přes IPv6.
IRC Server
■
http://ipv6.cyconet.org/?id=server (Cyconet IRCnet Servery prostřednictvím IPv6).
Rozhlasové stanice, hudební kanály
http://aopteryx.informatik.uni-leipzig.de:8000/live.mp3, Lipská univerzita, Německo.
http://www.ipv6.bieringer.de/.
www server
Ještě něco chybí? Náměty uvítáme!
E-mailové konference
Seznam konferencí naleznete na:
■ http://www.deepspace6.net/sections/lists.html.
Hlavní konference jsou uvedeny v následující tabulce:
Téma e-mailová adresa Co lze vybrat Adresa konference Jazyk Přístup přes WWW
Jádro Linuxu, sítě
majordomo (at)
včetně IPv6
oss.sgi.com
netdev
Linux a IPv6
majordomo (at)
obecně (1)
list.f00f.org
linux-ipv6
[email protected]
anglicky
http://oss.sgi.com/
projects /netdev/
archive/
anglicky
list.f00f.org
(moderovaná)
project6@ferrara.
Linuxové
implemen-Webbased,
tace protokolu IPv6
see URL
Mobilní IP(v6) v
Limajordomo (at)
linux-ipv6@
anglicky
linux.it
mipl
[email protected]
http://project6.
ferrara.linux.it /
anglicky
sections/lists.html
http://
www.mipl.medi
nuxu
list.mipl.mediapoli
.com
Linuxoví uživatelé
usagi-users-ctl (at)
rozšíření IPv6
USAGI linuxipv6.org
.mediapoli.com
usagi-users@
IPv6 v Debian
Linuxu Web-based,
see URL
apoli.com /
anglicky
linux-ipv6.org
ipv6.org/ml
debian-ipv6@
anglicky
/index.html#
usagi-users
http://lists.
ipv6@uni
německy/
debian.org/
debian-ipv6/
http://www.join.
-muenster.de
anglicky
uni-muenster.de/
[email protected]
anglicky
ipng@sunroof.
anglicky
JOIN/ipv6/texte
-englisch/mailinglis
te.html
http://
www.6bone.net
/6bone_email.html
http://playground.
lists.debian.org
IPv6/6bone v
Německu
majordomo (at)
atlan.unimuenster.de
6bone majordomo
(at) isi.edu
ipv6
6bone
Diskuse o IPv6
ipng
majordomo (at)
sunroof.eng.sun.com
Obecně o
uživatelích
majordomo (at)
IPv6 ipv6.org
Ladění
internetových
bugtraq-subscribe
aplikací (2) (at)
securityfocus.com
users
eng.sun.com
sun.com/pub
[email protected]
anglicky
/ipng/html/instructi
ons.html
http://www.ipv6.org/
bugtraq@secu
anglicky
mailing-lists.html
http://online.security
rityfocus.com
focus.com/ popups/
(moderated)
Obecně o IPv6
Web-based, see
URL
[email protected]
majordomo (at)
ipv6
majordomo (at)
mfa.eti.br mfa.eti.br
(1) vhodné pro běžné revize Linuxu & IPv6
(2) velmi vhodné pro serverové aplikace
On-line nástroje
Nástroje na testování
mailinglist.html
http://www.linux
[email protected]
anglicky
portugalsky
forums/bugtraq
/intro.shtml
http://
mailman.ipng.nl
/mailman/listinfo/
ipv6/
http://www.marcelo.
pro.br /mailman/
listinfo/ipv6
finger, nslookup, ping, traceroute, whois: http://www.cs-ipv6.lancs.ac.uk/ipv6/testing/.
ping, traceroute, tracepath, 6bone registry, DNS: http://www.join. uni-muenster.de/lab/testtools.html (pouze v němčině,
avšak budou rozumět i ti, kdo neumí německy).
traceroute6, whois: http://www.ipng.nl/.
AAAA Lookup Checker http://www.cnri.dit.ie/cgi-bin/check_aaaa.pl.
Různé nástroje: http://www.ipv6tools.com/.
http://doc.tavian.com/ipv6util/index.htm (podobné ipv6calc).
Získávání informací
http://www.kessens.com/~david/6bone/,
http://www.ripe.net/ripencc/mem-services/registration/ipv6/ipv6allocs.html.
Zrcadla IPv6
http://linux.uninet.edu/lg/,
http://www.v6.dren.net/lg/.
Pomocné aplikace
http://www.tdoi.org/prefcalc.php, aut. http://www.tdoi.org/,
http://www.maths.tcd.ie/cgi-bin/check_dns.pl.
Školení, semináře
http://www.aerasec.de/workshops/ipv6.html, AERAsec, Německo (prozatím pouze v němči-ně).
http://www.seminarinformation.com/wconnect/wc.dll?sis~details0~194045, Learning Tree International.
http://www.e-trainonline.com/html/ciw_internetworking_profession.html#IPv6, CIW Inter-networking Professional
Training CBT CD.
http://www.trainingpages.net/x/category.html?kw=125, U.K. (13 kurzů, 22. 12. 2002). Chybí něco? Náměty uvítáme!
„Výzkum on-line“
IPv6:
Addressing
The
Needs
Of
the
Future,
http://www.amazon.com/exec/obidos/tg/detail/-/B00006334Y/
copernicshopper/103-1420916-1341420 [KE STAŽENÍ V PDF], Yankee Group (autor). Cena: $595.00. Vydání: e-book (Acrobat
Reader). Počet stran: 3 (tři). Vydavatel: Marke-tResearch.com; ISBN B00006334Y (1/11/2001).
Zajímavý by mohl být počet výtisků...
Stručný úvod do IRC
Úvod
Informace týkající se probíraných témat naleznete i v následujících příručkách:
Dokument RFC 1459 (Jarkko Oikarinen a Darren Reed) se jako první věnoval protokolu Internet Relay Chat Protocol –
http://ftp.isi.edu/in-notes/rfc1459.txt
RFC 2810 (Christophe Kalt) aktualizuje RFC 1459 a popisuje architekturu Internet Relay Chat – http://ftp.isi.edu/innotes/rfc2810.txt
RFC 2811 (Christophe Kalt) aktualizuje RFC 1459 a popisuje správu kanálů IRC –
http://ftp.isi.edu/in-notes/rfc2811.txt
■ RFC 2812 (Christophe Kalt) aktualizuje RFC 1459 a popisuje klientský protokol IRC –
http://ftp.isi.edu/in-notes/rfc2812.txt
■ RFC 2813 (Christophe Kalt) aktualizuje RFC 1459 a popisuje serverový protokol IRC –
http://ftp.isi.edu/in-notes/rfc2813.txt Navštívit byste měli i web http://
www.irchelp.org/.
Cíle
Kromě jiného jsou cíle tohoto dokumentu následující:
Seznámit se s odkazy na důležité zdroje, které se zabývají IRC
Předejít častým chybám při používání IRC
Seznámit se s oblíbenými klienty, servery, roboty (bots), proxy bránami (bouncers) a jejich správci, s IRC #kanály,
stručným popisem, možností stažení, domovskými stránkami a radami
Seznámit se s dostupnými nástroji IRC
O IRC
Výňatek z RFC2810:
Protokol IRC (Internet Relay Chat) se používá při textově založených konferencích. Vyvíjí se od
roku 1989, kdy byl původně implementován jako prostředek pro uživatele na BBS, kteří mezi
sebou chatovali.
Poprvé protokol formálně zdokumentovala v květnu roku 1993 příručka RFC 1459 [IRC] a od té
doby se neustále rozvíjí. Protokol IRC je založen na modelu klient/server a je vhodný pro použití u množství počítačů v různých
umístěních. Typická instalace představuje jediný krok (server), při němž se vytvoří cent-rální bod pro klienty (či jiné servery), ke
kterým se připojuje a probíhá doručování zpráv/více-směrové vysílání a další funkce.
Tento model, který vyžaduje, aby každý server měl kopii informací o globálním stavu, je stále největším problémem protokolu,
protože se tím omezuje maximální velikost, jaké může síť dosáhnout. Jestliže se existující sítě mohly dostatečně rozrůstat,
musíme poděkovat výrobcům hardwaru, že nám dodávají stále výkonnější systémy.
Stručná historie IRC
První démon pro IRC vytvořil v polovině roku 1998 Jarkko „WiZ“ Oikarinen z univerzity v Oulu,Finsko. Původně byl vytvořen
podle BBS jako náhrada programu Talk a rychle se rozšiřoval ; nej-dříve ve Skandinávii a následně i ve zbytku světa. Během
jednoho roku existovalo přes 40 pro-pojených serverů.
V dané fázi existovala pouze jedna síť, proto nebylo nutné ji pojmenovat – jmenovala se jedno-duše „IRC“; s rozrůstáním sítě
však začalo docházet k nedorozuměním. IRC byl dosti chaotickýmmédiem s rozdělenými sítěmi, kolizemi nicků a různými
propojeními komunikačních kanálů; bylonevyhnutelné, aby se uživatelé v určité fázi rozhodli vytvořit své vlastní sítě.
K jednomu z prvních podstatných rozdělení došlo v roce 1992, kdy Wildthang vytvořil síť Under-net. Původně mělo jít o
testovací síť, ale síť Undernet se rychle rozrůstala a díky zavádění služebpro ochranu uživatelů a komunikačních kanálů získala
pověst přátelské sítě.
O dva roky později se rozdělila i síť Undernet a vznikla nová síť s názvem DALnet. Zakladatelemsítě DALnet byl dalvenjah,
který povýšil princip služeb sítě Undernet na novou úroveň a zavedlregistraci nicků, linky G-lines a nabízel i další funkce.
Mezitím se změnily i názory v síti IRCnet (pod tímto názvem byla nyní známá síť IRC). Síť IRCnetvzdorovala principu
„vlastnictví komunikačního kanálu/nicku“, který zavedly sítě Underneta DALnet, bylo však nutné řešit neustálé protínání
komunikačních kanálů. Představeny byly dvěrůzné možnosti: prodleva nicku/komunikačního kanálu a časová razítka (informace
naleznete nawebu http://www.irc-help.org), došlo však k rozhořčené debatě o tom, kterou z možností imple-mentovat.
V červenci roku 1996 se síť IRCnet rozdělila, přičemž se většina severoamerických serverů zfor
movala do sítě EFnet a síť IRCnet tak zůstala převážně evropská.Od té doby vznikly stovky dalších menších sítí, z nichž většina
používá upravené verze DALnet,EFnet, IRCnet či Undernet.
Začínáme používat IRC
Standardním klientem IRC je původní ircII. Je součástí většiny distribučních balíčků systému Linux a je od něj odvozena většina
ostatních textově založených klientů IRC (zvláště BitchX a EPIC).
Spuštění programu ircII
Používání klienta ircII je snadné. Řekněme například, že se chcete připojit k irc.freenode.net jako uživatel mini-HOWTO.
Do příkazového řádku napište:
$ irc mini-HOWTO irc.freenode.net
Můžete také exportovat proměnné, abyste je nemuseli používat v příkazovém řádku. Pro uživate-le bash a zsh:
$ export IRCNICK=mini-HOWTO IRCSERVER=irc.freenode.net
Uživatelé csh a tcsh uvedou setenv místo export.
Po dokončení přidejte proměnné do svého profilu shell (například ~/.bash_profile či ~/.zpro-file, viz část „Úvod do Linuxu“,
kapitolu „Konfigurační soubory shellu“). Dalšími běžnými proměnnými jsou IRCNAME a IRCUSER pro nastavení části ircname
v /whois a uživatelské jméno v prvním řádku „mini-HOWTO ~username@hostname (ircname)“. Nezapomínejte, že IRCUSER nebude fungovat,
pokud používáte ident daemon (který je ve většině distribučních balíčků výchozí). Potřebujete-li změnit své uživatelské jméno
(nedoporučuje se, abyste používali IRC při přihlášení jako root!), nainstalujte oidentd z webu http://ojnk.sourceforge.net/.
Informace pro konfiguraci naleznete v dokumentu oidentd.conf. Nakonec spusťte:
# /usr/local/sbin/oidentd -g nobody -u nobody
Po dokončení přidejte příkaz do svých spouštěcích skriptů (například /etc/rc.d/rc.local). Pokud nejsou proměnné IRCNICK ,
IRCUSER a IRCNAME nastaveny, budou získány z /etc/passwd (čili z informací o uživateli).
Příkazy
Pro zobrazení seznamu všech dostupných příkazů použijte /help (nápověda /help je dobrý začá-tek). Nahraďte nick jakýmkoli
IRCNICK.
Nejdříve vypněte /set NOVICE.
/nick IRC-mini-HOWTO změní proměnnou IRCNICK na IRC-mini-HOWTO.
/set realname The Linux IRC mini-HOWTO změní proměnnou IRCNAME na The Linux IRC mini-HOWTO (nemění se
u stejného připojení).
/j #mini-HOWTO se připojí ke komunikačnímu kanálu #mini-HOWTO.
/j #unmaintained-HOWTO se připojí ke komunikačnímu kanálu #unmaintained-HOWTO.
/j #mini-HOWTO změní aktuální aktivní komunikační kanál na #mini-HOWTO.
/msg nick Ahoj odešle soukromou zprávu pro nick obsahující Ahoj.
/notice nick (či #mini-HOWTO) Ahoj. odešle oznámení pro nick (či #mini-HOWTO) obsa-hující Ahoj.
/query nick spustí soukromou konverzaci s nickem; /query ukončí soukromou konverzaci.
/me uses Linux odešle akci do aktuálního komunikačního kanálu či dotaz obsahující IRC-mini-HOWTO loves Linux.
/dcc chat nick zahájí chat s nickem. Použijte /msg =nick (všimněte si znaku = ) pro odesí-lání zpráv prostřednictvím
chatu.
/dcc send nick /etc/HOSTNAME odešle daný soubor nicku.
/dcc get nick přijme soubor nabízený nickem.
/part opustí aktuální aktivní komunikační kanál.
/part #unmaintained-HOWTO opustí kanál #unmaintained-HOWTO.
/discon se odpojí od aktuálního IRCSERVER.
/server irc.oftc.net připojí k IRCSERVER irc.oftc.net.
/quit Bye ukončí vaši relaci IRC s důvodem Bye.
Většina z výše uvedených příkazů (včetně použití proměnných prostředí) bude fungovat také v jiných textově založených
klientech.
Etiketa služby IRC
VAROVÁNÍ
■
Nikdy nepoužívejte IRC, jste-li přihlášení jako root či jako kterýkoli jiný uživatel s rozšíře-nými oprávněními. Dříve či
později se něco stane. Varovali jsme vás. Velmi doporučujeme, abyste vytvořili uživatele, který bude sloužit pouze k
používání služby IRC. Viz:
$ man adduser
V komunikačních kanálech Linux byste neměli:
Chovat se jako idiot. Chcete-li být respektováni, respektujte všechny ostatní.
Používat barvy (^C). Většina uživatelů systému Linux takové blázniviny pocházející z programu mIRC netoleruje a
ircII je ve skutečnosti nepodporuje. To samé platí pro ANSI.
Používat pouze velká písmena (CAPS), tučné písmo (^B), reverzní znaky (^V), podtržení (^_), blikání (^F) a zvonění
(^G). První 4 slouží ke zdůraznění slov, ne celého textu. Poslední 2 jsou jednoduše otravné.
Ptát se, zda se můžete na něco zeptat. Prostě se zeptejte, předtím si však přečtěte veš-kerou dostupnou dokumentaci
týkající se daného tématu. Začněte s /usr/share/doc (v některých systémech může jít o /usr/doc), případně navštivte web http://
www.tldp.org/ nebo http://www.ibiblio.org/pub/Linux/docs/. Neopakujte své otázky několikrát za sebou. Počkejte alespoň 10
minut. Nedostanete-li žádnou odpověď, je to proto, že vám nikdo nemůže nebo nechce pomoci. Respektujte jejich volbu, nejsou
vaši-mi osobními asistenty. Nikdy také neposílejte příliš mnoho soukromých zpráv. Je to stejné jako se spamem.
Klienti IRC pro textový režim
ircII
Správce: ircII project.Komunikační kanál IRC: #ircII (oficiální komunikační kanál) v síti EFNet http://www.efnet.org/?
module=servers.
ircII vytvořil Michael Sandrof a je k dispozici ve většině distribucí Linuxu. Používá termcap a není vhodný pro většinu uživatelů,
jedná se však o standard. Používat jej bude Mathusalem a další odborníci. Méně zkušení budou po jeho instalaci litovat.
Aktuální verzi ircII získáte na webu ftp://ircii.warped.com/pub/ircII/. Domovskou stránku nalez-nete na internetové adrese http://
www.eterna.com.au/ircii/.
EPIC
Správce: EPIC Software Labs.Komunikační kanál IRC: #EPIC v síti EFNet.
Klient EPIC (Enhanced Programmable ircII Client) je založen na ircII a je určen pro skutečné tvůr-ce skriptů a uživatele, kteří
hledají svobodu. Při jeho prvním spuštění zjistíte, že byste se skuteč-ně měli naučit základy skriptování.
Aktuální verzi EPIC získáte na webu http://prbh.org/?page=ftp. Domovskou stránku naleznete na internetové adrese http://
www.epicsol.org/.
BitchX
Správce: Colten Edwards.Komunikační kanál IRC: #BitchX v síti EFNet.Původně se jednalo o skript pro ircII, nyní je však
BitchX oblíbeným klientem, který snižuje potřebu vytváření skriptů, protože nabízí obrovské množství funkcí v klientovi jako takovém (všechny
dostupné funkce si nezapamatují ani zkušení uživatelé). BitchX bývá považován za přeceňovaný
software, mezi uživateli je však velmi oblíbený.
Aktuální verzi BitchX získáte na webu http://www.bitchx.org/download.php. Domovskou stránkunaleznete na internetové adrese
http://www.bitchx.org/. BitchX pravděpodobně najdete i ve svédistribuci Linuxu.
irssi
Správce: Timo Sirainen.
Komunikační kanál IRC: #irssi na webu freenode (http://freenode.net/irc_servers.shtml) a IRCnet (http://www.ircnet.org/). Timo
zveřejnil v roce 1997 klienta yagIRC. Jednalo se o grafického klienta, který využíval sadu
nástrojů GTK+. Rok poté byl povolán na vojnu a nikdo nepřevzal správu klienta yagIRC. Po návra-tu vytvořil klienta irssi jako
náhradu za yagIRC. Používal GTK+. Později se objevily verze pro GNOME a textovou konzoli. Od verze 0.7.90 se jedná pouze
o klienta ve standardním textovém režimu. Podporuje skriptování v jazyce Perl.
Aktuální verzi irssi získáte na webu http://irssi.org/?page=download. Domovskou stránku nalezne-te na internetové adrese http://
irssi.org/.
Další textoví klienti IRC
Existuje několik dalších klientů založených na ircII:
Blackened (ftp://ftp.blackened.com/pub/irc/blackened/).
Ninja (ftp://qoop.org/ninja/).
ScrollZ (http://www.scrollz.com/).
Klienti IRC pro X Window
Zircon
Správce: Lindsay F. Marshall.Komunikační kanál IRC: Žádný?Vytvořen v Tcl/Tk, používá nativní komunikaci Tcl.Aktuální verzi
Zircon získáte na webu ftp://catless.ncl.ac.uk/pub/. Domovskou stránku naleznete
na internetové adrese http://catless.ncl.ac.uk/Programs/Zircon/.
KVIrc
Správce: Szymon Stefanek.Komunikační kanál IRC: #KVIrc na webu freenode.Tento klient je vytvořen také v knihovně Qt,
přičemž je velmi výkonný. Podporuje DCC Voice,
vestavěný skriptovací jazyk a moduly plug-in.Aktuální verzi KVIrc získáte na webu http://www.kvirc.net/?id=download.
Domovskou stránkunaleznete na internetové adrese http://www.kvirc.net/.
X-Chat
Správce: Peter Zelezny.Komunikační kanál IRC: #Linux na webu ChatJunkies – http://www.chatjunkies.org/servers.php.Používá
GTK+, případně i GNOME, podporuje skriptování Perl a Python.Aktuální verzi X-Chat získáte na webu http://xchat.org/
download/. Domovskou stránku naleznete
na internetové adrese http://xchat.org/.
QuIRC
Správce: Patrick Earl.Komunikační kanál IRC: #QuIRC v síti DALnet – http://www.dal.net/servers/index.php3.Za použití Tk,
podporuje Tcl pro skriptování.Aktuální verzi QuIRC získáte na webu http://quirc.org/.
Servery IRC
IRCD
Správce: vývojáři ircd.Komunikační kanál IRC: #ircd v síti IRCnet.Původní daemon IRC používaný hlavně v síti IRCnet. Novější
verze se pokusily zdokonalit zabezpečení komunikačních kanálů prostřednictvím dalších typů kanálů (například !linux) a režimů
kanálů.Aktuální verzi IRCD získáte na webu ftp://ftp.irc.org/irc/server/. Domovskou stránku naleznete nainternetové adrese
http://www.irc.org/.
IRCD-Hybrid
Správce: Neznámý?Komunikační kanál IRC: Žádný?Používaný hlavně v síti EFNet. Hybrid se zaměřuje na rychlost a výkon,
přičemž mu chybí mnoho
služeb nabízených v jiných sítích. Podle filozofie sítě EFnet, že se klienti nemají zabývat chodemkomunikačních kanálů,
nepovoluje Hybrid klientům nastavovat režimy v kanálech či se připojo-vat ke kanálům, z kterých byli vyloučeni. Není tomu tak
dávno, kdy Hybrid nabídl možnost, abyslužba znovu aktivovala kanál bez klientů.
Aktuální verzi IRCD-Hybrid získáte na webu http://ftp1.sourceforge.net/ircd-hybrid/. Domovskoustránku naleznete na internetové
adrese http://www.ircd-hybrid.org/.
ircu
Správce: Undernet Coder Committee.Komunikační kanál IRC Channel: #ircu v síti Undernet (http://www.undernet.org/
servers.php).Používá se převážně v síti Undernet. Po řadě útoků DDoS v letech 2001/2002 nabídl klient ircu
uživatelům a serverům možnost skrývat své adresy. Ze sítě Undernet bylo také odstraněno mnoho
příkazů /stats.Aktuální verzi ircu získáte na webu http://ftp1.sourceforge.net/undernet-ircu/. Domovskou stránkunaleznete na
internetové adrese http://coder-com.undernet.org/.
Bahamut
Správce: DALnet Coding Team.Komunikační kanál IRC: #Bahamut v síti DALnet.Bahamut je server DALnet založený na
DreamForge a Hybrid. Mezi funkce patří registrace komunikačních kanálů a nicků, podpora pro délku nicků až 15 znaků a evidenční služba.Aktuální verzi Bahamut získáte na webu http://
bahamut.dal.net/download.php. Domovskou strán-ku naleznete na internetové adrese http://bahamut.dal.net/.
IRC „bots“
Eggdrop
Správce:Komunikační kanál IRC: #eggdrop v síti Undernet.Eggdrop nabízí silnou ochranu komunikačního kanálu a díky
skriptování Tcl je velmi přizpůsobi-
telný.
Více eggdrop botů lze propojit a vytvořit tak celek, který zahrnuje větší počet komunikačních
kanálů, či dokonce sítí. V sítích bez služeb registrace kanálů je eggdrop běžnou funkcí téměř všechvětších komunikačních
kanálů.Aktuální verzi eggdrop získáte na webu http://www.eggheads.org/downloads/. Domovskou stránku naleznete na internetové adrese http://www.eggheads.org/.
EnergyMech
Správce: Proton.Komunikační kanál IRC: Žádný.První verze EnergyMech (či emech) si získala svou nepříliš příznivou pověst
díky své schopnosti
spouštět více chatů z jednoho procesu (což umožňovalo méně žádoucím uživatelům načíst stov-ky klonů z účtu). Takovou
reputaci si však emech nezaslouží, protože ve skutečnosti nabízí dob-rou ochranu komunikačních kanálů a aktuální verze
programu emech této funkci zamezily (namaximálně 4 instance). Jedná se o oblíbenou alternativu k Eggdrop.
Aktuální verzi EnergyMech získáte na webu http://www.energymech.net/download.html. Domov-skou stránku naleznete na
internetové adrese http://www.energymech.net/.
IRC Bouncers (IRC Proxy)
bnc
Správce: James Seter.Komunikační kanál IRC: ŽádnýNástroj bnc je původní bouncer.Aktuální verzi bnc získáte na webu http://
gotbnc.com/download.html. Domovskou stránku naleznete na internetové adrese http://gotbnc.com/.
muh
Správce: Sebastian Kienzl.Komunikační kanál IRC: ŽádnýNástroj muh je mnohostranný nástroj, který zamezuje zjišťování adresy
IP a po spuštění bude bránit pokusům o získání vašeho nicku.Aktuální verzi nástroje muh získáte na webu http://ftp1.sourceforge.net/muh/. Domovskou
stránkunaleznete na internetové adrese http://seb.riot.org/muh/.
ezbounce
Správce: Murat Deligönül.Komunikační kanál IRC: ŽádnýK základním funkcím ezbounce patří ochrana hesla, vzdálená správa,
přihlašování a sledování většího množství portů.Aktuální verzi ezbounce získáte na webu http://druglord.freelsd.org/ezbounce/.
Instalace
Klienti
Všichni oblíbení klienti používají GNU Autoconf a GNU Automake, proto jsou k dispozici s konfi-guračním skriptem. Po
rozbalení zdrojů si přečtěte pokyny k instalaci. Před provedením kompila-ce se ujistěte, zda máte požadované knihovny.
Správným postupem je:
# cd nazev_vytvoreneho_adresare # ./configure --help # ./configure --zde_jsou_vase_moznosti # make; # make install > ~/sources_install.log.
Pro ircII, EPIC a BitchX byste měli upravit include/config.h tak, aby odpovídal vašim potře-bám.
Servery
Skutečně potřebujete pomoc pro nastavení serveru?
~$ touch ircd.conf
Co je součástí mé distribuce? (Linux v počítačích x86)
11.1. Debian
IRC Channel: #Debian na webu freenode (irc.debian.org -> irc.freenode.net)Debian (http://www.debian.org/) nabízí tolik nástrojů
IRC, že je nemůžeme všechny uvést. Nalez-nete je na následujících webech:
Stabilní Debian – http://ftp.debian.org/debian/dists/stable/main/binary-i386/.
Nestabilní Debian (neproběhlo dostatečné testování) – http://ftp.debian.org/debian/ dists/unstable/main/binary-i386/.
Plánované aktualizace naleznete na internetové adrese http://ftp.debian.org/debian/ dists/proposed-updates/. Může
obsahovat také klienty IRC.
Fedora (Red Hat)
Komunikační kanál IRC: #RedHat na webu freenode (irc.redhat.com -> irc.freenode.net)Fedora Core 3 (http://fedora.redhat.com/
) nabízí následující klienty (v novějších verzích najdeteaktualizované balíčky):
EPIC4 1.0.1 – http://download.fedora.redhat.com/pub/fedora/linux/core/3/i386/os/ Fedora/RPMS/
epic-1.0.1-18.i386.rpm.
KSirc z KDE Network 3.3.0 – http://download.fedora.redhat.com/pub/fedora/linux/core/3/ i386/os/Fedora/RPMS/
kdenetwork-3.3.0-5.i386.rpm.
X-Chat 2.4.0 – http://download.fedora.redhat.com/pub/fedora/linux/core/3/i386/os/ Fedora/RPMS/
xchat-2.4.0-3.i386.rpm.
Rawhide (vývojová verze) – http://download.fedora.redhat.com/pub/fedora/linux/core/ development/. Používání je na
vlastní nebezpečí.
Slackware
Komunikační kanál IRC: #Slackware na webu freenode a OFTC – http://www.oftc.net/ Slackware (http://
www.slackware.com/) verze 10.0 nabízí následující klienty:
BitchX 1.1 – ftp://ftp.slackware.com/pub/slackware/slackware-10.0/slackware/n/bitchx-1.1-i486-1.tgz.
EPIC4 2.0 – ftp://ftp.slackware.com/pub/slackware/slackware-10.0/slackware/n/epic4-2.0-i486-1.tgz.
irssi 0.8.9 – ftp://ftp.slackware.com/pub/slackware/slackware-10.0/slackware/n/irssi-0.8.9-i486-3.tgz.
KSirc od KDE Network 3.2.3 – ftp://ftp.slackware.com/pub/slackware/slackware-10.0/slack-ware/kde/
kdenetwork-3.2.3-i486-1.tgz.
X-Chat 2.0.9 – ftp://ftp.slackware.com/pub/slackware/slackware-10.0/slackware/gnome/ xchat-2.0.9-i486-1.tgz.
Slackware – current (ve vývoji) – ftp://ftp.slackware.com/pub/slackware/slackware-current/. Používání je na vlastní
nebezpečí.
Mandriva Linux
Mandriva Linux nabízí v distribučních zdrojích Main a Contrib následující balíčky (pro instalaci použijte urpmi):
BitchX,
irssi,
X-chat,
EPIC,
Ksirc.
LDAP v Linuxu
Úvod
V tomto dokumentu je popsána instalace, konfigurace, provozování a údržba serveru LDAP (Light-weight Directory Access
Protocol) na linuxovém počítači. V dokumentu jsou rovněž uvedenypodrobnosti o vytváření databází LDAP a jsou zde popsány
postupy při přidávání, aktualizacia rušení dat v adresáři. Tento návod vychází z informačních stránek LDAP University of
Michigana z Průvodce správou OpenLDAP (OpenLDAP Administrator’s Guide).
Autorem je Luiz Ernesto Pinheiro Malere, <[email protected]>.Hlavním cílem tohoto dokumentu je poskytnout návod, jak
nastavit a používat adresářový serverLDAP na linuxovém počítači. Dozvíte se, jak se instaluje, provozuje a udržuje server LDAP.
Dálese dozvíte, jak máte pomocí klientů a utilit LDAP ukládat, číst a aktualizovat data v adresáři.
Démon adresářového serveru LDAP se nazývá slapd a běží na mnoha různých unixových platfor-mách.Další démon zajišťuje
replikace mezi servery LDAP. Nazývá se slurpd, avšak v tomto dokumentu
se jím nemusíme zabývat. Budeme používat pouze démona slapd, který zajišťuje adresářové služ-by pouze pro lokální doménu,
bez replikací, takže i bez slurpd. Úplné informace o replikacíchjsou k dispozici na stránkách OpenLDAP Administrator's Guide
(http://www.openldap.org/ doc/-admin22/replication.html).
Nastavení lokální domény představuje jednodušší variantu konfigurace serveru, s níž je vhodnézačít a kterou je možné v případě
potřeby snadno později změnit. Informace uvedené v tomtodokumentu představují důležitý úvod k používání serveru LDAP. Je
možné, že po jeho přečtení sidodáte odvahu k rozšíření funkcí serveru, anebo dokonce začnete pomocí vývojových nástrojů C,C+
+ a Java psát své vlastní klienty.
Co je LDAP?
LDAP je zkratkou Lightweight Directory Access Protocol. Jak už název napovídá, jde o „lehký“ pro-tokol typu klient/server pro
přístup k adresářovým službám, zejména pak ke službám založeným na X.500. LDAP běží nad TCP/IP nebo jinými přenosovými
službami zaměřenými na spojení. Defi-nici LDAP naleznete v RFC2251.
Adresář se podobá databázi, avšak obsahuje více popisných informací vycházejících z „vlastností“. Adresářové údaje se mnohem
častěji čtou než zapisují. Jsou uspořádány tak, aby na požadavek vyhledávání ve velkém objemu dat bylo možno poskytnout
rychlou odpověď. Z důvodu dostupnosti, spolehlivosti a zkrácení doby odezvy mohou být údaje v adresáři ve značném měřít-ku
uloženy na více místech. Než je provedena jejich synchronizace, může docházet i k dočasným chybám v konzistenci.
Existuje mnoho metod, jak zajišťovat adresářové služby. Různé druhy informací mohou být uklá-dány v adresářích různými
způsoby, vznikají různé požadavky na odkazy, dotazování a aktuali-zaci, ochranu před neoprávněným přístupem atd. Některé
adresářové služby jsou lokální v ome-zeném rozsahu (např. služba finger na samostatném počítači), jiné mohou být globální a
jsou poskytovány v daleko širším kontextu.
Jak pracuje?
Adresářová služba LDAP je založena na modelu klient/server. Jeden nebo několik serverů LDAP obsahují data, která vytvářejí
adresářový strom neboli vnitřní strukturu („backend“) databáze. Kli-ent LDAP se připojí k serveru LDAP a položí dotaz. Server
buď poskytne odpověď nebo adresu, na níž klient nalezne požadovanou informaci (obvykle je to jiný server LDAP). Nezáleží na
tom, ke kterému serveru LDAP se klient připojí. Pohled na adresář je vždy stejný; jméno zadané jed-nomu serveru LDAP
odkazuje na stejnou položku, jako kdyby bylo zadané jinému serveru. To je důležitou vlastností globální adresářové služby, jakou
je LDAP.
Vnitřní struktura, objekty a atributy LDAP
Serverový démon LDAP se jmenuje Slapd. Podporuje různá úložiště dat – databáze, které můžete používat.Především je to BDB, což je vysoce výkonná databáze s podporou transakcí; dále LDBM – data-báze lehčího typu;
SHELL je strukturované rozhraní k shellovým skriptům a PASSWD, která tvořírozhraní pro přístup k záznamům v souboru
passwd(5).
BDB využívá Sleepycat (http://www.sleepycat.com/), Berkeley DB 4. LDBM využívá buď Berkeley
DB (http://www.sleepycat.com/) nebo GDBM (http://www.gnu.org/software/gdbm/).Transakční struktura BDB je určena pro
víceuživatelský přístup k databázi s možností čtení i zápi-su a libovolné kombinace obou operací. Používá se v aplikacích, které
vyžadují:
Nepřerušitelné transakce včetně hromadných změn a možnost jejich vracení do původního stavu.
Možnost obnovy při havárii systému nebo hardwarových chybách bez ztráty transakce.
V tomto dokumentu budeme pracovat s databází BDB. Pro import a export adresářových dat mezi servery LDAP a k popisu změn
v adresáři obvykle pou-žíváme formát souboru označovaný jako LDIF, což je zkratka, která vznikla z LDAP Data Interchange Format. Soubor LDIF ukládá data do objektově orientovaných položkových struktur. Softwarový balík LDAP obsahuje
nástroj, kterým provádíme konverzi souborů LDIF do formátu BDB. Běžný soubor LDIF vypadá takto:
dn: o=TUDelft, c=NL
o: TUDelft objectclass: organization dn: cn=Luiz Malere, o=TUDelft, c=NL cn: Luiz Malere sn: Malere mail: [email protected] objectclass:
person
Jak vidíte, každá položka je jednoznačně identifikovaná rozlišitelným jménem, resp. DN (distin-guished name). DN se skládá ze
jména položky a cesty tvořené jmény, která směřují zpět ke koře-ni adresářové struktury (jako u stromu).
Třída objektů v LDAP definuje množinu atributů, které lze použít k definici položky. Existují tyto základní typy tříd objektů:
Skupiny v adresáři včetně neuspořádaného seznamu jednotlivých objektů nebo skupin objektů.
Umístění, např. jméno státu a popis.
Organizace v adresáři.
Lidé v adresáři.
Položka může patřit více než jedné třídě objektů. Například položka pro osobu je definovaná tří-dou objektů person, ale může být
definovaná také atributy v třídě objektů inetOrgPerson, group-OfNames nebo organization. Struktura tříd objektů na serveru (což
je schéma) určuje celkovýseznam požadovaných a povolených atributů pro určitou položku.
Data v adresáři představují dvojice atribut – hodnota. Každá informace je spojena s popisným atri
butem. Například atribut commonName (resp. cn) se používá k uložení jména osoby. Osoba jménemJonas Salk bude v adresáři
uvedena jako:
cn: Jonas Salk
Každá osoba v adresáři je definovaná jako množina atributů v třídě objektů person. Jiné atributy, jimiž lze definovat tuto položku,
mohou obsahovat:
givenname: Jonas surname: Salk mail: [email protected]
Požadované atributy jsou atributy, které musí být uvedeny v položkách dané třídy objektů. Všech
ny položky vyžadují atribut objectClass, který je seznamem tříd objektů, k němž položka patří. Povolené atributy jsou atributy,
které mohou být uvedeny v položkách dané třídy objektů. Napří-klad v třídě objektů person jsou požadované atributy cn a sn.
Atributy telephoneNumber, seeAl-so a userpassword jsou povolené, nikoli však požadované.
Všechny atributy mají syntaktickou definici, která popisuje typ informace poskytované daným atributem, například:
bin binární;
ces case exact string (při porovnávání řetězců musí být ve shodě i malá a velká písmena);
cis case ignore string (při porovnávání se neberou v úvahu malá/velká písmena);
tel telephone number string (jako cis, avšak navíc se ignorují mezery a pomlčky „–“);
dn jména se musí lišit.
Poznámka
Definice tříd objektů a atributů jsou v instalaci OpenLDAP obvykle v souborech schema
v podadresáři schema/.
Nové verze dokumentu
Tento dokument může být opravován a aktualizován na základě ohlasů čtenářů. Nové verze toho-to návodu naleznete na: http://
www.tldp.org/HOWTO/LDAP-HOWTO.html.
Názory a návrhy
Pokud byste měli o údajích uvedených v tomto dokumentu jakékoli pochybnosti, kontaktujte měna e-mailové adrese:
<[email protected]>.Seznamte mne, prosím, i s případnými komentáři a návrhy...
Instalace serveru LDAP
Server nainstalujete pomocí následujících pěti kroků:
Nainstalujte požadované balíky (pokud už nejsou nainstalovány).
Stáhněte si server.
Software rozbalte.
Zkonfigurujte soubory Makefiles.
Vygenerujte server.
Vytvoření prostředí
Z důvodu plné shody s LDAPv3 vyžadují klienti i servery instalaci některých dalších balíků. Pro psaní tohoto dokumentu jsem
použil systém Mandrake 9.0 s jádrem 2.4.20, ručně nainstalovaný balík Berkeley BDB a knihovny SASL.
TLS knihovny OpenSSL
TLS knihovny OpenSSL jsou běžnou součástí základního systému anebo tvoří jeho volitelnou sou-část. Oficiální url OpenSSL je:
http://www.openssl.org.
Autentizační služby Kerberos
Klienti i servery OpenLDAP podporují autentizační služby založené na systému Kerberos. Kon-krétně OpenLDAP podporuje
autentizační mechanismus SASL/GSSAPI prostřednictvím balíků Heimdal nebo MIT Kerberos V. Pokud chcete používat
autentizaci SASL/GSSAPI založenou na systému Kerberos, musíte nainstalovat buď Heimdal nebo MIT Kerberos V. Heimdal
Kerberos naleznete na http://www.pdc.kth.se/heimdal, MIT Kerberos na http://web.mit.edu/kerberos/www.
Používání silné autentizační služby typu Kerberos lze vřele doporučit.
Knihovny Cyrus SASL (Simple Authentication and Security Layer)
Knihovny Cyrus SASL jsou obvykle součástí základního systému nebo jsou jeho volitelnou kom-ponentou. Naleznete jej na
adrese http://asg.web.cmu.edu/sasl/sasl-library.html. Při instalaci vyu-žívají knihovny OpenSSL a Kerberos/GSSAPI. V době
psaní tohoto dokumentu byl k dispozici Cyrus SASL ve verzi 2.1.17.
Databázový software
Primární databázová struktura BDB démona slapd vyžaduje Sleepycat Software Berkeley DB (http://www.sleepycat.com/), verzi
4. Při konfiguraci musí být k dispozici, jinak slapd s primární databázovou strukturou nelze vygenerovat.
Je pravděpodobné, že součástí vašeho základního operačního systému nebo jeho volitelnou kom-ponentou je Berkeley DB, verze
4. Pokud není, několik verzí této databáze naleznete na stránkách Sleepycat (http://www.sleepycat.com/download.html). Její
nejnovější verze nese v době psaní toho-to dokumentu označení 4.2.52 a lze ji doporučit. Struktura LDBM démona slapd
podporuje celou řadu správců databází, např. Berkeley DB (version 3) nebo GDBM. GDBM je možno stáhnout z ftp stránek FSF
na adrese ftp://ftp.gnu.org/pub/gnu/gdbm/.
Vlákna
Je téměř jisté, že váš Linux obsahuje také podporu vláken. Tuto výhodu využívá OpenLDAP. Pod-poruje posixový pthreads,
Mach CThreads a řadu dalších. Pokud skript configure nenalezne vhod-ný subsystém vláken, ohlásí to. Kdyby tato situace nastala,
nahlédněte, prosím, do části Software
– Installation – Platform Hints v často kladených otázkách (FAQ) systému OpenLDAP na adrese
http://www.openldap.org/faq/.
TCP Wrappers
Jsou-li předinstalovány TCP wrappery (filtry pro řízení přístupu na úrovni IP), slapd je podporuje. Použití těchto nebo podobných
přístupových filtrů na úrovni IP (např. takových, které obsahují IP firewally) lze doporučit zejména na serverech, na nichž jsou
uloženy neveřejné informace.
Stažení balíku
Existují dva volně šiřitelné servery LDAP: Je to jednak server LDAP z University of Michigan a jed-nak server OpenLDAP. Také
existuje Netscape Directory Server, který je zdarma pouze za určitých podmínek (například pro vzdělávací instituce). Server
OpenLDAP vychází z nejnovější verze ser-veru University of Michigan a z tohoto serveru má k dispozici rozesílací seznamy a
další doku-mentaci. V tomto dokumentu budeme předpokládat, že používáte server OpenLDAP.
Nejnovější verze OpenLDAP v komprimované (.zip) a archivované (.tar ) podobě je k dispozici na adrese: http://www.openldap.org.Nejnovější verze serveru University of Michigan naleznete na adrese:ftp://
terminator.rs.itd.umich.edu/ldap.
Při psaní tohoto dokumentu jsem používal verzi OpenLDAP 2.2.5. Mám operační systém Mandra
ke Linux 9.0 s jádrem 2.4.20.Na stránkách OpenLDAP také naleznete informace o vývoji tohoto produktu a stabilní verze serveru LDAP. V době aktualizace tohoto dokumentu byla poslední stabilní verzí openldap-stable-20031217.tgz (verze 2.1.25) a
poslední vývojovou verzí openldap-2.2.5.tgz.
Rozbalení
Teď, když máte na počítači komprimovaný balík tar, jej můžete rozbalit. Nejprve balík zkopírujte do vhodného adresáře,
například /usr/local. Dále zadejte příkaz:
tar xvzf openldap-2.2.5.tgz
anebo:
gunzip openldap-2.2.5.tgz | tar xvf -
Konfigurace
Zdrojové soubory serveru OpenLDAP jsou distribuovány s konfiguračním skriptem pro nastavení různých parametrů, např.
instalačních adresářů a příznaků pro překladač a sestavovací program. V adresáři, kde máte rozbalený software, zadejte příkaz:
./configure --help
Vypíší se všechny volby, které je možno zadat skriptu configure před zahájením generování. Pro nastavení instalačních adresářů
jsou důležité parametry --prefix=pref, --exec-prefix=eprefix a --bindir=dir. Když spustíte skript configure bez parametrů, obvykle
provede příslušná nasta-vení sám a připraví generování do implicitního adresáře. Takže pouze zadáte:
./configure
a pozorujete, zda vše běží, jak má.
Tip Někdy potřebujete předat skriptu configure určité parametry, např. --with-tls (aktivace používání bezpečného kanálu
démonem slapd: LDAPS://). Může se stát, že máte knihov-ny SSL/TLS uložené v nestandardních adresářích. V takovém
případě upozorníte skript configure na změnu umístění knihoven příkazem env. Příklad: Předpokládejte, že máte balík openssl
nainstalovaný v /usr/local/openssl. Démona slapd s podporou SSL/TLS vygenerujete tímto příkazem:
env CPPFLAGS=-I/usr/local/openssl/include \ LDFLAGS=-L/usr/local/openssl/lib \ configure --with-tls ...
Než spustíte skript configure, můžete příkazem env specifikovat následující vnější proměnné:
CC: alternativní překladač C.
CFLAGS: přídavné příznaky překladače.
CPPFLAGS: příznaky preprocesoru C.
LDFLAGS: příznaky sestavovacího programu.
LIBS: přídavné knihovny.
Kompilace serveru
Poté co software zkonfigurujete, můžete začít s kompilací. Nejdříve vygenerujete závislosti pomocí příkazu:
make depend
a pak už můžete zkompilovat server příkazem:
make
Běží-li vše, jak má, server bude zkompilován dle konfigurace. Pokud nikoli, vraťte se k předcho-zímu kroku a zkontrolujte
konfiguraci. Také byste si měli v tom adresáři, kde jste tento software rozbalili, přečíst soubory INSTALL a README. Také
zkontrolujte pokyny, které se vztahují ke skrip-tu configure – jsou umístěny na cestě doc/install/configure pod adresářem, do nějž
jste roz-balili daný software.
O tom, zda je server vygenerován správně, se můžete přesvědčit pomocí sady testů (což zabere nanejvýš pár minut):
make test
Spustí se pouze testy odpovídající dané konfiguraci a ty by měly projít. Některé testy mohou být
vynechány, například test replikace.
Nyní nainstalujte binární soubory a manuálové stránky. Je možné, že to budete muset provést jako
superuživatel (záleží na tom, kam budete instalovat):
su root -c ‘make install’
To je vše, vytvořili jste binární soubory serveru a několika dalších nástrojů. Konfiguraci serveru LDAP naleznete v následující
kapitole.
Konfigurace serveru LDAP
Jakmile máte software nainstalovaný, můžete začít s konfigurací pro danou síť. Pro konfiguraci démona slapd v době běhu je
určen soubor slapd.conf nainstalovaný v adresáři zadaném v kon-figuračním skriptu nebo implicitně v adresáři /usr/local/etc/
openldap .
V této části podrobně probereme nejdůležitější konfigurační příkazy v souboru slapd.conf. Jejich úplný seznam naleznete v
manuálových stránkách man 5 slapd.conf. Konfigurační příkazy jsou rozděleny dle toho, k čemu jsou určeny, na globální,
strukturové a databázové. Zde naleznete popis těchto příkazů, implicitní hodnoty (pokud existují) a příklady použití.
Tvar konfiguračního souboru
Soubor slapd.conf obsahuje tři typy konfiguračních informací: globální, strukturové a databázo-vé. Nejdříve jsou uvedeny globální
informace, dále následují informace, které se týkají typu struk-tury, a nakonec informace o konkrétní použité databázi.
Globální příkazy mohou být přepsány v příkazech pro strukturu a/nebo databázi, příkazy pro
strukturu mohou být přepsány databázovými příkazy.Prázdné řádky a komentáře začínající znakem # jsou ignorovány. Začíná-li
řádek mezerou, jepovažován za pokračování předchozího řádku. Obecný tvar souboru slapd.conf je takovýto:
# globální konfigurační příkazy
<globální konfigurační příkazy>
# definice struktury
backend <typeA>
<příkazy pro strukturu >
# definice první databáze & konfigurační příkazy
database <typeA>
<příkazy pro databázi>
# definice druhé databáze & konfigurační příkazy
database <typeB>
<příkazy pro databázi>
# druhá definice databáze "typeA" & konfigurační příkazy
database <typeA>
<příkazy pro databázi>
# následují definice struktury & databáze & konfigurační příkazy
...
Konfigurační příkaz může mít parametry oddělené mezerami. Obsahuje-li parametr mezeru, je nutno jej uvést v uvozovkách,
„takto“. Obsahuje-li parametr znak dvojitou uvozovku nebo obrácené lomítko „\“, musí před ním být obrácené lomítko „\“.
Distribuce obsahuje příklad konfiguračního souboru, který bude nainstalován v adresáři /usr/local/etc/openldap . Soubory obsahující
definice schémat (typy atributů a třídy objektů) jsou také uloženy v adresáři /usr/local/etc/openldap/schema.
Globální příkazy
Příkazy popsané v této části se vztahují ke všem strukturám a databázím, ledaže by byly speciál-ně přepsány v definicích struktur
a databází. Parametry, které mají být nahrazeny textem, jsou uve-deny v lomených závorkách, <>.
access to <what> [ by <who> <accesslevel> <control> ]+
Tento příkaz opravňuje k přístupu (blíže určeném v <accesslevel>) k množině položek a/nebo atributů (blíže určených ve <what>)
jednomu nebo více žadatelům (blíže určeným ve <who>). Pří-klady s dalšími podrobnostmi viz kapitola „Příkazy na řízení“.
Důležité: Nejsou-li uvedeny příkazy pro oprávnění k přístupu, implicitní nastavení oprávnění k přístupu (access to * by * read)
znamená, že oprávnění ke čtení mají jak autentizovaní, tak i ano-nymní uživatelé.
attributetype <RFC2252 Attribute Type Description>
Tento příkaz definuje typy atributů. Další podrobnosti naleznete na stránkách Schema Specificati-on na adrese http://
www.openldap.org/doc/admin22/schema.html.
idletimeout <integer>
Počet vteřin čekání před vynuceným uzavřením nepoužívaného klientského spojení. Implicitní hodnota je 0 a znamená
zablokování této funkce.
include <filename>
Tento příkaz zadává, že slapd má číst další konfigurační údaje z uvedeného souboru, než bude pokračovat na dalším řádku
běžného souboru. Soubor uvedený v příkazu include jako parametr musí mít tvar běžného konfiguračního souboru. Obvykle se
používá pro specifikaci schématu.
Poznámka
Při používání tohoto příkazu musíte být opatrní. Hloubka vnoření příkazů include není
omezena a neprovádí se detekce zacyklení.
loglevel <integer>
Tento příkaz udává úroveň zaznamenávání ladicích příkazů a operační statistiky do logu (běžně připojeného ke kategorii
LOCAL4 démona syslogd(8)). Aby to fungovalo, OpenLDAP musí být zkonfigurován s volbami --enable-debug ( implicitně) –
kromě úrovní dvou statistik, které jsou aktivovány vždy. Úrovně zápisu do logu lze zvyšovat. Vztah mezi zadanými čísly a
úrovněmi ladění zjistíte buď spuštěním slapd -? nebo z následující tabulky. Možné hodnoty parametru <integer> jsou:
Úrovně ladění
Úroveň Popis
-1 aktivace veškerého ladění 0 žádné ladění 1 funkce sledování 2 zpracování ladicích paketů 4 rozsáhlé sledování 8 správa spojení
16 výpis odeslaných a obdržených paketů 32 hledání filtrů 64 konfigurační soubor 128 seznam přístupů 256 statistiky spojení/
operací/výsledků 512 statistika logovacích položek 1024 tisková komunikace se strukturou shellu 2048 ladění lexikální analýzy
tiskových položek
Příklad: loglevel 255, resp. loglevel -1 Do logu se bude zapisovat velké množství ladicích údajů. Implicitně: loglevel 256
objectclass <RFC2252 Object Class Description>
Tento příkaz definuje třídu objektů. Další podrobnosti naleznete na stránkách Schema Specificati-on (http://www.openldap.org/
doc/admin22/schema.html).
referral <URI>
Tento příkaz specifikuje doporučení, které má vrátit, když slapd nenajde lokální databázi, aby mohl zpracovat požadavek.
Příklad: referral ldap://root.openldap.org
Tento příkaz odkáže nelokální dotazy na globální kořenový server LDAP projektu OpenLDAP. Důvtipní klienti mohou zadat
dotaz znovu tomuto serveru, avšak většina klientů pouze chce vědět, jak má zpracovat jednoduché URL, které se skládá z názvu
stanice a volitelně i rozlišitelné jmenné části.
sizelimit <integer>
Tento příkaz udává maximální počet položek, které má vrátit vyhledávací operace.Implicitně: sizelimit 500timelimit <integer>
Tento příkaz udává maximální počet vteřin (v reálném čase), jak dlouho může slapd trvat odpo-věď na požadavek vyhledávání.
Není-li požadavek v tomto čase proveden, je vrácen výsledeks indikací překročení časového limitu.
Implicitně: timelimit 3600
Obecné příkazy pro strukturu
Příkazy v této kapitole se vztahují pouze na strukturu, v níž jsou definované. Jsou podporovány všemi typy struktur. Příkazy pro
strukturu platí pro všechny databáze téhož typu a v závislosti na konkrétním příkazu mohou být přepsány databázovými příkazy.
backend <type>
Tento příkaz označuje začátek definice struktury; <type> by měl být některý bdb nebo jeden z jiných podporovaných typů struktur
dle následujícího seznamu:
Struktury databází
Typ
bdb
dnssrv
ldbm
ldap
meta
monitor
Popis
transakční struktura Berkeley DB
struktura DNS SRV
struktura Lightweight DBM
struktura Lightweight Directory Access Protocol (Proxy)
struktura Meta Directory
struktura Monitor
passwd
perl
shell
sql
zajišuje pouze čtení z passwd(5)
programátorská struktura Perlu
struktura Shellu (externí program)
programovatelná struktura SQL
Příklad: backend bdb Tento příkaz označuje začátek definice nové struktury BDB.
Obecné databázové příkazy
Příkazy v této kapitole se vztahují pouze na databázi, v níž jsou definované. Jsou podporovány všemi typy databází.
database <type>
Tento příkaz označí začátek definice nového databázového procesu; <type> by měl být jeden z typů struktur uvedených v
předchozí položce.
Příklad: database bdb
Tento příkaz označuje začátek definice nového výskytu databáze se strukturou BDB.
readonly { on | off }
Tento příkaz převede databázi do režimu „read-only“, v němž lze z databáze pouze číst. Pokusy
o modifikaci databáze budou odmítnuty s hlášením chyby „unwilling to perform“.
Implicitně: readonly off replica uri=ldap[s]://<hostname>[:<port>] |
host=<hostname>[:<port>] [bindmethod={simple|kerberos|sasl}]
["binddn=<DN>"] [saslmech=<mech>] [authcid=<identity>]
[authzid=<identity>]
[credentials=<password>]
[srvtab=<filename>]
Tento příkaz zadává umístění kopie dané databáze. Parametr uri= zadává schéma, počítač a voli-telně i port, kde lze nalézt dceřiný
proces slapd. Na místě <hostname> může být jméno domény nebo IP adresa. Není-li zadán <port>, použije se standardní číslo
portu LDAP (389 nebo 636).
Poznámka
Parametr uri má přednost před host.
Parametr uri umožňuje zadat server LDAP pro uložení kopie jako LDAP URI, např.
ldap://slave.example.com:389 nebo ldaps://slave.example.com:636. Parametr binddn= svazuje DN pro aktualizaci s dceřiným
procesem slapd. DN by měl mít opráv-nění ke čtení i zápisu do databáze dceřiného procesu slapd. Musí také být ve shodě s
příkazem updatedn v konfiguračním souboru démona slapd. Obecně by tento DN neměl být totožný s rootdn v hlavní databázi.
Vzhledem k tomu, že DN pravděpodobně obsahují mezery, celý řetě-zec „binddn=<DN>“ by měl být uzavřen ve dvojitých
uvozovkách.
Parametr bindmethod je simple nebo kerberos nebo sasl v závislosti na tom, zda při připojování k dceřinému procesu slapd je
použita jednoduchá autentizace na základě hesla nebo Kerberos nebo SASL.
Jednoduchá autentizace by se neměla používat, pokud není v činnosti příslušná ochrana integrity a soukromí (např. TLS nebo
IPSEC). Při jednoduché autentizaci musí být zadány binddn a para-metry s autentizačními údaji.
Autentizační mechanismus SASL má přednost před autentizací Kerberos, konkrétně jde o mecha-nismy KERBEROS_V4 a
GSSAPI. Autentizace pomocí mechanismu Kerberos vyžaduje parametry binddn a srvtab.
Obecně lze doporučit autentizaci SASL. Pokud ji použijete, mechanismus musíte zadat v paramet-ru saslmech. V závislosti na
vybraném mechanismu lze pomocí authcid, resp. credentials, zadat autentizační totožnost a/nebo autentizační údaje. K zadání
autorizační totožnosti slouží parametr authzid.
Další podrobnosti o tomto příkazu naleznete na stránkách Replication with Slurpd (http://www.openldap.org/doc/admin22/
replication.html).
replogfile <filename>
Tento příkaz zadává jméno replikačního logovacího souboru, do nějž bude slapd zapisovat změny. Do replikačního logu obvykle
zapisuje slapd a čte z něho slurpd. Tento příkaz se použí-vá zejména tehdy, když probíhá replikace databáze pomocí slurpd.
Můžete jej však použít i k vytvoření transakčního logu, když slurpd není v činnosti. V takovém případě budete ovšem muset ze
souboru pravidelně odstraňovat nepotřebná data, jinak nekontrolovaně poroste.
Další podrobnosti o tomto příkazu naleznete na stránkách Replication with Slurpd (http://www.openldap.org/doc/admin22/
replication.html).
rootdn <dn>
Tento příkaz zadává DN, které nepodléhá žádným kontrolám přístupu k databázi ani jiným admi-nistrativním omezením. Musí
mít přístup ke všem položkám v adresáři. Může se odkazovat na totožnost SASL.
Příklad (položky): rootdn “cn=Manager, dc=example, dc=com” Příklad (SASL): rootdn “uid=root,cn=example.com,cn=digest-md5,cn=auth”
rootpw <password>
Tento příkaz je možno použít k zadání hesla pro rootdn (když je rootdn nastaveno na DN uvnitř databáze).
Příklad: rootpw secret Je také přípustné provést transformaci hesla do tvaru RFC 2307. Transformaci může provést napří-klad
slappasswd.
Příklad: rootpw {SSHA}ZKKuqbEKJfKSXhUbHG3fG8MDn9j1v4QN Transformace byla
provedena příkazem slappasswd -s secret.
suffix <dn suffix>
Tento příkaz zadává příponu DN dotazů, které budou předávány struktuře této databáze. Můžebýt zadáno více řádků s příponami,
pro každou definici databáze musí být zadán alespoň jeden.Příklad: suffix “dc=example, dc=com”Struktuře budou předány dotazy se
zakončením DN „dc=example, dc=com“.
Poznámka
Když je vybrána struktura pro předání dotazu, slapd se ve všech definicích databází podí-vá na řádky s příponami v tom
pořadí, v jakém se nacházejí v souboru. Je-li tedy jedna pří-pona databáze předponou jiné, musí být v konfiguračním
souboru uvedena za ní.
syncrepl
Tento příkaz se používá k synchronizaci replikované databáze s hlavní databází, takže obsah re
plikované databáze je udržován v aktuálním stavu v souladu s hlavní databází.Tento příkaz není v tomto dokumentu popsán
podrobně, protože konfigurujeme samostatný ser-ver LDAP. Další informace o tomto příkazu naleznete na stránkách LDAP Sync
Replication(http://www.openldap.org/doc/admin22/syncrepl.html).
updatedn <dn>
Tento příklad se vztahuje pouze na dceřiný proces slapd. Určuje přípustná DN, jež mohou pro-vádět změny v kopii databáze. Tak
může být DN slurpd připojeno při provádění změn ke kopiinebo k DN spojenému s totožností SASL.
Příklad (položky): updatedn “cn=Update Daemon, dc=example, dc=com”Příklad (SASL): updatedn “uid=slurpd,cn=example.com,cn=digestmd5,cn=auth ”Další podrobnosti o tomto příkazu naleznete na stránkách Replication with Slurpd
(http://www.openldap.org/doc/admin22/replication.html).
updateref <URL>
Tento příkaz je použitelný pouze v dceřiném procesu slapd. Zadává URL, jež má být vráceno kli-entům, kteří zaslali požadavek
na aktualizaci kopie databáze. Je-li uvedeno několik URL, předává je všechna.
Příklad: updateref ldap://master.example.net
Příkazy databáze BDB
Tato kategorie příkazů se vztahuje pouze na databázi BDB. Musí tedy být za řádkem „database bdb“ a před řádky „backend“ a
„database“, které následují. Úplný přehled konfiguračních příkazů BDB naleznete na manuálových stránkách slapd-bdb (man
slapd-bdb).
directory <directory>
Tento příkaz zadává adresář, v němž jsou umístěny soubory s databází BDB a příslušné indexy. Implicitně: directory /usr/local/
var/openldap-data
sessionlog <sid> <limit>
Tento příkaz definuje úložiště logů daného sezení na serveru poskytovatele kopie syncrepl, které obsahuje informace o
sledovaných položkách v kopii databáze určených pomocí <sid>. První požadavek na hledání syncrepl má v cookie, které
vytvořilo úložiště logu daného sezení na ser-veru poskytovatele, stejnou hodnotu <sid>. Počet položek v úložišti je omezen
parametrem <limit>. Přebytečné položky jsou z úložiště odstraňovány v pořadí FIFO. <sid> a <limit> jsou nezá-porná celá čísla.
< sid> může mít nejvýš tři dekadické číslice.
Synchronizace obsahu provedená v předchozím sezení mohla z důvodu omezení synchronizačních přenosů použít úložiště logů.
Není-li kopie databáze tak stará, aby ji nebylo možné aktualizovat z dat uložených v úložišti sezení, poskytovatel slapd pošle
zákazníkovi slapd jména sledovaných položek společně s položkami, jež byly přidány nebo modifikovány v kopii databáze. Je-li
však databáze natolik zastaralá, že ji nelze z tohoto úložiště aktualizovat, poskytovatel slapd pošle jména sledovaných položek,
které nebyly změněny, společně s těmi, které byly změněny. Zákazník pak v kopii odstraní ty položky, které nejsou v obsahu
poskytovatele označeny jako přítomné.
Další informace o tomto příkazu naleznete na stránkách LDAP Sync Replication (http://www.openl dap.org/doc/admin22/
syncrepl.html).
Databázové příkazy LDBM
Příkazy v této kategorii se vztahují pouze k struktuře databáze LDBM. Musí tedy být až za řádkem „database ldbm“ a před řádky
„database“ a „backend“, které následují. Úplný přehled konfigurač-ních příkazů LDBM naleznete na manuálových stránkách
slapd-ldbm (man slapd-ldbm).
cachesize <integer>
Tento příkaz zadává velikost rychlé vyrovnávací paměti (cache) v položkách používané procesem,který byl vytvořen strukturou
databáze LDBM.Implicitně: cachesize 1000
dbcachesize <integer>
Tento příkaz zadává velikost rychlé vyrovnávací paměti (cache) v bajtech přiřazené indexovému souboru. Pokud příslušná
databázová metoda tuto paměť nepotřebuje, příkaz je bez komentáře ignorován. Zvětšíte-li hodnotu parametru, zvýší se spotřeba
paměti, avšak také může dramaticky vzrůst výkon, a to zvlášť při modifikaci databáze nebo při vytváření indexů.
Implicitně: dbcachesize 100000
dbnolocking
Je-li tato volba přítomna, blokuje zamykání databáze. Její aktivace může zvýšit výkon za cenu snížení bezpečnosti databáze.
dbnosync
Tato volba ruší okamžitou synchronizaci disku s operační pamětí při změně jejího obsahu. Aktivace této volby může zvýšit výkon
za cenu snížení bezpečnosti databáze.
directory <directory>
Tento příkaz zadává adresář se soubory LDBM obsahujícími databázi a příslušné indexové sou-bory. Implicitně: directory /usr/local/
var/openldap-data
index {<attrlist> | default } [pres,eq,approx,sub,none]
Tento příkaz zadává indexy, které mají být udržovány pro daný atribut. Je-li zadáno pouze <attr
list >, jsou udržovány implicitní indexy.
Příklad:
index default pres,eq index uid index cn,sn pres,eq,sub index objectClass eq
První řádek nastaví implicitní množinu indexů tak, aby byly udržovány pro present a equality. Druhý řádek říká, že implicitní
množina indexů (pres,eq) má být udržována pro typ atributu uid. Třetí řádek říká, že indexy present, equality a substring mají být
udržovány pro typy atributů cn a sn. Čtvrtý řádek říká, že index equality má být udržován pro typ atributu objectClass.
Implicitně nejsou udržovány žádné indexy. Obecně lze doporučit, aby byl udržován alespoň index equality pro objectClass. index
objectClass eq
mode <integer>
Tento příkaz zadává režim ochrany nově vytvořených indexových souborů. Implicitně: mode 0600
Příklady na řízení přístupu
Příkaz access je velice silným nástrojem pro řízení přístupu. V této kapitole si ukážeme několik příkladů použití. Nejdříve několik
jednodušších příkladů:
access to * by * read
Tento příkaz zadává, že všichni mohou číst.
Následující příklad znázorňuje, jak se dvěma příkazy access s regulárními výrazy vyberou polož
ky pomocí DN, přičemž je důležité pořadí těchto příkazů.
access to dn=".*, o=U of M, c=US"
by * search
access to dn=".*, c=US"
by * read
Položky v podstromě pod c=US mohou číst s výjimkou položek v podstromě pod „o=U z M, c=US“, které mohou vyhledávat.
c=US nemá povolen žádný přístup, neboť žádný příkaz access není shodný s tímto DN. Pokud byste tyto příkazy provedli v
opačném pořadí, příkaz s U-M by nikdy nebyl ve shodě, neboť všechny položky U-M jsou současně položkami c=US.
Stejný přístup lze zadat i takto:
access to dn.children="dc=example,dc=com"
by * search
access to dn.children="dc=com"
by * read
Položky v podstromě pod dc=com mohou číst s výjimkou položek v podstromě pod dc=exam-ple,dc=com, které mohou
vyhledávat. dc=com nemá povolen žádný přístup, neboť žádný příkaz access není shodný s tímto DN. Pokud byste tyto příkazy
provedli v opačném pořadí, druhý pří-kaz by se nikdy neprovedl, neboť všechny položky pod dc=example,dc=com jsou současně
pod položkami dc=com.
Poznámka
Všimněte si také, že pokud se příkaz neprovede nebo klauzule „by <who>“ není ve shodě,
přístup není povolen. To znamená, že všechny příkazy access to jsou implicitně ukončeny
klauzulí * none a všechny seznamy přístupů jsou implicitně ukončeny příkazem access to
* by * none.
V následujícím příkladu si opět ukážeme, jak důležité je pořadí příkazů access a současně i klau-zulí „by <who>“. Příkaz také
znázorňuje, jak můžete pomocí selektoru atributů poskytnout přístup k určitému atributu a k různým selektorům <who>.
access to dn.subtree="dc=example,dc=com" attr=homePhone
by self write
by dn.children=dc=example,dc=com" search
by peername=IP:10\..+ read access to dn.subtree="dc=example,dc=com"
by self write
by dn.children ="dc=example,dc=com" search
by anonymous auth
Tento příklad se vztahuje k položkám v podstromě „dc=example,dc=com“. Tyto položky mohou zapisovat do svých atributů
kromě homePhone, položky pod položkami example.com se mohou prohledávat. Nikdo jiný nemá přístup (implicitně platí *
none) kromě autentizace a autorizace, jež jsou vždy prováděny anonymně. Položka může zapisovat do atributu homePhone,
mohou jej pro-hledávat položky pod example.com, mohou jej číst klienti připojení ze sítě 10 a jinak jej nemůže číst nikdo
(implicitně platí * none). Všechny ostatní přístupy jsou implicitně odmítnuty klauzulí * by * none.
Někdy je vhodné povolit určitému DN, aby se samo smělo přidávat k atributu a odstraňovat se z něj. Když například chcete
vytvořit skupinu a povolit uživatelům, aby směli k atributu member přidávat pouze svoje DN a odstraňovat je, můžete to provést
například takovýmto příkazem:
access to attr=member,entry by dnattr=member selfwrite
Selektor <who> dnattr říká, že přístup platí pro položky v atributu member. Selektor zápisu sama do sebe říká, že tito členové
mohou do atributu přidávat nebo z něj odstraňovat pouze svoje DN, jiné hodnoty nikoli. Přidávání atributu položky je nutné,
protože přístup k položce znamená přístup ke všem jejím atributům.
Mnoho dalších informací o řízení přístupu je uvedeno v OpenLDAP Administrator’s Guide. Chce-te-li se s nimi seznámit,
nahlédněte na stránky Access Control (http://www.openldap.org/doc/ admin22/slapdconfig.html#Access Control).
Příklad konfiguračního souboru
Následuje příklad konfiguračního souboru proloženého vysvětlujícím textem. Soubor definuje dvě databáze pro zpracování
různých částí stromu X.500; obě jsou procesy BDB. Čísla řádků slouží pouze odkazům v textu a ve skutečnosti nejsou součástí
souboru. Nejprve tedy globální konfigurační část:
# example config file - global configuration section
include /usr/local/etc/schema/core.schema
referral ldap://root.openldap.org
access to * by * read
První řádek je komentář. Druhý řádek obsahuje jiný konfigurační soubor, v němž je definice základního schématu. Příkaz referral
na třetím řádku znamená, že dotazy, které nejsou lokální vzhledem k žádné z níže definovaných databázi, budou odkázány na
server LDAP, který běží na standardním portu (389) na počítači root.openldap.org.
Na řádku 4 je zadán globální přístup. Vztahuje se na všechny položky (po všech příkazech pro
řízení přístupu, které se vztahují k databázi). Následující část konfiguračního souboru definuje strukturu BDB, která bude
zpracovávat dotazy v části stromu „dc=example,dc=com“. Databáze bude replikovaná na dva dceřiné slapd, jeden na slave1,
druhý na slave2. Indexy budou udržovány pro několik atributů a atribut userPassword bude chráněn proti neautorizovanému
přístupu.
# BDB definition for the example.com
database bdb
suffix "dc=example,dc=com"
directory /usr/local/var/openldap-data
rootdn "cn=Manager,dc=example,dc=com"
rootpw secret
# replication directives
replogfile /usr/local/var/openldap/slapd.replog
replica uri=ldap://slave1.example.com:389
binddn="cn=Replicator,dc=example,dc=com"
bindmethod=simple credentials=secret
replica uri=ldaps://slave2.example.com:636
binddn="cn=Replicator,dc=example,dc=com"
bindmethod=simple credentials=secret
# indexed attribute definitions
index uid pres,eq
index cn,sn,uid pres,eq,sub
index objectClass eq
# database access control definitions
access to attr=userPassword
by self write
by anonymous auth
by dn.base="cn=Admin,dc=example,dc=com" write
by * none
access to *
by self write
by dn.base="cn=Admin,dc=example,dc=com" write
by * read
Řádek 5 je komentář. Začátek definice databáze je označen klíčovým slovem databáze na řádku
6. Řádek 7 specifikuje příponu DN pro dotazy předávané této databázi. Řádek 8 specifikuje adre
sář, v němž se budou nacházet databázové soubory.Řádky 9 a 10 identifikují databázovou položku „super user“ a heslo, které k ní
náleží. Tato polož-ka není předmětem řízení přístupu, omezení velikosti ani časové prodlevy. Nezapomeňte, prosím,rootpw
zašifrovat pomocí slappasswd.
Příklad: rootpw {SSHA}Jq4xhhkGa7weT/0xKmaecT4HEXsdqiYA
Řádky 11 až 18 zajišťují replikace. Další informace o tomto příkazu viz odkaz na stránky Replica-tion (http://www.openldap.org/
doc/admin22/replication.html).Řádky 20 až 22 udávají, které indexy se mají udržovat pro různé atributy.Řádky 24 až 32
specifikují řízení přístupu pro položky v této databázi. Vzhledem k tomu, že je to
první databáze, řízení se také vztahuje na položky, které nejsou obsaženy v žádné databázi (např.Root DSE). Pro všechny položky
platí, že do atributu userPassword může psát položka samaa položka „admin“. Lze ji používat pro účely autentizace a autorizace,
jinak ji ale nelze číst. Dovšech ostatních atributů může psát položka sama a položka „admin“, avšak mohou ji číst všichniuživatelé
(autentizovaní i neautentizovaní).
Následující část ukázkového konfiguračního souboru definuje jinou databázi BDB. Ta zpracovává dotazy z podstromu
dc=example,dc=net, avšak je spravovaná stejnou entitou jako první databáze. Všimněte si, že bez řádku 39 by kvůli globálnímu
přístupovému pravidlu na řádku 4 bylo povoleno čtení.
# BDB definition for example.net
database bdb
suffix "dc=example,dc=net"
directory /usr/local/var/openldap-data-net
rootdn "cn=Manager,dc=example,dc=com"
index objectClass eq
access to * by users read
Provozování serveru LDAP
Démon slapd je určen k provozování na samostatném serveru. To umožňuje tomuto serveru vyu-žít rychlou vyrovnávací paměť,
paralelně spravovat problémy podpůrných databází a šetřit systé-mové prostředky. Spuštění pomocí démona (x)inetd není
podporováno.
Volby příkazového řádku
Slapd podporuje řadu voleb příkazového řádku, jak je podrobně uvedeno v manuálových strán-kách. V této kapitole se budeme
detailně věnovat jen několika často používaným volbám:
-f <filename>
Tato volba zadává alternativní konfigurační soubor pro slapd. Implicitní je obvykle /usr/local/etc/openldap/slapd.conf.
-h <URLs>
Tato volba zadává alternativní konfigurace naslouchání. Implicitní je ldap:///, z níž plyne LDAP přes TCP na všech rozhraních na
implicitním portu LDAP 389. Můžete zadat zvláštní dvojice počí-tač – port nebo jiná schémata protokolu (např. ldaps:// nebo
ldapi://). Například -h „ldaps:// ldap://127.0.0.1:667“ vytvoří dva posluchače: jednoho pro LDAP přes SSL na všech rozhraních na
implicitním portu LDAP/SSL 636 a jednoho pro LDAP přes TCP na rozhraní lokálního počítače (prázdná smyčka) na portu 667.
Počítače mohou být specifikovány v dekadickém tvaru IPv4 s tečkami nebo pomocí jmen počítačů. Hodnoty portů musí být
číselné.
-n <service-name>
Tato volba zadává jméno služby pro logování a podobné účely. Implicitní jméno služby je slapd.
-l <syslog-local-user>
Tato volba zadává lokálního uživatele pro syslog (8). Hodnotami může být LOCAL0, LOCAL1, LOCAL2, ... a LOCAL7.
Implicitní hodnotou je LOCAL4. Tuto volbu nemusí podporovat všechny systémy, podrobnosti viz kapitola „Logy“.
-u user -g group
Tyto volby zadávají uživatele a skupinu, kteří budou provozovat slapd; user může být buď jméno uživatele nebo uid ; group může
být jméno skupiny nebo gid.
-r directory
Tato volba zadává adresář v době běhu. Po otevření posluchačů, avšak před čtením konfigurač-ních souborů a inicializací
struktury si slapd příkazem chroot vytvoří z tohoto adresáře nový koře-nový adresář.
-d <level> | ?
Tato volba nastaví úroveň ladění slapd na <level>. Je-li level znak „?“, slapd vytiskne různé režimy ladění a ukončí se bez ohledu
na případné další volby. Úrovně ladění popisuje následující tabulka:
Úrovně ladění
Úroveň Popis
-1 aktivace veškerého ladění 0 žádné ladění 1 funkce sledování 2 zpracování ladicích paketů 4 rozsáhlé sledování 8 správa spojení
16 výpis odeslaných a obdržených paketů 32 hledání filtrů 64 konfigurační soubor 128 seznam přístupů 256 statistiky spojení/
operací/výsledků 512 statistika logovacích položek 1024 tisková komunikace se strukturou shellu 2048 ladění lexikální analýzy
tiskových položek
Můžete aktivovat několik úrovní tak, že zadáte volbu pro každou požadovanou úroveň. Anebo, vzhledem k tomu, že úroveň
ladění je aditivní, můžete si ji spočítat sami. Když tedy například chcete sledovat volání funkcí a současně zpracovávaný
konfigurační soubor, úroveň nastavíte na součet těchto dvou úrovní (v tomto případě -d 65). Anebo můžete přenechat tento
výpočet na slapd (např. -d 1 -d 64). Další podrobnosti viz soubor ldap.h.
Poznámka
Aby bylo možno tyto úrovně zadávat, slapd musí být přeložen s volbou
-DLDAP_DEBUG
Spuštění serveru LDAP
Obecně spustíte slapd takto:
/usr/local/etc/libexec/slapd [<option>]*
kde /usr/local/etc/libexec je určen příkazem configure a <option> je jedna z voleb popsa-ných shora (viz slapd(8)). Pokud úroveň
ladění nezadáte (a to i úroveň 0), slapd automaticky vytvoří nový proces, odpojí se od řídicího terminálu a spustí se na pozadí.
Zastavení serveru LDAP
slapd bezpečně zastavíte například příkazem:
kill -INT `cat $(ETCDIR)/slapd.pid`
Drastičtější zastavení by mohlo databázi narušit, neboť před ukončením činnosti musí slapd vyprázdnit různé bufery.
Poznamenejme, že slapd zapíše svůj pid do souboru slapd.pid , který je v adresáři uvedeném v souboru slapd.conf, například /usr/
local/var/slapd.pid .
Slapd také zapíše svoje parametry do souboru slapd.args, který je v adresáři uvedeném v sou-boru slapd.conf, například /usr/local/var/
slapd.args .
Vytvoření a údržba databáze
V této kapitole se dočtete, jak máte vytvořit databázi slapd od úplného počátku. Databázi může-te vytvořit dvěma způsoby.
Zaprvé on-line pomocí LDAP. Při použití této metody pouze spustíte slapd a pomocí klienta LDAP, kterého si vyberete, přidáte
položky. Tato metoda je vhodná pro relativně malé databáze (v závislosti na požadavcích to může být několik set nebo tisíc
položek). Tato metoda funguje u těch typů databází, které podporují aktualizaci.
Druhou metodou je vytvoření databáze v off-line pomocí speciálních nástrojů obsažených ve slapd. Tato metoda je nejlepší tehdy,
když máte vytvořit mnoho tisíc položek, jejichž vytváření by trvalo pomocí LDAP nepřijatelně dlouho, nebo když nutně
potřebujete zcela prázdnou databázi, do níž nemůže nikdo nic zapsat při vytváření. Poznamenejme ještě, že tyto nástroje
nepodporují všechny typy databází.
Vytváření databáze v době běhu (on-line)
Balík OpenLDAP obsahuje nástroj jménem ldapadd, který můžete použít ke vkládání položek v době běhu serveru LDAP.
Chcete-li vytvářet databázi v režimu on-line, položky můžete přidávat tímto nástrojem (avšak nejen jím, k tomuto účelu existují i
jiní klienti mimo balík OpenLDAP, například Ldap Browser, který najdete na http://www.iit.edu/~gawojar/ldap/). Po přidání
prvních položek můžete pokračovat s přidáváním pomocí ldapadd i nadále. Před spuštěním slapd byste se měli přesvědčit, zda jste
v souboru slapd.conf zadali tuto konfigurační volbu:
suffix <dn>
Jak je popsáno v kapitole „Obecné databázové příkazy“, tato volba říká, které položky má tato databáze obsahovat. Zde byste si
měli nastavit DN kořene podstromu, který vytváříte. Například:
suffix “o=TUDelft, c=NL”
Měli byste se přesvědčit, zda uvádíte adresář, v němž budou vytvářeny indexové soubory:
directory /usr/local/tudelft
Adresář musí být vytvořen s příslušnými přístupovými právy – slapd musí mít oprávnění k zápisu. Slapd musí být zkonfigurován
tak, že se k němu budete moci připojit jako uživatelský adresář s oprávněním přidávat položky. Můžete si zkonfigurovat adresář s
podporou superuživatele nebo uživatele root jenom pro tento účel. V definici databáze můžete například zadat tyto dvě volby:
rootdn <dn>
rootpw <passwd> /* Nezapomeňte zde použít heslo SHA !!! */
Těmito volbami zadáte DN a heslo, jež použijete k autentizaci položky „superuživatel“ v databázi (tj. položka, která může dělat
všechno). Zadané DN a heslo budou fungovat vždy, bez ohledu na to, zda daná položka skutečně existuje a má dané heslo. Tím je
vyřešen problém slepice a vejce, neboli jak autentizovat a přidávat položky v době, kdy ještě žádné neexistují.
Slapd pochopitelně pozná, jestli používáte šifrované heslo SHA-1 nebo příkaz rootpw. Já použí-vám třídu v jazyce Java, která
generuje hesla SHA-1 – je však možné generovat hesla příkazem slappasswd:
slappasswd -h {SHA} rootpw “{SHA}5en6G6MezRroT3XKqkdPOmY/BfQ=”
Například:
rootdn “cn=Manager,dc=example,dc=com”
rootpw “{SHA}5en6G6MezRroT3XKqkdPOmY/BfQ=”
Implicitním výstupem slappasswd je generování hesel Secure Hash (SSHA), v tomto případě
nemusíte předávat parametr -h, stačí zavolat přímo slappasswd. Používáte-li k identifikaci proti LDAP autentizační mechanismus
SASL, řádek rootpw můžete zru-šit. Další podrobnosti jsou uvedeny v kapitolách „Obecné databázové příkazy“ a
„Autentizacepomocí LDAP”.
Nakonec byste se měli přesvědčit, zda definice databáze obsahuje i definici těch indexů, které
potřebujete:
index {<attrlist> | default } [pres,eq,sub,none]
Abyste například mohli indexovat atributy cn, sn, uid a objectclass, je nutno zadat tyto konfigurační řádky indexů:
index cn,sn,uid pres,eq,sub index objectClass pres,eq
Poznámka
Nikoli všechny typy indexů jsou vhodné pro všechny typy atributů. Příklady naleznete
v kapitole „Datové příkazy LDBM“.
Jakmile jste si vše zkonfigurovali podle svých představ, spusťte slapd, spojte se s klientem LDAP a začněte přidávat položky.
Kdybyste například chtěli přidat položku TUDelft následovanou položkou Postmaster pomocí nástroje ldapadd, vytvoříte soubor /
tmp/newentry , který bude obsahovat:
o=TUDelft, c=NL objectClass=organization description=Technical University of Delft Netherlands
cn=Postmaster, o=TUDelft, c=NL objectClass=organizationalRole cn=Postmaster description= TUDelft postmaster - [email protected]
a položku pak vytvoříte například příkazem:
ldapadd -f /tmp/newentry -x -D “cn=Manager, o=TUDelft, c=NL” -w secret
Příkaz shora předpokládá, že jste nastavili rootdn na „cn=Manager, o=TUDelft, c=NL“ a rootpw na „secret“ (SHA-1 může být
zašifrováno v slapd.conf ). Nechcete-li psát heslo na příkazový řádek, místo volby -w password zadejte v příkazu ldapadd volbu W a program si heslo vyžádá:
ldapadd -f /tmp/newentry -x -D “cn=Manager, o=TUDelft, c=NL” -W Enter LDAP Password:
Nezávislé vytváření databáze (off-line)
Druhá metoda vytváření databáze probíhá off-line prostřednictvím nástrojů databáze popsaných shora. Tato metoda je vhodná,
když máte vytvářet několik tisíc položek, jejichž vytváření by shora popsanou metodou LDAP trvalo nepřiměřeně dlouho. Tyto
nástroje čtou konfigurační soubor slapd a vstupní soubor LDIF, který obsahuje textovou podobu položek, jež mají být přidány.
Data-bázové soubory těch databází, které podporují tyto nástroje, jsou vytvářeny přímo (jinak je nutno použít on-line metodu
popsanou shora). V konfiguračním souboru je nejdříve nutno nastavit několik důležitých konfiguračních voleb:
suffix <dn>
Jak je uvedeno v předchozí kapitole, tato volba říká, které položky má tato databáze obsahovat. Zde byste si měli nastavit DN
kořene podstromu, který vytváříte. Například:
suffix “o=TUDelft, c=NL”
Měli byste se přesvědčit, zda uvádíte adresář, v němž budou vytvářeny indexové soubory:
directory /usr/local/tudelft
Nakonec byste se měli přesvědčit, zda definice databáze obsahuje i definici těch indexů, které potřebujete.
index {<attrlist> | default } [pres,eq,approx,sub,none]
Například:
index cn,sn,uid pres,eq,sub index objectClass eq
Tím vytvoříte indexy presence, equality a substring pro atributy cn, sn a uid a index equality pro
atribut objectClass. Další informace o této volbě viz kapitola popisující konfigurační soubor. Jakmile jste si vše zkonfigurovali
podle svých představ, pomocí programu slapadd (man 8 sla-padd) vytvoříte primární databázi a příslušné indexy:
slapadd -l <inputfile> -f <slapdconfigfile> [-d <debuglevel>] [-n <integer>|-b <suffix>]
Parametry mají tento význam:
-l <inputfile>
Zadání vstupního souboru LDIF, který obsahuje přidávané položky v textovém tvaru (viz také další kapitola).
-f <slapdconfigfile>
Zadání konfiguračního souboru slapd, který říká, kde a jaké indexy mají být vytvořeny, atd.
-d <debuglevel>
Nastavení ladicího režimu dle <debuglevel>. Úrovně ladění jsou stejné jako v případě slapd, podrobnosti viz kapitola „Volby
příkazového řádku“.
-n <databasenumber>
Volitelný parametr udávající, která databáze má být modifikována. První databáze v konfigurač-ním souboru je databáze č. 1,
druhá je č. 2 atd. První databáze je implicitní. Tento parametr nelze použít současně s parametrem -b.
-b <suffix>
Volitelný parametr udávající, která databáze má být modifikována. Číslo databáze se určí porov-náváním zadané přípony s
příkazem pro příponu databáze. Tento parametr nelze použít součas-ně s parametrem -n.
Někdy je nutné obnovit indexy (např. po změně slapd.conf). K tomu slouží program slapindex (man 8 slapindex), volá se takto:
slapindex -f <slapdconfigfile> [-d <debuglevel>] [-n <databasenumber >|-b <suffix>]
kde volby -f, -d, -n a -b mají stejný význam jako v programu slapadd(1). Program slapindex
obnoví všechny indexy na základě stávajícího obsahu databáze.Program slapcat slouží k výpisu databáze do souboru LDIF. To
může být užitečné, když chcetevytvořit zálohu, v níž je možno číst, anebo ji editovat v off-line režimu. Program spustíte takto:
slapcat -l <filename> -f <slapdconfigfile> [ -d <debuglevel>] [-n <databasenumber>|-b <suffix>]
kde -n a -b se používá k výběru databáze v souboru slapd.conf pomocí parametru -f. Odpoví-dající výstup LDIF je vypsán na
standardní výstup nebo do souboru zadaného volbou -l.
Více o formátu LDIF
Formát LDIF (LDAP Data Interchange Format) se používá k zápisu položek v jednoduchém textovém tvaru. Položka má základní
tvar:
#comment dn: <distinguished name> <attrdesc>: <attrvalue>
<attrdesc>: <attrvalue> ...
Řádky začínající znakem # jsou poznámky. Popis atributu (attrdesc) může být jednoduchý typ atri-butu, např. cn nebo objectClass
nebo 1.2.3 (OID s typem atributu), nebo může obsahovat různé volby, např. cn;lang_en_US nebo userCertificate;binary.
Řádek může pokračovat na dalším řádku mezerou nebo tabelátorem. Například:
dn: cn=Barbara J Jensen, dc=example, dc= com cn:
Barbara J Jensen
je shodné s:
dn: cn=Barbara J Jensen, dc=example, dc=com cn: Barbara J Jensen
Různé hodnoty atributu se uvádějí na samostatných řádcích, např.:
cn: Barbara J Jensen cn: Babs Jensen
Obsahuje-li <attrvalue> netisknutelný znak nebo začíná-li mezerou, dvojtečkou („:“) nebo znakem „menší než“ („<“), za
< attrdesc> následují dvě dvojtečky a hodnota zakódovaná v base64. Napří-klad hodnota „begins with a space“ bude zakódována
takto:
cn:: IGJlZ2lucyB3aXRoIGEgc3BhY2U=
Také můžete uvést URL, která obsahuje hodnotu atributu. Například následující řádek znamená, že hodnota jpegPhoto je v
souboru /path/to/file.jpeg.
cn:< file://path/to/file.jpeg
Položky jsou od sebe odděleny prázdnými řádky. Zde je příklad souboru LDIF se třemi položkami:
# Barbara's Entry dn: cn=Barbara J Jensen, dc=example, dc=com cn: Barbara J Jensen cn: Babs Jensen objectClass: person sn: Jensen
# Bjorn's Entry dn: cn=Bjorn J Jensen, dc=example, dc=com cn: Bjorn J Jensen cn: Bjorn Jensen objectClass: person sn: Jensen # Base64 encoded
JPEG photo jpegPhoto:: /9j/4AAQSkZJRgABAAAAAQABAAD/2wBDABALD
A4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQ ERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVG
# Jennifer's Entry dn: cn=Jennifer J Jensen, dc=example, dc=com cn: Jennifer J Jensen cn: Jennifer Jensen objectClass: person sn: Jensen # JPEG
photo from file jpegPhoto: < file://path/to/file.jpeg
Všimněte si, že atribut jpegPhoto v položce Bjorn je zašifrován pomocí base64 a v položce Jenni
fer je určen URL.Pravostranné mezery se z hodnot v souboru LDIF neodstraňují a ani se žádné mezery nekompri-mují. Pokud je
v datech nechcete, nedávejte je tam.
Nástroje ldapsearch, ldapdelete a ldapmodify
ldapsearch – je shellové rozhraní ke knihovnímu volání ldap_search(3). Tento nástroj je vhod-ný k hledání položek ve struktuře
LDAP. Stručný výtah volání vypadá takto (význam voleb viz manuálové stránky ldapsearch):
ldapsearch [-n] [-u] [-v] [-k] [-K] [-t] [-A] [-B] [-L] [-R ] [-d debuglevel] [-F sep] [-f file] [-x] [-D binddn] [-W] [-w bindpasswd] [-h ldaphost] [-p
ldapport] [-b searchbase] [-s base|one|sub] [-a never|always|search|find] [-l timelimit] [-z sizelimit] filter [attrs...]
ldapsearch otevře spojení na server LDAP, naváže je a provede hledání pomocí filtru filter. Filtr musí odpovídat definici
řetězcových filtrů LDAP v RFC 1558. Najde-li ldapsearch jednu nebo více položek, přečtou se specifikované atributy a tyto
položky a hodnoty jsou vytisknuty na standard-ním výstupu. Nejsou-li uvedeny žádné attrs, všechny atributy jsou vráceny.
ldapsearch -x -b ‘o=TUDelft,c=NL’ ‘objectclass=*’
ldapsearch -b ‘o=TUDelft,c=NL’ ‘cn=Rene van Leuken’
ldasearch -u -b ‘o=TUDelft,c=NL’ ‘cn=Luiz Malere’ sn mail
Volba -b znamená bázi hledání (počáteční bod hledání), volba -u znamená uživatelsky přátelské
výstupní informace a volba -x je používána k jednoduché autentizaci.ldapdelete – je shellové rozhraní ke knihovnímu volání
ldap_delete(3). Tato utilita je vhodnák rušení položek ve struktuře LDAP.
Stručný výtah volání vypadá takto (význam voleb viz manuálové stránky ldapdelete):
ldapdelete [-n] [-v] [-k] [-K] [-c] [-d debuglevel] [-f file] [-D binddn] [-W] [-w passwd] [-h
ldaphost ] [-p ldapport] [dn]...
ldapdelete otevře spojení na server LDAP, naváže je a zruší jednu nebo více položek. Je-li zadán alespoň jeden parametr dn, jsou
zrušeny položky, které mají tato jednoznačná jména (Distinguis-hed Names, DN). Všechna dn jsou řetězce, které představují DN
dle definice v RFC 1779. Nejsou--li zadány žádné parametry dn, jejich seznam se přečte ze standardního vstupu (nebo ze souboru, je-li zadán parametr -f).
Zde je několik příkladů použití ldapdelete:
ldapdelete ‘cn=Luiz Malere,o=TUDelft,c=NL’ ldapdelete -v ‘cn=Rene van Leuken,o=TUDelft,c=NL’ -D ‘cn=Luiz Malere,o=TUDelft,c=NL’ -W
Volba -v znamená „upovídaný“ režim, volba -D znamená Binddn (dn, proti němuž se autentizuje) a volba -W znamená zadání hesla po vypsání promptu.ldapmodify – je shellové rozhraní ke knihovním voláním ldap_modify
(3) a ldap_add(3). Tentonástroj je vhodný k modifikaci položek ve struktuře LDAP.
Stručný výtah volání vypadá takto (význam voleb viz manuálové stránky ldapmodify):
ldapmodify [-a] [-b] [-c] [-r] [-n] [-v] [-k] [-d debuglevel] [-D binddn] [-W] [-w
passwd] [-h ldaphost] [-p ldapport] [-f file]
ldapadd [-b] [-c] [-r] [-n] [-v] [-k] [-K] [-d debuglevel] [-D binddn] [-w passwd] [-h ldaphost] [-p ldapport] [-f file]
ldapadd je implementována jako pevný odkaz na nástroj ldapmodify. Je-li zadán jako ldapadd, automaticky se zapne příznak -a
(přidej novou položku ). ldapmodify otevře spojení na server LDAP, naváže je a modifikuje nebo přidává položky. Informace o
položkách se čtou ze standard-ního vstupu anebo v případě volby -f ze souboru.
Zde je několik příkladů použití ldapmodify:
Předpokládejme, že existuje soubor /tmp/entrymods a obsahuje: dn: cn=Modify Me, o=University of Michigan, c=US changetype: modify
replace: mail mail: [email protected] -add: title title: Grand Poobah -add: jpegPhoto jpegPhoto: /tmp/modme.jpeg -delete:
description Příkaz:
ldapmodify -b -r -f /tmp/entrymods
nahradí obsah atributu „Modify Me“ položky mail hodnotou „[email protected]“, přidá title typu „Grand
Poobah“ a obsah souboru /tmp/modme.jpeg jako jpegPhoto a zcela odstra-ní atribut description.
Stejnou modifikaci jako shora lze provést pomocí staršího vstupního tvaru ldapmodify:
cn=Modify Me, o=University of Michigan, c=US [email protected] +title=Grand Poobah +jpegPhoto=/tmp/modme.jpeg
-description
a příkazem:
ldapmodify -b -r -f /tmp/entrymods
Předpokládejme, že soubor /tmp/newentry existuje a obsahuje: dn: cn=Barbara Jensen, o=University of Michigan, c=US objectClass: person
cn: Barbara Jensen cn: Babs Jensen sn: Jensen title: the world's most famous manager mail: [email protected] uid: bjensen
Příkaz:
ldapadd -f /tmp/entrymods
přidá položku s dn: cn=Barbara Jensen, o=University of Michigan, c=US, pokud už není přítom-na. Když položka s tímto dn už
existuje, příkaz ohlásí chybu a původní položku nepřepíše. Za předpokladu, že existuje soubor /tmp/newentry a obsahuje:
dn: cn=Barbara Jensen, o=University of Michigan, c=US changetype: delete
Příkaz:
ldapmodify -f /tmp/entrymods
odstraní položku Babs Jensen.Volba -f znamená soubor (čti modifikační informace ze souboru, nikoli ze standardního vstupu),-b
znamená binární (hodnoty začínající lomítkem („/“) na vstupním souboru jsou považovány zabinární), -r znamená nahrazení
(nahraď stávající hodnotu hodnotou implicitní).
Další informace a funkce
V této kapitole naleznete další informace a užitečné odkazy na témata jako autentizace, logy a kli-enti LDAP. Na konci kapitoly
jsou doporučena velice pěkná URL a knihy o LDAP.
Migrační nástroje LDAP
Firma PADL Software Ltd. nabízí tzv. migrační nástroje LDAP jako skripty v jazyce Perl. Používajíse ke konverzi konfiguračních
souborů do formátu LDIF. Doporučuji, abyste si licenční ujednánípřečetli ještě předtím, než je začnete používat, i když jsou volně
šiřitelná. Máte-li v úmyslu pou-žívat server LDAP k autentizaci uživatelů, tyto nástroje vám mohou být velice k užitku. Lze
jimizkonvergovat NIS nebo archív hesel do formátu LDIF, čímž se stanou kompatibilními se serveremLDAP. Jsou také vhodné
pro migraci uživatelů, skupin, aliasů, počítačů, podsítí, sítí, protokolů,RPC a služeb z existujících služeb (NIS, nešifrované
soubory a NetInfo) do formátu LDIF.
Migrační nástroje a informace o nich najdete na adrese http://www.padl.com/tools.html.
Balík obsahuje soubor README a jména skriptů jsou zvolena intuitivně. Nejprve je vhodnénahlédnout do souboru README a
poté aplikovat skripty.Jinou adresou s migračními nástroji, kterou lze doporučit, je http://dataconv.org/apps_ldap.html.
Autentizace pomocí LDAP
Aby klient získal přístup ke službám LDAP, musí se nejdříve autentizovat. To znamená, že musí serveru LDAP říct, kdo získá
přístup k datům, aby se server mohl rozhodovat, co který klient může vidět a co může dělat. Jestliže se klient autentizuje serveru
úspěšně a server následně od tohoto klienta obdrží dotaz, ověří si, zda je klient oprávněn zadat takový dotaz. Tento proces se
nazývá řízení přístupu.
V LDAP se autentizace provádí operací „navázání“ („bind“) spojení. Ldapv3 podporuje tři typy autentizace: anonymní,
jednoduchou a SASL. Klient, který pošle LDAP požadavek bez „navázání“ spojení, je považován za anonymního klienta.
Jednoduchá autentizace spočívá v zaslání úplného DN klienta (uživatele) a hesla v nezašifrované podobě. Tento mechanismus je
z hlediska bezpeč-nosti problematický, neboť heslo může na síti kdokoli přečíst. Přečtení lze zabránit tak, že jedno-duchý
autentizační mechanismus proběhne v zašifrovaném kanále (např. SSL) za předpokladu, že jej podporuje server LDAP.
A konečně SASL (Simple Authentication and Security Layer, RFC 2222) specifikuje protokol typu výzva/odpověď, v němž jsou
data mezi serverem a klientem vyměňována za účelem autentizace a ustavení bezpečné vrstvy, v níž probíhá následná
komunikace. S použitím SASL může LDAP podporovat libovolný typ autentizace odsouhlasené mezi klientem a serverem. Balík
Cyrus-SASL je k dispozici na adrese http://asg.web.cmu.edu/sasl/sasl-library.html.
Aby měl uživatel přístup k informacím z adresářového stromu, může server LDAP autentizovat uži-vatele i z jiných služeb
(Sendmail, Login, Ftp atd.). To se provádí pomocí migračních informací specifických vzhledem k uživateli na serveru LDAP
mechanismem, který se jmenuje PAM (Plug-gable Authentication Module). Autentizační modul pro LDAP je k dispozici v tarové
podobě na adrese http://www.padl.com/OSS/pam_ldap.html.
Konfigurace SASL: Digest-MD5
Autentizaci LDAP-SASL provozuji prostřednictvím mechanismu DIGEST-MD5. K tomu je nutno provést přesně tyto kroky:
■ Stažení SleepyCat 4.2.52, překlad a manuální vygenerování. Po stažení jsem se pouze řídil
pokyny v souboru docs/index.html pod adresářem, v němž jsem rozbalil balík .tar.gz. Po rozbalení můžete dle pokynu
spustit:
root@rdnt03:/usr/local/BerkeleyDB.4.2/build_unix#../dist/configure root@rdnt03:/usr/local/BerkeleyDB.4.2/
build_unix#make root@rdnt03:/usr/local/BerkeleyDB.4.2/build_unix#make install
■
Stažení Cyrus SASL 2.1.17, rozbalení a další postup podle pokynů v dokumentu doc/install.html, pod adresářem, v němž
jsem rozbalil balík .tar.gz . Musíte dát pozor na to, abyste spustili konfigurační skript se správnými vnějšími parametry:
root@rdnt03:/usr/local/cyrus-sasl-2.1.17#env CPPFLAGS=”-I/usr/local/BerkeleyDB.4.2/include ” LDFLAGS=”-L/usr/local/
BerkeleyDB.4.2/lib” ./configure
Vnější parametry CPPFLAGS a LDFLAGS musí ukazovat na ty adresáře include a lib , ve kterých je nainstalována
Berkeley BDB.
Poté můžete dle pokynů spustit:
root@rdnt03:/usr/local/cyrus-sasl-2.1.17#make
root@rdnt03:/usr/local/cyrus-sasl-2.1.17#make install
root@rdnt03:/usr/local/cyrus-sasl-2.1.17#ln -s /usr/local/lib/sasl2
/usr/lib/sasl2
■
Nakonec jsem (opět pomocí pokynů uvedených v tomto dokumentu) nainstaloval Open-LDAP 2.2.5. Pouze jsem spustil
konfigurační skript jako při konfiguraci SASL:
root@rdnt03:/usr/local/openldap-2.2.5#env CPPFLAGS=”
I/usr/local/BerkeleyDB.4.2/include”
LDFLAGS=”-L/usr/local/BerkeleyDB.4.2/lib” ./configure
■
Pak jsem dle pokynů spustil:
root@rdnt03:/usr/local/openldap-2.2.5#make dependroot@rdnt03:/usr/local/openldap-2.2.5#make root@rdnt03:/usr/local/
openldap-2.2.5#make install
■
Dále jsem vytvořil sasl pod databází:
root@rdnt03:~# saslpasswd2 -c admin
Budete požádáni o heslo. Připomínám, že uživatelské jméno nemůže být DN (distinguis-hed name). Také musíte použít
stejné heslo, které je uvedeno v položce admin v adresá-řovém stromě.
Ještě než spustíte démona slapd a otestujete autentizaci, musíte v souboru slapd.conf nastavit příkaz sasl-regexp. Můj
soubor slapd.conf je uložen v adresáři /usr/local/etc/openldap :
sasl-regexp uid=( .*),cn=rdnt03,cn=DIGEST-MD5,cn=auth uid=$1,ou=People,o=Ever
Tento parametr má tvar: uid=<username>,cn=<realm>,cn=<mech>,cn=auth
Uživatelské jméno se vezme ze sasl a vloží se do vyhledávacího řetězce ldap místo $1; realm je považován za úplné
jméno domény (fully qualified domain name, FQDN), avšak někdy, jako v mém případě, tomu tak není. Co je realm, najdeme
pomocí:
root@rdnt03:~# sasldblistusers2
admin@rdnt03: userPassword
admin@rdnt03: cmusaslsecretOTP
■
V mém případě je jako realm indikováno rdnt03. Pokud je to úplné jméno vaší domény, neměli byste mít žádný problém.
Použil jsem následující soubor LDIF:
dn: o=Ever
o: Ever
description: Organization Root
objectClass: top
objectClass: organization
dn: ou=Staff, o=Ever ou: Staff description: These are privileged users that can interact with Organiza-tion products objectClass: top
objectClass: organizationalUnit
dn: ou=People, o=Ever
ou: People
objectClass: top
objectClass: organizationalUnit
dn: uid=admin, ou=Staff, o=Ever
uid: admin
cn: LDAP Adminstrator
sn: admin
userPassword: {SHA}5en6G6MezRroT3XKqkdPOmY/BfQ=
objectClass: Top
objectClass: Person
objectClass: Organizationalperson
objectClass: Inetorgperson
dn: uid=admin,ou=People,o=Ever
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
userPassword: {SHA}5en6G6MezRroT3XKqkdPOmY/BfQ=
displayName: admin
mail: [email protected]
uid: admin
cn: Administrator
sn: admin
■ Pomocí následujícího příkazu přidejte do svého adresáře LDAP položky:
slapadd -c -l Ever.ldif -f slapd.conf -v -d 256
■ Nyní spusťte démona slapd a pomocí ldapsearch zadejte dotaz:
root@rdnt03:~# ldapsearch -U admin@rdnt03 -b 'o=Ever' '(objectclass=*)' SASL/DIGEST-MD5 authentication started Please enter your
password: SASL username: admin@rdnt03 SASL SSF: 128 SASL installing layers ... Entries ...
A je to! Dáte-li přednost SASL se systémem Kerberos V nebo GSSAPI, zajímavý odkaz je na http://www.openldap.org/doc/
admin22/sasl.html. Musíte však už mít zvládnutou instalaci a konfi-guraci knihovny SASL. Také je dobré se podívat na e-mailové
konference na adrese
http://asg.web.cmu.edu/sasl/index.html#mailinglists.
Grafické nástroje LDAP
Kldap je grafický klient LDAP napsaný pro KDE. Má velice zdařilé rozhraní, jehož pomocí může-te prohlížet všechny údaje o
stromu ve svém adresáři. Na adrese http://www.mountpoint.ch/ oliver/kldap/ si můžete prohlédnout některé obrazovky a stáhnout
si je.
KDirAdm je nástroj pro správu adresářů LDAP napsaný pro KDE Desktop Environment, verze 2 a pozdější. Jeho cílem je
poskytnout veškerou funkcionalitu většiny komerčních nástrojů pro sprá-vu adresářů: http://www.carillonis.com/kdiradm/.
Directory Administrator je nejrozšířenější aplikací pod GNOME pro správu uživatelů a skupin v Linuxu na adresářových
serverech LDAP. Umožňuje vytvářet a rušit uživatele a skupiny a spra-vovat je pomocí údajů v adresářové knize, která je součástí
aplikace. Dále řízení přístupu k jed-notlivým serverům a posílání pošty pomocí Sendmail: http://diradmin.open-it.org/index.php.
GQ je grafickým klientem LDAP s jednodušším rozhraním. Je napsán pro GNOME, avšak běží
pod KDE, podobně jako i Kldap běží pod GNOME. Stáhnout si jej můžete z adresy http://biot.com/gq/ a zde také o tomto
klientovi naleznete další informace. LDAP Browser/Editor Tento nástroj je skutečně fantastický, nabízí kompletní správu a
funkciona-litu pro prohlížení a vyhledávání. Vyzkoušejte ho, je na stránkách Ldap Browser na adrese
http://www.iit.edu/~gawojar/ldap/.
Logy
Pro vytváření logovacích souborů využívá slapd démona syslog. Implicitní kategorií syslogu je
LOCAL4, avšak jsou povoleny hodnoty od LOCAL0, LOCAL1 až po LOCAL7 (kategorie LOCALx
označují „lokální“ kategorie zpráv).
Generování logů je nutno aktivovat změnou v souboru syslog.conf, který je obvykle umístěnv adresáři /etc . Vytvořte například
řádek:
local4.* /usr/adm/ldaplog
Příkaz pro nastavení syslogu využije implicitní kategorii LOCAL4. Pokud vám není jasná syntaxe tohoto řádku, nahlédněte do
manuálových stránek syslog, syslog.conf a syslogd. Pomocí následujících voleb při spuštění slapd lze specifikovat úroveň
vygenerovaných logů nebo změnit kategorii:
-s syslog-level
Tato volba říká slapd, na jaké úrovni mají být zapisovány ladicí příkazy do syslog. Úroveň udává závažnost zprávy a je dána
jedním z klíčových slov z následujícího uspořádaného seznamu (od vyšších k nižším): emerg, alert, crit, err, warning, notice, info
a debug.
Příklad: slapd -f myslapd.conf -s debug.
-l syslog-local-user
Vyberte kategorii syslogu. Hodnotami mohou být LOCAL0, LOCAL1 atd. až po LOCAL7. Implicit-ní je LOCAL4. Tato volba je
nicméně přípustná pouze v systémech, které podporují lokální kate-gorie v syslogu.
Nyní se můžete podívat na vygenerované soubory s logy (v uvedeném příkladu je to /usr/adm/ldaplog). Mohou vám značně ulehčit
řešení problémů s dotazy, aktualizacemi, nava-zováním spojení atd.
Odkazy
Zde jsou adresy URL, které obsahují velmi užitečné informace o LDAP. Z nich byl vytvořen tento návod, takže pokud byste po
jeho přečtení potřebovali přesnější informace, pravděpodobně je naleznete zde:
University of Michigan LDAP (vývoj): http://www.umich.edu/~dirsvcs/ldap/
University of Michigan LDAP (dokumentace): http://www.umich.edu/~dirsvcs/ldap/doc/
OpenLDAP Administrator’s Guide (spřízněný dokument): http://www.openldap.org/ doc/admin
Linux Directory Service: http://www.rage.net/ldap/
Red Hat and LDAP: http://www.redhat.com/docs/manuals/linux/RHL-9-Manual/ref-guide/ch-ldap.html
Mandrake Linux – Using OpenLDAP for Authentication: http://www.mandrakesecure.net/ en/docs/ldap-auth.php
Integrating OpenLDAP with other Open Source projects: ftp://kalamazoolinux.org/pub/ pdf/ldapv3.pdf
Knihy
Nejoblíbenější a nejpotřebnější knihy o LDAP:
Mark Wilcox: Implementing LDAP
Howes, Smith: LDAP: Programming Directory-Enabled Applications with Lightweight Directory Access Protocol
Howes, Smith, Good: Understanding and Deploying LDAP Directory Servers
RFC
RFC (http://www.rfc-editor.org/rfc/) související s vývojem LDAP:
RFC
RFC
RFC
RFC
RFC
RFC
RFC
RFC
RFC
RFC
RFC
1558: A String Representation of LDAP Search Filters
1777: Lightweight Directory Access Protocol
1778: The String Representation of Standard Attribute Syntaxes
1779: A String Representation of Distinguished Names
1781: Using the OSI Directory to Achieve User Friendly Naming
1798: Connectionless LDAP
1823: The LDAP Application Programming Interface
1959: An LDAP URL Format
1960: A String Representation of LDAP Search Filters
2251: Lightweight Directory Access Protocol (v3)
2307: LDAP as a Network Information Service
Textové terminály
Úvod
V tomto dokumentu si vysvětlíme, co jsou terminály, jak pracují, jak je nainstalujete a zkonfigu-rujete, a naleznete zde i zmínku o
opravách terminálů. Dokument může přijít vhod, zejména nemáte-li k terminálu příslušný manuál. I když jsou popisovány reálné
terminály v systému Linux, řada informací je použitelná i pro emulované terminály a v jiných systémech než Linux.
Chcete-li učinit rychlý pokus
HOWTO-3.html#quick_install.
o
instalaci,
nahlédněte
do
Quick
Install,
http://tldp.org/HOWTO/ Text-Terminal-
Prohlášení
I když jsem se nikoho nepokusil úmyslně uvést v omyl, dokument může obsahovat řadu chyb. Naleznete-li nějaké, upozorněte mě
na ně, prosím. Vzhledem k tomu, že jde o volně šiřitelný dokument, má se za to, že nenesu právní odpovědnost za žádnou chybu.
Nové verze tohoto návodu
Nové verze Návodu k textovým terminálům by měly vycházet zhruba každý rok. Budou na zrcad-lech LDP, kde je bude možno
prohlížet i stahovat. Seznam zrcadel naleznete na http://tldp.org/ mirrors.html. Dokument bude dostupný v různých formátech.
Datum vydání poslední verze lze rychle zjistit na http://tldp.org/HOWTO/Text-Terminal-HOWTO.html. Verze, kterou právě čtete,
má číslo 1.38 a je z února 2006.
Příbuzné návody
Návody naleznete na nejbližším zrcadle (viz shora).
V Serial-HOWTO jsou informace o multiportových sériových kartách pro modemy i termi-nály. Jsou zde také obecné
technické informace o sériových portech včetně odstraňování závad.
Low-Level Terminal Interface (http://tldp.org/HOWTO/www.gnu.org/manual/glibc/ html_chapter/libc_12.html) jako
součást „GNU C Library Reference Manual“ (v dokumen-tačním balíku libc nebo gibc). Pokrývá detailně význam příkazů stty
atd.
NCURSES-Programming-HOWTO
MacTerminal mini-HOWTO
Modem-HOWTO
Serial-Programming-HOWTO
NC mini-HOWTO
NCD-X-Terminal mini-HOWTO
XDM-and-X-Terminal mini-HOWTO
Connecting-X-Terminals-to-Linux-Mini-HOWTO
NCD-HOWTO
Thinclient-HOWTO
Xterminals-HOWTO
Xterm-Title-HOWTO (pouze pro změnu titulu okna)
Terminologie používaná v tomto dokumentu
Konfigurace znamená totéž co nastavení. Zatímco příkazy v Linuxu obsahují volby (označované symboly - nebo --), volba v
širším slova smyslu znamená výběr různých typů. Instalace v širším slova smyslu zahrnuje nastavení (konfiguraci) softwaru i
hardwaru. Tvrzení, o němž předpoklá-dám, že je pravdivé (ale nemusí být), končí dvěma otazníky (??). Máte-li v této věci jasno,
dejte mi vědět.
Co je to terminál?
Reálný terminál se skládá z obrazovky a z klávesnice, které se používají ke vzdálené komunikaci s počítačem. Používají se, jako
kdyby to byl osobní počítač, avšak terminál je od počítače vzdá-len (na druhém konci místnosti nebo na druhém konci světa).
Programy se provádějí na počítači, avšak výsledky jsou zobrazovány na obrazovce terminálu. Výpočetní schopnost terminálu je
rela-tivně nízká (jinak by to nebyl terminál, nýbrž počítač). Obecně je terminál omezen na schopnost zobrazovat to, co se mu
pošle (třeba včetně grafiky pokrývající celou obrazovku), a schopnost odesílat počítači to, co je napsáno na klávesnici.
Textový terminál pouze zobrazuje text bez obrázků. V dobách sálových počítačů od poloviny 70. do poloviny 80. let používala
většina lidí ke komunikaci s počítači skutečné terminály. Pořizovali na nich programy, spouštěli je, psali na nich dokumenty,
vydávali z nich příkazy k tisku atd. Ter-minál byl k počítači připojen (často nepřímo) kabelem. Název terminál vznikl tak, že
terminály byly připojeny ke konci těchto kabelů. Některé textové terminály se nazývaly „grafické“, avšak vinou vysoké ceny
paměti a omezené rychlosti sériových portů bylo rozlišení oproti dnešním stan-dardům nevalné a rychlost byla nízká.
Dnes už nejsou reálné terminály tak časté jako kdysi a většina lidí, kteří používají terminály, pou-žívají osobní počítač, který
terminál pouze emuluje. Prakticky každý, kdo používá Linux, používá i terminálovou emulaci. Bez systému X Window se
používá textové rozhraní (virtuální terminál). Říká se mu také rozhraní příkazového řádku. V systému X Window může mít jeden
uživatel něko-lik terminálových oken (xterm, rxvt nebo zterm). Všechny emulují reálný terminál softwarově.
Reálný textový terminál je něco jiného než monitor, je vybaven jinou elektronikou. Často je připojen k sériovému portu počítače
dlouhým kabelem. Narozdíl od monitoru, který bývá umístěn přímo u počítače, tedy může být terminál od počítače poměrně dost
vzdálený. Zatímco monitor dostává obrázek z videokarty umístěné v počítači, obdoba takové karty je zabudovaná přímo v
terminálu. Terminály ovšem často bývají monochromatické a mají jen jednoduchou grafiku, takže
možnosti takové „videokarty“ jsou omezené. Většina terminálů také nemá myš. V síťové terminologii klient/server by se člověk
mohl domnívat, že terminál je klientem a počítač je server. Terminálům se někdy říká „tenký klient“. Ve skutečnosti však nejde
vůbec o „klienta“ a počítač není „server“. Jedinou „službou“, kterou počítač terminálu poskytuje, je zpracování jed-notlivých
písmen napsaných na klávesnici a reakce, jaká by se dala očekávat od počítače. Termi-nál je v počítači v podstatě oknem, podobně
jako jsou jimi monitor a klávesnice. Je možné, že jste v Linuxu už virtuální terminály někdy používali (stisknete levý Alt-F2 atd.).
Reálný terminál je podobný terminálu virtuálnímu, avšak provozujete jej na vlastní obrazovce, místo abyste sdíleli obrazovku
monitoru. Narozdíl od virtuálního terminálu na konzole (monitoru) se může k tomuto terminálu posadit někdo jiný a používat
počítač současně s ostatními.
Typy terminálů
Hloupé terminály
Existuje celá řada protichůdných definic „hloupého terminálu“, avšak s postupem času hloupých terminálů přibývá. V tomto
dokumentu jsou popsány především textové terminály, které na obra-zovce zobrazují pouze text. Dokument bychom mohli nazvat
i „Návod k hloupým terminálům“. Nicméně, v některých časopiseckých článcích jsou všechny terminály nazývány hloupými,
včetně těch, které nabízejí uživateli plné grafické rozhraní (GUI). Jsou-li hloupé všechny terminály, je zby-tečné je takto
označovat, snad jedině s výjimkou, když chce prodejce zdůraznit rozdíl mezi ter-minálem a počítačem či něčím podobným. Pak
ovšem dvojsmyslný výraz „hloupý terminál“ nabý-vá onoho druhého významu a nejde o klasifikaci typu terminálu.
Textové terminály
Po kabelu, který spojuje počítač s textovým terminálem, tečou data dvěma směry. Tok probíhá v bajtech (např. v ASCII), přičemž
každý bajt obvykle představuje tisknutelný znak. Bajty napsa-né na klávesnici jdou do počítače a většina znaků jdoucích z
počítače je zobrazena na obrazovce terminálu. Speciální řídicí bajty (nebo jejich posloupnosti) z počítače sdělují terminálu, kam
má posunout kurzor, co má vymazat, kde začít a skončit s podtržením, s blikáním, s tučným písmem atd. Často existují stovky
takových příkazů a některé terminály dokonce umějí měnit typ písma.
Při komunikaci jsou znaky (písmena) kódovány pomocí kódové tabulky s danou znakovou mno-žinou. Prvních 128 bajtů z
celkových 256 je obvykle zakódováno v kódu ASCII. Terminály unixo-vých systémů jsou obvykle připojeny k počítači kabelem,
který propojuje asynchronní sériové porty (RS-232-C = EIA-232-D) počítače a terminálu. Někdy může spojení tvořit modem,
terminá-lový server apod.
„Textový terminál“ také někdy nazýváme „sériový monitor“, „sériová konzola“ (je-li používán jako konzola), „sériový terminál“,
„hloupý terminál“, „znakově-buňkový terminál“, „znakový terminál“, „ASCII/ANSI terminál“, „asynchronní terminál“, „datový
terminál “, „videoterminál“, „videodisplejo-vý terminál“ (VDT) nebo „zelený terminál“ (protože většina má zelený displej). Tyto
názvy (zejmé-na pak „hloupý terminál“) se někdy používají ve významu emulovaný terminál na PC s řádkovým rozhraním,
například v Linuxu. Dříve se také říkalo „videodisplejová jednotka“ (VDU), avšak tento název vylučuje klávesnici.
Terminály starých sálových počítačů IBM používaly výhradně „blokový režim“, mají jej ovšem i některé moderní terminály (i
když ho příliš často nepoužívají). V blokovém režimu se zadané znaky pozdrží v paměti terminálu (a lze je dokonce měnit
editorem vestavěným v terminále). Pak, po stisknutí odesílací klávesy (nebo nějaké podobné), se do počítače naráz odešle celý
blok znaků (většinou právě jeden řádek). Linux nepodporuje blokový režim asi od konce roku 1998, viz kapitola „Blokový
režim“.
Grafické možnosti textových terminálů
Mnoho textových terminálů umí zobrazit bitmapové obrázky, nikoli však barevně. Bohužel tvar s oblibou používaný na Internetu
není podporován. Protokoly pro terminálovou grafiku jsou: Tek-tronix Vector Graphics, ReGIS (DEC), Sixel (DEC) a NAPLPS
(North American Presentation Level Protocol Syntax).
Obyčejné terminály umějí něco jako zobrazovat obrázky i bez bitových map. Šipku můžete vytvo-řit takto: <---, čtverečky takto: |
__|, atd. Se speciálními grafickými znakovými množinami obsa-hujícími množství speciálních znaků jsou možnosti daleko větší.
„Ascii grafiku“ však můžeme vytvářet i bez množiny grafických znaků. Pojem „grafický terminál“ obvykle znamená terminál,
který umí zobrazit bitmapové obrázky. Tento termín se však někdy používá i v souvislosti s výhradně textovými terminály, neboť
text je omezená forma grafiky.
Grafické (GUI) displeje
Existují dva základní typy grafických displejů: rastrový a vektorový (méně používaný). Rastrová grafika (bitmapová) spočívá v
tom, že se na obrazovku do vodorovných řádků skládají body, které kreslí paprsek elektronů (anebo na ploché obrazovce jsou
aktivovány pixely, resp. body). Disp-leje s vektorovou grafikou jsou určeny pro monochromatické obrazovky, které nejsou
složeny z bodů. Využívají k tomu inteligentní elektroniku, kterou kreslí čáry a křivky pomocí paprsku elek-tronů, který lze
přesouvat libovolným směrem (jako pero nebo tužku). Čistá vektorová grafika kreslí čáry ve vysoké kvalitě bez viditelných
nespojitostí, avšak je málo používaná a drahá. Další podrobnosti viz http://www.cca.org/vector/. Rastrová grafika je prakticky
univerzální jak na PC, tak i na terminálech. Obrázky zakódované ve vektorové grafice nemohou být na PC kresleny jako souvislé
čáry, neboť to nezvládne elektronika, avšak mohou být převedeny do rastrové grafiky (s určitou ztrátou kvality obrázku).
Tencí klienti (terminály?)
Vzhledem k tomu, že „tencí klienti“ nejsou textové terminály, tento návod jenom poskytuje jejich krátký přehled. Existují jiné,
detailnější návody, viz kapitola „Podobné návody“. Tencí klienti jsou počítače v minimální sestavě, které se chovají jako
terminály. Protože v textových terminálech (kromě těch nejstarších) jsou vestavěné operační systémy, jsou to vlastně také
počítače. Tencí kli-enti musí mít větší výpočetní kapacitu. Na rozdíl od textových terminálů mají tencí klienti moder-ní
vysokorychlostní grafické uživatelské rozhraní (Graphic User Interface, GUI). Pro svoji činnost potřebují počítače (servery) s
vysokým výkonem. V případě terminálu, který je skutečně klientem, bude veškeré zpracování a ukládání dat na disk provádět
server. Opačným extrémem je, když vět-šinu z této činnosti provádí tenký klient, avšak některé administrativní činnosti přece jen
zůstanou na serveru. Takový klient ovšem není „tenký“, takže správně by měl být nazýván „tlustým klien-tem“.
Takoví klienti mohou být vytvořeni z běžného PC pomocí softwaru nebo mohou být samostatnou hardwarovou jednotkou. Ta
ovšem nejspíš bude mít normální monitor jako PC a nějakou bedýn-ku s kouskem počítačového hardwaru. V Linuxu se zřejmě
jako klient používá PC.
Existuje i názor, že textové terminály jsou rovněž tenkými klienty, což ovšem nejsou, neboť neod-povídají modelu klient/server.
Je pravda, že připojení terminálu prostřednictvím telnetu poněkud připomíná model klient/server tím, že telnet je prostředkem pro
přenos dat. Avšak vztah mezi tex-tovým terminálem a počítačem není vztahem mezi klientem a serverem. Textový terminál je
pouze jiným prostředkem, který zajišťuje přístup k počítači, podobně jako monitor s klávesnicí. Totéž by bylo možné tvrdit o
tenkém klientovi s tím, že vztah klient/server zajišťuje pouze přenos dat.
Tenký klient je tedy vlastně terminálem. Má grafické rozhraní s myší, což vypadá, jako kdybyste pracovali přímo s počítačem.
Skutečně pracujete, ale počítač může být hodně daleko a může jej současně používat mnoho dalších uživatelů. Komunikace
probíhá vysokorychlostním síťovým kabelem, nebo dokonce po Internetu. Někteří tencí klienti navíc umějí emulovat textový
terminál a mají pro tento účel konektor na sériový port anebo rozhraní USB.
Existuje mnoho různých typů tenkých klientů. Jedním z nich je „window-terminál“, který běží pod MS servery (a softwarem).
Jiným typem je „síťový počítač“, z hlediska platformy neutrální. Zna-mená to, že by měl pracovat jak s MS Windows, tak i s
Linuxem, avšak starší modely mohou mít v Linuxu problémy, neboť tento systém komunikuje v protokolu X Window. Viz
kapitolu „Tencí klienti a NC pod Linuxem“.
Terminály MS Window
To jsou skutečně terminály, neboť veškeré výpočty probíhají na serveru se systémem Windows. Říká se jim také „terminály na
bázi Window“ (Window-based Terminals, WBT). Podobají se počí-tači, neboť je na nich často provozován vestavěný operační
systém, např. Linux nebo CE, NT, resp. XP firmy Microsoft. Bývají uloženy ve vnější (flash) paměti a je možno je aktualizovat.
Běžné PC tedy lze používat jako klienta (v některých případech i linuxové PC) s příslušným softwarem. Ně-kteří klienti podporují
X Window (z linuxového serveru) a někteří emulují textové terminály. Na řadě tzv. „síťových počítačů“ může být také
provozován systém X Window, o čemž se zmíníme v následující kapitole.
Server pro tyto klienty bývá obvykle vybaven MS Terminal Services (pro servery Windows 2000). Jeho předchůdcem byl
Windows NT Terminal Server Edition (od poloviny roku 1998 pod kódo-vým označením „Hydra“). MS používá RDP (Remote
Desktop Protocol ) založený na protokolu ITU T.120. Existuje navíc i volitelný protokol ICA (rozšířený), který umí spolupracovat
s RDP.
Ještě před tím existoval modifikovaný Windows NT 3.51 (1995), nazývaný „WinFrame“, od Citri-xu, který používat vlastní
(proprietární) protokol ICA (Independent Computing Architecture). Cit-rix zůstal na scéně i poté, co MS přišel s vlastním
terminálovým serverem. Vytvořil software Meta-Frame (dříve pICAsso) jako dodatek k systému MS Terminal Server (nebo
Services) tak, aby pod-poroval terminály na bázi ICA a zajišťoval i další funkce. Než se do toho vložil Microsoft, existo-valy i
jiné proprietární terminálové systémy schopné zobrazit grafické rozhraní MS Windows, avšak později všechny přešly na podporu
systémů firmy Microsoft.
PC s Linuxem lze prostřednictvím „volného“ (pouze však co do ceny) proprietárního klientského softwaru ICA od Citrixu (Citrix
Systems, Inc. – http://www.citrix.com/download/unix-downloads.asp) upravit na klientský terminál na bázi ICA. MS bohužel pro
obsluhu klientů vyžaduje zakoupení licence, a to i tehdy, když všichni klienti běží pod Linuxem. Chcete-li tedy na softwaru ušetřit
tím, že používáte Linux, musí to být čistě linuxové řešení, a to jak v případě klienta, tak i serveru s pro-tokolem X-Window, který
je zdarma.
Říká se tomu někdy „síťové výpočty“, neboť terminály a servery jsou navzájem propojeny po Inter-netu (např. běžná síť TCP/IP
používaná jak v Linuxu, tak i v MS Windows). Síťové počítače jsou něco jiného, viz dále.
Síové počítače (NC)
Není to ani čistě počítač, ani čistě terminál, je to něco mezi tím. Jedním z typů síťového počítače (NC) je počítač bez pevného
disku. Operační systém je mu poslán po síti. NC mají plnou grafiku a využívají služeb serveru. Od terminálů se poněkud liší,
neboť některé programy (nebo dokon-ce většina), jež provozují, jsou zpracovávány vlastním procesorem. Primární funkcí
terminálů je provozovat internetový vyhledávač, proto jim nelze posílat ke zpracování applety v Javě. Mnoho NC podporuje
systém X Window, takže pro jejich podporu lze použít linuxový server. Můžeme jej nazývat „linuxovým terminálovým
serverem“. IBM nazývala svoje NC „NetStation“, nyní je však nazývá „NetVista“. Měly by fungovat v sítích typu intranet a samy
pracují pod operačním systé-mem Linux.
Firma Wintel přišla s „NetPC“, který je narozdíl od předchozích NC téměř úplným osobním počí-tačem. Nemá však vyměnitelné
disky, aby si uživatelé nemohli instalovat vlastní software nebo pořizovat kopie čehokoli.
Tencí klienti a NC pod Linuxem
Existuje tzv. „Linux Terminal Server Project“ (LTSP nebo ltsp), který umožňuje používat Linux jako server pro bezdiskové tenké
klienty. Je vybaven systémem X Window a aplikace běží na něm. Lze jej však nastavit i tak, že některé nebo všechny aplikace
běží na „terminále “. Viz
http://www.ltsp.org/.
„Terminál“ v LTSP je skutečně tenkým (nebo tlustým) klientem. Lze na něm provozovat sezení tel-net, může se tedy chovat jako
textový terminál. V hlavních linuxových distribucích naleznete balí-ček lts pro LTSP.
Máte-li jen několik „terminálů“, mohou pracovat bez ltsp. Jakmile jich ale máte mnoho, software ltsp je nezbytný. Chcete-li tedy
provozovat jako bezdiskového klienta nějaké starší PC nebo něco podobného, musíte použít ltsp. Pracuje to perfektně i na
systémech s více než stovkou pracovních stanic jako tenkých klientů.
Jsou-li běžné počítače propojeny do sítě, můžete spouštět programy na jiném počítači pomocí NFS (Network File System ).
Takový program posílá zprávy po síti, takže se jeví, jako kdyby běžel na lokálním počítači. Ve skutečnosti však běží na jiném
počítači připojeném k síti. Funguje to i s X Window, takže na grafickém rozhraní můžete vidět obrázky vytvořené na jiném
počítači.
V Linuxu může být počítač v bezdiskové variantě a spouštět se po síti. Speciální software pro tento účel naleznete opět na
stránkách „Terminal Server Project“ a stručný přehled na Network-boot-HOWTO. Starší dokumenty na toto téma jsou DisklessHOWTO a Diskless-root-NFS-HOWTO. Pokud tedy používáte bezdiskový počítač s NFS, můžete zpracovávat programy na
jiných počíta-čích (na serveru). Trochu je to podobné síťovému počítači (NC). Není to však přímo NC, je pouze emulován určitý
typ NC. Říká se mu někdy pouze „terminál“, což v určitém smyslu skutečně je.
Máte-li tedy staré PC s ethernetovou kartou (NIC), můžete je používat jako síťový počítač. Jedním z možných zdrojů informací je
Thinclient-HOWTO. Dokonce ani když PC nemá NIC (tedy síťovou kartu), lze je použít k emulaci textového terminálu, viz
kapitola „Emulace terminálů“.
Existuje i spousta skutečných NC, které budou fungovat s linuxovým serverem. Některé i samy provozují Linux. Než vzrostla
obliba Linuxu, síťové počítače jej neprovozovaly, a musely tedy mít jiné operační systémy. I takové NC mohou spolupracovat s
linuxovým serverem. V takovém pří-padě je nelinuxový operační systém uložen na serveru jako běžný soubor a NC po spuštění
pošle linuxovému serveru zprávu, v níž si tento soubor vyžádá. Server jej po síti pošle na NC a ten se spustí.
Na linuxovém serveru běží jak NFS, tak i X Window, oba jsou podporovány NC. To umožňujepracovat s NC jako s X Window
terminálem.Pro provozování Linuxu na některých typech NC existují návody:
JavaStation-HOWTO (Sun),
NC-HOWTO (IBM NetStation),
NCD mini-HOWTO (NCD-ThinSTAR),
NCD-X-Terminal mini-HOWTO,
XDM-and-X-Terminal mini-HOWTO.
Hardwarové schéma
U tenkých klientů existují 3 různé druhy hardwarového uspořádání. První typ pouze používá PC jako tenkého klienta a emuluje
tlustého klienta. Ve skutečnosti to není tenký klient, ale chová se tak. Druhý typ vypadá jako textový terminál, tedy jako monitor
s jedním konektorem na kláves-nici a s jedním na síťový kabel. Je to jednoúčelový tenký klient, který nelze použít k ničemu jinému. Třetí typ vypadá jako malinký počítač. Je vybaven standardním PC monitorem a klávesnicí, které se zasouvají do malého
boxu, což je vlastně „tenký“ počítač a tvoří rozhraní mezi monito-rem a klávesnicí na jedné straně a sítí na druhé straně.
Historie a budoucnost
Příznivci síťových počítačů a příbuzných window-terminálů měli v plánu, že tyto terminály brzy nahradí miliony osobních
počítačů. V roce 1998 bylo na celém světě prodáno kolem 700 tis. ten-kých klientů (z nichž asi 27 % bylo NC). V roce 1999
prodej poklesl na 600 tis., avšak v roce 2000 opět vzrostl na 900 tis. (přičemž předpověď byla 1,3 mil. kusů). V roce 2001 se
prodalo 1,09 mil. a předpověď na rok 2002 zněla na 1,4 mil. kusů.
Na trhu stále vedou (rok 2003) servery firmy Microsoft. Klienti mohou pracovat pod systémem Linux, i když za každého
takového klienta je nutno zaplatit Microsoftu licenční poplatek. Půdu pod nohama tak získávají volně šiřitelné, čistě linuxové
systémy.
Hlavním důvodem, proč růst prodeje zaostával za předpověďmi, byl pokles cen osobních počíta-čů v posledních letech, které tak
nejsou o mnoho dražší než tencí klienti. Je nicméně otázkou, zda není lepší tenký klient ve srovnatelné ceně s osobním počítačem,
vezmeme-li v úvahu nižší nákla-dy na jejich správu a údržbu. Tencí klienti někdy nahrazují textové terminály místo PC.
Emulace na PC
Vzhledem k tomu, že osobní počítač má obrazovku a klávesnici (podobně jako terminál), avšak disponuje mnohem větší
výpočetní kapacitou, je možné využít její část na zajištění funkcí texto-vého terminálu. Tomu se říká „emulace terminálu“ a
emulují se obvykle textové terminály. Viz kapitola „Emulace terminálů“.
Rychlá instalace
Jde o rychlé nainstalování terminálu bez nutnosti procházet procedurami nastavování terminálu i počítače popsanými v kapitole
„Nastavení“. Je-li terminál nastaven vzhledem k počítači nekom-patibilně, terminál po rychlé instalaci pravděpodobně nebude
pracovat korektně. Pokud byste některé části v této kapitole nerozuměli, potřebné informace určitě naleznete v jiných částech
tohoto dokumentu.
Máte-li v úmyslu instalovat terminál, nahlédněte nejdříve do /etc/termcap nebo terminfo.src, kde naleznete příslušnou položku.
Zjistěte, ke kterému sériovému portu bude terminál připojen a jaké má označení tty (např. ttyS1 nebo tts/1, viz kapitola „Jména
zařízení“). Jako uživatel root změňte soubor /etc/inittab tak, že za příkazy getty přidáte další příkaz getty, jehož tvar závisí na tom,
jaký program getty používáte. Nejjednodušší je agetty (v distribuci Debian se nazý-vá pouze getty), nemá žádný konfigurační
soubor. Nahlédněte i do manuálových stránek getty. Parametry getty získáte z databáze terminfo (nebo termcap) – hledejte podle
jména terminálu, například vt100. Zadejte přenosovou rychlost (baud-rate), kterou terminál podporuje. Nastavíte-li ji příliš
vysokou, pomoc naleznete v kapitole „Řízení přenosu“.
Pak fyzicky připojte hlavní sériový port terminálu ke zvolenému sériovému portu počítače pří-slušným kabelem (null modemem)
a zapněte terminál. Příliš nespoléhejte na to, že kabely z výro-by budou zapojeny správně. Přesvědčte se, zda jste nastavili stejnou
přenosovou rychlost, jako jste uvedli v příkazy getty, a že „datových bitů“ je 8. Na konzole počítače pak zadejte init q, aby se
uplatnily změny provedené v souboru inittab. Na terminále byste měli nyní vidět přihlašovací prompt (výzva). Nebude-li tam,
stiskněte klávesu return. Nebude-li terminál ani pak fungovat, pokračujte ve čtení tohoto dokumentu a podívejte se i do části
odstraňování závad.
Proč používat terminál?
Úvod k této kapitole
Počítače jsou dnes už tak výkonné, že jedno PC většinou stačí obsloužit několik uživatelů sou-časně, zejména když počítač příliš
nezatěžují, tj. například editují, pořizují data apod. K jednomu osobnímu (nebo jinému) počítači můžeme modemem nebo
napřímo připojit několik terminálů. Je třeba mít počítač vybaven víceuživatelským systémem, což je například Linux, aby každý
uživatel mohl využívat počítač nezávisle. Tento způsob se dříve nazýval „sdílení času“, což ale dnes už není zcela vhodný výraz,
neboť „distribuované“ výpočty po síti jsou také svým způsobem sdíle-ním času. Lépe je označovat tento způsob práce jako
„centralizované“ výpočty. Centrální počítač však může být po síti připojen ke zbytku světa, uživatelé tedy mohou posílat e-maily,
prohlížet Internet pomocí linuxových prohlížečů atd. Takže ani tento počítač nelze nazvat „centrálním“.
Terminály se dříve zřídkakdy používaly s osobními počítači, neboť oblíbené operační systémy, které se na nich provozovaly
(Windows, DOS a Mac), nebyly až do roku 1998 víceuživatelské (první byl MS Windows NT) a podpora terminálů byla špatná.
Nyní, když Linux je volně přístupný víceuživatelský systém pro osobní počítače, používání terminálů je snáze uskutečnitelné.
Nevýhodou je, že textové terminály nejsou dostatečně inteligentní na to, aby podporovaly grafické rozhraní (GUI), jejichž použití
se na současných počítačích běžně předpokládá.
Nižší cena hardwaru?
Když ještě byly počítače (i osobní) drahé, nižší ceny hardwaru byly výraznou výhodou terminálů. Dnes, když už jsou PC levné, se
úspora jeví jako problematická. Přečtěte si, co jsem napsal před několika lety, když ještě byly PC drahé. Platí to dodnes, avšak
tvrzení už nemá takový význam.
Používá-li počítač několik lidí současně, k zajištění stejné úrovně služeb je potřeba méně hard-waru. Jedna úspora spočívá ve
sdílení kódu. Podobně jako jsou sdíleny knihovny, sdílejí se i apli-kační soubory na pevném disku (i když uživatelé provozují
různé programy, používají řadu spo-lečných funkcí). Jiným typem úspory je lepší rozložení zatížení počítače. Pracuje-li na
počítači pouze jeden uživatel, hardware běží po většinu času naprázdno, neboť člověk píše pomalu, pře-mýšlí, mluví a často
odchází od stolu. Pracuje-li na počítači více lidí, je lépe využíván strojový čas, který by se jinak promarnil.
Úspory jsou značné. Lze (statisticky) odhadnout, že pro 9 osob (8 terminálů a jedna konzola) potřebuje sdílený počítač pouze
trojnásobnou kapacitu (paměti, diskové paměti, základní jednot-ky atd.) oproti PC s jedním uživatelem. U sdíleného systému tedy
stojí hardware pro výpočty na jednoho uživatele zhruba 1/3. Cena zobrazovacího hardwaru (displeje, klávesnice, videoelektro
niky atd.) je však zhruba stejná. Terminály navíc musí mít počítač se sériovými porty.Aby bylo srovnání provedeno seriózně,
terminály by měly mít stejné možnosti jako PC monitory.Bohužel, barevné grafické terminály pro Linux (X Window) s
vysokorychlostní komunikací stojítéměř tolik jako PC a úspora je menší, pokud je vůbec nějaká. V případě textových terminálů
jeovšem úspora prokazatelná, zejména když používáte levnější terminály.
Kontrola softwaru
U centralizovaných výpočtů proběhne instalace softwaru (a aktualizací) pouze na jediném počíta-či. Správu a konfiguraci
nainstalovaného softwaru provádí většinou jedna osoba. Provádí-li tyto činnosti kvalifikovaně a zná-li dobře potřeby a preference
uživatelů, přináší to s sebou značné výhody. Správce může uživatele omezovat v hraní her a surfování po Internetu tím, že
nenainsta-luje příslušný software (anebo k němu omezí přístup). Výhodnost centralizovaného přístupu ke správě ovšem závisí na
konkrétní situaci.
Hardwarové aktualizace
Aktualizace hardwaru se týká pouze jednoho počítače. Ušetří se tím práce s instalací. I když cena hardwarové aktualizace
centrálního počítače bývá vyšší než cena aktualizace jednoho osobního počítače (to proto, že centrální počítač musí mít vyšší
výkon), celková cena ve srovnání s aktualizací všech PC používaných jako terminály bude výrazně nižší.
Další výhody terminálů
Nepřítomnost hluku ventilátorů a diskových mechanik (pokud ovšem neemulujete terminál pomocí PC).
Uživatelé terminálů mohou sdílet data a soubory a mohou si navzájem posílat e-maily. Uspořádání je podobné jako v
lokální síti.
Hlavní nevýhody terminálů
Textové terminály nemají vysokorychlostní grafické displeje (nebo grafiku s vysokým roz-lišením), i když pro kreslení
čtverečků apod. mohou využívat grafické znakové množiny. Tím je omezen i výběr programů, které se mohou na terminálech
používat.
Při výpadku centrálního počítače jsou terminály samostatně nepoužitelné (ledaže by byly ihned přepojeny na záložní
počítač).
Jsou už textové terminály překonané?
Textové terminály jsou už technicky zastaralé, neboť za mírně vyšší cenu si můžete pořídit inteli-gentní terminál (s kvalitním
displejem ). To nebylo dříve možné, neboť například kolem roku 1980 činila cena paměti tisíce dolarů za megabajt. Nyní, když
jsou paměti a procesory levné, lze poří-dit terminál s grafickým rozhraním za cenu o 10 až 20 % vyšší než běžný textový
terminál. Vzhle-dem k tomu, že PC může terminál emulovat, emulátory terminálů jsou běžně k dispozici.
Příčiny toho, že textové terminály ještě nejsou zcela překonané, jsou:
Monochromatické terminály mají lepší rozlišení znaků než monitory v textovém režimu.
Uživatelé často nepotřebují obrazovku s plnou grafikou.
Vzhledem k tomu, že textové terminály (ve srovnání s GUI terminály) spotřebovávají méně prostředků centrálního
počítače, může jich být k jednomu PC připojeno mnohem více.
Jak pracují terminály v Linuxu (přehled)
Viz také kapitola „Podrobnosti o práci terminálů“.
Jména zařízení
Všechny terminály jsou připojeny k sériovým portům centrálního počítače (často jako PC). Porty mají jména a čísla. Několik
prvních: tts/0 (nebo ttyS0), tts/1 (nebo ttyS1), tts/2 (nebo ttyS2) atd.
Tato jména jsou současně jmény speciálních souborů v adresáři /dev (jako „device“, tedy zaříze-ní). Soubor tts/0 (resp. ttyS0)
odpovídá COM1 v DOS a Windows, tts/1 (nebo ttyS1) je COM2 atd. Podrobnosti o těchto a podobných „zařízeních“ viz kapitola
„Speciální terminálové sou-bory“.
Přihlášení/odhlášení
Ihned po zavedení systému spustí centrální počítač program getty, který spustí „přihlašovací“ pro-gram pro přihlašování
účastníků. Viz kapitola „Getty (v /etc/inittab)“. Na obrazovce se objeví prompt „login:“ a účastníci se mohou po zadání hesla
přihlásit. Od té chvíle mají přístup k cent-rálnímu počítači. Když chtějí ukončit činnost, odhlásí se a vypnou terminál. Popis
omezení včet-ně přihlašování uživatele root viz kapitola „Omezení při přihlašování“.
Poloviční a plný duplex
Když pozorujete někoho, jak píše na terminálu, zadávaná písmena se současně objevují na obrazovce. Člověk by se mohl naivně
domnívat, že zadávané znaky se posílají z klávesnice přímo na obrazovku a současně do počítače (jakoby poloduplexem, viz násl.
odstavec). Ve skutečnosti jde znak z klávesnice přímo pouze do počítače, a teprve odtud je poslán zpět na terminál (plný duplex ).
Písmena se neposílají zpět pouze v některých případech (např. heslo nebo zkrácené příkazy editoru).
Plný duplex znamená, že existují dvě jednosměrná komunikační spojení. Plný duplex je pro terminál normou. Poloduplex je
polovinou plného duplexu, tj. že existuje pouze jedno jednosměrné spojení, které sdílejí oba směry, a v daném okamžiku je možno
použít pouze jeden směr. V takovém případě počítač není schopen opisovat zadávané znaky (a posílat je), takže terminál musí
posílat každý znak i přímo na obrazovku. Některé terminály mají poloduplexní režim, avšak používá se velice zřídka.
Pamě terminálů
Pokud nebude obrázek na obrazovce obnovován paprskem elektronů vysílaným na stínítko, téměř okamžitě zmizí. Vzhledem k
tomu, že text poslaný na terminál musí na obrazovce zůstat, je nutno jej uložit do paměti mikroprocesoru terminálu a paprsek
elektronů jej musí na stínítko opakovaně kreslit (řekněme 60x za sekundu), aby se ze stínítka neztratil. Viz kapitola „Podrobnosti
o paměti terminálu “.
Příkazy pro terminál
Terminál je řízen z počítače, který nejen posílá text ke zobrazení, nýbrž také posílá terminálu pří-kazy, které jsou prováděny. Jsou
to řídicí kódy (bajty) a řídicí sekvence („escape sequences“). Například řídicí kód CR (carriage return, návrat vozíku) přesune
kurzor na levý okraj obrazovky. Určitá řídicí sekvence (několik bajtů, z nichž první je řídicí kód „escape“) může přemístit kurzor
na obrazovce na místo určené parametry umístěnými uvnitř řídicí sekvence.
Nejstarší terminály měly pouze několik takových příkazů, zatímco současné jich mají stovky. Vzhled displeje se může na různých
místech měnit: jas, mat, podtržení, blikání nebo inverze. Když někdo zmáčkne klávesu, reproduktor může „cvaknout“ nebo
pípnout, když dojde k chybě. Funkč-ní klávesy mohou být naprogramovány. Mohou existovat různé fonty. Displej může rolovat
naho-ru a dolů. Na displeji lze určité oblasti vymazat. Mohou existovat různé druhy řízení toku dat, když například zasílaná data
přicházejí na displej rychleji, než mohou být zpracována. Je jich mnohem a mnohem víc, jak se dozvíte z pokročilejších
terminálových manuálů nebo z kapitoly „Seznam řídicích posloupností“.
Chybějící standardy řeší terminfo
Zatímco terminály vyráběné pro prodej v USA používají pro abecedu stejný kód ASCII (kromě ter-minálů IBM, které používají
EBCDIC), bohužel nepoužívají stejné řídicí sekvence. To se stávalo dokonce i poté, co byly ustaveny různé standardy ANSI (a
ISO). To proto, že nebyly vytvářeny s dostatečným předstihem. Navíc, starší terminály postrádaly možnosti novějších terminálů,
což působilo problémy. Počítač například pošle terminálu řídicí sekvenci, aby byla obrazovka rozdě-lena na dvě okna určité
velikosti, aniž by si uvědomil, že terminál toho není schopen.
K odstranění těchto problémů byla vytvořena databáze „termcap“ (ze slov „terminal capabilities“, schopnosti terminálů). Později
byla termcap nahrazena databází „terminfo“. Tyto databáze jsou uloženy v určitých souborech na počítači a pro každý model
terminálu mají samostatnou část nebo samostatný soubor. Pro každý model (např. VT100) je k dispozici seznam funkcí včetně
řídicích sekvencí. Například blink=\E5m znamená, že terminál rozblikáte tak, že na něj pošlete Escape 5 m. Další podrobnosti viz
kapitola „Termcap a Terminfo“. Aplikační programy mohou tuto data-bázi používat prostřednictvím určitých funkcí knihovny C.
Jedna z velkých skupin těchto progra-mů (přes 200) se jmenuje „ncurses“ a v manuálových stránkách stejnojmenného
vývojového balí-ku je naleznete rovněž pod stejným označením – ncurses. Existuje i Návod k programování NCURSES (http://
www.tldp.org/HOWTO/NCURSES-Programming-HOWTO/index.html).
Rozhraní
Vnější proměnná TERM obsahuje typ terminálu, o němž se Linux domnívá, že jej používáte. Vět-šina aplikačních programů ji
používá pro hledání funkcí v databázi terminfo, takže musí být nasta-vena správně. K vytvoření správného rozhraní je toho ovšem
potřeba trochu víc než jen znalost funkcí terminálu.
K tomu, aby mohl terminál přijímat tok bajtů z počítače, musí být nastaven na stejnou přenoso-vou rychlost, jakou jsou posílány
z počítače. Je-li terminál nastaven na příjem 19 200 baudů a počí-tač posílá znaky rychlostí 9 600 baudů, na obrazovce
pravděpodobně uvidíte jen zmatek nebo vůbec nic. Přenosovou rychlost terminálu (jakož i jiné funkce) vyberete v menu „set-up“
na ter-minále. Většina terminálů má v menu „set-up“ na vybranou mnoho voleb (viz kapitola „Nastavo-vání terminálů“). Volby
mají i sériové porty počítačů a je nutno je nastavit tak, aby byla zachová-na kompatibilita.
Emulace
Většina dnešních terminálů má několik emulací (charakteristik, resp. „terminálových režimů“). Čísla modelů terminálů, která
původně používala firma DEC (Digital Equipment Corporation, nyní Compaq), začínají od VT (tj. VT100). Mnoho dalších
terminálů, které nejsou VT100, může emulo-vat VT100. Hlavním výrobcem terminálů je firma Wyse a většina jejich terminálů je
schopna emu-lovat různé terminály DEC, např. VT100 a VT220. Chcete-li tedy používat řekněme terminál VT320, můžete si
buďto pořídit skutečný terminál s charakteristikou VT320 nebo si vybrat některý jiný ter-minál, který umí emulovat VT320.
„Původní“ (nativní) charakteristika obvykle mívá více funkcí, takže i když ostatní kritéria jsou srov-natelná, je nejlépe používat
terminál s „původní“ charakteristikou. Vzhledem k tomu, že linuxová konzola emuluje VT102, můžete si pořídit terminál, který
jej emuluje (anebo něco podobného, např. VT100). Tím se přesvědčíte o tom, že některé programy, které neovládají terminály
správně, budou na vašem terminále pracovat přece jen dobře. Když některé programy nenajdou terminfo s údaji o vašem
terminálu (anebo nenajdou určité funkce), budou mít za to, že používáte VT102. Důvodem takového selhání tedy může být
skutečnost, že nemáte k dispozici správný soubor term-info, což je chyba na vaší straně. Chyby způsobené a ohlášené
„původním“ terminálem vám pomohou nalézt chyby, na něž byste třeba jinak vůbec nepřišli.
Nejběžnějším typem emulace je použití PC jako terminálu vt100 (nebo podobného). Emulaci pro-vádějí programy zavedené do
paměti PC. V Linuxu (pokud nejste v X Window) monitor PC (nazý-vaný konzola) emuluje terminál typu „Linux“ (podobný
vt100). Dokonce některá okna v X Win-dow emulují terminály, viz kapitola „Emulace terminálů“.
Konzola
Na osobním počítači je monitor konzolou. Emuluje terminál typu „Linux“. Lze se na něm přihlásit jako na virtuálním terminálu,
jak si v tomto dokumentu ještě ukážeme. O spouštění a ukončová-ní systému dostává konzola zprávy od jádra systému. Zprávy,
jež obvykle jdou na konzolu, lze přesměrovat na terminál. Dříve bylo nutno provést záplatu jádra, od verze jádra 2.2 lze přesměrování uskutečnit prostřednictvím „make config“. Viz kapitola „Jak se stane terminál konzolou“.
Speciální soubory terminálů (např. /dev/tty)
Označení „tty“ je zkratkou slova „teletype“ (dálnopis ). Prvními terminály byly dálnopisy (neboli psací stroje ovládané na dálku).
Viz podkapitola „Dálnopisy“. Seznam linuxových zařízení (obsah adresáře /dev) naleznete v „Linux Allocated Devices (Zařízení
používaná v Linuxu)“ ve zdrojo-vých textech jádra. Seznam neobsahuje žádný návod k použití jednotlivých zařízení, pouze je
několika slovy uvedeno, k čemu je zařízení vhodné.
Sériový port jako terminál
Počítač považuje sériové porty za „zařízení“. Někdy je nazýváme terminálová zařízení, neboť v jednu dobu byly terminály
nejobvyklejším využitím sériových portů. Ke každému sériovému portu existuje v adresáři /dev speciální soubor. Ve světě DOS/
Windows se speciální soubor /dev/tts/0 (nebo /dev/ttyS0) pro sériový port nazývá COM1. Zápis staršího typu ttyS0 vsou-borovém
systému zařízení je nahrazen zápisem tts/0. Starší notaci budeme ovšem používat poměrně často, je dosud dost rozšířená a funguje
(prostřednictvím symbolických odkazů) i v nových souborových systémech.
Text na terminál můžete poslat například tak, že přesměrujete standardní výstup příkazu na někte-rém příkazovém řádku do
příslušného speciálního souboru. Napíšete-li za prompt na řádku napří-klad echo test > /dev/ttyS1 a máte-li oprávnění k zápisu
do /dev/ttyS1, na terminál ttyS1 (COM2) se pošle slovo „test“. Podobně můžete například příkazem cat my_file > /dev/ttyS0 poslat
obsah souboru my_file na COM1 (ttyS0).
Pseudoterminály
Pseudoterminály jsou dvojice zařízení, např. /dev/pty/m3 a /dev/pty/s3 (anebo /dev/ptyp3 a /dev/ttyp3 , nepoužíváte-li souborový
systém zařízení). S žádným z nich není spojeno žádné fyzické zařízení, dokonce ani konektor sériového portu. Když však
program s s3 (ttyp3 ) naloží, jako by to byl sériový port, obsah toho, co se ze souboru přečte nebo zapíše do něho, se objeví v
druhém členu dvojice, tedy m3 (ptyp3 ), jejž k zápisu a čtení používá jiný program. Dva progra-my tak spolu mohou touto metodou
komunikovat a jeden program se domnívá, že hovoří se séri-ovým portem. Tento způsob si můžeme představit jako „rouru“ mezi
m3 a s3.
Každý program, který je určen pro sériový port s3 (ttyp3), na něj bude psát. Ovšem druhý pro-gram, který komunikuje s m3
(ptyp3 ), musí být takto napsán. S pseudoterminály se musejí potý-kat hlavně programátoři, uživatelé se o ně nemusí starat.
Uveďme si příklad: Když se někdo k vašemu počítači připojí po síti přes telnet (předpokládejme, že jste telnetový server), část
programu telnet zpracovávající toto spojení na vašem počítači může být napojena na pseudoterminál m2 (ptyp2). Program getty by
měl běžet na odpovídajícím s2 (ttyp2). Getty si myslí, že komunikuje s terminálem. Když telnet dostane znak od vzdáleného
klienta, jde přes m2 k s2 ke getty, který pak vrátí „login:“ nasměrovaný na s2 , m2, program tel-net na serveru a poté po síti zpět ke
klientovi. V tomto případě přihlašovací program a servero-vý telnet spolu komunikují prostřednictvím „pseudoterminálu “.
Poznamenejme ještě, že na kli-entském počítači se nepoužívá pseudoterminál, pouze telnet. Server pochopitelně přidělí pseudoterminál všem klientům.
V systému X Window používá pseudoterminály terminálový emulační program xterm (nebo rxvt). Používají je i radioamatérské
programy pod Linuxem. S podporou určitého aplikačního soft-waru je možné mít 2 nebo více pseudoterminálů, jež jsou připojeny
k jednomu fyzickému sério-vému portu.
V pseudoterminálových dvojicích, např. m3 (resp. ptyp3) a s3 (resp. ttyp3), je hlavním neboli řídicím terminálem m... (pty...) a s...
(tty... ) je terminál podřízený. Označení vychází ze sou-borového systému zařízení, kde „m“ je od slova „master“ a „s“ od slova
„slave“. Pro lepší zapa-matování si můžeme říct „s“ jako „sériový“ (sériový port). V původní notaci tty. (...) odpovídá sériovému
portu ttyS (původně pouze tty).
Zvýšení počtu pseudoterminálů ještě před souborovým systémem se provádělo pomocí rozšířené notace. Počet ttyp je jen 16:
ttyp0-ttypf (f je hexadecimální číslice). Aby vznikl větší počet dvo-jic, písmeno p bylo nahrazeno dalšími písmeny, např. q, r, s
atd. Pseudoterminálovými dvojicemi pak byly např. ttys8 , ptys8 apod. Později byla přidávána další písmena. Se zavedením souborového systému můžeme například pro 58. řídicí pty místo /dev/ttys9 použít /dev/pty/m57 . Často se stává, že někdo místo ttyS2 (což
je skutečný sériový port) uvede chybně pseudosério-vý port ttys2 .
Hlavní a podřízený port jsou skutečně stejné „porty“, avšak podřízený port používají aplikační pro-gramy, zatímco hlavní port
používají síťové (nebo podobné) programy, jež posílají data na podří-zený port nebo je z něho čtou. Program, který používá
podřízený port, může běžet „tak jak je“, neboť se domnívá, že komunikuje se sériovým portem.
Unix98 (dostupný v Linuxu) nepracuje podle schématu shora, nýbrž používá místo toho „pty mas-ter“, což může být např. /dev/
ptm3 . Jeho podřízený terminál /dev/pts/3 je vytvořen automatic-ky, na požádání poskytne pty. Má se za to, že adresář /dev/pts je
souborový systém typu devpts a je v seznamu připojených souborových systémů. I když „soubor“ /dev/pts/3 vypadá jako položka
souborového systému zařízení, jde o zcela jiný typ souborového systému.
I když ostatní linuxové systémy mají manuálovou stránku pseudoterminálů (může se jmenovat „pty“), Linux ji pro běžného
uživatele nemá. Má ji však pro programátory (openpty nebo forkpty) a předpokládá, že pseudoterminály už máte zvládnuté.
Existuje jak linuxový modul pty, tak i sou-bor /usr/include/pty.h.
Řídicí terminál /dev/tty
/dev/tty je řídicím terminálem (existuje-li) stávajícího procesu. Příkazem ps -a zjistíte připojení tty ke konkrétnímu procesu.
Nahlédněte do sloupce „tty“. Ve stávajícím shellovském procesu používáte terminál /dev/tty. Zjistíte to, když za promptem zadáte
„tty“ (viz manuálové stránky tty(1)). Terminálech /dev/tty je něco jako odkaz na skutečné jméno terminálového zařízení s dal-šími
funkcemi pro programátory v jazyce C: viz manuálové stránky tty(4).
/dev/ttyIN „terminály“
N zastupuje celé číslo. Jednou z možností použití v Linuxu je prostřednictvím balíku ovladačů ISDN: isdn4linux; ttyIN se podobá
ttySN , avšak emuluje modem a lze mu zadávat příkazy modemu.
Konzoly: ttyN nebo vc/N
Monitor PC obvykle nazýváme konzola a je s ní spojeno několik speciálních souborů zařízení: vc/0 (tty0 ), vc/1 (tty1 ), vc/2 (tty2) atd.
Po přihlášení jste na vc/1. Na vc/2 (na téže obra-zovce) přejdete současným stisknutím dvou kláves: levý Alt+F2, na vc/3 pomocí
levý Alt+F3 atd. Tyto vc/1, vc/2, vc/3 atd. nazýváme „virtuální terminály“; vc/0 (tty0) je pouze alias pro stávají-cí virtuální terminál,
na nějž jsou posílány zprávy ze systému. Systémové zprávy tedy budou vidět na konzole (monitoru) bez ohledu na to, který
virtuální terminál je vypisuje.
Můžete se přihlásit na několika různých virtuálních terminálech a mít tak současně otevřených několik sezení. Na /dev/vc/0 , na
nějž se někdy odkazuje /dev/console, může zapisovat pouze systém a uživatel root. Další informace o konzole viz kapitola
„Konzola v Linuxu“.
Vytvoření zařízení pomocí příkazu „mknod“
Adresář /dev obsahuje speciální soubory zařízení. Potřebujete-li pracovat se souborem, který v tomto adresáři není, můžete se jej
pokusit vytvořit příkazem mknod. Informace o tom, jakým způsobem je nutno postupovat v případě sériových portů, naleznete v
manuálových stránkách na ttys(4). Chcete-li zadat příkaz mknod, musíte nejdříve znát hlavní a vedlejší číslo zařízení. Může-te si
je odvodit z výstupu příkazu ls -l v adresáři /dev, který vypíše hlavní a vedlejší čísla všech existujících speciálních souborů.
Podrobněji o tom, jak terminály pracují
Ke čtení této kapitoly jsou nutné alespoň základní znalosti o činnosti terminálů, které naleznete v „Úvodu“.
Něco o paměti
Obrazovka terminálu se z obrazu uloženého v paměti terminálu obnovuje asi 60x za sekundu. Na PC je obraz monitoru uložen na
videokartě v počítači, zatímco ekvivalent videokarty terminálu je uvnitř terminálu. Textový terminál nepotřebuje velký objem
paměti. V paměti nejsou uloženy všechny body (pixely) obrazu, což by vyžadovalo uložení zhruba čtvrt milionu bodů, nýbrž
používá se mnohem úspornější metoda.
Obrazovka popsaná textem je v paměti terminálu uložena v bajtech ASCII, jeden bajt odpovídá jed-nomu znaku na obrazovce.
Celá obrazovka zabere pouze kolem 2 k takovýchto ASCII bajtů. Tisk-nutelných znaků je téměř 100, přičemž terminál musí znát
jejich bitové mapy (tvary). Když bitová mapa jednoho znaku musí být uložena řekněme v 15 bajtech, pro uložení bitových map
všech znaků ASCII (neboli fontu) je potřeba pouze kolem 1,5 k paměti. ASCII text a paměť s fonty se čtou z paměti tak často, aby
je bylo možno 60x za sekundu přenášet na obrazovku. Jde vlastně o urči-tý způsob sdílení paměti, neboť například pro všechna
písmena „e“ na obrazovce existuje pouze jedna bitová mapa. Nízké požadavky na množství paměti znamenaly počátkem 80. let,
kdy cena paměti byla několik tisíckrát vyšší než dnes (pár dolarů za kilobajt), i nízké ceny monitorů.
První terminály
Nejstarší terminály se podobaly spíše psacím strojům řízeným na dálku. Uměly pouze „zobrazit“ (vytisknout na papír)
posloupnost znaků posílaných z počítače. První modely se nazývaly dálno-pisy (viz dále) a zkratka „tty“ vlastně vznikla ze slova
„teletype“. Uměly posun papíru o řádek (line feed) a návrat vozíku (carriage return) podobně jako psací stroj a uměly také
„cinknout“, když dostaly znak „zvonek“. Tyto terminály měly velmi málo funkcí, a byly proto nazývány „hloupé“. Tento typ
„hloupého“ terminálového rozhraní se používá dodnes, když počítač neví, s jakým typem terminálu komunikuje.
Řídicí sekvence a kódy (intro)
Terminály mají mnoho funkcí, z nichž některé jsou aktivované a některé vyžadují aktivaci anebo změnu příkazem z počítače. K
tomu, aby bylo možno z počítače využít všechny funkce, jsou urče-ny speciální kódy k ovládání terminálů. Existují dva hlavní
typu těchto kódů: řídicí sekvence a řídi-cí kódy (resp. řídicí znaky). Řídicích sekvencí je mnohem víc než kódů.
Řídicí kódy
Řídicí kódy (lépe řečeno řídicí znaky) jsou bajty na prvních 32 místech abecedy ASCII. Jsou to: návrat vozíku (carriage-return,
kurzor se posune zcela vlevo), nový řádek (line-feed, kurzor přejde
o řádek níž), posun o jeden znak zpět (backspace), znak escape (ESC), tabelátor (TAB) a zvonek (BELL). Tyto znaky se obvykle
na obrazovce nezobrazují. Existuje ovšem příkaz, kterým lze moni-toru zadat, aby je zobrazoval. Příkaz se obvykle jmenuje
„zobrazení řídicích znaků “ (display con-trol) nebo „monitor“ anebo nějak podobně. Když tento příkaz zadáte, na displeji vznikne
kvůli řídi-cím posloupnostem zmatek, protože všechny začínají řídicím znakem ESC a po zadání tohoto pří-kazu se přestanou
provádět. Slova, která by se měla nacházet na horním nebo dolním okraji obra-zovky, budou jinde. Řídicí posloupnost se sice
zobrazí, ale nepřesune kurzor tam, kam má.
Řídicí posloupnosti
Vzhledem k tomu, že řídicích kódů není dost na to, aby mohly zajistit všechny funkce (a z urči-tých důvodů se některé
nepoužívají), je nutno používat řídicí posloupnosti. Skládají se z řídicího znaku „escape“ (ESC), za nímž následuje posloupnost
obyčejných znaků. Když terminál obdrží znak ESC, zkoumá další znaky, aby je mohl příslušným způsobem interpretovat, tedy
provést požadovaný příkaz. Jakmile rozpozná platnou posloupnost, další znaky už pouze zobrazuje (pokud to nejsou řídicí znaky
nebo další řídicí posloupnost). Některé řídicí posloupnosti mohou mít parametry (resp. argumenty), např. souřadnice místa na
obrazovce, kam má být přesunut kurzor. Parametry jsou součástí řídicí posloupnosti. Seznam řídicích posloupností některých
terminálů naleznete na Internetu, avšak není úplný.
Seznam řídicích posloupností konkrétního terminálu by měl být v „programátorském manuálu“ daného terminálu. S výjimkou
velmi starých terminálů mohou tyto seznamy obsahovat několik sto-vek takových posloupností. Pokud příslušný manuál nemáte,
hledají se tyto posloupnosti velice obtížně – na Internetu jsou jen některé. Některé jsou i v tomto návodu. Hledání jedné posloupnosti na Internetu (např. ESC[5m) může obnášet prohledávání velice dlouhého seznamu.
Jinou možností, jak některé z nich určit, je najít si příslušnou položku v terminfo (resp. v termcap) a rozluštit ji. Podrobnosti viz
kapitola „Terminfo a termcap“, případně „Dokumentace k termin-fo/termcap“. Seznamy v terminfo, resp. termcap, bohužel často
nejsou úplné, avšak nejdůležitější řídicí posloupnosti by snad měly obsahovat.
Atributy zobrazení & kouzelné cookies
Terminály mají řadu různých metod, jak vytvářejí vlastnosti znaků, např. tučné, inverzní, podtržené atd. Uživatel se o to nemusí
starat, ledaže by vznikly nějaké problémy se starými terminály; na novějších terminálech je někdy nutno změnit určitá nastavení
v menu „set-up“.
Metoda kouzelných cookie už poněkud vyšla z módy, je nejjednodušší (a nejhorší) metodou defi-nování atributů: jeden bajt tvoří
začátek atributu a druhý jeho konec. Například cookie bajt „začá-tek podtržení“ je umístěn před prvním slovem, které má být
podtrženo. Tyto řídicí bajty jsou ulo-ženy do paměti stránky obrazovky stejně jako znakové bajty, které mají být vypsány jako
znaky. Může však dojít ke změně počtu znaků na řádek, neboť netisknutelné cookie znaky jsou smíchá-ny s tisknutelnými. Někdy
jsou s tím problémy.
Lepší metodou, která však má větší spotřebu paměti, je přiřazení atributového bajtu (nebo půlbajtu) každému vypisovanému
znaku. Tuto metodu používají při výpisu textu videokarty monitorů PC.
Další vlastnosti některých terminálů
Barva
I když běžný monochromatický monitor není barevný, displej může mít jinou barvu než bílou, např. zelenou nebo žlutou.
Všechny terminály mají černou (paprsek elektronů je vypnutý = nulo-vý jas). Zatímco skutečný barevný terminál může měnit
barvu textu a pozadí, monochromatický terminál pouze mění jas pevně dané barvy.
Změna jasu apod. však poskytuje určité možnosti. Například černobílý monochromatický terminál může mít díky změnám jasu
bílou, šedou a černou. Některá slova mohou být černá na světle šedém pozadí, jiná výrazně černá na bílém pozadí. Dále mohou
být bílá písmena na černém poza-dí, mohou být podtržená a mohou blikat.
Princip vytváření barev na terminálech je stejný jako na počítačových monitorech a na televizních obrazovkách. Povrch
obrazovky je složen z bodů o třech barvách, každá barva je řízena jedním paprskem elektronů. Monochromatická obrazovka má
díky konstrukci lepší rozlišení, neboť nezá-visí na pevných bodech pokrývajících obrazovku. Textové terminály používají barvy
pouze k roz-lišení textů a tato výhoda nestojí vždy za horší rozlišení. Výhodou monochromatického monitoru je pochopitelně i
cena.
Vícenásobná sezení
Pro dvojí sezení má terminál dva rovnocenné sériové porty. Každý port je připojen k sériovému portu jiného počítače. Lze se tedy
připojit k dvěma různým počítačům, přičemž ke každému z obou sezení přísluší jedno okno rozděleného displeje. Anebo mohou
obě sezení pracovat s celou obrazovkou a přepínat sezení je možné „horkou“ klávesou (nebo jakkoli jinak). Je také možné se
připojit ke dvěma různým sériovým portům na jednom počítači a přihlásit se dvakrát (podobně jako „virtuálními terminály“ na
konzole). Program screen zajistí, že na běžném termi-nálu jednoho počítače mohou běžet dvě nebo i více „sezení“.
Port tiskárny/pomocný port
Mnohé terminály mají na zadní straně konektor pro tento port. Může být označen „Aux“ nebo „Prin-ter“ apod. Některé porty
tiskáren jsou určeny pro paralelní tiskárny, jiné pro sériové. Je-li tiskárna připojena k portu tiskárny nebo k pomocnému portu, po
stisknutí určité klávesy se vytiskne obra-zovka. Lze také posílat na tiskárnu vše, co se objeví na obrazovce. V případě pomocného
portu se lze připojit i k jinému počítači a vytvořit téměř dvojí sezení jako v předchozím případě. Videopa-měť v terminálu však
nedokáže obnovovat obě sezení současně, je tedy možné, že ji bude nutno po přepnutí na druhé sezení obnovit „ručně“. Takový
terminál pravděpodobně nebude mít horkou klávesu, pro tento účel lze však naprogramovat kteroukoli jinou klávesu. Pro řízení
takového portu existuje celá řada nejrůznějších řídicích sekvencí, viz kapitola „Escape sekvence tiskáren“.
Existuje program vtprint , který je určen k odesílání tiskových úloh (pouze textových) k tisku na terminál, resp. na tiskárnu, která je
k němu připojena. Domovskou stránku tohoto programu nalez-nete na adrese http://garrett.damore.org/~garrett/software/vtprint/.
Je také součástí linuxové distri-buce Debian. Něco podobného dělá i program xprt (rovněž Debian), avšak pouze pro terminá-ly
X Window??
Používání portu pro tiskárnu k tisku může být výhodné například tehdy, když na počítači nemá-te zvláštní port na připojení
tiskárny nebo pokladny. Když počítač posílá něco na terminál a ono to místo toho jde na tiskárnu, říkáme tomu „transparentní
tiskový režim“. Pokud byste chtěli zajis-tit, aby tiskárna posílala bajty zpět na PC (tedy opačným směrem), nazýváme tento
způsob (dle terminologie Wyse) „dvousměrný režim“. „Pomocný tiskový režim“ firmy Wyse je pouze transpa-rentní tiskový
režim, při němž obrazovka terminálu monitoruje tisk.
Stránky
Celá řada terminálů může ukládat do videopaměti několik stránek. Někdy je velikost stránky stej-ná jako velikost obrazovky,
někdy však je větší, takže k nezobrazeným částem stránky přejdete rolováním. Když tedy hledíte na obrazovku, skrytý text
zobrazené stránky může být nahoře i dole. Navíc, je-li stránek několik, může být skrytý text součástí dalších stránek. Stránkování
lze také pou-žívat na terminálech, které podporují dvojí sezení. Každé sezení může mít své vlastní stránky a lze se mezi nimi
přepínat.
Dokonce i když máte jednostránkový terminál a velikost stránky je shodná s tím, co je na obra-zovce, uvidíte i další stránky
souboru (apod.), které počítač posílá na terminál. Jednou z výhod přídavných stránek uložených v paměti terminálu je možnost
okamžitého přechodu mezi strán-kami, aniž byste museli čekat na jejich vyslání z počítače.
Vícestránkové terminály podporuje program ncurses. Pro podporu vícestránkových terminálů existuje také komerční program
„multiscreen“, pravděpodobně však nikoli v Linuxu?? Možnost práce s více stránkami je také v SCO, metoda však spíše
připomíná virtuální terminály na konzole. Dále existuje linuxový program „screen“, který stránkuje výstupy, avšak stránky jsou
uloženy v paměti počítače a každý program má na obrazovce k dispozici jen jedno okno.
Znakové množiny
Znakovou množinu obvykle představuje seznam (resp. tabulka nebo diagram) znaků a bajtovýchkódů. Rozsah kódů je od 0 do
255 (hexadecimálně 00 až FF). V systému MS-DOS se tabulky seznakovými množinami nazývají „kódové stránky“. S jejich
obsahem byste se měli seznámit, pokudjste tak ještě neučinili. Naleznete je v dokumentaci k tiskárnám, terminálům a také
pochopitelněna Internetu.
Řada množin obsahuje písmena z cizích jazyků. Mohou také obsahovat speciální znaky, které se
používají ke kreslení, a jiné.Klasickou znakovou množinou pro kódování angličtiny na terminálech je ASCII. Tento kód
jesedmibitový, bude však fungovat i na terminálech, které jsou nastaveny na osmibitové kódování.V osmibitovém režimu je
nejvyšší významový bit vždy nula. Jiné znakové množiny obvykle vyu-žívají ke kódování všech 8 bitů (s výjimkou velmi starých
terminálů, které pracují pouze v ASCII).První polovina většiny znakových množin obsahuje 128 ASCII znaků, druhá polovina
(nejvyššívýznamový bit je roven 1) pak může obsahovat širokou škálu nejrůznějších znaků. Znakové mno-žiny jsou definovány
standardem ISO. Speciální znaky lze stáhnout z Internetu a nastavit do pamě-ti terminálu. Terminály mají většinou mnoho
vestavěných znakových množin, avšak nikdy ne tu,kterou potřebujete.
Zde jsou některé běžně používané 8bitové znakové množiny. CP znamená Code Page (kódovástránka) firmy IBM: CP-437 (DOS
ECS), ISO-8859-1 (Latin-1), CP-850 (Multilingual Latin 1 – nikolita stejná jako ISO Latin-1), CP-1252 (WinLatin1 = MS-ANSI).
MS Windows používá CP-1252 (WinLa-tin1), zatímco na Internetu se často používá Latin-1. K Latin-1 se používá navíc několik
množinISO-8859-, konkrétně řečtina (-7), arabština (-6), východoevropské jazyky (-2) a náhrada za Latin--1 (-15), která se nazývá
Latin-9. Existuje i mnoho dalších. Například pro ruštinu se častěji použí-vá KOI8-R než IS0-8859-5. Velmi obsáhlou znakovou
množinou je Unicode, v níž je každý znakzakódován ve dvou bajtech.
Další informace o znakových množinách naleznete v následujících zdrojích:
Manuálové stránky: charsets, iso_8859-l nebo latin1 (zahrnuje řadu 8859), ascii.
Návody k různým jazykům (často psané právě v oněch jazycích).
ISO-8859 Alphabet Soup (http://czyborra.com/charsets/iso8859.html). Více než jen iso8859. Rozsáhlé.
A tutorial on character code issues (http://www.cs.tut.fi/~jkorpela/chars.html). Psáno sro-zumitelně.
Languages, Countries and Character Sets (http://www.w3.org/International/O-charset-lang.html).
Languages of the World by Computers ... (http://www.osk.3web.ne.jp/logos/).
Links re Internationalization (http://linux.monnet.ru/books/locale/locale_i.html). Dlouhý seznam odkazů (rusky, avšak
většina slov je anglického původu).
... International Character Sets (ftp://kermit.columbia.edu/kermit/e/isok7.txt).
Když znáte jméno znakové množiny (nebo její alfanumerické označení), další informace o ní snadno naleznete na Internetu.
Grafika (Kreslení čar apod.)
Pro kreslení čtverečků atd. existují speciální znaky. Dále existuje mnoho neASCII symbolů, např. puntíky. Mohou být buď
součástí 8bitových množin (např. WinLatin1 = CP-1252) nebo existují jako samostatný font (terminály vt100). Někdy jsou
obsaženy v terminfo, avšak vidíte-li v tabulce slou-pec, který by měl být řádkem, může to znamenat, že v terminfo nejsou
implementovány.
Nefunguje-li vám grafika, jak byste očekávali, měli byste vědět alespoň toto: vt-100 ANSI je implicitní grafická množina, jinak
musí být v terminfo definován řetězec acs, který definuje mapu mezi kódy grafických znaků vt-100 a kódy, které používá
terminál. Když tedy terminál nemá grafiku vt-100, může ji vytvářet pomocí jiné znakové množiny. Terminfo se správným
obsahem to činí automaticky.
Je-li nutno vyměnit znakové množiny, musí být definovány tyto proměnné terminfo: enacs, rmacs a smacs. Poznamenejme, že acs
= Alternate Character Set (alternativní znaková množina). I když horní polovina normální znakové množiny obsahuje grafické
znaky, může se mít za to, že je nutno vyměnit samostatnou 7bitovou množinu.
Národní znaky (historie)
V roce 1960 byl vynalezen sedmibitový kód ASCII, který mapoval sedmibitové bajty na anglická písmena, číslice, diakritická
znaménka atd. Ostatní země jej přijaly, avšak některé znaky v něm postrádaly. Co měly dělat? Někdo se rozhodl některé symboly
(např. ^, }) odstranit a nahradit je národními písmeny (které třeba mají nad sebou tečku apod.). Jinými slovy, ASCII znaky byly
nahrazeny „národními znaky“.
Byly s tím obrovské problémy, neboť náhrady prováděly většinou firmy, které pak prodávaly ter-minály bez jakýchkoli standardů.
Dalším problémem bylo, že odstraněné znaky chyběly. Tyto pro-blémy byly řešeny v 80. a 90. letech tak, že se v bajtu využilo
všech 8 bitů a znakové množiny mohly obsahovat mnohem víc znaků.
Mnohé západoevropské jazyky potřebovaly přidat jen několik znaků, které nebyly v ASCII.
V sedmibitovém kódu si vypůjčily málo používané symboly: @ [ \ ] ^ ` { \ } ~. Také někdy použily znaky $ a #, čímž naopak
vznikla omezení, neboť místo nich se používalynové národní znaky, které nebyly součástí ASCII. Pak, když 8bitové znaky
nahradily 7bitové,mohly znakové množiny obsahovat jak všechny znaky ASCII, tak i národní znaky různých jazyků.Byl také
vytvořen Unicode, který nahradil 8bitové kódy týmž kódovým schématem, aby pokrylvšechny jazyky (anebo téměř všechny).
Používání (7bitových) národních znaků bylo kodifikováno v ISO-646 (r. 1972 a další). Tato norma pouze sděluje, že shora
zmíněné znaky si lze vypůjčit, avšak už neříká, kterými národními mají být nahrazeny. Některé země standardizovaly náhrady tak,
že je zaregistrovaly v ECMA.
Národní znaky jsou podporovány celou řadou terminálů, avšak pokud tuto podporu nepotřebujete pro čtení starších souborů, asi ji
nebudete implementovat. Velmi staré terminály možná podporují pouze národní znaky těch zemí, pro něž byly určeny, zatímco
novější terminály už nabízejí výběr. Modemové terminály jsou osmibitové a nemusí mít národní znaky. Národní znaky existují
pro tyto jazyky/země: britská angličtina, kubánská španělština, holandština, finština, francouzština, kanadská francouzština,
němčina, hebrejština, maďarština, italština, norština/dánština, portugalština, španělština, švédština, švýcarská němčina.
Zde je tabulka některých znakových množin převzatá z dokumentů Kermit a Unisys:
švédština dánština
ASCII němčina finština norština francouzština
@ zavináč rozděl. --------------a-grave [ levá hranatá A-přehlas. A-přehlas. AE-dvojpísm. stupeň / lomítko O-přehlas. Opřehlas. O-přeškrt. c-ocásek ] pravá hranatá U-přehlas. A-circle A-kroužek rozděl. ^ stříška ------U-přehlas. --------------`
apostrof ------e-acute --------------{ levá složená a-přehlas. a-přehlas. ae-dvojpísm. e-acute | svislá čára o-přehlas. o-přehlas.
o-kroužek u-grave } pravá složená u-přehlas. a-kroužek a-kroužek e-grave ~ tilda ostré s u-přehlas. --------i-přehlas.
ASCII italština španělština
@ zavináč rozděl. rozděl. [ levá hranatá degree obr. vykřičník / lomítko #-pound N-tilda ]
pravá hranatá e-acute obr. otazník ^ stříška --------------` apostrof u-grave -------{ levá
složená a-grave stupeň | svislá čára o-grave n-tilda } pravá složená e-grave --------~ tilda igrave --------
Fonty
Většina terminálů vyrobených po roce 1985 si fonty umí načíst do paměti (tzv. soft-fonty). To zna-mená, že umí psát prakticky
libovolnými fonty, pokud existují jako soft-fonty. Jestliže vám žádné nevyhovují, můžete si vytvořit fonty vlastní. K tomuto účelu
existuje editor jménem BitFontEdi (napsal jej autor tohoto dokumentu) a v Evropě je (od roku 1998) k dispozici na http://
www.funet.fi/pub/culture/russian/comp/cyril-term/, v Severní Americe na: http:// ibiblio.unc.edu/pub/Linux/utils/terminal/.
Mapování různých fontů na klávesnici a obrazovku naleznete v části „Mapování znaků: mapchan“.
Klávesnice & speciální klávesy
Klávesnice terminálu mívají řadu kláves, které ani na klávesnici PC nenajdete. Některé terminály (je jich málo, pokud vůbec) mají
všechny klávesy zde uvedené, některé mají i takové, které v tomto přehledu nejsou. Některé mají řadu speciálních kláves,
například terminály používané jako registrační pokladny. Klávesy mívají i jiné významy než ty, které jsou zde uvedeny, zejména
ve spojení s jinými klávesami (například shift a control).
Klávesa BREAK posílá na počítač velmi dlouhou 0 (mezera = +12 V) v trvání od 300 do 700 milisekund. Má-li stty
nastaven brkint, počítač ji interpretuje jako přerušovací klávesu, jinak ji ignoruje.
Klávesa NO SCROLL zruší rolování obrazovky podobně jako ^S. Když klávesu povolíte, rolování pokračuje. Používá
k tomu signály pro řízení toku.
Když klávesu REPEAT přidržíte stisknutou současně s jinou klávesou, posílá výstup opa-kovaně, a to i tehdy, když není
nastavena volba „opakování“.
Klávesa LINE FEED pošle do počítače znak ^J. Používá se zřídka.
Pomocí klávesy SET-UP můžete vyvolat menu pro nastavení terminálu. Někdy je úmyslně zablokována podložkou tak,
aby nešla stisknout. Někdy je zase nutno současně stisknout jinou klávesu, viz kapitola „Konfigurační režim“.
Klávesa LOCAL odpojí terminál od počítače. V lokálním režimu jde znak po stisknutí klá-vesy přímo na obrazovku,
což je vhodné například na testování.
Klávesa RETURN odpovídá klávese Enter na PC. Obvykle odešle na počítač znak „návrat vozíku“ (carriage return) a
ovladač jej převede na znak „nový řádek“. Na některých termi-nálech může být nastaven tak, že posílá jiný znak.
F1, F2, ... nebo PF1, PF2, ... jsou funkční klávesy, které je možno naprogramovat tak, aby odeslaly posloupnost bajtů
(znaků), viz kapitola „Funkční klávesy“.
Myš
Některé textové terminály podporují myš. Když na ni klepnete, na počítač se odešle řídicí sekven-ce, která sdělí, kde je myš
umístěna. O myších na terminálech VT viz http://www.cs.utk.edu/ ~shuford/terminal/dec_vt_mouse.html. Tyto řídicí kódy pro
myši se nazývají „DEC posloupnosti umístěni“. Model ANSI-G z terminálové řady FALCO Infinity ji podporuje. Existuje i
linuxová apli-kace, která by ji podporovala??
Emulace terminálů (včetně konzole)
Úvod do emulace terminálů
Vzhledem k tomu, že PC má obrazovku a klávesnici (podobně jako terminál), ale také má velkou výpočetní kapacitu, je
jednoduché využít její část k tomu, aby se osobní počítač choval jako tex-tový terminál. To je jeden typ emulace terminálů. Jiný
typ emulace terminálu je, když skutečný terminál emuluje jiný model terminálu. Z nabídky pro nastavení si vyberete určitou
emulaci (v žar-gonu Wyse „charakteristiku“). Tato kapitola popisuje první typ emulace: emulaci terminálu na PC.
Při emulaci použijete jeden sériový port počítače pro připojení emulovaného terminálu k druhé-mu počítači. Buď propojíte oba
sériové porty kabelem nebo přes modem. Emulace může poskyt-nout více funkcí než terminál, neboť PC, který provádí emulaci,
může současně pracovat i na jiných úlohách. Mohou na něm běžet kermit nebo zmodem a po sériové lince přenášet na počí-tač, k
němuž jste připojeni, soubory (anebo i po telefonní lince modemem). Musí být pouze zajiš-těno, aby emulace běžela na jedné z
virtuálních konzoly PC a ostatní virtuální konzoly tvořily roz-hraní pro zadávání příkazových řádků.
Pod operačním systémem MS Windows je k dispozici dostatek emulačního softwaru, viz „Jak vytvořit z nelinuxového PC
terminál “. Tímto způsobem můžete propojit počítač s operačním systémem MS Windows s počítačem vybaveným Linuxem (jako
textovým terminálem). Většina volně dostupného softwaru v Linuxu umí emulovat pouze VT100, VT102, resp. VT100/ANSI.
Víte-li o jiných, dejte mi, prosím, vědět. Vzhledem k tomu, že osobní počítače mají barevné monitory, zatímco terminály VT100
a VT102 jsou monochromatické, emulace jim umožňuje navíc práci s bar-vami (včetně výběru barev). Někdy emulace není úplně
stoprocentní, avšak nejsou s tím zásadní problémy. Emulace terminálů na počítačích Mac viz Mininávod k Mac terminálům.
K emulaci nepoužívejte proměnnou TERM
Občas někoho napadne scestná myšlenka, že by mohl vytvořit emulátor na linuxové konzole (monitoru) tak, že do vnější
proměnné TERM nastaví typ terminálu, který chce emulovat. To nefun-guje. Hodnota TERM pouze říká aplikaci, který právě
používá terminál, a tudíž se aplikace nemu-sí ptát interaktivně. Pracujete-li s monitorem PC (jako s rozhraním pro příkazové
řádky), typ ter-minálu je „Linux“ a nemůžete to změnit. TERM tedy musí být nastaven na „Linux“.
Nastavíte-li tuto proměnnou jinak, uvádíte aplikační program v omyl, což povede k chybné inter-pretaci některých řídicích
sekvencí z konzoly a poté i ke zhroucení rozhraní. Vzhledem k tomu, že se linuxová konzola chová téměř jako terminál vt100,
může při nastavení TERM na vt100 (nebo podobný) konzola fungovat po většinu doby téměř bezchybně a k chybě může dojít
třeba při edi-tování apod.
Komunikační (vytáčecí) programy
Vytáčecí programy, které na Internetu uskutečňují dvoubodové spojení, obvykle neobsahují emu-laci terminálů. K těm nečetným,
které ji obsahují, patří například minicom nebo seyon. Jejich pro-střednictvím můžete například vytočit veřejnou knihovnu a
nahlížet do seznamů a rejstříků (anebo dokonce číst články v časopisech). Lze jimi také testovat modemy. Program seyon lze
použít pouze v systému X Window a umí emulovat terminály Tektronix 4014.
Komunikační program Kermit neprovádí emulaci terminálů, je pouze polotransparentní rourou mezi libovolným terminálem, na
němž pracujete, a vzdáleným sezením, k němuž jste připojeni. Používáte-li tedy kermit na linuxovém počítači, typ terminálu bude
„Linux“. Máte-li k PC připojen Wyse60 a provozujete-li na něm kermit, vzdálenému počítači se budete jevit jako Wyse60 (s nímž
třeba neumí komunikovat). Minicom emuluje VT102, a používáte-li terminál Wyse60, řídicí sekven-ce terminálu VT102
přicházející ze sériového portu vzdáleného počítače budou před odesláním na druhý sériový port terminálu Wyse60 převedeny na
řídicí sekvence VT102, což kermit neumí.
Emulátory telix a procomm pod systémem DOS pracují stejně. Emulovanými terminály jsou obvyk-le staré VT100, VT102 nebo
ANSI (podobný VT100).
Emulace pod X Window
Xterm (resp. uxterm, který na rozdíl od xterm podporuje unicode) může běžet pod X Window. Umějí emulovat VT102, VT220 a
Tektronix 4014. Existují také různé emulace xterm (i když žádný terminál jménem „xterm“ neexistuje). Chcete-li pixmaps, avšak
nepotřebujete emulaci Tektronix 4014 (terminál s vektorovou grafikou; viz „Grafické terminály“), můžete zvolit eterm .
Předchůdci programu eterm jsou rxvt a xvt. Jedním z možných způsobů, jak lze změnit velikost fontu v xter-mu, je pravé klepnutí
myší se současně stisknutou klávesou Ctrl.
V případě jiných abeced než latinka umí kterm emulovat terminál Kanji (nebo i jiné nelatinské abecedy); xcin je určen pro čínštinu.
Existuje také emulace 9term. Zdá se, že v tomto případě jde
o více než jen emulátor a že má vestavěný editor a posuvné lišty. Byl navržen pro Plan 9, což je unixový operační systém od
AT&T.
Lepší jsou skutečné terminály
Pokud nepoužíváte X Window s velkým displejem, skutečný terminál je lepší než emulovaný. Má obvykle lepší rozlišení textu a
neobtěžuje hlukem diskové mechaniky.
Test emulace terminálu
K terminálové řadě VT existuje testovací program vttest, který pomáhá určit, zda se terminál chová korektně jako vt53, vt100,
vt102, vt220, vt320, vt420 atd. Není k němu dokumentace, má však nabídku a snadno se ovládá. Přeložíte jej pomocí
konfiguračního skriptu a zadáte make. Lze jej stáhnout z http://ibiblio.unc.edu/pub/Linux/utils/console/.
Konzola Linuxu
Konzola systému Linux je obvykle monitor počítače v textovém režimu. Emuluje terminál typu „Linux“ a řídicí sekvence, kterou
používá, je uvedena v manuálových stránkách: console_codes. Neexistuje způsob (pokud nechcete trávit týdny přepisováním
jádra), jak ji přinutit k emulaci něče-ho jiného. Když nastavíme vnější proměnnou TERM na jakýkoli jiný typ terminálu než
„Linux“, neznamená to, že se provede jeho emulace. Pouze může dojít k poškození rozhraní, neboť jste nesprávně deklarovali
(proměnnou TERM), že váš „terminál“ se od uvedeného typu liší. Viz kapi-tola „Pro emulaci nepoužívejte vnější proměnnou“.
V některých případech je konzola linuxového počítače textový terminál. Linux je možno přeložit tak, že většina hlášení, která
obvykle jdou na konzolu, půjde na terminál. Viz „Jak udělat konzolu ze sériového terminálu“.
Linuxová emulace monitoru je flexibilní a oproti terminálu vt102, který měl být emulován, má řadu dalších funkcí. Umí například
používat zákaznické fonty a snadno je možno přemapovat kláves-nici. Tyto funkce zajišťuje ovladač konzole (společně s
ovladačem klávesnice), který pouze pra-cuje pro monitor, nikoli pro skutečný terminál, i kdyby se používal jako konzola.
„Ovladač kon-zoly“ tedy je ve skutečnosti „ovladačem monitoru“. Když byl Linux ještě v plenkách, nebylo možno používat
skutečný terminál jako konzolu, takže tehdy nebyl mezi „monitorem“ a „konzolou“ žádný rozdíl.
Příkazy stty pracují na monitoru-konzole stejně, jako by to byl skutečný terminál. Ovládá je stej-ný ovladač terminálů, který se
používá i pro skutečné terminály. Bajty směřující na obrazovku pro-cházejí nejdříve ovladačem terminálu (tty) a pak ovladačem
konzoly. Některé příkazy stty nedě-lají na monitoru nic (např. nastavování přenosové rychlosti). Přenosovou rychlost monitoru
může-te nastavit libovolně (např. na pomalých 300), avšak skutečná rychlost psaní textu na obrazovku monitoru se nezmění. V
souboru /etc/ioctl.save je uloženo nastavení stty pouze tehdy, když je konzola v jednouživatelském režimu (obvykle však je ve
víceuživatelském režimu). Trochu je to vysvětleno v manuálové stránce init.
Mnohé příkazy jsou určeny k využívání rozšířených funkcí, které nabízí ovladač konzoly-monito-ru. Skutečné terminály, které
nepoužívají ani sken kódy, ani VGA karty, bohužel tyto funkce nevy-užijí. Další informace o konzole najdete v Keyboard-andConsole-HOWTO. Také je možno nahlédnout do různých manuálových stránek o konzole (zadejte příkaz man -k console). Většina této dokumentace je ovšem bohužel zastaralá.
Emulační software
Emulátory občas nefungují tak, jak by měly, takže byste si nejdříve měli důkladně prověřit, co kupujete.
Vytvořte si linuxový terminál
Pokud nechcete emulovat standardní vt100 (nebo podobný terminál) nebo Wyse 60, v Linuxu není k dispozici příliš mnoho volně
dostupného emulačního softwaru. Programy minicom a seyon (pouze pro X Window) emulují vt100 (a podobné). Seyon také umí
emulovat terminál Tektronix 4014, viz Wyse 60 emulator (http://gutschke.com/wy60/).
Pro emulaci přímo napojeného terminálu lze použít minicom, a to tak, že jej pouze spustíte (před-tím je ho ovšem nutno
zkonfigurovat na sériový port). Pochopitelně, když chcete skončit (a odhlá-sili jste se z druhého PC), spojení neukončíte jako
vytáčené, nýbrž zadáte příkaz q (quit) bez rese-tování, protože není co resetovat (není přítomen modem). Jakmile je mincom
spuštěn, automa-ticky vyšle na sériový port inicializační řetězec modemu. Avšak vzhledem k tomu, že připojení není uskutečněno
modemem, řetězec se vypíše za promptem „login:“. Obsahuje-li tento řetězec převážně velká písmena, program getty (který
spouští login) na protějším PC by se mohl domní-vat, že váš terminál umí psát jen velkými písmeny, a mohl by se pokusit
komunikovat pouze pro-střednictvím velkých písmen. Tomu zabráníte, když zkonfigurujete minicom tak, aby posílal prázdný
inicializační řetězec modemu.
Emulátor terminálů „Procom“ (z DOSu) lze používat na linuxovém počítači, když spustíte dosemu
na emulování DOSu. Podrobnosti viz http://solarflow.dyndns.org/pcplus/. Existuje speciální linuxová distribuce: Serial Terminal
Linux, která změní PC na terminál typu mini-com. Je malý (vejde se na pružný disk) a neumožní jiné použití PC (když běží). Viz
http://www.eskimo.com/~johnnyb/computers/stl/. Umožňuje současný běh několika sezení (podob-ně jako v případě virtuálních
terminálů), jedno pro každý sériový port.
TERM (jedná se o komerční program od firmy Century Software, který naleznete na adrese http://www.ecc400.com/censoft/
termunix.html) umí emulovat Wyse60, 50; VT 220, 102, 100, 52: TV950, 925, 912; PCTERM; ANSI; IBM3101; ADM-1l;
WANG 2110. Pro IBM a Wyse existuje blo-kový režim. Běží na linuxovém PC.
Vytvořte si nelinuxový terminál
Existují i emulátory, které běží na nelinuxových PC. Umožňují použití nelinuxových PC jako ter-minálů připojených k linuxovým
PC. V systému DOS jsou to programy telix a procomm. Windows nabízí emulátor „HyperTerminal“ (původně ve Windows 3.x a
v DOSu nazývaný jen „Terminal“).
Konkuruje mu „HyperTerminal Private Edition“ (http://www.hilgraeve.com/htpe/index.html), který není zdarma pro komerční
organizace. Umí emulovat vt220. Terminály v systémech Windows jsou určeny pro napojení přes modem, měly by však fungovat
i při přímém napojení terminálů?? Pro-gram firmy Turbosoft TTWin umí emulovat přes 80 různých terminálů pod Windows, viz
http://www.ttwin.com/ nebo http://www.turbosoft.com.au/ (Austrálie). Viz také Reflection, http://www.wrq.com/.
Na počítačích Mac se emulace provádí programy firmy Carnation Software, http://www.carnation-software.com/carnation/
HT.Carn.Home.html.
Jedním z míst, kde lze ověřit produkty pro emulaci terminálů, jsou stránky firmy Shuford, avšak zdá se, že seznam produktů je
poněkud zastaralý (i když mohou stále fungovat). Skutečnost, že většina z nich běží pouze pod systémem DOS (a nikoli
Windows) nasvědčuje tomu, že uvedené informace nejsou nejčerstvější. Viz http://www.cs.utk.edu/~shuford/terminal/
term_emulator_ products.txt.
Řízení toku dat
Řízení toku dat (= handshaking = pacing) slouží k tomu, aby příliš rychlý toku bajtů nezahltil ter-minál, počítač, modem nebo jiné
zařízení. K zahlcení dochází tehdy, když zařízení není schopno dostatečně rychle zpracovat data, která dostává, a proto dochází ke
ztrátě bajtů a k dalším závažným chybám. Řízení toku pozastaví přísun dat, dokud (například) terminál není znovu připraven k
pří-jmu dalších bajtů. Řízení toku dat posílá signál k pozastavení toku v opačném směru, než přicháze-jí bajty, jež se mají zastavit.
Řízení toku musí být nastaveno jak na terminálu, tak i na počítači.
Existují dva typy řízení toku dat: hardwarové a softwarové (Xon/Xoff nebo DC1/DC3). Hardwa-rové řízení používá jednoúčelové
signální vodiče, např. RTS/CTS nebo DTR/DSR, zatímco soft-warové řízení používá k řízení řídicí bajty DC1 a DC3 v běžných
datových vodičích. Při hardwa-rové kontrole musí být vodiče správně zapojeny.
Tok datových bajtů v kabelu mezi dvěma sériovými porty je dvousměrný, takže musíme uvažovat
o dvou různých tocích (a vodičích):
Tok bajtů z počítače na terminál.
Tok bajtů z klávesnice terminálu do počítače.
K čemu je řízení toku dat dobré?
Mohli byste se zeptat: „Proč se data neposílají tak pomalu, aby nezahltila zařízení? Pak by bylo řízení toku dat zbytečné.“ To by
sice bylo možné, avšak výsledek by byl výrazně pomalejší než při řízení toku. Jednou z příčin je skutečnost, že přenosovou
rychlost sériového portu nelze nasta-vit na libovolnou rychlost jako třeba 14 500, neboť je možno vybrat jen z omezeného počtu
rych-lostí. Nejlepší je nastavit rychlost o trochu větší, než jakou je schopno zvládnout zařízení, a pomo-cí řízení toku ji
optimalizovat.
Pokud se rozhodnete řízení toku dat nevyužívat, je nutno nastavit přenosovou rychlost tak nízkou, aby zařízení v každém případě
zvládlo i nejhorší možné situace. V případě terminálu je to odesílání řídicích sekvencí ve složitých úlohách, které zaberou více
času než obvykle. Pokud jde
o modem (s komprimovanými daty, nikoli však s řízením toku dat), rychlost odesílání dat z počí-tače na modem musí být tak
nízká, aby ji zvládala i telefonní linka, neboť nejhorším případem je přenos nekomprimovaných dat. Pokud nepoužíváte řízení
toku dat, rychlost (se zapnutou kom-primací dat) nebude větší než bez komprimace.
V nejhorších situacích mohou částečně pomoci bufery, ovšem pouze v krátkodobých situacích. Data, která nemohou být
zpracována ihned, se přechodně ukládají v buferu a jsou zpracována později.
Vycpávky
Jinou možností, jak je možno zvládat „nejhorší případ“ (bez použití řízení toku dat nebo buferů), je doplňování řídicích sekvencí
nulami (bajty s nulovou hodnotou). Někdy se místo nul používají znaky DEL, pokud nemají žádnou jinou funkci, viz kapitola
„Znak Del“.
Na základě řídicí sekvence začne terminál provádět nějakou činnost, a než ji dokončí, po lince přichází posloupnost nul, kterou
ignoruje. Říká se tomu vycpávka nulovými bajty. Než terminál dostane poslední nulový bajt, je s úlohou hotov a může začít se
zpracováním dalšího příkazu. Tyto bajty se dříve nazývaly „výplňkové znaky“ a přidávají se jen proto, aby pozdržely přenos po
dobu, kdy je terminál zaneprázdněn. Tento způsob byl před tím, než přišlo do obliby řízení toku dat, poměrně rozšířený. Jeho
efektivita závisela na správném počtu přidaných nul, přičemž zjišťování optimální hodnoty bylo dosti otravné. Většinou se
provádělo metodou pokusů a omylů, protože návody k terminálům byly v tomto ohledu nepoužitelné. Pokud řízení toku dat
nepřináší očeká-vané výsledky anebo není k dispozici, vycpávky mohou být jedním z řešení. Vycpávkám je urče-na jedna volba v
příkazu stty.
Zahlcení sériového portu
Mohlo by se zdát divné, jak může docházet k zahlcení sériového portu, když odesílání i přijímá-ní prostřednictvím sériového
portu je nastaveno na stejnou přenosovou rychlost (v bitech za sekundu), například 19 200. Důvodem je skutečnost, že i když
elektronika zajišťující příjem na séri-ovém portu zvládne zpracování příchozího toku dat, může s ním mít problémy hardware i
soft-ware terminálu.
Jednou z příčin tohoto stavu je malý hardwarový bufer sériového portu. Starší sériové porty měly bufer o velikosti pouze jednoho
bajtu (v mikroprocesoru UART). Pokud si tento bajt z buferu nevyzvedne instrukce základní jednotky ještě předtím, než přijde
další bajt, původní bajt je ztra-cen (došlo k zahlcení). Nové mikroprocesory UART, zejména většina řady 16550, mají bufery šestnáctibajtové (avšak mohou emulovat jednobajtové) a k zahlcení dochází méně. Může být nasta-ven i tak, že dosáhne-li obsah
buferu 1, 4, 8 nebo 14 bajtů, vydá přerušení a jiný mikroprocesor (většinou základní jednotka) vyzvedne obsah příchozího buferu
a zpracuje ho (podobně jako jiné úlohy).
Když obsah tohoto malého hardwarového přijímacího buferu dosáhne určité hranice (u starých UART jeden bajt), vydá přerušení.
Počítač přeruší práci a softwarově zjistí, co se stalo. Poté bajt (nebo několik bajtů) z tohoto buferu sériového portu vyzvedne.
Přenese je do většího buferu (který také patří k sériovému portu) v hlavní paměti jádra. Po vyprázdnění (nebo částečném
vyprázdnění) vysílacího buferu vydá sériový port další přerušovací signál, aby sdělil základní jed-notce, že je bufer volný a lze jej
případně naplnit odesílanými daty.
Terminály také mají sériové porty a bufery, podobně jako počítač. Vzhledem k tomu, že tok dat je obvykle směrem do terminálu
mnohem větší než v opačném směru (z klávesnice do počítače), k zahlcení dochází častěji v terminálu. Počítač používaný jako
(emulovaný ) terminál bude pocho-pitelně k zahlcení náchylnější.
Rizikové situace, kdy je zahlcení pravděpodobnější, nastávají, když: 1. Jiný proces zablokuje přerušení. 2. Téměř přetéká bufer
sériového portu v hlavní paměti nebo v paměti terminálu.
Neposílat!
Když se zdá, že dochází k zahlcení přijímače příchozími daty, přijímač vyšle signál odesílateli, aby ukončil odesílání. Jde o signál
řízení přenosu dat, který je posílán opačným směrem než data, jež jsou jím řízena (avšak jiným kanálem, resp. po jiném vodiči).
Tímto signálem může být buď řídi-cí znak (^S = DC3 = Xoff) poslaný jako obyčejný datový bajt po datovém vodiči (signalizace
v rámci pásma) nebo přechod od kladného elektrického potenciálu k zápornému na signálním vodiči dtr-to-cts (případně jiném),
což je signalizace mimo přenosové pásmo. Použití Xoff se nazý-vá „softwarové řízení toku“, zatímco elektronická signalizace po
určeném vodiči (v kabelu) se nazývá hardwarové řízení toku.
Uzamknutí klávesnice
Nejobvyklejším případem ukončení posílání dat je, když terminál není schopen udržet krok se znaky, které dostává, a vydá
počítači signál „stop“. Jiným případem je stisknutí kláves control--S. Méně obvyklý je opačný případ, kdy počítač nestačí
rychlosti psaní a vydá terminálu signál k ukončení přenosu. Terminál v takovém případě „uzamkne“ klávesnici a obsluhu o tom
infor-muje vypsaná zpráva nebo rozsvícená kontrolka. Další psaní na klávesnici je ignorováno. Jakmile se počítač vzpamatuje,
klávesnici odemkne. Když se tak nestane, někde asi nastal deadlock (pro-cesy uvízly na mrtvém bodě).
K jinému typu uzamknutí klávesnice dojde, když je na terminál poslána určitá řídicí sekvence (v případě Wyse 60 pouze řídicí
znak ^O). Zatímco v předchozím typu provede uzamknutí klá-vesnice sériový ovladač, v tomto případě klávesnici uzamkne
hardware terminálu. Je to situace jako vystřižená z románu Hlava 22, neboť nastane-li, není možné zadat příkaz, kterým byste ji
změ-nili. Možná ji lze odstranit restartem počítače (avšak svůj terminál Wyse 60 jsem dokonce musel odpojit od sítě). Bylo by
také možné poslat „odemkni klávesnici“ z jiného terminálu.
Označení klávesnice jako „uzamknuté“ se někdy používá i v případě uvedeném shora, kdy počí-tač pouze přeruší posílání znaků
na terminál. Klávesnice ve skutečnosti není uzamknuta a znaky z klávesnice jdou do počítače. Avšak vzhledem k tomu, že počítač
nemůže odpovídat, znaky psané na klávesnici se neobjevují na obrazovce a klávesnice vypadá jako zamknutá. Je zamknuté i
rolování, nikoli však klávesnice samotná.
Shrnutí
Když přijímač dožene zpoždění a může pokračovat v přijímání dat, signalizuje tuto skutečnost odesílateli. V případě
softwarového řízení je signálem řídicí znak ^Q = DC1 = Xon, který je posí-lán po normální datové lince. Při hardwarovém řízení
toku dat se změní potenciál na signální lince ze záporného na kladný. Pokud je terminál požádán o obnovu přenosu, klávesnice je
odemknu-ta a připravena k dalšímu použití.
Hardwarové řízení toku dat (RTS/CTS atd.)
Některé starší terminály hardwarové řízení toku nemají, zatímco jiné pro ně využívají širokou nabídku různých pinů na konektoru
sériového portu. Seznam pinů a jejich označení viz kapitola „Kabel pro standardní nullmodem“. Nejoblíbenějším pinem pro tyto
účely je pravděpodobně pin DTR (nebo dvojice DTR a DSR).
Řízení toku dat pomocí RTS/CTS, DTR a DTR/DSR
Linuxový počítač používá řízení toku dat prostřednictvím RTS/CTS, avšak řízení pomocí DTR/DSR (které používají některé
terminály) je velmi podobné. Řízení toku pomocí DTR (pouze v jednom směru a také jen u některých terminálů) je pouze součástí
řízení DTR/DSR.
Řízení RTS/CTS používá piny RTS a CTS na sériovém konektoru EIA 232. RTS znamená „Request To Send“. Je-li na tomto pinu
na straně příjemce kladné napětí, znamená: posílej mně data. Změna napětí na záporné (negace RTS) znamená: neposílej (zastav
posílání). Jakmile je přijímač připra-ven na další vstup, změní napětí na RTS na kladnou hodnotu, což znamená žádost o obnovení
posílání dat. Jak na počítači, tak i na terminále (typ obou je DTE) se signál z pinu RTS odešle na pin CTS (Clear To Send) na
druhém konci kabelu. To znamená, že pin RTS na jednom konci kabe-lu je propojen s pinem CTS na druhém konci kabelu.
V případě modemu (zařízení DCE) je schéma odlišné, neboť signál přijímá pin RTS a odesílá jej pin CTS. I když to může působit
zmateně, existují k tomu vážné historické důvody, které by bylo složité zde probírat.
Terminály obvykle mají řízení toku dat DTR nebo DTR/DSR. DTR je totéž co DTR/DSR s tím roz-dílem, že je pouze
jednosměrné a pin DSR se nepoužívá. U DTR/DSR na terminálu je signál DTR jako signál poslaný z pinu RTS a pin DSR je jako
pin CTS u nullmodemu (překřížení).
Zapojení konektoru
Některé terminály používají jenom řízení toku dat DTR. Je to pouze jednosměrné řízení, které chrání terminál před zahlcením.
Nechrání počítač před rychlým psaním. Na standardním sériovém kabelu pro přenos souborů je pin DTR na straně terminálu
připojen k pinu DSR na straně počíta-če. Linux však řízení DTR/DSR nepodporuje (možná je podporují některé ovladače
multiportových desek). Tento problém můžete obejít tak, že jenom propojíte pin DTR na terminále s pinem CTS na počítači a
nastavíte řízení toku RTS/CTS (stty crtscts). Skutečnost, že tento způsob je jediný, nebude mít vliv vůbec na nic, ledaže by
počítač nestíhal zpracovat vaše rychlopsaní a provedl marný pokus o uzamknutí klávesnice, viz kapitola „Uzamykání klávesnice“.
Obousměrné řízení DTR/DSR (pokud je podporuje terminál) viz text výše. Také ovšem propojte pin DSR na terminá-le s pinem
RTS na počítači, abyste byli chráněni pro případ, že píšete moc rychle.
Jak se liší původní řízení toku RTS/CTS
Matoucí je skutečnost, že původní význam RTS je opakem toho, co jsme si vysvětlili výše. Původ-ní význam RTS je: I Request To
Send to you (žádám, abych vám mohl posílat). Tento požadavek by měl být poslán z terminálu (nebo z počítače) na modem, který,
pokud by se rozhodl tento požadavek přijmout, by poslal ze svého pinu CTS na pin CTS počítače potvrzení: You are Cleared To
Send to me (můžete posílat). Poznamenejme, že narozdíl od současného obousměrného řízení toku RTS/CTS bylo původní řízení
pouze jednosměrné: z počítače (nebo z terminálu) na modem.
U starších terminálů může mít RTS tento význam, a má-li terminál data na odeslání, jde do klad-ných hodnot. Použití výše je jistá
forma způsobu řízení toku dat, neboť pokud modem chce, aby počítač přerušil posílání dat, shodí CTS (připojenou k CTS na
počítači) a počítač přestane posílat data.
Opačný kanál
Staré terminály, které psaly na papír, mívaly piny pro opačný kanál (možná měl číslo 19), který fungoval jako pin RTS při řízení
toku RTS/CTS. Když došel papír nebo barvicí páska, na pinu se objevilo opačné napětí. Většinou stačilo připojit tento pin k pinu
CTS centrálního počítače, kde býval přepínač polarity signálu.
Je hardwarové řízení toku dat prováděno hardwarem?
Je nutno říci, že hardwarové řízení toku dat je prováděno hardwarem pouze částečně, většinu provádí operační systém.
Mikroprocesory UART a ostatní hardware ve skutečnosti o řízení toku dat nic nevědí. Přerušovací signál je pouze předán základní
jednotce, aniž by byl hardwaru znám jeho význam. Základní jednotka přeruší zpracování a pomocí tabulky přerušení v operační
paměti vyhledá program, který přerušení zpracuje a rozhodne o dalším postupu. V tomto případě přeruší výstupní tok dat.
Tok dat je ovšem zastaven už při zpracování přerušení základní jednotkou, čímž vlastně je toto zastavení provedeno rychleji,
neboť není nutno čekat, až tak učiní program. Pokud by ovšem pro-gram nevydal příkaz k zastavení toku dat, po ukončení
programu by se tok dat obnovil. Je proto nutné, aby byl tok dat zastaven i programem, i když byl zastaven už předtím. Po
přerušení jsou vyslány všechny bajty (může jich být až 16), které byly ve vysílacím buferu sériového portu. Takže ani při
hardwarovém řízení není tok dat zastaven okamžitě.
Softwarové řízení toku dat vyžaduje kontrolu každého příchozího bajtu, aby zjistilo, zda nejde
o „zastavovací“ bajt. Dochází ke zpoždění, neboť tento bajt musí projít 16bajtovým vstupním bufe-rem. I když je řídicí bajt první,
terminál čeká na naplnění buferu dalšími 15 bajty a teprve pak se začne zpracovávat obsah. Při hardwarovém řízení toku dat k
takovému zpoždění nedochází.
Řízení toku ETX/ACK, resp. ENQ/ACK. Je zastaralé?
Toto je také softwarové řízení toku dat a vyžaduje speciální ovladač. Bajty jsou posílány v pake-tech (přes asynchronní sériový
port), přičemž pakety jsou ukončeny řídicím znakem ETX (End of Text). Jakmile terminál dostane znak ETX, počká, až je
schopen přijmout další paket, a pak pošle znak ACK (Acknowledge). Když tento znak dostane počítač, pošle další paket. A tak
dále. Nevím, zda je toto řízení podporováno v Linuxu?? Stejné schéma používají některé terminály HP, avšak místo znaku ETX
posílají ENQ.
Fyzické spojení
Terminál může být k počítači připojen kabelem, prostřednictvím modemu anebo přes terminálový server. Tokem dat může být
buď přímá posloupnost bajtů (jako ze sériového portu) nebo pakety přenášené po síti (např. TCP/IP).
Multiportové V/V karty (adaptéry)
Můžete si pořídit sériové karty s několika sériovými porty, kterým se říká „multiportové desky“. V tomto návodu se o nich
nezmiňujeme, avšak některé z nich jsou uvedeny v Návodu k sériovým portům (včetně odkazů).
Přímé připojení sériovým kabelem
Nejsnáze připojíte terminál k počítači přímým napojením na sériový port počítače. V této kapito-le jsou uvedeny i některé
informace o vzájemném propojení počítačů (přes sériový port). Většina stolních počítačů má jeden nebo dva sériové porty, z nichž
jeden může sloužit pro připojení myši. Pro port EIA-232 potřebujete nullmodemový kabel (kabel počítač-počítač), kterým
propojíte vysí-lací a přijímací vodiče. V terminologii ethernetových sítí se tento kabel nazývá „propojovací kabel“ (propojení
sériových portů ethernetovým kabelem by však nefungovalo ). Chcete-li používat hard-warové řízení toku dat, pravděpodobně pro
něj použijete pin DTR (anebo DTR i DSR).
Měli byste se přesvědčit, že máte správný kabel. Vyhovět by měl obyčejný nullmodemový kabel zakoupený v běžné prodejně
počítačů, pokud je dostatečně dlouhý. Může být také označen jako „kabel pro sériové tiskárny“. Na skladě jej však mívají jen
větší prodejny. Nesmí to být kabel k modemu s přímým propojením vodičů (které nejsou propojeny křížem). Viz kapitola
„Zakoupit, nebo si udělat?“. Přesvědčte se, že se připojujete k sériovému portu DB25 nebo DB9 („samec“), nikoli k paralelnímu
portu („samice“ DB25).
Číslování pinů
Čísla pinů jsou obvykle vylisována v plastu přímo u pinů. Možná si je budete muset prohlédnout v silnějším světle nebo pod
lupou. Když se díváte na pin samčího konektoru DB obráceného širší řadou pinů nahoru, pin vlevo nahoře má číslo 1 (pin č. 0
neexistuje). Sousední pin má č. 2 atd. Na konci této řady je pin 5 nebo 13. Další pin (6 nebo 14) je v další řadě zcela vlevo pod
pinem
1. Když se díváte na samičí konektor s delší řadou směrem nahoru, pin č. 1 je v horním pravém rohu.
Rozložení pinů na kabelu nullmodemu (3, 4 nebo 5 vodičů)
Tato tři schémata se vztahují ke skutečnému textovému terminálu. Pokud však zaměníte RTS za DTR a CTS za DSR, můžete je
použít k propojení 2 počítačů. (K propojení PC nepoužívejte čtyř-vodičový kabel.) Pokud používáte na terminále řízení toku
pouze DTR (jednosměrné), můžete vyřadit vodiče od RTS až po DSR. Nepoužíváte-li hardwarové řízení toku dat, můžete také
vyřadit vodiče od CTS po DTR. A máte-li 2 kroucené dvoulinky, můžete 2 vodiče použít improvizovaně k uzemnění signalizace
kroucené dvoulinky. Máte-li na počítači konektor DB25, musíte propojit:
PC, samec DB25 Terminál, DB25TxD Transmit Data 2 --> 3 RxD Receive DataRxD Receive Data 3 <-- 2 TxD Transmit DataSG Signal
Ground 7 --- 7 SG Signal GroundCTS Clear To Send 5 <--20 DTR Data Terminal ReadyRTS Request To Send 4 --> 6 DSR Data Set Ready
Máte-li na počítači konektor DB9, zkuste propojit:
PC, DB9 Terminál DB25RxD Receive Data 2 <-- 2 TxD Transmit DataTxD Transmit Data 3 --> 3 RxD Receive DataSG Signal Ground 5
--- 7 SG Signal GroundCTS Clear To Send 8 <--20 DTR Data Terminal ReadyRTS Request To Send 7 --> 6 DSR Data Set Ready **
Máte-li na sériovém portu i na terminále konektor DB9:
PC, DB9 Terminál DB9RxD Receive Data 2 <-- 3 TxD Transmit DataTxD Transmit Data 3 --> 2 RxD Receive DataSG Signal Ground 5 --5 SG Signal GroundCTS Clear To Send 8 <-- 4 DTR Data Terminal ReadyRTS Request To Send 7 --> 6 DSR Data Set Ready **
Uspořádání shora nemá řídicí modemové vodiče, aby bylo možno pro getty zajistit volbu „local“ (což je ekvivalentní s stty
clocal). Také když provozujete hardwarové řízení toku, musí být akti-vováno na počítači (volba -h v příkazu agetty, ekvivalent
stty crtscts).
Standardní rozložení pinů na kabelu nullmodemu (7 vodičů)
Následující 3 schémata znázorňují plný „standard“ nullmodemových kabelů. Tak může být pro-pojen zakoupený kabel. Jiné
rozložení je, když propojíte piny 20 a 6 a dále pin 8 s piny 4 a 5 sou-časně. Kabely s těmito rozloženími nelze použít k
hardwarovému řízení toku dat (RTS/CTS) mezi přímo propojenými počítači. Obě rozložení jsou však určena jak pro softwarové
řízení toku dat (Xon/Xoff) mezi terminálem a počítačem, tak i pro neřízený tok. Žádný z uvedených kabelů nelze použít k
hardwarovému řízení toku dat, neboť zatímco většina terminálů podporuje řízení DTR, resp. DTR/DSR, Linux je dosud (r. 2000)
nepodporuje.
PC samec DB25 Terminál DB25 DSR Data Set Ready 6 <--| DCD Carrier Detect 8 <--|- 20 DTR Data Terminal Ready TxD Transmit Data 2 ---->
3 RxD Receive Data RxD Receive Data 3 <---- 2 TxD Transmit Data RTS Request To Send 4 ----> 5 CTS Clear To Send CTS Clear To Send 5
<---- 4 RTS Request To Send SG Signal Ground 7 ----- 7 SG Signal Ground DTR Data Terminal Ready 20 -|--> 8 DCD Carrier Detect
|--> 6 DSR Data Set Ready
Alternativně, kabel pro plný přenos souborů DB9-DB25 (nullmodem, nebude fungovat s terminály, viz shora):
PC DB9 Terminál DB25 RxD Receive Data 2 <---- 2 TxD Transmit Data TxD Transmit Data 3 ----> 3 RxD Receive Data
|--> 6 DSR Data Set Ready DTR Data Terminal Ready 4 -|--> 8 DCD Carrier Detect SG Signal
Ground 5 ----- 7 SG Signal Ground DCD Carrier Detect 1 <--| DSR Data Set Ready 6 <--|- 20 DTR Data Terminal Ready RTS Request To Send 7
----> 5 CTS Clear To Send CTS Clear To Send 8 <---- 4 RTS Request To Send RI Ring Indicator 9 (není nutný)
(Ano, piny 2 a 3 mají na konektorech DB9 a DB25 skutečně opačný význam!) Vzájemné propojení dvou
DB9 (není určeno pro DTR):
PC DB9 DB9 RxD Receive Data 2 <----- 3 TxD Transmit Data TxD Transmit Data 3 -----> 2 RxD Receive Data
|--> 6 DSR Data Set Ready DTR Data Terminal Ready 4 --|--> 1 DCD Carrier Detect GND Signal
Ground 5 ------ 5 GND Signal Ground DCD Carrier Detect 1 <--| DSR Data Set Ready 6 <--|-- 4 DTR Data Terminal Ready RTS Request To Send
7 -----> 8 CTS Clear To Send CTS Clear To Send 8 <----- 7 RTS Request To Send RI Ring Indicator 9 (nepoužito)
Dvě propojení shora zajistí plnou řídicí signalizaci pro modemy a pravděpodobně lze i nastavit stty -clocal. Pak je ovšem nutno
zapnout terminál (kladný signál DTR) ještě před tím, než by se mohl pomocí getty atd. obvyklým způsobem otevřít port. Pokud
byste jej nezapnuli, mohou nastat potíže (viz kapitola „Předčasné spuštění getty“). Z tohoto důvodu je lepší používat implicitní
stty clocal (ignoruje řídicí signály modemu) a další propojení v tomto kabelu se nepoužijí.
Dříve, když byly s ignorováním modemových signálů problémy, se používal následující trik: V konektoru na straně počítače se
propojily RTS a CTS a dále DSR, DCD a DTR. Když pak počítač potřebuje úvodní signál pro navázání spojení, pošle jej (falešně)
sám sobě.
Co když je kabel příliš dlouhý
Je-li kabel delší než zhruba 50 stop (15–20 m), může při vysokých přenosových rychlostech dochá-zet k chybám. Někdy mohou
fungovat bezchybně i mnohem delší kabely, zejména při nižších rychlostech, má-li kabel nízký kapacitní odpor nebo je-li
elektronika na příjmu dostatečně citlivá. Za ideálních podmínek může fungovat přenos 9 600 baudů i na kabelu o délce 300 m.
Jednou z možností, jak překlenout větší vzdálenost, je nainstalovat si poblíž sériových portů linkové zesi-lovače, provést konverzi
ze symetrického signálu na asymetrický (a naopak) a pak použít krou-cenou dvoulinku. Linkové zesilovače jsou ovšem poměrně
drahé.
Jinou možností, jak překonat dlouhou vzdálenost, je pokusit se odrušit co nejvíc magnetických polí, která jsou ve vysílacích a
přijímacích datových vodičích vytvářena vedením elektřiny: TxD a RxD. Je nutno uzemnit proudovou smyčku, kterou protéká
přibližně stejný proud (avšak opač-nými směry) a je umístěna poblíž datových vodičů. Kroucená dvoulinka odstraňuje
magnetické pole nejlépe. Některé terminály DEC mají pro tento účel dva zemnicí vodiče. Jeden pár může být TxD a SG(TxD),
kde SG je země. Pokud používáte páskový kabel, přesvědčte se, zda vodiče TxD a SG(TxD) jdou vedle sebe. Podobně i pro RxD.
Pokud je pro počítač i pro terminál k dispozici pouze jeden zemnicí vodič, může být pro tento účel napojen na oba vodiče
kroucené dvoulinky. Můžete si to představit tak, že zpětný proud se stejnoměrně rozdělí mezi dva zemnicí vodiče, čímž se ovšem
odstraní jenom asi polovina mag-netického pole. Je to ovšem lepší způsob, neboť zpětná smyčka vyhledává cestu s nejnižší impedancí. Návratová cesta datového signálu (např. TxD) má (díky nejnižšímu indukčnímu odporu) nejnižší impedanci, pokud se vrací
stejnou kroucenou dvoulinkou. I když jsem neviděl výsledky žádných experimentálních testů této metody, měla by fungovat na
větší vzdálenost.
Kabely pro hardwarové řízení toku dat
Pokud se rozhodnete využívat hardwarové řízení toku dat, pravděpodobně si budete muset vyrobit (nebo objednat výrobu) vlastní
kabel. Je-li ke konektorům přístup, můžete si je předrátovat, viz kapitola „Instalace DB konektorů“. Musíte se rozhodnout, jestli
budete používat pin DTR nebo jiný (jiné). Vodítkem vám může být nabídka k nastavení, neboť může obsahovat volbu pro aktivaci
„DTR handshaking“ (nebo „flow control“), z níž plyne, že používá pin DTR. Anebo to může být pin DSR. Podrobnosti viz
kapitola „Hardwarové řízení toku“. Starší terminály nemusí řízení toku vůbec mít.
Tipy na kabely
Obyčejný „přímý“ kabel nebude fungovat, pokud jej nepoužíváte jenom jako prodlužovací kabel nullmodemového (překříženého,
resp. pro přenos souborů) kabelu nebo adaptéru. Přesvědčte se, zda lze konektory na kabelu zasunout do konektorů na hardwaru.
Někdo může používat telefon-ní kabel, který má nejméně 4 vodiče (a pravděpodobně i kroucenou dvoulinku). Nejlepší je stí-něný
kabel s nízkým kapacitním odporem.
Improvizace s kroucenou dvoulinkou
Viz také kapitola „Co když je kabel příliš dlouhý“. I když žádný signál EIA-232 není přizpůsoben kroucené dvoulince, stojí za
pokus ji vyzkoušet. Jeden pár použijete pro vysílání, druhý pro pří-jem. Uzemnění signálu propojte vždy s jedním vodičem z
každého páru. Do požadovaného vodi-če jde pouze část signálu, ale může to stačit. Z důvodu nižšího kapacitního odporu obvodu
vytvo-řeného z kroucené dvoulinky (ve srovnání s uzemněním proudové smyčky) se vyšší zemnící proud omezí pouze na
požadovaný pár více, než kolik vychází z teoretických výpočtů. To platí zejména u vyšších kmitočtů, neboť induktivní impedance
roste s kmitočtem. Obdélníková vlna sériového portu obsahuje vyšší harmonické.
Zemnění
Pin 1 (z DB25) by měl být zemněním kostry (i celkovým uzemněním), avšak u levných sériových portů nemusí být propojen
vůbec s ničím. Devítipinový konektor nemá uzemněnou kostru. Základním signálem je pin 7 a je obvykle propojen s kostrou. To
znamená, že část proudu signá-lu prochází zemnícími vodiči v budově, což je nežádoucí. Stínění kabelu může být uzemněno
pouze na jedné straně kabelu, avšak uzemnění na obou stranách je vhodnější, neboť je lepší, když proud protéká stíněním než
zemnícími vodiči v budově??
Napojení modemu
Pomocí kombinace terminál-modem (bez počítače) můžete volat jiný počítač. Do poloviny 90. let byla v USA značně rozšířená
služba BBS, kterou bylo možno volat. Na některé „vývěsky“ BBS bylo dokonce možné se napojit přes Internet. Právě v
konkurenci s Internetem však tato služba neobstála.
Vytáčení z terminálu
Vedle přímého napojení terminálu (nebo počítače, který jej emuluje) na jiný počítač kabelem je možné se napojit na počítač
prostřednictvím telefonní linky (anebo soukromé linky určené pro tento účel) s modemy na obou stranách této linky. Terminál
(nebo počítač) obvykle vytočí číslo počítače, k němuž se chce připojit.
Většina lidí používá pro připojování PC a modem. PC může mít terminál připojený sériovým por-tem a obsluha terminálu vytáčí
číslo pomocí počítače. Připojení terminálu přímo k modemu je slo-žitější, neboť terminál není příliš inteligentní a uživatel má k
dispozici jen omezený počet mož-ností. Terminály mohou mít uloženy v paměti několik telefonních čísel, z nichž některé se
napří-klad po stisknutí určité funkční klávesy odešle do modemu jako zpráva. Telefonní čísla mohou být uložena i přímo v
modemu. Před odesláním čísla musí modem odeslat určitou iniciační posloupnost. Když na takovou zprávu obdrží odpověď od
modemu z druhého konce telefonní linky, počítač, který je k němu připojen, už může spustit přihlašovací program getty.
Volání terminálu
Počítač se systémem Linux může naopak volat terminál. Volající pošle přihlašovací prompt a vola-ný účastník se může přihlásit.
Na první pohled se může zdát nelogické, jak může hloupý terminál (nepřipojený k počítači) přijmout příchozí volání, avšak může.
Jedním z důvodů je, že hovorné někdy bývá účastníkům účtováno různými sazbami. Aby mohl být terminál volán, je nutno jej
pří-slušně nastavit. Modem připojený k terminálu musí být nastaven na automatickou odpověď (je-li například registr S0 = 2,
modem odpoví na druhé zazvonění). Když očekáváte volání, modem a terminál zapnete. Jakmile přijde hovor, vypíše se vám
prompt a můžete se přihlásit.
Centrální počítač, který volá váš terminál, postupuje poněkud neobvykle. Jakmile váš modem odpoví, je nutno spustit přihlášení
(getty). Centrální počítač spustí program „callback“ (někdy se jmenuje „cb“). Program callback udělá to, že z počítače A zavolá
počítač B, B zavěsí a ihned zavo-lá zpět počítač A. Tak je to nutné udělat, když na počítači A emulujete terminál. V případě skutečného terminálu je situace složitější, neboť centrální počítač může použít pouze „zadní“ část pro-gramu callback. Soubor, který
slouží k nastavení programu callback na centrálním počítači, musí být správně zkonfigurován. Callback zavolá terminál a
program mgetty pak spustí na tomto portu přihlášení. Program mgetty samotný (situace na počátku roku 1998) byl původně určen
pouze ke zpracování příchozích hovorů, avšak probíhají úpravy v tom smyslu, aby převzal i funkce pro-gramu callback a byl
schopen provádět i odchozí hovory. Počátkem roku 1999 tyto úpravy ještě nebyly dokončeny.
Telnet
Telnet je program, který umožňuje připojení textového terminálu (nebo konzoly PC) k centrální-mu počítači po síti. Pro připojení
telnetem se nepoužívají sériové porty. Pochopitelně, když sedí-te u skutečného textového terminálu, jste připojeni po sériové
lince. Když však provozujete tel-net, váš počítač se k jinému počítači připojí nesériovým telnetem.
Telnet pracuje s pakety tcp/ip a může používat různé sítě: Internet, LAN atd. Telnet provozujete jako klient a připojujete se k
telnetovému serveru nebo k jinému počítači na síti. Poté se vypíše přihlašovací prompt a přihlášení probíhá stejně jako po kabelu
nebo sériovým portem.
Připojení k terminálovému serveru Co je terminálový server?
Terminálový server slouží k připojení několika terminálů k centrálnímu počítači (k centrálním počítačům) prostřednictvím sítě.
Současné terminálové servery bývají poblíž centrálního počítače, nebo jsou přímo jeho součástí. Pokud jste ovšem k PC připojeni
některými terminály napřímo nebo po sériových portech pomocí vytáčecích modemů na obou stranách, terminálový server
nepotřebujete.
Když však jsou terminály připojeny k centrálnímu počítači po síti, terminálový server asi budete potřebovat kvůli konverzi
sériového přenosu na síť. To je vhodné zejména pro zařízení jako tis-kárny nebo terminály, které nemají vestavěnou síťovou
podporu. Definice „terminálový server“ však zahrnuje i případ, kdy jdou po síti veškerá data (s výjimkou počítače samotného),
aniž by se používaly sériové porty. Pojem „terminál“ zahrnuje i tenkého klienta s uživatelským grafickým roz-hraním (GUI).
Obvykle jde o sítě tcp/ip nebo ppp (dvoubodové spojení), avšak někdy jsou pod-porovány i jiné protokoly a jejich konverze.
Jedním z možných způsobů připojení „terminálu“ (resp. konzoly PC) je program telnet, který běží na vašem počítači
(pochopitelně připojeném k síti). Bývaly doby, kdy byly terminálové servery jednoúčelové počítače, které se nedaly použít k
ničemu jinému. Dnes jsou servery obvykle sou-částí počítačů, k nimž je možné mimo jiné připojit řadu terminálů.
Většina dnešních terminálových serverů pracuje nikoli s textovými terminály, nýbrž s tenkými kli-enty. Příkladem je „Linux
Terminal Server Project“. Pochopitelně mohou být připojeny i textové terminály prostřednictvím telnetu. Nejčastěji to však bude
monitor PC, který emuluje terminál typu „Linux“, a terminálový server je jen software, který běží na centrálním počítači.
Telnetový server je vlastně jednoduchý terminálový server.
Počítač, který má pouze přímo připojené terminály (anebo připojené pomocí modemu bez tcp/ip nebo ppp), se také někdy nazývá
„terminálový server“. I když v zásadě provádí totéž co skutečný terminálový server, přesně řečeno to terminálový server není.
Vývoj „terminálového serveru“
Původně byl terminálový server určen pro skutečné textové terminály připojené přes sériové porty. Servery skutečných textových
terminálů mívaly mnoho sériových portů. Uživatel se nejdří-ve na tomto serveru přihlásil, pak se prostřednictvím tcp/ip připojil k
centrálnímu počítači, kde se přihlásil podruhé. Někdy bylo první přihlášení automatické anebo uživatel dostal na vybranou, ke
kterému počítači nebo ke které tiskárně se může přihlásit anebo jaký chce používat protokol.
Když byly sálové počítače nahrazeny osobními, postupně zanikalo i používání terminálů. PC však může terminál emulovat (např.
pomocí minicomu (Linux) nebo (hyper)terminálů MS) a bylo možno se prostřednictvím modemů přihlašovat k BBS apod. K
přihlašování sloužila celá baterie modemů, přičemž každý z nich byl připojen k sériovému portu, který byl buď na multiportové
kartě nebo na jednoúčelovém terminálovém serveru. Všimněte si, že v žádném ze shora uvede-ných příkladů se nehovoří o
klientském softwaru. Nejde totiž o model klient/server.
S příchodem Internetu se na telefonních linkách začala uskutečňovat dvoubodová spojení, i tak ovšem realizovaná pomocí
modemů a terminálových serverů poskytovatelů připojení k Internetu. Osobní počítač však už neemulovaly textové terminály,
nýbrž se zobrazovaly obrázky prohlížeče. Poskytovatelé připojení dnes od telefonních společností dostávají jen digitální signál,
takže už nepotřebují skutečné modemy. Z „terminálových serverů“ se staly „servery pro vzdálený přístup“, méně často nazývané i
„digitální terminálové servery“. Poznamenejme, že připojení přes modem 56 k vyžaduje, aby měl k dispozici od telefonní
společnosti digitální připojení.
Jakmile byly zavedeny servery pro vzdálený přístup, místo mnoha samostatných telefonních linek je počítač připojen už jen
několika kabely, po nichž se uskutečňuje množství digitálních telefo-nických hovorů současně. U serverů pro vzdálený přístup už
nenajdete změť konektorů jednotli-vých terminálů, resp. modemů, a k následníkovi terminálového serveru vlastně už nemůžete
při-pojit textový terminál.
Později, s příchodem tenkých klientů, se pojem „terminálový server“ začal používat pro počítač, který slouží k připojování
tenkých klientů, a to jak v systému Linux, tak i v MS Windows.
Typy konektorů a adaptérů
Konektor je ke kabelu, resp. k hardwarové jednotce, připojen víceméně napevno. V sériové komu-nikaci existují dva základní
typy konektorů: 1. Typy DB s piny (DB9 a DB25) a 2. modulární tele-fonní konektory.
Adaptér vypadá přibližně jako konektor, avšak má dva konce s piny. Je to vlastně kabel s velmi krátkou kabelovou částí – zbyly
pouze dva různé konektory na koncích. Adaptér se jen zasune oběma konci do jiných konektorů. Umožňuje propojení dvou
nekompatibilních konektorů anebo spojení kabelových vodičů jinak než napřímo. Adaptér lze nahradit speciálním kabelem
(vyrobeným obvykle vlastnoručně).
Pohlaví konektorů/adaptérů
Konektory a adaptéry na jednom konci jsou buď samci nebo samice. Konektory, které mají piny
– kolíky, jsou samci a ty, které mají zásuvky (někdy se jim ovšem také říká piny), jsou samice. U modulárních konektorů se
obnažené kontakty nazývají zástrčky, vnitřní kontakty (které nejsou vidět) jsou zásuvky. Zástrčky jsou samci; zásuvky jsou
samice.
Typy adaptérů
Existují tři základní typy adaptérů: nullmodem, měnič pohlaví a adaptéry portů. Některé adaptéry splňují více než jednu z těchto
funkcí.
Adaptér typu nullmodem: přesměrovává vodiče jako nullmodemový kabel.
Měnič pohlaví: mění pohlaví konce kabelu tak, aby bylo možno propojit dva konektory stejného pohlaví.
Adaptér portu: přechod od jednoho typu konektoru k druhému (z DB9 na DB25 atd.).
Konektory DB
(Montáž konektorů DB na konce kabelů viz kapitola „Montáž konektorů DB“.) Mají 9 nebo 25 pinů. Specifikace EIA-232 uvádí
25 pinů, avšak vzhledem k tomu, že na sériových portech se vět-šina z nich nepoužívá, stačí 9 pinů. Rozložení viz DB9-DB25.
Číslování pinů uvidíte, když se podí-váte hodně zblízka nebo přes lupu.
Modulární konektory RJ
Zkratka RJ znamená „registered jack“. Vzhledově se tyto konektory nijak neliší od moderních telefonních konektorů, avšak
nemusí s nimi být kompatibilní. Viz také Instalace konektorů RJ. Pro sériové porty se používají 6 nebo 8vodičové. Některé jsou i
10vodičové, avšak ty asi oficiálně nepatří do řady RJ.
6vodičové: RJ11/14, RJ12 a MMJ
RJ11 mají stejnou velikost, avšak mohou mít 2, 4 nebo 6 vodičů. Mají-li dva vodiče, nazývají se RJ11. Mají-li 4 vodiče, někdo je
nazývá RJ14. Mají-li 6 vodičů, často se nazývají RJ12 (avšak tele-fonní RJ12 má jen 4 vodiče). Vypadá to zmateně, avšak mají
stejnou velikost a liší se pouze počtem vodičů.
Téměř stejně vypadá konektor MMJ (6 vodičů) používaný u novějších modelů terminálů VT (a jiných). Jsou někdy označovány
jako DEC-423 nebo DEC RJ11. MMJ má distanční výčnělek a není kompatibilní s RJ (ledaže by se výčnělek uříznul). Některé
konektory však byly navrženy tak, aby byly kompatibilní současně s MMJ i RJ. Vzhledem k tomu, že MMJ se používají zřídka a
pravděpodobně jsou i drahé, někdo si upravuje RJ (šestivodičový) tak, že uřízne výčnělek, aby byl kompatibilní s MMJ.
Rozložení pinů MMJ (DEC) vypadá takto: 1-DTR, 2-TxD, 3-TxD_Gnd, 4-RxD_Gnd, 5-RxD, 6-DSR. Cyclades Cyclom-8Ys
RJ12 má: 1-DTR, 2-TxD, 3-Gnd, 4-CTS, 5-RxD, 6-DCD. Specialix IO8+ má: 1-DCD, 2-RxD, 3-DTR/RTS, 4-Gnd, 5-TxD, 6CTS. Piny RJ (a MMJ) jsou číslovány podobně jako RJ45.
Zástrčka Zásuvka
(Pohled na konec (Pohled do zásuvky
kabelu) na zadní stěně PC)
.________. .________.
| 654321 | | 123456 |
|__. .__| |__. .__|
|__| |__|
Standardní kabel MMJ pro přenos souborů (nullmodem) má konektory MMJ na obou koncích. K PC jej připojíte pomocí adaptéru
MMJ-->DB. Tento adaptér zasunete do konektoru DB (řekně-me 25pinového) na zadní straně PC a konektor MMJ zasunete do
něj. Pokud takový adaptér nemá-te, můžete si sami vyrobit kabel s MMJ (nebo souborovým RJ) na jednom konci a konektorem
DB na druhém konci.
Standardní kabel pro přenos souborů (nullmodem) se dvěma konektory MMJ (nebo RJ11/14) pro-pojí: 1-6, 2-5 a 3-4.
Poznamenejme, že tento kabel podporuje řízení toku DTR/DSR, které proza-tím není podporováno v Linuxu. Velice jednoduše si
můžete zhotovit vlastní standardní 6vodičo-vý kabel pro přenos souborů, pokud víte, že obyčejný 4vodičový telefonní kabel,
který vede v milionech domácností od zdi k telefonu, je také kabel pro přenos souborů. Opatřete si takový a svůj kabel můžete
zapojit podle něho.
Položíte-li tento kabel rovně na podlahu (tak, aby nebyl zkroucený), zjistíte, že zástrčky na obou koncích mají zlaté kontakty
směrem nahoru (anebo obě směrem dolů). Je tedy symetrický, avšak když se nad tím trochu zamyslíte, i tak může posloužit k
přenosu souborů. Stačí propojit několik těchto kabelů pomocí kabelových spojek, neboť spojky jsou také nullmodemové adaptéry,
tj. adaptéry pro přenos souborů. Dva kabely pro přenos souborů spojené za sebou vytvoří přímé propojení.
Uvádíme schéma kabelu (autorem je Mark Gleaves), kterým připojíte MMJ k 9pinovému sériové-mu portu a může sloužit k
řízení toku dat RTS/CTS:
DEC MMJ PC (Linux) DB9 Pin Signál Signál Pin ====== ====== ====== ======
1 DTR -----------------|---> DSR 6
|---> CTS 8
2 TxD ---------------------> RxD 2
3 SG (TxD)--------------|--- SG 5
4 SG (RxD)--------------|
5 RxD <--------------------- TxD 3
6 SR <------------------|--- RTS 7
|--> DTR 4
|--> CD 1
(bez propojení) RI 9
8vodičové a 10vodičové
RJ45 a RJ48 jsou 8vodičové modulární telefonní zástrčky. Údajně existují 10vodičové konektory, které jsou širší a 8vodičové do
nich nejdou zasunout. Někdo je označuje jako RJ45 a/nebo RJ48, avšak toto označení nemusí být správné. Používají se jak pro
ploché telefonní kabely, tak i pro kulaté kroucené dvoulinky. Zakončení může být u těchto dvou kabelů různé. RJ48 má výčnělek
navíc, takže nejde zasunout do džeku RJ45 (zatímco zástrčku RJ45 do konektoru RJ48 zasunout lze). Používají se u některých
multiportových sériových karet a sítí. Zde jsou čísla pinů osmivodičového kabelu:
Zástrčka Zásuvka
(Pohled na konec (Pohled do zásuvky
kabelu) na zadní stěně)
.__________. .__________.
| 87654321 | | 12345678 |
|__. .__| |__. .__|
|____| |____|
Je lepší kabel zhotovit, nebo upravit? Koupit, nebo zhotovit?
Můžete zkusit zakoupit krátký, nullmodemový kabel. Samotný „modemový kabel“ fungovat nebu-de. Nullmodemové kabely byly
svého času označovány jako kabely k „sériovým tiskárnám“, jež se už používají velice málo (2004). Mohou být také označeny
jako kabely pro „přenos souborů“ nebo kabely „počítač-počítač“. Hardwarové řízení toku dat bude fungovat při spojení PC-PC
(emu-lace terminálu), nikoli však řízení DTR u většiny textových terminálů. Podporuje-li Linux řízení DTR, skutečné terminály
budou fungovat správně. Přesvědčte se, zda konektory na koncích kabe-lu lze zasunout do počítačových a terminálových
konektorů.
Co když ale potřebujete pro napojení terminálů nebo hardwarové řízení toku delší kabely ? Hotové kabely se shánějí obtížně
(možná je najdete na Internetu), zejména když chcete používat co nejméně vodičů (řekněme třeba 4). Jednou z možností je, že si
je necháte vyrobit, což bývá dost drahé, ledaže byste našli někoho, kdo by vám je vyrobil za cenu blízkou ceně hotových kabelů
(já jsem našel).
Levná alternativa je, když si koupíte použité kabely (máte-li kde). Pokud získáte použitý terminál, vyžádejte si i kabely. Další
možností je, že si vyrobíte vlastní. Možná budou malou úpravu pro-pojení potřebovat i použité kabely. V každém případě budete
potřebovat speciální nástroje. Konektory krátkých kabelů jsou většinou pevně zalité v plastu a nelze je předrátovat, změnit zapojení můžete jen u kabelů vyrobených na zakázku nebo vlastnoručně. K výhodám vlastnoruční výroby kabelů patří, že když se to
jednou naučíte, může se vám to hodit, třeba když kabel fun-guje špatně, přestane fungovat úplně anebo nahonem potřebujete
zhotovit nový kabel.
Čísla pinů 9 a 25pinového konektoru
Čísla pinů bývají vylisována v plastu konektoru, možná je však bez lupy nepřečtete. Místo DCD bývá někdy napsáno pouze CD.
Číslování pinů na samičím konektoru se čte zprava doleva, při-čemž 1 je v pravém horním rohu (zatímco 1 u samčího konektoru
je vpravo nahoře). Směr --> je od PC.
\1 2 3 4 5/ Pohled na piny \1 2 3 4 5 6 7 8 9 10 11 12 13/\6 7 8 9/ samčího konektoru \14 15 16 17 18 19 20 21 22 23 24 25/
Jak namontujete kabelové konektory DB
Stručný popis viz kapitola „Konektory DB“. Bohužel, většina kabelů, které dnes zakoupíte, má konektory zalité na obou koncích,
a nelze je upravovat. Jen menší část má rozebiratelné konektory, které je možné předrátovat. Než se pustíte do úpravy kabelů, je
třeba, abyste věděli něco
o pinech. Jsou dva typy pinů: pájené a krimpované.Krimpované piny vyžadují speciální krimpovací kleště a také „boxera“ na
zasouvání a vysouvání.
Práce s těmito nástroji je ovšem rychlejší než pájení. Napojujete-li dva vodiče na jeden pin (což je také někdy potřeba, když třeba
chcete propojit vodič s jiným pinem), je pájení rychlejší (u těchto pinů). To proto, že krimpované piny mohou mít napojení pouze
po jednom vodiči, zatímco k jed
nomu pinu může být připájeno vodičů několik. Krimpovaný pin pouze zatlačíte rukou nebo boxerem. Když pracujete s boxerem,
musíte nejdříveuchopit vodič hrotem tohoto nástroje a pak jím obtočit zadní stranu pinu.
Odstraňování pinu boxerem vyžaduje malý trik. Lépe byste jej pochopili, kdybyste při čtení těch-to pokynů měli před sebou jak
boxera, tak i vodiče. Hrot boxera vsuňte podél vodiče do otvoru co nejhlouběji (asi 1,5 cm). Na některých boxerech je značka
(např. dírka), abyste věděli, do jaké hloubky jej zasouváte. Hrot boxera má zužující se výřez, který nasunete na vodič širší stranou.
Některé nástroje mají dva hroty. Vodič snáze odstraníte tím hrotem, který se na něj nasouvá obtíž-něji, neboť těsněji přilne k
vodiči a úchop je pevnější.
Máte-li hrot patřičně zasunutý, jemně zatáhněte za nástroj i za vodič. Když nejde ven, boxer není ve správné poloze. Zkuste jej
zatlačit víc dovnitř nebo pootočit do jiné polohy (anebo obojí). Možná byste také měli použít jiný hrot, který pasuje na pin těsněji.
Pomocí tohoto nástroje můžete snadno změnit přímý kabel na nullmodemový kabel (kabel pro přenos souborů) atd.
S boxerem mohou být i určité problémy. Nejde-li nasunout zezadu na pin, může to být proto, že pin nebyl správně krimpovaný k
vodiči, je třeba zdeformovaný (není kulatý) apod. Pokud je povy-sunutý jen částečně, avšak nejde vytáhnout celý, pravděpodobně
je ohnutý. Prohlédněte si jej pod zvětšovacím sklem. Můžete se jej pokusit narovnat pinzetou, avšak musíte postupovat opatrně,
abyste nepoškodili pozlacení. Někdy se podaří pin vytlačit ploškou silnějšího šroubováku (nebo něčím podobným). Nesmíte
ovšem tlačit příliš silně, abyste nepoškodili otvor v plastu nebo neo-hnuli pin.
Pájet sami raději nezkoušejte, pokud s tím nemáte žádnou zkušenost nebo jste si o tom něco nepřečetli.
Instalace konektorů RJ
Jde o určitý typ telefonních modulárních konektorů, který se používá pro běžné telefony. Existu
je ovšem mnoho různých typů (viz kapitola „Modulární konektory RJ“).Není snadné pracovat s použitými konektory. Možná se
vám podaří vytáhnout vodiče, vsunoutmalý klínek, který zvedne pozlacené kontakty, a konektor bude možné znovu používat.
Existujík tomu speciální krimpovací nástroje, pro každý konektor jiné.
Pokud nemáte krimpovací nástroj, můžete se pokusit o instalaci pomocí šroubováčku (a kladív-ka), která je s těmito nástroji
ovšem složitější. Zatlačte na vodiče kabelu a poté silně stlačte pozla-cené kontakty šroubováčkem, který zajde do jednotlivých rýh
mezi kontakty. Pokud šroubováček nebude mít plošku přibližně stejně silnou jako kontakty anebo pokud šroubováček při
stlačování po kontaktu sklouzne, můžete jej poškodit. Na šroubováček také můžete poťukat kladívkem, nej-dříve jej ale zkuste
zatlačit rukou.
Přesvědčte se, zda jste při stlačování kontaktů na konektoru nepoškodili západku. Konektor při vytlačování kontaktů nepokládejte
přímo na stůl, nýbrž na podložku (silnou asi 1 mm ), která pohodlně zajde do štěrbiny mezi západkou a tělem. Podložkou může
být například silnější lepen-ka, několik vizitek nebo kousek dřeva. Vzhledem k tomu, že spodní strana konektoru (na niž konektor
pokládáte) není kvůli západce zcela rovná, neměl by být povrch stolu příliš tvrdý a měl by být pokrytý také například lepenkou.
Ještě lepší je podložit 6 mm dlouhou část konektoru na straně s kontakty dalším kouskem lepenky. V každém případě je vhodný
měkký povrch stolu. Také je údajně možné upnout konektor do svěráku, avšak tuto metodu nemám vyzkoušenou. Pozor, aby
konektor ve svěráku neprasknul.
Ve srovnání s krimpovacími kleštěmi je instalace popsaná shora mnohem delší a náchylnější k nezdarům, vyžaduje však určitou
vynalézavost a je pochopitelně levnější, neboť kupovat speciální nástroje kvůli jednomu nebo dvěma konektorům je rozmařilost.
Nastavování (konfigurace) obecně
Konfigurace (nastavování) se skládá jak z uložení konfigurace do permanentní paměti terminálu, tak i z uložení příkazů do
startovacích souborů (na pevném disku), které se provádějí při každém zapnutí počítače (anebo přinejmenším při každé změně).
V této kapitole naleznete přehled kon-figurace základních komunikačních voleb terminálu i počítače. Další dvě hlavní části
podrobně popisují konfiguraci terminálu (viz kapitola „Nastavování terminálů“) a počítače (viz kapitola „Podrobnosti o
nastavování (konfiguraci) počítače“).
Přehled nastavování (konfigurace) terminálů
Při instalaci terminálu je nutno do permanentní paměti (která není po vypnutí vymazána) tohoto fyzického terminálu uložit jeho
charakteristiku, která bude platná i po opětovném zapnutí terminálu. Možná vás potká to štěstí, že váš terminál bude už
zkonfigurovaný, takže si ušetříte práci.
Existují dva základní způsoby konfigurace terminálu. Buď se k němu posadíte a postupně pro-cházíte konfigurační nabídku nebo
na něj z centrálního počítače pošlete řídicí sekvence. Ještě však než začnete s posíláním, je nutno nastavit volby komunikačního
rozhraní (viz popis), např. pře-nosovou rychlost apod. To lze provést pouze interaktivně od terminálu, který si bude povídat s
počítačem, viz kapitola „Nastavení terminálu“.
Přehled nastavování (konfigurace) počítače
Ještě před zahájením posílání řídicích sekvencí z počítače na terminál je nutno také zkonfigurovat počítač samotný tak, aby byl
schopen pracovat s terminálem. Budete-li mít štěstí, možná bude sta-čit jen přidat do souboru /etc/inittab příkaz getty tak, aby se
při zapnutí počítače na terminál poslal prompt „login:“. Podrobnosti viz také kapitola „Getty“.
Počítač komunikuje s terminálem pomocí sériového ovladače (je součástí jádra), který má impli-citní konfiguraci a je také
částečně (někdy i zcela) zkonfigurován programem getty ještě předtím, než spustí „login“ na jednotlivých terminálech. Někdy
však je nutno provést pomocí programů stty a setserial dodatečnou konfiguraci. Tyto programy (pokud je to nutné) je nutno
spustit po kaž-dém startu počítače, neboť tato konfigurace se po vypnutí neuchovává. Viz „Podrobnosti o nasta-vení (konfiguraci)
počítače“.
Mnoho voleb
Můžete vybírat z velkého počtu konfiguračních voleb. Především musí být nastaveny správně komunikační volby, jinak počítač
nebude fungovat. Pokud se některé funkce nebudou využívat, na nastavení jejich voleb nezáleží. Když například nemáte k
terminálu připojenou tiskárnu, není vůbec důležité, jak jsou v terminálu nastaveny její konfigurační parametry. Poslední tvrzení
ovšem není zcela korektní. Předpokládejme, že nemáte tiskárnu, avšak počítač omylem pošle terminálu příkaz, aby všechny znaky
(všechna data) přesměroval z počítače pouze na tiskárnu. Na terminá-lu se nic neobjeví a bude mrtvý. Některé terminály mají
konfigurační volbu, na jejímž základě informují terminál, že tiskárna není přítomna. V takovém případě bude terminál příkazy k
pře-směrování na „tiskárnu“ ignorovat a problém uvedený výše nenastane. To ale situaci nijak zvlášť nepomůže, neboť existuje
řada jiných chybných příkazů, které mohou být poslány na tiskárnu a které mohou způsobit škody. To se stává například tehdy,
když omylem pošlete na terminál
binární soubor.V některých případech nezpůsobí nesprávné nastavení žádné problémy, dokud nespustíte nějakýmálo používaný
program, který počítá s určitým nastavením terminálu. Jiné volby ovládají pouzevzhled displeje a terminál bude pracovat i tak,
avšak nebude na něj pěkný pohled.
Některé volby se týkají jen terminálu a není je nutno nastavovat na počítači. Například: Chcete psát černými písmeny na světlém
pozadí? Takový způsob namáhá oči méně než psaní na černém pozadí. Má se klávesa opakovat, když ji přidržíte? Má se řádek
zalamovat, když přesáhne přes pravý okraj? Mají klávesy při stisknutí vydávat zvuk?
Volby komunikačního rozhraní
Některá z těchto komunikačních nastavení (voleb) jsou pro terminál i pro počítač společná a musí být ve shodě: rychlost, parita,
bity/znak, řízení toku. Jiné komunikační volby jsou nastaveny pouze na terminálu (a jenom některé jsou důležitá pro ustavení
komunikace). Ještě jiné volby jako adre-sa a přerušení (IRQ) fyzického portu ttyS2 jsou nastaveny jenom na počítači příkazem
setseri-al. Dokud nejsou kompatibilně nastaveny všechny komunikační volby, nelze mezi terminálem a počítačem uspokojivě
(anebo vůbec ) komunikovat. Na terminálech je nutno tyto volby nastavit ručně pomocí nabídky ( anebo pomocí určité speciální
kazety). Centrální počítač je zkonfigurován po každém zapnutí do sítě (anebo když se někdo přihlásí). Někdy se o konfiguraci
počítače posta-rá program getty (je uložen v souboru /etc/inittab), který zahajuje proces přihlašování do systému. Viz popis getty.
Nastavení počítače a terminálu, která musí být ve shodě:
Rychlost (bity/s ).
Parita.
Počet bitů ve znaku.
Řízení toku.
Některá základní nastavení terminálu samotného jsou:
Výběr portu.
Nastavení komunikace na plný duplex (=FDX na terminálech Wyse).
Pokud program getty nenastaví počítač, jak potřebujete, můžete použít jeden z dvojice programů stty a setserial (nebo oba).
Rychlost
Na počítači i na terminále musí být nastavena stejná přenosová rychlost. Jednotkou rychlosti jsou bity/s (bity za sekundu, bps,
baudy). Nastavte nejvyšší možnou rychlost, při níž ještě nedochází k chybám. Řízení toku umožňuje nastavení vyšších rychlostí.
Na terminále mohou existovat dvě rychlosti: vysílací (transmit) a přijímací (receive), které jsou někdy zkráceně označovány
písmeny T a R. Obvykle bývají nastaveny na stejnou hodnotu, neboť linuxový program stty dosud neumí nastavit tyto rychlosti
rozdílně. (Pro nastavení rychlosti existuje v příkazu stty volba, avšak nejspíš nastavuje obě rychlosti na stejnou hodnotu.) Obvyklé
rychlosti jsou 300, 600, 1 200, 2 400, 4 800, 9 600, 19 200, 38 400, ... Nižší rychlosti (např. 600) mají tiskárny a terminály, které
píší na papír.
Mám používat kontrolu parity?
Definice viz kapitola „Co je to parita“. Implicitní je zablokování kontroly parity. Chcete-li kontrolu parity aktivovat, musíte
vybrat, zda sudou nebo lichou. Jakou, je v podstatě jedno. U terminálu je někdy nutno nastavit paritu vysílací i přijímací. V
takovém případě ji budete muset nastavit stejnou, počítač nepovolí rozdílné nastavení. Navíc sériový port PC obvykle
nepodporuje nasta-vení různých parit. U některých terminálů nelze nastavit přijímací paritu a terminál bude paritní bity ignorovat.
Pokud na některých starších terminálech používáte osmibitové bajty, kontrola pari-ty není možná, neboť na přenos paritního bitu
už není místo.
K čemu je vůbec parita? Je vhodné ji kontrolovat, i když kontrola není povinná. Bez kontroly pari-ty můžete občas přijmout
nesprávný znak a snažíte se opravovat překlepy, které ve skutečnosti neexistují. Parita nicméně něco stojí. Za prvé je složitější
nastavení, neboť implicitní nastavení je obvykle bez parity. Za druhé, parita snižuje rychlost přenosu, neboť na každý bajt musíte
přenést
o jeden bit víc. Ve skutečnosti přenášení paritního bitu může a nemusí snížit rychlost přenosu. Rychlost terminálu, který píše na
papír, závisí na mechanické části tisku. Zvýšíte-li přenosovou rychlost, výsledkem je jenom vyslání vyššího počtu „stop“ bitů, aby
terminál stačil vypsat přená-šené znaky. V důsledku delšího čekání způsobeného řízením toku není skutečná rychlost bez kontroly parity vyšší než s kontrolou. U některých terminálů je situace podobná: Zavedete-li kontrolu parity, méně se čeká v důsledku kontroly toku dat, což teoreticky vede k vyšší průměrné pře-nosové rychlosti, avšak vinou
kontroly parity zůstává průměrná rychlost přenosu stejná. Existuje i možnost nainstalovat terminály bez kontroly parity a v
případě potřeby ji doplnit. Chyby
v přenosu bez kontroly parity zjistíte nejlépe pomocí případných překlepů, o nichž jste přesvěd-čeni, že jste je neudělali. Když
takový překlep najdete, obnovte obrazovku (znovu ji vyšlete z počí-tače ), a když překlep zmizí, jde pravděpodobně o chybu
parity. Dochází-li k většímu počtu tako-vých chyb (tj. více než jedna na několik set obrazovek), je nutno něco opravit, například:
Akti-vujte kontrolu parity a snižte přenosovou rychlost; nebo použijte kratší a lepší kabel. Aktivace kon-troly parity nesníží počet
chyb, avšak budou přesně identifikovány.
Je možný i opačný přístup, kdy nejdříve zavedete kontrolu parity a když po určitou dobu (řek-něme měsíc nebo dva) nedochází k
chybám (na obrazovce se neobjevují chybové symboly), můžete kontrolu parity bez obav o bezpečnost zablokovat.
Bity/znak
Tato hodnota udává počet datových bitů na znak bez paritního bitu. Na mezinárodní znakové množiny potřebujete 8 bitů. Pokud je
ovšem terminál nezná, není taková množina k ničemu. Viz kapitola „Znakové množiny“. Chcete-li používat pouze ASCII znaky,
stačí 7 bitů a vysílání bude probíhat rychleji. Některé velmi staré terminály podporují pouze sedmibitové znaky.
Jaké řízení toku dat?
Vybrat si můžete mezi „hardwarovým“ (např. dtr/cts) nebo „softwarovým“ (Xon/Xoff) řízením toku dat. I když hardwarové řízení
může být rychlejší (jsou-li pro tento účel v kabelu k dispozici jeden nebo dva vodiče a podporuje-li je terminál), ve většině
případů Xon/Xoff funguje taktéž spolehli-vě. Někdo sice tvrdí, že kvůli rušení (viz dále) musel přejít na hardwarové řízení, avšak
v mnoha případech softwarové řízení funguje bez problémů (například i v mém případě).
Používáte-li softwarové řízení toku dat (Xon/Xoff) a někteří uživatelé o tom nevědí, mohou na centrální počítač náhodně poslat
znak Xoff a uzamknout si terminál. Po dobu uzamčení většinou zběsile mlátí do klávesnice a pokoušejí se terminál odemknout.
Když konečně přijde Xon a komu-nikace se obnoví, vše, co v afektu napsali, se provede, často i s nečekanými následky. Při hardwarovém řízení se podobná věc nemůže stát. Další vysvětlení viz kapitola „Řízení toku dat“.
Výběr portu
Vzhledem k tomu, že většina terminálů má na zadní straně dva i více konektorů, obvykle je jeden z nich určen pro spojení s
počítačem a druhý pro připojení tiskárny. U konektoru může být označení (zjistěte to) a toto jméno (např. Aux, Serial 2 nebo
Modem ) může být přiřazeno buď počítači nebo tiskárně (apod.).
Rychlý pokus
I když vše, co zde bylo dosud popsáno, se může jevit jako velmi složité, uvedení terminálu do chodu bývá ve skutečnosti poměrně
snadné. V části „Rychlá instalace“ naleznete jednoduchý postup, jak si můžete instalaci vyzkoušet. Pokud ovšem neuspějete nebo
chcete, aby displej vypadal nebo pracoval lépe, nevyhnete se dalšímu studiu.
O konfiguraci terminálu podrobně
S výjimkou následující podkapitoly o posílání řídicích sekvencí na terminál jsou v této kapitole uvedeny zejména podrobnosti o
tom, jak nastavíte terminál ručně pomocí nabídky přímo z ter-minálu. Pokud jste to již neudělali, měli byste si přečíst kapitolu
„Přehled nastavování terminálů“. Nejlepší je mít k terminálu manuál; když jej však nemáte, naleznete zde informace o mnohých
vol-bách, které určitě budete potřebovat.
Komunikační parametry, např. rychlost přenosu apod., musí být u terminálu nastaveny vždy, jinak s ním není možné
komunikovat. Jakmile je komunikace ustavena, zbytek konfigurace můžete pro-vést dvěma různými způsoby. Buď můžete
pokračovat v ruční konfiguraci u terminálu a výsledek uložit do permanentní paměti terminálu nebo můžete po každém zapnutí
terminálu (resp. podob-né akci) posílat řídicí sekvence z počítače.
Nejlepší způsob je, když víte, jak správně nastavit a uložit konfiguraci v terminálu. Pokud to neví-te, obvykle stačí, když před
začátkem práce na terminálu na něj ze souboru terminfo pošlete úvod-ní řetězec. Terminál lze někdy používat, i když neuděláte
vůbec nic. Aplikační program i obsluha mohou nastavení kdykoli změnit prostřednictvím určité řídicí sekvence, kterou pošlou na
terminál.
Posílání řídicích posloupností na terminál
Jakmile je ustavena komunikace, zbytek konfigurace terminálů může někdy být dokončen poslá-ním řídicích sekvencí z počítače
na terminály. Máte-li větší počet terminálů, je dobré si napsat (nebo najít) skript, kterým konfiguraci zautomatizujete. Může (ale
nemusí ) obsahovat příkaz, kte-rým sdělíte terminálu, aby si uložil stávající nastavení do permanentní paměti tak, aby se mohlo
použít při příštím zapnutí terminálu.
Existuje jednoduchý a složitý způsob, jak tyto řídicí sekvence rozeslat. Při jednoduchém způsobu nemusíte řídicí sekvence
vyhledávat, nýbrž stačí vydat příkaz, který automaticky najde příslušnou řídicí sekvenci v databázi terminfo a pošle ji. Bohužel,
databáze terminfo nemusí vždy obsahovat všechny sekvence, které potřebujete. Proto je zřejmě lepší složitější způsob s přímým
posíláním řídicích sekvencí.
Složitější metoda bude vyžadovat podrobnější manuál. Manuály ke starším terminálům obsahovaly podrobný seznam řídicích
sekvencí, v nových už však většinou nejsou. Možná si budete muset koupit „programátorský manuál “ (nebo nějak tak), který se k
terminálům běžně nedodává. Seznam řídicích sekvencí najdete i v kapitole „Seznam řídících sekvencí“, avšak pravděpodobně
není úplný.
Konfigurační příkazy můžete na terminály posílat i bez manuálů, a to pomocí programů tput a set-term. Viz kapitola „Změna
nastavení terminálu“. Na terminál také můžete poslat pouze úvodní řetězec z některé položky v terminfo, pokud jej nastaví tak,
jak potřebujete, viz kapitola „Úvodní řetězec“. Pokud nechcete tyto sekvence posílat z počítače pokaždé, když terminál zapnete,
musí-te nastavení nějak uložit v permanentní paměti.
Nastavování starších terminálů
U starších terminálů se podívejte, jestli jsou nad horní řadou numerických kláves štítky. Pokud tam jsou, mohou na nich být
napsány funkce těchto kláves v konfiguračním režimu. Některé starší ter-minály mohou mít klávesy určené pouze ke konfiguraci.
A ještě starší mají mechanické přepína-če. Někdy nejsou všechny správně označeny, avšak mohou být ukryté. Pochopitelně,
pokud něco nastavíte přepínačem, je to natrvalo a nastavení nemusíte ukládat do permanentní paměti.
Jak se dostanete do konfiguračního režimu
Chcete-li na terminále vybrat konfigurační volby, musíte nejdříve zadat konfigurační režim a pak vybrat z nabídky volby (tj.
zkonfigurovat), které jsou uloženy v paměti terminálu a jsou zobraze-ny na obrazovce. Při této konfiguraci terminál ani nemusí
být připojen k počítači. Jak se dostane-te do konfiguračního režimu, je popsáno v manuálu k terminálu, uvedeme pouze několik
užiteč-ných rad:
Má-li terminál klávesu set-up, zkuste ji stisknout. Zkuste ji také stisknout současně s klávesou Shift.
Wyse: Nejdříve zkuste stisknout Select+Shift, pak nahraďte klávesu Shift klávesou Ctrl.
VT, Dorio: Klávesou pro nastavení může být F3. Na VT420 a pozdějších modelech může být tato klávesa
naprogramována na jinou činnost, takže vypněte terminál síťovým vypí-načem. Když jej znovu zapnete, stiskněte F3 ihned,
jakmile se na obrazovce objeví úvod-ní zpráva.
IBM: 3151: Ctrl-ScrollLock. Ctrl-Minus_on_Keypad (nebo jako 3151).
Po nabídce se zkuste pohybovat pomocí šipek. Výběr potvrďte klávesami Return, mezerník nebo speciální klávesou (na starých
terminálech je to přepínač ). Z nastavovacího režimu se dostanete pomocí položky „exit“ v nabídce (na některých starších
terminálech je nutno znovu stisknout nastavovací klávesu).
Komunikační volby
Aby terminál vůbec pracoval, musí být správně nastaveny hodnoty přenosové rychlosti, parity, bity/znak. Nesprávné řízení toku
může způsobit poškození nebo ztrátu dat, která jsou zobrazena na obrazovce. Základní komunikační volby (terminálu i počítače)
jsou popsány jinde, viz kapito-la „Komunikační rozhraní“. Následující seznam nabízí některé názvy těchto částí a taktéž některé
další komunikační volby, které lze nastavit pouze na terminálu.
Rychlost (bity/s ) (baudy): 9 600, 19 200, atd.
Bez parity, sudá, lichá, značka, mezera.
Bitů na znak {resp. data}: 7 nebo 8.
■
Řízení toku {Hndshk}: žádné, Xon-Xoff nebo hardwarové (DTR atd).
Řízení toku příjemcem {Rcv Hndshk} chrání data přijímaná terminálem tak, že předává signály pro řízení toku
centrálnímu počítači.
Řízení toku vysílačem {Xmt Hndshk} je ochrana dat vysílaných z terminálu. Terminál dostává signály pro řízení toku
(a zamyká/odemyká klávesnici). Data obsahují signály Xon/Xoff.
Počet stopbitů: 1 nebo 2. Viz kapitola „Napěťová posloupnost bajtu“.
Úroveň řízení toku {Rcv Hndshk Level} {{Xoff at...}}: Řízení toku vyšle „stop“, když se přeplní bufer terminálu.
Komunikační režim {Comm}: Plný duplex {FDX}, poloviční duplex {HDX} {{Local Echo}}, lokální režim {{Online/
Local}}.
Omezení rychlosti vysílání {Xmt Lim}: Omezení rychlosti vysílání na určitou rychlost ve znacích/sec (cps ), i když je
nastavena vyšší přenosová rychlost (v baudech).
Omezení rychlosti funkčních kláves: Jako v předchozím případě, avšak pro funkční kláve-sy (zprávy odesílané z
funkčních kláves).
Výběr portu: Určení fyzického konektoru počítače (portu).
Jak uložit nastavení
Nastavení je nutno uložit do permanentní paměti terminálu tak, aby platilo i při dalším zapnutí ter-minálu. Když se vám to
nepodaří, nastavení se při opětovném zapnutí terminálu ztratí. Až se bude-te opakovaně pouštět do otravné práce s nastavováním
terminálu, nejdříve si zjistěte, jak je potře-ba nastavení uložit. U novějších terminálů je příkaz k uložení nastavení součástí
konfigurační nabídky, v případě starších terminálů musíte hledat v manuálu. Většinou však konfiguraci uložíte příkazem Ctrl+S.
Nastavení voleb/parametry
Volby popsané v této kapitole jsou platné v konfiguračních nabídkách většiny terminálů. Volby také někdy nazýváme parametry,
vlastnosti nebo funkce. Některé volby také můžeme označit jako „režimy“. Souhrnně říkáme všem volbám „konfigurační volby“.
Některé volby mohou být nahra-zeny vysláním řídicích sekvencí na terminál. Různé značky a modely terminálů mají různé volby
a stejné volby mohou být pojmenovány různými názvy (všechny je zde neuvádíme). Zkrácené názvy terminálů Wyse jsou
uzavřeny ve složených závorkách {...}. Názvy terminálů VT jsou uza-vřeny ve dvojitých složených závorkách {{...}}.
Emulace {charakteristiky} {{režimy terminálů}}
Většina současných terminálů umí emulovat i několik jiných terminálů. Nejvíc funkcí má k dispo-zici terminál, který běží v
nativním režimu (tedy neprovádí se žádná emulace) {přirozená charak-teristika}. Někdy existují i dvě různé emulace stejného
modelu terminálu. Například VT220-7 emu-luje VT220 se 7 bity/bajt, zatímco VT220-8 emuluje VT220 s 8 bity/bajt (256
možných znaků).
Starší modely terminálů mívají méně vlastností než nové. Představte si, že by někdo chtěl emulovat starý terminál, avšak i s
některými novými funkcemi. V určitých případech je taková emulace možná, avšak pouze do jisté míry. Tato vlastnost je někdy
označována jako {Enhance} (nebo Enhanced ??).
Volby zobrazení Velikost znakové buňky {znaková buňka}
Velikost buňky, v níž je znak zobrazován. Uvádí se v pixelech (=bodech). Čím víc bodů, tím lepší je rozlišení. 10x16 znamená
šířka 10, výška 16 (16 řádků, 10 sloupců). Oproti řádu matic, kdy se uvádí řádky (výška) na prvním místě, je tento zápis opačný.
Znaková buňka obsahuje také mezeru mezi sousedními znaky, takže skutečná velikost buňky, jíž jsou dány hranice znaku, je
menší.
Sloupce/řádky
Obvykle 80 sloupců a 24 nebo 25 řádků. To znamená, že na jednom řádku obrazovky může být až 80 znaků. Některé terminály
mají volitelných 132 sloupců, avšak není-li dostatečně velká obra-zovka, písmena jsou titěrná a špatně se čtou {{Set 132 column
mode }}. Chcete-li nastavit 25 řádků, přesvědčte se nejdříve, zda je tato možnost uvedena v terminfo. Také byste měli do souboru /
etc/profile přidat řádek export LINES=25 a zadat příkaz stty -F /dev/ttySx rows 25. Neda-ří-li se vám rolování obrazovky, viz
kapitola „Terminál neroluje“.
Kurzor
Kurzor lze nastavit, aby vypadal jako obdélník (=blok) {Blk}. Jiné volby jsou podtržení {Line} nebo blikání. Já dávám přednost
obdélníkovému kurzoru, který nebliká {Steady}. Je dost velký na to, abych ho rychle našel, a nerozptyluje mě. Zvolíte-li
neviditelný kurzor (taková volba na některých terminálech existuje), zmizí, avšak zůstane na místě a když budete psát, budou zde
i pak naskakovat nová písmenka.
Atributy zobrazování (kouzelné cookies)
Atributy zobrazování mohou být buď kouzelné cookies nebo bajty s atributy přiřazené všem zna-kům. Kouzelné cookies mají
omezený rozsah: Platí do konce řádku, nebo po konec stránky? Lepší jsou atributové bajty (jež ve skutečnosti mohou být půlbajty
= nibly, čtyři bity).
Řídicí znaky zobrazení {Monitor}
Můžeme je nazývat všelijak, např. „řídicí znaky zobrazení“. Jsou-li vypnuty (obvykle jsou), interpretují se. Jsou-li zapnuty, vidíte
řídicí sekvence z počítače (které na obrazovce normálně nejsou vidět). Když tedy nejsou interpretovány terminálem, s výjimkou
znaků CR LF (nový řádek) je vidíte na obrazovce. Viz kapitola „Řídicí kódy“.
Dvojnásobná šířka/výška
Některé terminály mohou zobrazovat znaky ve dvojnásobné šířce a/nebo výšce. Měníte-li řádek na dvojnásobnou šířku (DW),
pravá polovina (RH, right half) je z obrazovky vytlačena a vypíše se dotaz, zda má být vymazána. „Preserve“ znamená ponechat
pravou polovinu řádků o dvojité šířce. Není vyloučeno, že v režimu dvojité výšky bude potřeba poslat každý řádek dvakrát
(podru-hé o řádek níž).
Inverzní zobrazení {Display} (světlé/tmavé pozadí)
Normální zobrazení jsou světlá (bílá, zelená, žlutá) písmena (popředí) na tmavém (černém) pozadí. Inverzní zobrazení {Display
Light} je opačné: černý text na světlém pozadí. Tento způsob je šetrnější pro oči (pokud není v místnosti tma).
Stavový řádek
Stavový řádek je řádek na horním nebo spodním okraji obrazovky, na němž jsou zobrazeny informace o běžícím aplikačním
programu. Často je nějakým způsobem zvýrazněn. Je-li stavový řádek aktivní, aplikace může poslat na terminál speciální řídicí
sekvenci, která znamená, že následující text má být zobrazen na stavovém řádku. Mnohé aplikace však tuto funkci nevyužívají a
místo toho simulují stavový řádek přímou adresací kurzoru. Běžný uživatel obvykle nedokáže oba způsoby zobrazení stavového
řádku od sebe rozlišit.
Při změně 80/132: Smazat, nebo ponechat?
Když přepínáte počet sloupců z 80 na 132 (nebo naopak), mají být data zobrazená ve starém tvaru vymazána, nebo ponechána na
obrazovce? {80/132 Clr} {{Screen Width Change}}. Na nastavení této volby nezáleží, neboť když aplikační program používá 132
sloupců, nastaví si tuto volbu dle potřeby pomocí řídicí sekvence.
Stránkové volby
Aby byl terminál Wyse schopen zpracovávat více stránek zobrazované paměti (multipage) současně, musí být patřičně nastaven.
Velikost stránky
Paměť terminálu můžete rozdělit na několik stránek, popis viz kapitoly „Stránky“ a „Stránky (defi-nice )“. Stránkovou paměť
můžete rozdělit na několik stránek zvolené délky. Linuxové aplikace pravděpodobně stránkování nevyužívají, takže na nastavení
v podstatě nezáleží.
Zobrazení vázané na polohu kurzoru
Paměť terminálu můžete rozdělit na několik stránek, popis viz kapitoly „Stránky“ a „Stránky (defi-nice)“. Když přemístíte kurzor
ve videopaměti na místo, které v daném okamžiku není zobrazeno na displeji (např. na jinou stránku nebo na nezobrazenou část
běžné stránky), měla by se zobra-zit část s kurzorem? Pokud ano, nazývá se tento způsob zobrazování „vázaný“. Při pohybu kurzoru v rámci běžné stránky se tento způsob nazývá „horizontální“ a „vertikální“ vazba, při pohy-bu mezi stránkami je to
„stránková“ vazba.
Hlášení a odpově
Terminál buď identifikuje sebe a svůj stav anebo jako odpověď na určitou řídicí sekvenci pošle předběžnou odpověď.
Odpovědní hlášení (řetězec)
V průběhu nastavování může být na počítač volitelně odeslaná krátká zpráva jako reakce na zapnutí nebo na žádost z počítače
(pravděpodobně na řídicí znak ENQ neboli inquire).
Automatická odpově
Je-li nastavena, při zapojení k síti se automaticky pošle na počítač odpověď, aniž by o ni musel žádat. Čeká na tuto odpověď
některý z procesů getty??
Skrytá odpově
Je-li nastavena, zpětnou odpověď neuvidí nikdo než počítač. Chcete-li ji změnit, zrušte „answerback concealed“ a nahraďte ji
jinou odpovědí (původní odpověď ovšem neuvidíte).
ID terminálu {ANSI ID}
Tuto odpověď terminál pošle, když je dotázán na identitu.
Volby klávesnice
Pípnutí (Keyclick)
Je-li nastaveno, při stisknutí každé klávesy se ozve pípnutí (z reproduktorku v klávesnici). Někomu jde takové pípání na nervy
myslím si, že je lépe je mít vypnuté.
Velká písmena {Keylock}
Když je vypnutá klávesa Caps-Lock, písmenové klávesy by měly generovat pouze velká písme-na? Je-li nastaveno {Caps} nebo
„pouze horní znaky“, při stisknutí numerické klávesy a zapnutém Caps-Lock se vypíše číslo. Symbol nad číslem vypíšete, když
současně stisknete klávesu Shift. To je normální režim. Když nastavíte {Shift}, při zapnutém Caps-Lock budou všechny klávesy
psát horní znaky (klávesa 5 vypíše %, aniž byste museli mít stisknutou klávesu Shift, atd.).
Automatické opakování {Repeat}
Přidržíte-li klávesu stisknutou, vypisuje se opakovaně. Tato funkce je vhodná například pro popsání celého řádku stejným
znakem.
Zvonek na okraji
Když je kurzor vzdálen 8 znaků od pravého okraje, zazvoní zvonek (jako na starém psacím stroji). Tato funkce se používá velice
zřídka, neboť téměř všechny editory ukončují řádky automaticky (aniž by bylo nutno zadávat Return).
Přemapování kláves
Při stisknutí klávesy se normálně do počítače posílá její ASCII kód (závisí ovšem i na klávesách Shift a Control). Na některých
terminálech je možné z každé klávesy poslat libovolný kód, tj. nastavením terminálu je možno klávesnici úplně přemapovat. To
může být vhodné pro některé cizí jazyky nebo pro Dvořákovo rozložení klávesnice apod., které umožňuje rychlejší psaní.
Dokonce existuje i software na přemapování klávesnic (i obrazovek) pro terminály, které tuto funkci nemají. V podstatě je to
ovladač zařízení, který používá pseudoterminál, viz kapitola „Mapo-vání znaků: mapchan“.
Klávesa v rohu (pouze Wyse)
Terminály Wyse mají v levém dolním rohu klávesu, kterou můžete nastavit na různé funkce. Bývá označena „Funct“, „Compose
Character“, „Alt“, „Hold“ nebo „Scroll Lock“. Může mít některou z následujících voleb, starší modely ovšem nemusí mít
všechny:
Hold: Nerolovat. Stisknutím zastavíte tok dat (prostřednictvím řízení toku dat) na terminál. Dalším stisknutím tok dat
obnovíte.
Compose: Když tuto klávesu stisknete a následuje stisknutí jiné klávesy, klávesnice vyge-neruje určený počet
předdefinovaných nelatinkových znaků.
Meta: Když kromě této klávesy stisknete ještě další klávesu, v každému bajtu se bit nej-vyššího řádu nastaví na hodnotu
1. Existují modely, kde tato klávesa tento metaefekt uza-mkne??
Funct: Když je klávesa stisknutá při psaní, všechny alfanumerické znaky přicházející z klá-vesnice budou orámovány
hlavičkovým bajtem (SOH) a ukončovacím bajtem (CR).
Kpd Compose: Je-li tato klávesa stisknuta při psaní dekadického čísla na numerické klá-vesnici (následovaného znakem
Enter), pošle se toto číslo v hexadecimálním tvaru??
Numerická klávesnice nebo šipky?
Numerická část klávesnice (převážně numerické klávesy uspořádané do obdélníku v pravé části klávesnice) lze nastavit tak, aby
pro potřebu některých aplikací posílala speciální kódy. Totéž platí i pro šipky. V „normálním“ režimu posílají to, co je na nich
napsáno (anebo v případě šipek obvyklou posloupnost ), v „aplikačním“ režimu jsou to pak speciální řídicí sekvence. V některých
případech existuje i numerický režim „hex“, který je téměř shodný s normálním numerickým reži-mem s výjimkou 6
nenumerických kláves, které posílají písmena A–F. Na numerické klávesnici tedy můžete napsat například „B36F“.
Co znamenají Shift-del a Shift-bs?
Shift+del někdy posílá řídicí znak CAN, Shift+bs (backspace) někdy posílá DEL, záleží na nasta-vení.
Skenovací kódy PC
Řada terminálů může emulovat klávesnici PC tak, že místo ASCII kódů pošle skenovací kódy PC (viz návod Keyboard-andConsole-HOWTO). To se nejčastěji používá ve speciálním víceuživatel-ském systému DOS OS, v běžném DOSu to fungovat
nebude, viz kapitola „Nelinuxové operační systémy“. Linuxový program, který využívá sériový port, by stěží přijal skenovací
kódy. Je-li toto nejnovější verze tohoto návodu, sdělte mi prosím, zda to některé programy umějí. Domnívám se, že to umí
Foxpro. V terminfo musíte definovat smsc a rmcs a pravděpodobně i pctrm.
Když používáte skenovací kódy, nejlepší je používat hardwarové řízení toku dat, protože při soft-warové kontrole dochází ke
konfliktům s některými kódy (??) . Pokud přece jen používáte softwa-rovou kontrolu, musí být typu XPC, neboť pro zapnutí a
vypnutí používá znaky 0x65 a 0x67 a stej-né hodnoty musí být nastaveny jak na terminále, tak i na PC pomocí stty.
Alternativní znaky
Některé klávesy mohou na sobě mít alternativní znaky. Jsou-li nastaveny na „psací stroj“ („typewriter“), posílané hodnoty
odpovídají psacímu stroji. Jsou-li nastaveny na něco jiného, posílají se alternativní znaky.
Význam obdržených řídicích kódů
Automatický nový řádek
{Newline}
V tomto případě „nový řádek“ znamená, že nový řádek začíná na levém okraji běžného řádku. V Linuxu a v C může mít „nový
řádek“ (NL) odlišný význam: řídicí znak line-feed (LF) se také nazývá new-line neboli NL. To proto, že v linuxovém textovém
souboru znamená znak LF „nový řádek začíná zde“, takže je označován NL. Obvykle má znak LF (NL) poslaný na terminál za
násle-dek posun kurzoru dolů o jeden řádek na to místo, kde byl, aniž by se vrátil na začátek tohoto nového řádku.
Je-li nastaven automatický nový řádek, „normální“ situace uvedená výše je zrušená a po přijetí znaku LF z počítače se skutečně
provede fyzický nový řádek. To je přesně to, co v Linuxu potře-bujete. Kromě toho (když je nastaven automatický nový řádek)
klávesa Return (nebo Enter) pošle na počítač posloupnost CR LF (v případě Wyse a VT100, ale jak u VT420??). Vzhledem k
tomu, že v souborech používá Linux znak LF jako značku „nového řádku“, stačí mu poslat jen LF (nikoli tedy CR LF). Volba
„nový řádek“ se tedy používá velice zřídka. Místo toho ovladač impli-citně provede požadované změny. Je to, jako kdybyste
vydali příkaz stty onlcr icrnl. Avšak nemusíte, neboť toto nastavení je implicitní.
Automatický Line Feed {Rcv CR}
Jde pouze o jiný typ „automatického nového řádku“. Když přijde znak CR (carriage return), je při-dán znak LF (line feed) a
výsledkem je zobrazení nového řádku. Vzhledem k tomu, že v Linuxu jsou konce řádků označovány znakem LF, tato volba se
nepoužívá.
Rozpoznání znaků del (pouze Wyse??) a null (prázdný znak)
Je-li tato volba vypnutá, terminál ignoruje znak DEL. Je-li zapnutá, znakem DEL se smaže poslední znak. Prázdné znaky jsou
obvykle v každém případě ignorovány. Oba znaky, DEL i NULL, jsou používány jako výplň, viz kapitola „Výplň“.
Kam směřuje zpracování textů
Zalamování řádků
Nazývá se taktéž „automatické zalamování řádků“. Co se stane, když se při psaní textu narazí na konec řádku (sloupec 80 atd.) a
z počítače nepřichází znak „return“ (nebo podobný)? Je-li nasta-vena volba „line wrap“, zbytek řádku se vypíše na dalším řádku
atd. Jinak se ztratí a na obrazov-ce není vidět. Aplikace by měly tuto situaci zpracovávat korektně (za předpokladu, že terminfo ví,
jak je „line wrap“ nastavený), a to i když „line wrap“ nastavený není. Aplikace by měla buď dlou-hé řádky zalamovat anebo
poskytnout uživateli nějaký jiný způsob, jak si prohlédnout nezobra-zené části řádků (pomocí šipek apod.). Samotné systémové
příkazy (ani některé jiné situace) to ovšem nemusí umět, takže v každém případě je nejlepší mít volbu „line wrap“ nastavenou.
Většina osmdesátisloupcových terminálů zalamuje 81. znak pouze tehdy, když je tisknutelný. To pro případ, že 81. znak poslaný
aplikací je „return“ nebo „newline“, zalomení je provedeno správ-ně a není nutný zásah terminálu.
Rolování
Pohyb řádků nahoru a dolů nazýváme rolování {Scrl}. Existuje i panoramatické rolování, tj. rolo-vání do stran. Při běžném
rolování řádky na horním nebo spodním okraji obrazovky mizí a na opačném okraji (tedy na spodním nebo horním) se objevují
nové. Existují 3 typy rolování: hlad-ké, skokové a celkové. Celkové rolování vlastně ani není rolování, neboť je při něm
nahrazována stará obrazovka novou (i když některé řádky ze staré obrazovky mohou zůstat i na nové). Při sko-kovém rolování
řádky naráz poskočí. U hladkého {Smth} se text pohybuje nahoru nebo dolů stej-nou rychlostí. Je-li rychlost hladkého posuvu
nízká, je možno každý řádek přečíst, dokud je ještě na obrazovce (v pohybu).
Hladké rolování na pomalých terminálech bývalo užitečné, neboť rolující displej bylo možné prů-běžně číst. S vyšší rychlostí
přenosu je skokové rolování tak rychlé, že se při naskakování obra-zovek ztrácí méně času. Vzhledem k tomu, že čtení rolujícího
textu je pomalejší než čtení pevné-ho textu, ve skutečnosti je při hladkém rolování ztráta času vyšší.
Je-li automatické rolování {Autoscrl} zablokované, nový text z počítače musí přicházet takovou rychlostí, aby se objevoval na
horním okraji displeje. Pokud starý text není mazán, nový text se (nesmyslně) míchá do starého. Je-li starý text vymazán, nový
text je mimo kontext, takže je lepší mít automatické rolování aktivované.
Nová stránka?
Stránkování je popsáno v kapitole „Stránky“. Je-li běžná stránka plná (je popsaný poslední řádek), má se začít rolovat, nebo se má
vytvořit nová stránka (přičemž původní stránka zůstane v pamě-ti terminálu )? Je-li nastavena volba {Autopage}, vytvoří se nová
stránka. Vzhledem k tomu, že strán-ky pravděpodobně nepoužíváte, tuto volbu asi vypnete.
Funkční klávesy
Funkční klávesy jsou označeny F1, F2 atd. Na starších terminálech někdy bývaly označeny PF1, PF2 atd., kde „P“ znamenalo
„programovatelná “. Na některých klávesnicích jsou obojí klávesy. Klávesy je možné naprogramovat (předefinovat) tak, že při
stisknutí pošlou uživatelem definova-ný řetězec bajtů. Je možné je také snadno „naprogramovat“ pomocí nastavovací nabídky
{FKey}. Na některých terminálech je možno specifikovat, kam se řetězec pošle. V „normálním“ režimu má stisknutí této klávesy
stejný účinek, jako kdybyste tento řetězec napsali na klávesnici. V „lokálním“ režimu se řetězec pošle na terminál (jako kdyby byl
terminál v lokálním režimu ). Toho lze využít například pro posílání řídicích sekvencí na terminál, když jej chcete zkonfigurovat
určitým způso-bem. Ve „vzdáleném“ režimu se řetězec pošle na sériový port počítače vždy (i když je terminál v lokálním režimu).
Volby blokového režimu
Některé volby náleží pouze k blokovému režimu. Tato volba je účinná, neboť nabízí způsob, jak snížit zatížení počítače pomocí
přenosu velkých celků. Tento způsob je ovšem dosti složitý a není příliš využívaný.
Forms Display
Některé oblasti obrazovky jsou určeny pro text formulářů a jsou chráněny proti zápisu volbou „prot“ {WPRT}. Pomocí voleb lze
znaky v této oblasti zobrazit matně, inverzně {WPRT Rev} nebo mohou být podtržené. {WPRT Intensity} může být nastaveno na
matně, normálně nebo na bílo (tedy neviditelně).
Poslat celý blok?
Má být text chráněný proti zápisu (původní text ve formuláři) poslán na počítač jako přenášený blok? {Send All}. Je text
chráněný proti zápisu chráněný i proti čtení? {Send Erasable}.
Jaká oblast?
Má se poslat celá obrazovka nebo jen rolovaná oblast ? {Send Area}. Má se posílání zastavit, když dojde ke kurzoru? Je-li {Xfer
Term} nastaveno na „cursor“, pošlou se jen data po kurzor.
Ukončení bloku/stránky
Který symbol je nutno připojit k bloku dat, resp. ke konci stránky? K bloku {Blk End}, ke konci stránky {Send Term}.
Zámky
Existuje řada různých typů zámků. Jedním z nich je „locked keyboard“, který používáme při říze-ní toku dat, viz kapitola
„Uzamykání klávesnice“. Dalším je {Feature Lock}, kterým zakážete cent-rálnímu počítači měnit nastavení terminálů
prostřednictvím řídicích sekvencí. Takový zámek ovšem může způsobit nekorektní chování terminálu, neboť ignoruje řídicí
sekvence poslané apli-kačním programem. Všechny nastavovací parametry nelze uzamknout. Pokud k tomu nemáte pádný důvod,
terminál nezamykejte.
Uzamčením funkčních kláves zakážete počítači měnit jejich programové nastavení. Klávesy uzamykejte jen tehdy, když
potřebujete zachovat jejich nastavení.
Spořič obrazovky {Scrn Saver}
Když po určitou dobu terminál nepoužíváte, spořič obrazovky vypne (nebo ztlumí) obrazovku, čímž se prodlužuje její životnost a
šetří se elektrická energie. Obrazovku obvykle oživíte stisknu-tím libovolné klávesy. Vhodné je stisknout například klávesu Shift
apod., neboť klávesa s určitou funkcí může být „provedena“.
Tiskárna
U terminálů Wyse není k dispozici volba {Printer Attached} na zapínání/vypínání tiskárny, neboť ji není nutno zapínat. Pokud
(místo na terminál ) na tiskárnu přece jen pošlete řídicí sekvenci, bude se ignorovat.
Nastavení portu tiskárny je přibližně stejné (obvykle je jednodušší) jako nastavení komunikace na hlavním portu. Tiskárna má
některé specifické volby. Je sériová, nebo paralelní? Je-li paralelní, je nutno tuto skutečnost při nastavování uvést a tiskárnu
připojit na paralelním portu terminálu (pokud jej má). Je nutno po skončení tisku poslat na tiskárnu volbu FF (Form Feed, posun
papíru na začátek nepopsané stránky)? Je-li {Print Term} nastaveno na FF, provede se posun automaticky.
Podrobně o nastavování (konfiguraci) počítače
Konfigurace počítače pro práci s terminály se provádí změnami obsahu konfiguračních souborů. Budete-li mít štěstí, budete
muset změnit pouze jediný soubor, a to /etc/inittab. Změny obvyk-le provádíte editací souboru na konzole (nebo na terminále).
Program getty (v souboru /etc/inittab) Úvod do getty
Aby mohlo po zapnutí počítače přihlášení proběhnout na sériovém portu (resp. na terminálu, který je k němu připojen), do
souboru /etc/inittab je nutno doplnit příkaz getty. Při zadávání z terminálu mohou nastat určité problémy (viz kapitola „Když
spustíte getty z příkazového řádku, programy se zastaví“). Jméno příkazu vzniklo z „GETs a TTY (a terminal) going“. Na každý
termi-nál je nutno vydat samostatný příkaz getty a v každém souboru /etc/inittab je alespoň jeden příkaz getty na konzole. Najděte
jej a příkazy pro terminály vložte za něj. Některé soubory už obsahují příklady příkazů pro textové terminály a jsou označeny jako
komentáře („zakomentová-ny“), takže je stačí „odkomentovat“ (odstranit úvodní znak #) a změnit několik parametrů.
Povolené parametry závisí na konkrétním používaném getty: Pro přímo připojené terminály
jsou nejvhodnější programy getty:
agetty někdy nazývané pouze getty): Nastavení je velice snadné. Nemá konfigurační sou-bory. Viz kapitola „agetty“.
getty součást getty_ps) .
Dva nejvhodnější programy getty pro modemy (nepoužívat pro přímo připojené terminály) jsou:
mgetty: nejlepší pro modemy; použití na terminálech je problematické.
uugetty: pouze pro modemy; součást balíku getty_ps.
Jednoduché getty, když nemáte skutečný textový terminál. Většina uživatelů Linuxu, kteří mají monitor, používá jeden z nich:
1. mingetty
2. fbgettyLinuxové distribuce mohou pro textové terminály obsahovat buď ps_getty nebo agetty. Některé distribuce
neobsahují žádný z nich. Bohužel, často jej nazývají „getty“ a musíte zjistit, který z nich to je, neboť v /etc/inittab mají odlišné
parametry. Distribuce Debian používá agetty (v balíku
utilit ). RedHat používá ps_getty, které naleznete v http://www.redhat.com/swr/i386/getty_ps-2.0.7j-12.i386.html.
Když to jinak nejde, můžete to zjistit ze spustitelného souboru (obvykle v /sbin); ps_getty má v kódu /etc/gettydefs , což vyhledáte
tak, že přejdete do adresáře /sbin a zadáte:
strings getty | grep getty
Je-li getty ve skutečnost agetty, výsledkem příkazu shora nebude nic. Zadáte-li však:
getty -h
měly by se vypsat volby [-hiLmw ].Pokud nemáte vhodný program getty, prověřte ostatní distribuce a pomocí programu alien proveďte konverzi mezi balíčky RPM a Debian. Zdrojový kód si můžete stáhnout z Getty Software(http://ibiblio.unc.edu/pub/Linux/
system/serial/getty/).Nepoužíváte-li řídicí vodiče modemu (když například používáte minimální počet, tj. 3 vodiče: vysílání, příjem a signální zem), musíte to pomocí „lokálního“ příznaku sdělit programu getty. Tvarzávisí na konkrétním použitém
getty.
Getty se po přihlášení ukončí (může ovšem spustit dceřiný proces)
Když se přihlásíte, zjistíte (pomocí top, ps -ax nebo ptree), že proces getty už neběží. Co se s ním
stalo ? Proč se znovu spustí, když ukončíte shell? Zde je odpověď: Když zadáte svoje uživatelské jméno, getty jej zpracuje, vyvolá
přihlašovací program login a předá mu jméno. Proces getty je nahrazen procesem login. Vyžádá si heslo, ověří je a spustí proces
uve-dený v souboru hesel, což je obvykle bash shell. Je-li tomu tak, bash se spustí a nahradí proces login. Poznamenejme, že
jeden proces nahrazuje druhý a proces bash shell je vlastně původně spuštěný procesem getty. Souvislosti si vysvětlíme vzápětí.
Nyní je soubor /etc/inittab nastaven tak, že je-li proces getty ukončen, spustí se znovu. Je to tak uvedeno na řádku getty. Proces
getty je ovšem spuštěn, i když se ukončí procesy shell, resp. login. Proč? Oba tyto procesy nahradily getty jako dceřiné procesy, a
tudíž zdědily vlastnosti usta-vené jejich předchůdcem. Při detailnějším pohledu zjistíte, že procesy, které nahrazují svého předchůdce, mají shodné ID procesu jako původní proces. Bash je tedy vlastně procesem getty, který se maskuje číslem jeho ID. Je-li
ukončen, je vlastně ukončen proces getty (i když ve skutečnosti už neběží). Výsledkem je, že je znovu spuštěn proces getty.
Když se odhlásíte, všechny procesy na sériovém portu jsou ukončeny včetně bash shellu. Totéž se může stát (je-li tato funkce
aktivována), když modem vyšle na sériový port signál k zavěšení linky (změní napětí na DCD). Proces getty tedy obnoví
odhlášení ze systému nebo signál k zavě-šení linky. Tento proces lze spustit vynuceně i tak, že (ručně) zrušíte bash (nebo login)
pomocí klávesy „k“, když se ohlásí na monitoru, nebo pomocí příkazu kill. Pravděpodobně jej budete muset zrušit pomocí signálu
9 (který systém nemůže ignorovat).
Když spustíte getty z příkazového řádku: programy se zastaví
Program getty obvykle spouštíte ze souboru /etc/inittab, nikoli z příkazového řádku. Progra-my běžící na terminále by v takovém
případě mohly být neočekávaně pozastaveny nebo zrušeny. Vysvětlíme si proč (není-li tento důvod pro vás důležitý, můžete přejít
k další kapitole). Když spus-títe getty řekněme na ttyS1 z příkazového řádku jiného terminálu, např. tty1, „řídicím termi-nálem“
programu getty bude tty1, i když ve skutečnosti byl spuštěn z ttyS1. Řídicí terminál programu getty je tedy nesprávný. Jestliže
však bude spuštěn v souboru inittab, řídicím terminá-lem bude ttyS1, což je správné.
I když je řídicí terminál nesprávný, přihlášení na ttyS1 funguje (neboť ttyS1 byl parametrem getty). Standardní vstup a výstup jsou
nastaveny na ttyS1, i když řídicím terminálem zůstane tty1 . Jiné programy, které běží na ttyS1, mohou tento standardní vstup/
výstup (který je připo-jen k ttyS1) zdědit a vše bude v pořádku. Avšak některé programy se mohou chybně pokusit číst ze svého
řídicího terminálu ( tty1), který je nesprávný. Terminál tty1 si může myslet, že tyto pro-gramy jsou spuštěny na pozadí z tty1, takže
pokus o čtení z tty1 (správně by se mělo číst z ttyS1) má za následek zastavení procesu, který se pokoušel číst. (Proces na pozadí
nesmí číst ze svého řídicího terminálu.) Na obrazovce se vypíše zpráva, například „[1]+ Stopped“. V tomto okamžiku jste v pasti,
neboť nemůžete komunikovat s procesem, který se pokouší komunikovat s vámi přes nesprávný terminál. Můžete pochopitelně
přejít k jinému terminálu, proces zrušit atd.
agetty (může se jmenovat i getty)
Příklad řádku z /etc/inittab:
S1:23:respawn:/sbin/getty -L 19200 ttyS1 vt102
S1 je z ttyS1. 23 znamená, že úroveň procesu getty je 2 nebo 3. respawn znamená, že je-li getty (anebo proces, který jej nahradí,
např. bash) zrušen, getty je automaticky obnoven. /sbin/getty je vlastní příkaz. Volba -L znamená Local (ignorují se řídicí signály
modemu). -h (to v příka-zu není) aktivuje řízení toku dat (totéž co stty crtscts). 19200 je rychlost přenosu. ttyS1 znamená /dev/ttyS1
(COM2 v MS-DOS). vt102 je typ terminálu, tato hodnota se nastaví do vnější proměnné TERM . Konfigurační soubor neexistuje.
Po úpravě getty zadejte na příkazovém řádku init q a vypíše se přihlašovací prompt.
Automatická detekce paritních problémů v programu agetty
Program agetty se pokusí o autodetekci nastavení parity v terminále (včetně nezadané parity), k tomu viz kapitola „Osmibitové
datové bajty (plus parita)“. Používáte-li stty k zadávání parity, agetty ji okamžitě zruší, neboť nejdříve potřebuje, aby paritní bit
prošel jako datový bit. To proto, že při zadávání přihlašovacího jména potřebuje zpracovat poslední bit (pravděpodobně paritní),
aby mohl automaticky rozpoznat paritu. Když tedy používáte paritu, aktivujte ji pouze uvnitř tex-tového terminálu a ostatní
ponechte na agetty : Rozpozná paritu a nastaví ji na počítači. Pokud terminál nerozpozná paritu, kterou obdržel, přihlašovací
prompt bude zkomolený, dokud na klá-vesnici nezadáte nějaký znak, z něhož getty dokáže rozpoznat paritu. Zkomolený prompt
odradí nezvané hosty od pokusů přihlásit se, což je jenom v pořádku.
S automatickou detekcí parity bývají občas problémy, neboť jakmile poprvé zadáte přihlašovací jméno, agetty spustí program
login , aby dokončil přihlašování. Bohužel, program login nedo-káže určit paritu. Pokud totiž paritu nedokáže určit ani program
getty , nedokáže ji určit ani login. Selže-li první pokus o přihlášení, login nabídne další pokus atd. (všechny s nesprávně nastavenou
paritou). Případně po větším počtu neúspěšných pokusů o přihlášení (nebo po uply-nutí časové prodlevy) se program agetty spustí
znovu a znovu se odstartují všechny přihlašova-cí posloupnosti. Program getty může při opakovaném spuštění rozpoznat paritu na
druhý pokus a vše bude fungovat, jak má.
Má-li text zadaný na terminále nesprávnou paritu, program login jej nepřečte správně a není možné se přihlásit. Jestliže terminál
podporuje přijatou paritu, na obrazovce budou i nadále nesmyslné znaky. Pokud getty neurčí správně paritu, obvykle před
promptem vypíše soubor /etc/issue, takže na obrazovce přibudou další zkomolené znaky.
Proč není getty schopen rozpoznat paritu podle prvního zadaného znaku? Zde je příklad: Před-pokládejme, že přijde osmibitový
bajt s paritním bitem 0 (bit nejvyššího řádu) a s lichým počtem jedniček. Jaká je to parita? Lichý počet jedniček by nasvědčoval
liché paritě. Ale co když je to osmi-bitový znak bez parity? To zatím není možné určit, avšak alespoň jsme vyloučili sudou paritu.
Roz-poznávání parity je tedy vylučovacím procesem.
Je-li další zadaný bajt podobný prvému a také pouze vyloučí sudou paritu, stále ještě není možné určit paritu. Tato situace se může
opakovat donekonečna, a když změníte přihlašovací jméno, při-hlašování selže pouze v ojedinělých případech. Najde-li agetty
paritní bit roven 1, bude mít za to, že jde o paritní bit, nikoli nejvyšší bit osmibitového znaku. Předpokládá tedy, že v
přihlašovacím jméně nepoužíváte metaznaky (s nejvyšším bitem rovným 1), tedy že jméno se skládá pouze ze
znaků ASCII. Při přihlašování se také můžete zacyklit. Předpokládejme, že jako uživatelské jméno zadáte jen jedno nebo dvě
písmena a ukončíte je znakem return (enter). Pokud by tato písmena nestačila na určení parity, login se spustí ještě před jejím
určením. Občas k tomuto problému dochází, když při prvním spuštění agetty terminál není zapnutý a připojený.
Když byste se tedy zacyklili, musíte několikrát za sebou stisknout klávesu enter, dokud se nevy-píše přihlašovací prompt
programu getty. Jinou možností je pár minut počkat, až uplyne časová prodleva. Pak se programem getty na obrazovce vypíše
přihlašovací prompt tohoto programu a můžete se zkusit znovu přihlásit.
8bitové datové bajty (plus parita)
Tuto paritu bohužel agetty určit neumí. Od konce roku 1999 nemá volbu na zablokování auto-matickou detekci parity, proto určí
paritu nesprávně. Následkem toho bude přihlašování zmatené a parita bude nastavena nesprávně. Používání parity s osmibitovými
datovými bajty je tedy neschůdné.
getty (součást getty_ps)
(Většina je převzatá ze starého návodu k sériovým terminálům od Grega Hankinse.) U tohoto programu je potřeba přidat položky
jak do konfiguračního souboru, tak i do souboru /etc/inittab. Zde jsou některé vzorové položky, které přidáte do konfiguračního
souboru /etc/gettydefs: # 38400 bps Dumb Terminal entry DT38400# B38400 CS8 CLOCAL # B38400 SANE -ISTRIP CLOCAL #@S @L
login: #DT38400
# 19200 bps Dumb Terminal entry DT19200# B19200 CS8 CLOCAL # B19200 SANE -ISTRIP CLOCAL #@S @L login: #DT19200
# 9600 bps Dumb Terminal entry DT9600# B9600 CS8 CLOCAL # B9600 SANE -ISTRIP CLOCAL #@S @L login: #DT9600
Všimněte si, že DT38400, DT19200 atd. jsou jen návěští a musí se shodovat s návěštími
v /etc/inittab.Pokud byste chtěli, program getty může při přihlašování vypsat různé informace. V příkladech,které uvádím, je to
jméno systému a sériová linka. Lze přidat i další informace:
@B The current (evaluated at the time the @B is seen) bps rate.@D The current date, in MM/DD/YY.@L The serial line to which getty is
attached.
@S
The system name.
@T
@U
The current time, in HH:MM:SS (24-hour).
The number of currently signed-on This is
users.
a
count of the number of entries in the /etc/utmp file that have a non-null ut_name field.
@V The value of VERSION, as given in the defaults file. Samotný znak „@ “ vypíšete tak, že
zadáte „ \@“ nebo „@@ “. Po skončení editování souboru /etc/gettydefs můžete ověřit syntax pomocí: linux# getty -c /
etc/gettydefs
Přesvědčte se, zda v systému nejsou pro sériový port, k němuž jsou terminály připojeny, jiné kon-figurační soubory programů
getty a uugetty (např. /etc/default/{uu}getty.ttyS N nebo /etc/conf.{uu}getty.ttySN), které by mohly ovlivnit činnost getty na terminále.
Pokud jsou, odstraňte je.
Proveďte změny v souboru /etc/inittab tak, aby program getty běžel na sériovém portu (údaje v souboru nahraďte údaji, které
odpovídají vašemu prostředí – port, rychlost, implicitní typ termi-nálu):
S1:23:respawn:/sbin/getty ttyS1 DT9600 vt100 Restart init: linux# init q
V tomto okamžiku už by se vám měl na terminále objevit přihlašovací prompt. Možná budete ještě muset přivolat pozornost
terminálu stisknutím klávesy return.
mgetty
Písmeno „m“ na začátku znamená „modem“. Tento program je primárně určen pro modemy a má--li být provozován na terminále
(pokud nevyužíváte hardwarové řízení toku, jež ovšem obvykle vyžaduje kabel zhotovený na zakázku), od poloviny roku 2000
musí být rekompilován. Doku-mentace přímo připojených terminálů viz kapitola „Přímé“ v manuálu mgetty.texi.
Příklad konfigurace pro terminál viz poslední řádky souboru /etc/mgetty/mgetty.config. Dokud neřeknete „toggle-dtr no“, bude si
myslet, že máte modem a bude negovat pin DTR na počítači v marných pokusech o resetování neexistujícího modemu. Na rozdíl
od jiných getty se mgetty nepřipojí k terminálu, dokud někdo nestiskne některou klávesu tohoto terminálu, takže do té doby
budou programy top a ps vypisovat otazník (?). Logovací soubory v adresáři /var/log/mgetty/ mohou obsahovat několik varovných
hlášení, která se vztahují pouze k mode-mům a která můžete ignorovat.
Příklad, jak může vypadat jednoduchý řádek v souboru /etc/inittab:
s1:23:respawn:/sbin/mgetty -r ttyS1
Příkazy stty a setserial
K nastavení sériových portů slouží příkazy stty a setserial. Některá (nebo i všechna) potřebná nastavení stty lze provést pomocí
programu getty a není nutné použít příkaz setserial, resp. není nutné použít žádný z obou těchto příkazů. Tyto dva příkazy (stty a
setserial) nastavují sériový port z různých hledisek. Většinu nastavení provádí stty, zatímco setserial má na starosti nastave-ní na
nejnižší úrovni, např. přerušení a adresy portů. Tato nastavení „uložíte“ tak, že tyto příkazy musí být součástí určitých souborů
(shellových skriptů), jež jsou provedeny při každém spuštění systému. Distribuce Linuxu převážně obsahují skripty s příkazy
setserial, méně často pak s pří-kazy stty, neboť jsou potřebné jen zřídkakdy.
Setserial
Tuto kapitolu naleznete ve třech návodech: Modem, Sériové připojení a Textové terminály. Poně-kud se od sebe liší. Máte-li
laptop (PCMCIA), nepoužívejte příkaz setserial, dokud si neprostu-dujete kapitolu „Laptopy: PCMCIA“.
setserial je program, který uživatel používá ke komunikaci s ovladačem sériového zařízení. Máte-li počítač vybaven jedním nebo
dvěma sériovými porty, které patří ke standardnímu vyba-vení PC, tento program obvykle nebudete potřebovat. Současná jádra
systémů dokonce umějí automaticky rozpoznat i více sériových portů. Výjimkou je případ, když máte starý sériový port ISA s
propojkami, nebo když jádro systému (verze 2.2 a starší) nedokáže tyto přídavné sériové porty PCI ani rozpoznat, ani nastavit.
setserial umožňuje komunikaci se sériovým softwarem. Existuje ještě jeden program, který se
jmenuje stty a který komunikuje se sériovým portem. Používá se k nastavení rychlosti portu apod. Program setserial zajišťuje
konfiguraci sériového portu nižší úrovně, která souvisí s IRQ (např. 5), adresami portů (např. 3f8) apod. Hlavním problémem
tohoto programu je, že neumí nastavit resp. zkonfigurovat hardware sériového portu: Neumí hardwarově nastavit IRQ ani adresy
portů. Navíc, když zdánlivě ohlašuje konfiguraci hardwaru, hlášení je někdy chybné, neboť hardware nezkoumá automaticky,
nýbrž až na základě zvláštního pokynu. Dokonce ani nevyhledává nové typy sběrnic a některý hardware vůbec nenajde. Přestože
jinak provede tento program většinu nastavení správně, problémy se zprovozněním sériového portu mohou naznačovat, že
nastavení je provedeno nesprávně.
Dříve, když IRQ a adresy portů byly nastaveny propojkami přímo na sériových kartách, program setserial se používal k tomu, aby
sdělil ovladači, jak jsou nastaveny. Nyní, když se k detekci nastavení sériových portů bez propojek používají metody zásuvných
modulů, program setserial se už v podstatě nepoužívá, pokud nenastanou nějaké problémy anebo pokud nepoužíváte starý
hardware. Navíc, je-li konfigurační soubor používaný programem setserial nesprávný, je s ním potíž. V takovém případě ani nemá
smysl zjišťovat programem setserial konfiguraci portu, neboť by pouze zopakoval nesprávnou informaci uloženou v
konfiguračním souboru.
Program setserial lze někdy využít k vyhledání sériového portu. Musíte však k tomu znát adre-su portu a zadat správné volby. V
případě současných portů je lepší hledat sériové porty meto-dami zásuvných modulů.
Jméno setserial je tedy pro tento program poněkud nevhodné, neboť nenastavuje ani V/V adre-su, ani IRQ v hardwaru, pouze je
softwarově „nastaví“ v ovladači. Ovladač mu pak naivně věří, i když je to v rozporu s údaji, které získal metodou zásuvných
modulů. Špatné je, že při takovém konfliktu ani nevypíše varovné hlášení. Vzhledem k tomu, že ovladač zařízení je považován za
součást jádra, ve většině dokumentace se používá slovo „jádro“ bez jakékoli zmínky o tom, že je řeč o sériovém ovladači.
Některé distribuce (a verze) jsou nastaveny tak, že program setserial je v době zavádění systému spuštěn inicializačním skriptem
(který je v adresářovém stromě /etc ). Avšak konfigu-rační soubor používaný tímto skriptem může být buď ve stromě /etc nebo /var .
Chcete-li set-serial spouštět při zavádění systému, budete v některých případech muset provést ještě jeden úkon. Program setserial
nebude fungovat bez sériové podpory vestavěné v jádru systému nebo zavedené jako modul. Při pokusu o spuštění programu
setserial může být modul zave-den i automaticky.
Program setserial sice může být nastaven tak, aby zjišťoval hardwarové adresy V/V portů a pokusil se určit typ UART a IRQ, v
tomto ohledu však existují určité omezení, viz kapitolu „Zjiš-ťování“. Program neumí nastavit IRQ ani hardwarovou adresu portu
sériových portů zásuvných modulů a PCI (zatímco metodou zásuvných modulů to možné je). Také neumí přímo číst data
zásuvných modulů uložená v konfiguračních registrech v hardwaru. Avšak vzhledem k tomu, že ovladač umí přečíst tyto registry
a program setserial vám řekne, co si ovladač myslí, může to být správně. Anebo vám může říct, co program předtím (a
pravděpodobně chybně) řekl ovladači. Neexistuje způsob, jak se to bez dalších testů dozvědět.
Sériový ovladač (pro jádro Linuxu 2.4+) hledá několik „standardních“ sériových portů staršího typu, zásuvných modulů na
sběrnici ISA, a všechen podporovaný hardware portů na sběrnici PCI.
Najde-li porty správně, není nutno použít program setserial. Ovladač nezjišťuje zděděná IRQ, může je mít nesprávná a nemusí
zjistit nastavení starých sériových portů provedené propojkami na kartě.
Kromě manuálových stránek programu setserial zkuste také získat informace z /usr/doc/set-serial... , resp. /usr/share/doc/setserial. Tam
byste měli nalézt konkrétní provedení pro-gramu setserial ve vaší distribuci Linuxu. Program samotný se sice chová ve všech
distribucích stej-ně, rozdílné jsou však skripty, konfigurace těchto skriptů (včetně automatické konfigurace) a jména a umístění
těchto skriptů, vše závisí na konkrétní distribuci. Je-li sériový port zásuvný, informace naleznete v jiných návodech (Plug-andPlay, Serial).
Zrušení sériového modulu
Je-li sériový modul zrušen, změny provedené programem setserial ovladač zapomene. Ve skriptu (resp. v některém pracovním
souboru tohoto skriptu) však mohou zůstat uchovány pří-slušné distribuce, které skript při opětovném zavedení modulu obnoví.
Zadání příkazu setserial
Zopakujme si, že program setserial neumí v hardwaru nastavit ani V/V adresy, ani IRQ. Nasta-vuje je buď software zásuvných
modulů (spouštěných ovladačem) nebo propojky u starších séri-ových portů. Dokonce ani když prostřednictvím setserial zadáte
V/V adresu nebo IRQ ovlada-či, nenastaví je a předpokládá, že už byly nastaveny. Zadáte-li nesprávné hodnoty, sériový port
nebude fungovat správně (pokud vůbec).
Znáte-li u starších portů V/V adresu a neznáte IRQ, můžete požádat setserial, aby se IRQ pokusil
určit. Když zadáte setserial bez parametrů, vypíše se seznam všech přípustných příkazů, avšak bezjednopísmenových voleb (např. v jako verbose, tj. upovídaný), které se jinak běžně používají.Všimněte si, že adresu v programu setserial V/V nazýváme „port“.
Zadáte-li:
setserial -g /dev/ttyS*
získáte informace o konfiguraci ovladače na portech. V mnoha případech bude u portů připsané něco, co na první pohled vypadá
jako chybné IRQ a chybná adresa. Pokud však také bude výpis obsahovat text: „ UART: unknown“, celý řádek ignorujte, neboť na
uvedené adrese není sériový port.
Přidáte-li k volbě -g volbu -a, získáte více informací, i když je nejspíš stěží někdo bude potřebo-vat (anebo jim vůbec rozumět),
neboť implicitní nastavení obvykle funguje správně. Hardware je obvykle nastaven stejně, jako hlásí setserial. Máte-li však
problémy, je velmi pravděpodobné, že příčina spočívá v programu setserial. Ve skutečnosti můžete spustit setserial a přiřadit mu
zcela fiktivní V/V adresu portu, libovolné IRQ a typ uart, jaký si přejete. Když zadáte setserial ... příště, tyto smyšlené hodnoty se
vypíší. Navíc, když je vypíšete (v horní části obrazovky) příka-zem scanport (Debian), oficiálně si je zaregistruje jádro systému.
Když se pokusíte tento port použít, ovladač sériového portu pochopitelně bude fungovat nesprávně (pokud vůbec). Když tedy
programu setserial zadáváte parametry, je možné „úplně všechno“. Tedy, téměř všechno. Při-řadíte-li portu bázovou adresu, která
už je přiřazená (např. 3e8), nemusí ji přijmout. Zadáte-li však 3e9, přijme ji. Bohužel, ve skutečnosti je adresa 3e9 už přiřazená,
neboť je v rozsahu začínajícím bázovou adresou 3e8. Z tohoto příběhu plyne ponaučení, že přiřazujete-li prostředky programem
setserial, musíte se vždy přesvědčit o správnosti použitých údajů.
Konfigurační soubor
Přiřazení provedená programem setserial jsou po vypnutí počítače ztracená, avšak při opětovném zapnutí počítače je možné je
pomocí konfiguračního souboru obnovit. V novějších verzích mohou být veškeré změny provedené programem setserial
automaticky ukládány do konfiguračního sou
boru a tento program je může později znovu použít. Uložení konfiguračního souboru závisí na konkrétní distribuci. Zkuste se
podívat do startovacích skriptů ve stromu /etc/ (např. /etc/init.d/ nebo /etc/rc.d/) a přečíst si skript jménem „seri-al“ nebo setserial
nebo tak nějak podobně. V něm se dozvíte, kde je uložen (jsou uloženy) kon-figurační soubor(y). V distribuci Debian lze tento
konfigurační soubor použít čtyřmi možnými způ-soby:
Tento soubor vůbec nepoužívejte. Sériový ovladač si při každém spuštění systému nalez-ne porty sám a program
setserial se vůbec nespustí (volba „jádro“).
Uložte do konfiguračního souboru to, co program setserial ohlásí při prvním vypnutí systému. Poté už v konfiguračním
souboru neprovádějte žádné změny, a to ani tehdy, když někdo na příkazovém řádku zadá příkaz setserial a pak systém vypne
(volba „jednorá-zové uložení“).
Při každém vypnutí systému uložte do konfiguračního souboru vše, co zjistí program set-serial (volba „automatické
ukládání“).
Konfiguraci nastavte v konfiguračním souboru ručně pomocí editoru. Neprovádějte žádné
automatické ukládání konfiguračního souboru („manuální“ volba). V dávných dobách (asi před rokem 2000), když ještě
neexistovaly konfigurační soubory, se kon-figurace prováděla ručně (tzv. pevné kódování) přímo ve skriptu, který spouštěl
program setserial . Podrobnosti viz kapitola „Edice skriptu (před verzí 2.15)“.
Zjišování
Pomocí programu setserial zjišťujte port pouze v případě, když tušíte, že byl aktivován (pomo-cí metod zásuvných modulů,
BIOSem, propojkami apod.). Jinak jej setserial nikdy nenajde, neboť jeho adresa neexistuje. Problém je, když software hledá port
na určité V/V adrese. Ještě před zjišťováním pomocí setserial lze spustit příkaz scanport (Debian), čímž zjistíte všechny možné
porty naráz. Získáte hrubý odhad toho, co je na portech, avšak nikoli IRQ, což by ovšem pro začá-tek mělo stačit. Počítač sice
může zhavarovat, avšak v mém případě to funguje dobře. Jiné distri-buce než Debian pravděpodobně program scanport
nepodporují. Existuje nějaký jiný skenovací program?
Program setserial s příslušnou volbou může (na dané V/V adrese) zjistit sériový port, avšak musíte znát správnou V/V adresu.
Když například chcete zjistit port na /dev/ttyS2, program bude zkoumat tu adresu, o níž si myslí, že je na ní ttyS2 (2F8). Sdělíte-li
programu setserial, že je ttyS2 na jiné adrese, bude zkoumat tuto adresu, atd.
Účelem tohoto zjišťování je určit, zda je na příslušné adrese uart, a když ano, jaké má IRQ. Pro-gram setserial používejte až jako
poslední možnost, neboť existují rychlejší způsoby testování, např. wvdialconf k detekci modemů, sledování zpráv při zavádění
systému nebo příkazy pnpdump --dumpregs a lspci -vv. Chcete-li však přece jen použít program setserial, zadejte například:
setserial /dev/ttyS2 -v autoconfig
Když jsou výsledkem zprávy, které říkají, že typ uart je např. 16550A, vše je v pořádku. Když však vypisují typ „unknown“, na
této V/V adrese pravděpodobně není sériový port. Nicméně, i tak může být na této adrese sériový port, protože některé levné
sériové porty se neidentifikují správně.
Kromě automatického zjišťování typu uart umí program setserial automaticky zjišťovat IRQ, avšak nikoli vždy korektně. Stává
se, že nejdřív poskytne nesprávné irq, avšak když příkaz zopakujete, už najde správné irq. Ve verzích >= 2.15 může být výsledek
posledního zjišťování automaticky uložen do konfiguračního souboru dané distribuce, např. v případě Debian jsou to /etc/
serial.conf nebo /etc/sysconfig/serial nebo /var/lib/setserial/autoserial.conf. Při dalším spuště-ní systému se použijí.
Může se stát, že dva sériové porty budou mít v hardwaru nastavenou stejnou V/V adresu. To pochopitelně na sběrnici ISA není
povolené, avšak stává se to. Zjistí se pouze jeden sériový port, i když ve skutečnosti existují dva. Mají-li však různá IRQ,
výsledkem zjišťování může být IRQ =0. V mém případě, když jsem chtěl pomocí setserial přiřadit IRQ fiktivní hodnotu, to tak
dopadlo.
Konfigurace v průběhu spouštění systému
Zatímco program setserial může být spuštěn inicializačním skriptem, před zaváděním sériové-ho modulu (anebo když jádro spustí
vestavěný sériový ovladač zakompilovaný do jádra) běží něco, co se podobá programu setserial. Sledujete-li na obrazovce zprávy
vypisované při spouš-tění systému, vypadá to, jako by program běžel dvakrát. Ve skutečnosti je tomu tak.
Týká-li se první zpráva staršího sériového portu, vypsaná IRQ mohou být nesprávná, neboť pro-gram nezjišťuje IRQ. Vypíše-li se
druhá zpráva o sériových portech, údaje mohou být převzaty například ze skriptu /etc/init.d/setserial. Obvykle se žádné zjišťování
neprovádí a údaje
o nastavení hardwaru jsou nesprávné. Pouze jsou vypsána konfigurační data uložená v konfigu-račních souborech. Původní
metoda (před verzí setserial 2.15) spočívala v ručním zápisu dat přímo do skriptu.
Zavádí-li jádro sériový modul (anebo je ekvivalent tohoto modulu vestavěný v jádru), detekují se všechny podporované porty
zásuvných modulů. U starších portů (k nimž nejsou připojeny zásuv-né moduly) se provádí automatická detekce pouze ttyS{0-3}
a ovladač je nastaven tak, aby pou-žíval pouze IRQ 4 a 3 (bez ohledu na nastavení IRQ v hardwaru). Neprovádí se žádné
zjišťování IRQ, avšak je možné je provést ručně. Nastavení naleznete v hlášeních vypisovaných při zavádě-ní systému ve stejné
podobě, jak je vypisuje program setserial.
Chyby v IRQ mohou být opraveny programem setserial spuštěným ze skriptu (může být spuš-těn i z jiných důvodů). Bohužel,
jsou-li v něm IRQ uvedena nesprávně, jádro systému je převez-me. Tento soubor je obvykle součástí inicializace prováděné při
spouštění systému. Zda se pro-vádějí či nikoli, závisí na konkrétním nastavení a na úrovni běhu.
Než začnete upravovat konfigurační soubor, nejdříve byste měli příkaz setserial ve změněné podobě vyzkoušet na příkazovém
řádku. Někdy se změny provedené tímto příkazem při vypíná-ní systému automaticky uloží do souboru, např. do /etc/serial.conf
(nebo autoserial.conf nebo serial). Takže pokud jste odstranili chybu a systém je v pořádku, není nutno provádět v konfiguračním
souboru žádné změny. Viz kapitola „Konfigurační metody“.
Edice skriptu (ve verzích starších než 2.15)
Popíšeme si situaci před verzí programu setserial 2.15 (1999). Cílem bylo ve stromě /etc modi-fikovat (případně vytvořit) skript,
který spustí program setserial při zavádění systému. Většina distribucí takový skript obsahuje (nemusí však být ve stromě /etc).
Před verzí 2.15 (1999) byla tedy situace jednodušší, stačilo změnit skript. K programu setserial nee-xistovaly žádné konfigurační
soubory setserial apod. Bylo nutno najít soubor, který spouštěl set-serial při zavádění systému a změnit jej. Pokud neexistoval,
museli jste si jej vytvořit (anebo při-dat příkazy do souboru, který se spouštěl při startu systému). Pokud už takový soubor
existoval, býval umístěn někde ve stromě /etc . Avšak Redhat <6.0 jej měl uložený v adresáři /usr/doc/setserial/ a teprve před
použitím jej bylo nutno přemístit do adresáře /etc.
Dříve se běžně používal skript /etc/rc.d/rc.serial. Distribuce Debian používala soubor /etc/rc.boot/0setserial . Také se používal soubor /
etc/rc.d/rc.local , avšak ten se nespouštěl dostatečně brzy. Vypisovalo se hlášení, že se nějaký proces pokouší otevřít sériový port
ještě před tím, než byl spuštěn rc.local, což vedlo k chybě komunikace. Později byl tento soubor umístěn v /etc/init.d/, avšak nebyl
určen k tomu, aby se v něm prováděly změny.
Jestliže takový soubor existoval, pravděpodobně obsahoval řadu „zakomentovaných“ příkladů. Pokud jste některé z nich
„odkomentovali “ (odstranili příznaky komentářů) a upravili je, mohlo se vám podařit nastavit je správně. Bylo důležité, abyste v
programu setserial použili správnou cestu a platná jména zařízení. Soubor jste si mohli vyzkoušet „ručně“ (stačilo zadat jeho
jméno jako superuživatel) a zjistit, zda funguje, jak má. Takové otestování bylo mnohem rychlejší než opako-vané zavádění
systému.
Od verzí >= 2.15 (za předpokladu, že distributor implementoval změny, Redhat to nejprve neu-dělal) může být provádění těchto
změn složitější, neboť soubor, který spouští program setserial při zavádění systému, tj. /etc/init.d/setserial nebo podobně, nebyl
určen k tomu, aby se v něm prováděly změny. Viz kapitola „Konfigurační metody pomocí /etc/serial.conf“ atd.
Příklad řádku v takovém skriptu:
/sbin/setserial /dev/ttyS3 irq 5 uart 16550A skip_test
nebo, pokud chcete, aby setserial automaticky určoval uart a IRQ pro ttyS3, příkaz by mohl vypadat třeba takhle:
/sbin/setserial /dev/ttyS3 auto_irq skip_test autoconfig
Toto se provedlo pro všechny sériové porty, které měly být konfigurovány automaticky pomocí jména, které na počítači skutečně
existuje. V některých případech to nefungovalo, příčinou byl hardware.
Konfigurační metody pomocí /etc/serial.conf atd.
Před verzí setserial 2.15 (1999) se konfigurace tohoto programu prováděla ručně, a to tak, že se upravil skript, který spouštěl
program setserial při zavádění systému. Viz kapitola „Edice skriptu (před verzí 2.15)“. Metoda byla jednoduchá a jasná, avšak
byla změněna na něco neskutečně slo-žitého. Skript a konfigurační soubor jsou dva různé soubory. Skript zůstává nezměněn,
přičemž příslušná data získává z konfiguračního souboru, např. /etc/serial.conf (nebo /var/lib/set-serial/autoserial.conf ).
Navíc, někdy ani není nutné měnit soubor serial.conf (nebo podobný), protože příkaz setserial zadaný z příkazového řádku může
provést příslušnou změnu souboru serial.conf automaticky. Takto to bylo uděláno proto, aby nebylo nutné editovat soubory kvůli
tomu, co program setseri-al nastavuje (nebo mění) před každým zaváděním systému.
Často se stává, že když vypínáte systém, skript, který spouští program setserial při zavádění systé-mu, je spuštěn znovu, avšak
tentokrát provede pouze „ukončovací“ část své činnosti, která říká: Pomocí programu setserial zjisti okamžitý stav programu
setserial a tento údaj ulož do konfigu-račního souboru, např. serial.conf . Když tedy spustíte program setserial, aby změnil soubor
serial.conf, nezmění jej hned, nýbrž až (a pokud) normálně vypnete systém.
Nyní už asi tušíte, co se může stát. Předpokládejme, že nevypnete systém normálně (vypadne proud apod.) a změny se neuloží.
Anebo předpokládejme, že experimentujete s programem set-serial a na závěr jím zapomenete obnovit původní stav (nebo
obnovíte původní stav špatně). Pak se vaše „experimentální“ nastavení uloží. A nejhorší je, že nevíte-li, které volby jsou
nastaveny v konfiguračním souboru, nevíte ani, co se může stát. V distribuci Debian (a možná i v jiných distribucích) existuje
jedna volba nazvaná „AUTOSAVE-ONCE“, která uloží pouze změny prove-dené příkazem setserial poprvé.
Je-li nastavena volba „###AUTOSAVE###“ a ručně změníte soubor serial.conf, tyto změny se neu-chovají, neboť při vypnutí
systému je soubor uveden do původního stavu. Změny souboru seri-al.conf při vypínání systému lze zablokovat tak, že z prvního
řádku souboru serial.conf odstraní-te příkaz „###AUTOSAVE###“ (nebo podobný). Dříve byl v distribuci Debian příkaz
„###AUTOSAVE###“ z prvního řádku po prvním vypnutí po instalaci odstraněn automaticky. Aby byl účinek tohoto příkazu
zachován, byla vytvořena volba „AUTOSAVE-ONCE“, která pouze pro-vede uložení, když je systém vypínán poprvé (po
instalaci nebo aktualizaci programu setserial ).
Soubor, z něhož se obvykle spouští program setserial při zavádění systému (v souladu s konfi-guračním souborem), je nyní /etc/
init.d/setserial (Debian) nebo /etc/init.d/serial (Redhat) atd., který by však neměl být měněn. Chcete-li, aby byl ve verzi 2.15 v
distribuci Redhat
6.0 setserial spouštěn při zavádění systému, musíte přemístit soubor /usr/doc/setserial2.15/rc.serial do adresáře /etc/init.d/. Port zablokujete tak, že jej pomocí setserial nastavíte na „uart none“, což nebude uloženo. Soubor /etc/serial.conf bude pravděpodobně mít pro každý port jeden příkazový řádek s parametry umístěnými za příkazem setserial.
Nepoužíváte-li automatické ukládání, můžete editovat soubor /etc/serial.conf ručně.
Aby se stávající nastavení provedené programem setserial uložilo do konfiguračního souboru (serial.conf) bez vypínání systému,
proveďte tytéž úkony, které provádíte při normálním vypnu-tí systému: Spusťte skript /etc/init.d/{set}serial stop . Příkaz „stop “ uloží
stávající konfigu-raci, avšak sériové porty budou normálně fungovat dál.
Někdy lze při vypínání systému obě konfigurační metody, tedy starou a novou, kombinovat, avšak doufám, že při spouštění
systému funguje jen jedna. Debian si značí staré soubory pomocí „...pre-2.15“.
IRQ
Implicitně budou mít ttyS0 a ttyS2 číslo IRQ 4 a ttyS1 a ttyS3 budou mít IRQ 3. Zatímco sdí-lení sériových přerušení (používaná v
běžících programech) je na sběrnici PCI v pořádku, na sběr-nici ISA není povoleno, pokud: 1. nemáte jádro 2.2 nebo lepší, 2.
neprovedli jste kompilaci s pod-porou tohoto jádra a 3. tuto funkci nepodporuje sériový hardware. Viz Návod k sériovým rozhraním, Sdílení přerušení a Jádra 2.2+.
Máte-li pouze dva sériové porty ttyS0 a ttyS1, je všechno v pořádku, neboť u neexistujících zařízení nemůže dojít ke konfliktu přerušení.Přidáte-li starý interní modem (bez zásuvných modulů) a ponecháte ttyS0 a ttyS1, měli
byste sepokusit nalézt nepoužité IRQ a nastavit je na sériovém portu (nebo na modemové kartě) a pak jejpomocí programu
setserial přiřadit k ovladači zařízení. Není-li IRQ 5 použito pro zvukovou kartu,lze je použít pro modem.
Laptopy: PCMCIA
Používáte-li laptop, informace o sériové konfiguraci získáte v Návodu k PCMCIA. V případě séri-ových portů na základní desce
se program setserial používá stejně jako na běžném PC. Avšak u karet PCMCIA (např. u modemů) se věci mají jinak. Program
setserial by se měl v konfiguraci systému PCMCIA spouštět automaticky, takže jej nemusíte spouštět. V opačném případě (např.
při spuštění skriptem nebo souborem /etc/serial.conf) by mohly nastat problémy. Nastavení karet PCMCIA by nemělo být
automaticky ukládáno do serial.conf (což však Debian do verze 2.15-7 dělal). Konfiguraci karet PCMCIA pomocí setserial
pochopitelně zjišťovat můžete.
Stty
Program stty provede podstatnou část konfigurace sériových portů, avšak vzhledem k tomu, že to provádějí i aplikační programy
(a také program getty), není nutné používat stty příliš často. Hodí se, když nastanou nějaké problémy nebo když potřebujete zjistit
nastavení. Momentální nastavení zkuste zjistit tak, že na terminále, resp. na konzole, zadáte stty -a. Také když zadáte tento příkaz
bez volby -a (all), získáte krátký výpis, v němž je uvedeno, čím se nastavení liší od standardního. Také se nesnažte naučit všechna
přípustná nastavení, pokud se nechcete stát histo-rikem sériového připojení, neboť řada nastavení se týká pomalých
předpotopních terminálů ze 70. let minulého století. Většina implicitních nastavení bude fungovat.
Program stty je podrobněji popsán v manuálových stránkách a v informačních stránkách. Zadejte man stty nebo info stty . Zatímco program setserial pracuje pouze se skutečnými sériovými porty, program stty se použí-vá jak pro
sériové porty, tak i pro virtuální terminály, např. pro standardní linuxové textové roz-hraní na monitoru. Řada nastavení stty zde
nemá žádný význam. Např. změna přenosové rych-losti se neprojeví vůbec nijak.
Program stty konfiguruje například tyto položky: rychlost (bity/s), parita, bity/bajt, počet stop bitů, odstranění 8. bitu?, řídicí
signály modemu, řízení toku dat, přerušovací signály, značky konce řádku, změna malá/velká, výplň, zvukový signál při přeplnění
buferu?, echo psaného textu na obrazovce, povolení úlohám na pozadí, aby mohly psát na terminál?, definice speciálních (řídicích) znaků (např. definice přerušovací klávesy). Další podrobnosti naleznete v manuálových a informačních stránkách. Také se
můžete podívat do manuálových stránek termios, které pokrý-vají stejnou množinu voleb, avšak (zhruba od poloviny roku 1999)
také informace, které v manu-álových stránkách stty nenaleznete. Používání některých speciálních znaků viz kapitola „Speciál-ní
(řídicí ) znaky“.
Některé implementace programu getty (např. getty_ps) mají v konfiguračním souboru /etc/get-tydefs příkazy, které byste očekávali
spíše v konfiguračních souborech stty. Někdy může stačit k nastavení pouze příkaz getty na příkazovém řádku i bez
konfiguračního souboru, takže nepo-třebujete stty.
Je možné psát programy v C, které mění konfiguraci stty apod. Seznámíte-li se s dokumentací některých těchto programů, zajisté
to přispěje k lepšímu pochopení příkazu stty (a příslušných parametrů). Návod k sériovému programování může být užitečný,
avšak je poněkud zastaralý. Manuálové stránky: termios obsahuje popis struktury (typu termios) v jazyce C, která ukládá konfiguraci stty do paměti počítače. Mnohá jména příznaků ve struktuře C jsou téměř shodná (a mají stejný význam) jako parametry
příkazu stty.
Volby pro řízení toku
K nastavení hardwarového řízení toku dat používejte „crtscts“. Pro softwarové řízení toku existují
3 nastavení: ixon, ixoff a ixany. Nastavení ixany: zejména pro terminály. Pozastavené řízení toku obnovíte stisknutím
libovolnéklávesy. Zastavíte-li rolování klávesou Stop Scroll (nebo podobnou), obnovíte je stisknutím libo-volné klávesy. Obvykle
ovšem nejčastěji používáte klávesu Scroll Lock.
Nastavení ixon: Aktivuje naslouchání portu Xoff, a když přijde, přenos se zastaví. Podobně se znakem Xon přenos obnoví.Nastavení ixoff: Aktivuje port, aby na přenosovou linku poslal signál Xoff, když hrozí přeplněníbuferu v
hlavní paměti. Chrání zařízení, na němž je umístěn port, před přeplněním. V případě
pomalého „hloupého“ terminálu (nebo jiného pomalého zařízení) připojeného k rychlému PC je zahlcení portu počítače
nepravděpodobné, takže k aktivaci ixoff dochází zřídka. Obvykle je aktivován jen „pro strýčka příhodu“.
Používání stty na „cizím“ terminále
Jak použijete stty, abyste zjistili nastavení jiných terminálů než těch, které používáte? Když je tako-vý „cizí“ terminál v činnosti a
běží na něm shell, obvykle není možné zjistit nastavení. V jiných případech, když například chcete zjistit nastavení ttyS2 a píšete
přitom na jiném terminále (např. tty1), zadejte stty -F /dev/ttyS2 ... (nebo --file místo -F). Je-li na místě tří teček (...) volba -a, vypíší
se všechna nastavení (-a jako „all“).
Když však na cizím terminále (v našem případě ttyS2) běží shell, vypsaný údaj bude pravděpo-dobně nesprávný a nastavení
nebude fungovat. Tento problém se týká jak virtuálních terminálů, tak i tty3 vers. tty1 atd. Lépe jej pochopíte, když si přečtete
kapitolu „Dvě rozhraní na jednom terminále“.
Dvě rozhraní na jednom terminále
Používáte-li shell (např. bash) s možností edice příkazových řádků, existují dvě různá rozhraní ter-minálu (tj. co uvidíte, když
zadáte -a). Současné shelly mají dočasné „syrové“ rozhraní (resp. syro-vý režim), kdy se každý znak přečte editorem příkazového
řádku tak, jak jej zadáte. Jakmile ovšem stisknete klávesu return, editor příkazového řádku se ukončí a rozhraní terminálu se
změní na „hotové“ (jako „hotové“ jídlo oproti jídlu syrovému) rozhraní (resp. hotový režim). Hotový režim trvá do odeslání
dalšího promptu na terminál (což je malý zlomek sekundy). Je nutno si uvědo-mit, že příkaz nikdy není zadáván v hotovém
režimu, nýbrž to, co zadáte v syrovém režimu, shell čte, i když je terminál v hotovém režimu.
Jakmile je odeslán prompt, terminál přejde z „hotového“ do „syrového“ režimu (v němž je, když například spustíte editor vim).
Prompt signalizuje spuštění řádkového editoru. Nastavení „syrové-ho“ režimu je odvozeno pouze ze základního nastavení
„hotového“ režimu stty. Syrový režim toto nastavení převezme, avšak změní některá jiná nastavení, aby změnil režim na
„syrový“, který v žádném případě není založen na předchozím nastavení „syrového“ režimu. Použije-li tedy někdo stty ke změně
nastavení syrového režimu, takové nastavení bude nenávratně ztraceno po stisk-nutí klávesy return na terminále, o němž lze
předpokládat, že byl „nastaven“.
Nyní, když zadáte stty, abyste se podívali na rozhraní terminálu, může se vám objevit jak syrový, tak i hotový režim. Je nutno si
uvědomit, který z nich se zobrazil. Zadáte-li stty z cizího terminálu (tedy z jiného, než z toho, na kterém píšete), uvidíte syrové
nastavení. Veškeré změny se budou týkat pouze syrového režimu a po stisknutí klávesy return na cizím terminále, který jste se
poku-sili nastavit, budou ztraceny. Pokud ovšem zadáte příkaz stty, abyste zjistili/změnili konfiguraci ter-minálu, který právě
používáte, a stisknete return, je to jiná báchorka. Terminál po stisknutí kláve-sy return přejde do hotového režimu, změny jsou
uloženy a zůstanou v platnosti i po návratu do syrového režimu (pochopitelně pokud to není z hlediska syrového režimu
nepřípustné nastavení).
Taková situace s sebou může přinášet problémy. Představte si, že zhavaruje rozhraní terminálu. Chcete je obnovit z jiného
terminálu, zadáte tedy příkaz stty -F dev/ttyS1 sane (nebo podobný). Ale nebude to fungovat! Můžete pochopitelně zkusit zadat
stty sane ... přímo na tom terminále, který zhavaroval, avšak neuvidíte, co zadáváte. Vše, co bylo řečeno výše, platí nejen pro
fyzické terminály, nýbrž i pro virtuální terminály na monitoru a pro terminálová okna v systému X Win-dow. Jinými slovy, platí
to skoro pro každého, kdo používá Linux.
Naštěstí všechny soubory, které spouštějí program stty v průběhu zavádění systému, pravděpo-dobně nějak souvisejí s terminály
(nebo se sériovými porty bez terminálů), na nichž neběží shell, takže s tímto speciálním případem pravděpodobně nebude
problém.
Kdy je nutno zadat příkaz stty?
Je-li nutné programem stty nastavovat sériové rozhraní při každém spuštění počítače, příkaz stty musíte zadat v souboru, který je
vždy prováděn při startu (při zavádění systému). Měl by být spuš-těn před tím, než se začne používat příslušný port (což platí i
pro program getty). Pokud běží na různých místech, měli byste si je zapamatovat, neboť může dojít ke konfliktu. Konfiguraci si
zdo-kumentujte.
Program bude pravděpodobně v souboru, který při zavádění systému spouští i program setseri-al. Místo závisí na konkrétní
distribuci i verzi. Zdá se, že nejlepší je umístit jej za program setse-rial, neboť úseky s nízkou úrovní jsou prováděny nejdříve.
Máte-li adresáře ve stromě /etc, kde se všechny soubory provádějí při zavádění systému (System V Init), můžete si pro tento účel
vytvo-řit soubor jménem „stty “.
Původní metody přesměrování
Zhruba před rokem 2000, když jste chtěli použít stty na cizí terminál, bylo nutno zadat operátor pro přesměrování <. Když jste
například seděli u tty1 a chtěli aplikovat stty na ttyS2, zadali jste: stty ... < /dev/ttyS2. Po roce 2000 (verze setserial >= 1.17 a verze
stty >= 2.0) byla vytvo-řena lepší metoda s využitím volby -F: stty -F /dev/ttyS2. Když selže původní metoda přesměro-vání, tato
metoda bude fungovat.
V příkladu shora na přesměrování je programu stty přiřazen jako standardní vstup ttyS2. Tím program stty získá odkaz na
„soubor“ ttyS2 a může z něj „číst“. Avšak místo očekávaného čtení bajtů posílaných na ttyS2 vyhledá pomocí tohoto odkazu
nastavení konfigurace portu, které může číst nebo měnit. Pokusy o nastavení terminálu typu stty ... > /dev/ttyS2 nefungovaly.
Místo toho se zprávy normálně vypisované příkazem stty na terminálu, u něhož sedíte (např. tty1 ), posílaly na ttyS2. Avšak
nastavení ttyS2 se nezměnilo.
Problém spočívá v původně používaném operátoru přesměrování (a s novou volbou -F k němu nedojde). Někdy zůstane příkaz
stty viset a neděje se vůbec nic (nevypíše se prompt ani po stisk-nutí return). Je tomu tak pravděpodobně kvůli portu, který čeká
na signál na jedné z řídicích linek modemu. Například pokud nenastavíte „clocal“ tak, aby ignoroval řídicí linky modemu, a
jestliže nepřijde žádný signál od CD, port se neotevře a stty na něm nebude fungovat (pokud ovšem nepoužijete novou volbu -F ).
Zdá se, že podobná situace existuje i v případě řízení toku dat. Nemá-li kabel vedoucí k portu vodič pro pin, po němž je nutno
poslat signál, odstranění nedefinovaného („visícího“) stavu je dost nesnadné.
Jedním z možných způsobů, jak takový stav odstranit, je použít novou volbu -F a příslušně nastavit „clocal“ a „crtscts“. Pokud
nemáte volbu -F k dispozici, můžete zkusit spustit na portu nějaký pro-gram (např. minicom), který jej přinutí k činnosti, i když to
řídicí linky budou odmítat, a můžete dou-fat, že tento program nastaví port tak, že už napříště nebude k otevření clocal, resp.
crtscts, vyža-dovat řídicí signál. K tomuto účelu budete pravděpodobně muset program „minicom“ znovu zkon-figurovat, ukončit
jej a znovu spustit. Pravděpodobně jednodušší by bylo restarovat celý počítač.
Původní metoda přesměrování (která funguje i v nových verzích) spočívá v tom, že zadáte příkaz stty ... < /dev/ttyS2. Jestliže
nová metoda s volbou -F funguje a stará nikoli, znamená to, že port „visí“ kvůli chybějícímu signálu na řídicí lince modemu.
Původní metoda tedy může být vhodná k odstraňování takovýchto problémů.
Terminfo & termcap (stručně)
Podrobnější informace o termcap naleznete v kapitole „Terminfo a termcap“. Databázi terminfo (dříve termcap) používá mnoho
aplikačních programů. Databáze obsahuje pro každý model nebo typ (např. vt100) terminálu jednu položku (nebo soubor), která
říká, co terminál umí, jaké kódy se na něj mají posílat pro provádění jednotlivých akcí a jakými kódy se mají inicializovat.
Vzhledem k tomu, že řada terminálů (a PC) umí emulovat jiné terminály a mají různé operační „režimy“, k danému fyzickému
terminálu může existovat i více položek a je třeba si mezi nimi vybrat. Obvykle mají podobná jména. Poslední parametr getty (a
to jak agetty, tak i getty_ps) obsahuje jméno terminálu (nebo terminálové emulace), který používáte (např. vt100).
Terminfo slouží i k jiným účelům než k pouhé specifikaci toho, co terminál umí, a k poskytová-ní kódů, kterými se tyto funkce
vyvolají. Také může specifikovat, jak bude vypadat „tučné“ písmo (bude-li zvýrazněno inverzí nebo vysvícením apod.), jak bude
vypadat kurzor, budou-li písmena černá, bílá nebo budou mít jinou barvu apod. V terminologii PC jsou tyto údaje nazývány
„prefe-rence“. Také specializuje inicializační kódy, které se mají posílat na terminál (analogie k řetězcům posílaným na modemy).
Tyto řetězce se z Linuxu na terminály neposílají automaticky, viz kapito-la „Inicializační řetězce“. Pokud vám způsob
zobrazování a chování terminálu nevyhovuje, může-te je v databázi terminfo (resp. termcap) změnit (a později aktualizovat).
Podrobnosti viz kapitola „Kompilátor terminfo (tic)“.
Nastavení TERM a TERMINFO
Pro terminály jsou určeny dvě vnější proměnné: TERM a TERMINFO, avšak je možné, že je vůbec nebudete používat. TERM musí
obsahovat typ používaného terminálu (např. vt100). Neznáte-li typ (jméno), viz kapitola „Jak se jmenuje můj terminál?“.
TERMINFO obsahuje cestu k databázi ter-minfo, avšak je-li databáze umístěna implicitně, tuto cestu nemusíte znát (anebo může
být pro-měnná TERMINFO nastavena automaticky souborem, který je dodávaný s danou distribucí Linu-xu). Můžete také
nahlédnout do kapitoly „Umístění přeložené databáze“.
Program getty naštěstí většinou nastavuje proměnnou TERM ještě před přihlášením. Použije typ terminálu zadaný na příkazovém
řádku getty (v /etc/inittab). To umožňuje aplikačním pro-gramům nalézt v této databázi jméno terminálu a poté vyhledat jeho
funkce. Viz také kapitola „Proměnná TERM“.
Jestliže se databáze terminfo nenajde, na terminále se vypíše chybové hlášení. Pokud se něco tako-vého přihodí, je nutno zjistit,
kde je tato databáze uložena, a je-li to nutné, nastavit podle toho TERMINFO. Databázi terminfo můžete najít například tak, že se
pomocí příkazu locate pokusíte najít třeba soubor vt100. Přesvědčte se, zda databáze obsahuje také váš terminál. Nastavení
proměnné TERMINFO může vypadat například takto: export TERMINFO=/usr/share/terminfo (tento příkaz by měl být v souboru /etc/
profile nebo v podobném). Pokud vám údaje v této databázi přísluš-né k vašemu terminálu nevyhovují, můžete je změnit, viz
kapitola „Terminfo & termcap (stručně)“.
Jak se v terminfo jmenuje můj terminál?
Abyste mohli nastavit vnější proměnnou TERM, musíte znát přesné jméno terminálu, které zadáte programu getty. V databázích
termcap i terminfo se používají stejná jména, takže je budete hle-dat pouze jednou. Terminály často mívají aliasy (alternativní
jména), v takovém případě použijte první z těchto jmen.
Jméno hledejte v souboru /etc/termcap... (pokud existuje). Když takový soubor v systému není, podívejte se buď do stromů
terminfo (viz kapitola „Umístění přeložené databáze“) nebo zkuste najít zdrojový kód tohoto souboru (viz kapitola „Umístění
zdrojového kódu databáze“).
Zřídka používaný soubor /etc/ttytype
Konfigurační soubor /etc/ttytype se v databázi terminfo používá k mapování /dev/ttySn na jména terminálů. Používá je tset, avšak
je-li vnější proměnná TERM správně nastavená, nebudete tento soubor potřebovat. V jiných systémech typu Unix (např. FreeBSD)
je mapování v souboru /etc/ttys mnohem rozsáhlejší, např. na příslušný příkaz getty, kategorii připojení (např. „vytá-čené
spojení“) apod. Příklad řádku v linuxovém souboru ttytype: vt220 ttyS1.
Omezení při přihlašování
Implicitně se uživatel root nemůže přihlásit z terminálu. Kdybyste takové přihlašování chtěli povo-lit, musíte vytvořit (nebo
upravit) soubor /etc/securetty podle manuálových stránek „securetty“. Omezení přihlašování určitých uživatelů a určitých
terminálů lze docílit změnami v souboru /etc/login.access (původně to byl soubor /etc/usertty ??). Soubor /etc/login.def určuje, zda má
být soubor /etc/securetty vyřazen z používání. V souboru /etc/porttime jsou nasta-veny časy, kdy mohou určití uživatelé a určité
terminály používat počítač. Učiní-li některý uživa-tel příliš mnoho chybných pokusů o přihlášení, může mu být další přihlašování
odepřeno. Další podrobnosti naleznete v mauálových stránkách faillog.
Podmíněné zadávání příkazů (když TERM=my_term_type)
Při spouštění systému je někdy potřeba provádět určité příkazy pouze pro určitý typ terminálu. V případě příkazu stty je to
jednoduché, neboť terminál v příkazu můžeme specifikovat pomocí operátoru přesměrování (<). Avšak jaká je situace v případě
aliasů a funkcí? Můžete například změ-nit příkaz ls tak, aby vypisoval adresáře barevně pouze na barevných terminálech a
konzolách, zatímco na monochromatických terminálech by měl příkaz se stejným jménem (avšak s jiným tělem) psát tak, aby
barevné kódování nahrazoval určitými symboly. Kam je nutno definici tako-vé funkce umístit?
Můžete ji umístit do příkazu if v souboru /etc/profile, který je spuštěn při každém přihlášení. Podmíněný příkaz if definuje určité
funkce apod. pouze tehdy, jde-li o terminál určitého typu.
Příklad funkce ls
I když většinu činností prováděných tímto příkazem lze provést v konfiguračním souboru dirco-lors, zde je příklad, jak to lze
provést v shellu bash:
if [ “$TERM” = linux ]; then
eval `dircolors`; elif [ “$TERM” = vt220 ]; then
ls () { command ls -F $* ; }# export funkce ls():
declare -xf ls else echo “From /etc/profile: Neznámý typ terminálu $TERM” fi
Mapování znaků: mapchan
Existuje volně šiřitelný program mapchan, kterým můžete podle uživatelské tabulky namapovat znaky zadané na klávesnici
terminálu (vstup) na jiné znaky. Také je možné mapovat znaky posí-lané na výstup (na obrazovku). Tato funkce je vhodná
například pro přemapování klávesnice na abecedu jiných jazyků. Většina distributorů ovšem tento program nepodporuje (pokud
ano, dejte mi, prosím, vědět). Zdrojový kód napsal Jura Kaliničenko (Ukrajinec, avšak program je napsaný v ruštině s anglickým
manuálem) a býval na adrese http://www.kron.vinnica.ua/free/download/, která ovšem už v roce 2003 byla mrtvá.
Terminfo a termcap (podrobně)
Úvod do terminfo
Terminfo (dříve termcap) je databáze nejen funkcí terminálů. Poskytuje aplikačním programům informace o funkcích všech (nebo
téměř všech) terminálů. K dispozici jsou řídicí sekvence (posloupnosti řídicích znaků), které je nutno poslat na terminál, aby byly
provedeny určité čin-nosti jako pohyb kurzoru, vymazání části obrazovky, rolování obrazovky, změna režimu, změna vzhledu
(barvy, jas, blikání, podtrhování, inverzní zobrazení apod.). Zhruba od roku 1980 vznik-ly stovky různých terminálových funkcí
(některé parametry nabývají i číselných hodnot).
Jedním z možných způsobů, jak mohou aplikační programy tyto informace z databáze získat, je funkce „ncurses“, použitelná v
programech napsaných v jazyce C. Když například chce program posunout kurzor 6 sloupec ve třetím řádku, jednoduše zadá
move (3,6). Funkce move() (součást ncurses) ví, jak toto provést na terminále (informace si přečte v terminfo). Funkce tedy pošle
na terminál řídicí sekvenci příslušnou pro daný terminál. Některé programy získávají informace přímo ze souborů databáze
terminfo bez použití ncurses. Linuxový balík může tedy sám potřebovat data-bázi terminfo, i když nepoužívá program ncurses.
Zkratky v terminfo jsou většinou delší než odpovídající zkratky v termcap, takže je snazší odhad-nout, co znamenají. Detailnější
informace naleznete v manuálových stránkách terminfo (jsou tam i zkratky termcap). Pokud tedy nemusíte používat termcap,
zvolte raději terminfo.
Databáze terminfo
Databáze terminfo vzniká překladem, takže existuje jak jeho zdrojová část, tak i přeložená část. Původní databáze termcap má
pouze zdrojovou část, avšak tento zdroj lze jediným příkazem sou-časně převést na terminfo a přeložit. Můžete se tedy klidně
obejít bez zdrojového kódu terminfo, neboť databázi terminfo vytvoříte ze zdrojového kódu termcap. Jakou momentálně
používáte data-bázi (a monitor), můžete zjistit pomocí příkazu infocmp, po jehož zadání se vypíše jméno zdro-jového souboru
terminfo.
Zda je terminál (např. vt100) v databázi terminfo, zjistíte pomocí příkazu locate vt100. Potřebu-jete-li najít jméno terminfo pro
daný terminál, projděte si výpis souborů v přeložené databázi nebo si přečtěte kapitolu „Jak se jmenuje můj terminál v databázi
terminfo?“.
Kde je databáze umístěna? Umístění přeložené databáze
Zadáte-li locate vt100, může se vypsat /usr/lib/terminfo/v/vt100, /usr/share/terminfo/v/vt100, /home/.../.terminfo/v/vt100 nebo /
etc/terminfo/v/vt100. V každém z těchto adresářů mohou být soubory přeložené databáze terminfo. I když adresář /etc/terminfo
není standardním umístě-ním, máte-li několik typů terminálů, může být toto vhodné místo pro případ, že není k dispozici adresář /
usr. Adresář /usr může například být na zvláštním disku nebo v jiné oblasti, kterou se nepodařilo připojit. Programy, které
používají databázi terminfo, si ji obvykle dokáží najít samy, pokud je na jednom z uvedených míst. Jinak je cesta k ní uložena ve
vnější proměnné TERMINFO, např. TERMINFO=/usr/share/terminfo.
V linuxové distribuci Debian je v balíčku ncurses-term několik běžně užívaných terminálů (včet-ně monitoru-konzoly). Jsou v
adresáři /etc/terminfo/ . Všechny ostatní terminály jsou v balíčku ncurses-bin a jsou uloženy v adresáři /usr/share/terminfo/.
Je-li přeložená databáze terminfo na několika místech, vše bude obvykle fungovat až do té doby, než někdo nainstaluje nové
soubory terminfo (z novější distribuce, z Internetu, změnou původních souborů apod.). Všechny staré soubory totiž musí být
nahrazeny novými (na všech místech), aby byly zlikvidovány veškeré možné redundance. Nejste-li si jisti, zda jste úspěšně
nahradili všechny soubory, určitě se najde aplikační program, který použije starý soubor (nejspíš s chybnými daty), který ještě
zůstal někde na disku. Tomuto problému lze předejít aktualizací vnější proměnné TERMINFO, jak jsme se zmínili výše.
Umístění zdrojové databáze
I když zdrojový kód nemusí být instalován na počítači, existuje způsob, jak jej můžete získat z pře
ložené databáze. Pouze zadáte příkaz infocmp . Soubor se zdrojovým kódem (pro všechny terminály) se může jmenovat /etc/termcap
nebo ter-minfo.src, případně i jinak. Viz manuálové stránky: vytvoření (nebo úprava) požadovaného tvaru zdrojových souborů je
popsáno v terminfo(5) ale také resp. termcap(5). Soubor terminfo.src může být umístěn na různých místech, anebo vůbec nemusí
být součástí distribuce. Najít se ho můžete pokusit pomocí příkazu locate . Na Internetu je na adrese http://catb.org/terminfo/.
Překladač terminfo (tic)
Data ze zdrojového souboru jsou překládána programem tic (terminfo compiler), který provádí konverzi mezi formáty termcap a
terminfo. Databázi terminfo tedy vytvoříte ze zdrojového sou-boru termcap. Instalační program, kterým byl vytvořen Linux,
pravděpodobně nainstaloval přelo-žené soubory na pevný disk, takže nemusíte překládat vůbec nic, ledaže byste ve zdrojových
sou-borech /etc/termcap (resp. terminfo.src) provedli nějaké změny. Program tic automaticky nainstaluje výsledné přeložené soubory
do adresáře terminfo, kde je používají aplikační progra-my. Kde je tento program nainstalovaný, závisí na ... najděte si to raději v
manuálových stránkách man tic.
Podívejte se na terminfo
Je vhodné se podívat na položku v terminfo, která odpovídá používanému terminálu (pochopitel-ně do zdrojového kódu), a
pročíst si komentáře. Zběžně, bez komentářů, si můžete prohlédnout zdrojový kód pomocí příkazu infocomp. Z komentářů se
však můžete dozvědět o terminálu důle-žité informace, například jak je nutno jej nastavit, aby správně pracoval s databází
terminfo.
Vynechání nepotřebných dat
Když v databázi terminfo zrušíte všechna data, která se nevztahují k používaným (resp. uvažova-ným) terminálům, ušetříte místo
na disku. Nemažte však data v databázi termcap označená jako „Linux terminal“ (konzola), a provozujete-li X Window, pak ani
xterm. Dále se může hodit „hlou-pý“ terminál („dumb“) pro případ, když aplikační program nedokáže určit typ terminálu.
Nainsta-lujete-li pouze terminfo vztahující se k připojeným terminálům (anebo k terminálům, jež hodláte připojit v blízké
budoucnosti ), ušetříte prostor na disku a údaje o nově připojené terminály nain-stalujete z Internetu do databáze termcap v
několika sekundách.
Chyby ve stávajících souborech terminfo (a v hardwaru)
V souborech terminfo a termcap je bohužel celá řada chyb. Navíc, mnohé z těchto souborů jsou neúplné a u některých terminálů
chybí určité funkce. Někdy je soubor i tak použitelný, jindy se však neobejdete bez opravy anebo si musíte najít jinou, lepší
emulaci.
Neutěšený stav souborů v databázi terminfo má řadu příčin. Jednou z nich je skutečnost, že v 80. letech, kdy byla většina z nich
napsána (pochopitelně ve formátu termcap), pochopitelně nevyu-žívaly tehdejší aplikační programy všech současných
technických vymožeností terminálů. Na tuto skutečnost si ovšem nemůžeme stěžovat. Současné programy využívají nové funkce,
např. vim pracuje s „kontextovým zvýrazňováním“, nebo minicom používá množinu grafických znaků. To ovšem vyžaduje
doplnění nových definic do původního termcapu, což mělo (anebo nemohlo?) být už dávno hotové.
Terminály mají i hardwarové chyby (ve firmwaru), a když byl kvůli nim upraven termcap, byly tak vlastně „zakonzervovány“.
Výrobci sice nabízeli náhradní mikroprocesory s opravenými chybami, avšak ne všichni uživatelé se obtěžovali jejich nákupem.
Takže terminfo pro určité terminály se v závislosti na různých firmwarech zdvojnásobil. Tato skutečnost není v databázi termcap
pod-chycena a součástí Linuxu je pouze jedna databáze. Na některé hardwarové chyby se v minulos-ti ani nepřišlo, neboť určité
funkce nikdo nepoužíval. Některé uváděné chyby tedy nikdy nebyly opraveny, protože třeba nebyly důležité, výroba terminálů
zanikla apod.
Úprava souborů terminfo
K této činnosti potřebujete manuál terminálu s popsanými řídicími sekvencemi. Novější manuály, tak od r. 1990, je obsahují.
Potřebujete také manuál terminfo ( například manuálové stránky ter-minfo). Opravený zdrojový soubor přeložte programem tic,
který by měl výsledek překladu auto-maticky uložit do správných adresářů.
Chcete-li najít k určitému terminálu lepší záznam v terminfo, můžete zkusit pohledat po Interne-tu (avšak to, co najdete, nemusí
být vždy lepší). Najdete-li nicméně lepší záznam, který se zdá být stabilní (tedy po určitou dobu jej bez problémů používáte), měli
byste jej poslat tomu, kdo tuto databázi udržuje (bývá uveden ve zdrojových souborech).
Řetězec init
Součástí databáze terminfo bývají také tzv. inicializační řetězce, které slouží k inicializaci terminá-lu. Mohou měnit vzhled
obrazovky, měnit režimy nebo spouštět emulaci na jiné terminály. Na ter-minály se žádné inicializační řetězce neposílají
automaticky. Někdo by se mohl domnívat, že pro-gram getty by měl poslat inicializační řetězec. Pokud by jej poslal, mohl by
přepsat stávající nasta-vení terminálu. Aplikační programy inicializační řetězce neposílají.
Inicializační řetězec musíte zadat pomocí příkazu na příkazovém řádku (resp. ve skriptu, např. v /etc/profile). Takovými příkazy
jsou tset, tput init a setterm -initialize. Někdy je posílání inicializačních řetězců zbytečné, neboť terminál se umí po zapnutí
nastavit sám (pomocí voleb resp. „preferencí“ uložených v permanentní paměti terminálu).
Proměnná TERM
Ve vnější proměnné TERM by mělo být nastaveno jméno používaného terminálu. Není-li nastave-no a vy je neznáte, viz kapitola
„Jak se jmenuje můj terminál ?“. Do této proměnné je obvykle nasta-ven obsah parametru terminal_type, který předáváte
programu getty (viz soubor /etc/inittab file ). Jméno musí být obsaženo v databázi terminfo. Nastavení proměnné TERM zjistíte
příkazem set zadaným na příkazovém řádku (anebo tset -q). Na konzole (na monitoru) je proměnná nasta-vena na „linux“, což je
monitor osobního počítače, na němž je emulován fiktivní model terminá-lu jménem „linux“. Vzhledem k tomu, že „linux“ je
velmi podobný terminálu vt100 (což platí pro mnoho dalších textových terminálů), označení „linux“ může sloužit jako vhodné
dočasné označe-ní textového terminálu.
Je-li k jednomu portu ( /dev/tty...) připojeno několik typů terminálů (například terminál s pře-pínačem různých typů nebo port
připojený k modemu, na nějž uživatelé volají z různých typů ter-minálů), proměnná TERM musí být nastavena při každém
připojení k sériovému portu. Často exi-stuje řídicí sekvence, jejímž prostřednictvím se počítač může zeptat na typ terminálu.
Jinou mož-ností je zeptat se přímo uživatele. K tomu lze využít buď tset anebo si napsat krátký skript.
Program tset je popsaný v manuálových stránkách. Tento program je určen ke zjišťování jména používaného terminálu. Jakmile
jej zjistí, vyhledá v databázi terminfo příslušné údaje a pošle na terminál inicializační řetězec. Může také poslat hodnotu TERM.
Když například uživatel vytočí číslo a přihlásí se, provede se přihlašovací skript .profile, který obsahuje příkaz eval `tset -s ?
vt100`, což má za následek dotaz na uživatele, zda používá terminál vt100. Uživatel buď odpoví „yes“, nebo zadá typ terminálu,
který používá. Pak teprve pošle program tset inicializační řetězec a nasta-ví do proměnné TERM jméno (typ) terminálu.
Dokumentace k terminfo/termcap
Manuálové stránky k terminfo(5) (nejlepší) a termcap(5). Druhé vydání Termcap Manual (autor Richard M. Stallman),
http://www.delorie.com/gnu/docs/termcap/termcap_ toc.html, je manuál GNU. Je poněkud zastaralý, neboť neobsahuje terminfo.
Soubory terminfo.src a /etc/termcap obsahují informace o různých verzích souborů termcap, konvence jmen terminálů a
speciální funkce kódů u6-u9. Nemáte-li jej, nalezne-te jej na http://catb.org/terminfo/.
Knihu Termcap a terminfo vydalo nakladatelství O'Reilly v roce 1988.
Jak používat terminál
V této kapitole naleznete informace o řízení rozhraní terminál – počítač a o změnách nastavení terminálu v průběhu jeho
používání. Je zde vysvětleno (anebo jsou uvedeny odkazy na vysvětle-ní), jak má uživatel řídit a sledovat rozhraní a jak má
zadávat různé příkazy ovladači terminálu (zařízení). Kapitola se nezabývá aplikačními programy, shellem ani utilitami. Dva často
používa-né příkazy na terminále:
clear (vymazat obrazovku)
reset (resetování terminálu)
setterm -reset (alternativa k „resetování“ v případě chyby)
Zapnutí terminálu
Nejdříve musí být terminál pochopitelně zapnutý. Pokud nevidíte přihlašovací prompt, stiskněte několikrát return (resp. enter ).
Pak zadejte přihlašovací jméno (ukončené znakem return/enter), a jakmile se vypíše další prompt, zadejte také heslo (rovněž
ukončené klávesou enter/return). Přesvědčte se, zda nepíšete velkými písmeny. Pokud ano, počítač se domnívá, že máte starý
terminál, který neumí psát malá písmena, a ovladač se nastaví tak, aby posílal na ter-minál pouze velká písmena.
Pokud se nic neděje, přesvědčte se, zda jsou počítač i terminál v pořádku. Je-li počítač vypnutý, i tak se mohou zadané znaky
objevovat na obrazovce, neboť na počítači mohou být propojené přijímací a vysílací piny a znaky se opisují i při vypnutém
počítači. Nedaří-li se přihlášení ani při zapnutém počítači, viz Odstraňování závad.
Ovladač (sériového) terminálu
Když zadáváte příkazový řádek, shell (např. bash shell) čte zadávané znaky a reaguje na ně. Zada-ný znak nejdříve projde
ovladačem, který je součástí operačního systému. Ovladač může určité znaky měnit (např. znak return zadaný na klávesnici může
změnit na „nový řádek“ používaný v linuxových souborech). Také rozpozná určité řídicí znaky, jež můžete zadat na klávesnici,
např. ^C, kterým se ukončuje program. Znaky se obvykle opisují na obrazovce. Chování terminálu lze nastavit programem stty,
například lze zrušit některé (nebo všechny) funkce.
Problémy s editory
Při používání editorů vi a emacs mohou nastat určité problémy. Některé terminály nemají kláve-su escape (ESC), takže je nutno
tento znak zadávat jako Ctrl+[.
emacs
Pokud se provádí softwarové řízení toku dat, příkaz ^S v editoru emacs „zmrazí“ (znehybní) dis-plej a činnost obnovíte znakem
^Q. Někdy je emacs zkonfigurován tak, že je tento znak nama-pován na jinou klávesu. Některé terminály mají metaklávesy, takže
lze nastavit terminál tak, aby vytvářel metaklávesy.
vi a kurzorové klávesy
Editor vi používá klávesu esc jako příkaz k opuštění vkládacího režimu. Většina terminálů bohu-žel posílá šipky na počítač jako
řídicí sekvence (začínající znakem ESC) a vi musí dokázat rozlišit tyto dva významy znaku ESC. Lepší varianty editoru vi (např.
vim, je-li příslušně zkonfigurován) jsou schopny rozpoznat rozdíl podle časové prodlevy mezi ESC a další klávesou. Je-li čas
krátký, znamená to, že byla stisknutá šipka. Další podrobnosti viz nápověda ke kurzorovým klávesám.
Anebo jiné řešení. Na terminálech VT může být klávesa s levou šipkou nastavena buď tak, že posí-lá sekvenci ESC [ D nebo ESC
O D. Ostatní šipky jsou na tom podobně, pouze místo D používa-jí A, B a C. Máte-li se šipkami problémy, nastavte si posloupnost
ESC [ D, neboť znak „O“ je v jiné souvislosti chápán jako příkaz k otevření řádku („open a line“). Znak „[“ pak může být
editorem chápán jako šipka. Není-li nastaven aplikační režim („Cursor Key Application Mode“), po stisknu-tí šipky se pošle ESC
[ D. Obvykle je režim ESC [ D implicitní, takže zdánlivě je vše v pořádku. Až na to, že databáze termcap obsahují řetězec (nikoli
inicializační), který nastaví terminál tak, jak jste nechtěli: do „aplikačního režimu“. Při spuštění editoru tento řetězec nevadí,
avšak nyní nastanou problémy.
Řetězec je v termcapu označen jako „ks“ (v terminfo smkx), což znamená aktivaci funkčních (a podobných) kláves (včetně
šipek). Aplikace aktivuje tyto klávesy posláním řetězce „ks“ na terminál. Ať už napsal termcap kdokoli, zvolil řešení, že
potřebuje-li aplikační program tyto klávesy aktivovat, budou přepnuty do „aplikačního režimu“, neboť je přepne „aplikace“, což
však nechcete.
Linuxová konzola nemá řetězec „ks“, takže na konzole do této pasti nespadnete. V případě jiných terminálů asi budete muset
upravit termcap (resp. terminfo) anebo použít jinou položku termcap. Bude nutno změnit nejen řetězec „ks“, nýbrž i definice toho,
co posílají kd, kl, kr a ku. Pak změny nainstalujte pomocí programu tic.
Editor vim (vi iMproved) je možné nastavit tak, aby fungoval korektně s posloupností ESC O D (takže není nutné měnit termcap);
viz nápověda ke „kurzorovým klávesám vt100“. Můžete napří-klad spustit gitkeys a stisknout kurzorové klávesy, abyste zjistili,
co posílají. V editoru však mohou posílat i něco jiného.
Chyby v bashi
S rozhraním pro čtení řádku jsou v bash shellu problémy. Rozhraní verze bash shellu 2.01 (1998) na „hloupém“ terminále totálně
havarovalo. V pozdějších verzích byly chyby odstraněny. Jeden problém však přetrvává. Když některé terminály posílají bajty s
bitem nejvyššího řádu nastaveným na 1, bash nebere v úvahu jejich významy, jak jsou definované v položce terminfo. Tuto chybu
jsem tvůrcům bashe ohlásil. Ostatní programy (vim, lynx) zpracovávají tyto klávesy korektně.
Problém si můžeme přiblížit tak, že v souboru /etc/inputrc nadefinujeme funkce těchto kláves v bashi. Například terminál Wyse 60
v aplikačním režimu pošle při stisknutí šipek posloupnost D0-D3. Když v tomto smyslu upravíme terminfo, v bash shellu
nebudou klávesy fungovat ani po této úpravě. Šipky jsem v souboru /etc/inputrc explicitně definoval takto:
# Arrow keys in 8 bit keypad mode: Sends d0-d4. -ap means application. $if term=wy60-25-ap set enable-keypad on “\xd0”: backward-char
“\xd1”: forward-char “\xd2”: next-history “\xd3”: previous-history $endif
Je-li už terminál v aplikačním režimu, není nutno zadávat příkaz set enable-keypad on. Tento příkaz pošle terminálu řídicí
sekvenci, která se v terminfo jmenuje smkx (v případě terminálu wyse60 je to \E~3 a nastaví šipky tak, že posílají D1-D3).
Mnohé aplikace ji posílají automaticky.
Když havaruje příkaz ls při barevném výpisu
Když havaruje emulace barevného terminálu, barvy vypněte. Barvy používají příkazy ls --color a ls --colour. V některých
instalacích je barevný výpis ls nastaven implicitně. Zkontrolujte ali-asy v souborech /etc/profile apod. Jak fungují barvy v příkazu
ls na konzole, viz kapitola „Pří-klady funkce ls“. Na terminále nastavte monochromatický výpis.
Displej zamrzá (terminál zůstává viset)
Příznakem „visícího“ terminálu je stav, kdy se znaky zadávané na klávesnici neopisují na termi-nále (anebo se opisují, avšak jinak
se nic neděje). V takovém případě zadejte ^Q, čímž obnovíte tok dat (pokud byl zastavený). Terminál může také viset, když na něj
posíláte binární kombinace nebo když se nestandardně ukončil program, který jej používal.
Pokud k ničemu takovému nedošlo, program může být chybný nebo komunikace s ním je fatál
ně chybná. Když chcete takový program ukončit a obvyklé metody selhávají (některé programy se ukončují stisknutím určitých
kláves ), zkuste jej zrušit z jiného terminálu pomocí příkazů top nebo kill. Nechce-li se proces ukončit, zkuste to signálem č. 9
odshora (nebo zadejte kill na příkazovém řádku). Po vynuceném ukončení typu „9“ se mohou ztratit některé dočasné soubory
nebo může zhavarovat rozhraní. Když ani to nezabere, ukončete shell, čímž se spustí program getty a vypí-še nový přihlašovací
prompt. Když selže vše ostatní, zaveďte znovu systém, nebo dokonce vypně-te počítač. Při samotném restartu může zůstat
nezměněný obsah hardwarových registrů sériového
portu, což může být příčinou havárie. Nezkušený uživatel také může omylem stisknout klávesy Ctrl+S (^S) (nebo klávesu No
Scroll), což má za následek záhadné zmrazení obrazovky (ačkoli to je při softwarovém řízení toku správná funk-ce těchto kláves).
Normální komunikaci obnovíte stisknutím Ctrl+-Q (^Q). Je nutno si uvědomit, že vše, co napíšete v průběhu „zmrazení“, se
provádí, avšak až do stisknutí ^Q bez odezvy na obra-zovce. V takovém stavu nepište na klávesnici nic, co by mohlo zničit
soubory apod. Dobrým důvo-dem pro hardwarové řízení toku dat je právě prevence takových zamrznutí terminálu.
Porucha rozhraní
Sem patří i „zamrzlý displej“ = „visící terminál“ z předchozí kapitoly.
Příznaky a některé způsoby odstranění
Když se displej chová podezřele nebo správně neopisuje zadané znaky (pokud vůbec) anebo se při zadání příkazu nic neděje,
může jít o poškozené rozhraní. Většinou nejde o hardwarovou chybu sériového portu, kdy jedinou možností nápravy je vypnout
počítač a znovu zavést systém, což může někdy stačit. Někdy dokonce pomůže, když se znovu přihlásíte. Předtím však musíte
zrušit shell, který běží na terminále (anebo program getty, je-li v činnosti), což lze provést z jiné-ho terminálu. Jakmile ukončíte
getty, je tento program ihned spuštěn znovu a může se stát, že se porucha již neprojeví. Podobně může pomoci vypnutí a zapnutí
nebo resetování terminálu.
Možné příčiny poruchy:
Chyba v programu (program se například může chybně domnívat, že pracujete na terminále typu „linux“).
Hardwarová chyba (například i taková, která se jindy neprojeví).
Nesprávná konfigurace (např. chyba v terminfo nebo typ terminálu).
Pokud vše fungovalo správně a chyba se projevila náhle, k poruše rozhraní mohlo dojít vinou nějaké vaší činnosti. Nejčastější
příčiny mohou být tři:
Posílání binárních kódů na terminál.
Nestandardní ukončení programu.
Omylem zadaný znak Ctrl+S.
Posílání binárních kódů na terminál
Pošlete-li na terminál určitou řídicí sekvenci nebo řídicí znaky, charakteristika terminálu se změní. Pokud se omylem pokusíte
vypsat binární soubor, může obsahovat sekvenci, která převede ter-minál do nedefinovaného režimu anebo jej zcela vyřadí z
činnosti. Binární soubory prohlížejte a opravujte pouze pomocí programů, které k tomu jsou určeny, aby se něco takového nestalo.
Většina editorů a prohlížečů umí zacházet s binárními soubory a rozhraní nepoškodí. Některé mohou vypsat zprávu, že binární
soubory neumějí zpracovávat. Pokud ovšem pošlete na stan-dardní výstup příkazy cat ... nebo cp ... /dev/tty... nebo nějakým
programem binární soubor, pravděpodobně poškodíte rozhraní terminálu (pokud ovšem není standardní výstup přesměrován
operátorem > apod.).
Rozhraní může poškodit i komunikační program, který pošle na terminál binární data ze vzdále-ného počítače. Buďte připraveni
na to, že k takovým věcem dochází z nejrůznějších příčin. Nežá-doucí řídicí kódy mohou dokonce obsahovat i textové soubory.
V takovém případě je vždy nutno resetovat terminál. Buďto zadejte jen příkaz reset (nemusí fun-govat) nebo setterm -reset
(následovaný pochopitelně znakem return). Možná ani nebudete vidět, co píšete. Tímto příkazem pošlete na terminál obnovovací
řetězec, který je uložen v pří-slušné položce databáze terminfo. Jinou možností je obnovení terminálu z nastavení uloženého v
paměti terminálu, což se obvykle provádí speciální klávesou (klávesami), a to nejspíš v nasta-vovacím režimu. Pak ještě asi bude
potřeba poslat pomocí programu tset na terminál inicializač-ní řetězec.
Příkaz reset nefungoval, chyba je nyní odstraněna
Poznamenejme, že v roce 2000 se příkaz reset jevil jako nefunkční pro terminály, které byly nasta-vovány pomocí programy
clocal, neboť pravděpodobně rušil nastavení provedené programem clocal. V roce 2001 byla asi tato závada odstraněna, není tedy
nutno číst zbytek tohoto odstavce. Pokud takový problém přece jen máte, příkazem reset situaci jen zhoršíte, neboť přerušíte
komu-nikaci mezi terminálem a počítačem. Nejspíš se budete muset znovu přihlásit a doufat, že program getty nastaví terminál
pomocí clocal. Vypíše-li se prompt, aniž jste o to požádali, máte štěstí. Jinak je nutno nahlédnout do kapitoly „Příznaky a
odstraňování“. Příkaz reset byste měli vyzkoušet ještě předtím, než jej budete skutečně potřebovat, a budete-li po jeho zadání
odhlášeni, zkuste příkaz setterm -reset. Chybu jsem ohlásil v březnu r. 2000, avšak oznámení o odstranění jsem nedostal.
Poškozené znaky
Vypisují-li se na obrazovce podivné znaky, zkuste zadat ^O, možná to pomůže. Stejnou službu
udělá i příkaz reset, avšak ten obnoví i všechny ostatní funkce terminálu. Může nastat i případ, že všechny znaky vykazují stejnou
nežádoucí vlastnost (jsou nejasné, příliš jasné nebo i neviditelné, avšak mezery zadané tabelátorem jsou normální. Tato nežádoucí
vlast-nost písma může být způsobena řídicí sekvencí, jež se nevztahuje na tabelátor. Zkuste terminál resetovat apod.
Nestandardní ukončení programu
Rozsáhlé aplikační programy (např. editory) často používají příkaz stty (nebo podobný), aby v průběhu své činnosti dočasně
změnily konfiguraci stty. Ovladač zařízení může přejít do „syro-vého“ režimu, kdy se zadávané znaky předávají přímo
aplikačnímu programu. Opisování znaků ovladačem je zablokované a znaky na obrazovce vypisuje přímo aplikační program. V
takových aplikacích pak nemusí fungovat některé řídicí příkazy (např. ^C).
Když dáte takovému programu pokyn k ukončení, nejdříve vrátí stty do stavu, v němž byl před jeho spuštěním. Pokud program
ukončíte nestandardně, může být terminál v „syrovém“ režimu. Když se po ukončení aplikačního programu znaky nevypisují na
obrazovce, pravděpodobná pří-čina může spočívat právě v nestandardním ukončení aplikačního programu.
Ze syrového režimu k normálnímu nastavení stty se dostanete příkazem stty sane. Musíte jej však zadat bezprostředně za znakem
return a také jej tímto znakem ukončit. Pokud ovšem je terminál ve stavu, kdy se znak return nepřevádí na znak „nový řádek“, což
očekává shell, příkaz sane se neprovede. V takovém případě zkuste ukončit příkaz znakem „nový řádek“ (^J) sami přímo z klávesnice. Rozhraní vytvořené příkazem sane nemusí být zcela totožné s normálním rozhraním, avšak obvykle funguje. Je-li příčina
havárie rozhraní jiná, můžete zkusit také příkaz stty sane.
Speciální (řídicí) znaky
Řídicí znaky zadávané z klávesnice zpracovává ovladač, který pak na jejich základě provádí pří-slušné akce (povely). Vypsat si je
můžete příkazem stty -a, poté si prohlédněte 2. – 4. řádek. Jsou podrobně popsány v manuálových stránkách stty. Pomocí
programu stty je možné je měnit nebo blokovat, nemusí tedy přesně odpovídat tomu, co je zde uvedeno. Používají se k editaci
příkazo-vých řádků, přerušování, rolování obrazovky a k transparentnímu (přímému) zadávání následují-cího znaku.
Editace příkazového řádku
Zatímco ovladač terminálu má několik příkazů na editaci příkazového řádku, některé shelly mají vestavěný svůj vlastní editor
(např. „readline“ v bash shellu). Obvykle je implicitně v činnosti, takže není nutno jej aktivovat. Pokud máte takový editor k
dispozici, není nutno se zabývat násle-dujícími povely, i když běžně je možné je používat současně s editorem. Nejdůležitějšími
povely jsou ^C (přerušení), ^D (konec souboru) a ^S (zastavení rolování obrazovky).
Klávesa delete smaže poslední znak (označuje se někdy jako ^?).
^U zruší celý řádek.
^W zruší předchozí slovo.
^R opíše řádek. Příkaz je užitečný pouze na terminálech, které píší na papír??
Přerušování (& ukončení, odstavení, konec souboru/EOF, zrušení)
^C je přerušení. Ukončí program a vrátí řízení na prompt příkazového řádku.
^\ ukončení. Totéž co přerušení. Taktéž může do souboru v pracovním adresáři vypsat kus paměti (což vám nejspíš k
ničemu nebude).
^Z je pozastavení. Zastaví program a odsune jej na pozadí. Jeho činnost obnovíte příkazem fg.
^D je konec souboru. Když jej zadáte za promptem, ukončí se shell a předá se řízení tam, kde bylo před spuštěním
shellu.
^O je zrušení. Dosud není implementováno v Linuxu (je v plánu). Výstup pošle na /dev/null .
^T vypíše stav ovladače. Dosud není implementováno v Linuxu (je v plánu). Vypíše sta-vový řádek rozhraní (počet
odeslaných bajtů apod.).
Zastavení/obnovení rolování
Když to, co chcete vidět, roluje pryč z obrazovky, můžete rolování zastavit signálem „stop“ (^S nebo Xoff) na počítač (za
předpokladu, že je aktivováno řízení toku dat). Rolování obnovíte zasláním signálu „start“ (^Q nebo Xon). Některé terminály mají
klávesu No Scroll, která střídavě posílá Xoff a Xon anebo možná i hardwarové signály pro řízení toku dat?? Funkce ctrl-S (^S) a
ctrl-Q (^Q):
^S zastav rolování (Xoff),
^Q obnov rolování (Xon).
Chcete-li současně ukončit rolování i program, zadejte ^C. Chcete-li zastavit rolování a dělat něco jiného, avšak program, který
vypisuje, ponechat v paměti a později jej obnovit, zadejte ^Z (poza-stavení).
Alternativou k metodě rolování je posílání výstupu do roury prostřednictvím stránkování, např. more, less nebo most. Výstup
však nemusí být standardním výstupem a může obsahovat chyby, které stránkování nerozpozná. Odstranit je můžete
přesměrováním 2>&1, spravíte tím stránková-ní. Často však je lepší zadávat pouze ^S a ^Q, pokud nepotřebujete rolovat
obrazovku v opač-ném směru.
Na konzole PC (na níž je emulován terminál ) můžete rolovat zpět pomocí Shift+PageUp. To potřebujete často, neboť rolování je
příliš rychlé, než aby šlo snadno zastavovat pomocí ^S. Když budete rolovat zpětně, rolování dopředu pak obnovíte klávesou Shift
+PageDown.
Transparentní zadání znaku
Znak následující za povelem ^V (obvykle řídicí) nebude ovladač nijak interpretovat a pošle jej beze změny. Na obrazovce se
místo něho vypíší dva ASCII znaky, například ^C.
Zobrazování souborů v Latin1 na non-Latin1 terminálech
Některé „textové“ soubory jsou zakódovány do osmibitového kódu Latin 1 (=ISO-8859-1), viz kapitola „Znakové množiny“.
Pokud terminál znaky Latin 1 nezná (anebo nemáte-li nainstalova-nou znakovou sadu Latin 1), některé symboly (např. puntíky)
se budou zobrazovat chybně. Při prohlížení manuálových stránek (jsou zakódovány v Latin 1) zadejte volbu -7, aby se znaky převedly do ASCII. Existují stránkové prohlížeče, které tento převod provádějí??
Jak odstranit zvýraznění znaků
Prohlížíte-li manuálové stránky příkazem man a výstup přesměrujete do souboru, bude takový soubor obsahovat „zvýraznění“
znaků, což je vlastně vytváření tučných znaků pomocí dvojího pře-tisku téhož znaku na jedno místo. V souboru jsou takové znaky
skutečně uloženy dvakrát za sebou a jsou odděleny znakem „posuv zpět“ („backspace“). Při tisku na tiskárnu to nevadí (i když
tisk je obvykle tak tmavý, že přetiskem se nic nevylepší), avšak co s tím, když chcete takový sou-bor poslat elektronickou poštou
nebo jej editovat?
Přetisků se můžete zbavit například pomocí příkazu ul (underline, podtržení). Zadáte: ul -t dumb my_overstruck_file >
output_file. Příkaz ul převede přetisky na tučné znaky pro daný terminál tak, že do výstupního souboru přidá řídicí sekvence,
které je vygenerují. Jenomže „hloupý“ ter-minál nemá žádné řídicí sekvence, takže tím dosáhnete požadovaného výsledku.
Existují i jiné způsoby, tento je však pro „hloupý“ terminál nejvhodnější.
Jak získáme informace o rozhraní
Informace o rozhraní terminálu vám poskytnou tyto nástroje:
gitkeys: bitové kombinace (bajty) posílané jednotlivými klávesami.
tty: port, ke kterému jste připojeni.
set: hodnota vnější proměnné TERM (položka v databázi terminfo).
stty -a: nastavení všech stty.
setserial -g /dev/tty?? (?? si doplňte) vypíše typ UART, adresu portu a číslo IRQ.
infocmp: běžná položka v databázi terminfo (bez komentářů).
Změna nastavení terminálu
Nastavení terminálu je normálně provedeno jednou, když terminál instalujete pomocí procedur setup, jak popisuje manuál
terminálu. Nicméně, některá nastavení lze změnit i za provozu. Pří-klady stty (resp. setserial) se při činnosti terminálu obvykle
nezadávají, neboť by mohly způso-bit havárii rozhraní terminálu. Existují však změny, které si můžete dovolit provést. Nemají
vliv na integritu rozhraní a týkají se zejména vzhledu obrazovky a chování terminálu. Někdy tyto změny provedou samy aplikační
programy a nemusíte se o ně starat.
Jednou z přímých metod, jimiž takové změny můžete provést, je nastavovací klávesa (nebo podobná) na terminále a následné
použití nabídky (nebo něčeho podobného). Budete-li prová-dět tyto změny, měli byste dobře znát příslušný terminál. Další tři
metody spočívají v zasílání tří řídicích sekvencí na terminál. V následujících příkladech je pomocí těchto metod provedeno
inverzní zobrazení textu:
setterm -reverse,
tput -rev,
echo ^[[7m.
setterm
Tento příkaz je nejjednodušší. Obsahuje dlouhou volbu (avšak nikoli s obvykle používaným sym-bolem --). Příkaz zjistí v
databázi terminfo, jaký má poslat kód. Můžete jím změnit barvu, jas, zala-mování řádků, opakování kláves, vzhled kurzoru apod.
tput
Příkaz tput je podobný příkazu setterm, avšak jako parametry musí mít zkratky používané v data-bázi terminfo, nikoli běžná
slova. Mnohé zkratky nevyjadřují význam a nesnadno se pamatují.
echo
V příkladu echo ^[[7m, kterým nastavujete inverzní zobrazování textu, je znak ^[ řídicím znakem. Zadáte jej pomocí znaků ^V^
[ (nebo pomocí znaku ^V následovaného klávesou Escape). K této metodě si musíte v terminálovém manuále nebo v databázích
termcap, resp. terminfo, najít pří-slušný kód. Na příkazovém řádku je snazší používat příkazy setterm a tput. Naopak ve skriptech
(které se provádějí zejména při spouštění systému) je vhodnější příkaz echo, protože neprohle-dává žádnou databázi, a je tedy
rychlejší.
Ukládání změn
Změny, které jste provedli, budou po vypnutí terminálu ztraceny (pokud je ovšem v nastavova-cím režimu neuložíte do
permanentní paměti terminálu). Chcete-li je znovu uplatnit, aniž byste je museli znovu opisovat, uložte příslušné příkazy do
skriptu nebo si vytvořte shellovou funkci, kte-rou v případě potřeby můžete znovu spustit. Jedním z možných způsobů, jak takové
změny mohou být „jako trvalé“, je, když jsou tyto příkazy uloženy v souboru, který se spouští při přihla-šování nebo při zavádění
systému.
Vícenásobná sezení
Pomocí balíku screen můžete provozovat vícenásobná sezení, podobně jako virtuální terminály na konzole, viz kapitola
„Konzola: /dev/tty?“. Mezi jednotlivými sezeními se můžete přepínat. K podobnému účelu slouží i komerční program Facet
Term, viz http://www.facetcorp.com/ facetterm-overview.html.
Odhlašování
Odhlásíte se příkazy logout nebo exit. Příkaz může být za jistých okolností odmítnut, avšak důvod vám bude sdělen. Jedním z
důvodů odmítnutí může být skutečnost, že pracujete v jiném shellu, než v kterém jste se přihlásili. Odhlásit se také můžete
pomocí ^D. Vzhledem k tomu, že povel ^D se používá také k jiným účelům, může vám připadat odhlašování tímto povelem
nevhodné. V takovém případě nastavte v bash shellu IGNOREEOF , povel už nebude sloužit jako odhlášení.
Konverzace mezi terminály, slídění
Když si dva lidé přihlášení na terminálech ke stejnému počítači chtějí povídat, mohou k tomu pou-žít programy write nebo talk
(lepší ). Příkazem mesg lze zamezit posílání zpráv (psaní) na vlast-ní terminál (s výjimkou superuživatele).
Ke zjišťování toho, co někdo jiný dělá na terminále, použijte program ttysnoop. V tomto progra-mu mají dva terminály stejný
status a vše, co napíšete na některé z klávesnic, se objeví na tomtéž místě na obou obrazovkách. Chcete-li tedy někoho sledovat,
nepište nic.
Program ttysnoop lze také používat k výuce, kdy žák a vyučující sedí vedle sebe, každý u jed-noho terminálu. Učitel může
sledovat, co žák píše, a opravovat chyby tak, že zadává správný text. Žák sleduje učitelův text a může jej opisovat, jak kdyby oba
měli ruce na jedné klávesnici sou-časně.
Nevýhodou programu ttysnoop je, že oba terminály musí mít (nebo emulovat) stejný typ termi-nálu (např. vt100). Vzhledem k
tomu, že emulace „Linuxu“ na konzole (monitoru) a emulace minicom jsou podobné, ttysnoop je možné používat na dvou PC,
přičemž na jednom z nich běží minicom, který emuluje terminál.
Existuje také komerční program DoubleVision podobný ttysnoop, který toho však umí daleko víc. Terminály nemusí být stejného
typu, umí si zapamatovat a zopakovat sezení na terminálech, takže můžete zpětně zkoumat průběh sezení. Program naleznete na
adrese http://www.tridia.com.
Sdílení sériového portu
Jeden sériový port je také možné využívat současně pro textový terminál a pro jiné sériové zaří-zení, např. tiskárnu nebo modem.
Pomocí jedné z následujících metod je připojení velmi jedno-duché:
Odpojte kabel od terminálu a zasuňte jej do jiného zařízení.
Mezi terminálem a zařízením přepínejte pomocí AB přepínače (budete k tomu potřebovat 3 kabely).
Port pro tiskárnu (resp. pomocný port) na terminále použijte pro jiné zařízení.
Nepoužíváte-li sériový port pro připojení terminálu, musíte se přesvědčit, zda někdo omylem neposílá na tento port znaky, které
chce posílat na terminál. Možným, avšak málo bezpečným způ-sobem, jak to udělat, je nechat běžet programy, které běží na
terminálu, a předpokládat, že nepo-sílají na terminál nic, když používáte jiné zařízení. To někdy funguje, neboť terminál na
sériovém portu nijak nebrání jinému procesu, aby si tento port otevřel. Takhle to pracuje, když ono druhé zařízení je tiskárna.
Jestliže však druhé zařízení posílá nějaké bajty na sériový port počítače, pak program (programy), který dosud běží na portu, bude
posílat bajty zpět na terminál, jež však budou směřovat na ono jiné zařízení a ztratí se.
Abychom tomu předešli, je nejlepší ukončit všechny programy (procesy), které běží na terminále, ještě dřív, než začnete používat
druhé zařízení. Není to ovšem tak jednoduché, jak se zdá. Na portu obvykle běží shell (např. bash), a když jej ukončíte (například
se odhlásíte), program getty se spustí znovu na tomto portu a bude čekat na nové přihlášení. Když ukončíte getty, spustí se znovu.
Na první pohled se tedy zdá, že na sériovém portu terminálu není možné ukončit všech-ny procesy.
Jedním ze způsobů, jak lze tento problém obejít, je změnit úroveň běhu tak, aby na portu nebě-žel ani getty, ani shell. V případě
pevné úrovně běhu můžete vytvořit jinou úroveň, v níž na portu neběží žádné getty. Pak do této nové úrovně vstoupíte a začnete
používat sériový port k něčemu jinému. K tomu musíte upravit soubor /etc/inittab a zjistit (resp. i nastavit) prioritu getty.
Například řádek „ S1:23:respawn:/sbin/getty ...“ znamená, že getty poběží (na ttyS1) na úrov-ni 2 a 3. Nyní změníte úroveň pouze na
2 (vynecháte „3“) a jiné sériové zařízení budete používat s úrovní 3. Když tedy budete chtít používat sériový port pro něco jiného,
superuživatel zadá init 3, čímž se přepne do úrovně 3. Poznamenejme, že každá úroveň běhu může mít jinou množinu
inicializačních skriptů, můžete to však změnit tak, že jeden skript poběží na obou úrovních. Skrip-ty a úrovně běhu jsou závislé na
konkrétních distribucích. V případě Debianu naleznete vysvětle-ní v souboru /usr/doc/sysvinit, nahlédněte také do souboru /usr/
share/doc .
Existuje také problém s konfigurací portu pomocí stty. Port používaný pro terminál má určitou konfiguraci, avšak když ke změně
úrovně běhu použijete řekněme init 3 a na portu zablokujete getty, neobnoví se původní (zaváděcí) konfigurace a pravděpodobně
zůstane v „syrovém“ reži-mu. To znamená, že sériový port by nejspíš měl být programem stty plně zrekonfigurován, a to buď
spuštěním ze skriptu nebo z aplikačního programu běžícího na portu. Některé aplikace, např. tisk ze sériového portu, úplnou
rekonfiguraci neprovedou. Starší verze /etc/printcap zrekonfi-guruje port jenom částečně (avšak novější LPRng už plně). Možná si
tedy budete muset napsat vlastní skript. Konfigurace terminálu pomocí stty se budou lišit v závislosti na tom, zda na portu běží
shell, zda čeká na přihlášení (vypsal přihlašovací prompt) apod. Konfigurace po změně úrov-ně běhu tedy mohou být různé.
Prohlížeče pro terminál
Prohlížeč lynx pracuje korektně se všemi terminály. Existují i jiné textové prohlížeče: w3m, links a elinks, které jsou spolehlivé
pouze na linuxové konzole a terminálech xterm a vt100. Prohlížeč netrik vyžaduje barevný terminál. Prohlížeče links a elinks
musí mít nastaven terminál na 8 bitů bez parity (což jsem ohlásil jako chybu, neboť údajně mají pracovat i s paritou). Pro
zakódovanou komunikaci podporují všechny (včetně netrik??) ssl (secure socket layer).
V prohlížečích w3m, links a elinks byly odstraněny některé nedostatky, které jsou v lynx; elinks je pouze vylepšený links. Lépe
vypisují tabulky a umí zobrazit rámečky vedle sebe. Bohu-žel však jsou zobrazované údaje (tabulky a rámečky ) často širší než
obrazovka a přesahují přes její pravý okraj. Obrazovku je nutno posunout ve vodorovném směru, takže zase zmizí z obra-zovky
jména řádků. Z toho důvodu je v některých případech lépe použít lynx.
Prohlížeče w3m, links a elinks narozdíl od lynx bohužel nemají číslované řádky a ani nemají náležitou podporu cookies. Žádný z
textových prohlížečů zatím nemá podporu Javascriptu, údaj-ně se na nich teprve pracuje (snad v roce 2003). Prohlížeče links a
netrik mají podporu Java-scriptu prozatím pouze částečnou.
Existovaly i další projekty textových prohlížečů, avšak některé z nich zřejmě usnuly.
Speciální využití terminálů
Jak udělat z terminálu konzolu
Popíšeme si, jak můžete změnit textový terminál (nebo emulátor PC) na „sériovou konzolu“. Řada systémových zpráv je posílána
pouze na konzolu (monitor PC). Když po úspěšném zavedení systé-mu zadáte příkaz dmesg, některé zprávy také mohou být
posílány na terminály. To je však k niče-mu, neboť nepodaří-li se zavést systém, nebudou funkční ani terminály. Jádro Linuxu lze
ovšem upravit tak, že terminál může sloužit jako konzola a budou na něm vypisovány všechny zprávy smě-rované na konzolu.
Bohužel, jediné, co se na terminále nevypíše, jsou zprávy od BIOSu (to je to první, co se vypisuje po zapnutí počítače). Tyto
zprávy se vypíší na monitoru v každém případě.
Na toto téma existuje návod, který se jmenuje Remote-Serial-Console-HOWTO. Někdo provozuje PC pouze se sériovou
konzolou, tedy bez monitoru a bez klávesnice. Obvykle není možné spus-tit PC bez klávesnice a bez videokarty, avšak některé
BIOSy to umožňují. Máte-li to štěstí, že tako-vý BIOS máte (umí přesměrovat konzolu), pravděpodobně bude stačit jen při
zapnutí PC nastavit BIOS pomocí nabídky CMOS.
Metoda, jak vytvořit „sériovou konzolu“, závisí na verzi jádra. V každém případě by ovšem měla být sériová podpora součástí
jádra, nikoli zaváděným modulem.
Jádra 2.2 a vyšší
Pokyny k vytvoření sériové konzoly jsou uvedeny v dokumentaci jádra (v souboru documenta-tion/serial-console.txt ). Dokumentace
k jádru 2.4+ je zpracovaná lépe a je v ní zmínka
o nutnosti použít na sériový port program getty. Zařízení /dev/console se obvykle odkazuje na tty0 (konzola PC). Nový soubor /dev/
console pro sériovou konzolu vytvoříte příkazem:
mknod -m 622 console c 5 1
Příkazy pro ovládání sériové konzoly musíte doplnit i do souboru /etc/lilo.conf a spustit jej. Důvodem je skutečnost, že před
zavedením jádra je nutno spustit ekvivalent programu setserial, aby mohl být na sériové konzole vypisován průběh zavádění
systému. Podrobnosti viz výše zmí-něná dokumentace jádra a také manuálové stránky lilo.conf.
Zde je příklad souboru /etc/lilo.conf (pro ttyS0): prompt timeout=50 boot = /dev/sda vga = normal # force sane state install = /boot/boot.b
message = /boot/message image = /vmlinuz root = /dev/sda1 label = console serial = 0,9600n8 append = “console=ttyS0”
Jeden počítač může mít i několik sériových konzol, avšak hlavní konzolou, která komunikuje s počítačem, se stane konzola
uvedená v příkaze append jako poslední?? Viz dokumentace jádra (není to z ní ovšem příliš jasné).
Jádra před verzí 2.2
V roce 1997 vyšel v dubnovém čísle časopisu Linux Journal článek o záplatách jádra Linuxu. Nazačátek souboru src/linux/drivers/
char/console.c přidáte několik příkazů #define: #define CONFIG_SERIAL_ECHO#define SERIAL_ECHO_PORT 0x2f8 /* Adresa sériového
portu */
Následující příkazy už v článku nebyly. V jádru 2.+ (a starších ??) musíte také nastavit rychlost pře-nosu (nevyhovuje-li 9 600).
V následujících dvou řádcích:
serial_echo_outb(0x00, UART_DLM); /* rychlost 9600 */ serial_echo_outb(0x0c, UART_DLL);
zaměníte 0x0c za (vyberete požadovanou přenosovou rychlost): Vybíráte-li zaváděný systém (pomocí LILO) na konzole, avšak
chcete pracovat na terminále, musí-te přidat jeden řádek do souboru /etc/lilo.conf . Najděte si v manuálových stránkách soubor
lilo.conf a vyhledejte v něm řetězec „serial=“.
115200 baudů: 0x01
57600 baudů: 0x02
38400 baudů: 0x03
19200 baudů: 0x06
9600 baudů: 0x0c
4800 baudů: 0x18
2400 baudů: 0x30
1200 baudů: 0x60
Provozování Linuxu bez monitoru
Jedním z možných způsobů, jak provozovat Linux bez monitoru, je používat jako monitor sério-vou konzolu. Viz kapitola „Jak
udělat z terminálu konzolu“. Přesto můžete potřebovat videokartu, neboť mnohé BIOSy ji vyžadují při spouštění systému. Mohou
rovněž vyžadovat klávesnici anebo mají volbu, jíž je možno tuto podmínku v BIOSu zrušit.
Zavádíte-li systém bez monitoru, přesvědčte se, že se zavaděč (např. LILO nebo GRUB) nepokouší poslat na obrazovku žádný
obrázek. Textový terminál jej neumí zobrazit a zavádění by mohlo zůstat „viset“.
Máte-li terminál bez klávesnice, můžete si z něho pomocí programu ttysnoop také udělat moni-tor. Zatím však nepracuje jako
konzole, neboť nedostává všechny úvodní zprávy o zavádění systé-mu. Viz následující kapitola.
Jak používat terminál bez klávesnice jako monitor
Principy činnosti
I když o terminálu bez klávesnice si můžete myslet, že je k ničemu, přece jen jej lze použít jako monitor a psát přímo na
klávesnici PC. Lze to provést pomocí „špionážního“ programu ttysnoop. Pomocí tohoto programu můžete na jednom terminále
sledovat („čenichat“), co se děje na jiném terminále (nebo i na konzole/monitoru).
Předpokládejte nyní, že píšete na monitoru tty1, a představte si, že vás někdo (pomocí progra-mu ttysnoop) sleduje na monitoru
ttyS2. Nyní postavte „špionážní“ terminál (na ttyS2) vedle monitoru tty1. Vše, co píšete na klávesnici PC, se nyní bude zobrazovat
na dvou obrazovkách před vámi: na monitoru i na špionážním terminále. Nyní při psaní pozorujte pouze špionážní ter-minál. A
teď rozpojte terminál a klávesnici, která je k němu připojena a kterou stejně nepoužívá-te. Od tohoto okamžiku jste začali
používat terminál bez klávesnice jako monitor. Jednoduché a vtipné řešení!
Může vzniknou problém (který, jak se ukáže, vlastně ani problémem není), že by špionážní a sle-dovaný terminál asi měly být
stejného typu. Vzhledem k tomu, že monitor je obvykle deklarován jako terminál typu „linux“ (hodně podobný vt100), mohlo by
se zdát, že skutečný terminál by také měl být (anebo alespoň emulovat) vt100. To však vůbec není nutné! Když například máte
termi-nál wyse60, stačí (nesprávně) deklarovat, že na tty1 máte terminál wyse (tj. programu getty řek-nete, že tty1 je wyse60).
Zde je důvod, proč se tímto problémem nemusíte zabývat. Vraťme se ke scénáři v okamžiku, kdy máte před sebou monitor i
terminál wyse60 a oba vypisují totéž (anebo se o to pokoušejí). Pro-gram ttysnoop posílá na wyse60 stejné bajty jako na monitor.
Pokud jste nesprávně zadali, že monitor je typu wyse60, ttysnoop pošle na monitor i na terminál wyse60 řídicí sekvenci wyse60.
Výpis na wyse60 bude v pořádku, zatímco výpis na monitoru bude nesmyslný, neboť obdržel řídi-cí sekvenci wyse60. Vy ale
monitor nepoužíváte (a nejspíš jej i odpojíte), nesmyslný výpis tedy vlastně nikomu nevadí (stačí jen dělat, že jej nevidíte).
Příklad konfigurace
Nejde o ideální nastavení, neboť ttysnoop je spuštěn tak pozdě, že se ani nevypíše přihlašovací prompt. Tento příklad se vztahuje
k terminálu wyse60 na ttyS2 a k chybějícímu monitoru/PC klá-
vesnici na tty1. Místo getty je zde použit agetty z distribuce Debian. Program getty by mohlvyžadovat jiný formát.V /etc/inittab:
1:2345:respawn:/sbin/getty 38400 tty1 wyse60 -ln /usr/sbin/ttysnoops
Poznamenejme, že ttysnoop/ttysnoops je kombinace klient/server, takže „s“ na konci není pře-klep. Nezadáte-li -n, možná se vám
na terminále nevypíše přihlašovací prompt, neboť agetty jej pošle dřív, než je aktivovaný ttysnoop. S volbou -n neposílá prompt
agetty, nýbrž login. Zadá-te-li -n, agetty nebude automaticky zjišťovat paritu, a pokud ji nepoužíváte, vše bude v pořádku.
V /etc/snooptab: # tty snoopdev type execpgm tty1 /dev/ttyS3 init /usr/local/bin/sterm
Pomocí skriptu sterm (shora) se spouští program stty. Nemusí to být nutné anebo může být vhod-ný pro jiný účel. Příklad skriptu
sterm v souboru /usr/local/bin/sterm: #!/bin/sh stty rows 24 /bin/login $@
Odstraňování závad
Domníváte-li se, že jde o hardwarovou závadu, viz kapitola „Opravy a diagnostika“. V případě nefunkční klávesnice viz kapitola
„Klávesnice “. Opisují-li se nesprávně znaky z klávesnice (pokud se vůbec něco opisuje), viz kapitolu „Poškozené rozhraní
terminálu“. Týká-li se problém sériové-ho portu samotného, viz kapitola „Návod k sériovému portu“.
Zde je seznam možných závad:
Podezření na vadný terminál. Je v pořádku?
Displej zamrzá (terminál zůstává viset).
Vypisují se podivné znaky a symboly.
Vypisují se řídicí sekvence.
Chybějící text. Některý text se nevypíše nebo se vypíše, ale zůstává viset.
Všechny klávesy píší chybně nebo je nutno je stisknout několikrát.
Po spuštění programu getty z příkazového řádku se program zastaví a vypíše se „stopped“.
Program getty se spouští příliš rychle (zpráva „chyba konzoly“).
Po přihlášení zhavaruje.
Nelze se přihlásit, avšak přihlašovací prompt je vypsán.
Zkomolený přihlašovací prompt.
Nevypisuje se přihlašovací prompt.
Závady terminálů můžeme rozdělit do dvou skupin. První skupina závad jsou případy, kdy termi-nál už fungoval, avšak najednou
nejde. O těchto závadách je následující podkapitola. Druhou sku-pinou jsou případy, kdy terminál nefunguje hned po
nainstalování. V takovém případě můžete následující kapitolu přeskočit.
Terminál fungoval
Když terminál fungoval a něco se s ním stane, závadu lze obvykle nalézt poměrně snadno. Vylou-číme-li hardwarovou závadu,
problém vznikne většinou v důsledku něčeho, co jste sami způso-bili (nebo co způsobil software, který jste použili).
Problém může být tak očividný jako chyba vypsaná při prvním zapnutí terminálu. Vydá-li podivný zvuk, asi potřebuje opravit.
Viz kapitola „Opravy a diagnóza“. Nejdříve přemýšlejte, co se v poslední době změnilo a co nejspíš způsobilo problém. Nastal
problém ihned po nainstalování nového systémového softwaru nebo po změně konfigurace?
Neodpovídá-li terminál na zadávaný text, jak má (odpovídá-li vůbec), můžete mít poškozené rozhraní terminálu (viz kapitola
„Poškozené rozhraní terminálu“).
Nově nainstalovaný terminál
Pokud jste terminál právě připojili k počítači podle návodu a on nefunguje, tato kapitola je urče-na právě vám. Pokud terminál,
který fungoval, nyní nefunguje, viz kapitola „Terminál fungoval“. Máte-li podezření na vadný sériový port, můžete zkusit spustit
diagnostický testovací program. V červnu 1998 se zdá, že Linux takový program ještě neměl a budete muset použít diagnostiku
DOS/Windows. Existují programy pro monitorování různých sériových linek, jako např. DTR, CTS apod., které mohou pomoci
lokalizovat závadu. Viz Monitorování/diagnostika sériového připoje-ní.
Jednou z možností je vyzkoušet, zda bude terminál fungovat, když na něj ve zcela jednoduché situ-aci pošlete kopii souboru (cp
my_file /dev/ttyS?). To znamená se zablokovanými řídicími linka-mi modemu a s přenosovou rychlostí odpovídající rychlosti
zobrazování na obrazovce, jež nevy-žaduje řízení přenosu (přesvědčte se, zda je řízení toku zablokované). Pokud kopírování
funguje, situaci trochu zkomplikujte, zkuste znovu zobrazit kopii souboru atd. Pokud se závada projeví po bezprostředně po určité
změně, příčinou bude pravděpodobně právě tato změna. Ve skutečnosti je efektivnější (avšak složitější) přeskočit z jednoduché
situace zhruba na poloviční cestu ke koneč-né konfiguraci tak, abyste vyloučili zhruba polovinu možných příčin závady a při
příštím testu tuto metodu zopakovali. Z tisíce možných příčin tak naleznete skutečnou příčinu zhruba po deseti tes-tech. Nic se
nestane, když tuto metodu půlení intervalů nebudete aplikovat zcela přesně.
Je terminál v pořádku?
Při zapnutí některých terminálů se na obrazovce objeví nějaká slova. Pokud nejde o chybové hlá-šení, nic se neděje. Jestliže do
terminálu nejde proud (tmavá obrazovka apod.), zkuste na obou stranách vytáhnout a znovu zasunout síťový kabel. Přesvědčte se,
zda je zásuvka, resp. prodlužo-vací šňůra, pod proudem. Máte-li jiný síťový kabel, vyzkoušejte jej. Zkontrolujte, jestli je terminál
zapnutý a zda není spálená pojistka. Příčinou světlé (nebo tmavé) obrazovky může být stažený jas nebo kontrast nebo některá
klávesa může být v nastavovacím režimu.
U delší dobu nepoužívaného terminálu může trvat zahřívání poněkud déle, než se pod napětím zahřejí elektrolytické
kondenzátory. Pokud ani to nepomůže, viz tipy v kapitole „Opravy a diagnóza“.
Máte-li podezření, že se zapnutým terminálem není něco v pořádku, přejděte do „lokálního reži-mu“, v němž funguje jako psací
stroj, a zkuste něco napsat. Viz kapitola „Lokální režim“. Než se pustíte do hledání, přesvědčte se, zda terminál umí ohlásit
hardwarovou chybu. To můžete zjistit například tak, že zapnete terminál s odpojenou klávesnicí – měl by ohlásit chybu.
Chybějící text
Vypíše-li terminál několik řádků a pak přestane psát (například uprostřed slova apod.) anebo chybí určité úseky textu, vypadá to
na problém s řízením toku dat. Pokud nepřijdete na příčinu ihned, zkuste snížit přenosovou rychlost. Pomůže-li to, jste nejspíš na
správné stopě. Řízení nemu-sí fungovat vůbec vinou nesprávné konfigurace nebo kvůli vadné kabeláži (v případě hardwaro-vého
řízení). Viz kapitola „Řízení toku dat!“.
Pokud funguje psaní na klávesnici, avšak z každých poslaných 16 znaků z počítače se jich vypí-še jen několik (nebo i jen jeden ),
pravděpodobně jste zadali programu setserial nesprávný UART. Stává se to u starších portů (16550 a nižších), zatímco programu
jste zadali 16550A nebo vyšší.
Chybí-li v textu jen jednotlivé znaky, pravděpodobně je zahlcen sériový port příliš vysokou pře
nosovou rychlostí. Zkuste ji snížit.Máte-li zařízení s přenosovou rychlostí nižší než 1 200 baudů (například starý terminál, který
píšena papír nebo tiskárny) a text je uříznutý, příčinou může být ovladač sériového zařízení. Viz návod„Tisk v Linuxu“, kapitola
„Sériové tiskárny“.
Klávesy šifrují nebo je nutno je stisknout několikrát
V této situaci musíte klávesu stisknout několikrát, než zafunguje (a dívat se, jestli se skutečně vypsala). Napíšete-li slovo, mohou
chybět některá (nebo všechna) písmena. Chybí-li písmena v příkazu, neprovede se. Také se může stát, že písmena v příkaze jsou
sice všechna, avšak musí-te opakovaně stisknout klávesu return, než se příkaz provede.
Příčinou může být skutečnost, že sériový port si otevřely dva různé procesy a oba se snaží číst znaky z klávesnice. Jeden znak
přečte jeden proces (ten správný, například shell), další znak pře-čte druhý proces. Může to být třeba proces, který obsluhuje
sériovou myš (např. gpm) a který pře-čtené znaky neopisuje. Takže zadávané znaky „žere“ jiný proces, který běží na stejném
ttySx. Které procesy běží na ttySx, zjistíte pomocí příkazu ps -alx a ten, který způsobuje závadu, může-te ukončit.
Mohli byste spoléhat na to, že podobným situacím předejdete pomocí programu lockfiles. Avšak ani terminál, ani program gpm
na ovládání myši program lockfile nepoužívají, a to právě z toho důvodu, aby na terminál mohl psát i někdo jiný.
... příliš rychlé spouštění: zablokovat na 5 minut Co se děje
Na konzole uvidíte například zprávu „Getty respawning too fast: disabled for 5 minutes“. Místo „getty“ tam může být návěští
(např. Id „S2“), kde S2 je návěští řádku v souboru /etc/inittab, odkud byl volán program getty.
Když se spustí getty, zkusí poslat na sériový port přihlašovací zprávu. Je-li však v systému něco závažnějšího v nepořádku, getty
je okamžitě ukončen. Vzhledem k tomu, že řádek, kterým se spouští getty v souboru /etc/inittab, říká, že má být spuštěn znovu,
getty se skutečně spustí a znovu je ukončen, což se opakuje stále dokola. V této situaci zasáhne systém a toto nesmyslné počínání
(na pět minut) ukončí. V následující kapitole jsou uvedeny pravděpodobné příčiny a jejich odstraňování.
Nesprávný řádek getty v souboru /etc/inittab
Přesvědčte se, že řádek, který v souboru /etc/inittab volá getty, je zadán správně. Problém může způsobit i překlep v „ttySx“ (v
programu uugetty je to„DTxxxx“) nebo v „getty“.
Chybí řídicí signál od modemu
Neposílá-li terminál signál CD na jeden z pinů sériového portu PC, program getty bude ukončen, neboť v programu getty nebyla
zadána volba „local“. Problém snadno odstraníte tím, že zadáte tuto volbu (v programu agetty -L, v programu ps_getty v
souboru /etc/gettydefs „CLOCAL“).
Jinou možností je zjistit, proč není nastaven CD. Často se stává, že k pinu CD nevede žádný vodič, takže musíte zadat volbu
„local“. Pokud je pin CD zapojený, nemusí na něm být signál, dokud nezapnete terminál síťovým vypínačem. Poznamenejme
ještě, že někdy je na terminále (anebo i na počítači) pin CD nahrazen pinem DTR a jsou propojeny v konektoru.
Takové sériové zařízení neexistuje
Je-li zařízení jen hypotetické (fyzicky neexistuje nebo je zablokované), getty bude ukončen. Zaříze-ní můžete vyzkoušet
programy scanport (pouze v Debianu??) nebo setserial, nebo můžete zkusit jiné zařízení. Zařízení bylo pravděpodobně
zablokováno CMOS, viz návod „Serial-HOWTO“.
Chybí podpora sériového připojení
Podporu sériového připojení buď musíte zadat při překladu jádra nebo zavedením sériového modulu v době běhu: serial.o. K
chybě „opakovaného spouštění“ programu getty dochází tehdy, když nebyl proveden žádný z těchto úkonů. Zda je sériový modul
zaveden, můžete zjistit pomocí příkazu lsmod. Pokud byste chtěli zjistit, zda je zabudovaný v jádru, budete si muset pro-hlédnout
konfigurační soubor jádra (v /boot, ve zdrojovém stromě apod.).
Zkratovaná klávesa
Další možnou příčinou častého opakovaného spouštění programu getty může být zkratovaná klá-vesa, což se projevuje stejně,
jako kdybyste drželi klávesu trvale stisknutou. Je-li aktivováno opa-kování klávesy, jako odpověď na prompt generuje klávesa
tisíce znaků. Podívejte se, zda není celá obrazovka popsána stejnými znaky (v některých případech i dvěma nebo více různými
znaky).
Zhavaruje ihned po přihlášení
Pokud se úspěšně přihlásíte, avšak ihned poté je terminál nefunkční, důvodem může být skuteč-nost, že shell po spuštění
zrekonfiguruje terminál (nastaví jej nesprávně) příkazem, který je obsa-žen v některém ze souborů, které se provedou po
přihlášení a po spuštění shellu. Patří k nim sou-bory /etc/profile a ~/.bashrc. Vyhledejte příkaz, který začíná na stty nebo setserial, a
pře-svědčte se, zda v něm není chyba. To však ještě nemusí stačit. I když jeden inicializační soubor funguje správně, může
nastavení změnit jiný inicializační soubor, o kterém nevíte. V takovém pří-padě je nutno opravit systém pomocí záchranné diskety
z jiného terminálu nebo z konzoly, pří-padně na lilo prompt odpovědět příkazem „linux single“. Po jeho provedení přejde systém
do jed-nouživatelského režimu, ve kterém se neprovádějí startovací soubory.
Není možné se přihlásit
Vypíše-li se přihlašovací prompt, avšak na pokusy o přihlášení počítač neodpovídá (anebo odpo-vídá zmateně), pravděpodobnou
příčinou je nesprávná komunikace ve směru z terminálu na počí-tač. Může to být špatný nebo nesprávně propojený kabel, resp.
konektor. Pokud jste ještě nepře-šli do lokálního režimu, přejděte do něj, abyste vyřadili z činnosti řídicí linky modemu. Viz kapitola „Getty (použití v /etc/inittab)“. Můžete také zablokovat hardwarové řízení toku dat (stty -crt-scts), je-li aktivováno. Pokud se
terminál po těchto změnách rozběhne, pravděpodobně nejsou správně zapojeny řídicí linky modemu anebo je chyba v nastavení.
Některé terminály mohou mít nastavenu jinou hodnotu (např. přenosovou rychlost) na vysílání a jinou na příjem, takže příjem
je v pořádku, avšak vysílání je nastaveno chybně. Také byste mohli zkusit zadat na konzole příkaz stty < /dev/ttyS1 (používáte-li
ttyS1), abyste viděli, že je nastaven korektně. Často bývá v „syrovém“ režimu (což je pravděpodobně správné) s volbami -icanon
nebo -echo apod. Je-li terminál nastaven chybně v poloduplexu (HDX), jedna sadu znaků, kterou vidíte při psaní, jde přímo z
terminálu. Jsou-li znaky zdvojeny, ozvěny z počí-tače jsou v pořádku a terminál můžete přepnout do plného duplexu. Je-li však
nastaven polodu-plex a vidíte pouze zdánlivé „ozvěny“, ve skutečnosti nejdou z počítače, jak by správně měly.
Dostanete-li zprávu „login failed“ (nebo podobnou) a neudělali jste chybu ani v přihlašovacím jménu, ani v hesle, mohli jste být
odmítnuti kvůli určitým omezením, jimž podléhá přihlašování. Bohužel, zpráva nic neříká o důvodu odmítnutí. Viz kapitola
„Omezení přihlášení“.
Nesprávný přihlašovací prompt
Může být způsoben nesprávnou znakovou množinou, chybami přenosu při vysoké rychlosti, nekompatibilních přenosových
rychlostech, nesouhlasné paritě nebo chybném počtu bitů v bajtu. Je-li chybných znaků mnoho, používáte nesprávnou znakovou
množinu nebo je nejvyšší bit omy-lem nastaven na jedničku. Jsou-li ve slovech chyby, zkuste snížit přenosovou rychlost. K
chybám souhrnně označovaným jako „chybný znak“ dochází vinou nekompatibility přenosové rychlosti, parity nebo počtu bitů/
znak a takto poškozený znak je vypsán zcela jinak než znak původní, nepoškozený. Může vypadat třeba jako obrácený otazník,
obdélník nebo jinak podivně.
Program agetty (často se jmenuje jen getty) při psaní rozpozná a nastaví paritu a počet bitů na znak. Můžete si to vyzkoušet, řádek
ukončete znakem return.
Chybí přihlašovací prompt
Pokud se ani po opakovaném stisknutí klávesy return nevypíše přihlašovací prompt, proveďte následující kontrolu: Pomocí
programů top nebo ps se přesvědčte, zda skutečně na terminálu pro-bíhá proces getty (nebo login). Je terminál připojen ke zdroji
napětí? Je nullmodemový kabel ve správných portech jak na terminále, tak i v počítači?
Také zjistěte, zda proces getty „nevisí“, tj. nečeká na signál CD (a zda je vůbec v kabelu přísluš-ný vodič napojený na signál CD).
Pokud není signál přítomen, musíte některým ze dvou násle-dujících způsobů zadat programu getty volbu „local“:
V programu getty_ps (Redhat apod.) jsou to dva příznaky CLOCAL v souboru /etc/get-tydefs (viz kapitola „getty –
getty_ps“).
V programu agetty (Debian apod.) příznak -L v souboru /etc/inittab.
Pokud neprobíhá proces getty (resp. login), pečlivě zkontrolujte tvar volání getty v souboru /etc/inittab. Přesvědčte se, zda
obsahuje správnou úroveň běhu (zjistíte ji příkazem runlevel) a zda je příslušná k vaší verzi getty. Někdy pomůže zrušení procesu
getty, resp. login (automa-ticky se spustí znovu).
Terminál pracoval správně
I když nelze vyloučit ani hardwarovou chybu, pravděpodobnější bude chyba lidského faktoru. Nemohl někdo poškodit kabel?
Neupravoval někdo soubor /etc/inittab nebo neprováděl jiný zásah do přihlašovací procedury? Pokud ne, čtěte dál.
Další diagnóza
Postupy shora by měly vést k odhalení nejčastějších příčin (pokud jste si právě nenainstalovali ter-minál). Dalšími příčinami může
být chyba v hardwaru nebo v kabeláži (kabel musí být určen k přenášení souborů), nastavení terminálu na nesprávnou rychlost
přenosu, terminál může být v lokálním režimu atd. V tomto bodě se vydáme dvěma směry (můžete se jimi vydat současně).
Diagnostika problému z konzoly.
Měření napětí.
Diagnostika problému z konzoly
Jedním z testů je zkusit něco zkopírovat na terminál (vhodný způsob zejména krátce po startu instalační procedury, ještě než
nastavíte getty). Můžete zadat třeba příkaz cp file_name /dev/ttyS1 anebo echo any_word > /dev/ttySx. Pokud nefungují, co
nejvíce zjednodušte roz-hraní pomocí programu getty tak, že zablokujete co nejvíce funkcí (tj. hardwarové řízení toku dat: crtscts ; paritu a signály modemu: clocal). Přesvědčte se, zda jsou shodné přenosové rychlosti a počty bitů/znak. Když nic z toho
nepomůže, ověřte pomocí voltmetru, zda je port „živý“, viz následující kapitola.
Měření napětí
Máte-li voltmetr, zkontrolujte na souborovém kabelu na straně terminálu na pinu 3 (receive data, příchozí data) záporné napětí (od
-4 do -15 V). Kladnou zdířku voltmetru dobře uzemněte (kovo-vé konektory na kabelu často nebývají dostatečně uzemněny).
Pokud na pinu nenaměříte zápor-né napětí, změřte ještě přenosový pin (TxD) na počítači (rozložení pinů viz kapitola „DB9DB25“). Pokud tam záporná hodnota je, avšak není na pinu pro příjem (RxD) na terminále, kabel je vadný (špatné propojení,
přerušený vodič anebo to není souborový kabel zvaný též nullmodem). Není--li napětí na počítači, je vadný port. Otestujte jej
diagnostickým programem anebo jej rovnou vyměňte.
Je-li sériový port živý, můžete na něj zkusit poslat soubor (se zablokovaným řízením modemu) a sledujte signál na voltmetru
(nebo na jiném elektronickém přístroji). Na voltmetru sledujte, zda je napětí trvale záporné, když se nic nepřenáší. Pak začněte
posílat soubor (nebo spusťte getty). Na analogovém voltmetru by při přenosu bitů měla ručička klesnout téměř k nule a chvět se
kolem ní. Na digitálním voltmetru změny neuvidíte, avšak přepněte na střídavé napětí, které je vlastně vytvářeno tokem bitů.
Pokud voltmetr nelze přepnout na střídavé napětí (u většiny analo-gových voltmetrů implicitní), můžete improvizovaně sledovat
střídavé napětí na stejnosměrné stupnici na -12 V. Nemáte-li voltmetr, můžete k sériovému portu připojit zařízení, o němž víte, že
je funkční (např. jiný terminál nebo externí modem), a vyzkoušet je.
Vypisuje podivné znaky a symboly
Nezaměnujte za kapitolu „Vypisuje řídicí posloupnosti“. Jestli se na obrazovce vypisuje něco jiného, než co byste očekávali,
avšak vypadá to jako nějaká cizí abeceda, matematické symboly, kreslené znaky apod., může být, že většina bajtů posílaných na
terminál má nastavený nejvyšší bit (i když by neměla mít). Vypisuje se znaková množina (nebo její část) s nejvyšším bitem
rovným
1. To se může stát, když máte špatně nastavenou přenosovou rychlost nebo paritu (na stty). Máte--li paritu nastavenou, avšak v
terminále jsou osmibitové znaky bez parity, nejvyšší bit (=paritní) bude často nastaven chybně. Zkuste zadat z jiného terminálu
stty -F /dev/ttyS?, abyste ověřili správnou přenosovou rychlost a paritu.
Také je možné, že byla nainstalovaná nesprávná znaková množina (fonty). Chybná řídicí sekven-ce poslaná na terminál může
přepnout znakové množiny. Pokud používáte ke změně mapování kláves program mapchan, může být chyba v něm.
Vypisuje řídicí sekvence
Na obrazovce se objevuje něco jako „5;35H22,1“ nebo „3;4v“ nebo „1;24r“ nebo „^[[21;6H“ atd. Pochopitelně čísla a písmena
mohou být jiná. Budou přeházená (buď náhodně nebo v nezvyklém pořadí). Na displeji bude změť znaků a terminál bude
pravděpodobně vykazovat i jiné závady. Některé aplikace a příkazy budou vypisovat nesmysly.
To, co vidíte na displeji, jsou řídicí sekvence (nebo jejich zlomky), které byly poslány na terminál, aby jej řídily, avšak terminál je
nerozpoznal a poslal je na obrazovku. Pravděpodobně používáte program, který se chybně domnívá, že používáte jiný terminál.
Proto posílá řídicí sekvence, kte-rým terminál nerozumí. Na displeji se mohou dít podivné věci. Ověřte, zda je správně nastavena
vnější proměnná TERM (zadejte: echo $TERM).
Telnet
Problém, jak získat správnou hodnotu proměnné TERM, může být v případě používání telnetu poněkud složitější. Telnet
neemuluje terminál, nýbrž předává hodnotu proměnné TERM vzdálené-mu počítači. Pokud ten nepodporuje používaný typ
terminálu anebo na vzdáleném počítači chyb-ně nastaví hodnotu TERM , nastanou potíže. Telnet by měl nejdříve na vzdáleném
počítači správ-ně nastavit hodnotu TERM. Změny hodnoty proměnné TERM na vzdáleném počítači mohou být způsobeny
nesprávným konfiguračním souborem shellu. Nejdříve musíte zkontrolovat hodnotu proměnné TERM jak na vašem, tak i na
vzdáleném počítači. Výklad je poněkud zjednodušený, neboť je možné, že váš telnetový klient vám ohledně serveru poskytne celý
seznam hodnot pro-měnné TERM, které váš počítač podporuje (pokud telnet ví, že váš počítač umí emulovat víc než jeden typ
terminálu).
Terminál je nastaven tak, aby vypisoval řídicí sekvence
Jinou možnou příčinou může být skutečnost, že terminál je ve zvláštním režimu, v němž řídicí sekvence neprovádí, nýbrž
vypisuje. V takovém případě je rovněž uvidíte na obrazovce, avšak budou vypsány uspořádaně. Přesně řečeno je to režim pro
výpis řídicích kódů. Vzhledem k tomu, že všechny řídicí sekvence začínají řídicím kódem (znakem „escape“), terminál nepozná,
že jde
o řídicí sekvenci, a celou ji pošle na obrazovku. Viz kapitola „Řídicí kódy“.
Zpomalení:
znaky
jsou
několikasekundovým zpožděním
vypisovány
s
Pravděpodobně máte špatně nastaveno přerušení – viz Serial-HOWTO, kapitola, která začíná slovem „Slow“.
Terminál neroluje
Příčinou může být chyba v databázi terminfo. Anebo je možné, že jste mimo rolovací oblast termi-nálu. Některé špatné programy
předpokládají, že terminál má 24 řádků, a na tuto hodnotu nastaví (řídicí sekvencí) rolovací oblast, aniž by se podívaly do
terminfo na skutečný počet řádků. Jiný pro-gram pak umístí kurzor třeba na řádek 25, kde zůstane trčet a terminál neroluje. Tento
problém odstraníte tak, že vytvoříte a nastavíte vnější proměnnou: export LINES=25 a také stty -F /dev/ttySx rows 25. Pak si snad
program, který počítá s 24 řádky, nastaví rolovací oblast správně.
Monitorování sériového portu/diagnostika
Některé linuxové programy mohou monitorovat řídicí linky modemu a sdělovat, jestli jsou kladné
(1) nebo záporné (0).
statserial (distribuce Debian).
„Soubor “: /proc/tty/driver/serial. Monitorování zadáte pomocí „watch head...“. Poky-tuje informace o chybách a datovém
toku.
Modemstat (pracuje pouze na linuxové konzole PC; lze jej zadat na příkazovém řádku).
Možná, že tyto programy už máte. Pokud ne, naleznete je na stránkách Serial Software (http://ibiblio.unc.edu/pub/Linux/system/
serial/). Při používání mějte na paměti, že tyto programy signalizují stav linek na centrálním počítači. Situace na terminále může
být jiná, neboť některé vodiče velmi často chybějí a neodpovídá jejich propojení. K červnu 1998 nevím o žádném dia-gnostickém
programu pro sériový port.
Lokální režim
V lokálním režimu je terminál odpojen od počítače a chová se jako psací stroj (s tím rozdílem, že nepíše na papír, nýbrž na
obrazovku). Když se vrátíte do on-line režimu, terminál se znovu při-pojí k počítači a můžete pokračovat tam, kde jste skončili při
přechodu do „lokálního“ režimu. Této možnosti lze využít jak pro testování terminálu, tak i pro výuku. Některé terminály lokální
režim nemají, nahrazuje jej však „blokový režim“. Pokud ani ten nemají, může stačit „poloviční duplex“ s tím rozdílem, že text
zadávaný na klávesnici je přenášen do počítače. V takovém pří-padě může počítač znaky opakovat, což by se projevilo zdvojeným
výpisem všech znaků zada-ných na klávesnici. Tento jev odstraníte tak, že vypnete počítač, odpojíte kabel RS-232 apod.
V lokálním režimu můžete zadávat řídicí sekvence (uvedené klávesou ESC) a sledovat, jak na ně terminál reaguje. Nepracuje-li
terminál správně v lokálním režimu, je nepravděpodobné, že bude fungovat, když jej připojíte k počítači. Nejste-li si zcela jisti,
jakou má určitá řídicí sekvence funk-ci, můžete si ji vyzkoušet v lokálním režimu. Také si můžete takto vyzkoušet terminál, když
jej kupujete. Některé terminály při přechodu do lokálního režimu vyžadují, abyste je nejdříve pře-pnuli do nastavovacího režimu
a režim „local“ vybrali z vypsané nabídky (anebo stiskli určitou klá-vesu). Viz kapitola „Přechod do nastavovacího
(konfiguračního ) režimu“.
Měřicí přístroje
Přístroje pro testování linek atd.
Zatímco v případě testování několika sériových portů si vystačíte s multimetrem (zapojeným jako voltmetr), pro testování
sériových linek byly vyvinuty speciální jednoduché přístroje. Mají několik konektorů, které se připojují ke konektorům sériového
portu (jak na straně kabelu, tak i na zadní straně počítače). Některé mají měřicí body pro připojení voltmetru, jiné mají diody
LED, které se rozsvítí, když je na řídicí lince signál. Polaritu signálu (kladné nebo záporné napětí) pak mohou indikovat i barevně.
Jiné přístroje mají možnost vodiče propojovat a přerušovat.
V roce 2002 prodávala firma Radio Shack pod katalogovým číslem 276-1401 testovací přístroj „RS--232 Troubleshooter“
(původně nazývaný „RS-232 Line Tester“). Zelená kontrolka znamená +12 V (zapnuto), červená -12 V (vypnuto). Také nabízejí
přístroj „RS-232 Serial Jumper Box“, kat. číslo 276-1403, jehož pomocí propojíte libovolné piny. Obě položky najdete v katalogu
pod ozna-čením „Peripheral hookup helpers“. Bohužel nejsou v rejstříku tištěného katalogu. Jsou na téže straně jako konektory
typu D, takže v rejstříku je nutno je hledat pod označením „Connectors, Computer, D-Sub“. Mohou je také mít obchodní řetězce,
které prodávají „aktivní komponenty“.
Měření napětí
Běžné voltmetry nebo multimetry, i ty nejlevnější, které stojí kolem 10 dolarů, by měly úplně sta-čit. Jiné metody zjišťování
napětí jsou nepřímé. Diodu LED nepoužívejte, pokud ji nemáte zapo-jenou v sérii s odporem, který sníží proud protékající
diodou. Pro 20 mA diodu (existují i diody s jinou hodnotou) použijte odpor 470 Ω. Dioda bude svítit pouze při určité polaritě,
takže lze zkoušet jen kladné nebo záporné napětí. Nezkoušeli jste si zhotovit podobný přístroj pro testová-ní elektrických obvodů
ve výbavě automobilu?? Mohli byste si poškodit sondu, neboť napětí logic-kých obvodů, pro něž je určena, je pouze 5 voltů.
Zkoušet dvanáctivoltovou žárovkou není dobrý nápad, neboť ta jednak neukáže polaritu a navíc kvůli omezenému výstupnímu
proudu UART se pravděpodobně ani nerozsvítí.
Při měření napětí na samičím konektoru můžete do otvoru vsunout sponku na papír. Průměr drátu, z něhož je zhotovena, by neměl
být větší než pin, abyste nezničili kontakt. Na sponku pak připojte krokodýlka (nebo něco podobného). Dbejte, abyste se nedotkli
žádným kovovým předmětem dvou pinů současně.
Ochutnávka
Když nemáte žádné testovací zařízení a nevadí vám rána elektrickým proudem (anebo že vás to zabije), jako poslední možnost
můžete zkoušet napětí jazykem. Než se pokusíte otestovat někte-rý vodič, vyzkoušejte, zda v něm není vysoké napětí. Dotkněte se
jednou rukou dvou vodičů sou-časně, abyste viděli, jestli kopou. Pokud nikoli, olízněte si ruku v místě dotyku a zkuste to znovu.
Dostanete-li ránu, určitě nezkoušejte vodiče jazykem.
12 voltů otestujete tak, že si olíznete prst a dotknete se jím vodiče. Druhý vodič si dejte na jazyk. Je-li vodič na jazyce kladný,
ucítíte výraznou chuť. Nejdříve si to můžete vyzkoušet na baterii do kapesní svítilny, abyste věděli, jakou chuť můžete očekávat.
Oprava a diagnóza
Oprava terminálu má mnoho společného s opravou monitoru a klávesnice. Někdy je na obrazov-ku vypsána vestavěná
diagnostika. Závadu lze často lokalizovat podle příznaků: vadná klávesni-ce, nefunguje obrazovka, chyba v elektronice
(zdeformovaný obraz) nebo závada v digitálním systému. Nejlepší je mít servisní manuál, avšak jde to i bez něho.
Knihy a internetové stránky určené pro opravy Knihy
Bigelow, Stephen J.: Troubleshooting & Repairing Computer Monitors, 2. vyd., McGraw-Hill, 1997. Nezahrnuje elektroniku pro
generování znaků a ani klávesnici.
Internetové stránky
Často kladené otázky (FAQ), http://www.repairfaq.org, diskusních skupin: skupina sci.electro-nics.repair je rozsáhlá a má široký
záběr, i když není určena jenom pro terminály. Viz kapitola „Computer and Video Monitors“. Řadu informací z jednotlivých částí
lze využít i pro terminály: „Testing Capacitors“, „Testing Flyback Transformers“ atd. Možná v budoucnosti budou informace v
tomto návodu obsahovat pouze odkazy na často kladené otázky uvedené výše (anebo podob-né). Dalším zdrojem informací je
archiv diskusní skupiny Shuford's repair archive (http://www.cs.utk.edu/~shuford/terminal/repair_hints_news.txt).
Bezpečnost
V barevných obrazovkách bývá napětí až 30 000 voltů (v monochromatických poněkud nižší). Je--li monitor pod napětím a má
odstraněný zadní kryt, musíte být velice opatrní a ničeho se nedo-týkat. Pravděpodobně by vás to nezabilo, protože protékající
proud je nízký. Avšak nejspíš byste byli popálení, utrpěli šok apod. U vysokého napětí dochází k výboji, který může projít
porušenou izolací, takže ruce mějte v bezpečné vzdálenosti. K jedné straně obrazovky je připojen důkladně zaizolovaný kabel. I
když je přístroj vypnutý, je v místě připojení kabelu k obrazovce tak velké zbytkové napětí, že by vám mohlo dát elektrickou
ránu. Toto napětí můžete vybít šroubovákem (s izolovanou rukojetí) s kovovým ostřím uzemněným k zemnícímu vodiči kabelu.
Neuzemňujte jej ke kostře!
Nižší napětí (stovky voltů) mohou být nebezpečnější, neboť není omezen protékající proud. Nebezpečí se zvyšuje, když máte
vlhké ruce nebo hodinky s kovovým páskem, prsten apod. Stane se, že někoho to i zabije, takže buďte velice opatrní! Nižší napětí
s hodnotami pouhých několik voltů v číselných obvodech jsou zcela bezpečná, avšak nedotýkejte se ani jich (leda dobře
izolovanými nástroji), pokud si nejste zcela jisti.
Nastavení displeje
Je-li displej matný, pomocí ovládacích prvků umístěných zvenku na zařízení (pokud tam jsou) zvyšte jas a kontrast. Displej má
ovládací prvky také na šířku, výšku a vycentrování obrazu. U některých starších terminálů se nastavování provádí šipkami.
Někdy je nutno kvůli nastavení odstranit z displeje zadní kryt, zejména u starších modelů. Když nastavujete displej, postavte si
před něj větší zrcadlo tak, abyste v něm displej viděli. Nastavovací prvky mohou být na tištěných obvodech desky. Možná budete
potřebovat jen obyčejný nebo kří-žový šroubovák, na cívky se používají speciální nástroje (plastové pinzety). Na desce s obvody
by měla být uvedena zkratka druhu nastavení. Zde jsou příklady těchto zkratek:
V-Size: nastavení výšky obrazu.
H-Size: nastavení šířky obrazu. Může to být cívka.
V-Pos: umístění obrazu ve svislém směru.
H-Pos: umístění obrazu ve vodorovném směru.
V-Lin: nastavení svislé linearity (když řádky v horní a dolní části obrazovky nejsou stejně silné).
V-Hold: nastavení vertikální stability (když obrazovka nekontrolovaně ubíhá).
Nastavení jasu (knoflík může být ovládaný i zvenku).
Pomocné nastavení jasu ve ztlumeném režimu (často jde o normální režim: je matnější než běžný jas).
Změna linearity může změnit velikost obrazu, kterou je pak nutno znovu nastavit. Terminál, který se po určitou dobu nepoužíval,
může mít zmenšený obraz lemovaný tmavým okrajem. Než jej začnete nastavovat, nechte jej chvíli zahřát, obraz se může trochu
zlepšit sám (tmavé okraje se zúží).
Stanovení diagnózy
Terminál vydává zvuky nebo se z něho kouří
Vydával-li terminál nějaké zvuky těsně před tím, než se porouchal (anebo po zapnutí, když už je v poruše), mohou tyto zvuky být
vodítkem k nalezení závady. Slyšíte-li zvuky nebo vidíte (cítíte) kouř, ihned terminál vypněte, abyste nezpůsobili další škody.
Prasknutí může způsobit explodující kondenzátor nebo spálená tavná pojistka. Jiskření se projevuje prskavým zvukem. Problém
může být ve vysokonapěťovém napájení (tisíce voltů). Odstraňte zadní kryt. Prohlédněte si kondenzátory, zda nejsou zabarvené,
vyduté nebo jinak poškozené. Není-li místo závady viditelné na první pohled, terminál znovu krátce zapněte a sle-dujte, zda
odněkud nejde kouř nebo neuvidíte jiskření. Snáze je najdete v tmavší místnosti. Jiskře-ní může způsobit porušená izolace
vysokonapěťového kabelu (který vede od vysokonapěťového transformátoru k boční straně obrazovky). V takovém případě je
nutno jej natřít izolačním nátě-rem nebo speciální izolační páskou určenou pro napětí řekněme 10 000 voltů.
Vysokonapěťový transformátor může při poruše vydávat pouze jemné cvakání nebo praskání, které je někdy slyšet až po vypnutí
a opětovném zapnutí terminálu. Zvuk můžete vystopovat pomocí gumové hadičky (používají se například v automobilech), kterou
použijete jako stetoskop. V průběhu hledání se však terminál může poškodit ještě víc, takže si s hledáním pospěšte (avšak se vší
opatrností, abyste nepřišli k úrazu elektrickým proudem).
Příčinou spálení tavné pojistky může být zkrat v napájení a její výměnou nemusí být problém odstraněn – může se spálit v
důsledku stejného zkratu. Pokuste se nalézt tmavé skvrny způsobe-né vysokou teplotou a součástky, které je mohly způsobit,
přezkoušejte. Přepálení pojistky mohou způsobit také zkratované výkonové tranzistory. Lze je proměřit testerem nebo také jen
ohmmet-rem. Ohmmetrem začněte měřit na nejnižší stupnici, neboť jí odpovídá i nejnižší zkušební napětí. Minimalizujete tím
případné škody na dobrých součástkách, které by toto testovací napětí mohlo způsobit.
Pokud byl terminál po určitou dobu vystaven vlhkosti, např. byl uložen na vlhkém místě, poblíž kuchyně, z níž šla pára, může se
podařit odstranit závadu vysušením jednotky. Někdy pomůže, když „vadný“ vysokonapěťový transformátor vysušíte proudem
horkého vzduchu (stačí pár minut).
Terminál nevydává žádný zvuk
Není-li na obrazovce vůbec nic, může to být způsobeno nastavením jasu na nejnižší hodnotu, případně stářím obrazovky. Dále je
nutno zkontrolovat, zda nemají kabely utržené nebo nalomené konektory. Nejde-li do terminálu proud, zkontrolujte napětí v
zásuvce a pak vyzkoušejte jinou síťovou šňůru.
Máte-li podezření na klávesnici, přezkoušejte ji na jiném terminále stejného typu nebo ji nahraďte dobrou klávesnicí. Na obou
koncích zahýbejte kabelem klávesnice. Vodiče v kabelu mohou být nalomené, zejména těsně u konců. Pokud při hýbání kabelem
zjistíte, že závada mizí a znovu se objevuje, je nutno kabel vyměnit, opravit přerušený vodič apod.
Při zjišťování závad klávesnice nejprve přepněte terminál do lokálního režimu. Pokud v tomto reži-mu funguje, problém bude
nejspíš v připojení k počítači (nebo v nesprávném rozhraní), případ-ně v elektronice terminálu.
Detektivní práce
Pečlivě si prohlédněte schéma, snáze naleznete příčinu závady. Zkuste najít změnu zabarvení, prasklinky apod. Občasnou závadu
můžete najít i tak, že na součástky poťukáte tužkou (nikoli kovovou, pochopitelně). Přerušený kondenzátor na desce s tištěným
obvodem můžete někdy najít tak, že desku ohnete. Zkuste přepájet spoj, kde cín vytvořil kapku nebo kde je ho málo. Pájením
můžete polovodič (a jiné součástky) přehřát a zničit, při pájení jej pokud možno ochlazujte. Při odstraňování závady může dojít k
poškození jiné součástky, takže i když závadu najdete, může se objevit jiná.
Máte-li běžný typ terminálu, může se vám podařit najít na Internetu příčiny nejčastějších závad ter-minálu (anebo i diskusní
skupinu, která se touto problematikou zabývá) a rady k jejich odstraně-ní. Zjistíte-li, která součástka je vadná (např. R214 wyse),
můžete se pokusit ji na Internetu najít, možná i s komentářem někoho, kdo měl stejný problém. V tomto komentáři třeba budou
zmíně-ny i jiné součástky, které se poškodily současně. Je-li součástka zničena tak, že nelze přečíst, co je na ní napsáno, můžete si
ji najít na Internetu. Výrobce může mít i on-line údaje, které nenajdete běžnými vyhledávacími programy.
Chcete-li zjistit, zda funguje digitální elektronika, zkuste (musíte mít funkční klávesnici ) na termi-nále s poruchou něco napsat.
Tento text se pokuste přečíst a pomocí příkazu copy nebo termi-nálovým komunikačním programem (např. minicom) vypsat na
fungujícím terminále (nebo na konzole). Aby se řádek odeslal, možná budete muset na terminále stisknout klávesu return. Někdo
se může z jiného terminálu zeptat vadného terminálu na identitu apod. Ukáže se, zda fun-guje obousměrná komunikace.
Chybové zprávy na obrazovce
Uvidíte-li na obrazovce výpis chybové zprávy, jste šťastný člověk. Stává se to při prvním zapnutí terminálu.
Chyba klávesnice
Obvykle to znamená, že není připojena klávesnice nebo že není navázáno spojení. Vážnější problémy viz kapitola „Klávesnice“.
Chyba kontrolního součtu v permanentní paměti (NVR)
Permanentní paměť označujeme NVR („Non-Volatile RAM“). Znamená to, že jsou poškozena nasta-vovací data. Terminál
pravděpodobně bude fungovat, avšak je ztracena naposledy uložená konfi-gurace. Zkuste jej zkonfigurovat znovu a konfiguraci
uložit, může se to podařit. Na velmi starých terminálech (počátek 80. let) byla paměť CMOS, do níž byla ukládána konfigurace,
napájená bate-rií, takže v takovém případě je vybitá baterie. Někdy, po mnohonásobném uložení, dojde k poško-zení
mikroprocesoru EEPROM (který nepotřebuje baterii). Chyba paměti se hledá těžko. Pokud se vám to nepodaří, musíte vzít
zavděk implicitní konfigurací nebo můžete po každém zapnutí posí-lat na terminál určité řídicí sekvence, jimiž se pokusíte
terminál zkonfigurovat.
Kondenzátory
Elektrolytické kondenzátory mají kovový obal, a když se dlouho nepoužívají, může klesat jejich kapacita anebo úplně přestanou
fungovat. Někdy stačí terminál na chvíli vypnout. Pokud máte tu možnost, uskladněné terminály třeba jednou za rok zapněte do
sítě.
Poznamenejme, že levné kondenzátory, které jsou určeny do audiozařízení, nemusí vydržet náročný provoz ve
vysokofrekvenčních obvodech. Ty by měly být osazeny nízkoodporovými (low ESR) kondenzátory. Nepolarizované (NP)
kondenzátory buď vyměňte nebo nahraďte bipolárními.
Trvá-li zahřívání displeje několik minut, důvodem mohou být právě vadné elektrolytické kondenzátory. Vadný kondenzátor
najdete pomocí jednoduchého triku: Podezřelý kondenzátor zdvojíte funkčním kondenzátorem (musí být určen nejméně pro stejné
napětí a musí mít přibližně stejnou kapacitu). Pokud se funkce displeje výrazně zlepší, pravděpodobně jste našli vadný
kondenzátor. Při takových pokusech buďte velmi opatrní, pozor na úraz elektrickým proudem! Skutečné napětí proti zemi může
být mnohem vyšší než napětí uvedené na kondenzátoru.
Klávesnice Zaměnitelnost
Klávesnice terminálů nejsou stejné jako klávesnice PC. Rozdíl nespočívá pouze v rozložení kláves, nýbrž i v kódech
generovaných jednotlivými klávesami. Klávesnice různých výrobců a modelů tedy nejsou zaměnitelné. Někdy může být
klávesnice nekompatibilní pouze částečně. Znakové klávesy fungují správně, speciální klávesy však mají jinou funkci.
Princip činnosti
Když stisknete klávesu, ve většině klávesnic se pouze spojí dva vodiče. Převod na kód, který je odeslán do kabelu, provede
elektronika v mikroprocesoru klávesnice. Aby nemusely být všechny klávesy propojeny s mikroprocesorem samostatným
vodičem (drátem), používá se následující schéma: Vodiče očíslujeme např. od 1 do 10 a od A do J. Vodič 3 vede k několika
klávesám, vodič B také vede k několika klávesám, avšak oba vodiče 3 a B vedou současně pouze k jedné kláve-se. Při stisknutí
klávesy jsou zkratovány tyto dva vodiče, z čehož mikroprocesor pozná, která klá-vesa byla stisknuta. Toto schéma snižuje počet
vodičů (a také počet pinů na mikroprocesoru). Schéma je podobné křížovému vypínači.
Nové a staré klávesnice
I když staré i současné klávesnice vypadají přibližně stejně, princip činnosti je jiný. Staré kláves-nice měly pod každou klávesou
spínač uzavřený v pevném plastovém pouzdře. Současné kláves-nice mají pod klávesami velké plastové membrány ve velikosti
klávesnice s dírkami. Jsou vloženy mezi jiné dvě membrány, které obsahují tištěné spoje (včetně kontaktů). Když stisknete
některou klávesu, stisknou se v určitém bodě i dvě membrány s tištěnými spoji a v tomto bodě dojde ke kontaktu.
Jedním stisknutím napíšete dva různé znaky
Jsou-li v důsledku závady zkratovány vodiče 3 a 4, po stisknutí klávesy 3-B je zkratována i 4-B a mikroprocesor si myslí, že byly
stisknuty obě klávesy, tedy 3-B a 4-B. Vypíší se 2 znaky, i když jste chtěli vypsat pouze jeden.
Klávesnice vůbec nefunguje
Pokud nefunguje ani jedna klávesa, zkuste jinou klávesnici (máte-li), abyste si ověřili, že problém je v klávesnici. Jednou z příčin
může být přerušený drát v kabelu spojujícím klávesnici s terminá-lem. Nejpravděpodobnějším místem, kde je vodič přerušen, jsou
oba konce kabelu. Zkuste jimi při psaní na klávesnici pohybovat, abyste zjistili, zda závada občas nezmizí. Najdete-li vadné
místo, můžete kabel v tomto místě opatrně naříznout nožíkem a přerušený vodič spojit. Kabel pak zai-zolujte izolační páskou,
zalepte nebo utěsněte. Nefunguje-li klávesnice proto, že je vlhká, je nutno ji nechat vyschnout.
Stisknete b, vypíše se bb atd. (zdvojování znaků)
Pokud jsou zdvojovány všechny znaky, příčina pravděpodobně nebude v klávesnici. Nejspíš je špatně nastavený terminál na
poloviční duplex (HDX nebo lokálně echo=on) a všechny znaky jsou opisovány jak terminálem, tak i počítačem. Nejsou-li oba
znaky stejné, příčinou může být zkratovaná klávesnice, viz kapitola „Jedním stisknutím napíšete dva různé znaky“.
Opakují se řádky stejných znaků
To se může stát, je-li aktivováno opakování znaků a klávesa je trvale stisknutá (nebo téměř trvale). Klávesa může být zaseknutá
nebo zkratovaná – výsledek je stejný.
Klávesa je zaseknutá
Nejdříve ji zkuste několikrát stisknout, což ovšem asi nepomůže. Dále z ní můžete zkusit sejmout klobouček (pokud je
snímatelný) a kolíček klávesy trochu prostříknout čisticím prostředkem. Zkuste jím pohybovat střídavě nahoru a dolů a do stran.
Pokud to nepomůže, vyjměte celý spí-nač a vyčistěte jednotlivé součástky.
Pokud se rozhodnete odstranit klobouček, viz kapitola „Klávesnice s jednotlivými přepínači“. Opa-kovaně stlačujte kolíček,
dokud klávesa nezačne fungovat a vypisovat znaky na obrazovce. Ně-které klávesy se zaseknou kvůli tomu, že mají zespodu
ulepený klobouček. Pokud zůstane ve zcela spodní poloze, může být příčinou tohoto problému. I tato místa je nutno někdy
vyčistit.
Kolíčkem kývejte do stran malým šroubováčkem, abyste jím současně mohli prstem pohybovat nahoru a dolů. Můžete jím kývat
do čtyř stran, vyzkoušejte je všechny. Těmito pohyby vlastně z kolíčku odstraňujete cizorodé částečky, které se nalepily na
kolíček z boku a upaplaly ho. Problém se může časem opakovat.
Klávesu vždy vyzkoušejte ihned po opravě a potom po chvilce ještě jednou. Pomalu ji stlačujte a pozorujte, jestli lepí. Při
stlačování jí také jemně zakývejte. Při prudším stisknutí si nemusíte všim-nout, že lepí. Můžete tak přijít na klávesu, která sice
funguje, avšak v budoucnosti by s ní mohla být potíž.
Zkratovaná klávesa
Máte-li podezření na zkrat v klávese, zkuste nejdříve vyčistit kontakty, viz kapitola „Čištění kontaktů klávesnice“.
Klávesnici jste něčím polili
Jestliže se vám podařilo vylít na klávesnici vodu nebo podobnou tekutinu (anebo byla-li vystave-na dešti, husté mlze nebo jiné
vlhkosti ), některé (nebo i všechny) klávesy nemusí fungovat. Vlh-kost může klávesu zkratovat (jako kdyby byla trvale stisknutá),
a je-li aktivováno opakování klá-ves, může se celá obrazovka popsat jedním znakem. Jestliže jste klávesnici částečně (nebo úplně)
vysušili, některé klávesy ještě mohly zůstat nefunkční vinou nečistot, které zůstaly na povrchu kontaktů. U nových klávesnic
můžete z klávesnice vyjmout plastové membrány, usušit je a vyčis-tit. Starší typy klávesnic můžete vysušit na sluníčku nebo v
troubě (pochopitelně při nízké teplo-tě). Po vysušení mohou některé klávesy ještě vyžadovat vyčištění, viz dále.
Čištění kontaktů v klávesnici
U novějších klávesnic lze plastové membrány snadno vyjmout, prohlédnout je, a je-li to nutné, také vyčistit. Musíte jen povolit
několik šroubků, abyste klávesnici rozebrali a dostali se k nim. U někte-rých starších klávesnic IBM nejdou membrány vyjmout
bez vylomení několika plastových plošek, které pak musíte nalepit zpět (klávesnice je pro opravy velmi nevhodná). Takovou
klávesnici pak můžete opravit jedině tak, že ji ohýbáte, kroutíte jí a bušíte do ní v místech, kde jsou membrány.
Klávesnice se spínači
Následující popis platí pro starší klávesnice, které mají pro každou klávesu samostatný spínač. Než se pustíte do práce s čištěním
elektrických kontaktů, zkuste nejdříve obrátit klávesnici vzhůru nohama a ťuknout na vadné klávesy. Mohou z nich vypadnout
nečistoty, zvláště když klávesu stisknete silou a prudce, aby zavibrovala. Často pomůže, když stisknutou klávesou kýváte do stran.
Pokud to nepomůže, můžete zkusit vyčistit spínač tekutým čističem kontaktů (dostanete jej v elek-troprodejnách), obvykle ve
spreji. Ke spínači se dostanete tak, že nejdříve odstraníte klobouček klávesy (čtvereček, do něhož ťukáte prsty při psaní).
Upozornění: U novějších klávesnic nejsou kloboučky snímatelné. Můžete si pomoci šroubováčkem, který zasunete pod
klobouček, a prstem přitom zmírňujete příliš velký náklon. Existuje speciální nástroj na snímání kloboučků z kláves, avšak určitě
si poradíte i bez něho. Klobouček můžete při snímání trochu naklonit a zaviklat s ním. Může vám najednou i vyskočit a spadnout
na zem.
Pak si při čištění kontaktů můžete vybrat ze dvou možností: Buď jej můžete vyčistit přímo sprejem, který nastříkáte na spínač
shora, nebo klávesu rozeberete a vyčistíte (nejlepší je, když jde rozebrat snadno). Jinou možností je, že celý spínač vyměníte za
nový nebo za použitý, avšak s tím bývá hodně práce (a nový spínač není zadarmo).
Postříkat spínač sprejem bez rozebírání je nejrychlejší způsob, avšak čisticí prostředek se nemusí dostat až ke kontaktům, které
má vyčistit. Spínač před ošetřením trochu očistěte. Je-li klávesnice zapojená (anebo je-li napojená na ohmmetr), čisticí prostředek
nanášejte pomocí trubičky, která je přiložena ke spreji, aby se čisticí prostředek dostal dovnitř. Při sprejování pohybujte kolíčkem
nahoru a dolů. Dbejte na to, aby se čisticí prostředek nedostal pod sousední klávesy, kde by se mohl smísit s prachem a společně
s ním prosáknout do spínačů. Dopustíte-li se této chyby, možná opravíte vadnou klávesu, avšak poškodíte sousední. Pokud se to
přece jen stane, ihned opakovaně tiskněte sousední klávesy, dokud nezačnou znovu fungovat.
Klávesnici trochu nakloňte, aby čisticí prostředek lépe zatekl do kontaktů. V případě terminálu CIT101e s klávesnicí Apls to
znamená nadzvednout horní řadu číselných kláves. Jak budete při ošetřování kontaktů se spínači mírně pohybovat tužkou nebo
šroubováčkem, dejte pozor, aby se čisticí prostředek nedostal na holou kůži (anebo si raději nasaďte rukavice). Klávesnici pak
otoč-te vzhůru nohama a přebytečný roztok nechte odtéct. Čím víc roztoku do klávesnice nastříkáte, tím spíš se vám podaří
vadnou klávesu opravit, avšak tím víc také můžete znečistit a poškodit sou-sední klávesy, takže musíte pracovat s citem. Jakmile
začne klávesa fungovat, trochu ji proťukejte a po několika minutách ji vyzkoušejte znovu, abyste se přesvědčili, že stav je trvalý.
Někdy se stane, že klávesa sice funguje, když je roztok na kontaktech, avšak jakmile za pár minut vyschne, zůstanou na
kontaktech nečistoty po odpařeném roztoku, které brání dokonalému kon-taktu. Klávesa pak může znovu začít dělat chyby (pokud
vůbec bude fungovat). Proto je dobré ťukat na klávesu, už když vysychá. Některé spínače mají kontakty v plastovém pouzdru
téměř zatavené, takže se k nim nedostane skoro žádný čisticí roztok a to málo, co k nim proteče, může s sebou přinést nečistoty
(z toho důvodu je dobré očistit horní část spínače, ještě než začnete vstři-kovat čisticí roztok).
Pokud byste chtěli spínač rozebrat, musíte nejdříve zjistit, zda je to vůbec možné (a pokud ano, jak se rozebírá). Někdy lze
odstranit kryt spínače, aniž byste jej museli vyjmout z klávesnice. Nej-dříve musíte vypáčit (nebo vytáhnout) vrchní část spínače,
která je zajištěna plastovými destička-mi, ty musíte nejdřív odstranit. Možná se vám obojí podaří pomocí dvou malých
šroubováků. Ne-smíte páčit silou, mohli byste destičky zlomit. Nejdou-li uvolnit, bude lepší spínač odpájet a vyjmout, pak jej
můžete jak opravit, tak i vyměnit. Když je spínač rozebraný, možná ještě kon-takty neuvidíte, jsou těsně u sebe (téměř se
dotýkají). Čisticí roztok můžete vstřiknout do štěrbiny mezi kontakty, aby mezi ně zatekl. Potom kontakty tenkým šroubovákem
trochu rozevřete, roz-tok se k nim dostane rychleji. Kontakty pak šroubovákem střídavě rozevírejte a nechte vracet do původní
polohy, rychleji se vyčistí. Současně pozorujte obrazovku, jestli už klávesa funguje.
Kontakty mohou být zajištěny svorkou, kterou je nutno odstranit. Nepoztrácejte malé součástky, mohou ze spínače vyskočit a už
je nikdy nenajdete. Jako poslední možnost můžete zkusit pohyb-livou část spínače, na niž tlačí kolíček, trochu přihnout, aby tlačil
na kontakt větší silou. Na mém terminále vypadá tato součástka jako elektrický kontakt, avšak pouze stlačuje skutečný elektrický
kontakt přes tenkou izolaci.
Když pak dáváte spínač dohromady, přesvědčte se, zda je pružinka na správném místě. Jde-li po smontování klávesa příliš lehce
nebo příliš ztuha, pružinka asi není správně umístěna. Má-li pružinka být zapuštěna do otvoru v kolíčku klávesy, můžete ji tam
dočasně „vlepit“ pomocí kapičky vody, kterou kápnete na konec pružinky. Tento konec pak vsuňte do otvoru v kolíčku a spínač
rychle složte, než voda vyschne. Pružinka by tak neměla vypadnout. Místo lepení pružinky vodou můžete postupovat také tak, že
klávesnici postavíte na výšku nebo vzhůru nohama, aby pružinka při montáži nevypadla.
Obecně
Seznam terminálových příkazů v Linuxu
Posílání příkazu na terminál
setterm: dlouhé volby,
tput: zkrácené volby,
tset: pouze inicializace,
clear: smazání obrazovky,
setterm -reset: poslání resetovacího řetězce.
Konfigurace ovladače terminálu
setserial
stty
Terminfo
Terminfo Compiler (tic): překladač terminfo.
toe: seznam terminálů, pro něž existují soubory v terminfo.
infocmp: porovnává nebo zobrazuje položky v terminfo.
Ostatní
gitkeys: přehled bajtů posílaných jednotlivými klávesami na počítač.
tty: přehled připojených tty portů.
set (nebo tset -q): hodnota proměnné TERM, jméno položky v terminfo.
tset: interaktivní nastavení a inicializace TERM.
Internet a knihy Informace o terminálech na Internetu
Shuford's Website (http://www.cs.utk.edu/~shuford/terminal_index.html), University of Tennessee, mnoho užitečných
informací o textových terminálech.
Informace o terminálech VT, historie: http://www.vt100.net/.
Boundless (http://www.boundless.com/Text_Terminals/) odkoupil obchod s terminály VT a Dorio od firmy DEC.
Specifikace naleznete na odkazech na ADDS, VT a DORIO, pak vyberte odkaz „data link“. Odtud pak vyberte odkaz „Go to
Specs “.
Wyse má podrobné informace (např. řídicí sekvence) ve své znalostní databázi (http://www.wyse.com/service/support/
kbase/wyseterm.asp). Není tak obsáhlá jako manuál, neboť obsahuje pouze obecné vlastnosti. Současné modely viz http://
www.wyse.com/ products/gpt/index.htm.
Teemworld Escape Sequences (http://www.ecc400.com/java/twproae.htm) je seznam řídi-cích sekvencí (a řídicích
znaků) pro některé emulace terminálů (např. VT 100, 300, 420 a Wyse).
ncurses FAQ (http://dickey.his.com/ncurses/ncurses.faq.html).
comp.terminals je diskusní skupina o terminálech.
Knihy o terminálech
Sériový port EIA-232 viz knihy o EIA-232 (RS-232) na adrese http://tldp.org/HOWTO/ Text-TerminalHOWTO-22.html#RS232 _books.
Opravy viz knihy o opravách & internetové stránky na adrese http://tldp.org/HOWTO/ Te-xt-TerminalHOWTO-19.html#repair_info.
Databáze Terminfo viz dokumenty o databázi Termcap na adrese http://tldp.org/ HOW-TO/Text-TerminalHOWTO-15.html#termcap_docs.
Souhrnné knihy o terminálech
Pokud vím, neexistuje vyhovující souhrnná kniha o textových terminálech. I když tento návod vyšel jako kniha, nepředpokládám,
že byste si ji koupili, máte-li přístup k on-line verzi, kterou zhruba každý měsíc aktualizuji. Následující tituly mají spíše
historickou cenu:
Handbook of Interactive Computer Terminals, Duane E. Sharp; Reston Publishing Co. 1977 (velmi zastaralá).
Communicating with Display Terminals, Roger K. deBry; McGraw-Hill 1985 (zejména
o synchronních terminálech IBM).
První uvedený titul podává stručný přehled o více než 100 různých modelech zastaralých termi-nálů vyrobených počátkem 70. let
minulého století více než 60 různými výrobci. Obsahuje popis principů činnosti, bohužel v diagramu znázorňujícím obrazovku je
chybně znázorněno vychylo-vání elektronových paprsků (str. 36). Ve skutečnosti terminály využívají k vychýlení toku elektro-nů
magnetismus (dokonce už v 70. letech). V knize je vysvětlena řada moderních technických poznatků, jako např. „vektorové
skenování“ nebo „princip průniků barev“.
Druhá kniha se na rozdíl od prvního titulu se při popisu terminálů nezabývá fyzikálními a elekt-rotechnickými podrobnostmi.
Celá jedna kapitola je věnovaná dvojkové soustavě (což je v knize
o terminálech zbytečné, neboť tyto informace jsou běžně dostupné i jinde). V knize jsou popsány zejména terminály IBM (hlavně
3270 ) v blokových a synchronních režimech. Pro současné ANSI terminály používané v unixových systémech je kniha k
nepotřebě. I když je o nich v knize zmín-ka, chybí jakákoli schémata připojení k sériovým portům.
Knihy, které obsahují jednotlivé kapitoly o terminálech
V těchto kapitolách není o terminálech jako takových a o jejich funkcích prakticky nic. Popisují spíše nastavování počítačů (a
ovladačů terminálů) v souvislosti s terminály. Vzhledem k rozdílům mezi unixovými systémy jich ani pro Linux většina není
vhodná.
■
Unix Power Tools, Jerry Peck et. al., O'Reilly 1998. Kap. 5: Setting Up Your Terminal, Kap.
41: Terminal and Serial Line Settings, Kap. 42: Problems With Terminals.
Advanced Programming in the Unix Environment, W. Richard Stevens, Addison-Wesley, 1993. Kap. 11: Terminal I/O,
Ch. 19: Pseudo Terminals.
Essential System Administration, Aleen Frisch, 2. vyd., O'Reilly, 1998. Kap. 11: Terminals and Modems.
V prvním titulu najdete 3 krátké kapitoly o textových terminálech. Obsahují méně popisů než tento
návod, avšak více příkladů.V kapitole 11 v druhé knize je pouze popsán ovladač jako součást systému a jsou vysvětleny parametry příkazy stty nutné pro konfiguraci terminálu.
Třetí kniha je napsána dobře, je věnována více terminálům než modemům.
Nelinuxové operační systémy
V operačním systému MS DOS existuje příkaz „ctty COM2“, který slouží k výpisu příkazového řádku na sériovém terminále (v
našem případě COM2). Pak už bohužel není možno používat monitor, neboť MS DOS není víceuživatelský operační systém. Také
nelze připojit více než jeden terminál. Tato funkce je tedy prakticky k ničemu. Pokud emulujete DOS pod Linuxem pomocí
dosemu, můžete údajně používat několik terminálů. Avšak, také údajně, s nimi nespolupracuje emulace PCTerm (Platí to ještě ??).
Zatímco firma Microsoft nevytvořila „víceuživatelský DOS“, našli se tací, kteří jej vytvořili. Lze v nich používat několik
terminálů připojených k jednomu PC. Je softwarově kompatibilní s MS DOS. Jeden z těchto víceuživatelských systémů se
jmenuje „REAL/32“, k emulaci terminálů se pou-žívá „pcterm“. Existuje i nastavovací režim „scan“ (scancodes), je nutno jej
ovšem nastavit. Ostat-ní operační systémy jako PICK, PC-MOS a Concurrent DOS byly (resp. dosud jsou) víceuživatel-ské a
podporují terminály.
V Linuxu existují 3 programy, jejichž prostřednictvím můžete provozovat windowsové aplikace pod Linuxem zdarma: Wine,
komerční: VMware a NeTraverse. Mohou používat textové terminály pod DOSem? Systém Wine nikoli, nemá totiž režim DOS.
Zbývající dva vyžadují spuštění operač-ního systému MS Windows jako „hostujícího operačního systému“. MS Windows má
režim DOS, avšak není víceuživatelský, takže je prakticky nepoužitelný.
V jiných operačních systémech typu Unix je konfigurace počítače pro terminály obvykle podstat-ně jiná než v Linuxu. Zde jsou
odkazy na on-line manuály unixových systémů:
SCO's OpenServer Adding Serial Terminals in SCO OpenServer Handbook (http://osr5doc.ca.caldera.com:457/
HANDBOOK/CONTENTS.html).
Hewlett-Packard's HP-UX „Configuring Terminals and Modems“ (Url nefunguje.).
Terminologie řídicích sekvencí v příkazech
Anglicky se jmenují „escape sequences“ nebo „control sequences“. Tato příloha je neúplná (a vzhle-dem k obrovskému počtu
řídicích sekvencí nemůže být nikdy úplná). Uvádím ji pouze jako pře-hled, pravděpodobně by spíše patřila do nějakého
programátorského návodu.
Jako příklad standardní ANSI řídicí sekvence může posloužit posloupnost ESC[5B, která posune kurzor o pět řádků dolů. ESC je
znak Escape. Součástí sekvence je parametr 5. Kdyby tam bylo 7, kurzor by se posunul dolů o 7 řádků atd. Slovnímu popisu
„posuň kurzor dolů o x řádků“ příka-zu ESC[xB jistě každý rozumí. Horší je však žargon, například „požadavek na terciární
atribut zaří-zení“ („tertiary device attribute request“). V této kapitole se pokusím vysvětlit alespoň něco z tajem-né hantýrky, která
se používá v příkazech pro zadávání řídicích sekvencí. Kompletní seznam (včet-ně kódů řídicích sekvencí ve standardu ANSI) je
uveden v návrhu projektu. Vzhledem k tomu, že řada řídicích sekvencí má stejnou funkci jako volby nastavení, nebudu je zde
uvádět.
Seznam řídicích sekvencí
Seznam mnoha (nikoli však všech) řídicích sekvencí pro různé terminály najdete v Teemworld Escape Sequences (http://
www.ecc400.com/java/twproae.htm). Používají se pro emulaci terminálů a nejsou vždy shodné s odpovídajícími skutečnými
terminály. Seznam sekvencí pro terminály VT (není udržován) naleznete na Emulators FAQ (http://www.cs.ruu.nl/wais/html/nadir/emulators-faq/part3.html), vyhledejte „VT“. Manuál si můžete stáhnout z VT Manuals na adrese http://www.vt100.net/.
8bitové řídicí kódy
Hexadecimální tabulka řídicích kódů. Fungují na VT2xx a novějších. Nejobecnější je CSI.
ZKRATKA CELÉ JMÉNO HEXADEC. NAHRAZUJE IND Index (o řádek dolů) 84 ESC D NEL Nový řádek 85 ESC E RI Reverse Index (o
řádek nahoru) 8D ESC M SS2 Posun o jedno 2 8E ESC N SS3 Posun o jedno 3 8F ESC O DCS Řídicí řetězec 90 ESC P CSI Úvod řídicího
řetězce 9B ESC [ ST Ukončení řetězce 9C ESC \
Řídicí sekvence pro tiskárnu
Automatický tisk zapnout/vypnout: Když je zapnutý, data z počítače jsou posílána i na ter-minál (a vypisují se i na
obrazovce terminálu).
Řízení tisku zapnout/vypnout: Je-li zapnuto, data z počítače jsou posílána pouze na tiskárnu (nikoli na obrazovku
terminálu).
Hlášení
Tyto sekvence jsou obvykle požadavkem odeslaným z počítače, jímž žádá o hlášení z terminálu. Terminál odpoví tak, že pošle
hlášení (ve skutečnosti jinou řídicí sekvenci) na počítač, které ve svém těle obsahuje určité hodnoty, jež vyjadřují stav terminálu.
V některých případech je počítači zaslána zpráva, i když o ni nepožádá, obvykle po ukončení nastavení terminálu. Implicitně se
žádná nevyžádaná hlášení neposílají.
Žádost o stav (hlášení operačního stavu): VT100 odpovídá buď „jsem v pořádku“ nebo „nejsem v pořádku“.
Žádost o atributy zařízení: „Zařízením“ je obvykle tiskárna. Je připojena tiskárna? Je při-pravena k tisku?
Požadavek na terciární atribut zařízení (VT): Odpovědí je hlášení zadané v průběhu nasta-vování. Terciární zařízení je
třetí zařízení (tiskárna nebo port ??). Prvním zařízením by mohl být počítač, druhým terminál.
Žádost o parametry terminálu: Jaká je parita, rychlost přenosu, velikost bajtu atd. Tento požadavek příliš nedává smysl,
protože kdyby počítač tyto údaje už neznal, nemohl by s terminálem komunikovat ani posílat odpovědi.
Pohyby kurzoru
Kurzor je tam, kde se zobrazí další znak přijatý z počítače. Většina pohybů kurzoru je zřejmá. „Indexovat kurzor“ znamená
posunout kurzor o jeden řádek níž. Pohyby kurzoru mohou být relativní vzhledem k jeho poloze, např. „posuň o 4 místa doleva“,
nebo absolutní, např. „umísti na řádek 3, sloupec 39“. Absolutnímu pohybu říkáme „přímé umisťování kurzoru“ nebo „přímé
adresování kurzoru“.
Základní poloha kurzoru je na prvním řádku v prvním sloupci (počátek indexování je 1). Kde však je tato základní poloha na
obrazovce, není zcela jasné. Je-li nastaven režim „počátek kurzoru“ = „relativní počátek“, základní poloha je vlevo na horním
okraji rolované oblasti (což nemusí být na horním okraji obrazovky). Je-li nastaven režim „absolutní počátek“ (což je totéž, jako
když zruší-te oba režimy shora), pak základní poloha je v horním levém rohu obrazovky. Na některých star-ších terminálech
režim „počátek kurzoru“ znamená, že je relativní.
Stránky (definice)
Stránkování je vysvětleno v části Stránky. Existuje řada řídicích sekvencí, jež souvisejí se stránka-mi. Text může být kopírován z
jedné stránky do druhé a kurzorem můžete pohybovat z jedné stránky na druhou. Přepínání stránek může být automatické: Když
je stránka zaplněna (strana 1), další data z počítače jdou na stranu 2. Kurzor může být v jednom okamžiku pouze na jedné stra-ně
a znak poslaný na terminál jde na tuto stranu. Pokud není zobrazena, terminál nový text zpra-cuje a uloží jej do paměti, v níž je
zobrazovaný text, avšak neuvidíte to (dokud není terminál pře-pnut na tuto stránku).
Sériové komunikace na EIA-232 (RS-232)
Úvod do sériové komunikace
(Většina textu z této kapitoly je nyní v Serial-HOWTO ) Textové terminály v unixových systémech (a na PC) jsou obvykle
připojeny k asynchronnímu sériovému portu 232 počítače. Obvykle to je RS-232-C, EIA-232-D nebo EIA-232-E. Všechny tři
jsou téměř totožné. Původní prefix RS byl nahra-zen EIA (Electronics Industries Association) a později EIA/TIA, když EIA
fúzovala s TIA (Tele-communications Industries Association). Port EIA-232 spec se také používá pro synchronní (sync)
komunikaci, avšak osobní počítače většinou nemají hardwarovou výbavu pro synchronní komu-nikaci. Označení RS je už
poněkud zastaralé, avšak dosud se používá. Zde budeme používat EIA.
Sériový port je něčím víc než pouhým fyzickým konektorem na zadní straně počítače nebo ter-minálu. Je vybaven elektronikou,
která generuje signály v souladu se specifikací EIA-232. Stan-dardní konektor má 25 pinů, z nichž většina není použita.
Alternativní konektor má jen 9 pinů. Jeden pin se používá k odesílání datových bajtů, druhý k jejich přijímání. Další pin je
společnou zemí. Další „užitečné“ piny jsou používány hlavně k signalizaci, přičemž trvale záporné napětí zna-mená „vypnuto“ a
kladné „zapnuto“.
Většinu práce má na starosti mikroprocesor UART (Universal Asynchronous Receiver-Transmitter). V moderním provedení je
tento mikroprocesor obvykle zabudovaný ještě v jiném mikroprocesoru.
Napětí Jaké napětí má bit
Na sériovém portu EIA-232 je bipolární napětí (vzhledem k zemi kladné a záporné) s hodnotou kolem 12 voltů (někdy jen 5 nebo
10 voltů). +12 voltů na přijímacím i vysílacím pinu znamená bit 0 (anglicky se mu někdy říká „space“) a -12 voltů znamená
hodnotu bitu 1 (anglicky někdy „mark“). Tento způsob se někdy nazývá „inverzní logika“, neboť obvykle znamená hodnota bitu 0
nepravdu a zápornou hodnotu, zatímco 1 je jak pravda, tak i kladná hodnota. I když přijímací a vysílací mají opačnou logiku, jiné
piny (které řídí modemové linky) mají normální logiku s kladným napětím pro „pravdu“ (resp. pro „zapnuto“ nebo „nastaveno“)
a záporným napětím pro „nepravdu“ (resp. „vypnuto“ nebo „není nastaveno“). Nulové napětí nemá žádný význam (snad s tou
výjimkou, že může znamenat „vypnutý počítač“).
Je přípustný určitý rozsah napětí. Norma říká, že přenášený signál by měl být mezi 5 až 15 volty a nikdy by neměl překročit 25
voltů. Napětí pod 3 volty není definované (některé terminály ovšem akceptují i nižší napětí jako platné). Občas se setkáte s
nepravdivým tvrzením, že běžně používa-né napětí je 5, nebo dokonce jen 3 volty, avšak obvykle je to 11–12 voltů. Používáte-li
na Maco-vi port EIA-422 jako EIA-232 (se speciálním kabelem) nebo jako EIA-423, napětí bude skutečně pouze 5 voltů. V
dalším popisu ovšem budeme mít za to, že napětí je 12 voltů. V otázce napětí panuje na Internetu dost velký zmatek.
Poznamenejme ještě, že normální logika počítače je pouze několik voltů (standard býval 5 V), takže pokud byste zkusili použít
měřicí přístroj určený pro testování 3–5 V logiky počítače (TTL) na napětí 12 voltů, mohli byste jej poškodit.
Jaká je posloupnost napětí v bajtu
Vysílací pin (TxD) má bez zatížení, když se nic neposílá, -12 voltů (mark). Na začátku bajtu se napětí změní na +12 V (space),
což je startovací bit, a zůstane na tomto napětí po dobu trvání jed-noho bitu. Pak jde datový bit nejnižšího řádu. Je-li roven 0, nic
se nezmění a na lince zůstane +12 V po dobu dalšího bitového intervalu. Pak přijde další bit atd. Nakonec může přijít paritní bit a
pak -12 V (mark) jako stopbit. Na lince zůstává -12 V (nic se nepřenáší) až do příchodu dalšího star-tovacího bitu. Všimněte si, že
napětí se nevrací na nulu, a mají-li shodnou polaritu (tj. oba jsou rovny 0 nebo 1), neexistuje jednoduchý způsob (kromě
synchronizačního signálu), jak říct, kde končí jeden bit a začíná druhý.
Druhý stopbit bude také -12 V, stejně jako první. Jelikož hranice mezi těmito bity není vyznačena žádným signálem, jediným
výsledkem přenosu druhého stopbitu je skutečnost, že na lince bude napětí -12 V dvakrát tak dlouho. Příjemce nemá způsob, jak
by zjistil rozdíl mezi druhým stopbi-tem a delším časovým intervalem mezi bajty. Když se na jednom konci používá jeden stopbit
a na druhém dva stopbity, komunikace funguje, avšak přenos s jedním stopbitem je rychlejší. Velmi zřídka se také používá 1 x
stopbitu, což znamená, že na lince se nechá -12 voltů po dobu 1 inter-valu (tedy stopbit je o 50 % delší).
Co je to parita
Normálně jsou znaky přenášeny jako 7 nebo 8 datových bitů. K nim může (a nemusí) přibýt jeden paritní bit, z čehož plyne délka
bajtu 7, 8 nebo 9 bitů. Některé starší terminály a emulátory nepři-pouštějí 9 bitů. Některé nepřipouštějí 9 bitů pouze v případě,
když se používají dva stopbity (tím by celková délka vzrostla na 12 bitů, což je moc).
Parita může být lichá, sudá nebo žádná (parita mark a space může být na některých terminálech volitelná). Při liché paritě je
paritní bit nastaven na takovou hodnotu, aby počet jedničkových bitů v bajtu (včetně paritního bitu) byl lichý. Změní-li se v
důsledku chyby hodnota některého bitu, poškozený bajt bude mít sudou paritu. Obsahuje-li příchozí bit takovou chybu, na
obrazovce je vypsán symbol chybného znaku. Sudá parita má analogicky v bajtu sudý počet jedničkových bitů. V průběhu
nastavování se počtem bitů na bajt rozumí pouze datové bity (7 pro ASCII a 8 pro různé znakové množiny ISO).
Má-li bit hodnotu 1, nazýváme ji „mark“, hodnotu 0 pak „space“. Je-li hodnota všech paritních bitů rovna 1, hovoříme o „mark
paritě“, je-li rovna 0, jde o „space paritu“. Obě tyto parity pouze plýt-vají šíří přenášeného pásma, a je-li to možné, vyhněte se jí.
Nemá-li znak paritní bit, hovoříme o znaku (bajtu) bez parity. U terminálů, které neumějí přenášet devítibitové bajty, musíte při
osmi-bitové znakové množině vždy zvolit přenos „bez parity“, neboť na paritní bit už není v bajtu místo.
Jak vypadá bajt (rámec)
Při sériovém přenosu bajtů přes porty EIA-232 je nejdříve poslán bit nejnižšího řádu. Sériové porty na PC používají asynchronní
komunikaci, při níž je začátek a konec bajtu označen startovacím bitem a stopbitem. Tento způsob nazýváme seskupování bitů a
takto seskupené bity, které tvoří bajt, nazýváme někdy rámec. Jeden bajt tedy může obsahovat 9, 10 nebo 11 bitů, přičemž nej-
častěji používaný počet je 10. Označení 8-N-1 znamená 8 datových bitů, bez parity, jeden stopbit. Dohromady i se startovacím
bitem je to tedy 10 bitů. Téměř zásadně se používá jeden stopbit. Dříve se používaly dva stopbity do rychlostí 110 bitů/sec.
(někdy až do 300 bitů/sec.), avšak dnes se používají dva stopbity pouze ve velmi neobvyklých situacích (anebo omylem, příjemce
se může domnívat, že dostal dva stopbity).
Nevýhody EIA-232 Pomalé & krátký dosah
Běžně používaný sériový port EIA-232 je svojí podstatou pomalý a značně omezený co do vzdá-lenosti připojení. V reklamě je
často uvedeno „vysokorychlostní“, avšak to platí pouze pro velmi krátké vzdálenosti, když je modem umístěn přímo u počítače.
Všechny vodiče používají společ-nou zem, takže bez dalšího hardwaru nelze použít kroucenou dvoulinku (nutnou pro vysoké
rychlosti). Některé počítače ovšem už mají modernější rozhraní, viz kapitola „Následníci EIA-232“.
Je přímo tragické, že standard RS-232 z roku 1969 nevyšel z technologie kroucené dvoulinky, která je asi stokrát rychlejší. V
telefonii se kroucené dvoulinky používají už od 19. století. V roce 1888 (tedy před více než 110 lety) bylo na „Konferenci o
kabelech“ přijato doporučení používat pro telefonní systémy technologii kroucených dvoulinek a byly zdůrazněny její přednosti.
Po 80 letech pak nebyla tato technologie přijata do standardu RS-232. Vzhledem k tomu, že RS-232 byla původ-ně určena pro
připojení terminálů k nízkorychlostním modemům na krátkou vzdálenost, nikdo neuvažoval o vysokorychlostním připojení a o
větších vzdálenostech.
Následníci EIA-232
Rozsáhlý popis o jiných portech než EIA-232 naleznete v kapitole Serial-HOWTO v dokumentu „Other Serial Devices“. Pro
vysoké rychlosti a velké vzdálenosti byla vytvořena řada standardů na bázi (symetrické) technologie kroucené dvoulinky.
Symetrický přenos je až stokrát rychlejší než nesymetrický EIA-232. Při dané rychlosti může být maximální délka kroucené
dvoulinky mnoho-krát větší. Zdá se, že některé terminály tuto technologii podporují. I když řada terminálů také pod-poruje porty
EIA-423, příliš se neliší od EIA-232 – pouze používají 5 voltů a jsou o něco rychlejší (aniž by používaly kroucenou dvoulinku).
Kroucená dvoulinka zahrnuje EIA-422, EIA-530-A, HSSI (High Speed Serial Interface), USB (Universal Serial Bus) a
pochopitelně i ethernet.
Linkové ovladače
Pro textové terminály je rychlost EIA-232 dostatečná, avšak nevyhovující je maximální délka kabelu. Můžete si pomoci
symetrickou technologií. Obvyklou metodou, jak přejít na tuto technologii, je nainstalovat linkové ovladače 2@ na sériové linky,
abyste převedli nesymetrické na symetrické (a naopak). Jsou to speciální položky, a kupují-li se nové, vyjdou hodně draho.
Synchronní přenos a synchronizace
asynchronní přenos
Jak
synchronizovat
Vysílací (nebo přijímací) vodič má pouze dva stavy: mark (-12 V) a space (+12 V). Stav 0 neexis-tuje. Posloupnost bitů s
hodnotou 1 je tedy přenášena jako trvalé napětí -12 V bez jakýchkoli zna-ček mezi bity. Přijímač musí jednotlivé bity rozpoznávat
pomocí časovače synchronizovaného s časovačem vysílače. Časovač „tikne“ při vyslání (nebo přijetí) každého bitu.
Při asynchronním přenosu dosáhneme synchronizace seskupením startovacího bitu, datového bajtu a stopbitu (hardwarově).
Příjemce čeká na lince na startovací bit, a když jej rozpozná, spus-tí časovač, který tiká, než přečte dalších 7, 8 nebo 9 bitů. (Ve
skutečnosti je to poněkud složitěj-ší, neboť občas se pošlou vzorkové bity, které vyžadují další „tiknutí“ časovače.) Pak se přečte
stopbit, hodiny se zastaví a příjemce čeká na další startovací bit. Asynchronní přenos je tak vlast-ně na příjmu synchronizován,
avšak mezi bajty synchronizace neexistuje.
Definice asynchronního a synchronního přenosu
Asynchronní (async) znamená „nesynchronní“. V praxi je asynchronní signál to, co posílá a přijí-má asynchronní port: tok bajtů
oddělených startovacím bitem a stopbitem. Synchronní (sync) je téměř vše ostatní. Tím ovšem nejsou vysvětleny základní
principy.
Teoreticky znamená synchronní to, že bajty jsou posílány konstantní rychlostí, jeden za druhým, v časových intervalech určených
tikáním časovače. Pro poslání signálu časovače bývá určen jeden vodič nebo kanál. Asynchronní bajty mohou být odesílány
pokaždé jinak, s různými časovými prodlevami mezi jednotlivými bajty (jako když někdo píše znaky na klávesnici).
Existuje hraniční situace, o níž je nutno rozhodnout, zda je synchronním nebo asynchronním pře-nosem. Asynchronní sériový
port někdy pošle bajty jako nepřerušovaný tok, což je vlastně syn-chronní přenos, avšak vzhledem k tomu, že jsou přenášeny i
start/stopbity (které umožňují nepra-videlné posílání), přenos je asynchronní. Jiným případem je posílání datových bajtů v
paketech (bez start/stopbitů) v nepravidelných intervalech mezi pakety. Tento způsob je synchronizovaný, neboť bajty v rámci
paketu jsou přenášeny synchronně.
Synchronní komunikace
Přemýšleli jste někdy o tom, k čemu jsou nepoužívané piny na 25pinovém konektoru sériového portu? Většina z nich se používá
k synchronní komunikaci, která někdy bývá implementovaná i na osobních počítačích. Některé piny jsou využity pro přenos
časových signálů a pro synchronizaci protějšího kanálu. Port EIA-232 může sloužit jak k synchronnímu, tak i k asynchronnímu
přeno-su, avšak osobní počítače bývají vybaveny mikroprocesory UART (Universal Asynchronous Rece-iver/Transmitter), např.
16450, 16550A nebo 16650, jež nejsou určeny k synchronnímu přenosu. K tomu je nutno mít mikroprocesor USART (nebo
ekvivalent), kde „S“ znamená synchronní. Vzhle-dem k tomu, že trh s vybavením pro synchronní přenos je omezený, synchronní
sériové porty budou poměrně dost drahé.
Kromě synchronní části EIA-232 existuje řada jiných synchronních standardů EIA. U tohoto konek-toru jsou 3 piny vyhrazeny
časovým signálům. Někdy má za úkol generovat časové signály modem, takže synchronní komunikace bez synchronního
modemu není možná (anebo bez zaří-zení, které se nazývá „eliminátor synchronního modemu“, které generuje časové signály).
I když synchronních sériových portů je málo, synchronní komunikace často probíhá po telefon-ních linkách pomocí modemů s
korektorem chyb V.42. Ten odstraní start/stopbity a datové bajty uloží do paketů, které jsou pak synchronně přenášeny po
telefonní lince.
Blokový režim Úvod do blokového režimu
V Linuxu se blokový režim používá zřídka a jde spíše o historii. Když někdo píše v blokovém reži-mu na terminále, znaky se
neposílají na počítač a jsou uloženy do paměti terminálu. Tyto termi-nály také mívají vestavěný editor. Když uživatel stiskne
určitou („odesílací“) klávesu, obsah toho, co je uloženo v paměti, se odešle na počítač. Nyní používané editory vi a emacs musí na
stisknutí klávesy reagovat ihned, takže blokový režim je nepoužitelný. Dlouhá prodleva mezi stisknutím klávesy a odesláním
znaku na počítač, která je průvodním znakem blokového režimu, je pro tyto editory a jiné interaktivní programy nepřijatelná.
Blokový režim se tedy už nepoužívá.
Rozhraní starých sálových počítačů IBM používá blokový režim (viz kapitola „Terminály IBM“). Mnohé terminály IBM pracují
pouze v synchronním blokovém režimu.
Typy blokových režimů, formuláře
Blokový režim může mít různé podrežimy, např. „stránka“ (jednorázový přenos stránky) nebo „řádek“ (jednorázový přenos
řádku). Některé terminály mají jak blokový režim, tak i klasický zna-kový režim a lze mezi nimi přepínat. K asynchronním
terminálům s blokovým režimem patří HP2622A, Wyse60, VT130, VT131, VT330, VT340 a Visual500. Řada novějších modelů
umí bloko-vý režim emulovat, linuxová konzola to však neumí. Blokové režimy mohou pracovat s formulá-ři. Počítač pošle na
terminál formulář, uživatel jej vyplní a stiskne odesílací klávesu (tlačítko). Zpět na počítač jsou poslána pouze data z tohoto
formuláře. Formulář samotný (nikoli data) je zobra-zen na obrazovce v chráněných oblastech, které se nepřenášejí na počítač.
Výkonnost
Blokový režim snižuje zátěž centrálního počítače, zejména když je k tomuto režimu hardwarově zkonstruován (jako tomu bylo u
sálových počítačů IBM). Ve znakovém režimu je každý zadaný znak ihned poslán na sériový port a obvykle vygeneruje přerušení
na centrálním počítači. Ten, jakmile přijme bajt, přeruší všechny ostatní výpočty a přečte tento znak z portu. Dokonce i s UART,
který má bufery typu FIFO (zásobník), je hardwarový časový limit obvykle roven době přenosu tří bajtů, takže přerušení je
vygenerováno po každém zadaném znaku.
V klasickém blokovém režimu odpovídá jednomu dlouhému přijatému bloku pouze jedno přeru-šení. Pokud je blokový režim
použit na klasickém asynchronním sériovém portu FIFO, přerušení je vygenerováno pouze každých 14 bajtů, protože hardwarové
bufery jsou šestnáctibajtové. Je tak oproštěn od většiny zátěže a režie nutné ke zpracování přerušení a počítač má tedy v blokovém
režimu více času na jiné úlohy.
K významné úspoře v blokovém režimu dochází, když je terminál připojen k počítači po síti. Bez blokového režimu by byl každý
zadaný znak (bajt) poslán ve svém vlastním paketu včetně všech režijních bajtů (v paketu TCP/IP používaném na Internetu je to
40 bajtů). V blokovém režimu obsahuje jediný blok velký počet znaků.
Problémy s blokovým režimem
I když blokový režim je výkonnější, je prakticky zapomenut, a to z prostého důvodu. Pro stále rychlejší a levnější počítače není
objem přenesených dat mezi počítačem a terminálem kritický. Například modem 56 k generuje stovky přerušení za sekundu (po
každých 14 znacích), zatímco když píšete na terminále, dochází jen k několika přerušením za sekundu (při zadání každého znaku).
Počet přerušení při psaní tedy není příliš významný (pokud ovšem nemáte k jednomu počítači zapojené stovky terminálů).
Dalším hlediskem je skutečnost, že účinnost při přenosu není podstatná tam, kde uživatel neza-dává z terminálu velké objemy dat.
Ukázkovým příkladem, kdy pořizuje množství dat, jsou edito-ry. Avšak pokud editujete v blokovém režimu, musíte používat
triviální terminálový editor. Moder-ní editory (vim, emacs) jsou mnohem dokonalejší, avšak nepoužívají blokový režim. Dokonce
i v době sálových počítačů s terminály blahé paměti se blokový režim s výjimkou IBM používal poměrně zřídka. Hlavním
důvodem byla malá dostupnost softwaru, který by uměl blokový režim využít (opět kromě IBM). Pravděpodobně jej neobsahuje
ani databáze terminfo, což značně zne-snadňuje případný vývoj takového softwaru.
Knihy o EIA-232 (RS-232)
(Poznámka: První kniha není zaměřena pouze na EIA-232.)
Black, Uyless D.: Physical Layer Interfaces & Protocols, IEEE Computer Society Press, Los Alamitos, CA, USA, 1996.
Campbell, Joe: The RS-232 Solution, 2. vyd., Sybex, 1982.
Putnam, Byron W.: RS-232 Simplified, Prentice Hall, 1987.
Seyer, Martin D.: RS-232 Made Easy, 2. vyd., Prentice Hall, 1991.
Software pro sériové porty
Odkazy na software pro sériové porty v Linuxu včetně getty a připojení monitorů naleznete na stránkách Serial Software (ftp://
ibiblio.unc.edu/pub/Linux/system/serial/).
Poznámky o výrobcích a modelech
Zde naleznete poznámky o výrobcích konkrétních terminálů, jejichž uvádění v jiných kapitolách tohoto návodu by mohlo být
újmou na obecnosti výkladu. Máte-li jakékoli informace, které by mohly přispět k popisu určitých terminálů, měly by být
zařazeny právě sem. Různé modely mají často společné vlastnosti, jejichž popis by měl být v textu uveden pouze jednou. Bylo by
pěkné, kdyby ke každému modelu existovala množina odkazů na podstatnou část dokumentace rele-vantní k tomuto modelu
(včetně řídicích sekvencí ). Nic takového však neexistuje. Poznamenejme pouze, že některé manuály k terminálům VT (DEC) jsou
na Internetu, viz adresa http://tldp.org/HOWTO/Text-Terminal-HOWTO-23.html#dec_#dec_. Totéž platí i pro terminály Wyse
(http://tldp.org/HOWTO/Text-Terminal-HOWTO-23.html#wyse_#wyse_).
Adds
Terminály Adds v menu nekorektně používaly „Xon/Xoff“ pro aktivaci obou způsobů řízení toku
dat. Pro které modely to platí??
Firmu Adds (vyráběla terminály Viewpoint) koupila firma Boundless Technologies.
CIT
Terminály CIT se vyráběly v 80. letech v Japonsku místo terminálů CIE. Koncem 80. let se přesta-ly dovážet. Společnost CIE
ještě stále vyrábí (v roce 1997) tiskárny CItoh, avšak nedodává k nim náhradní díly. Některé díly k modelům 224, 326 atd.
prodává firma Ernie (Irvine, Kalifornie, USA), tel. (714) 453-9555, nikoli však k modelům 80 a 101.
Nastavovací parametry uložíte v nastavovacím režimu pomocí ^S,. cit80: knoflík pro ovládání kon-trastu je na zadní straně
terminálu, cit101e: jas nastavte šipkami v nastavovacím režimu.
Terminály IBM
Nezaměňujte terminály IBM za monitory k IBM PC. Mnohé terminály IBM nepoužívají ASCII, nýbrž osmibitový kód EBCDIC.
Pořadí posílání bitů v EBCDIC je údajně opačné, nejdříve jdou bity nej-vyššího řádu. Komunikační standardy sálových počítačů
IBM jsou určitý způsob synchronní komu-nikace v blokovém režimu (velké pakety znaků). Za příklad mohou posloužit dva
standardy „BISYNC“ a „SNA“ (jež obsahují i síťové standardy). Řada těchto terminálů se připojuje koaxiálním kabelem
(RG62A/U) a prostý člověk by se mohl domnívat, že konektor „BNC“ na terminále je určen k připojení na ethernet – není!
I když tento systém IBM je výkonnější než běžně používané systémy v Linuxu, terminály odpoví-dající standardům IBM nejsou
použitelné v Linuxu. Nicméně, některé terminály IBM jsou asyn-chronní ASCII terminály a fungují pod operačním systémem
Linux na PC. Mohou fungovat napří-klad modely 31xx s výjimkou modelů 317x a 319x, jež nejsou ASCII. Než si pořídíte
terminál IBM, přesvědčte se, zda má záznam v databázi termcap (terminfo). Není-li tomu tak, pravděpodobně nebude pod
systémem Linux fungovat. Jistotu nemáte, ani když má záznam v této databázi. V termcap například existuje záznam pro 327x,
avšak 3270 je synchronní terminál EBCDIC.
Součástí řady 3270 jsou i modely 3278 (konec 70. let), barevný 3279 s grafikou a řadič 3274 (ana-logie 3174 ). Jsou použitelné s
oběma protokoly BISYNC i SNA. Model 3290 má rozdělenou obra-zovku (na čtvrtiny).
Synchronní terminály IBM nejsou připojeny přímo k sálovému počítači nýbrž k „terminálovému řadiči“ (říká se mu také
„klastrový řadič “ nebo „komunikační řadič“). Některé řadiče umějí převá-dět synchronní signál na asynchronní, takže synchronní
terminál by takto mohl být připojen k séri-ovému portu unixového počítače. Problém s blokovým přenosem však zůstává
nevyřešen, viz kapitola „Blokový režim“.
IBM 3153
Port Aux je údajně DCE a je připojen kabelem napřímo.
Dálnopisy
Jde o nejstarší terminály a jsou to historické kusy. Vypadají jako dálkově řízené psací stroje, jsou však větší a hlučnější. Výrobcem
byla Teletype Corp., první modely byly vyrobeny ve 20. letech minulého století a předběhly počítače o 30 let. Nejstarší modely
používaly mechanická relé a rotač-ní rozdělovače. Pracovaly s pětibitovým kódem Baudot. Viz kniha „Small Computer Systems
Hand-book“, Sol Libes, Hayden Books, 1978: str. 138–141 („Teletypes“).
VT (původně DEC, nyní Boundless)
Slavnou řadu terminálů VT včetně nejčastěji emulovaného VT100 vyrobila společnost Digital Equ-ipment Corporation. V roce
1995 prodali obchod s těmito terminály firmě SunRiver, která se nyní jmenuje Boundless Technologies. Podrobné informace o
těchto terminálech, manuály a jejich his-torii naleznete na adrese http://www.vt100.net/. Další informace jsou na stránkách
Shuford's Web-site, http://www.cs.utk.edu/~shuford/terminal_index.html. Informace o současné produkci najdete na firemních
stránkách Boundless.
VT220: Některé mají BNC konektor pro videovýstup (nikoli pro vstup). Někdy se lidé chybně
domnívají, že je to konektor na připojení ethernetu.
VT510, 520, 525: Plná podpora řízení toku dat DTR/DSR. Některé modely mají „snížené vyzařo
vání“. Model 520 je určen pro několik sezení současně, model 525 umí barevné zvýraznění.
Dorio je model nižší kvality, který umí emulovat mnoho jiných terminálů. Kvalitní je údajně emu-lace konzoly „sco unix“, která
odpovídá položce „scoansi“ v databázi terminfo.
Links
Firmu Links převzala společnost Wyse.
Qume
Firmu Qume převzala společnost Wyse počátkem 90. let.
Terminály Wyse
Podrobné informace o starých terminálech na úrovni manuálů viz http://www.wyse.com/ service/support/kbase/wyseterm.asp.
Naleznete tam specifikace, seznamy řídicích sekvencí, seznamy dílů, často kladené otázky, nastavovací informace atd. Za tyto
informace patří firmě Wyse uznání. Ještě starší terminály jsou na stránkách Wyse terminals, http://www.wyse.com/ products/gpt/
index.htm.
Firma Wyse byla levnější než ostatní výrobci a získala dominantní podíl na trhu. Ozývaly se sice připomínky ke kvalitě jejich
terminálů, zejména se týkaly modelu Wyse 50, avšak velký počet reklamací (i jiných modelů než Wyse 60) je částečně důsledkem
značného rozšíření těchto terminálů.
Wyse 50
Nevyráběl se dlouho.
Wyse 60
Nastavení displeje (po odstranění zadního krytu): jas VR202, výška VR302, šířka VR101 (ovlivňuje i výšku). Chcete-li jej
používat bez emulace, kódy šipek neodpovídají kódům ve vi (např. ^L). Tento nedostatek odstraníte v režimu „Application key
mode “ zadáním řídicí sekvence ESC ~ 3. Šipky pak budou posílat kódy 0xd1 – 0xd4. Vinou chyby v rozhraní příkazu readline v
bash shel-lu je nutno opravit soubor /etc/inputrc . Viz kapitola „Chyby v bash shellu“.
Wyse 85
Umí emulovat VT52/VT100/VT200. Chcete-li jej nastavit, stiskněte klávesu F3, šipkami přejděte na požadovanou ikonu a
stiskněte mezerník. V zobrazeném menu rolujte pomocí šipek nahoru/dolů. Nastavení můžete kdykoli zopakovat (klávesa F3),
aniž byste přišli o původní hodnoty.
Wyse 99-GT
Nastavovací menu terminálu Wyse99GT (konec 80. let). TERM zde znamená „termination“ (znak „ukončení“), nikoli „terminál“.
Jak jsou nastaveny terminály WYSE 99-GT na Kalifornské univerzitě (University of CA), Irvine, USA
David Lawyer, duben 1990
F1 DISP: COLUMNS=80 LINES=24 CELL SIZE=10 X 13 STATUS LINE=STANDARD
BACKGROUND=DARK SCROLL SPEED=JUMP SCREEN SAVER=OFF CURSOR=BLINK BLOCK DISPLAY CURSOR=ON
ATTRIBUTE=CHAR END OF LINE WRAP=ON AUTO SCROLL=ON
F2 GENERAL: PERSONALITY=VT 100 ENHANCE=ON FONT LOAD=OFF COMM MODE=FULL
DUPLEX RCVD CR=CR SEND ACK=ON RESTORE TABS=ON ANSWERBACK MODE=OFF ANSWERBACK CONCEAL=OFF WIDTH
CHANGE CLEAR=OFF MONITOR=OFF TEST=OFF
F3 KEYBRD: KEYCLICK=OFF KEYLOCK=CAPS KEY REPEAT=ON RETURN=CR ENTER=CR
FUNCT KEY=HOLD XMT LIMIT=NONE FKEY XMT LIMIT=NONE BREAK=170MS LANGUAGE=US MARGIN BELL=OFF PRINTER
RCV=OFF
F4 COMM: DATA/PRINTER=AUX/MODEM MDM RCV BAUD RATE=9600 MDM XMT BAUD
RATE =9600 MDM DATA/STOP BITS=8/1 MDM RCV HNDSHAKE=NONE MDM XMT HNDSHAKE=NONE MDM PARITY=NONE AUX
BAUD RATE=9600 AUX DATA/STOP BITS=8/1 AUX RCV HNDSHAKE=NONE AUX XMT HNDSHAKE=NONE AUX PARITY=NONE
(There is a main port (Modem=MDM) and an Auxiliary Port (AUX)
F5 MISC 1: WARNING BELL=ON FKEY LOCK=OFF FEATURE LOCK=ON KEYPAD=NUMERIC
DEL=DEL/CAN XFER TERM=EOS CURSOR KEYS=NORMAL MARGIN CTRL=0 DEL FOR LOW Y=ON GIN TERM=CR CHAR
MODE=MULTINATIONAL
F6 MISC 2: LOCAL=OFF SEND=ALL PRINT=NATIONAL PORT=EIA DATA SEND AREA=SCREEN
PRINT AREA=SCREEN DISCONNECT=60 MSEC SEND TERM=NONE PRINT TERM=NONE PRINT MODE=NORMAL VT100
ID=VT100 POUND=US
F7 tabelátory: Měli byste vidět několik znaků „T“ s mezerami 8 bodů. Pokud neuvidíte, stiskněte
„návrat o jeden znak “ (backspace).F8 funkční klávesy: Definice funkčních kláves zde normálně neuvidíte (pokud je někdo
nenasta-vil a neuložil ). Znamená to, že budou generovat implicitní znaky (zde nejsou uvedeny).
Ctrl+F5 vypíše „uživatelem definovanou definici“ klávesy F5 atd.F9 zpětná odpověď: Obvykle není definované:
ANSWERBACK =F10 konec: Zadáte-li „DEFAULT ALL“, nastavení od výrobce bude implicitní.NÁVOD k používání
WY-99GT User's Guide: Naleznete jej v WY-99GT Programmer's Guide. Emulace VT100 je známa jako ANSI a používá kódy kláves na str. A-10 a dalších, i kdyby to byl ASCII.Podhlavička na str. A-13
„ASCII Keyboard“ také patří k VT100, protože mohou spadat pod non-ANSI část hlavní hlavičky o několik stránek zpět. Příloha
H je v „ANSI Command Guide“ s výjim-kou VT52 (ANSI), který je v příloze G.
Wyse 150
Když rušíte nastavení klávesou F12, stisknutím mezerníku v dotazu na uložení nastavení změníte „no“ na „yes“. Věta nalevo od
těchto slovíček (no/yes) se týká svislého uspořádání a nemá nic společného s tímto dotazem (menu je zmatené).
Wyse 185
Znakové buňky 10x20. Umí emulovat DEC VT320. Příkon 45 W. Nejnovější modely jsou označeny 185e.
Snížená emise: -ES
ES za číslem modelu znamená sníženou emisi, nižší magnetické pole atd.
Ekologie
Prvním darem je život, druhým láska a třetím porozumění Marge Piercy (http://
www.margepiercy.com/)
Ekologie
V této kapitole se seznámíte s postupy, jejichž prostřednictvím lze při používání počítačů se systé-mem Linux co nejméně
zatěžovat životní prostředí a šetřit energii či papír. Protože nároky na hard-ware nejsou vysoké, operační systém Linux lze využít
i ve starších počítačích a umožňuje tak pro-dloužení jejich životnosti. Některé hry lze využít při ekologické výchově a speciální
software umožňuje simulovat ekologické procesy.
Úvod
Přestože počítače lze vnímat jako zdroje znečištění životního prostředí, existují možnosti, jak tyto negativní vlivy minimalizovat.
Nedávno jsem se začal zabývat touto problematikou ve vztahu k Linuxu.
Cíle
Některé z cílů tohoto návodu:
Snížení spotřeby energie
Snížení spotřeby materiálu (jako je například papír nebo inkoust)
Snížení produkce odpadu opětovným použitím starších součástí nebo jejich dlouhodobějším používáním
Snížení produkce toxického odpadu, jakým jsou například vybité baterie
Použití Linuxu při ekologické výchově a výzkumu
Sporné body
Některá doporučení uvedená v textu mohou být sporná – například vypnutí zařízení, které se právě nepoužívá. Může se sice zdát,
že tím ušetříme energii, ale pokud například časté vypínání a zapínání zařízení snižuje jeho životnost, zatížení prostředí se tím
naopak zvyšuje.
Nemám bohužel dostatek odborných znalostí, abych mohl rozhodnout, která z uvedených variant je výhodnější. Některé návrhy
mohou různé osoby hodnotit odlišně. Volba je tedy nakonec jen na vás.
Různé
Pokud u jednotlivých programů či balíčků není uvedena adresa URL, můžete ji získat na webu Debi-an (http://www.debian.org)
nebo ze svého oblíbeného serveru RPM (například http://rpmfind.net/).
Snížení spotřeby energie
Systém Linux podporuje různé možnosti, díky kterým lze při práci s počítačem ušetřit energii. Patří mezi ně i tyto: vylepšené
řízení spotřeby, určitá nastavení pevného disku, práce bez použití moni-toru a další.
Vylepšené řízení spotřeby (APM/ACPI)
Ověření kompatibility
systému Linux
Následující text je převzat z dokumentu Battery-Powered-mini-HOWTO (http://tldp.org/ HOWTO/Battery-Powered/index.html) a
týká se spíše starších počítačů, které podporují APM, u novějších najdete spíše ACPI. „Aby bylo vylepšené řízení spotřeby
přenosného počítače funkč-ní, musí systémová paměť BIOS ROM podporovat standardní APM. Kromě toho musí BIOS ROM
podporovat jednu z verzí standardu APM 1.0 nebo 1.1 a musí také podporovat 32bitový chráně-ný režim připojení. Upřednostňuje
se systém podporující APM 1.1, protože poskytuje více funkcí využívaných ovladači zařízení a podpůrnými nástroji.” Informaci
o verzi APM získáte zadáním pří-kazu dmesg a v souboru /proc/apm.
Úvod
Při první instalaci Linuxu bude možná nutné překompilovat jádro. Ve výchozím uspořádání jádra nebude řízení APM
pravděpodobně aktivované. Podpora APM se skládá ze dvou částí: podpory jádra a podpory v uživatelském prostředí.
Pro podporu jádra aktivujte parametry v příslušné sekci jádra. U přenosných počítačů nejsou k dispozici všechny funkce. Funkce
KONFIG_APM_POWER_OFF by měla být dostupná ve většině přenosných počítačů.
Nástroje podpory APM v uživatelském prostředí naleznete na webu www.worldvisions.ca/~apen-warr/apmd/. APMD je skupina
programů ovládajících systém vylepšeného řízení spotřeby, kterou nabízí většina novějších přenosných počítačů. Používáte-li
jádro verze 2.2.x a chcete experimen-tovat, můžete použít patch jádra, který vytvořil Gabor Kuti (falcon.sch.bme.hu). Díky němu
může-te uvést jakýkoli systém Linux do režimu spánku i přesto, že to APM BIOS vašeho počítače přímo nepodporuje.
Upozornění
Pokud máte na stejném disku ještě další operační systém, ujistěte se, že není nainstalovaný nástroj pro „režim spánku“, který by
mohl vážně zasahovat do systému Linux – mohl by například používat místo na disku obsazené systémem Linux nebo naopak.
Řešení potíží
Pokud váš počítač pracoval s jádrem verze 2.0.x, ale ne s verzí 2.2.x, poslouží vám rada Klause Frankena (klaus.franken.de): „Pro
změnu výchozího nastavení ve verzi 2.2. hledejte příkaz halt v inicializačních skriptech a změňte jej na halt -p nebo poweroff.
Podívejte se na man halt – pokud tuto možnost nemáte, potřebujete novější verzi halt.” Naleznete ji v balíčku SysVinit.
Někdy okna (X Window) a APM nespolupracují příliš dobře nebo se počítač zasekává. Steve Rader doporučuje: U některých
systémů Linux se servery zasekávají při provádění apm -s. Máte-li tento problém, můžete přejít do virtuální konzoly příkazového
řádku a pozastavit chvt 1; apm -s jako root nebo ještě lépe -sudo chvt 1; sudo apm -s. Tyto příkazy zadáte ve skriptu; například
my-suspend a poté xapmload --click-command my-suspend.
U některých počítačů (například HP Omnibook 4150 – 366 Mhz) může při přístupu k /proc/apm dojít k chybě jádra „general
protection fault: f000“ (obecná chyba ochrany: f000). Stephen Roth-well ([email protected]) na stránce http://
www.canb.auug.org.au/~sfr/ vysvět-luje: „Stává se tak proto, že APM BIOS se pokouší použít segment běžného režimu, přestože
se nachází v chráněném režimu, což ukazuje na chybu v systému BIOS. S tím jsme se již dříve něko-likrát setkali, pokud se
nejednalo o kód vypnutí v režimu BIOS, kde může být řešením návrat do původního režimu, než se pokusíme vypnout počítač. V
tomto případě to udělat nemůžeme.”
ACPI
Nejnovějším standardem je ACPI. ACPI4Linux (http://acpi.sourceforge.net/wiki) je projekt ovlada-če jádra zaměřený na zavádění
úplné podpory ACPI pro systém Linux, včetně ovládání ventiláto-ru, detekce dokování a dokovatelného měřiče teploty
WindowMaker.
hdparm (http://tsx-11.mit.edu/pub/linux/sources/sbin/hdparm-3.0.tar.gz) je nástroj disku Linux IDE, který vám
umožňuje nastavit časové limity otáček a další parametry disku.
Mobile Update Daemon (http://www.complang.tuwien.ac.at/ulrich/linux/tips.html). Nahra-zuje standardní démon
update. Mobile update démon minimalizuje počet otáček a zkra-cuje dobu používání disku. Uvolňuje vyrovnávací paměť pouze v
případě, že disk aktuál-ně provádí i jiné činnosti. Pro zajištění konzistence systému souborů použijte příkaz sync. Jinak by mohlo
při výpadku napájení dojít ke ztrátě souborů. Mobile update nevyužívá APM. Proto funguje i ve starších systémech.
Nástroje Toshiba Linux (http://www.buzzard.me.uk/toshiba/index.html): Skupina nástrojů systému Linux sloužící k
ovládání ventilátoru, hesel správců a funkcí klávesových zkratek notebooků Toshiba Pentium. Součástí je i balíček KDE Klibreta.
LCDproc (http://lcdproc.omnipotent.net/). LCDproc je software umožňující přímé zobrazení informací na LCD displeji
o velikosti 20x4. Připojuje se pouze k externímu displeji Matrix-Orbital 20x4 LCD, který se připojuje k sériovému portu.
Diald (http://www.loonie.net/~eschenk/diald.html). Daemon Diald zajišťuje na základě požadavků připojení k Internetu
pomocí protokolů SLIP a PPP. Diald se může dle potře-by automaticky připojit k vzdálenému hostiteli nebo zrušit neaktivní
vytáčená připojení.
Jednotka řízení spotřeby (PMU) (Apple PowerBook)
PowerBook nepodporuje specifikaci APM, ale nabízí samostatný protokol pro jednotku PMU (jed-notka řízení spotřeby). Existuje
volně dostupný démon s názvem pmud, který ovládá řízení spo-třeby; je schopný sledovat stav baterie, uvést počítač do režimu
spánku a nastavit různé hladiny spotřeby energie. Vytvořil ho Stephan Leemburg <[email protected]> a naleznete jej na FTP serverech distribuce PPC. Existuje také starší nástroj snooze, který uvádí PowerBook do režimu spán-ku a který je také dostupný na
uvedených serverech.
Vypnutí monitoru, užití LED diod na klávesnici
Existuje několik nástrojů, které umožňují získání informací z počítače i bez použití monitoru:
bl – blikající LED diody klávesnice
blinkd – blikající LED diody klávesnice pro telefonní záznamník a fax. Blinkd představu-je pár klient/server, který
umožňuje blikání diody klávesnice indikující počet příchozích hovorů v hlasové schránce nebo množství došlých faxů.
mailleds – pomocí diod na klávesnici zobrazuje informaci o nově doručených e–mailech; mailleds vás tichým a
nevtíravým způsobem upozorní, že máte nový e–mail – blikáním diody na klávesnici.
tleds – blikání diody na klávesnici indikuje síťové pakety TX a RX. Pokud síťový paket opustí počítač, bliká dioda
Scroll Lock. Při přijetí síťového paketu počítačem bliká dioda Num Lock.
ledcontrol (http://www.iki.fi/sampo.niskanen/ledcontrol/) – program umožňující zobraze-ní různých informací
prostřednictvím běžně nepoužívaných diod na klávesnici. Lze ho kon-figurovat tak, že zobrazí v podstatě jakoukoli přístupovou
podmínku true/false nebo indi-kuje libovolné číslo.
Spořiče obrazovky
Je jediným úkolem spořičů chránit obrazovku před vysvícením, nebo také šetří energii? Uveďme si některá doporučení Wade W.
Hamptona: Spořiče obrazovky většinou zobrazují grafic-ké prvky, vyhledávají ETI (mimozemský život) nebo provádějí jiné
úlohy. Používáte-li spořič obra-zovky tímto způsobem, pravděpodobně spotřebováváte VÍCE energie. Například počítač využívající XSETI jako spořič obrazovky se může zahřát mnohem více (a tudíž spotřebuje více energie), než když slouží k úpravě
dokumentu nebo provádí kompilaci. Pokud skutečně chcete energii ušetřit a váš X server a monitor tuto možnost podporuje,
použijte v xset možnost dpms (viz ruční nastavení xset). Například pro povolení funkcí DPMS (Energy Star) X serveru: xset +
dpms. Režim X serveru můžete rovněž změnit ručně:
xset dpms force standby xset dpms force suspend xset dpms force off
CRT spotřebovává o 25 procent více energie, pokud je obrazovka bílá, než když je obrazovka černá. Proto spořič, který je z větší
části černý, šetří energii i bez pomoci DPMS pro vypnutí obrazovky. Energii naopak příliš nešetří velmi světlé či barevné spořiče
nebo takové, jež udržují spuštěný procesor.
Příklad programů, které fungují jako spořič obrazovky:
Účelem programu xscreensaver je zobrazovat obrázky v době, kdy se obrazovka nevyží-vá jiným způsobem. Je založen
na myšlence, že i pokud s monitorem zrovna nepracujete, měl by dělat něco užitečného. Výhodou tohoto programu oproti
kombinaci programů xlock a xautolock je snadná instalace nových grafických prvků: K tomu, abyste mohli při-dat nový režim
zobrazení, není potřeba program překompilovat, stačí pouze změnit nasta-vení prostředků. Jako spořič můžete využít jakýkoliv
program, který lze spustit takovým způsobem, aby vykresloval hlavní okno obrazovky, aniž by bylo nutné provést jeho úpra-vu.
To znamená, že programy, které spustíte jako spořič obrazovky, nemusí být k tomuto účelu přímo určeny.
LockVC je program pro uzamčení konzoly, který spolupracuje se spořičem typu „průlet hvězdokupou”. Spuštění
LOCKVC ve virtuální konzole spustí hvězdokupu tak, že hvězdy rotují kolem všech tří os.
Nálepka energetické náročnosti (Energy Star)
Robert Horn <[email protected]> napsal: Měl jsem šanci diskutovat tematiku Energy Star s projektanty stolních tiskáren.
Shodli se na tom,že dostupná hodnota pohotovostní energie závisí na typu zařízení, ale vyznali se pouze v hod-notách zařízení,
jimiž se sami zabývají. Některé z jejich poznámek jsou však zajímavé:
■
Hodnocení Energy Star prokazatelně pomáhá šetřit energii. Výjimkou jsou úspory energie založené na
časovači. Největších úspor lze dosáhnout používáním zařízení s nízkým únikem proudu (jako je například impulsový motorek).
Úspor lze dosáhnout jednotlivými úpravami, ale také rostoucí poptávkou po produktech s nižší spotřebou energie. Díky
rostoucí poptávce po těchto produktech dochází k jejich zlevňování a zkvalitňování. Zastaralý typ přístroje s jedním motorkem
(stále běžícím) a možností použít různé nástavce již není nejlevnějším řešením.
Systém hodnocení Energy Star byl dobře vymyšlen. Nikdy nenutil výrobce, aby dělali ústupky týkající se kvality a
výkonu výrobků, což téměř znemožnilo protestovat proti změ-nám provedeným za účelem úspor energie během doby, kdy počítač
není aktivní. Proto-že k úsporám dochází již od chvíle, kdy se jednotlivé části počítače přestanou pohybovat, jsou tyto úspory
jednoznačně prokazatelné.
Hodnocení výkonu počítače je bezpečnostní, ne spotřební. Zdroje na počítači o příkonu 235 W a 300 W tedy určují
bezpečnostní limit. Skutečná hodnota plného využití výkonu je mnohem nižší a pohybuje se kolem 20 až 30 procent
bezpečnostního limitu. Výrobci také poznamenávají, že je obtížné změřit spotřebu energie vypnutého přístroje. K tomu je zapotřebí speciálních měřidel proudu. Běžná měřidla střídavého proudu byla vyvinuta spíše pro motory a nejsou vhodná pro spínané
zdroje.
Další metody úspory energie
Systém Linux pozastavuje procesor v nečinném cyklu, aby snížil spotřebu energie. První zprávy týkající se systémů OS/2, Win
3.1/95, NET a Linux ukázaly, že Linux spotřebuje mnohem méně energie než operační systémy založené na DOS. Tato skutečnost
se však již mohla změnit a její prověření by vyžadovalo nový průzkum.
Většina uživatelů systému Linux by svůj počítač nejraději nechala zapnutý celá dlouhá léta. Něko-lik moderních systémů BIOS
však podporuje bezobslužné spouštění a prostřednictvím démona cron můžete dokonce provádět i bezobslužné vypínání. Není
tedy nutné nechávat počítač neu-stále spuštěný.
Alternativní zdroje energie – sluneční, větrná a vodní
Přehled odkazů najdete na webu Eklektix (http://www.cirkits.com).
Různé úspory
Snížení hluku
Nejhlučnějšími zařízeními počítače jsou ventilátor, pevný disk a reproduktory.
Ventilátor
libsensors0 je knihovna pro čtení teploty/napětí/senzorů ventilátoru.
lm-sensors – ovladače (moduly) jádra pro čtení teploty/napětí/senzorů ventilátoru. Toto je modul pro čtení stavu teploty/
napětí/senzorů ventilátoru pomocí čipu LM78/79 a eventu-álně i senzorů na SMBus (Systém řízení sběrnice, většinou v
systémech P6 a PII). K dalším podporovaným typům senzorů patří LM80 a LM78 – kopie nazvaná W83781D (viz web http://
www.lm-sensors.nu/).
ACPI – viz část Vylepšené řízení spotřeby (APM/ACPI).
RTSensors (http://www.tinet.org/~com.ea/rtsensors/) může uživatel nastavit jako regulátor. Uživatel může určit
maximální a minimální rychlost ventilátorů, maximální povolenou tep-lotu atd. Pokud je teplota v rozmezí nastaveném
uživatelem, regulátor sníží rychlost venti-látoru a tím se sníží hluk. Rychlost ventilátoru se tak mění automaticky dle algoritmu,
takže už nemusíte používat mechanické či teplotní regulátory.
Pevný disk
Pokud chcete předejít zbytečnému hluku produkovanému pevným diskem, můžete toho dosáh-nout pomocí technik popsaných v
části o úsporách energie. Pevný disk je hlavním zdrojem hluku u většiny notebooků. Pevné disky moderních notebooků mají tzv.
„řízení zvuku“. Základní před-stavu o možnostech nastavení získáte v příručce. Hlučný pevný disk může být velmi rušivý, použijte man hdparm a zpomalte otáčky disku. Někteří výrobci pevných disků nabízejí nástroje, jako je např. Feature Tool společnosti
Hitachi, který umožňuje změnit nastavení Automatic Acoustic Management na nejnižší úroveň hlasitosti (Quiet Seek Mode) nebo
na maximální výkon (Normal Seek Mode).
Reproduktory
Pro konzolu použijte setterm blenght 0 a pro X Window xset b off (vypne zvonek).
Úspora materiálu (papíru, inkoustu apod.)
jeden list papíru
Tisk konceptů – více stran na
K vytištění více než jedné stránky na jediný list papíru použijte nástroje z balíku psutils. Tato sada nástrojů slouží k práci s
dokumenty PostScript. Podporuje také výběr a uspořádání stran, včetně uspořádání pro tisk brožurek a setřídění pro tisk většího
počtu stránek. Většinu těchto funkcí – včetně oboustranného tisku zmiňovaného dále – najdete dnes přímo v tiskovém dialogu
grafic-kých aplikací (OpenOffice.org, Mozilla) nebo v nástrojích pro tisk v prostředí KDE (kprinter) nebo GNOME (gtklp), takže
použití psutils již není nezbytně nutné.
Stránky HTML nebývají optimalizovány pro tisk. Stránky HTML lze tisknout pomocí nástroje html2ps (konvertor formátu HTML
na PostScript ). Tento program převádí formát HTML na Post-Script. Kód HTML je možné získat z jedné či více adres URL nebo
z místních souborů, zadaných jako parametry v příkazovém řádku. Jazyk HTML je podporován na vysoké úrovni, včetně
sekvenčních obrázků, CSS1 a některých funkcí HTML 4.0.
Použít lze také mpage k tisku po 2 či po 4 stránkách (dokumenty PS nebo text ASCII). Můžete tak ušetřit i více než 50 % papíru.
Oboustranný tisk
Jednou z možností úspory papíru je oboustranný tisk. Ben Woodard pracuje na knihovně nazva-né libppd, která vám toto
umožňuje již u standardních programů tisku v systému Linux (spolu s dalšími drobnými úpravami – vyladěním tiskárny).
Oboustranný tisk je však pro úsporu papíru stále nejdůležitější.
Na internetové adrese http://sourceforge.net/project/?group_id=1658 si můžete stáhnout beta verzi této knihovny a stejně tak
modifikovanou verzi příkazu lpr. Ke stejnému účelu slouží i mpage (http://www.mesa.nl/pub/mpage). Z manuálových stránek:
-jfirst[-last][%interval]
Tiskněte jen vybrané listy a očíslujte je (začněte číslem 1). Stránky očíslujte od začátku do konce s intervalem 1. Při zadání -j1-10
se tudíž vybere k tisku prvních 10 listů, -j 1%2 vytiskne jen liché stránky a -j 2%2 vytiskne pouze sudé stránky.
Oboustranného tisku dosáhnete ve dvou krocích. Používáte-li děrovaný papír, vložte ho do tis-kárny tak, aby díry byly v horní
části stránky – napravo při vytažení zásobníku s papírem (napří-klad u laserových tiskáren Laser writer II NTX). Liché stránky
vytisknete zadáním příkazu
-j 1%2 ...
Zaznamenejte si celkový počet stránek (z daného počtu se vytiskne pouze polovina). Jestliže mpage hlásí po dokončení tisku lichý
počet stran, odeberte poslední stránku. Poté vložte papíry do tiskárny tak, aby se text vytiskl na druhou stranu. (Pokud je papír
děrovaný, budou díry nyní nalevo). Z naší tiskárny II NTX vychází papír prázdnou stranou nahoru; umístěte ho do zásobní-ku
prázdnou stranou nahoru, ale otočený o 180 stupňů. U jiných tiskáren musíte na způsob tisku přijít sami. Nyní vytiskněte stránky
se sudými čísly v obráceném pořadí tak, že zadáte:
-r -j 2%2 ...
a budete doufat, že vás nikdo u tiskárny nepředběhl s jinou tiskovou úlohou. Nutno podotknout, že funkce jako tisk sudých/
lichých stránek nebo tisk vybraných stránek zvlá-dají novější verze příkazu lpr celkem bez problémů. Více informací najdete v
návodu „Tisk v Linu-xu“ v této knize, hledejte parametry page-set a page-range.
Čtení z monitoru místo čtení z papíru
Místo tisku můžete použít jako prohlížeč less/xless/gless. Dokumenty PostScript lze prohlížet s gv a pro dokumenty PDF použijte
xpdf nebo acroread (Adobe Reader). Než něco vytisknete, vždy si rozmyslete, zda je to skutečně nezbytné.
Důvody, proč lidé nečtou přímo z monitoru:
Čtení z monitoru je o 30 procent pomalejší (viz studie na webu http://www.useit.com/ alertbox/9602.html). Rychlost se
zvyšuje s dokonalejším hardwarem (jako je například obrazovka TFT nebo větší obrazovka).
Pro někoho je papírová verze přehlednější. I v tomto případě může být řešením lepší soft-ware (jako je Linux) a
hardware.
Někteří lidé si dokumenty přečtou raději prostřednictvím příručního počítače (například PalmIII, Newton Message Pad, Psion 5).
Další metody
Jiným způsobem úspory papíru je užití poznámek a zvýraznění/přeškrtnutí (v případě, že si doku-ment předáváte se
spolupracovníkem). Koncept napíšete v programu WordPerfect a pošlete e-mai-lem spolupracovníkovi. Ten vám ho pak pošle
aktualizovaný/opravený zpět. Změny lze zvýraznit pomocí některého z nástrojů programu WordPerfect, jako je například
zvýraznění/přeškrtnutí. Nové verze textových procesorů podporují týmovou práci např. pomocí sledování změn v doku-mentu
(OpenOffice.org).
Pokud je to možné, pořiďte si menší počítače a monitory. Tím ušetříte obalový materiál a vypro-dukujete méně odpadu. Například
krabice od monitoru CRT s velikostí 15 palců je 2 až 3krát větší než krabice od stejně velkého monitoru LCD. Operační systém
Linux pracuje dobře i s 15palco-vými monitory LCD a menšími počítači, jako například Netwinder, E3000, nebo s barebone
systé-my různých výrobců.
Mohli byste však namítnout, že nepohodlné čtení textu z menšího monitoru může lidi vést k tisku dokumentů. Jiní zase tvrdí, že
používání monitorů LCD škodí životnímu prostředí více než použí-vání monitorů CRT, neboť se při jejich výrobě používá více
toxických látek. Zná snad někdo stu-die a výzkumy řešící tento problém?
Recyklujte papír, inkoust a obalové materiály. Existují kazety do tiskáren, které se dají znovu napl-nit. V Německu jsou označeny
nálepkou Blauer Engel. Kazety laserových tiskáren jsou většinou použitelné i poté, co se na panelu zobrazí zpráva, abyste toner
vyměnili. Stačí je jen pořádně pro-třepat.
Dokumenty LaTeX: Použitím direktivy \usepackage{ccfonts} nahradíte běžný typ písma písmem se širšími linkami a
výraznějšími patkami, což i při nižším rozlišení zlepší čitelnost. Písmo je tmavší (tzn. použije více inkoustu) než písmo typu CM
a není tak pěkné. Pro tisk písma o běžné velikosti ho proto nedoporučujeme.
Změna velikosti: Místo psnup nebo pstools doporučuji psnup vytvořený v Perl4 Malco-mem Herbertem (pochází sice
již z roku 1994 a delší dobu nebyl nijak upravován, ale exi-stuje jeho nástupce yup, s kterým se můžete seznámit na webu http://
redback.spyda.net/~mjch/yup/).
Nabízí mnoho možností, které dovolují nastavit všechny čtyři okraje a mezery mezi sloup-ci zvlášť. Toho lze využít ke
zmenšení okrajů, čímž zůstane více místa pro text. Pravděpo-dobně bude nutné trochu experimentovat (zkoušet znovu a
znovu nové hodnoty a ověřo-vání výsledků pomocí gv).
Běžně používanými možnostmi jsou:
◆ -p2
(nebo -p4 atd., jako -2 ve starém psnup),
◆ -NIH (bez
okrasných prvků),
-b30 -t40 (přidat k okrajům),
◆ -g50 (přidat k mezeře mezi sloupci).
(Tyto hodnoty se mění v závislosti na velikosti papíru a původních okrajů, záporné hod
◆ -l10 -r20
noty jsou povoleny.)
PDFjam (http://www.warwick.ac.uk/go/pdfjam) je malá sada skriptů, která nabízí několik funkcí balíčku pdfpages pro
pdfLaTeX. V současné době jsou dostupné tyto nástroje: pdf-nup, pdfjoin a pdf90. PDFjam závisí na běžících instalacích
(pdf)LaTeX. pdfnup vkládá více stránek dokumentu na jednu stránku, pdfjoin slučuje více dokumentů PDF a pdf90 otáčí stránky
dokumentů PDF. Pro Mac OS X jsou k dispozici ukázky aplikací, které umož-ňují použití myši pro přetahování do skriptu.
Pdftk je nástroj podobný PDFJam. Umožňuje pokročilou manipulaci se soubory PDF. Další zajímavou variantou je
PDFedit (http://pdfedit.petricek.net/) z českých luhů a hájů.
Různé typy inkoustových tiskáren mohou tisknout na zadní stranu již potištěného papíru. Vyzkoušejte různé výrobce.
Starší inkoustové tiskárny Canon poskytují 360 dpi, starší tis-kárny HP pak 300 dpi. Pokud za použití LaTeX s velikostí 10 bodů
vytisknete 4 listy na stránku, čitelnost bude někde mezi těmito dvěma hodnotami.
Další operační systémy: Pokud musíte pracovat s MS Windows, měli byste si pořídit origi-nální ovladač Adobe
PostScript Driver, než abyste používali ten v MS Windows. Tyto ovla-dače umožňují vložit více listů na jednu stranu. V současné
době oba programy psnup nefungují v Adobe PS, MS Windows PS a PostScript získaném v souborech PDF systému MS
Windows. Moderní počítačová písma (bez německé diakritiky) jsou k dispozici jako písma TTF na serverech CTAN. Použití
těchto písem vám umožní zvýšit estetickou hodno-tu dokumentů a také ušetřit místo na papíru.
Ghostscript nabízí nový formát výstupu pswrite, který vytváří výstup ve správném formá-tu PostScript. Tuto funkci
můžete použít k opravě poškozeného formátu PostScript (napří-klad z ovladačů společnosti Microsoft) tak, že je povoleno jejich
přepracování pomocí psnup.
impose+ (http://imagic.weizmann.ac.il/~dov/freesw/impose+/) je sada nástrojů pro manipu-laci s PostScriptem.
Hlavním programem je impose pro tisk formátu PostScript, který je kompatibilní s DSC. Pokouší se odstranit bílý prostor z
výtisku tím, že zkouší propojit původní PostScript s okraji tištěné oblasti. Výstup pak vypadá lépe než zjednodušené roz-ložení
původních neupravených stránek.
hpijs (http://www.hpgs.cjb.net/) je ovladač tiskárny umožňující tisk na tiskárnách řady 6xx společnosti HP s využitím
ekonomického režimu. Ovladače obsažené v GhostScript zajiš-ťují vše kromě práce v ekonomickém režimu.
Duplex (http://sourceforge.net/projects/duplexpr/) je sada skriptů sh umožňující oboustran-ný tisk u tiskáren, jejichž
hardware tuto funkci nepodporuje (tiskárny s archovým zásob-níkem). Je určen pro tiskárny připojené k pracovním stanicím.
Může být použit přes rouru (pipe) a aplikace jej může používat jako ovladač oboustranného tisku. Jeho jedinečnou vlastností je
schopnost tisknout mnoho oboustranných úloh najednou, přičemž se nejprve vytisknou stránky s lichými čísly všech úloh a pak
stránky sudé.
Ekologické chování se vyplácí
Programy psutils nejenže šetří papír, ale jsou skvělým nástrojem k vytváření vyhovujícího vzhle-du stránky. Představte si pěknou
vázanou příručku formátu A5 namísto ledabyle sešitého svazku listů formátu A4!
V závislosti na délce slov a délce odstavců může i místo na papíru ušetřit i rozložení textu do několika sloupců (v textu se
pravděpodobně objeví více rozdělených slov, na druhou stranu se sníží počet neúplných řádků). Tímto způsobem příliš papíru
neušetříte, možná vměstnáte 2,1 stránky na 2,0. Pomocí psnup stejné množství textu umístíte na jednu stránku. Text rozložený do
více sloupců se také lépe čte.
psdim (http://www.mathstat.dal.ca/~selinger/psdim/) je nástroj, který se používá společně s nástrojem pstops. Hledá v obsahu
dokumentu PostScript délku tištěných stran. Z toho pak vypo-čítává optimální umístění stránek pro tisk.
Recyklace materiálu (papíru, kazet do tiskáren, CD, disket, pásek)
Všechen tento materiál je recyklovatelný. Hledejte ve svém okolí společnosti, které se recyklací zabývají. Sami můžete začít třídit
jednotlivé druhy odpadu.
Snížení radiačního, elektromagnetického a tepelného záření
Staré CRT monitory jsou zdrojem radiačního a elektromagnetického záření. To lze snížit pomocí olověných filtrů, obrazovek
LCD. Některá označení ekologicky šetrných výrobků (například TCO95) v sobě zahrnují i nejvyšší přípustnou hodnotu záření.
Zejména pokud je v místnosti více počítačů, mohou vyzařovat tolik tepla, že se místnost ohřívá natolik, že musí být chlazena/
klimatizována. Tepelné ohřívání lze omezit vypínáním počítačů.
Prodloužení životnosti hardwaru
Recyklace hardwaru
Trh s počítači ovládají do značné míry dodavatelé, kteří se snažící se prodat nový software a hard
ware. Neexistuje žádný komerční marketingový nástroj podporující jejich opětovné používání. Operační systém Linux nemá
žádné speciální nároky na hardware, postačí vám tedy i starší hardware.
Podporované typy procesorů
Linux je kompatibilní s procesory řady Intel, včetně 386, 486, Pentium, Pentium Pro a Pentium II a také s procesory AMD, Cyrix
a dalšími. Linux zatím nepodporuje procesory řady 286. Řešením se zabývá projekt ELKS (http://elks.sourceforge.net/). Pokud
chcete, můžete použít Minix – jeden z předchůdců systému Linux. Minix podporuje procesory 8088 až 286 s velikostí paměti od
pou-hých 640 kB. Podrobnější informace o systémech podporovaných jádrem Linux získáte na webu http://tldp.org/FAQ/LinuxFAQ/index.html. Rychlou a nízkoenergetickou alternativou je procesor ARM. Na procesoru ARM je založen například Corel/
Rebel Netwinder (viz http://www.rebel.com/ a http://developer.intel.com/design/strong/).
Aplikace a distribuce pro starší počítače Projekt RULE
Hardware je pouze tak starý, jak starý je používaný software. Projekt RULE (http://www.rule -project.org/) se snaží vytvořit
moderní, volně přístupný software použitelný na počítačích starých pět i více let, na kterých by nebylo možné nainstalovat
současné distribuce Linuxu nebo by běže-ly příliš pomalu.
ISDN Router
Projekt ISDN Router (http://schumann.cx/isdn-router/) vám umožní změnit starý hardware v bez-pečný ISDN směrovač s
překladem adres, včetně ukládání do mezipaměti jmenného serveru, služ-by IP Port Forwarding a spojování více ISDN modemů.
Systém se vejde na disketu a uživatelé mohou měnit konfiguraci pomocí jednoduše ovladatelné nabídky (v konzole nebo
prostřednic-tvím protokolu telnet).
Linux LiveCD
Linux LiveCD vám umožňuje sdílet a zabezpečit bránou firewall vysokorychlostní připojení k Inter-netu a používat technologii
WiFi. Funguje u DSL, modemu, T1 i vytáčeného připojení a podpo-ruje levný hardware, jako je například USB/PCMCIA WiFi a
síťové karty. Požadavky na hardware: počítač s minimálně touto konfigurací – procesor 486, 16 MB RAM, dvourychlostní
jednotka CD--ROM, disketová jednotka, 1 nebo 2 síťové karty, BEZ pevného disku(!). Volitelně můžete použít i kartu WiFi.
DeLi Linux
DeLi Linux (http://www.delilinux.de/) je součástí distribučního balíčku Linux, který je určen pro starší počítače s procesory řady
486 až po Pentium MMX. Je zaměřen na používání ve stolních počítačích. Obsahuje e-mailové klienty, grafický internetový
prohlížeč a kancelářský balíček s tex-tovým a tabulkovým editorem. Pro úplnou instalaci, včetně X.org a nástrojů pro vývoj,
postačí 300 MB volného místa na pevném disku.
Gentoo na starých počítačích
Na starých počítačích nemusíte používat starý software. Starý software obsahuje chyby a není dobře zabezpečený. Většina nových
distribučních balíčků bude po spuštění na těchto počítačích velmi pomalá; důvodem není nový software, ale to, že očekávají, že je
spouštíte na novém počí-tači, a automaticky nainstalují velké množství softwaru. Snahou projektu Gentoo-on-old-hardware
(http://gentoo-wiki.com/HARDWARE_old) je dosáhnout odlehčeného, minimalistického systému, který spustí jen to, co
potřebujete, a nic víc; na rozdíl od mnoha operačních systémů a obsáhlej-ších distribucí, ke kterým patří například Fedora.
FreeS/WAN
Linux FreeS/WAN (http://www.freeswan.org/) nabízí rozšíření jádra IPSEC (IP Security, což je šif-rování i ověřování) a IKE
(Internet Key Exchange; démon pro vytváření klíčů a šifrované směro-vání), ale i různé skripty rc a dokumentaci. To umožňuje
správci systému Linux budovat brány VPN i ze starých 584 a 486. Verze 1.00 spolupracuje s dalšími systémy IPSEC a IKE
vyvinutými jinými dodavateli, jako je například OpenBSD.
Tiskový server
Starší počítače obvykle slouží jako tiskový server.
Práce s omezenými prostředky a ladění systému
Související dokumenty
LBX-HOWTO (http://tldp.org/HOWTO/LBX.html) LBX (Low Bandwidth X) je rozšíření X serveru, který provádí
kompresi protokolu X Window. Má se používat spolu s X aplikace-mi a X serverem, které jsou rozděleny pomalým síťovým
připojením za účelem zdokona-lení zobrazení a doby odezvy.
Small-Memory-HOWTO (http://tldp.org/HOWTO/Small-Memory/index.html) popisuje, jak spustit Linux na systému s
malou pamětí.
Nedostatek místa na disku
Existují různé způsoby, jak získat více místa na disku (například sdílením místa, uvolněním nepoužívaného a nepotřebného místa,
vyladěním systému souborů a komprimace). Některé z těchto metod vyžívají paměť a ne místo na disku. Jak uvidíte, je pro
uvolnění místa nezbytné provést mnoho kroků.
Metody
■
Stripping: Ačkoli mnoho distribucí obsahuje „stripované“ binární soubory, je dobré tuto skutečnost zkontrolovat.
Podrobnosti naleznete v man strip. K vyhledání můžete použít příkaz file nebo nástroj findstrip. Pozor: Nestrippujte
knihovny, někdy se kvůli chybné technice programování odstraní nesprávné symboly.
Russell Marks <[email protected]> doporučuje:
V dnešní době mnoho lidí kompiluje za použití parametru -g, což mi připadá nevhodné
(ve skutečnosti tento postup ubírá místo).
strip nabízí možnost --strip-debug, která odstraní pouze ladicí symboly. To je v mnoha
případech dostačující a dobré pro použití v knihovnách. Nedávno jsme pracovali s nástrojem SuSE 6.3, takže si můžete
prohlédnout příklad:
bash-2.03# cd /lib bash-2.03# ls -l libc.so.6 -rwxr-xr-x 1 root root 4223971 Nov 6 16:22 libc.so.6 bash-2.03# strip --strip-debug libc.so.6
bash-2.03# ls -l libc.so.6 -rwxr-xr-x 1 root root 1200355 Dec 8 00:13 libc.so.6
Perforace: zum(1) přečte seznam souborů ze stdin a pokusí se tyto soubory perforovat. Perforace znamená, že řady
nulových bajtů nahradí lseek, a díky tomu nemá systém sou-borů šanci přidělit těmto bajtům skutečný prostor na disku. Příklad:
find . -type f | xargs zum. Detaily o dírách v souborech najdete v části „Příručka administrátora“, kapitola „Sou-borové systémy“.
Odstranění nepotřebných a duplicitních souborů: Vyhledejte v systému soubory jádra, záložní soubory editorů emacs
(<#SOUBOR# >) a vi ( <SOUBOR>.swp), dále záložní soubory rpm (<SOUBOR >.rpmorig ) a patch. Při hledání duplicitních souborů
můžete zkusit příkaz finddup. Zvolte si určitý systém pro názvy záložních, dočasných a testovacích souborů (jako je například
značka za názvem souboru).
Odstranění dočasných souborů: Například /tmp, existuje k tomu i nástroj tmpwatch.
Zkrácení logů: obvykle soubory v adresáři /var/log. K tomuto účelu je k dispozici něko-lik šikovných nástrojů, jako je
například savelog.
Odstranění souborů: Odstraňte soubory, které nejsou „nezbytné“, jako je dokumentace /usr/doc a zdroje, například /usr/
src .
Nepotřebné knihovny: Pro vyhledání nepoužívaných knihoven můžete použít nástroj bin-stats.
Systém souborů: Zvolte systém souborů, který ekonomicky nakládá s prostorem na disku, například rsfs neboli Reiser
Filesystem. Vylaďte svůj systém souborů například prostřed-nictvím nástroje tune2fs. Vyberte přiměřenou velikost oddílu a
bloku.
Zmenšení jádra: buď použitím jen potřebných funkcí jádra a/nebo vytvořením komprimo-vaného obrazu jádra (použijte
make bzImage).
Komprimace: Systém souborů můžete komprimovat prostřednictvím nástroje gzip a dekomprimovat jej během práce.
Případně můžete komprimovat pouze určité soubory. Komprimované soubory můžete spouštět pomocí nástroje zexec.
■
Komprimované souborové systémy:
Pro systémy souborů e2fs je k dispozici verze komprimace e2compr (viz http://e2compr.sourceforge.net/).
DMSDOS (http://cmp.felk.cvut.cz/~pisa/dmsdos/), který umožňuje vašemu počítači pří-stup ke komprimovaným
jednotkám Windows95 (DriveSpace, DoubleStacker). Nepo-třebujete-li kompatibilitu DOS/Windows95, tj. chcete komprimovat
pouze data Linux, není tento postup tvůrcem programu doporučován.
Jiné komprimované souborové systémy jsou například SquashFS nebo JFFS2 (detaily viz článek http://lwn.net/
Articles/219827/).
Sdílení oddílů: Můžete sdílet odkládací prostor či datové oddíly mezi různými operačními systémy (viz mount). Pro
připojení komprimovaných jednotek MS-DOS Windows95 (DoubleSpace, DriveSpace) můžete použít DMSDOS.
Knihovny: Použijte jinou (starší) knihovnu (například libc5), která bývá menší než kni-hovna libc6 neboli glibc2.
Jádro: Pokud vašim potřebám vyhovuje starší verze jádra, můžete ušetřit určitý prostor na disku.
Grafické uživatelské rozhraní: Pokud je to možné, používejte co nejméně grafického uživatelského rozhraní.
Malé distribuce: K dispozici je několik distribučních balíčků, které se vejdou na jednu dis-ketu 3,5” nebo zabírají
maximálně 10 MB prostoru na disku. Více informací naleznete na internetové adrese http://tuxmobil.org/howtos.html.
Tailmerging for Ext2 (http://www.innominate.org/~phillips/tailmerge/): Slučování konco-vých bloků souborů je metoda,
která pomáhá šetřit prostor v systému souborů s rozsáhlý-mi bloky a mnoha malými soubory. Tailmerging for Ext2 je nadstavba
nástroje ext2, který slučuje koncové bloky několika souborů do jednoho sdíleného bloku. Detaily k tématu najdete v části
„Příručka administrátora“ v kapitole „Velikost bloku v souborovém systému“.
Rychlost pevného disku
Výkon pevného disku můžete zvýšit pomocí nástroje hdparm. Při zkoušení programu pozor – podívejte se důkladně do
manuálových stránek!
Malá pamě Metody
Velikost paměti zjistíte pomocí nástrojů free a top nebo zkuste projekt Mergemem (http://www.complang.tuwien.ac.at/ulrich/
mergemem/). Mnoho programů obsahuje oblasti paměti se stejným obsahem, které operační systém nezjistí. Obvykle obsahují
data, jež se vygenerovala při spuštění a dlouhou dobu se nezměnila. Nástroj Mergemem tyto oblasti vyhledává a umožňuje jejich
sdílení. Sdílení se odehrává na úrovni operačního systému, přičemž je skryté úrovni uživatelských programů. Nástroj Mergemem
je užitečný zejména v případě, že spouštíte více instancí překladačů a emulátorů (jako je například Java nebo Prolog), protože
dokáže udržet kód v oblasti důvěrných dat. Využít toho mohou i další programy, ačkoli na nižší úrovni. Můžete také zmenšit
velikost jádra odstraněním všech nástrojů, které pro vás nejsou nezbytné a také co největší modulací jádra. Mož-ností je také
vypnutí všech nepotřebných služeb a démonů (například lpd, mountd, nfsd) a zavře-ní některých virtuálních konzol. Samozřejmě
můžete kdykoliv použít odkládání. Pokud je to možné, použijte zdroje jiného počítače, například pomocí X, VNC, nebo dokonce
telnetu. Více informací najdete na webu Virtual Network Computing (http://www.realvnc.com/).
Nízká rychlost procesoru
Pokud budete chtít zvýšit rychlost procesoru přetaktováním, mohli byste tím však poškodit hardwa-re. Některé příklady lze najít
na webu Adorable Toshiba Libretto – Overclocking (http://www. silverace.com/libretto/).
Menší aplikace a produkty
BOA – Vysoce výkonný webový server. To znamená, že na rozdíl od klasických serverů nevětví každé příchozí
připojení. Vnitřně násobí všechny odchozí připojení HTTP a větví pouze programy CGI (což musí probíhat postupně). Předběžné
testy ukazují, že boa zvlád-ne s procesorem Pentium 100 MHz několik stovek požadavků za sekundu.
MGR – grafický systém, který používá mnohem méně prostředků než X Window.
Low Bandwidth X – v únoru 1998 napsal Alan Cox v LINUX REDUX: „... existují 2 způso-by výborné práce s
normálními aplikacemi. LBX (Low Bandwidth X) je oficiální aplikace konsorcia X (nyní OpenGroup na webu
www.opengroup.org). Dxpc (http://ccwf.cc. utexas.edu/~zvonler/dxpc) je alternativou, kterou upřednostňuje většina uživatelů.
Tyto
systémy se chovají jako proxy servery pro X Window a komprimují tok dat až na 50 pro-cent u běžných požadavků, ale
lze dosáhnout i snížení na 25 procent původní šířky pásma. S dxpc jsou aplikace celkem použitelné prostřednictvím
připojení s modemem 28,8 kHz nebo v síti Internet.”
Blackbox – Jedná se o správce oken pro X. V mnoha aspektech se podobá oblíbeným pro-středím, jakým je například
Windows Maker, Enlightenment a FVWM2. Tento správce by pro vás mohl být zajímavým, pokud vás již unavují správci oken,
kteří příliš zatěžují vaše systémové zdroje, přesto však požadujete atraktivní a moderní rozhraní.
Linux-lite – produkt založený na typu jádra verze 1.x.x. Vhodný pro systémy s velikostí paměti pevného disku pouze 10
MB (viz výše uvedená adresa).
SmallLinux – (http://www.superant.com/smalllinux/) – odlehčená verze systému Linux a nástrojů na třech disketách.
Typ jádra 1.2.11. Základním formátem disku je ext2 a k dis-pozici jsou nástroje fdisk a mkfs.ext2, takže lze provést instalaci na
pevný disk. Je vhod-ný pro starší počítače s operační pamětí RAM menší než 4 MB.
cLIeNUX – produkt orientovaný na klientské použití systému Linux.
minix – toto není Linux, ale minimalistický UNIX. Je vhodný pro velmi malé systémy, napří-klad s typem procesoru
286 a operační pamětí RAM 640 kB. Více informací naleznete na internetové adrese http://www.cs.vu.nl/~ast/minix.html. Existuje
pro něj i implementace X Window s názvem mini-x (autorem je David I. Bell a podrobné informace jsou k dispo-zici na webu
ftp://ftp.linux.org.uk/pub/linux/alan/).
screen – drobný, ale účinný správce konzoly. John M. Fisk <[email protected]> napsal na webu LINUX
GAZETTE (http://www.linuxgazette.com/issue01to08/ lg_issue7.html#screen): „Celé je to jen o grafickém uživatelském rozhraní“
– tedy něco v tom smyslu, že hlavní výrobci operačních systémů by si měli získat vaši důvěru. Pravdou je, že v některých
případech příkazový řádek zůstává velmi dobrou volbou k provedení určité úlohy. Je rychlý a vcelku pohotový a jeho používání je
vhodné zejména u počítačů s omezenou velikostí paměti či výkonností procesoru. Nezapomínejte, že mnoho úkonů lze provádět
v konzole. screen je správce okna celé obrazovky, který rozděluje fyzický ter-minál pro různé procesy, přičemž se obvykle jedná
o interaktivní shelly. Každý virtuální terminál nabízí funkce terminálu DEC VT100 a k tomu několik funkcí ze standardů ANSI
X3.64 (ISO 6429) a ISO 2022 (například vložení/smazání řádku a podpora různých znako-vých sad). Podpora více uživatelů,
rozdělení obrazovky, podpora emulace stavu hardwa-ru, konfigurovatelný oddělovač oken, permanentní oddělovač oken, časová
razítka soubo-ru protokolu, volitelný vestavěný protokol telnet, nastavitelná podpora slepeckého písma, podpora komprimace.
tinyirc – klient IRC. Nenabízí většinu z pokročilejších příkazů klientů typu ircII, ale fungu-je.
tinyproxy – jednoduchý server proxy vyvinutý k práci s využitím minima systémových pro-středků. Díky této
jednoduchosti je tinyproxy ideální pro úpravy uživatelského prostředí – zdroj tohoto nástroje je velmi srozumitelný, a tudíž
můžete pomocí jednoduchých příkazů začít přidávat funkce podle vlastních potřeb.
Další metody
Baterie Ni-Cad je nutné pravidelně vybíjet, aby se prodloužila jejich životnost. Baterie, jako jsou Ni-Cad, Lead Acid a NiMH,
obsahují TOXICKÉ chemikálie. Mělo by se s nimi zacházet tak, aby jejich životnost byla co nejdelší, a poté by se měly
recyklovat a ne jednoduše vyhodit do koše.
Jednou z technik, jež stojí za zmínku, je „železná“ baterie zmíněná v článku na webu http://news.excite.com/news/990815/01/
science-battery-iron. Tento typ baterie by mohl řešit pro-blém vzniku toxických odpadů z použitých baterií, ačkoliv se takové
baterie pravděpodobně dočkáme až za několik let.
Patch BadRAM v systému Linux
Cílem opravného balíčku BadRAM Patch (http://rick.vanrein.org/linux/badram/) je spustit jádro systému Linux tak, aby mohlo
obejít poškozené části paměti RAM. Poškozená paměť RAM může obsahovat chybné bity v některých (známých) adresách.
Obvykle se taková paměť RAM považu-je za nepoužitelnou a vyhodí se; čím větší paměť RAM, tím vyšší šance selhání adres. S
neustále se zvětšující pamětí RAM by proto bylo příjemné mít jinou alternativu, než je vyhození poškoze-ných čipů paměti RAM.
Instalace systému Linux na starší hardware
Lightweight Linux, první část (http://www.128.ibm.com/developerworks/linux/library/l-lwl1/): Hardware je pouze tak starý, jak
starý je používaný software. Moderní operační systém a aktuální aplikace vrací staršímu hardwaru výkonnost. V této části vám
představíme nejvhodnější postup, jehož prostřednictvím lze nainstalovat funkční systém Linux na starším hardwaru nebo na
moder-ním hardwaru s omezenou velikostí paměti a úložiště dat.
Vyprázdnění nepotřebných lokalizačních souborů: localepurge je jednoduchý skript pro Debian sloužící k uvolnění místa na
disku, které zbytečně zabírají nepotřebné lokalizační soubory a loka-lizované manuálové stránky. V závislosti na instalaci můžete
ušetřit 20, 30 nebo i více megabajtů, obvykle určených soubory tohoto typu.
Inovace a oprava hardwaru
Výrobci obyčejně negarantují záruku pokud kryt otevřel někdy jiný než autorizovaný personál. Pokud to i přesto chcete zkusit,
nabízíme vám několik zajímavých odkazů na weby, které se zabý-vají opravami, rozebráním, inovací nebo úpravou notebooků,
opravami rozbitých PDA a příruč-ních počítačů (Hand-Held) (http://repair4laptop.org/, http://repair4pda.org/). Můžete také
opravo-vat mobilní telefony, kapesní přehrávače hudby a videa, opravit a upravit myš či opravit tiskárnu a zásobníky pro inkoust
nebo toner (http:repair4mobilephone.org/, http://repair4player.org/, http://repair4mouse.org/ a http://repair4printer.org/).
Jiné operační systémy
Se svolením George Whita <[email protected]>: Můžete si koupit použitý počítač (SGI, Sun, NeXT) s operačním
systémem Unix, který je schopen pracovat s širokou škálou open-sour-ce softwaru. V některých případech (SGI Indigo2) můžete
i nadále používat stávající verzi ope-račního systému, jindy bude vhodnější volně dostupný operačního systém, jakým je například
Linux, vždy však máte přístup k velkému množství dobrého softwaru a k nástrojům, abyste mohli vytvořit vlastní. Nižší spotřeba
energie u starších počítačů znamená delší běh na UPS, případně můžete použít malé náhradní zdroje energie.
X10 – domácí automatizační systém
Moduly X10 jsou zařízení, která se dají zapojit do elektrické zásuvky a umožňují například na dálku zapnout připojenou lampu
nebo spotřebič. Existují také moduly X10, které se umístí jako vypínače na zdi a zapínají či vypínají světla, jiné mohou sloužit k
spínání termostatu.
Zařízení příbuzné modulům X10 (http://www.x10.com/) se nazývá Firecracker a je skvělým ochranným zařízením. Umožňuje
ovládání zařízení X10 prostřednictvím sériového portu. Progra-my, jako je bottlerocket a gtk-x10, umožňují programům systému
Linux ovládat zařízení X10 pomocí Firecracker.
GNU Phantom.Home (http://www.joethielen.com/phantom/home/) je počítačem ovládaný domácí automatizační systém. Software
se skládá ze schématu obvodu pro vytvoření ovladače Phan-tom.Home, což je jednoduchá obvodová deska připojená k
paralelnímu portu počítače. Pomocí kombinace hardwaru a softwaru lze ovládat (například přepínat) až 120voltové zařízení.
Úpravou obvodové desky podle vlastní potřeby a s určitými znalostmi elektroniky můžete ovládat praktic-ky každé zařízení s
jakýmkoli napětím.
Nepřerušitelný zdroj napájení (UPS)
Pokud žijete či pracujete v oblasti s častým výskytem bouřek, měli byste mít k dispozici nepřeru-šitelný zdroj napájení (UPS).
Předejdete tak poškození monitoru, procesoru nebo modemu pře-pětím při úderu blesku. Chráníte tak hardware, software a šetříte
svůj čas i peníze. Podrobnosti naleznete v dokumentu UPS-HOWTO (http://tldp.org/HOWTO/UPS-HOWTO.html).
UPS chrání váš hardware, šetří práci atd. Chrání hardware i v oblastech s častým výskytem výpad-ku elektřiny. Uvažuje se také o
využití UPS jako zdrojů střídavého napětí i jinde.
Software
Hry
Osobně nejsem velkým vyznavačem počítačových her, ale domnívám se, že by se jich dalo využít i při ekologické výchově. Při
pátráních po takových hrách jsem narazil na Lincity a Real Life. Jejich užitečnost posuďte sami.
Lincity – Účelem hry je vybudovat a starat se o město. Obyvatelům musíte zajistit potravu, bydlení, práci a majetek.
Můžete buď vybudovat udržitelnou ekonomiku s využitím ener-gie z obnovitelných zdrojů a recyklace, nebo můžete spět k
zániku a vybudovat si raketu, abyste unikli z planety, jejíž zdroje jsou vyčerpané a jež je znečištěná. Volba je jen na vás. Protože
zdroje jsou omezené všude, nejde o hru na dlouhou dobu. Balíček obsahuje sou-bory společné pro obě verze hry (X Window a
SVGALIB).
Real Life (http://www.sunysb.edu/philosophy/faculty/gmar/realife.html) – Ve hře Conway's -Game of Life (http://
en.wikipedia.org/wiki/Convay’s_Game_of_Life) je každá z buněk buď naživu (má hodnotu 1), nebo je mrtvá (má hodnotu 0).
Oproti tomu ve hře Real Life (sku-tečný život) je toto omezení nahrazeno hodnotami představujícími skutečná stádia života a
smrti. Hra Real Life ukazuje závislost na počátečních podmínkách charakteristických pro neuspořádané systémy.
Společnost Sierra (http://www.sierra.com/) vytvořila před několika lety hry Eco Quest 1 – Lost in Rainforest a Eco
Quest 2 – The Search for Cetus. Tyto hry byly určeny pro systémy MS-DOS a Windows 3.x a zaměřovaly se na mladší hráče.
■
Hru SimEarth představila roku 1988 společnost Maxis (pro DOS, Win3.x, Mac). Jedná se
o simulaci vývoje planety od formování zemské kůry po vznik a rozvoj civilizace. Je zalo-žena na teorii Gaia Jamese
Lovelocka. Hra je celkem nudná a složitá, ale hrou s modely získáte mnoho cenných informací, zejména o skleníkovém efektu.
Ve hře Balance of the Planet od Chrise Crawforda z roku 1991 (pro DOS, Mac), ve které jste v pozici autora vládní
strategie, musíte skloubit průmysl a ochranu životního prostře-dí. Hra je neuvěřitelně složitá a fádní (snad ještě více než
SimEarth ), ale v každém přípa-dě poučná, a pokud strávíte nějaký ten čas pročítáním manuálu, tak i zajímavá. (Verzi pro Mac si
můžete stáhnou na internetové adrese http://www.erasmatazz.com/free.html, zdá se však, že Executor neumí zpracovat názvy
souborů z archivu.)
Global Effect z roku 1992, jejímž tvůrcem je Millennium (pro DOS, Amiga), je strategická hra, ve které se pokoušíte
přemoci protihráče. Přitom se navíc musíte vypořádat s nega-tivními ekologickými vlivy (z průmyslu a zbrojení) působícími na
vaši populaci. Ve srov-nání se současnými „střílečkami“ je celkem nudná a grafika není příliš zajímavá.
SimIsle z roku 1995 od Maxis (pro DOSR) – rozvíjíte tropický ostrov, aniž byste narušili ekologickou stabilitu deštného
pralesa. Hra je výchovná i zábavná zároveň.
SimPark z roku 1997 od Maxis (pro Win 95) – jedná se o dětskou verzi SimIsle, je jedno-dušší a více výchovně
zaměřena.
Předpokládám, že starší hry pro DOS by měly v pohodě běžet na dosemu.
Modelování, sběr dat, statistika atd.
Pro systém Linux je k dispozici program Ecolab, ale existuje i další software (pro MS Windows), který se využívá pro ekologii.
Předpokládám ale, že software Linux (například databáze nebo sta-tistické programy) lze potřebám ekologického výzkumu
snadno přizpůsobit. S jeho pomocí je také možné provádět ekologické modelování.
Ecolab
Ecolab je jednak název balíčku software, ale i výzkumný projekt zabývající se dynamikou evolu-ce. EcoLab (http://
parallel.acsu.unsw.edu.au/rks/ecolab.html ) je systém, který vytváří abstraktní ekologické modely. Byl vytvořen v Tcl/Tk, takže
můžete za chodu snadno měnit parametry mode-lu pomocí úpravy skriptu. Model samotný je vytvořen v C++.
OpenClassroom
OpenClassroom je určen pro vzdělávání. Na internetové adrese http://www.openclasroom.org/ je k dispozici softwarový balíček
umožňující vytvářet skupiny sdílející vědomosti připojením počíta-čů (starých, nových) do sítě, ať lokální či celosvětové.
Hlavním zájmem této iniciativy je umožnit vzdělávacím a veřejným organizacím, aby prodloužily životnost svého vybavení
aktuálním soft-warem, který mohou používat ve svých počítačích.
Tierra
Tierra (http://www.nis.atr.jp/~ray/tierra/) je nástroj pro studium evoluce a ekologie; spustitelná je na OS Linux a dalších OS.
Uplatnění systému Linux při výzkumu v oblasti životního prostředí
Se svolením Wade W. Hamptona: Systém Linux se může skvěle uplatnit při zkoumání životního prostředí. Existují řešení, která
lze využít při dálkovém sledování a získávání dat. Existují VELMI malé implementace systému Linux, jako je například uCsimm
(http://www.uclinux.com/). Systém Linux se také používal při zkoumání počasí v letadle Hurricane Hunter NOAA. Je také ideální
plat-formou pro získávání ekologických a environmentálních informací v síti Internet pomocí klasic-kých webových prohlížečů,
jakým je například Netscape. Lze jej rovněž využít ke komplexnímu modelování ekologických a environmentálních procesů.
SWARM
SWARM (http://www.swarm.org/) je softwarový balíček pro multifaktoriální modelování vyvinutý
firmou Swarm Development Group (SDG). Je určen vědcům z celé řady oborů, zejména pro zkoumání v oblasti umělého života.
Základní funkcí programu Swarm je modelování kolekcí souběžně působících faktorů. Poté lze vytvořit širo-kou škálu modelů,
které jsou založeny na různých faktorech. Zdrojový kód je volně dostupný a jeho používání se řídí licenčními podmínkami GNU.
Změny klimatu
Projekt Climate-Dynamics (http://www.climate-dynamics.rl.ac.uk/) je projekt, který si klade za cíl analýzu klimatu založenou na
sdílení zdrojů počítačových klientů.
UNCERT
UNCERT (http://uncert.mines.edu/) je softwarový balíček určený pro analýzu geostatické nerov-nováhy aplikované na
modelování proudění podzemní vody a přenosu kontaminantů. Byl vyvi-nut pro vyhodnocování vnitřní nerovnováhy při
popisování podpovrchové geologie, hydraulic-kých vlastností a migrace nebezpečných kontaminantů v systému podpovrchového
proudění. Skvěle se hodí k výše uvedeným účelům, je však i dostatečně všestranný, a mohou jej proto vyu-žívat i vědci z různých
oblastí.
EcoTopia
Webová stránka EcoTopia (http://www.ecotopia.org/) využívá počítačovou simulaci k modelování města Santa Cruz ve státě
Kalifornie jako vzorové komunity šetrné k životnímu prostředí. Ekotu-ristům a vyznavačům „zeleného“ způsobu života se
EcoTopia pokouší pomocí počítačového modelování a nastíněním prognóz nabídnout model slučující technologie a snižování
zátěže život-ního prostředí.
Digiqual
Digiqual (http://sourceforge.net/projects/digiqual/) je balíček programů pro řízení systému kontro-ly životního prostředí a kvality
v továrně. Balíček se skládá ze šesti modulů, z nichž pouze první byl zatím uveden na trh. Jedná se o moduly Supplier Evaluation,
Non Conformity, Documentati-on, Maintenance, Internal Audit a Training. Všechna data se prostřednictvím konektoru psycopg
ukládají do databáze PostgreSQL.
Různé další informace
Související projekty, seznam adres a diskusní skupiny
Repair FAQ (http://www.repairfaq.org/).
■
386 World (http://come.to/386), Gaute Hvoslef Kvalnes <[email protected]>. Jedná se
o jeden z nejlepších dostupných zdrojů o počítačích „386“ kompatibilních a o příslušném softwaru. Autor se zabývá
spíše operačním systémem MS Windows, ale podporuje také Linux.
Electronic Green Journal (http://www.lib.uidaho.edu/) vydávaný knihovnou University v Idaho je profesionální,
odborná publikace, která se věnuje tématům ochrany životního prostředí včetně hodnocení stavu životního prostředí, ochrany
přírody, rozvoje, ukládání odpadů, ekologické výchovy, rizik, znečištění, zdrojů, technologií a úpravy. Na tento pro-jekt přispívá
akademická obec, záměrem je však vydávat články, bibliografie, posudky
a oznámení jak pro zainteresovanou veřejnost, tak i pro odborníky. Uvítají autorské pří-spěvky na jakékoliv z výše
vedených témat.
BAN je globální síť organizací zabývajících se rozvojem a znečištěním, které ctí myšlenku mezinárodního práva v
oblasti životního prostředí. Hledají způsoby, jak předcházet jaké-mukoliv obchodu se znečištěním – toxickým odpadem,
toxickými výrobky a technologie-mi. Členové BAN budou pracovat na národní, regionální a globální úrovni za účelem dosa-žení
následujících cílů: Posláním Basel Action Network (BAN – http://www.ban.org/) je předcházet globalizaci problematiky
toxických chemikálií. Především se chceme ujistit, že Basilejská úmluva a dle ní zakázaný vývoz nebezpečných odpadů z
členských států OECD do nečlenských států nebude zeslabovat, ale dojde co nejdříve k jeho ratifikaci a imple-mentaci. Také
chceme zajistit, že Basilejská úmluva a další nástroje slouží k zamezení obchodu a růstu nejnebezpečnějších a často zastaralých
průmyslových odvětví, zejména s ohledem k rozvojovým a nově se industrializujícím státům.
Silicon Valley Toxics Coalition (SVTC – http://www.svtc.org/) je různorodá koalice, která se již téměř dvacet let
angažuje ve výzkumu, advokacii a zabývá se problémy životního pro-středí a lidského zdraví způsobenými prudkým nárůstem
vyspělého elektronického prů-myslu. Naším cílem je zvýšení udržitelnosti životního prostředí, čistá produkce průmyslu, zlepšení
zdraví, prosazování práva a zabezpečení demokratického rozhodování pro obce a pracovníky, jejichž životy jsou bezprostředně
ovlivněny průmyslem, jako je tomu napří-klad v Silicon Valley a podobných oblastech ve Spojených státech a ve světě.
Ekologické srovnání počítačů
Vědci z Technické univerzity v Berlíně (Technical University of Berlin – http://tu-berlin.de/) řešící projekt zabývající se
znovupoužitím počítačů (projekt ReUse – http://www.reuse-computer.de/) nedávno porovnali spotřebu energie různých typů
počítačů během jejich životnosti. K výrobě počítačů je zapotřebí výkonu 535 kW/h, což je o deset procent méně než před čtyřmi
lety. Větši-na energie se spotřebuje během osmihodinové pracovní doby. Spotřeba energie nových počítačů s procesory o
frekvenci 2,5–3 GHz je 100 wattů, i když jsou v pohotovostním – úsporném režimu, zatímco počítače s procesorem 1,4 GHz
spotřebují 80 wattů a 4 roky staré počítače spotřebovaly pouze 60 W. Z ekologického hlediska je proto lepší koupit si starý
počítač jednak proto, že se nespotřebovává energie k výrobě nového, a také proto, že jeho provoz je méně energeticky náročný.
Obrazovky LCD spotřebovávají méně energie než jakékoliv jiné monitory. Z tohoto důvodu jsou nejekologičtějšími typy počítačů
notebooky. Během provozu spotřebovávají nejméně energie. Tři roky staré laptopy jsou z tohoto hlediska lepší, protože jejich
procesory nejsou tak energeticky náročné jako nové modely. Článek na toto téma naleznete v německém počítačovém časopise
C’t 21/2003 (http://heise.de/ct/).
Služby PCMCIA Card Services a vylepšené řízení spotřeby
Převzato z dokumentu PCMCIA-HOWTO (http://tldp.org/HOWTO/PCMCIA-HOWTO.html): „Pokud jste nakonfigurovali jádro
s podporou APM, lze služby PCMCIA Card Services kompilovat s pod-porou pro vylepšené řízení spotřeby (APM). Jestliže je ve
vašem systému rozpoznána kompatibil-ní verze, moduly PCMCIA se pro APM nakonfigurují automaticky. Ať již je podpora
APM nastave-na nebo není, pro vypnutí a restartování karet PCMCIA můžete před uvedením notebooku do reži-mu spánku zadat
příkaz cardctl suspend a po opětovném spuštění příkaz cardctl resume. S aktivním modemem nebude tento postup fungovat,
protože sériový ovladač není schopen ulo-žit a obnovit operační parametry modemu. Zdá se, že APM je v některých systémech
nestabil-ní. Pokud dojde ve vašem systému k nějakým potížím s APM a PCMCIA, pokuste se zjistit, který z balíčků je příčinou, a
teprve poté chybu oznamte. Některé ovladače ( především pak ovladače PCMCIA SCSI) se z cyklu režim spánku/obnovení
nedokážou zotavit. Používáte-li kartu PCMCIA, zadejte před uvedením systému do režimu spánku vždy příkaz cardctl eject.
Pokud je to možné, používejte místo modemu PCMCIA interní modem (může to být WinModem).“
Metody úspory energie
Nepotřebujete-li podporu infračerveného zařízení, zakažte ji v systému BIOS nebo vypněte ovladač zařízení IrDA.
Některé funkce IrDA jádra jsou pro úsporu energie užitečné. V tech-nických vlastnostech k notebooku HP OmniBook 800 se
například doporučuje vypínat infračervený port, pokud není zrovna používán, protože může spotřebovat až 10 procent
pohotovostního času baterie. Můžete také zkusit zakázat funkci Fast RRs v sekci IrDA jádra. Díky této možnosti získáte mnohem
lepší dobu odezvy, ale spotřebujete více energie.
Služby PCMCIA spotřebovávají mnoho energie, takže pokud je nepoužíváte, raději je vypněte.
Návrhy, jak zvýšit pracovní dobu baterie až na 8 hodin, naleznete na webu Adorable Tos-hiba Libretto (http://
www.silverace.com/libretto/).
Informaci o APM naleznete výše v části o Vylepšeném řízení spotřeby (APM/ACPI).
Upravený nástroj rclock (http://www.leland.stanford.edu/~bbense/toys/). Booker C. Bense upravil nástroj rclock, aby
mohl do rozhraní hodin přidat jednoduchý měřič energie baterie.
xbatstat (http://www.jaist.ac.jp/~daisuke/Linux/xbatstat.html) – zkoušeč stavu baterie pro Linux a X.
■
KDE (http://www.kde.org/) nabízí nástroje KAPM, Kbatmon, Klaptop a KPowerSave. Auto-rem je Paul
Campbell. Kcmlaptop je sada ovládacích panelů KDE, která implementuje pod-půrné funkce do notebooků, včetně sledování
stavu baterie – stručně řečeno se jedná
o malou ikonu ve stavovém řádku KDE, která ukazuje, kolik času zbývá do vybití baterie. Varuje vás v případě, že se
sníží stav baterie, a umožní vám nastavit možnosti pro úsporu energie. Podobné softwarové balíčky naleznete rovněž na webu
projektu GNOME (http://www.gnome.org/).
Více informací získáte na webu Battery-Powered-mini-HOWTO (http://tldp.org/HOWTO/ Battery-Powered/
index.html).
Toshiba fan – zapnutí nebo vypnutí ventilátoru v laptopu Toshiba Pentium. Jedná se
o nástroj příkazového řádku k vypnutí a zapnutí ventilátoru nebo ke zjištění aktuálního stavu. Měl by fungovat na všech
laptopech Toshiba Pentium, které mají ventilátor.
Hardwarový přehrávač MP3
V německém počítačovém časopise CT (http://www.heise.de/ct/) je na straně 200 čísla 9/1999 a na straně 260 čísla 10/1999
článek o tom, jak ze starých počítačů (řady 286 a novějších) vytvořit pře-hrávače MP3 prostřednictvím dekodéru MP3-HardwareDekoder na paralelním portu. (Autorovu domovskou stránku naleznete na internetové adrese http://www.mp3pump.de/english/
index.html.)
Na zmíněném webu je také informace o softwaru od Klause Peichla (http://leute.server.de/ peichl/mpegcd.htm), který nevyžaduje
použití dekodéru hardwaru. Oba zmíněné programy jsou založeny na systému DOS.
Program Cajun (http://www.cajun.nu/) vám umožňuje vytvořit z jakéhokoli počítače (>75 MHz) audio jukebox pro své auto nebo
domácnost. Využívá sériový displej MatrixOrbital (http://www.matrixorbital.com/) a podporuje rozhraní IRman pro dálkové
ovládání. Výstup ze zvukové karty směřuje do vašeho zesilovače (ať již v autě nebo doma). Nabízí podporu FM/Video4Linux,
CrystalFontz a výběr mezi mpg123 nebo xaudio. Otázkou pouze zůstává, kolik energie spotřebuje takový přehrávač oproti těm
běžně dostupným.
Na co si dát pozor při koupi nového počítače
Se svolením Wade W. Hamptona (úpravy provedl wh): Kupte si energeticky nenáročný počítač, jakým je laptop nebo síťový
počítač. Ty nespotřebují tolik energie jako stolní počítačové systémy. Na webu jsem se dočetl, že někdo používal Corel/Rebel
Netwinder se solárními bateriemi. Je zvláštní, že počítač s hodnocením „Energy Star“ potřebuje 300wattový zdroj energie a
spotřebuje mnohem více energie než počítač, jakým je Netwinder, kterému stačí pouhý 10wattový zdroj (a přesto vyhovuje
hodnocení počítačového vybavení Energy Star, které se zaměřilo na spotřebu nevyužité energie).
Možná by měla existovat třída počítačů nazvaná například „Energetický lakomec“ (nebo podob
ně), protože spotřebovává řádově méně energie než systémy s hodnocením Energy Star. Pořízením monitoru LCD namísto
klasického monitoru CRT ušetříte energii. Monitory LCD spotře-bovávají pouze 30–40 wattů, zatímco většina ostatních monitorů
spotřebuje stovky wattů. Cena monitorů LCD je stále vyšší než u jiných typů, ale rozdíly se rapidně snižují.
Ujistěte se, že nově koupený počítač obsahuje hardware s podporou ACPI (APM) a má nízké záření. Používejte monitory
vyhovující hodnocení TCO, DPMS nebo Energy Star.
R. Horn <[email protected]> napsal: „Web Lawrence Berkeley Labs – LBL (http://eande.lbl.gov/) osob-ně považuji za nejlepší
zdroj informací, co se týče energeticky úsporného vybavení. Zabývá se důleži-tými podrobnostmi snížení energetické spotřeby
mnoha různých druhů zařízení, nejen počítačů. Nabí-zí také mnoho odkazů na související weby. Hodnocení Energy Star je projekt
americké agentury pro ochranu životního prostředí (US Environmental Protection Agency). Doposud se všechna omezení
vycházející z tohoto projektu zaměřovala na snížení spotřeby energie bez nutnosti změnit nebo ome-zit běžné užívání. Množství
elektrické energie spotřebované vypnutými zařízeními (počítače, televize, mikrovlnné trouby atd.) je až neuvěřitelné. Velké
množství energie rovněž zbytečně spotřebují zaříze-ní, která musí zůstávat zapnuta (vyznačení nouzových východů, dopravní
světla apod.). Na webové stránce LBL naleznete údaje o skutečné spotřebě energie různých počítačů. Údaj o 300wattovém zdro-ji
energie je poněkud zavádějící. Skutečná spotřeba energie se liší v závislosti na tom, jaké programy jsou spuštěné a jestli lze
vypnout pevný disk. Skutečná spotřeba se běžně pohybuje v rozmezí 50–75 wattů. Při nečinnosti systému spotřeba významně
klesá.
NetWinder je pěkný počítač, který však vyžaduje funkční kompromisy. Výkon procesoru při největším výkonu je o hodně nižší.
Operační systém není Windows. Má i další omezení. Mohli bychom jej porovnat s typický laptopem. Obvykle mohou počítače
tohoto typu čerpat energii z drobného solárního panelu, protože průměrná energetická spotřeba je poměrně nízká. Na těchto
počítačích lze porovnávat cenu ve vztahu se spotřebou energie. Mají stejný výkon jako klasické počítače, ale nízká spotřeba
energie zdvojnásobuje, či dokonce ztrojnásobuje cenu.
(Osobně používám Psion. Dobrý, ale pomalý počítač, kterému stačí pouze 200 mW. Mohl bych do
něj nainstalovat dokonce i systém Linux, pokud by se vyřešily některé problémy s pamětí ROM.) Rozsáhlá debata na téma
zavedení omezení do hodnocení Energy Star řešila, co by mělo být cel-kově výhodnější – zda drobná a cenově zanedbatelná
vylepšení veškerého prodávaného vybave-ní, nebo mnohem dražší, zato značná zdokonalení. Daly by se tyto peníze investovat
někde jinde
s větším přínosem? Jak budou nakupující reagovat na vyšší ceny? Shoda zatím panuje v tom, že zdokonalení velkého počtu
počítačů při nepatrném zvýšení cen je moudřejší než vylepšení malého počtu počítačů za vysokou cenu.“
Hardware šetrný k životnímu prostředí
Se svolením Wade W. Hamptona a Knuta Sueberta: Nový typ hardwaru, na kterém se má instalo-vat systém Linux, by měl
využívat technologie šetrné k životnímu prostředí, například nízkoener-getické procesory (jako je ARM Intel), úsporné baterie,
nízkoenergetické monitory (například LCD bez podsvícení), menší obaly atd. Linux podporuje širokou škálu hardwaru a
technologií. Ty se mohou stát výkonným, flexibilním a navíc k životnímu prostředí šetrným řešením založeným na systému
Linux. Mělo by se zavést hodnocení dopadu nového hardwaru pro systém Linux na život-ní prostředí. Hodnocen by mohl být i
určitý software založený na systému Linux, jako je například bottlerocket (X10). Zařízení, jako je Netwinder nebo uCsimm, by
dosáhla vysokého hodnocení díky své velikosti, nízké spotřebě energie, kapacitě atd. V německém časopise Telepolis (http://
www.telepolis.de/tp/deutsch/inhalt/te/1367/1.html) vyšel článek o plýtvání zdrojů během výroby počítačů. Obecně vzato,
procesory PPC spotřebovávají méně energie než procesory řad x86.
Ekologické označení pro počítače
Známá jsou například označení TCO, DPMS, Energy Star Blauer Engel (http://www.blauer-engel.de/) nebo GEA (Group for
Efficient Appliances). Zjistěte si, co znamenají, a řiďte se jimi při koupi počí-tače a příslušenství.
Jiné operační systémy DOS
Existuje ještě mnoho nástrojů, díky nimž mohou být počítače s procesorem řady 286 stále užiteč-né. Na webu Simtel.Net (http://
www.simtel.net/) se po zadání klíčového slova „286“ zobrazí mnoho odkazů na zajímavý shareware. Například:
Lokální síť (LAN) pro počítače MSDOS, 286+req (ftp://ftp.simtel.net/pub/simtelnet/msdos/ lan/neos-10.zip)
RoseMail, PCBoard, 8086/286 exe (ftp://ftp.simtel.net/pub/simtelnet/msdos/pcboard/ rm172b.zip)
Prostředí pro paralelní zpracování úloh a pro více uživatelů v počítačích řady 286–586 (ftp://ftp.simtel.net/pub/
simtelnet/msdos/sysutl/vmix285.zip)
Společnosti zabývající se recyklací
Zjistěte si adresy společností, které se zabývají recyklací odpadu, a začněte využívat jejich služeb. Dobrým startem může být
stránka http://www.firmy.cz/Remesla-a-sluzby/Ekologicke-sluzby/ Recyklace-odpadu.
Webkamera
v
Linuxu
Úvod
Tento dokument by měl čtenáři pomoci při nastavení a konfiguraci webkamery, digitální kamery nebo jiného videozařízení v
operačním systému Linux. Vysvětluje, jak povolit nezbytnou podpo-ru jádra a/nebo softwaru a různé aplikace pro zachycování
snímků, které lze používat pro přístup k zařízení. Nezabývá se rozdíly v grafických a videoformátech, funkcemi a/nebo
schopnostmi kon-krétních zařízení ani kódováním či konverzí formátu videa.
Povolení podpory pro hardware (webkameru) v Linuxu
Ovladače a moduly
Aby webkamera fungovala, musíte zajistit podporu pro připojení a pro vlastní hardware kamery. Ti, kteří se již vyznají v jádrech
a modulech a vědí, jak je zavést, by měli přejít k části 2.2, která řeší podporu typu připojení. Pokud víte, že je vaše sběrnice USB,
IEEE 1394 nebo jiná sběrnice připojovaná ke kameře již nakonfigurovaná a funguje, měli byste přejít k seznamu konkrétního
hardwaru webkamery uvedenému v části 2.3.
Ovladače pro webkameru jsou obvykle k dispozici jedním ze tří způsobů: v rámci jádra, jako kom-pilovatelný samostatný modul
nebo jako předkompilovaný (zabalený) binární ovladač z distri-bučního balíčku Linuxu.
Modul či jádro?
Zpravidla bude potřebná podpora k dispozici v jádru (stock kernel) či pracující části operačního systému ve výchozí instalaci. Váš
dodavatel distribučního balíčku Linuxu již pravděpodobně povo-lil většinu obvykle používaných možností, včetně sběrnice či
typu připojení a ovladačů pro běžné modely kamer. Ovladač je k dispozici buď jako modul pro zavedení nebo v rámci již
používané-ho jádra.
Zda je ovladač již povolen, zjistíte snadno prostřednictvím příkazu dmesg ve spojení s příkazem less (pro snadné stránkování), s
jehož pomocí vyhledáte potvrzení, že došlo k zavedení ovlada-če při spouštění systému:
$ dmesg | less
...výsledkem může být v závislosti na vašem hardwaru například následující výpis:
Dec 18 17:35:18 localhost kernel: hub 5-0:1.0: USB hub found Dec 18 17:35:18 localhost kernel: hub 5-0:1.0: 2 ports detected Dec 18 17:35:18
localhost kernel: Linux video capture interface: v1.00 Dec 18 17:35:18 localhost kernel: quickcam: QuickCam USB camera found
(driver version QuickCam USB $Date: 2005/01/07 13:29:53 $) Dec 18 17:35:18 localhost kernel: quickcam: Kernel:2.6.7 bus:1 class:FF
subclass:FF vendor:046D product:0840 Dec 18 17:35:18 localhost kernel: quickcam: Sensor HDCS-1000/1100 detected Dec 18 17:35:18
localhost kernel: quickcam: Registered device: /dev/video0 Dec 18 17:35:18 localhost kernel: usbcore: registered new driver quickcam
Pokud se podobný výpis nezobrazí, konkrétní ovladač může existovat jako zaváděný modul. Znáte-li název modulu, zkuste použít
příkaz find; v tomto příkladu hledáme modul ibmcam :
$ find /lib/modules -name ibmcam.o
Moduly měly až do verze 2.4 příponu .o, kterou u jader verze 2.6+ nahradila přípona .ko. Seznam všech dostupných modulů
získáte za použití těchto příkazů v příkazového řádku:
$ ls -R /lib/modules/`uname -r`/kernel
Položka `uname -r` obklopená obrácenými apostrofy uvádí číslo verze vašeho jádra. Následující výpis je příklad toho, co můžete
zjistit v jádru připraveném na používání webkamery se sběrnicí USB, přičemž se vše zavede jako modul (pro stručnost uvádíme
pouze relevantní řádky):
./usb: usbvideo.o usbcore.o ibmcam.o
Když víte, jaký modul vaše kamera potřebuje, můžete pomocí následujícího příkazu zjistit, zda je příslušný modul již zaveden:
# lsmod
Jak ukazuje výzva uvedeného příkazu, budete k této činnosti potřebovat oprávnění root. Výstup
by měl vypadat zhruba takto:
cdrom
usb-ohci
usbcore
29312
17888
56768
0
0
0
ibmcam
39680
0
(autoclean) [sr_mod]
(unused)
[scanner ibmcam usbvideo usbohci]
Většina jader se kompiluje pomocí direktivy kmod, což umožňuje automatické zavedení potřebných modulů při detekci
příslušného hardwaru. Avšak nemusí tomu tak být vždy, takže pokud jste neza-vedli konkrétní modul a myslíte si, že by mohl být
k dispozici, zkuste jej zavést ručně prostřednic-tvím příkazu modprobe, jako v následujícím příkladu, kde jsme použili modul
ibmcam :
# modprobe -v ibmcam
V části „ Modely webkamer“ naleznete ovladače pro konkrétní modely webkamer, případně odka-zy na stránky s kódy pro
ovladače. Ovladače jsou obvykle dostupné jedním z těchto třech způ-sobů: v rámci jádra, jako kompilovatelný samostatný modul
nebo jako předkompilovaný binární ovladač v distribučním balíčku Linuxu.
Jestliže podpora pro váš ovladač není povolena staticky v rámci jádra nebo jako modul, nezou-fejte. Ve zdroji jádra systému
Linux jsou k dispozici ovladače pro mnoho modelů (přímo v repo-zitáři zdrojového kódu na http://www.kernel.org) nebo v kódu
nabízeném samostatně, který lze konfigurovat pro práci s vaší aktuální instalací, jak popisuje kapitola „Patch, zdroj či předkompilovaný binární ovladač ?“. Je-li ovladač pro vaši webkameru dostupný ve zdroji jádra, přitom však není povolen jako modul ve
vašem výchozím systému, můžete buď znovu kompilovat jádro ze zdrojového kódu, který máte k dispozici, nebo získat novou
verzi zdroje jádra, ať již připravenou vaším distributorem Linuxu či přímo z výše uvedeného odkazu (jako tzv. jádro „vanilla“).
Jestliže neznáte požadavky a procedury při kompilaci vlastního jádra, získáte potřebné informace na inter-netové adrese http://
www.tldp.org/HOWTO/Kernel-HOWTO.html.
Patch, zdroj či předkompilovaný binární ovladač?
Možná zjistíte, že vaši webkameru podporuje pouze patch jádra; anebo ovladač, který je součástí zdroje a nevyžaduje
překompilování jádra; nebo jste měli štěstí a váš distribuční balíček nabízí předkompilovaný binární ovladač pro strukturu vašeho
počítače. Postup u prvních dvou možnos-tí sahá daleko za možnosti této knihy a pravděpodobně nejlépe jej popisuje
dokumentace, kterou naleznete na webové stránce ovladače konkrétního modelu (jejich přehled viz kapitola „Modely
webkamer“). Obecnější informace o těchto procesech však nabízí kapitola „Řešení potíží“.
Podpora typu připojení Webkamery USB
Máte-li webkameru USB, je pravděpodobné, že pro dané zařízení byl vytvořen linuxový ovladač. V systému Linux existují dva
způsoby podpory zařízení USB. Jedním z nich je tradiční podpora jádra a druhým je libusb. Nejméně pro jednu kategorii
webkamer – modely založené na STV0680
– je doporučována podpora libusb, alespoň podle webové stránky Sourceforge (http://stv0680usb.sourceforge.net/).Jestliže nevíte, zda váš ovladač vyžaduje podporu libusb, měli byste pravděpodobně zůstat u běž-nější
podpory jádra pro zařízení USB, které se budeme věnovat v kapitole „Podpora USB v jádrusystému Linux“.
Libusb
Libusb je knihovna, která umožňuje přístup k funkcím USB v systému Linux prostřednictvím uži-vatelského prostoru (userspace)
a bez nutnosti povolení podpory jádra a vkládání modulů. Větši-na distribučních balíčků nabízí knihovnu libusb (http://
libusb.sourceforge.net/) ve své stabilní verzi (a některé je implicitně instalují), takže pokud již nemáte podporu jádra pro zařízení
USB, může-te jen nainstalovat balíček libusb a zajistit tak, aby vaše zařízení fungovalo. V jádru musí být povo-lena podpora
systému souborů pro zařízení USB, což zajišťuje většina distribučních balíčků. Abys-te se ujistili, spusťte v příkazovém řádku
následující příkaz:
$ cat /proc/filesystems
Kromě jiného byste měli vidět toto:
nodev usbdevfs nodev usbfs
Možná bude nutné použít příkaz mount pro povolení podpory usbdevfs a zobrazení souborů zařízení. Můžete tak učinit v
příkazovém řádku zápisem mount -t usbdevfs none /proc/bus/usb. Nezkoušejte použít knihovnu libusb, pokud je pro webkameru
povolena pod-pora jádra, ať již staticky nebo zavedením modulu; používat lze pouze jednu z těchto možností.
Balíček libusb získáte ve formátu .rpm, .tgz či .deb ze svého distribučního kanálu systému Linux.
Podpora USB v jádru systému Linux
Jestliže nepoužijete knihovnu libusb (popsanou výše), je pro webkameru typu USB nezbytná pod
pora jádra.U jader verzí 2.2 a 2.4 může vaše webkamera USB vyžadovat funkci usbvideo. Tato funkce nenívyžadována ve verzích
2.6+.
Pro obecnou podporu sběrnice USB v systému Linux budete potřebovat podporu podsystému USBv jádru, ať již usb-ohci , usb-ehci
či jakýkoli typ ovladače USB, který váš systém upřednostňuje.Podpora podsystému USB je v jádru systému Linux k dispozici od
novějších verzí 2.2. Podrobněj-ší informace o podpoře USB naleznete na webu http://www.linux-usb.org/. Jestliže chcete
zjistit,jaké moduly jsou zavedeny, napište do příkazového řádku nebo terminálu xterm následující:
# lsmod
Jak ukazuje výzva uvedeného příkazu, musíte mít k této činnosti oprávnění root. Měli byste zís
kat výstup podobný tomuto:
cdrom
usb-ohci
usbcore
29312
17888
56768
0
0
0
ibmcam
39680
0
(autoclean) [sr_mod]
(unused)
[scanner ibmcam usbvideo usbohci]
Není-li zaveden konkrétní hledaný model, přitom však předpokládáte, že by mohl být dostupný, zkuste jej zavést přímo (jako
příklad jsme použili usb modul ibmcam ):
# modprobe -v ibmcam
Po provedení tohoto příkazu by se měl zobrazit výpis podobný tomuto:
Using /lib/modules/2.4.20/kernel/drivers/usb/ibmcam.o
Umístěním položky ibmcam (například) do /etc/modules (může se lišit podle typu distribuce, může to být např. /etc/modprobe.conf )
můžete zajistit automatické zavedení modulu při spouš-tění. Zavedení modulu si můžete potvrdit kontrolou syslogu nebo v
záznamu průběhu spouštění pomocí dmesg | less, v kterém byste měli vidět výpis podobný tomuto:
Oct 18 12:43:12 K7 kernel: hub.c: new USB device 00:02.3-2, assigned address 3
Oct 18 12:43:12 K7 kernel: ibmcam.c: IBM PC Camera USB camera found (model 2, rev. 0x030a)
Oct 18 12:43:12 K7 kernel: usbvideo.c: ibmcam on /dev/video1: canvas=352x240 videosize=352x240
IEEE 1394 (Firewire™, i.Link™)
Webkamery IEEE 1394 vyžadují kartu PCI IEEE 1394 nebo port sběrnice IEEE 1394 na základní desce. Rozhraní IEEE je v
systému Linux podporováno od prvních verzí jádra 2.4. Máte-li štěstí a vlastníte takové zařízení, najdete informace o podpoře
sběrnice IEEE 1394 v Linuxu na interne-tové adrese www.linux1394.org. Pokud je verze jádra starší než 2.4.2, budete muset
použít jeden z patchů na webu http://download.sourceforge.net/linux1394 odpovídající vaší verzi jádra. Navíc budete potřebovat i
http://download.sourceforge.net/libraw1394. Na výše uvedeném webu linux1394.org naleznete i skvělého průvodce instalací.
Přehled funkcí kamer IEEE 1394 spolu s aktuálním stavem podpory pro jednotlivé moduly nalez-nete na internetové adrese
http://www.tele.ucl.ac.be/PEOPLE/DOUXCHAMPS/ieee1394/cameras/ (seznam vytvořil Damien Douxchamps).
Podpora pro webkamery na paralelní port
U verzí 2.2 a 2.4 musí být podpora paralelních portů povolena staticky nebo jako modul (u vesta-věných jader je tato možnost
obvykle implicitně povolena). Možná si budete chtít nejdříve přečíst obecnější informace na internetové adrese http://
www.torque.net/linux-pp.html o podpoře zaříze-ní s paralelními porty v rámci jádra Linux. Abyste ověřili, zda je zaveden modul
parport , může-te zkontrolovat soubor dmesg nebo použít příkaz lsmod, uvedený výše. Po použití příkazu dmesg | less byste měli
vidět (spolu s mnoha dalšími řádky) následující:
Mar 3 08:00:25 K7 kernel: parport0: PC-style at 0x378 (0x778) [PCSPP,TRISTATE ] Mar 3 08:00:25 K7 kernel: parport0: irq 7 detected
Pokud kompilujete vlastní jádro, povolte podporu Parallel Port. Měli byste povolit režimy přeno
sů IEEE 1284, a pokud máte počítač x86, měli byste povolit také hardware typu PC. Jestliže přezkoušení režimu vrátí chybu, když
se pokusíte zavést modul, možná je při vyvolání pří-kazu modprobe nutné zjistit a doplnit hardwarovou adresu. Nejčastější
adresou je 0x378 pro systém x86; dalšími možnostmi jsou 0x278 a 0x3BC pro integrované nebo paralelní porty ISA. Pří-davné
paralelní porty PCI mohou mít neobvyklé základní adresy. Možné je také používat více zaří-zení s moduly parport_pc či
parport_arc, toto téma je však nad rámec tohoto návodu.
Varování
Před zadáním informací do příkazového řádku se ujistěte, že máte správnou adresu, jinak
by mohlo dojít k nestabilitě počítače, k jeho selhání nebo k jiným potížím.
Paralelní port by měl být nastaven na režim EPP, případně ECP/EPP. Vyhovovat by mohl i obou-směrný režim (označovaný také
jako „BPP“ či „PS/2“), který je však mnohem pomalejší. „Jedno-směrný“ režim není vhodný pro skenování. K výše uvedenému
nastavení můžete obvykle přistu-povat prostřednictvím nabídky BIOS, alespoň co se týče systémů x86.
Modely webkamer
Nezapomeňte, že uvedené informace se budou často měnit. Používáte-li webkameru USB, měli byste navštívit web http://
www.qbik.ch/usb/devices/index.php, případně http://www.exploits.org/v4l/. Níže uvedené informace týkající se konkrétních
modelů webkamer pocházejí ze stejného zdroje, takže na uvedeném webu získáte jejich aktuálnější verzi. Pokud v seznamu není
uveden váš hardware, může-te použít odkazy na zdroje a podle nich vytvořit svůj vlastní ovladač!
Doporučení
Pokud vaše kamera není v seznamu uvedena a chcete zjistit, zda je podporována, nejjed
nodušší je ověřit u jejího výrobce, jaká čipová sada byla použita.
Tyto informace jsou obvykle k dispozici ve specifikacích uvedených v příručce k vaší webkame
ře nebo na webu výrobce. Nemůžete-li najít model své webkamery a nejste si jisti, jaká čipová sada je v ní použita, měli
bysteprohledat web https://listman.redhat.com/mailman/listinfo/video4linux-list a/nebo se přihlásit k odbě-ru aktuálních
informací.
Digitální webkamera 3 com HomeConnect
Tento model je podporován patchem jádra, který naleznete na internetové adrese http:// homeconnectusb.sourceforge.net/. Po
instalaci patche může být v závislosti na verzi jádra nutné překompilovat jádro.
Webkamery založené na CPiA
Aktuální informace naleznete na internetové adrese http://webcam.sourceforge.net/. Tato čipová sada se používala při výrobě
webkamer typu USB i s paralelním portem, včetně těchto:
Aiptek HyperVcam Fun USB (jiné než typu OV511)
Creative Video Blaster WebCam II USB a paralelní port
CVideo-Mail Express paralelní port
Digicom Galileo USB a Digicom Galileo Plus
Dynalink Digital Camera
Ezonics EZCam (ne Pro či Plus)
I-View NetView NV200M
Microtek EyeStar USB
Pace Color Video Camera USB
SuperCam WonderEye
TCE Netcam 310 USB
TerraCam USB (jiné než typu OV511 či TerraCam Pro)
Trust SpaceC@m Lite USB a SpaceC@m 100
Utopia USB Camera
ZoomCam USB a paralelní port
Webkamery USB založené na SE401, SE402 a EP800
Na tomto projektu se stále pracuje. Ovladače a další užitečné informace jsou k dispozici na webu projektu (http://
members.brabant.chello.nl/~j.vreeken/se401). V době, kdy vznikal tento doku-ment, bylo pro získání podpory pro tyto modely
nutné nainstalovat patch a překompilovat jádro. Ovladač podporuje následující:
Čipová sada SE401 prostřednictvím ovladače se401 :
Aox SE401
Philips PCVC665 USB VGA webkamera „Vesta Fun“
Kensington VideoCAM PC Camera (Modely 67014-67017)
Čipové sady SE402 a EP 800 prostřednictvím ovladače epcam:
Spypen Actor
Rimax Slim Multicam
Concord Eye-Q Easy
Creative PD1001
Chicony DC-100
Endpoints SE402 a EP800
Webkamery založené na OmniVision
Do této kategorie patří množství webkamer a zařízení pro nahrávání videa vyrobených společností Omnivision, včetně OV511(+ ),
OV518(+), OV6620, OV6630, OV7610 a OV7620AE. Tímto projek-tem se zabývá web http://alpha.dyndns.org/ov511.
Podporovanými modely jsou:
Aiptek HyperVcam Home a Mobile
Amitech AWK-300
I-view NetView NV300M
TEVion MD9308
Intel Me2Cam
Dlink DSB C100, C300
Hawking Tech. UC-110, UC-300 a UC-310
Puretek PT-6007
Alpha Vision Tech AlphaCam SE model AC-520
Creative Labs WebCam model PD1001 s čipovou sadou OV518
Creative Labs WebCam 3, WebCam Go, WebCam Go Plus
Elecom UCAM-C1C20
Elta WEBCam 8211 PCC
Ezonics EZPhone Cam
Philips ToUCam XS (starší verze s čipovou sadou OV518)
LG Electronics LPC-UM10
Lifeview různé modely USB Life TV
Genius VideoCam Express
AverMedia Intercam Elite
Maxxtro Cam22U
MediaForte MV300, PC Vision 300
Terratec TerraCam PRO a některé modely TerraCam
OmniVision (kromě modelů s čipovou sadou OV519)
TRENDNet TV-PC301
Trust Sp@ceC@m USB
Lifetec LT9388
BestBuy EasyCam U
Maxell Maxcam
TCE NetCam 310u
Medion MD9388
Webeye 2000B
Suma eON
Prochips PCA-3100
Ezonics EZ USB Cam II (modely OV511+)
Waytech I-Pac VIC-30
Zoom Telephonics ZoomCam III USB (model 1598)
Podpora webkamer Logitech (dříve Connectix) QuickCam
Webkamery QuickCam VC typu USB a s paralelním portem podporuje ovladač nabízený na webu http://digilander.libero.it/
demarchidaniele/qcamvc/quickcam-vc.html. Pro podporu tohoto mode-lu je nutné nainstalovat patch a překompilovat jádro.
Ovladačem QuickCam se zabývají dva různé projekty nabízející dva druhy ovladače pro určité modely QuickCam. Jedná se o
samostatné ovladače, které nevyžadují instalaci patche či překom
pilování jádra. Ovladače qce-ga (http://qce-ga.sourceforge.net/) a qc-usb (http://www.ee.oulu.fi/ ~tuukkat/quickcam/
quickcam.html) podporují následující modely:
Logitech (starší modely) QuickCam Express
QuickCam Web
LegoCam
Dexxa WebCam
Labtec WebCam Ovladač qc-usb je spíše experimentální, ale údajně má být vhodnější pro určité modely, jako je
například QuickCam Web. Dozvěděl jsem se také, že novější verze modelu Logitech QuickCam
Express již s výše uvedenými ovladači nefungují; na internetové adrese http://home.tiscali.dk/tomasgc/labtec/ naleznete pokusný
ovladač, který by měl novější model podporovat.Poznámka pro uživatele Redhat: Ovladač qce-ga se nezkompiluje správně při
použití upraveného zdroje jádra ve verzi Redhat 9, opravu však naleznete na internetové adrese
http://www.ee.oulu.fi/~tuukkat/quickcam/FAQ.
Některé modely Logitech podporuje ovladač Philips uvedený v kapitole „Webkamery Philips na USB“.
Webkamery založené na čipové sadě ICM532
Jeden z ovladačů pro tuto čipovou sadu (http://icm532.sourceforge.net/home.html) je nyní začle-něn do zdroje jádra verze 2.6;
druhý je experimentální (dle vlastního vyjádření vývojáře) a je k dis-pozici na webu http://home.tiscali.dk/tomasgc/labtec/.
Ovladače by měly podporovat tyto modely:
IC-Media Corp PenCam
Novější verze Logitech QuickCam Express
Novější verze Labtec WebCam
Mikroskop Biolux 654
Ezonics EZCam USB II (uvt8532)
Ezonics EZCam USB III
TerraCam USB
Stick WebCam
Mini WebCam
Tucan PenCam
Che-ez! Webbie
SNAKE EYE SI-8480/8481
PC CAM CP03
WEB Camera PBC0006
ClipCam
Ovladače založené na čipové sadě NW802
Tuto čipovou sadu od společnosti DIVIO podporuje ovladač, který naleznete na webu http://nw802.sourceforge.net. K
podporovaným modelům patří následující:
BTC SurfCam CMOS300k
Mustek WCam 300
Logitech QuickCam Pro USB (starší model „dark focus ring“)
Webkamery Philips na USB
Protože vypršela smlouva „Non-Disclosure-Agreement“ mezi společností Philips Corporation a někdejším správcem ovladače
pwc , byla odebrána podpora jádra pro webkamery založené na čipu Philips PWC. Naštěstí se vyvíjí nový ovladač, který
nevyžaduje modul, jenž je ve vlastnictví společnosti. Informace a diskusi o změně naleznete na starším webu http://
www.smcc.demon.nl/ webcam/; nový ovladač je k dispozici na internetové adrese http://wwwsaillard.org/linux/pwc/.
K podporovaným modelům Philips patří následující:
PCA645VC
PCA646VC
PCVC675K Vesta, Vesta Pro a Vesta Scan
PCVC720K/40 ToUCam XS, ToUCam Fun, ToUCam Pro a ToUCam Scan
Askey VC010
Creative Labs Webcam 5, Pro Ex
Logitech 3000 and 4000 Pro, Notebook Pro a Zoom
Samsung MPC-C10 a MPC-C30
Sotec Afina Eye
Visionite VCS UM100 a UC300
Ovladač pro kamery založené na čipové sadě SPCA50X
Informace týkající se této čipové sady naleznete na internetové adrese http://spca50x. sourceforge.net/spca50x.php. Tento ovladač
se neustále vyvíjí a nabízí částečnou nebo úplnou podporu pro následující modely:
Kodak DVC-325 a EZ200
Creative PC-CAM 300, 600, 750
Genius VideoCAM Express V2
Micro Innovation IC 200/IC 150
Logitech ClickSmart 310, 420, 510, 820 a modely Cordless
Logitech Pocket750
Benq DC 1016, 1300, 1500, 3410
Flexcam 100
Aiptek MegaCam, [1.3 Megapixel] Mini PenCam a PocketCam 1.3M Smart
Finet Technology Palmpix DC-85
Pure DigitalDakota
3Com Home Connect lite
Megapix V4
Mustek gSmart: Mini, Mini2, Mini3, LCD 2, LCD 3
Digital Dream Enigma 1.3, Epsilon 1.3
Maxwell Compact Pc PM3
Modely Jenoptik
Minton S-Cam F5
D-Link DSC-350
Trust FamilyC@m 300 Movie
Aiptek Pocket DV, PocketDVII, DV3100+, mini PenCam 2, PocketCam 3M, Pencam SD 2, Pocket DV3500
Hama Sightcam 100
Micro Innovations IC50C, IC400c
FlyCam USB100
Arowana USB Camera 300 K
Intel Easy PC Camera, CS120 (Easy PC Share), PC Camera Pro (CS431), Pocket PC Camera (CS630)
Grandtec V.cap
Sigma-Apo Petcam
Modely založené na čipové sadě STV0680
Webkameru USB vyrobenou s touto čipovou sadou podporují verze jádra 2.4.18 a vyšší s modu-lem stv680.o . Na internetové
adrese http://stv0680-usb.sourceforge.net/ můžete také získat zdroj. Tento ovladač podporuje modely, jako jsou Aiptek Pencam a
Nisis Quickpix 2.
Používáte-li sériovou verzi, z nichž hlavní je Scan e-Studio, měli byste navštívit web http://stv0680.sourceforge.net/.
Winbond w9966cf
Ovladač pro rozhraní s paralelním portem, který podporuje řídicí čip Philips SAA7111 CCD, s kte-rým se setkáte u webkamery
Lifeview Flycam SUPRA. Je součástí jádra verzí 2.4 a novějších pod hlavičkou podpory „video4linux“. Domovskou stránku
tohoto projektu naleznete na internetové adrese http://hem.fyristorg.com/mogul/w9966.html.
Webkamery založené na čipové sadě Xirlink C-it™ HDCS-1000
Teto ovladač je určen pro webkamery USB vyrobené společnostmi Xirlink, IBM (PC Camera) a Veo Stingray. Podpora je k
dispozici v sekci USB jádra Linux od verze 2.2.12. Další informace naleznete na webu http://www.linux-usb.org/ibmcam.
Přístup k videozařízení
Následující kapitola platí pro všechny typy připojení.
Videozařízení
Jádro Linux vyžaduje vytvoření „uzlu“ virtuálního zařízení pro přístup a řízení příslušného zaříze-ní. Možná byl již vytvořen při
spouštění ; existenci videozařízení můžete zjistit příkazem ls -l /dev/video* (s hvězdičkou), případně find /dev -name video* nebo
i vizuální prohlídkou adre-sáře /dev. Pokud tomu tak je, můžete přejít ke kapitole „Skupiny a oprávnění“; v opačném pří-padě je
budete muset vytvořit ručně.
Snadným způsobem jejich vytvoření je použití skriptu MAKEDEV, který může být umístěn v adre-sáři /dev nebo na obvyklých
místech určených k ukládání spustitelných příkazů ( /bin, /sbin atd.). Dále vás může nasměrovat manuálová stránka pro MAKEDEV
(man MAKEDEV), nezapomí-nejte však na možnosti příkazů týkající se konkrétního zařízení. Pokud MAKEDEV nefunguje či
nee-xistuje, přejděte k dalšímu odstavci.
Zařízení můžete vytvořit jako blok (například jako jednotku), jako fifo (file-in-file-out nebo rouru, jako v xconsole) nebo znakové
zařízení, které zastupuje jiný hardware. Každé zařízení má hlavní a vedlejší číslo „souřadnice“, kterým jádru oznamuje, čím je a
jakým způsobem se k němu má při-stupovat. Tato čísla nejsou libovolná. Hlavní číslo 81 s vedlejším číslem 0, 1, 2 atd. je podle
kon-vence přiřazeno zařízením Video4linux, včetně tunerů TV a webkamer. Pro vytvoření videozaří-zení /dev/video0 použijte v
příkazovém řádku příkaz mknod:
# mknod /dev/video0 c 81 0
kde c představuje znakové zařízení.
Můžete použít následující skript, který jsme si zapůjčili ze zdroje jádra
(jeho umístění je linux/Documentation/video4linux/bttv/MAKEDEV): #!/bin/
bash function makedev () { for dev in 0 1 2 3; do echo "/dev/$1$dev: char 81
$[ $2 + $dev ]" rm -f /dev/$1$dev mknod /dev/$1$dev c 81 $[ $2 + $dev ] chmod
666 /dev/$1$dev done
# symlink for default device
rm -f /dev/$1 ln -s /dev/${1}0 /dev/$1
}
# see http://roadrunner.swansea.uk.linux.org/v4lapi.shtml echo "*** new device names ***" makedev video 0 makedev radio 64
makedev vtx 192 makedev vbi 224 # "*** old device names (for compatibility only) ***" #makedev bttv 0 #makedev bttv-fm 64
#makedev bttv-vbi 224
Jednoduše zkopírujte výše uvedený skript do svého oblíbeného editoru, uložte jej jako MAKEDEV nebo pod jakýmkoli jiným
názvem, zajistěte jeho spustitelnost (tj. chmod u+x MAKEDEV) a poté jej spusťte jako root:
# ./MAKEDEV
Skupiny a oprávnění
Po zavedení všech modulů a vytvoření uzlů zařízení byste se měli ujistit, zda váš uživatelský účet může k zařízení přistupovat.
Nejbezpečnějším způsobem je přidání přístupu pro určitou skupinu. V mém systému mají členové skupiny „video“ oprávnění
používat webkameru, skener a další foto-grafická zařízení. Nejdříve je nutné změnit vlastnictví zařízení v /dev takto (jako root):
# chown root.video /dev/usb/video*
kde root.video je vlastník a skupina, ke které bude zařízení náležet. Konkrétní příkaz se samo-zřejmě bude lišit podle systému a
typu zařízení. Je důležité, abyste změnili vlastnictví uzlu zaříze-ní jako takového a ne symlink; vlastnictví symlinků ovlivňuje
pouze změna nadřazených zařízení či souborů, na které odkazují.
Chcete-li zjistit, zda je váš uživatelský účet členem určité skupiny, spusťte jako root následující pří-kaz: grep -e video /etc/group.
Měli byste vidět výpis podobný tomuto:
video:x:44:
...kde „44“ je číslo skupiny. Protože za poslední dvojtečkou ve skupině „video“ nejsou žádní členové, můžeme přidat například
uživatele „jhs“ za použití příkazu:
# adduser jhs video
Poté již jednoduše povolíte přístup pro čtení a zápis dané skupině:
# chmod g+rw /dev/v4l/video0
kde g+rw znamená přístup pro čtení (r) a zápis (w) pro skupinu (g). Další informace o příkazu chmod (man chmod nebo info
chmod) naleznete v dokumentaci.
Aplikace pro snímání
Programy příkazového řádku
Jak již název napovídá, nevyžadují tyto programy systém X Window pro funkce kamery a ukládání snímků.
Streamer
Streamer je mnohostranný program, který umožňuje ukládat snímky z webkamery či videozaříze-ní prostřednictvím příkazového
řádku. Může být k dispozici v distribučním balíčku Xawtv, pří-padně jej získáte samostatně, například jako v Debianu. Tento
program a další informace nalez-nete na webu Gerda Knorra (http://www.bytesex.org/xawtv).
Pro uložení standardního obrázku JPEG z příkazového řádku, v kterém se ke kameře přistupuje pomocí příkazu /dev/video0 ,
postupujte takto:
$ streamer -c /dev/video0 -b 16 -o outfile.jpeg
kde -b je číslo barev (v bpp buď 15, 16, 24 nebo 32) a -o je výstupní název souboru, který se uloží do aktuálního adresáře (pro jiné
umístění určete -o /cesta/vystupnisoubor.jpg). Pokud chce-te uložit více obrázků, nezapomeňte připojit k názvu souboru nuly, aby
program mohl uložit obrázky s pořadovými čísly, tj. -o outfile000.jpeg bude outfile001.jpeg, outfile002.jpeg atd.
Pro vytvoření souboru .avi:
$ streamer -q -c /dev/video0 -f rgb24 -r 3 -t 00:30:00 -o /home/jhs/outfile.avi
...kde -q znamená „tiché“ spuštění (žádná výstupní zpráva), -f je „formát“ (rgb24 je TrueColor avi), -r určuje počet rámců za
sekundu a -t je doba záznamu (30 minut). Program Streamer může uklá-dat formáty Quicktime™ (non-Sorensen) a ukládá také
audio. Více informací získáte po zadání pří-kazu streamer --help.
camE
CamE je program příkazového řádku, který pracuje jako démon a ukládá rámce z vašeho zaříze-ní v4l pro archivaci či načítání
(například na webserver) prostřednictvím ftp či scp. Úpravou pří-slušného řádku v konfiguračním souboru můžete překrývat další
grafické prvky, časovat rámce nebo přidávat dynamický text. Další informace je možno nalézt na webu camE (http://
linuxbrit.co.uk/camE/).
Motion
Motion je skvělý program, který je schopný sledovat videosignál z jedné či více webkamer. Může zaznamenávat periodické
snímky a při detekci pohybu nahrává ve formátu mpeg a/nebo provádí jinou akci, jako je odeslání e-mailu nebo spuštění příkazu.
Může sledovat a graficky označit dete-kovaný pohyb, doplňovat soubory prostřednictvím serveru http na váš web, předávat je do
jiné aplikace a provádí i další činnosti. Počet možností příkazového řádku je ohromující; existuje však web http://www.lavrsen.dk/
twiki/bin/view/Motion/MotionGuide, který velmi pěkně popisuje různé možnosti příkazů a konfiguračních souborů. Domovskou
stránku programu Motion naleznete na internetové adrese http://www.lavrsen.dk/twiki/bin/view/Motion/WebHome.
Webcam
Webcam je automatizovaný nástroj příkazového řádku pro práci s webkamerou, který je k dispo-zici například na webu Xawtv
(http://www.bytesex.org/xawtv). Je vhodný pro automatizované ope-race, protože nevyžaduje žádné parametry příkazového řádku,
pouze předem upravený konfigu-rační soubor (obvykle ~/.webcamrc ). Podobá se výše zmiňovanému programu camE v tom, že
může snímat obrázky a nahrávat je na webový server prostřednictvím ftp či ssh.
SANE
Program SANE (Scanner Access Now Easy) podporuje přístup zařízení v4l, včetně webkamery v novějších verzích. Pokud jste v
systému Linux již pracovali s fotografickým skenerem, mohli byste program SANE používat pro snímání obrázků, zvláště v
případě zařízení, která fungují jako skener i jako digitální kamera.
Programy založené na grafickém uživatelském prostředí Xawtv
Xawtv je program pro přístup k videozařízením v systému Linux, včetně tunerů TV a webkamer.
Domovskou stránku naleznete na internetové adrese http://bytesex.org/xawtv. Když poprvé vyzkoušíte svou webkameru a
konfigurace je podle vás správná, použijte parametr-hwscan:
$ xawtv -hwscan This is xawtv-3.72, running on Linux/i686 (2.4.21) looking for available devices
/dev/v4l/video0: OK [ -device /dev/v4l/video0 ] type : v4l name : BT878(Hauppauge (bt878)) flags: overlay capture tuner
/dev/v4l/video1: OK [ -device /dev/v4l/video1 ] type : v4l name : IBM USB Camera flags: capture
aby se zobrazila dostupná zařízení (výstup se může lišit). Zkuste otevřít xterm a spustit xawtv, přičemž budete snímat ze své
webkamery:
$ xawtv -c /dev/video1 This is xawtv-3.72, running on Linux/i686 (2.4.21)
A (doufejme) vaše kamera začne snímat obrázky do okna na monitoru. V prostředí xterm se mohou zobrazit chybové zprávy,
které vám mohou pomoci při zjišťování potíží s konfigurací. Pokud vás tyto informace nezajímají a vše funguje dobře, můžete při
příštím spuštění programu použít nabídku správce oken. Více možností programu xawtv získáte pomocí příkazu man xawtv.
Gqcam
Gqcam (http://cse.unl.edu/~cluening/gqcam/) je grafická aplikace založená na GTK+, která byla původně vytvořena pro přístup
ke kamerám Connectix QuickCams, nyní však podporuje téměř všechny webkamery kompatibilní s Video4Linux. Má intuitivní
rozhraní, které usnadňuje zobra-zování, snímání a konfiguraci nastavení webkamery. Je vhodná pro ty, kteří chtějí pouze snímat
obrázky a nechystají se upravovat konfigurační soubor nebo používat příkazový řádek.
Camorama
Camorama je grafická aplikace založená na GTK+2.0, která se velmi podobá programu gqcam vytvořenému pro Gnome2.
Domovskou stránku této aplikace naleznete na internetové adrese
http://camorama.fixedgear.org/.
Ekig (GnomeMeeting)
Ekiga (původně GnomeMeeting) je aplikace VOIP/IP-Telephony pro desktop Gnome2, která podporuje i videokonference
prostřednictvím webkamer. Podrobné informace naleznete na webu
http://www.gnomemeeting.org/.
Řešení potíží
Mám webkameru USB a nevím, o jaký model se jedná a/nebo kdo je výrobce. Co
mám dělat?
Použijte příkaz lsusb ; díky tomuto příkazu můžete zjistit, jaká další zařízení USB jsou dostupná ve vašem systému:
$ lsusb
Bus 007 Device
Bus 006 Device
Bus 005 Device
Bus 004 Device
001: ID
001: ID
001: ID
001: ID
0000:0000
0000:0000
0000:0000
0000:0000
Bus 003 Device 003: ID 0545:8080 Xirlink, Inc. IBM C-It WebCam
Bus 003 Device 002: ID 046d:0840 Logitech, Inc. QuickCam Express
Bus 003 Device 001: ID 0000:0000
Bus 002 Device 003: ID 051d:0002 American Power Conversion Back-UPS Pro 500/1000/1500
Bus 002 Device 001: ID 0000:0000
Bus 001 Device 001: ID 0000:0000
Čísla uvedená za „ID“ zastupují výrobce a produkt. Vyhledat je můžete v katalogu Linux USB ID
(http://www.linux-usb.org/usb.ids).Nemůžete-li lsusb použít a máte podporu pro systém souborů /proc a podporu pro systém souborů USB, zadejte v příkazovém řádku následující:
$ cat /proc/bus/usb/devices
Měli byste získat výstup obsahující toto:
T: Bus=01 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#=3 Spd=12 MxCh=0
D: Ver= 1.01 Cls=ff(vend.) Sub=ff Prot=ff MxPS=8 #Cfgs =1
P: Vendor=0545 ProdID=8080 Rev= 3.0a
S: Product=USB IMAGING DEVICE
Řádek začínající na „T:“ je sběrnice USB, ke které je zařízení připojeno. „P:“ označuje identifikátor výrobce a produktu, který je
uveden v seznamu na webu http://www.linux-usb.org.
Nemohu najít kameru v /dev!
Pokud předpokládáte, že je typ připojení podporován a kamera funguje, nahlédněte do kapitoly „Uzel videozařízení“.
Vidím zařízení kamery (fyzicky i jako uzel zařízení v /dev), ale nemám k němu
přístup!
Viz kapitola „Skupiny a oprávnění“.
Moje kamera má ovladač, který je pouze zdrojový, tj. musím jej vytvořit! Kde mám začít?
Nejdříve zjistěte, zda vaše distribuce systému Linux nabízí předkompilovaný binární soubor ovla-dače. Ten pak můžete načíst
stejným způsobem, jakým byste postupovali u modulu. V opačném případě se ujistěte, že jsou nainstalované zdroje jádra. V
závislosti na distribučním balíčku bude-te potřebovat také GNU, gcc, binutils a možná i další programy. (Uživatelé Debian by si
měli pře-číst následující část, v které naleznou instrukce týkající se daného distribučního balíčku.)
Stáhněte si zdroj ovladače (v tomto příkladu s názvem src.tar.gz) a rozbalte jej:
$ tar -xvzf src.tar.gz
Poté přejděte na adresář se zdrojem jádra:
# cd /usr/src/linux
Vytvořte potřebné zdrojové soubory:
# make oldconfig# make dep
Nyní přejděte na adresář, do kterého jste rozbalili zdroj ovladače, a v souborech README a/nebo INSTALL si přečtěte pokyny k
vytvoření ovladače. Obvykle se jedná o určitou kombinaci příkazů make, make all a/nebo make install. Za předpokladu, že
kompilace proběhla správně, můžete nový modul jednoduše načíst pomocí příkazu modprobe. Dojde-li k nějakým potížím,
nahléd-něte do kapitoly „Kde najdu další informace?“.
Používám Debian GNU/Linux. Existuje jednodušší způsob kompilace jádra a
vytvoření zdrojových modulů?
Je mnohem jednodušší použít automatizovaný nástroj kernel-package. Nejdříve jej nainstalujte pomocí příkazu apt-get. Poté
nainstalujte požadovaný zdroj jádra (například apt-get install ker-nel-source-2.X.X). Rozbalte zdroj jádra (ve formátu .bz2 )
prostřednictvím tar -xvjf a poté vytvoř-te symbolický odkaz s názvem linux, který odkazuje na nový zdroj:
# ln -s /usr/src/kernel-source-2.X.X /usr/src/linux
Poté použijte cd /usr/src/linux a příkaz: make-kpkg clean, za kterým následuje make menu-config či make xconfig, jako při
kompilaci nového jádra. Potom můžete použít make-kpkg ker-nel_image a nainstalovat nový balíček jádra, který jste uschovali v /
usr/src pomocí dpkg -i ../kernel-image-2.X.X. Následně můžete prostřednictvím apt získat balíček zdrojového ovla-dače. V případě
Quickcam Express je balíček qc-usb-source:
# apt-get install qc-usb-source
a rozbalte archív:
# tar -xvzf qc-usb-modules.tar.gz
Zdroj se rozbalí do adresáře /usr/src/modules. Posledním krokem v /usr/src/linux je vytvo-ření modulů s balíčkem jádra:
# make-kpkg modules_image
Nainstalujte nový balíček do /usr/src/ (s názvem qc-usb-modules-[arch].deb) za použití dpkg -i. Nakonec načtěte modul:
# modprobe quickcam
Informace o možných potížích naleznete v dokumentaci /usr/share/doc/kernel-...
Moji kameru podporuje ovladač, který se musí nainstalovat jako patch do jádra! Co
mám dělat?
Podrobné informace naleznete na internetové adrese http://tldp.org/HOWTO/Kernel-HOWTO/
patching_the_kernel.html na webu The Linux Documentation Project (http://tldp.org/). Stručná a nezaručená verze instalace
patche je následující: Ujistěte se, že jsou splněné podmínky popisované v kapitole „Moje kamera má ovladač, který je pouze
zdrojový, tj. musím jej vytvořit! Kde mám začít?“. Nejdříve přejděte v příkazovém řádku nebo terminálu xterm do zdrojového
adresáře verze jádra, do něhož budete instalovat patch kamery (v tomto příkladu se jedná
o patch.diff).
# cd /usr/src/linux # patch -p1 -E patch.diff
Mělo by se zobrazit potvrzení o úspěšné instalaci patche. Nyní můžete použít příkaz make menu-config nebo jakýkoli jiný
program pro překompilování, čímž povolíte příslušnou podporu. Pokud se instalace nezdaří nebo dojde k jiným potížím, měli
byste zobrazit dokumentaci man patch a přečíst si kapitolu „Kde najdu další informace?“.
Kde najdu další informace?
Navštivte web https://listman.redhat.com/mailman/listinfo/video4linux-list.
Chci přispět k podpoře Video4Linux v systému Linux! Koho mohu kontaktovat?
Navštivte web http://www.thedirks.org/v4l2/peopleprojects.htm.
Quake
Úvod
Předmluva
Hra Quake v prostředí operačního systému Linux spojuje dvě revoluční záležitosti počítačového světa – populární, volně
dostupný operační systém GNU/Linux a GLQuake, první „střílečku“, která využívala trojrozměrnou grafickou knihovnu
OpenGL. Hra Quake spojuje věrnou komunitu lidí tvořící hry i deset let poté, co ji společnost ID Software uvedla, a díky Johnu
Carmackovi, který software uvedl pod GPL, si lidé mohou hru užívat i na otevřených platformách. Znamená to vše, že je tato hra
tak důležitá? Ne, samozřejmě jde hlavně o zábavu.
Dokument
Tento dokument není vyčerpávajícím návodem pro nastavení jakéhokoli programu Quake, ale je moderním průvodcem hrou
GLQuake, souhrnem nejužitečnějších tipů a upozorňuje na nejlepší zdroje dostupné na webu. Zaměřuje se na četná přepracování
modulu a skvělé doplňky, které z hry Quake činí fenomén.
Obecné informace
Začínáme
Instalace hry Quake vyžaduje několik základních kroků.
Získání datových souborů hry
Datové soubory hry získáte instalací hry v prostředí operačního systému Microsoft Windows nebo prostřednictvím některého z
emulátorů (jako je například Wine nebo Dosbox ) a následného zko-pírování adresáře id1 instalované hry do adresáře Linux Quake
(ujistěte se, že jste všechny názvy souborů zadali malými písmeny).
Pokud vlastníte CD DOS Quake, můžete datové soubory získat pomocí nástroje lha (http://freshmeat.net/projects/lhaforunix/). V
případě starších CD musíte nejprve zadat
cat /mnt/cdrom/quake101.1 /mnt/cdrom/quake101.2 > resource.1
Jakmile máte soubor resource.1 , zadejte cd /usr/local/games/quake lha e
{some directory}/resource.1
Novější verze hry, včetně WinQuake, obsahují datové soubory v nezkomprimovaném tvaru a adre-sář id1 lze zkopírovat přímo z
CD.
Instalace spustitelných programů Quake
Program pro spouštění hry Quake se označuje jako herní 'engine'. Můžete si vybrat z několika programů, nejjednodušší volbou je
GLQuake nebo upravený TyrQuake (http://prdownloads. sourceforge.net/uhexen2/tyr-glquake?download). Poté co stáhnete nebo
zkompilujete některý z těchto programů, umístěte tento binární soubor do svého adresáře Quake spolu s adresářem id1 .
Shrnutí
Struktura adresářů by měla vypadat podobně jako na níže uvedeném schématu. Názvy adresářů je nutné zadat malými písmeny:
/usr/local/games/quake +- glquake.glx (herní engine)
|
+- id1 -+- config.cfg
|
+- game.dat
|
+- pak0.pak
|
+- pak1.pak
Pro spuštění hry zadejte v okně xterm následující:
./glquake.glx -fullscreen -width 800 -height 600
Nápověda
Tento postup možná vypadá jednoduše, ale pokud je pro vás prostředí systému Linux nové a nej-ste zvyklí pracovat s příkazovým
řádkem, mohou být pro vás užitečné informace v následujících dokumentech nebo webech:
Část Řešení potíží
Web Linuxgamers Quake (http://www.linux-gamers.net/modules/wfsection/article.php? articleid=42)
Web Quake wiki (http://wiki.quakesrc.org/index.php/HomePage)
Web The Linux Game Tome (http://www.happypenguin.org/)
Možnosti příkazového řádku
Možnosti příkazového řádku jsou zvláštní parametry uvedené za názvem programu v příkazovém řádku systému Linux. Quake
takových možností nabízí mnoho a některé se u jednotlivých modu-lů liší. Níže uvádíme některé z užitečných a často
používaných možností:
-window
Spustí hru v režimu okna.
-fullscreen
Spustí hru na celé obrazovce.
-game NAME
Nahraje mód (mod) jménem NAME.
-mem N
Rezervuje určitou velikost pro vnitřní paměť. Většinou stačí 8 či 16 megabajtů, ale měli byste ji zvýšit, pokud hrajete v
rozsáhlejších módech.
-width WIDTH
Šířka okna/celá obrazovka.
-height HEIGHT
Výška okna/celá obrazovka.
-sndspeed MHz
Nastaví hodnotu frekvence zvuku (například 44100, 22100, 11025).
-sndbits N
Nastaví počet zvukových bitů tak, že N = 8 nebo 16.
-nosound
Vypnutí zvuku. Toto nastavení je nutné, pokud zvuk není nakonfigurován, abyste předešli „zamrzání“ hry.
-nomtex
Zakáže zobrazování vícenásobné textury GL.
-listen N
Povolí maximální počet hráčů, kteří se mohou připojit ke hře pro více hráčů.
-cddev DEVICE
Použije DEVICE k přehrání disku CD.
-nocdaudio
Zakáže zvukové CD.
Příkazy hry Quake lze do příkazového řádku v prostředí Linux přidat pomocí znaménka plus. Například pro automatické spuštění
hry s vysokou obtížností zadáte tento příkaz:
glquake.glx +skill 2 +map e1m1
Příkazy hrací konzoly
Více informací naleznete na internetové adrese http://www.planetquake.com/console/ commands/quake.html.
Konzola je příkazový řádek „uvnitř“ hry, jehož prostřednictvím můžete zadávat příkazy, měnit pod-mínky a používat cheaty.
Objeví se po stisknutí klávesy ~ ve hře. K hlavním příkazům patří: god
Nezranitelnost.
noclip
Procházení zdmi.
notarget
Nepřátelé neútočí na hráče.
timedemo DEMO
Přehrávání DEMO (například „demo1“) na nejvyšší rychlost a zobrazení frekvence snímků.
impulse N
Vydá „počet impulzů N“. Díky těmto příkazům ve hře získáte speciální
funkce. Nejčastěji se používá příkaz impulse 9, jehož prostřednictvím získáte
všechny dostupné zbraně. bind key „COMMAND“ Nastaví na klávesu key
příkaz COMMAND.
map MAP
Nahraje mapu.
changelevel MAP
Nahraje mapu, aniž by smazal hráčovo nastavení.
quit
Návrat do systému.
skill VALUE
value = 0 (jednoduché) – 3 (nemožné)
Stupeň obtížnosti. Úroveň je nutné restartovat.
r_wateralpha VALUE
value = 0.0–1.0
Neprůsvitnost vody.
_snd_mixahead VALUE
value = 0.1–1.0 Zvýšení této hodnoty je dobrým způsobem zrychlení hry, za cenu prodlevy zvuku. Přiměřená je hodnota 0.3.
r_shadows FLAG
flag = 0 | 1
Zobrazí stíny.
vid_wait FLAG
flag = 0 | 1
Synchronizuje výstup videa s obnovováním obrazovky.
chase_active FLAG
flag = 0 | 1
Zobrazuje hráče z pohledu třetí osoby.
Herní engine
GLQuake
Na webu http://mfcn.ilo.de/glxquake naleznete související dokumentaci, tipy pro odstranění pro-blémů a také základní verzi
OpenGL Quake pro prostředí systému Linux. Podporuje většinu módů Quake, nefunguje však podpora gamma (jas).
Darkplaces
Darkplaces je skvělý engine hry Quake se širokou škálou vizuálních efektů a možnostmi barev,efektů a zvuku. Používá stejné
osvětlovací efekty jako Tenebrae, a vyžaduje proto výkonnější počí-tač než GLQuake a QuakeForge.
Podporuje také mnoho jinak nekompatibilních módů, včetně Nehahra a Nexuiz, přičemž se také
zdokonalila podpora oficiálních balíčků s různými misemi.Havocův archív souborů (http://icculus.org/twilight/darkplaces/files/)
může být lehce nepřehledný.Nabízí zkompilované binární soubory a zdrojový kód hry. Pro kompilaci svého vlastního progra-mu
rozbalte druhý archiv a zadejte příkaz make. Zobrazí se seznam možných voleb pro kompi-laci, z nichž jednu vyberte. Například
k vytvoření enginu OpenGL se zvukem typu ALSA zadejtemake cl-release, pro typ zvuku OSS zadejte příkaz make cl-release
DP_SOUND_API=OSS.
Porty QuDos Quake
Na webu http://qudos.quakedev.com/linux/quake1 naleznete enginy (včetně DemonQuake, Joe-Quake, NehQuake, Qrack a
Tremor), které byly poprvé portovány pro prostředí Linuxu. NehQu-ake (http://qudos.quakedev.com/linux/quake1/NehQuake/bjp-bin-src.linux.tar.bz2) spustí mód Nehahra mnohem rychleji než engine Darkplaces.
Archivy obsahují zdrojový kód, binární soubory a ve většině případů i datové soubory nezbytné pro funkci enginu. Pro instalaci
těchto datových souborů vyhledejte jednoduše pojmenované slož-ky (jako například joequake nebo qrack) a přesuňte je do svého
adresáře quake. Pokud je nena-jdete, budete je muset stáhnout z domovské stránky hry.
Pro některé enginy je nutné nainstalovat přídavnou knihovnu zvuku (která je jejich součástí). Postupujte takto:
su cd /usr/lib mv {some directory}/libfmod-3.74.1.so . ln -s libfmod-3.74.1.so libfmod.so ldconfig
nebo navštivte web FMOD (http://www.fmod.org/) a nainstalujte knihovny ručně.
QuakeForge
QuakeForge je nejobsáhlejší projekt Quake pro prostředí Linux. Nabízí opticky zdokonalený engine, mnoho klientů pro jednoho
hráče a QuakeWorld a nástroje Quake C. Mezi jeho vlastnosti patří přehledný systém menu, nový „systém upozornění“ a
nápověda uvnitř hry.
Zřejmě z důvodu své velikosti nebyl projekt QuakeForge po léta aktualizován a jeho dokumenta-ce nebyla nikdy úplně
dokončena. Pomocí obvyklého „configure && make && make install“ může být zkompilován celý projekt, ale pokud chcete
vytvořit pouze binární soubor pro jednoho hráče, zkuste následující:
configure --with-static-plugins --without-tools --without-servers --with-clients=glx zcat <ruamoko/cl_menu/menu.dat.gz >{somedir}/quake/id1/
menu.dat
Více informací o vytvoření QuakeForge v prostředí BSD Unices naleznete v části FreeBSD. Infor-mace o QuakeForge jsou k
dispozici na internetových adresách http://www.quakeforge.net a http://sourceforge.net/projects/quake/.
TyrQuake
TyrQuake (http://disenchant.net/engine.html) je obsáhlý projekt, který se věnuje hře Quake, kli-entům QuakeWorld a dalším
nástrojům (http://disenchant.net/utils.html), včetně oblíbeného nástroje TyrLite. Tyrann se zaměřuje na plně vybavené a přitom
minimalistické enginy pro ope-rační systémy Windows a Linux.
Pro kompilaci TyrQuake-0.47 nejprve upravte soubor Makefile a vyberte některé možnosti. (Kli-ent pro jednoho hráče je „NQ“).
Uživatelé grafických karet Nvidia mohou k opravě několika chyb použít patch, který je k dispozici na webu http://
prdownloads.sourceforge.net/uhexen2/tyrquake-0.47-nvidia.patch?download. U novějších verzí (po 0.47) by neměla být instalace
tohoto oprav-ného balíčku nutná.
Opravený binární soubor pro jednoho hráče TyrQuake naleznete na internetové adrese
http://prdownloads.sourceforge.net/uhexen2/tyr-tlquake?download.
Quake Software
Zdroj WinQuake (http://www.quakeforge.net/files/q1source.zip) byl vytvořen ve dvou verzích s různým rozlišením:
X Quake (quake.x11)
Svga Quake (squake)
Jejich kompilace však již není jednoduchá. Je třeba zkopírovat soubor Makefile.linux do Make-file, upravit tento soubor
odstraněním přebytečných úkolů, nahradit /usr/X11/lib pomocí /usr/X11R6/lib a zadat příkaz make build_release.
Existují ale i jednodušší možnosti. TyrQuake a QuakeForge obsahují softwarové klienty a je zde také starší SDL Quake (http://
www.libsdl.org/projects/quake/) vytvořený autorem SDL Samem Lan-tingou, který by měl fungovat na všech moderních
platformách.
Jiné enginy NPRQuake
Dalším enginem Quake je NPRQuake (http://www.cs.wisc.edu/graphics/Gallery/NPRQuake/), který byl portován pro prostředí
Linux, ale několik let nebyl s největší pravděpodobností nijak upravo-ván. Především nabízí možnost nahrát různé metody
vykreslování za běhu (!). Linux port (http://www.geocities.com/coolguywithgun) obsahuje vykreslování pomocí ainpr (http://
www.cs.unc.edu/ ~adyilie/comp238/Final/Final.htm) a osobně jsem s ním velmi spokojen.
Verze SDL (http://www.tempestgames.com/ryan/) obsahuje přepracovaný kód pro myš a video a díky tomu by měla fungovat i na
jinak problémových systémech. Do verze SDL však nebyla importována rozhraní API, takže ve skutečnosti nejde o přenosný
engine.
Tenebrae
Tenebrae (http://tenebrae.sourceforge.net/) je engine hry Quake s moderním světelným modelem podobným tomu, s jakým se
setkáte například ve hře Doom III. Vyžaduje velmi rychlý počítač a nemusí být kompatibilní s veškerým hardwarem.
Projekt Twilight
Projekt Twilight (http://icculus.org/twilight) je sadou spíše minimalistických enginů NQ a QW, která se zaměřuje na vysokou
rychlost zobrazování, ale v současné době je bohužel trochu nesta-bilní.
Módy
Módy
V síti Internet naleznete stovky úrovní vytvořených uživateli – známé pod názvy „módy“, „předě-lávky “ nebo prostě „mapy“. Při
hledání zjistíte, že spousta adres URL už neplatí a mnohem jed-nodušší je zadat ve vyhledávači přímo název souboru (například
slovo „quake”), nežli pátrat po domovské stránce projektu.
Pro spuštění nových map umístěte soubor bsp do podadresáře quake/id1/maps a spusťte Quake
za použití příkazu +map MAPNAME.Pro instalaci módů stačí vytvořit podadresář DIR a extrahovat do něj archiv zip/tar. Ten se
potomnahraje pomocí možnosti příkazového řádku -game DIR, někdy také +map MAPNAME, kdeMAPNAME je počáteční
mapa módu.
Mapy i módy byste měli zadávat malými písmeny.Web QuakeTerminus obsahuje dobrý seznam módů (http://quaketerminus.com/
addon.htm) a webTenfour mnoho přehledů map (http://tenfourmaps.telefragged.com/php/revidx.php?gameid=q1&sortby=date&reversesort=1&page=1).
Soul of Evil
Soul of Evil (http://www.planetquake.com/tronyn/soul) je skvělým módem se středověkou téma-tikou. Obsahuje dvě epizody
pro jednoho hráče, arénu pro bitky a pěknou dokumentaci.
Nehahra
Výpravný, obtížný a tajuplný mód. Nehahra (http://www.planetquake.com/nehahra) je plno-hodnotným módem Quake, v
prostředí Linuxu jej podporuje modul Darkplaces, LordHavoc a portem modulu NehQuake. Obsahuje skvělé modely a mapy,
dobře využívá efekty mlhy a obsahuje dvouhodinový video/demo (nepovinné), které vás upoutá originálním příběhem hry
Quake, je však poněkud zdlouhavé.
Contract Revoked
Moderní mód (http://kell.spawnpoint.org/convoked.html), který vás skutečně upoutá. Obsahu-je i náročné dodatky The Lost
Chapters a Quoth.
The Masque of the Red Death
Nedávno zveřejněná obsáhlá mapa hradu (http://www.fileplanet.com/dl.aspx?/planetquake/ tronyn/maps/masque.zip), která
vyžaduje modul Darkplaces a rychlý hardware.
The Hunted Chronicles
Hra The Hunted Chronicles (http://www.ru1337.com) vyžaduje engine Darkplaces Hunted Chronicles. Jedná se o dvoudílnou
zombie střílečku. Druhá část využívá světelných a mlžných efektů a klidně byste si ji mohli splést s módem Half-Life.
Módy Neila Mankeho
Neil vytvořil plnohodnotnou verzi Half-Life nazvanou They Hunger (http://www. planethalflife.com/ manke/). Zábavné a
kvalitní jsou i tyto – alba01.zip , alba02.zip, sofsp1.zip, sofsp2.zip, starshp2.zip .
Blood Mage
Blood Mage (http://www.google.com.au/search?q=bmfull.zip) je hra plná skvělých monster a hudby. Je trochu zastaralá a
obrovské množství kouzel může být únavné.
Operation: Urth Majik
OUM (http://disenchant.net/files/maps/oum.zip, http://www.planetquake.com/fatty/oum/) je jedním z prvních módů s
nádechem sci-fi. Má pět dobře zpracovaných úrovní s mnoha nový-mi zbraněmi.
The Coagula Contest 2
Coagula (http://www.planetquake.com/underworld/quakerev030814.html) je sada map se šesti úrovněmi pocházející od
konkurence. Novinkou je, že všechny mapy se vznáší v prostoru a jsou skvělé.
Scourge done Slick
SdS (http://www.planetquake.com/QdQ/sds.html) je zrychlená verze Mission Pack 1, Scourge of Armagon. Hra je zábavná a
jednoduše skvělá.
Insomnia
Skvělá hra plná kaluží krve (http://www.google.com.au/search?q=czg07.zip).
Zerstörer
Temná a krvavá klasika s paranoidní atmosférou, kterou známe ze hry Doom. Zerstörer obsa-huje několik dobrých úrovní
soubojů (http://www.google.com.au/search?q=zerstorer.zip).
Fantasy Quake
FQ (http://www.google.com.au/search?q=fantasy.zip) je hra se středověkou tématikou. Má několik skvělých úrovních, ale
také mnoho horších částí, protože ve skutečnosti nebyla nikdy dokončena. (Projekt byl předčasně ukončen, když došlo k
potížím s hostingem serveru.) Ne všechny třídy hry fungují správně. Dvojím stisknutím klávesy g získáváte předměty,
klávesami <, > a / ovládáte inventář a pomocí kláves w, e a r můžete bojovat.
Příručku ke hře Fantasy Quake naleznete na webu http://prdownloads.sourceforge.net/ uhexen2/fq-manual.tgz?download.
Gib Factory, Vigil, Museum
Na následujících internetových adresách naleznete malé, ale skvělé módy:
http://www.google.com.au/search?q=gibfact.zip
http://www.google.com.au/search?q=vigil.zip
http://www.google.com.au/search?q=museum.zip
Komerční módy
Mission Pack 1
Scourge of Armagon od Ritual Entertainment (dříve známé pod názvem Hipnotic Interactive).
Mission Pack 2
Dissolution of Eternity od Rogue Entertainment. Oba balíčky misí jsou obecně považovány za lepší, než je původní hra.
Malice
Velmi originální předělávka hry Quake s výborným kulometem. Určitě stojí za to si tento mód koupit.
Abyss of Pandemonium
Komerční mód, nyní zdarma k dostání na webu http://www.planetquake.com/impel.
Ravages of Apocalypse
Mód Xmen! Nabízí skvělé modely, ale ovládání má značné nedostatky. Tento mód je nyní zdar-ma k dispozici na webu http://
www.zerogravity.com.au/xmen/.
Shrak
Jeden z prvních komerčních módů. Skvěle vytvořené a originální příšery, ale hra již není příliš zajímavá.
Nástroje pro tvorbu map
Ve hře Quake byl vytvořen vlastní jazyk – Quake C. Díky tomu mohly módy běžet bez problémů
na jakémkoliv operačním systému. Je možné instalovat více editorů, s jejichž pomocí lze vytvářet
mapy.
GtkRadiant (http://www.qeradiant.com/) je v současné době jediný spravovaný editor na světě.
Quake Army Knife (QuArK – http://dynamic.gamespy.com/~quark/) je víceúčelový nástroj, kterýmůže, ale nemusí být
podporován systémem Linux.Na webu Func_Msgboard (http://www.celephais.net/board/forum.php) můžete sledovat vývoj Q1
a nových projektů mapování.QuakeForge obsahuje nástroje Quake C společně s jejich archivem.Web Quake Wiki (http://
wiki.quakesrc.org/index.php/HomePage ) nabízí několik odkazů souvisejících s operačním systémem Windows.
Pro více hráčů
QuakeWorld
Je vylepšeným enginem pro hru více hráčů po síti nebo on-line. Je začleněn do QuakeForge, FuhQuake a TyrQuake.
FuhQuake
Obsahuje mnoho rozšíření ovládání oproti původní hře QuakeWorld. FuhQuake (http://www. fuhquake.net/) se zaměřuje na hru
více hráčů a módy pro jednoho hráče nebudou fungovat.
Nexuiz
Nexuiz (http://www.nexuiz.com) je nezávislá hra pro více hráčů používající engine Darkplaces. Využívá moderní světelné efekty,
takže hráči s méně kvalitními grafickými kartami by se měli pokusit tyto efekty vypnout, aby hra běžela správně.
Digital Paint 2
Paintball přichází do systému Linux! Digital Paint 2 (http://www.planetquake.com/digitalpaint/) je hra určená pro více hráčů. Je
zalo-žena na enginu Quake II. Hra je pestrá a její zábavná poloha je příjemnou změnou oproti větši-nou temně naladěným hrám
Quake. Tato hra je zcela přepracovaná, takže nemusíte vlastnit hru Quake II. Hrát můžete také proti počítači.
Battle Mech
Battle Mech (http://static.condemned.com/index.shtml) je skvělý mód ve stylu Mechwarrior. Nutné je použít archiv s verzí 1.1
(http://static.condemned.com/files/bmech_stuff/battlemech-1.1.tar.gz)
Řešení potíží
Další možnosti odstraňování chyb naleznete na webu http://mfcn.ilo.de/glxquake a na webu http://www.icculus.org/lgfaq.
V případě, že používáte alternativní hrací enginy, jako je například TyrQuake, FuhQuake nebo Darkplaces, mohou nastat potíže s
myší či zvukem.
Bash nespustí program
"bash: ./glquake.glx: Permission denied"
Binární soubor nemusí mít nastaven příznak spuštění. Tento problém vyřešíte zadáním pří-kazu chmod +x glquake.glx.
Pokud je program umístěn v oddílu Windows, je možné, že ten byl připojen s parametrem noexec.
Zadejte (jako root): mount -o remount,exec /mnt/windows. "bash: glquake.glx: command not
found "
■ Bash nemusí mít ve své cestě uveden aktuální adresář. Napište „export PATH= $PATH:“.
Program nelze spustit
Zkuste některou z uvedených možností:
Pomocí -nosound vyzkoušejte, zda problém spočívá ve zvuku.Potíže se zvukem podrobně popisujeme níže.
Pomocí -noudp zjistíte, zda je nakonfigurována síť.
Pomocí -nocdaudio zjistíte, zda nechybí CD-ROM.
Prostřednictvím parametrů příkazového řádku -height, -width a -fullscreen vyberete správný režim obrazovky, například
glquake.glx -width 800 -height 600 -fullscreen -nosound.
Názvy souborů nejsou zadány malými písmeny nebo chybí datové soubory.
Linux Quake vyžaduje, aby byla většina názvů souborů zadána malými písmeny. Pokud se obje-ví chyba podobná této „Error:
W_LoadWadFile: couldn't load gfx.wad“, znamená to, že hra nemůže najít datové soubory. Důvodem může být to, že jejich názvy
nejsou zadány malými pís-meny.
Ujistěte se, že podadresář id1 (ne ID1) obsahuje soubory pak0.pak a pak1.pak.
Nástroj pro zajištění malých písmen si můžete stáhnout na webu http://prdownloads. sourceforge.net/uhexen2/
lowercase?download nebo http://filerenameutils.sourceforge.net.
„Memory overwrite in Sys_Printf“
■ Tato chyba znamená, že byste měli v souboru sys_linux.c upravit proceduru Sys_Printf (poblíž řádku 89) změnou text
[1024] na text[4096] a následně znovu provést kompilaci.
Program přestane fungovat při nahrávání úrovní
Mnoho módů vyžaduje více paměti. Pomocí možnosti -mem 48 přidáte 48 MB paměti.
Několik novějších módů nebude fungovat se standardním GLQuake a bude vyžadovat rozšířený hrací engine.
V některých případech může tento problém souviset s problémy se zvukem. Vyzkoušejte některé typy uvedené v části o
zvuku.
Potíže se zvukem
Více informací o zvuku v systému Linux naleznete v části o ovladačích. Chyba, jako je například „/dev/dsp: Device or resource
busy “, znamená, že některý z programů již používá vaši zvuko-vou kartu chcete-li dosáhnout zvukových efektů ve hře Quake,
budete muset daný program zavřít.
Pokud chcete ukončit jeden z těchto oblíbených zvukových daemonů, napište do příka-zového řádku Linux příkaz
killall artsd nebo killall esd.
Jestliže chcete spustit hru Quake pomocí zvukového daemonu KDE, zadejte příkaz artsd-sp glquake.glx.
„Herní enginy Quake se ukončily a vidím chybu v mmap!“
■
Web Linux Gamers FAQ (http://www.icculus.org/lgfaq) doporučuje „Vaše zvuková karta/ovladač tuto funkci
nepodporuje. Pokud použijete KDE můžete tento problém vyře-šit pomocí přepínače programu artsdsp“.
Ujistěte se, že program artsd běží – po zadání ps -A | grep artsd zkontrolujte, zda tento příkaz vrací alespoň jeden
neprázdný řádek. Poté zadejte příkaz artsdsp -m glquake.glx.
Zkuste použít jiné ovladače zvuku uvedené v části o ovladačích.
Zvuk přeskakuje nebo není příliš kvalitní.
■ Vyzkoušejte možnosti -sndspeed nebo -sndbits, případně změňte ovladače zvuku.
Další témata Hra je příliš tmavá
Pokud nelze provést změnu nastavení jasu v nabídce možností, můžete pro zesvětlení celé obra-zovky použít program xgamma.
■ Před spuštěním hry zadejte xgamma -gamma VALUE. VALUE je hodnota/číslo větší než
1. Po skončení hry obnovíte nastavení jasu zadáním xgamma -gamma 1.
U nevýkonného hardwaru nebude tento postup účinný. Uživatelé Voodoo 1/2 získají více informací na internetové adrese http://
sourceforge.net/docman/display_doc.php?docid=28982&group_id= 124987.
Pohled prostřednictvím pohybu myši
Hra mi neumožní se pořádně rozhlédnout.
■ Pomocí znaku ~ zobrazte herní konzolu a zadejte příkaz +mlook.
Myš nepracuje tak, jak by měla
Zkuste následující postup:
Spusťte hru v režimu celé obrazovky pomocí možnosti -fullscreen.
V hrací konzole zadejte _windowed_mouse 1.
Používáte-li fluxbox, zkuste jiného manažera oken. Fluxbox má potíže s některými hrami v režimu celé obrazovky.
Zatím jste neuspěli? Vyzkoušejte SDL klienty NPRQuake nebo Darkplaces. Zadáním příkazu export
SDL_VIDEO_X11 _DGAMOUSE=0 před začátkem hry zakážete myš v režimu dga.
Hru/možnosti se nepodařilo uložit
Pokud spustíte Quake jako běžný uživatel a vyskytnou se některé z těchto potíží, může být důvodem to, že nemáte oprávnění
zapisovat do adresářů hry. Možné řešení:
Spusťte hru jako superuživatel – než spustíte hru pomocí glquake.glx, zadejte příkaz su a poté heslo uživatele root.
Změňte práva pro adresář hry. Operační systémy Unix mají zabezpečení proti neautorizo-vaným nebo náhodným
změnám souborů. Nejjednodušším řešením v uživatelském prostře-dí s jedním uživatelem je, že se stanete superuživatelem a
změníte (jako root) vlastnictví adresáře Quake prostřednictvím příkazu chown -R USERNAME /usr/local/games/quake . Uživatelé by
si měli přečíst dokumentaci k příkazům chmod a chown.
V prostředí s více uživateli se doporučuje použití herních enginů Darkplaces nebo Qua-keForge, které správně umístí
data jednotlivých uživatelů do jejich domovských adresářů. Quake používá poměrně nepřehledný způsob ukládání a obnovení
herních možností, zvláště pokud hrajete doplňky. Možnosti hry je někdy nutné znovu inicializovat i přesto, že povolení k
souborům není problémem.
„Popletené polygony“
Některé balíčky misí/módy hry Quake mohou způsobit to, že hráč/příšera bude celá zakrytá čára-mi. Tento problém vyřešíte tím,
že odstraníte adresář quake/id1/glquake. Při dalším spuštění hry se tento adresář znovu vytvoří a vše by mělo v pořádku.
Čáry na obrazovce
Běžným problémem karet typu 3dfx jsou čáry na obrazovce.
■ V hrací konzole zadejte gl_ztrick 0.
Další grafické anomálie
Některé moduly Quake používají urychlovač OpenGL. Většinou pracuje bez problémů, ale pokud se vyskytnou nějaké potíže,
zakažte toto zařízení pomocí příkazu -nomtex. Starší grafické karty mohou občas vykreslit objekty v bílé barvě. Na webu
PlanetQuake (http://www.planetquake.com/ console/commands/quake.html) naleznete seznam příkazů, s jejichž pomocí můžete
vyladit výkon.
Ovladače grafiky
Nastavení hardwarové akcelerace GL v systému Linux bývalo poměrně složitou záležitostí, ale sou
časné distribuční balíčky by toto nastavení měly provádět automaticky. Existují samozřejmě výjimky. Ovladače všech moderních
grafických karet Nvidia nemají otevřený zdrojový kód. Z tohoto důvo-du je mnoho distribučních balíčků neobsahuje. Pokud je
vaše grafická karta Nvidia pomalá, měli byste navštívit stránku http://www.nvidia.com a stáhnout si instalátor pro Linux. Dle
našich zku-šeností jsou tyto ovladače dobré, ale ne všechny verze fungují stoprocentně se všemi typy karet. Pokud vaše karta
nepracuje dobře, zkuste použít jiný ovladač.
Ačkoli nové verze XFree a Xorg podporují Voodoo 3, 4 a 5, starší 3dfx hardware, jako je napří-klad Voodoo1, Voodoo2 a Rush,
však již nemají hardwarovou akceleraci. Aby OpenGL pracoval s těmito kartami, jak má, bude nutné stáhnout, nainstalovat a/nebo
zkompilovat softwarové kni-hovny zvané Glide a Mesa. Na internetové adrese http://sourceforge.net/docman/display_ doc.php?
docid= 28982&group_id=124987 naleznete podrobný soubor README týkající se starých karet 3dfx.
Další odkazy
http://www.x.org
http://www.linux-gamers.net/modules/wfsection/article.php?articleid=22
http://www.linux-gamers.net/modules/wfsection/article.php?articleid=31
Ovladače zvuku
Open Sound System a ALSA jsou dva nejčastěji používané zvukové systémy v prostředí Linux. Pokud máte nějaké potíže se
zvukem a nepomohla vám ani část Řešení potíží, měli byste zvážit změnu ovladače zvuku. Je to však poměrně složitá záležitost a
pokoušet by se o to měli pouze zkušení uživatelé.
Aktuální ovladač zjistíte zadáním příkazu lsmod. Zobrazí se seznam zavedených modulů jádra. Zvukové moduly ALSA mají
dlouhé názvy začínající na „snd“, zatímco moduly OSS mají kratší názvy. Modul ALSA Sound Blaster Live bude mít například
název snd-emu10k1, zatímco modul OSS bude emu10k1. U jádra řady 2.4 a starších verzí býval častější modul OSS, dnes se za
stan-dard považuje modul ALSA (jádra verze 2.6 a vyšší).
Informace o modulu ALSA naleznete na webu Alsa Homepage (http://www.alsa-project.org/)
a v článku Guide to ALSA (http://www.linuxjournal.com/node/8234/print) v časopise Linux Journal. Používáte-li modul ALSA a
rádi byste vyzkoušeli modul OSS, budete pravděpodobně muset na nových distribucích překompilovat jádro.
Pokračování hry Quake
Hexen II
Hexen II je barvitá adaptace hry Quake, kterou vytvořil tým Raven Software (http://ravensoft.com/). Z hlediska použitého
zdrojového kódu a tématu hry se originální hře podo-bá mnohem více než Quake II. Tak pěkná, a přece tak krutá.
Hlavním portem Hexen II v prostředí Linux je Hammer of Thyrion (http://uhexen2.sourceforge.net/), u kterého došlo k
podstatnému zdokonalení, co se týče chyb a grafiky OpenGL. Přestože není tak rozšířený jako Quake, demoverze hry obsahuje
některé z nejlepších úrovní. K dispozici je na webu Sourceforge (http://sourceforge.net/projects/uhexen2).
Quake II
Quake II je pokračováním Quake s tématikou sci-fi.První vydání této hry v prostředí Linux nebyla příliš stabilní, problémy byly
hlavně s ovládáním myši,ale v současné době již existuje několik souvisejících projektů, z kterých můžete vybírat. Nejnověj-ším
z nich je QuDos' Quake II (http://qudos.quakedev.com/linux/quake2), který vychází z IcculusQuake II (http://www.icculus.org/
quake2/), ale má vylepšený grafický engine. Zajímat by vás mohl
také projekt QuakeForge Quake II (http://www.quakeforge.net/files/quake2forge/quake2-0.3.tar.gz),který podporuje více
operačních systémů.Mód hry pro více hráčů Digital Paint 2 vychází z verze Quake II.
Quake III Arena
Třetí verze hry Quake byla mezníkem her pro více hráčů. Byla to jedna z prvních her, jež dosáh
la komerčního uvedení v prostředí Linux.Firma ID Software (http://www.idsoftware.com/) nedávno zveřejnila zdrojový kód a na
webu Iccu-lus.org naleznete projekt Open Source Quake III (http://www.icculus.org/quake3/).
Podporovaný je i komerční doplněk Quake III Team Arena, a přestože nikdy nezískal dobrou kri
tiku, je skvělou hrou.Atmosférickou předělávku Q3 pro jednoho hráče lze získat na webu The Dark Conjunction(http://
www.planetquake.com/tdc/).
Další odkazy
Instalace Zerowing (http://zerowing.idsoftware.com/linux/q3a/INSTALL) a průvodce častými problémy (http://zerowing.idsoftware.com/linux/q3a/) od ID Software.Dokumentace k verzi Quake III na webu Linuxgamer (http://
www.linux-gamers.net/modules/wfsection/article.php?articleid=30).
Fórum o potížích se zvukem (http://www.linuxquestions.org/questions/history/260975) a myší
(http://www.linuxquestions.org/questions/history/225821) ve hře Quake III. Podrobné informace o hře Quake III naleznete na
webu Planet Quake (http://www.planetquake.com/quake3/q3aguide/).
Quake IV
Hra Quake IV je impozantní FPS od skvělého týmu Raven Software (http://ravensoft.com/). Zákla-dem je modul Doom-III a má
vysoké požadavky na hardware. Minimálním požadavkem je pro-cesor 2 GHz a paměť 512 MB RAM. Demoverze Quake IV je k
dispozici na internetové adrese ftp://ftp.idsoftware.com/idstuff/quake4/demo/quake4-linux-1.0-demo.x86.run.
Další odkazy
http://zerowing.idsoftware.com/linux/quake4/
http://www.linuxquestions.org/

Podobné dokumenty

Dokumentace SUSE Linuxu

Dokumentace SUSE Linuxu Tato příručka obsahuje podrobnější informace o systému SUSE Linux. Hodit se vám bude, pokud jste pokročilejší domácí uživatelé spravující svůj systém nebo jste systémoví administrátoři. Najdete zde...

Více

Ceník hardware

Ceník hardware 1GB DDR2-533 MHz Buffalo BOX 1GB DDR2-533 ECC Kingston CL4 kit 2x512MB 1GB DDR2-675 Kingston CL4 kit 2x512MB 1GB DDR2-750MHz Kingston HyperX CL4 2GB DDR400 Kingston CL3 (3-3-3) kit 2x1GB 2GB DDR400...

Více

ESET Remote Administrator - Virtual Appliance Deployment

ESET Remote Administrator - Virtual Appliance Deployment webového průvodce. Po dokončení konfigurace máte funkční virtuální stroj s ESET Remote Administrator, případně jeho komponentami. Předtím než se pustíte do samotného procesu nasazení se ujistěte, z...

Více

OKRUHY STÁTNÍCH ZÁVĚREČNÝCH ZKOUŠEK MOBILNÍ

OKRUHY STÁTNÍCH ZÁVĚREČNÝCH ZKOUŠEK MOBILNÍ c. Antény (základní rozdělení, typy a vlastnosti; impedanční přizpůsobení antény k napáječi, poměr stojatých vln, symetrizace, VF napáječe a konektory). d. Základní funkce a koncepce radiokomunikač...

Více

- Demmeler.cz

- Demmeler.cz  vyloučení kompletních nástrojových dat z NC-řízení je také možné  automatický program pro přenos NC-ovládání přes síť s úpravou dat nástroje  díky databázových systémů, je třídění snadné:  dél...

Více

OKRUHY STÁTNÍCH ZÁVĚREČNÝCH ZKOUŠEK

OKRUHY STÁTNÍCH ZÁVĚREČNÝCH ZKOUŠEK c. Signalizace účastnická a síťová (smyčková signalizace, sign. v digitálních systémech a sítích - DSS1 a SS7). d. Teorie hromadné obsluhy a aplikace modelů SHO ve spojovacích systémech (základní č...

Více

Vysoká škola ekonomická v Praze Internetový protokol IP

Vysoká škola ekonomická v Praze Internetový protokol IP Současná celosvětová síť Internet je založena protokolu IP verze 4. Cílem této diplomové práce je zjistit aktuální stav návrhu, standardizace, implementace, praktické použitelnosti a rozšíření znal...

Více

zde

zde upozorní a nabídne řešení. Buď plán vytvoří a přidá nebo jej upraví a přiřadí zaměstnanci tak, aby souhlasil s definicí, kterou jsme u zaměstnance provedli.

Více