LTSP − Linux Terminal Server Project − v3.0
James McQuillan
[email protected]
Copyright 2002 James A. McQuillan PYehled revizí Revize 1.0.4
2002−03−02
Revidoval: jam
GNU/Linux nabízí dobrou platformu pro bezdiskové tenké klienty. Primární účel tohoto dokumentu je ukázat, jak použít tenké klienty při použití LTSP. Tento dokument ale také řeší mnoho problémů s bezdiskovými pracovními stanicemi obecně.
LTSP − Linux Terminal Server Project − v3.0
Obsah Úvod.....................................................................................................................................................................1 1. Disclaimer............................................................................................................................................1 2. Copyright a licence..............................................................................................................................2 Kapitola 1. Jak to pracuje..................................................................................................................................3 Kapitola 2. Instalace LTSP na serveru.............................................................................................................6 2.1. Instalace RPM balíků........................................................................................................................6 2.2. Instalace TGZ balíků.........................................................................................................................6 2.3. Inicializace serveru...........................................................................................................................7 2.4. Specifické konfigurace pro pracovní stanici.....................................................................................7 Kapitola 3. Nastavení pracovní stanice...........................................................................................................11 3.1. Vytvoření bootovací diskety...........................................................................................................11 Kapitola 4. Spouštíme pracovní stanici...........................................................................................................13 Kapitola 5. Tisk.................................................................................................................................................14 5.1. Nastavení na straně klienta.............................................................................................................14 5.2. Nastavení na straně serveru............................................................................................................14 Kapitola 6. Problémy........................................................................................................................................17 6.1. Problémový Etherboot obraz pro disketu.......................................................................................17 6.2. Problémy s DHCP...........................................................................................................................17 6.3. Problémy s TFTP............................................................................................................................20 6.4. Problémy s NFS kořenovým souborovým systémem.....................................................................20 6.5. Problémy s Xserverem....................................................................................................................23 6.6. Problémy s display manažerem......................................................................................................23 Kapitola 7. Jádra...............................................................................................................................................26 7.1. Standardní LTSP jádra....................................................................................................................26 7.2. Vytvoření vlastního jádra................................................................................................................26 Kapitola 8. Parametry souboru lts.conf..........................................................................................................31 8.1. Vzorový lts.conf soubor..................................................................................................................31 8.2. Dostupné lts.conf parametry...........................................................................................................31 Kapitola 9. Lokální aplikace............................................................................................................................37 9.1. Výhody lokálně běžících aplikací...................................................................................................37 9.2. Nastavení podpory pro lokální aplikace.........................................................................................37 9.3. Konfigurace serveru pro lokální aplikace.......................................................................................38 9.4. Konfigurace lokální aplikace..........................................................................................................38 9.5. Spuštění lokálních aplikací.............................................................................................................40 Kapitola 10. Konfigurační příklady................................................................................................................41 10.1. Sériová myš...................................................................................................................................41 10.2. PS/2 myš s kolečkem....................................................................................................................41 10.3. USB tiskárna na ThinkNic............................................................................................................41 i
LTSP − Linux Terminal Server Project − v3.0
Obsah Kapitola 10. Konfigurační příklady 10.4. Vynucené použití XFree86 3.3.6 Xserveru na pracovní stanici...................................................41 Kapitola 11. Další prameny informací............................................................................................................42 11.1. Online odkazy...............................................................................................................................42 11.2. Tištěné publikace..........................................................................................................................42
ii
Úvod LTSP poskytuje jednoduchou cestu jak zužitkovat za nízké režijní náklady pracovní stanice buď jako grafické nebo znakové terminály na bázi GNU/Linux serveru. V tradiční kanceláři na každém stole relativně vysoce výkonná PC. Každé s několika gigabajty místa na disku. Uživatelé ukládají vlastní data na lokální pevné disky a zálohují je zřídka (pokud vůbec). Je opravdu smysluplné mít plnohodnotný počítač na každém stole? Říkáme, že ne. Naštěstí, je zde i jiná cesta. Při použití LTSP, můžete použít velmi podřadné PC, vyjmout pevný disk, disketovou mechaniku a CD−ROM a přidat bootovatelnou síťová karta. Mnohé síťové karty mají bootrom patice, kam stačí pouze vložit bootrom paměť. Během zavádění operačního systému (booting), bezdisková pracovní stanice získá svoji IP−adresu a jádro ze serveru, pak připojí kořenný souborový systém ze serveru pomocí NFS. Pracovní stanice může být konfigurována pro jeden ze 3 režimů: • Grafická X Windows stanice Při použití X Windows, pracovní stanice může být použita pro zpřístupnění libovolné aplikace na serveru, nebo na dalších serverech uvnitř sítě. • Znakový Telnet terminál Pracovní stanice může vyvolat vícenásobnou telnet relaci se serverem. Každá Telnet relace běží na na oddělené virtuální obrazovce. Pomocí kláves Alt−F1 až Alt−F9 se přepíná mezi telnet relacemi. • Shell prompt Pracovní stanice může být konfigurována tak, aby se přímo spustil bash shell na konzole. Tento režim je užitečný zvláště když ladíte problémy s X Windows nebo s NFS. Opravdu užitečná věc je, že můžete mít mnoho pracovních stanic, které obsluhuje jeden GNU/Linux server. Kolik pracovních stanic? Dobře, to záviset na velikosti serveru, a aplikacích, které budete používat. Není neobvyklé mít 40 pracovních stanic s běžícím Netscapem a StarOffice obsluhovaných serverem se dvěma PIII−650 procesory, s 1GB paměti RAM. My víme, že toto pracuje. Ve skutečnosti, náklad−průměr je zřídka nad 1.0!
1. Disclaimer Ani autor ani distributoři, nebo nějaký jiný přispěvatel k tomuto dokumentu nejsou jakýmkoliv způsobem odpovědní za fyzický, finanční, mravní nebo nějaký jiný typ vzniklé škody vyplývající z návrhů v tomto textu.
Úvod
1
LTSP − Linux Terminal Server Project − v3.0
2. Copyright a licence Tento dokument je copyright 2001 od James McQuillan, a je uvolněn za podmínek GNU otevřené dokumentační licence, která je začleněna odkazem.
2. Copyright a licence
2
Kapitola 1. Jak to pracuje Start (booting) bezdiskové pracovní stanice zahrnuje několik kroků. Pochopit co se při tom děje, usnadní řešit problémy, které se mohou objevit. Tento příklad je založený na následující konfiguraci: • standardní x86 pracovní stanice • síťová karta LNE100TX síťová karta s Etherboot bootrom • grafická karta s Intel i810 čipsetem • server používá Redhat 7.2 • DHCP • síťová adresa 192.168.0.0/24 Server je konfigurovaný s LTSP balíkem, toto je co se stane: 1. Když zapnete pracovní stanici, proběhne "Power On Self Test" (POST). 2. Během testů, bude BIOS pátrat po rozšiřujících ROM pamětech. Síťová karta obsahující Etherboot bootrom, používá rozšiřující ROM paměť. BIOS detekuje ROM paměť na síťové kartě. 3. Po dokončení POST testů se provede Etherboot kód. 4. Etherboot kód vyhledá síťovou kartu. Po detekci je zinicializována. 5. Etherboot kód pak vyšle DHCP žádost do lokální sítě. Žádost obsahuje MAC adresu síťové karty. 6. DHCPd démon běžící na serveru zachytí vyslanou žádosti z pracovní stanice a ve svém konfiguračním souboru vyhledá záznam, který odpovídá MAC adrese stanice, která žádost vyslala. 7. DHCPd démon vytvoří jako odpověď paket, obsahující několik informací. Tato odpověď je pak odeslána zpět pracovní stanici. Odpověď zahrnuje tyto informace: ♦ IP adresu pro pracovní stanici ♦ NETMASK − síťovou masku − pro tuto lokální síť ♦ Cestu s uložením jádra pro stažení ♦ Cestu ke kořenovému adresáři souborového systému pro připojení ♦ Nepovinné parametry, které mají být předány jádru přes příkazový řádek 8. Etherboot kód přijme odpověď ze serveru, a nakonfiguruje TCP/IP rozhraní na síťové kartě s parametry, které byly dodány. 9. Etherboot použije TFTP (Trivial File Transfer Protocol) a začne stahovat (downloading) jádro. 10. Po úspěšném stažení jádra na pracovní stanici, Etherboot umístí jádro na správné místo v paměti. 11. Proběhne kontrola jádra. Jádro zinicializuje celý systém a všechna periferní zařízení, která nalezne. 12. Zde opravdu začíná veselá zábava. Na konci jádra je obraz souborového systému. Ten je nahrán do paměti jako ramdisk, a dočasně připojen jako kořenový souborový systém. Příkaz jádra root=/dev/ram0 říká jádru, aby připojil obraz jak kořenový adresář. 13. Normálně, když jádro ukončuje zavádění, spustí se init program. Ale v tomto případě jsme instruovali jádro, aby zavolalo shell skript. Tohoto docílíme přidáním parametru init=/linuxrc do příkazové řádky pro jádro. 14. Skript /linuxrc skript začne se skenováním PCI sběrnice, hledá síťovou kartu. Pro každé PCI zařízení, které nalezne, vyhledává v /etc/niclist souboru shodný záznam. Pokud je nalezena shoda, je vráceno jméno modulu pro daný NIC adaptér, který má být jádrem zaveden. Pro ISA karty musí být jméno modulu specifikováno na příkazové řádce jádra spolu s IRQ nebo s parametry adresy, které jsou požadované. 15. Po identifikaci síťové karty, skript /linuxrc zavede modul jádra, který podporuje tuto kartu.
Kapitola 1. Jak to pracuje
3
LTSP − Linux Terminal Server Project − v3.0 16. Pak je spuštěn dhclient, který vyšle další dotaz na DHCP server. Je nutné udělat oddělený dotaz v uživatelském prostoru, protože pokud bychom byli závislí na dotazu z Etherbootu, tak odpověď by spolklo jádro a jádro by ignorovalo jakýkoliv NFS server, který by mohl být specifikován s kořenovou cestou. Toto je důležité chcete−li, aby byl NFS server odlišný od TFTP serveru. 17. Když dostane dhclient odpověď ze serveru, spustí se soubor /etc/dhclient−script, který podle získaných informací nakonfiguruje rozhraní eth0. 18. Do tohoto bodu byl kořenovým souborovým systémem RAM disk. Nyní, skript /linuxrc připojí nový kořenový souborový systém pomocí NFS. Exportovaný adresář ze serveru je většinou /opt/ltsp/i386. Není možné připojit nový souborový systém ihned jako /. Nejprve se připojí jako /mnt. Pak je pomocí skriptu pivot_root aktuální kořen souborového systému přemístěn do nového souborového systému. Po dokončení je NFS souborový systém připojen jako / a starý kořen je připojen jako /oldroot. 19. Po dokončení připojení a přehození nového kořene souborového systému, což se provedlo pomocí skriptu /linuxrc, je nutné zavolat skutečný program init. 20. Init začne číst soubor /etc/inittab a začne nastavovat prostředí pracovní stanice. 21. Init udržuje přehled o runlevel. Každá úroveň běhu (runlevel) spouští různý soubor služeb pro pracovní stanici. LTSP pracovní stanice se spouští na úroveň '2'. To je nastaveno pomocí řádky initdefault v souboru inittab. 22. Jedou z prvních položek v souboru inittab je příkaz rc.local, který se spouští, když je pracovní stanice ve stavu 'sysinit'. 23. Skript Rc.local vytvoří 1MB RAM disk obsahující všechny věci, které je nutné zapsat nebo modifikovat. 24. RAM disk se připojí jako adresář /tmp. Něketré soubory, které je potřeba napsat, existují ve skutečnosti v adresáři /tmp a symbolické odkazy odkazují na tyto soubory. 25. Připojí se souborový systém /proc. 26. Pokud je pracovní stanice nakonfigurována pro použití swapu přes NFS, adresář /var/opt/ltsp/swapfiles se připojí jako /tmp/swapfiles. Jestli neexistuje swap soubor pro tuto pracovní stanici, vytvoří se automaticky. Velikost swap souboru se konfiguruje v souboru lts.conf souboru. Odkládací soubor (swapfile) je poté inicializován příkazem swapon. 27. Konfiguruje se síťové rozhraní loopback. Toto síťové rozhraní má adresu 127.0.0.1. 28. Pokud je nastaveno používání lokálních aplikací, připojí se adresář /home a zpřístupní se tak domovské adresáře uživatelů. 29. Několik adresářů se vytvoří v adresáři /tmp pro úschovu některých souborů, které jsou potřebné pro běh systém. Vytvoří se adresáře: a. /tmp/compiled b. /tmp/var c. /tmp/var/run d. /tmp/var/log e. /tmp/var/lock f. /tmp/var/lock/subsys 30. Nyní je konfigurován X Windows systém. V souboru lts.conf se nachází parametr XSERVER. Pokud je tento parametr vynechán nebo je nastaven na hodnotu "auto", proběhne automatické detekce. U PCI karet PCI Vendor a id zařízení, následně proběhne prohledání souboru /etc/vidlist. Pokud je karta je podporovaná XFree86 4.X serverem, program pci_scan vrátí jméno potřebného modulu. Pokud je podporovaná pouze XFree86 3.3.6 serverem, pci_scan vrátí jméno X serveru, který se má použít. Skript rc.local může nastavit jiný, protože jména staršího 3.3.6 serveru začínají 'XF86_'. 31. Pokud se použitje XFree86 4.x server, zavolá se skript /etc/rc.setupx pro vytvoření souboru XF86Config pro X4. Pokud se použije XFree86 3.3.6, pak pro vytvoření souboru XF86Config se použije skript /etc/rc.setupx3. Kapitola 1. Jak to pracuje
4
LTSP − Linux Terminal Server Project − v3.0 Soubor XF86Config se vytvoří v závislosti na souboru /etc/lts.conf. 32. Po ukončení skriptu rc.setupx je řízení vráceno zpět do rc.local. Následně je vytvořen skript /tmp/start_ws. Tento skript je odpovědný za start X serveru. 33. Je vytvořen soubor /tmp/syslog.conf. Tento soubor bude obsahovat informaci, která sdělí démonu syslogd, kterému hostiteli na síti se mají posílat logovací informace. Syslog hostitel je specifikován v souboru lts.conf. Zde je symbolický odkaz /etc/syslog.conf, který odkazuje na soubor /tmp/syslog.conf. 34. Démon syslogd se spustí a použíje konfigurační soubor vytvořený v předcházejícím kroku. 35. Řízení je poté vráceno zpět do init. Init pak vyhledá nastavenou honotu initdefault určující implicitní runlevel (úroveň běhu), do které má být systém nastartován. Od lts_core−2.08 je hodnota initdefault rovna 2. 36. Úroveň 2 způsobí, že init spustí skript set_runlevel skript, který ze souboru lts.conf určí v jaké úrovni má pracovní stanice ve skutečnosti běžet. Standardní úrovně běhu (runlevels) pro LTSP jsou 3, 4 a 5. ♦ 3 − Nastartuje shell skript. Toto je velmi užitečné pro odstraňování problému s pracovní stanicí. ♦ 4 − Nastaví běh jednoho nebo několika Telnet sezení v textovém režimu. To je vhodné, jestliže nahrazujete staré sériové terminály. ♦ 5 − GUI mód. Nastartuje se X Windows server a vyšle se XDMCP dotaz na server, který zobrazí dialogové okno pro přihlášení do systému. Potřebujete tedy nějakého správce displeje (display manager), který naslouchá na serveru, např. XDM, GDM nebo KDM.
Kapitola 1. Jak to pracuje
5
Kapitola 2. Instalace LTSP na serveru LTSP balíky jsou dostupné ve formátech RPM a TGZ. Vyberte ten, který vám více vyhovuje pro instalaci a pokračujte další částí. Pokud chcete provozovat X Windows na pracovní stanici, budete potřebovat stáhnout 4 balíky. Mějte na paměti, že pro účely tohoto dokumentu máme pracovní stanici s Tulip síťovou kartou a grafickou kartu s Intel i810 chipsetem. 1. Hlavní balík LTSP (LTSP Core package) 2. Balík s kernelem (Kernel package) 3. Hlavní balík pro X Windows (X Core package) 4. Balík s fonty pro X Windows (X Fonts package) X font balík není opravdu nutný, ale pokud provádíte instalaci poprvé, pak se to doporučuje. Až se dostanete na kloub nastavení serveru a bezdiskové pracovní stanice, můžete si nastavit X font server (XFS). Po instalaci balíčků, je nutné LTSP systém inicializovat. Tento proces zahrnuje provedení změn v systémových konfiguračních souborech, které umožní serveru nabízet služby potřebné pro pracovní stanice.
2.1. Instalace RPM balíků Stáhněte poslední ltsp balíky a nainstalujte je pomocí následujících příkazů: rpm −ivh ltsp_core−3.0.0−1.i386.rpm rpm −ivh ltsp_kernel−3.0.1−1.i386.rpm rpm −ivh ltsp_x_core−3.0.1−1.i386.rpm rpm −ivh ltsp_x_fonts−3.0.0−0.i386.rpm
Výše uvedené příkazy nainstalují balíky do /opt/ltsp/i386 adresář.
2.2. Instalace TGZ balíků Stáhněte poslední vydání ltsp balíků a nainstalujte je pomocí následujících příkazů: tar xzf ltsp_core−3.0.0−i386.tgz cd ltsp_core ./install.sh cd .. tar xzf ltsp_kernel−3.0.1−i386.tgz cd ltsp_kernel ./install.sh cd .. tar xzf ltsp_x_core−3.0.1−i386.tgz cd ltsp_x_core ./install.sh
Kapitola 2. Instalace LTSP na serveru
6
LTSP − Linux Terminal Server Project − v3.0 cd .. tar xzf ltsp_x_fonts−3.0.0−i386.tgz cd ltsp_x_fonts ./install.sh cd ..
Výše uvedené příkazy nainstalují balíky do adresáře /opt/ltsp/i386.
2.3. Inicializace serveru Po instalaci výše uvedených balíků, je potřebné se nastavit do adresáře /opt/ltsp/templates. Je zde několik souborů, které budou konfigurovat systémové soubory na vašem serveru. Každý z těchto souborů je odpovědný za jeden systémový soubor. Prohlédněte si tyto soubory a ujistěte se, že souhlasíte s tím co se chystají udělat. Mohou potencionálně udělat váš systém citlivým na bezpečnostní útok. Je možné provést změny v systémových souborech ručně. Pokud si změny přejete udělat automaticky, potom jako uživatel root, spusťte příkaz ltsp_initialize: cd /opt/ltsp/templates ./ltsp_initialize
Výše uvedený příkaz vám položí mnoho otázek ohledně služeb, které chcete konfigurovat. Budou inicializovány následující služby: • XDM − X displejový manažer • GDM − Gnome displejový manažer • startovací skript pro displejový manažer • bootp • NFS /etc/export soubory • tcpwrappers • Port mapper • syslogd • TFTP startovací skript
2.4. Specifické konfigurace pro pracovní stanici Nyní, je na čase, abychom LTSP serveru sdělili specifika pracovní stanice. Jsou zde tři soubory, které obsahují informace o pracovní stanici. • /etc/dhcpd.conf • /etc/hosts • /opt/ltsp/i386/etc/lts.conf 2.4.1. /etc/dhcpd.conf Pracovní stanice potřebuje IP adresu a další informace. Následující informace obdrží od DHCP serveru: • IP adresu • jméno (hostname) • IP adresu serveru 2.3. Inicializace serveru
7
LTSP − Linux Terminal Server Project − v3.0 • implicitní bránu • cestu odkud nahrát jádro • server a cestu k adresáři odkud má být připojen kořenový souborový systém Pro náš příklad LTSP prostředí, jsme vybrali DHCP pro přiřazování IP adres pracovním stanicím. Skriptem ltsp_initialize je nainstalován vzor dhcpd.conf souboru. Je nazván /etc/dhcpd.conf.example a můžete si ho nakopírovat jako /etc/dhcpd.conf a použít jako základ pro vaši dhcp konfiguraci. Budete potřebovat modifikovat části tohoto souboru, které se týkají specifik prostředí pro vaše pracovní stanice a prostředí vašeho serveru.
default−lease−time max−lease−time
21600; 21600;
option option option option option option
255.255.255.0; 192.168.0.255; 192.168.0.254; 192.168.0.254; "ltsp.org"; "192.168.0.254:/opt/ltsp/i386";
subnet−mask broadcast−address routers domain−name−servers domain−name root−path
shared−network WORKSTATIONS { subnet 192.168.0.0 netmask 255.255.255.0 { } } group { use−host−decl−names option log−servers host ws001 { hardware ethernet fixed−address filename }
on; 192.168.0.254;
00:E0:18:E0:04:82; 192.168.0.1; "/lts/vmlinuz.ltsp";
}
Obrázek 2−1. /etc/dhcpd.conf Od LTSP verze 2.09pre2 již dále nemusíte specifikovat zvláštní jádro, které má být nahráno. Standardní balík s jádrem podporuje všechny síťové karty, které Linux podporuje. V jaderném balíku LTSP jsou obsaženy dva soubory s jádrem Linuxu (kernel files). Jedno jádro má aplikován Linux Progress Patch (LPP). Jména jader jsou: vmlinuz−2.4.9−ltsp−5 vmlinuz−2.4.9−ltsp−lpp−5
Možná jste si všimli, že jádro je uloženo v adresáři /tftpboot/lts , ale u položky "filename" v souboru /etc/dhcpd.conf chybí úvodní komponenta /tftpboot ve jméně cesty. Je tomu tak, protože Redhat verze 7.1 a vyšší, spouští TFTP s '−s' parametrem, který spouští tftpd démona v secure módu. Secure mód nastavuje chroot adresář /tftpboot, při spuštění tftpd. Proto, všechny soubory, které jsou dostupné tftpd démonovi jsou udávány relativně k adresáři /tftpboot. Jiné linuxové distribuce nespouštějí tftpd s '−s' parametrem, takže bude nutné přidat prefix /tftpboot k 2.3. Inicializace serveru
8
LTSP − Linux Terminal Server Project − v3.0 cestě k jádru. 2.4.2. /etc/hosts Mapování IP adresy na jméno počítače (hostname) Počítače obecně komunikují jen s IP adresami. Pro nás, lidi, je potřebné počítače pojmenovat, protože si špatně pamatujeme čísla. Zde vstupuje do hry DNS nebo soubor /etc/hosts. Mapování IP adres na jména není obecně požadováno, výjimkou je LTSP prostředí. Je tomu tak, protože NFS jinak generuje chyby povolení (permissions errors) , když se stanice pokouší připojit kořenový souborový systém. Kromě problémů s NFS, můžete mít problémy ještě s GDM nebo KDM displejovými manažery, pokud nebudete mít jméno pracovní stanice uvedené v souboru /etc/hosts. 2.4.3. /opt/ltsp/i386/etc/lts.conf Zde je určitý počet konfiguračních parametrů, které je možné specifikovat v souboru lts.conf. Soubor lts.conf má jednoduchou syntaxi, která se sestává z více sekcí. Standardní část se nazývá [default] a mohou zde být sekce pro jednotlivé pracovní stanice. Pracovní stanice mohou být identifikované jménem pracovní stanice (hostname), IP adresou nebo MAC adresou. Typický soubor lts.conf vypadá takto:
# # Config file for the Linux Terminal Server Project (www.ltsp.org) # [Default] SERVER XSERVER X_MOUSE_PROTOCOL X_MOUSE_DEVICE X_MOUSE_RESOLUTION X_MOUSE_BUTTONS USE_XFS LOCAL_APPS RUNLEVEL
= = = = = = = = =
192.168.0.254 auto "PS/2" "/dev/psaux" 400 3 N N 5
[ws001] USE_NFS_SWAP SWAPFILE_SIZE RUNLEVEL
= Y = 48m = 5
XSERVER LOCAL_APPS USE_NFS_SWAP SWAPFILE_SIZE RUNLEVEL
= = = = =
[ws002] XF86_SVGA N Y 64m 3
PYíklad 2−1. soubor lts.conf Následuje výpis některých konfiguračních voleb: 2.4. Specifické konfigurace pro pracovní stanici
9
LTSP − Linux Terminal Server Project − v3.0 XSERVER Pokud je váš grafický adaptér PCI karta, a pokud je podporován XFree86 4.1 serverem, pak potřebujete pouze balík lts_x_core. Ten obsahuje všechny ovladače potřebné pro pro X4. Pro server XFree86 3.3.6 je více balíků dostupných pro LTSP. Toto je pro případu, že vaše karta není podporovaná XFree86 4.1. Pro každou jednotlivou stanici můžete v souboru lts.conf zapsat individuální nastavení nebo můžete zapsat standardní volby, které budou sdílet všechny pracovní stanice. Naše pracovní stanice má Intel i810 video čipset, a může být správně automaticky detekován, proto není potřeba zapisovat parametr XSERVER v našem souboru lts.conf. Parametr XSERVER může být specifikován, chcete−li, nebo může být nastaven na hodnotu 'auto', která ukazuje že se provede automatická detekce. RUNLEVEL Chceme, aby pracovní stanice běžela v grafickém režimu, proto potřebujeme nastavit úroveň běhu (runlevel) na hodnotu '5'. Toto je zabezpečeno dalším parametrem v souboru lts.conf.
2.4. Specifické konfigurace pro pracovní stanici
10
Kapitola 3. Nastavení pracovní stanice Server je nastaven, je čas se soustředit na nastavení pracovní stanice. LTSP projekt je o tom co se stane po zavedení jádra do paměti. Je několik způsobů jak dostat jádro do paměti, včetně Etherboot, Netboot, PXE a diskety. Pro účely tohoto dokumentu budeme používat disketu s kódem z Etherboot projektu.
3.1. Vytvoření bootovací diskety Etherboot je softwarový balík pro vytvoření ROM obrazů, které mohou stahovat programový kód po Ethernetové sítí a spouštět na x86 počítači. Mnohé síťové adaptéry mají soket pro instalování ROM paměti. Etherboot je kód který může být uložen do takovéto ROM paměti. −−Ken Yap Etherboot je také Open Source projekt, chráněný GNU GPL licencí (GPL2). Můžete stáhnout Etherboot balík a konfiguruje jej pro typ vaší bootrom paměť jak potřebujete. Poté je možné zkompilovat sestavený zdroj a vytvořit obraz pro bootrom paměť, který může být zapsán do eprom, nebo jej můžete nechat zapsat na disketu pro testování. Nejjednodušší alternativa je navštívit Marty Connor's server www.Rom−O−Matic.net. Marty odvedl znamenitou práci a poskytl webový front−end pro konfiguraci a kompilaci bootrom obrazů za pomoci Etherboot projektu. Zde můžete vybrat váš typ síťové karty a jaký obraz chcete vytvořit. Máte možnost modifikovat mnoho konfiguračních voleb pro Etherboot. Po stisknutí 'Get ROM' tlačítka se vygeneruje požadovaný bootrom obraz. Naše pracovní stanice má Linksys LNE100TX, verzi 4.1 síťovou kartu. Tato karta má ADMTek Centaur−P čipovou sadu, potřebujeme tedy vybrat centaur−p jako náš NIC/ROM typ. Nepotřebujeme dělat žádné změny standardního nastavení, můžeme tedy přeskočit volbu 'Configure'. Jako ROM výstupní formát si vybereme 'Floppy Bootable ROM Image' (obraz pro startovací disketu). To způsobí, že disketa bude obsahovat 512 bajtovou hlavičku, která je zavaděčem (boot loader) etherboot obrazu do paměti ram, kde bude spuštěn. Stiskněte 'Get ROM' tlačítko. Bootrom obraz se vygeneruje. Během několika sekund, kdy se to vytvoří, vám váš prohlížeč nabídne okno "Uložit jako" (Save as), kde můžete zadat kam chcete bootrom obraz uložit na vášem počítač. Já obvykle ukládám soubor do /tmp adresáře. Tak tedy pro Centaur−P je obraz: /tmp/eb−5.0.2−centaur−p.lzdsk Po uložení obrazu na váš pevný disk, je potřeba jej uložit na disketu. Vložte disketu do mechaniky a spusťte následující příkaz: Kapitola 3. Nastavení pracovní stanice
11
LTSP − Linux Terminal Server Project − v3.0 cat
/tmp/eb−5.0.2−centaur−p.lzdsk
Kapitola 3. Nastavení pracovní stanice
/dev/fd0
12
Kapitola 4. Spouštíme pracovní stanici Dejme tomu, že server a pracovní stanice jsou správně nakonfigurovány, mělo by nyní stačit vložit disketu do mechaniky a zapnout pracovní stanici. Etherboot kód se načte z diskety do paměti, síťová karta se nalezne a zinicializuje, odešle se dhcp požadavek do sítě, odpověď se odešle ze serveru a jádro se stáhne na pracovní stanici. Poté co jádro zinicializuje hardware pracovní stanice, X windows se nastartují a měl by se objevit přihlašovací dialog na pracovní stanici, podobný jako tento příklad.
Obrázek 4−1. Přihlašovací obrazovka V tomto bodě, se můžete přihlášení do systému. Je důležité mít na paměti, že se přihlašujete k serveru. Všechny příkazy, které spustíte, ve skutečnosti běží na serveru a jejich výstup se zobrazuje na pracovní stanici. To je síla X Windows. Můžete spustit libovolný program, který je podporovaný serverem.
Kapitola 4. Spouštíme pracovní stanici
13
Kapitola 5. Tisk Vedle pracovní stanice, kde je plně funkční GUI nebo znakový terminál, může stanice také sloužit jako tiskový server, který zpřístupní až 3 tiskárny připojené přes paralelní nebo sériové rozhraní počítače. Toto všechno je plně transparentní pro uživatele pracovní stanice. Ani si dokonce nevšimnou malého vytížení, kdy procházejí data skrz pracovní stanici k tiskárnám.
5.1. Nastavení na straně klienta LTSP používá program lp_server na pracovní stanici pro přesměrování tiskových úloh ze serveru k tiskárně připojené na jeden z portů pracovní stanice. Pro povolení tiskárny na pracovní stanici je pár konfiguračních parametrů v souboru lts.conf. [ws001] PRINTER_0_DEVICE = /dev/lp0 PRINTER_0_TYP = P
Výše uvedená konfigurace způsobí, že lp_server běžící jako démon, naslouchající na TCP/IP portu 9100, bude očekávat proud tiskových dat ze serveru. Tisková data pak budou přesměrována na tiskárnu připojenou na /dev/lp0 paralelní rozhraní. Je zde mnohem více použitelných voleb. Prohlédněte si soubor lts.conf pro další informace o tiskových konfiguračních volbách.
5.2. Nastavení na straně serveru Nastavení tiskárny na serveru je otázka definice tiskové fronty pomocí tiskového konfiguračního nástroje na serveru. Na Redhatu 7.2 je obojí, GUI i textově orientovaný tiskový konfigurační nástroj. GUI nástroj se nazývá printconf−gui a textový nástroj se nazývá printconf−tui. Ve starších verzích Redhatu se program nazýval printtool. Printtool také existuje na Redhatu 7.2, ale ten volá printconf−gui. Další Linuxové distribuce mají svůj vlastní konfigurační nástroj.
Kapitola 5. Tisk
14
LTSP − Linux Terminal Server Project − v3.0
Obrázek 5−1. Printconf−gui pro přidání nové tiskárny Až spustíte tiskový konfigurační nástroj, musíte přidat novou tiskárnu. Program lp_server umožní pracovní stanici emulovat HP JetDirect tiskový server. Vytvořte tedy JetDirect tiskárnu. Je potřeba dát tiskové frontě jméno. Jméno může být cokoli, ale zadejte smysluplné jméno. Jméno může obsahovat pouze následující znaky: • "a−z" • "A−Z" • "0−9" • "−" • "_"
malé znaky velké znaky numerické znaky spojovník podtržítko
Ve výše uvedeném příkladě je jméno ws001_lp. Takové jméno napoví, že tiskárna je spojená se stanicí ws001.
Kapitola 5. Tisk
15
LTSP − Linux Terminal Server Project − v3.0
Obrázek 5−2. Printconf−gui podrobná informace Jsou zde dvě pole umožňující komunikovat s tiskárnou: 1. IP adresa nebo jméno hostitele (hostname) pracovní stanice, ke které je tiskárna připojena. 2. TCP port, na kterém naslouchá démon lp_server. První tiskárna připojená k pracovní stanice bude na TCP/IP portu 9100. Druhá tiskárna bude na portu 9101, a třetí tiskárna na portu 9102.
Kapitola 5. Tisk
16
Kapitola 6. Problémy Jestliže se po projití předchozích kapitol vaše pracovní stanice úspěšně nezavede, pak musíte začít s odstraňováním problémů instalace. První věc, kterou můžete udělat, je vyřešit jak daleko se pracovní stanice při startu dostala.
6.1. Problémový Etherboot obraz pro disketu Když bootujete stanici z diskety, měli byste vidět něco podobného tomuto: loaded ROM segment 0x0800 length 0x4000 reloc 0x9400 Etherboot 5.0.1 (GPL) Tagged ELF for [LANCE/PCI] Found AMD Lance/PCI at 0x1000, ROM address 0x0000 Probing...[LANCE/PCI] PCnet/PCI−II 79C970A base 0x1000, addr 00:50:56:81:00:01 Searching for server (DHCP)...sleep
Výše uvedený příklad ukazuje co můžete očekávat, že uvidíte na obrazovce když bootujete z diskety. Jestliže nevidíte tyto zprávy, které dávají na vědomí, že se Etherboot nastartoval, pak můžete mít špatnou disketu, nebo jste na ni obraz nezapsali správně. Jestliže vidíte následující zprávu, pak to pravděpodobně ukazuje, že Etherboot obraz, který jste vygenerovali není ten správný pro vaši síťovou kartu. ROM segment 0x0800 length 0x8000 reloc 0x9400 Etherboot 5.0.2 (GPL) Tagged ELF for [Tulip] Probing...[Tulip]No adapter found sleep abort
Jestli boot dojde k bodu, kde detekuje síťovou kartu a zobrazí správnou MAC adresu, pak je disketa pravděpodobně v pořádku.
6.2. Problémy s DHCP Po inicializaci síťové karty, stanice vyšle DHCP oběžník (broadcast) do místní sítě a hledá DHCP server. Pokud pracovní stanice dostane platnou odpověď z DHCP serveru, pak zkonfiguruje síťovou kartu. Říci, že to pracuje správně můžete, pokud je na obrazovce zobrazena IP adresa. Zde je příklad toho, jak by to mělo vypadat: ROM segment 0x0800 length 0x4000 reloc 0x9400 Etherboot 5.0.1 (GPL) Tagged ELF for [LANCE/PCI] Found AMD Lance/PCI at 0x1000, ROM address 0x0000 Probing...[LANCE/PCI] PCnet/PCI−II 79C970A base 0x1000, addr 00:50:56:81:00:01 Searching for server (DHCP)... sleep Me: 192.168.0.1, Server: 192.168.0.254, Gateway 192.168.0.254
Jestli vidíte řádek, který začíná 'Me:', následovaný IP adresou , pak víte, že DHCP pracujete správně. Můžete Kapitola 6. Problémy
17
LTSP − Linux Terminal Server Project − v3.0 pokračovat kontrolou činnosti TFTP. Pokud místo toho, vidíte následující zprávu na pracovní stanici, následovanou mnoha sleep zprávami, pak je něco špatně. Je ale běžné vidět jednu nebo dvě sleep zprávy, než dhcp server odpoví. Searching for server (DHCP)...
Vyřešit se co děje může být mnohdy obtížné, zde jsou nějaké věci, které můžete prohlédnout. 6.2.1. Kontrola spojení Je pracovní stanice fyzicky připojená k stejné síti, ke které je připojený i server? Po zapnutí stanice se ujistěte, zda svítí kontrolní ledky (link lights) na všech spojeních. Jestliže propojujete pracovní stanici přímo se serverem (žádný rozbočovač nebo přepínač), ujistěte se, že používáte křížený kabel (cross−over cable). Jestliže používáte rozbočovač (hub) nebo přepínač (switch), pak ověřte, zda používáte normální kabel (nekřížený), jak mezi pracovní stanicí a rozbočovačem, tak také mezi rozbočovačem a serverem. 6.2.2. Běží dhcpd? Potřebujete zjistit zda dhcpd běží na serveru. Toto můžeme zjistit několika cestami. dhcpd normálně běží na pozadí, naslouchá na udp portu 67. Zkuste příkazem netstat zobrazit zda něco naslouchá na tomto portu: net−stat − | grep ":67 "
Měli byste vidět výstup podobný tomuto: udp
0
0
0.0.0.0:67
0.0.0.0:*
Čtvrtý sloupec obsahuje IP adresu a port, oddělený dvojtečkou (':'). Adresa složená z nul ('0.0.0.0') ukazuje, že server naslouchá na všech rozhraních. To znamená že, máte−li rozhraní eth0 a eth1, dhcpd naslouchá na obou rozhraních. Jen proto, že netstat zobrazil, že cosi naslouchá na udp portu 67, neznamená to určitě, že naslouchajícím je dhcpd. Může to být také bootpd, ale to není typické, protože bootp již není zahrnutý ve většině distribucí Linuxu. Abyste se ujistili, že to je dhcpd , zkusit příkaz ps. ps aux | grep dhcpd
Měli byste vidět něco následujícího: root 23814 0.0 0.3 1676 820 ? root 23834 0.0 0.2 1552 600 pts/0
6.2. Problémy s DHCP
S 15:13 0:00 /usr/sbin/dhcpd S 15:52 0:00 grep dhcp
18
LTSP − Linux Terminal Server Project − v3.0 První řádek ukazuje, že dhcpd běží. Druhý řádek je náš příkaz grep. Jestliže nevidíte žádné řádky ukazující, že dhcpd běží, pak je nutné zkontrolovat, že server je nakonfigurován pro runlevel 5 a dhcpd je nakonfigurován pro běh v runlevel 5. Na systémech založených na Redhatu, se můžete příkazem ntsysv ujistit jestli dhcpd je nakonfigurovám, aby se spouštěl. Spustit dhcpd můžete příkazem: service dhcpd start
Věnujte pozornost výstupu, může ukázat chyby. 6.2.3. Druhá kontrola konfigurace dhcpd Má soubor /etc/dhcpd.conf záznam pro naši pracovní stanici? Měli byste překontrolovat 'fixed−address' položku v konfiguračním souboru a ujistit se, že to přesně odpovídá kartě v pracovní stanici. 6.2.4. Neblokují ipchains nebo iptables požadavek? 6.2.4.1. Kontrola pro ipchains
Spusťte následující příkaz a sledujte odpověď: ipchains −L −vv
Jestli vidíte něco jako toto: Chain input (policy ACCEPT: 229714 packets, 115477216 bytes): Chain forward (policy ACCEPT: 10 packets, 1794 bytes): Chain output (policy ACCEPT: 188978 packets, 66087385 bytes):
Pak to nejsou ipchains, které by způsobovaly problémy. 6.2.4.2. Kontrola pro iptables
Spusťte následující příkaz a sledujte odpověď: iptables −L −v
Jestli vidíte něco jako toto: Chain INPUT (policy ACCEPT 18148 packets, 2623K bytes) pkts bytes target prot opt in out source
destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source
destination
Chain OUTPUT (policy ACCEPT 17721 packets, 2732K bytes) pkts bytes target prot opt in out source
destination
6.2. Problémy s DHCP
19
LTSP − Linux Terminal Server Project − v3.0 Pak to nejsou iptables, které by způsobovaly problémy. 6.2.5. Posílá pracovní stanice požadavek? Zkuste prohlédnout soubor /var/log/messages, když startuje (booting) pracovní stanice. Můžete to provést následujícím příkazem: tail −f /var/log/messages
Příkaz bude 'sledovat' logovací soubor, když se do něj budou zapisovat nové záznamy. server server server server
dhcpd: dhcpd: dhcpd: dhcpd:
DHCPDISCOVER from no free leases on DHCPDISCOVER from no free leases on
00:50:56:81:00:01 via eth0 subnet WORKSTATIONS 00:50:56:81:00:01 via eth0 subnet WORKSTATIONS
Jestliže vidíte zprávy jako tyto, pak 'no free leases', ukazuje, že dhcpd běží, ale neví nic o pracovní stanici, která požaduje IP adresu.
6.3. Problémy s TFTP Etherboot užívá TFTP k získání Linuxového kernelu ze serveru. Jedná se o docela jednoduchý protokol, ale někdy je problém vyzkoušet, zda to pracuje. Jestliže vidíte zprávu podobnou této: Loading 192.168.0.254:/lts/vmlinuz−2.4.9−ltsp−5 |
s posledním znakem na lince ('|'), který se rychle mění mezi ' |',' \',' ' a' /', vytváří jakýsi rotační bar, pak se jádro (kernel) stahuje. To ukazuje, že TFTP pracuje dobře. Pokud nevidíte rotační bar, je problém. Možné problémy mohou být tyto: 6.3.1. tftpd neběží Na Redhatu 7.1 se tftp spouští pomocí xinetd. Je zde startovní skript nazvaný /etc/xinetd.d/tftp který obsahuje informace pro běh tftpd 6.3.2. Jádro není tam, kde ho tftpd očekává Jádro musí být umístěné tam, kam má tftpd démon přístup. Jestliže byla použita volba '−s' při spuštění tftpd, pak jakýkoliv požadavek pracovní stanice musí být relativní vzhledem k adresáři /tftpboot. Tedy, jestli položka filename v /etc/dhcpd.conf je nastavena na /lts/vmlinuz−2.4.9−ltsp−5, pak jádro musí být ve skutečnosti v adresáři /tftpboot/lts/vmlinuz−2.4.9−ltsp−5.
6.4. Problémy s NFS kořenovým souborovým systémem Je zde několik věcí, které mohou zabránit kořenovému svazku, aby se připojil. Včetně následujících:
6.2. Problémy s DHCP
20
LTSP − Linux Terminal Server Project − v3.0 6.4.1. Init se nenašel Jestliže dostanete následující chybu: Kernel panic: No init found.
Try passing init= option to kernel.
Pak to je nejspíše tím, že buď připojujete špatný adresář jako kořenový, nebo adresář /opt/ltsp/i386 je prázdný. 6.4.2. Server vrátil chybu −13 Jestliže dostanete následující chybu: Root−NFS: Server returned error −13 while mounting /opt/ltsp/i386
Ukazuje to, že adresář /opt/ltsp/i386 není uvedený v souboru /etc/exports. Podívejte se do souboru /var/log/messages, jestli zde naleznete nějaké záchytné body. Vstup jako tento: Jul 20 00:28:39 jamlap rpc.mountd: refused mount request from ws004 for /opt/ltsp/i386 (/): no export entry
potvrdí naše podezření, že záznam v souboru /etc/exports není správný. 6.4.3. Problémy s NFS démonem (portmap, nfsd & mountd) NFS může být obtížné pro vyladění problémů, ale porozumění tomu co by mělo být nastaveno a jaké nástroje jsou k dispozici pro diagnostiku problémů toto jistě usnadní. Jsou zde tři démoni, které musí na serveru běžet, aby NFS pracovalo správně. portmap, nfsd a mountd. 6.4.3.1. Portmapper (portmap)
Jestliže dostanete následující zprávy: Looking up port of RPC 100003/2 on 192.168.0.254 portmap: server 192.168.0.254 not responding, timed out Root−NFS: Unable to get nfsd port number from server, using default Looking up port of RPC 100005/2 on 192.168.0.254 portmap: server 192.168.0.254 not responding, timed out Root−NFS: Unable to get mountd port number from server, using default mount: server 192.168.0.254 not responding, timed out Root−NFS: Server returned error −5 while mounting /opt/ltsp/i386 VFS: unable to mount root fs via NFS, trying floppy. VFS: Cannot open root device "nfs" or 02:00 Please append a correct "root=" boot option Kernel panic: VFS: Unable to mount root fs on 02:00
Bude to nejspíše způsobeno tím, že démon portmap neběží. Můžete si to ověřit použitím příkazu ps:
6.4. Problémy s NFS kořenovým souborovým systémem
21
LTSP − Linux Terminal Server Project − v3.0 ps −e | grep portmap
Jestli portmap běží, měl byste vidět výstup podobný tomuto: 30455 ?
00:00:00 portmap
Další test je použít netstat. Portmap užívá TCP a UDP port 111. Zkuste spustit toto: netstat − | grep ":111 "
Měl byste vidět následující výstup: tcp udp
0 0
0 0.0.0.0:111 0 0.0.0.0:111
0.0.0.0:* 0.0.0.0:*
LISTEN
Jestliže nevidíte podobný výstup, pak portmap neběží. Spusťte portmap: /etc/rc.d/init.d/portmap
start
Měl byste se ujistit, že portmap je nastaven, aby se spustil při startu serveru. Spusťte ntsysv a ujisťete se, že je to nastavené. 6.4.3.2. NFS a MOUNT démon (nfsd & mountd)
NFS má 2 démony, kteří musí běžet. nfsd a mountd. Oba dva se spouští skriptem /etc/rc.d/init.d/nfs. Spusťte příkaz ps a ujistěte se že běží. ps −e | grep nfs ps −e | grep mountd
Pokud to ukáže, že jeden nebo oba démoni neběží, pak je nutné je spustit. Normálně, by mělo stačit spustit startovní skript s parametrem restart, který by je oba nastartoval , ale z nějakého důvodu skript /etc/rc.d/init.d/nfs nespustí tímto způsobem znovu nfsd. Spustí to znovu pouze mountd (chyba?). Měli byste místo toho použít následující sekvenci příkazů: /etc/rc.d/init.d/nfs /etc/rc.d/init.d/nfs
stop start
Můžete dostat chyby po příkazu stop, ale to je ok. Příkaz start měl by ukázat OK. Pokud démoni běží, ale NFS stále ještě nepracuje, můžete ověřit zda se registrovali pomocí portmapperu, použitím příkazu rpcinfo. rpcinfo −p localhost
Měli byste vidět výsledky podobné následujícím: program vers proto 100000 2 tcp 100000 2 udp 100011 1 udp 100011 2 udp 100005 1 udp 100005 1 tcp
port 111 111 856 856 1104 2531
portmapper portmapper rquotad rquotad mountd mountd
6.4. Problémy s NFS kořenovým souborovým systémem
22
LTSP − Linux Terminal Server Project − v3.0 100005 100005 100003
2 2 2
udp tcp udp
1104 2531 2049
mountd mountd nfs
Toto ukazuje, že nfs (nfsd) a mountd běží a registrovali se portmapperem.
6.5. Problémy s Xserverem Ó chlapče! Pravděpodobně nejobtížnější část nastavení LTSP pracovní stanice je správné nakonfigurování X serveru. Jestli používáte celkem nový grafický adaptér, podporovaný XFree86, a celkem nový monitor, který ovládá velký rozsah rozlišení, pak se posunete hodně vpřed. Obvykle,v tomto případě, pokud to nepracuje, s největší pravděpodobností používáte špatný X server pro vaši kartu. Když X server nepracuje s vaší kartou, je to zřejmé. Buď se X server nenastartuje nebo je nesprávně nastavený monitor. Když je pracovní stanice připravena nastartovat X server, volá skript /tmp/start_ws, který startuje X server na pracovní stanici, s −query volbpu odkazující na server, kde běží display manažer, jako XDM, GDM nebo KDM. Protože se X server startuje pomocí skriptu start_ws, který se spouští z programu init, když selže, init se pokusí jej spustit znovu. init zkouší spustit X server 10 krát, pak to vzdá, protože se domnívá, že znovu spuštění je příliš rychlé. Nakonec to vzdá úplně a zpráva o chybě z X serveru by se měla objevit na obrazovce. Čekání na selhání X server 10 krát může být dosti znervózňující, jednoduchý způsob jak se vyhnout opakovaným selháním, je spustit pracovní stanici do běhové úrovně (runlevel) 3, tedy X server se nebude spouštět automaticky. Místo toho, po nastartování pracovní stanici, obdržíte bash prompt. Z shellu můžete spustit X server ručně následujícím příkazem: sh
/tmp/start_w
X server se pokusí nastartovat, po případném selhání, budete zpět do v promptu shellu, kde můžete vidět důvod selhání.
6.6. Problémy s display manažerem Display manažer je démon který běží na serveru, čeká na X server, aby se s ním mohl zkontaktovat. Po zkontaktování, zobrazí přihlášení do systému pomocí dialogového okna na obrazovce, nabídne uživateli přihlásit se k serveru. Tři nejběžnější display manažeři jsou: • XDM − ten tu byl vždy. Standardní součást X Windows systému. • GDM − 'GNOME display manažer'. Součástí GNOME. • KDM − 'KDE display manažer'. Součást K desktop systému. Většina posledních GNU/Linux distribucí obsahuje všechny tři display manažery.
6.5. Problémy s Xserverem
23
LTSP − Linux Terminal Server Project − v3.0 6.6.1. Šedá obrazovka s velkým X kurzorem Ukazuje, že X server běží, ale není schopen kontaktovat display manažer. Možné důvody jsou: 1. Display manažer neběží V posledních verzích Redhat (7.0 a vyšších) se display manažer startuje z procesu init. V /etc/inittab souboru, je řádek, který vypadá takto: x:5:respawn:/etc/X11/prefdm −nodaemon
prefdm skript rozhoduje, kterých display manažer se spustí. Standardní display manažer je nastaven podle instalovaných balíků. Jestli je nainstalováno GNOME, pak GDM je standardní display manažer. Jestli GNOME není nainstalováno, pak prefdm skript zkontroluje zda je nainstalováno KDE. Jestli ano, pak KDM bude standardní display manažer. Jestli KDE také není nainstalováno, pak XDM bude standardní display manažer. Použitím příkazu netstat, jste schopni zjistit, zda display manažer běží. Na serveru zadejte následující příkaz: netstat −ap | grep xdmcp
Výsledky by měli ukázat, že běží proces naslouchající na xdmcp portu (177). udp
0
0 *:xdmcp
*:*
1493/gdm
Toto ukazuje jasně, že gdm běží s PID 1493, a poslouchá na xdmcp portu. Pokud vidíte tuto řádku, je jasné, že display manažer naslouchá, potřebujete se tedy ujistit, že pracovní stanice posílá XDMCP dotaz správnému serveru. V lts.conf souboru, můžete mít parametr který specifikuje IP adresu serveru, kde běží display manažer. Parametr je nepovinný, ale pokud je nastaven, měl by vypadat jako tento: XDM_SERVER
=
192.168.0.254
samozřejmě, IP adresa pro vaši síť může být jiná než výše uvedený příklad. Jestliže parametr 'XDM_Server' není zadán, pak se použije hodnota parametru 'SERVER', pokud je zadán. Jestli není zadán, pak se použije adresa 192.168.0.254. Ujistěte se, že IP adresa je správná adresa serveru, kde běží display manažer. 2. Display manažer může být konfigurován tak, že ignoruje žádosti od vzdálených hostitelů. Jestliže jste zjistili, že display manažer běží, pak není vyloučeno, že ignoruje XDMCP žádosti od vzdálených hostitelů. Potřebujete zkontrolovat konfigurační soubory běžícího display manažera, zjistit jestli je konfigurován správně. ♦ XDM 6.6. Problémy s display manažerem
24
LTSP − Linux Terminal Server Project − v3.0 Standardní nastavení pro Redhat je zakázané přihlášení z pracovní stanice do systému pomocí XDM. ltsp_initialize skript toto zpřístupní, ale jestli to nepracuje, je potřeba zkontrolovat spubor /etc/X11/xdm/xdm−config. Najděte řádek, který vypadá asi takto: DisplayManager.requestPort:
0
Tento vstup MUSÍ být odkomentovaný, aby XDM mohlo přijímat na portu 177 vzdálené žádosti. Další konfigurační soubor je také důležitý pro XDM, aby mohlo nabízet vzdálené připojení k počítači. Soubor se jmenuje /etc/X11/xdm/Xaccess a musí obsahovat řádek, který začíná hvězdičkou '*'. Řádek je normálně v souboru obsažen, ale Redhat ponechává řádek zakomentovaný. ltsp_initialize skript řádek upraví, ale jestli XDM nepracuje, měli byste zkontrolovat tento soubor. Správně by řádek měl vypadat takto: *
#any host can get a login window
♦ KDM Novější verze KDM používají soubor s názvem kdmrc. Různé linuxové distribuce umisťují tento soubor na různá místa. Pro Redhat 7.2 to je /etc/kde/kdm/kdmrc. Pro jiné distribuce, je nutné příkazem locate zjistit, kde je uložený. Místo, které kontroluje přístup ze vzdálených pracovních stanic, se nazývá [Xdmcp]. Ujistěte se, že Enable parametr je nastaven na true. Starší verze KDM užívají XDM konfigurační soubory, lokalizované v /etc/X11/xdm. ♦ GDM GDM užívá několik konfiguračních souborů. Jsou umístěné v adresáři /etc/X11/gdm. Hlavní soubor, který je nutné prohlédnout se nazývá gdm.conf. V sekci [xdmcp], by měl být parametr 'Enable' nastaven na '1' nebo 'true', v závislosti na verzi GDM. Zde je příklad: [xdmcp] Enable=true HonorIndirect=0 MaxPending=4 MaxPendingIndirect=4 MaxSessions=16 MaxWait=30 MaxWaitIndirect=30 Port=177
Všimněte si řádku 'Enable=true'. Starší verze GDM užívají '0' a '1', pro zakázání nebo povolení vzdáleného vzdálený XDMCP. Novější verze užívají 'false' a 'true'. 3. Pokud display manažer běží a je schopen přijímat žádosti od vzdálené pracovní stanice, může být problém v neschopnosti display manažeru mapovat IP adresu na jméno hostitele. Pracovní stanice musí být uvedena buď v souboru /etc/hosts nebo musí být správně uvedena v DNS.
6.6. Problémy s display manažerem
25
Kapitola 7. Jádra Je potřeba udělat několik rozhodnutí o jádře, které poběží na pracovní stanici. Je nutné se rozhodnout, zda budete používat jedno ze standardních jader dosažitelných downloadem, nebo zda budete budovat vlastní jádro. Také musíte rozhodnout jestli chcete zobrazovat grafickou obrazovku s postupovým barem, který je možný udělat pomocí Linux Progress Patch (LPP).
7.1. Standardní LTSP jádra Balík s jádry, který je k dispozici s LTSP, ve skutečnosti zahrnuje dvě jádra. Jedno má LPP již aplikován a druhé nikoli. Obě jádra mají NFS swap patch aplikovaný.
7.2. Vytvoření vlastního jádra Je zde několik voleb, které můžete udělat, když se rozhodnete pro budování vlastního jádra Jsou dva způsoby jak konfigurovat jádro pro LTSP. Standardní metoda je použít 'Initial Ram Disk', zkráceně initrd. Initrd obraz je malý souborový systém který je přiložen kjádru. Obraz Initrd souborového systému je nahrán do paměti společně s jádrem a ramdisk je připojen jako jeho kořenný souborový systém. Je několik výhod při použití initrd obrazu. Za prvé můžeme sestavit ovladače pro síťové karty jako moduly a nahrát je během startu sytému. Toto umožní použít jediné jádro s virtuální podporou všech síťových karet. Další výhoda je ta, že můžeme použít DHCP klienta jako uživatelský program a nikoli v v jaderném prostoru. Řízení klienta v uživatelském prostoru poskytne lepší kontrolu nad požadovanými volbami a přijatými odpovědmi od serveru. Jádro je také mírně menší. Druhá cesta je budovat jádro bez initrd. Jádra bez initrd vyžaduje, aby specifický síťový ovladač byl statický přilinkován do jádra, a také to vyžaduje nastavit "IP−Autoconfig" a "kořenový souborový systém přes NFS" při konfigurování jádra. Výhoda nepoužívání initrd je v to, že jádro je mírně menší a je zavedeno rychleji. Při běhu stanice není prakticky žádný rozdíl ve funkci stanice. Standardní jádro pro LTSP zahrnuje počáteční Ramdisk (initrd), který zajišťuje detekci síťové karty a uživatelsky vysílá DHCP žádost. Nejvýznamnějším cílem pro vytvoření obrazu je udělat jej co nejmenší. Tak jsme vybrali uClinux libc náhradní knihovnu, a busybox pro utility, které jsou potřeba během startu (bootu). Jestli chcete budovat vaše vlastní jádra, měl byste si stáhnout balík ltsp_initrd_kit. Ten obsahuje strukturu kořenového souborového systému a skript pro sestavení obrazu. 7.2.1. Získání zdroje pro jádro Pro budování uživatelského jádra je obvykle dobrý nápad začít s čerstvým jádrem z ftp.kernel.org. Důvodem pro toto je, že distribuce, jako Redhat aplikuje mnoho záplat a po opuštění jejich zdroje nebude odpovídat oficiálnímu jádru. Stáhněte zdrojový balík s jádrem dle vaší volby a uložte v adresáři /usr/src. Jádra jsou umístěná ve /pub/linux/kernel adresáři na ftp serveru ftp.kernel.org. Budete potřebovat jedno z posledních jader série 2.4.x, protože potřebujete podporu devfs. Také, pokud chcete zahrnout podporu pro odkládání (swap) přes NFS nebo Linux Progress Patch (LPP), budete se potřebovat ujistit, že máte záplaty a jaderné zdroje, které si odpovídají. V době tohoto psaní je jádro Kapitola 7. Jádra
26
LTSP − Linux Terminal Server Project − v3.0 2.4.9 posledním, které toto podporuje. Pro náš příklad budeme užívat jádro 2.4.9. Úplná kompletní cesta je ftp://ftp.kernel.org/pub/linux/kernel/v2.4/linux−2.4.9.tar.bz2 Rozbalte zdroj jádra do adresáře /usr/src. Buďte opatrní, protože balík se rozbalí do adresáře jménem linux. Pokud již máte adresář linux s jiným zdrojovým kódem a nechcete o toto přijít, tak jej přejmenujte ještě před rozbalením zdroje. Zdrojový balík, který jsme stahovali byl komprimovaný utilitou bzip2. Balík potřebujeme dekomprimovat než ho předáme programu tar. Můžete použít následující příkaz pro vybalení: bunzip2 linux−2.4.9.tar.bz2 | tar xf −
Když se rozbalení dokončí, budete mít adresář s názvem linux obsahující celý zdrojový strom. V tomto bodě obvykle přejmenuji adresář na něco více smysluplného. mv linux linux−2.4.9
Po přejmenování adresářese do něj přepneme: cd linux−2.4.9
Obvykle modifikuji Makefile předtím než začnu konfigurovat nové jádro. Na začátku souboru je název proměnné EXTRAVERSION. Nastavím ji na 'ltsp−1', tak že aktuální číslo verze jádra bude '2.4.9−ltsp−1', což umožní snadnějším identifikaci jádra. Začátek Makefile by měl vypadat nějak takto: VERSION = 2 PATCHLEVEL = 4 SUBLEVEL = 9 EXTRAVERSION = −ltsp−1 KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
7.2.2. Jaderné záplaty Po rozbalení jádra budete možná chtít aplikovat různé záplaty. Například 'NFS swap patch' nebo 'Linux Progress Patch'. Tyto záplaty MUSÍ být aplikované před konfigurací jádra. 7.2.2.1. NFS odkládací záplata
NFS odkládací (swap) záplata dovolí jádru pracovní stanice použít odkládací prostor lokalizovaný na NFS serveru. Obvyklé doporučení je mít dostatek paměti na pracovní stanici, aby nebylo nutné swapovat, což může někdy být obtížné přidat více paměti, zvláště do staršího počítače. Tak, schopnost odkládat přes NFS může udělat jinak nepoužitelný počítač použitelným. Pokud je aktuální adresář /usr/src/linux−2.4.9 a záplata je v /usr/src, můžete udělat následující test: patch −p1 −−dry−run ../linux−2.4.9−nfs−swap.diff
To otestuje záplatu, ujistíte se, že může být aplikována čistě. Jestli to skončí bez chyb, pak můžete aplikovat záplatu bez volby −−dry−run. 7.2. Vytvoření vlastního jádra
27
LTSP − Linux Terminal Server Project − v3.0 patch −p1 ../linux−2.4.9−nfs−swap.diff 7.2.2.2. Linux Progress Patch (LPP)
'Linux Progress Patch' (LPP) vám dovolí konfigurovat grafické logo zobrazované během zaváděcího procesu. Normální jaderné zaváděcí zprávy jsou přesměrovány na další tty obrazovku a zvláštní instrukce jsou přidané k zaváděcím skriptům, aby bylo možné odhadovat jak je daleko proces zavedení stanice. Jako NFS odkládací záplatu můžete testovat LPP záplatu tímto příkazem: patch −p1 −−dry−run ../lpp−2.4.9
Jestli se test dokončí úspěšně, pak můžete aplikovat záplata: patch −p1 ../lpp−2.4.9
7.2.3. Konfigurační volby jádra Nyní můžete zvolit konfigurační program. Možné volby jsou: • make xconfig Vyvolá X Windows verzi konfiguračního programu. • make menuconfig Vyvolá pomocný konfigurační program založený na knihovně curses. • make config Vyvolá jednoduchý řádkový konfigurační program. 7.2.3.1. Konfigurace jádra pro použití s initrd
Konfigurace jádra pro použití s initrd vyžaduje nastavit následující volby: • File systems − /dev filesystem support. '/dev file system support' musí být povolen. Toto se nastavuje v části 'File systems'. Nespecifikujte 'Automatically mount at boot'. Připojení bude vykonáno skriptem /linuxrc. skript. • Block devices − RAM disk support LTSP pracovní stanice vyžadují, aby jádro mělo podporu RAM disku. Toto se nastavuje v části 'Block devices'. • Block devices − Initial RAM disk (initrd) support Toto musí také být povoleno. • Processor type and features − Processor family Potřebujete se ujistit, že jádro, které budujete bude schopno běžet na pracovní stanici. Toto se nastavuje v části 'Processor type and feautures'. Měli byste také vypnout SMP podporu, pokud nemáte 7.2. Vytvoření vlastního jádra
28
LTSP − Linux Terminal Server Project − v3.0 vícenásobné CPU. • File systems − Network file systems − NFS Client support Pracovní stanice bude připojovat svůj kořenový souborový systém přes NFS, tedy NFS klientská podpora je požadovaná. Nastavte další požadované volby. Můžete také vypnout mnoho rysů z jádra a tím redukovat jeho velikost. 7.2.3.2. Konfigurace jádra pro použití bez initrd
Konfigurace jádra pro použití bez initrd se liší v několika bodech: • Block devices − RAM disk support LTSP pracovní stanice vyžadují aby jádro podporovalo RAM disk. • Block devices − Initial RAM disk (initrd) support Toto je nutné vypnout. • Networking options − IP:kernel level autoconfiguration Toto potřebuje být umožněno. Jádro bude automaticky konfigurovat eth0 ethernetové rozhraní podle hodnot obdržených z příkazové řádky. není nezbytné specifikovat DHCP, BOOTP nebo RARP volby protože Etherboot bootrom pošle DHCP nebo BOOTP žádost a vytvoří IP parametry dosažitelné na příkazová řádce jádra. Toto také ochrání jádro od potíží, kdyby mělo vytvářet svůj vlastní dotaz. • Network device support − Ethernet (10 or 100Mbit) Když nepoužíváte initrd, musíte vybrat specifický ovladač pro vaši síťovou kartu. Ovladač MUSÍ být staticky nalinkován do jádra, protože ethernetová síťová karta je potřebná před připojením kořenového souborového systému. Toto je nejvýznamnější rozdíl oproti jádru pracujícím s podporou initrd. • File systems − /dev filesystem support Od LTSP verze 2.09pre2, je devfs podpora potřebná. Toto platí bez ohledu na použití či nepoužití initrd. • File systems − Automatically mount at boot Když NEPOUŽÍVÁTE initrd, /dev souborový systém musí být připojen jádrem během zaváděcího procesu (boot process). Odpovězte 'Y' zde. • File systems − Network file systems − NFS Client support Pracovní stanice bude připojovat svůj kořenový souborový systém přes NFS, tedy NFS klientská podpora je požadovaná. 7.2.4. Sestavení jádra Pro jednoduchost nakopírujte soubor .config obsažený v balíku ltsp_initrd_kit. Kopii vytvořte v adresáři /usr/src/linux−2.4.9. Až nastavíte potřebné konfigurační volby jádra, je potřebné jádro sestavit. Následující příkazy jsou nutné pro sestavení jádra: 7.2. Vytvoření vlastního jádra
29
LTSP − Linux Terminal Server Project − v3.0 make make make make make
dep clean bzImage modules modules_install
Můžete to provést také takto: make dep && make clean && make bzImage && make modules && make modules_install
Dvojitý ampersand (&) zajistí, že pokud se první příkaz dokončí úspěšně, pak se vykoná i další příkaz. Po ukončení kompilace bude nové nové jádro uloženo v adresáři /usr/src/linux−2.4.9/arch/i386/boot/bzImage. 7.2.5. Označení jádra pro Etherboot Aby Etherboot mohl pracovat s Linuxovým jádrem, je nutné jej k tomuto připravit. Nazývá se to 'označování' (Tagging) jádra. Tento proces přidá další kód k jádru, který se spouští před předáním řízení jádru. Nástroj pro 'označení' (tagging) jádra se nazývá 'mknbi−linux'. Ltsp_initrd_kit obsahuje shell skript nazvaný buildk, který obsahuje všechny potřebné příkazy pro přípravu obrazu jádra, které má být zaváděno po síti.
7.2. Vytvoření vlastního jádra
30
Kapitola 8. Parametry souboru lts.conf Když jsme navrhovali LTSP, jedením z problémů bylo, že budeme muset pracovat s proměnnými konfiguracemi technických prostředků u pracovních stanic. Samozřejmě, jakákoliv kombinace procesoru, síťové karty a grafického adaptéru dnes dostupná, nemusí být dostupná za 3 měsíce, když budeme chtít přidat další pracovní stanice k síti. Tak jsme vymysleli způsob jak specifikovat uspořádání každé pracovní stanice. Konfigurační soubor se nazývá lts.conf a je uložen v adresáři /opt/ltsp/i386/etc. Formát pamatuje na 'default' nastavení a nastavení jednotlivých pracovních stanic. Pokud jsou všechny vaše pracovní stanice identické, můžete specifikovat všechny konfigurační nastavení v '[Default]' sekci.
8.1. Vzorový lts.conf soubor Zde je příklad souboru lts.conf: [Default] SERVER X_MOUSE_PROTOCOL X_MOUSE_DEVICE X_MOUSE_RESOLUTION X_MOUSE_BUTTONS USE_XFS RUNLEVEL
= = = = = = =
192.168.0.254 "PS/2" "/dev/psaux" 400 3 N 5
XSERVER X_MOUSE_PROTOCOL X_MOUSE_DEVICE X_MOUSE_RESOLUTION X_MOUSE_BUTTONS X_MOUSE_BAUD
= = = = = =
auto "Microsoft" "/dev/ttyS1" 50 3 1200
XSERVER
= XF86_Mach64
RUNLEVEL
= 3
[ws001]
[ws002]
[ws003]
8.2. Dostupné lts.conf parametry 8.2.1. Všeobecné parametry Comments Komentáře začínají znakem '#' a pokračují až do konce řádku. LTSP_BASEDIR Určuje kde je umístěn kořen souborového systému pro LTSP. Implicitní hodnota je /opt/ltsp SERVER Toto je server, který je užívaný pro XDM_SERVER, TELNET_HOST, XFS_SERVER a SYSLOG_HOST, pokud jakýkoli z nich není uveden výslovně. Jestliže máte jeden stroj, který zajišťuje všechno, pak můžete specifikovat adresu pouze zde a vynechat další server parametry. Jestli Kapitola 8. Parametry souboru lts.conf
31
LTSP − Linux Terminal Server Project − v3.0 hodnota není nastavena, použije se adresa 192.168.0.254. SYSLOG_HOST Jestli chcete poslat logovací zprávy na jiný stroj než standardní server, pak můžete tento stroj specifikovat zde. Jestli tento parametr není specifikován, pak se bude používat 'SERVER' popsaný výše. NFS_SERVER Specifikuje IP adresu NFS serveru odkud se připojuje /home souborový systém. Standardně se použije SERVER. USE_NFS_SWAP Nastavte parametr na Y jestli chcete zapnout NFS odkládací prostor. Standard je N SWAPFILE_SIZE Může ovládat velikost odkládacího souboru. Standard je 64m. SWAP_SERVER Odkládací soubor může existovat na libovolném serveru na síti, který je schopen s ním manipulovat. Může specifikovat IP adresu toho serveru. Standard je hodnota NFS_SERVER, pokud je nastavena. NFS_SWAPDIR Adresář na serveru který je exportován přes NFS. Standard je /var/opt/ltsp/swapfiles. Ujistěte se, že exportovaný adresář je v souboru /etc/exports. TELNET_HOST Jestli je pracovní stanice nastavena jako znakový terminál, pak hodnota tohoto parametru bude použita jako telnet server. Pokud hodnota není nastavena, pak bude použita hodnota SERVER. DNS_SERVER Použito pro vytvoření resolv.conf souboru. SEARCH_DOMAIN Použito pro vytvoření resolv.conf souboru. MODULE_01 až MODULE_10 Až 10 jaderných modulů může být zavedeno použitím této konfigurační volby. Celý příkazový řádek, který může být použit s insmod, zde můžete specifikovat. Například: MODULE_01 MODULE_02 MODULE_03
= uart401.o = sb.o io=0x220 irq=5 dma=1 = opl3.o
Jestliže hodnota tohoto parametru je absolutní jméno cesty, pak se použije příkaz insmod. Jinak se použije příkaz modprobe. RAMDISK_SIZE Když pracovní stanice startuje, vytvořený ramdisk se připojí do /tmp adresáře. Můžete specifikovat velikost souborového systému tímto parametrem. Specifikuje se v jednotkách kbytů (1024 bajt). Pro vytvoření ramdisku velikosti 1 megabyte, zadejte RAMDISK_VELIKOST = 1024 Pokud měníte velikost ramdisku zde, je nutné také změnit velikost ramdisku uvnitř jádra. Toto může být zakompilováno nebo pokud používáte Etherboot nebo Netboot, řeknete jádru velikost ramdisku, když označujete jádro pomocí mknbi−linux. Standardní hodnota je 1024 (1 MB) RCFILE_01 až RCFILE_10 Další RC skripty, které mohou být vykonány rc.local skriptem. Uložte skript v adresáři /etc/rc.d a specifikujte jméno skriptu v jednom z těchto parametrů. SOUND Pokud je nainstalován LTSP balík pro zvuk, nastavte tento parametr na Y a vykoná se skript rc.sound, který nastaví zvukovou kartu a démona. Standard je N. Kapitola 8. Parametry souboru lts.conf
32
LTSP − Linux Terminal Server Project − v3.0 8.2.2. Parametry pro X−Windows XDM_SERVER Jestli chcete nasměrovat XDM k jinému stroji než je standardní server, pak tento server můžete specifikovat zde. Pokud není tento parametr specifikován, použije se hodnota parametru 'server'. XSERVER Definuje jaký X server bude se běžet na pracovní stanici. Pro PCI a AGP grafické adaptéry by neměl být tento parametr potřebný. Skript rc.local by měl být schopen automaticky detekovat grafický adaptér. Můžete také hodnotou auto signalizovat, že by se měla proběhnout automatická detekce karty. Pro ISA grafické adaptéry, nebo pokud chcete specifický X server, můžete specifikovat jméno ovladače nebo Xserver v tomto vstupu. Pokud hodnota začíná XF86_, pak se použije XFree86 3.3.6. Jinak se použije XFree86 4.1.x. Standardní hodnota je auto. X_MODE_0 až X_MODE_2 Až 3 modelines nebo rozlišení mohou být nastaveny pro pracovní stanici. Tento vstup může obsahovat různé typy hodnot. Může obsahovat buď rozlišení, nebo kompletní modeline. X_MODE_0 = 800x600 nebo X_MODE_0 = 800x600 60.75 800 864 928 1088 600 616 621 657 −HSync VSync
Pokud není žádný X_MODE_x specifikován, pak se použije implicitní modelování a rozlišení 1024x768, 800x600 a 640x480. Pokud je specifikován jeden nebo více X_MODE_x vstupů, kompletně přepíší implicitní modelines. X_MOUSE_PROTOCOL Jakákoli hodnota, která koresponduje s XFree86 Pointer Control klíčovými slovy, zde může být použita. Typické hodnoty jsou "Microsoft" a "PS/2". Implicitní hodnota je "PS/2". X_MOUSE_DEVICE Toto představuje zařízení, ke kterému je myš připojena. Pokud se jedná o sériovou myš, pak by to mělo být sériové rozhraní počítače, jako /dev/ttyS0 nebo /dev/ttyS1. Pokud se jedná o myš PS/2, tato hodnota by měla být /dev/psaux. Standardní hodnota je /dev/psaux. X_MOUSE_RESOLUTION Toto je hodnota 'rozlišení' v souboru XF86Config. Typická hodnota pro sériovou myš je 50 a typická hodnota pro PS/2 myš může být 400. Standardní hodnota je 400. X_BUTTONS Toto sděluje systému kolik má myš tlačítek. Obvykle se nastavuje 2 nebo 3. Standardní hodnota je 3. X_MOUSE_EMULATE3BTN Toto sděluje X serveru aby emuloval 3−tlačítkovou myš akceptováním současného kliknutí pravým a levým tlačítkem myši. Implicitní hodnota je N. X_MOUSE_BAUD Pro sériové myši definuje přenosovou rychlost. Standardní hodnota je 1200. X_COLOR_DEPTH
8.2. Dostupné lts.conf parametry
33
LTSP − Linux Terminal Server Project − v3.0 Počet bitů použitých pro barevnou hloubku. Možné hodnoty jsou 8, 15, 16, 24 a 32. 8 bitů dává 256 barev, 16 dá 65536 barev, 24 dá 16 milionů barev a 32 bitů dá 4.2 miliard barev! Ne všechny X servery podporují tyto všechny hodnoty. Implicitní hodnota pro je 16 USE_XFS Pokud jste zvolili použití X Font Serveru (XFS) nebo čtení fontů pomocí NFS souborového systému. Font server poskytuje jednoduchý způsob umístění všech fontů na jednom místě, ale mohou nastat problémy, když počet pracovních stanic přesáhne asi 40. Hodnoty pro tuto volbu jsou Y a N. Implicitní hodnota je N. Pokud chcete používat Font Server, můžete použít XFS_SERVER vstup pro specifikování serveru s fonty. XFS_SERVER Pokud používáte X Font Server pro distribuci fontů, pak v tomto vstupu můžete specifikovat IP adresu hostitele, který slouží jako font server. Jestli není toto specifikováno, využije se standardní server, který je uveden ve vstupu SERVER, který je popsán výše. X_HORZSYNC Nastavuje XFree86 HorizSync konfigurační parametr. Implicitně "31−62". X_VERTREFRESH Nastavuje XFree86 VertRefresh konfigurační parametr. Implicitně "55−90". XF86CONFIG_FILE Pokud chcete vytvořit váš vlastní kompletní soubor XF86Config, můžete tak učinit a uložit ho v adresáři /opt/ltsp/i386/etc. Aby byl použit, je nutné jeho jméno zadat jako hodnotu této konfigurační proměnné. Například: XF86CONFIG_SOUBOR = XF86Config.ws004
8.2.3. Parametry pro dotykovou obrazovku USE_TOUCH Jestliže připojíte dotykovou obrazovku k pracovní stanici, nastavte tento vstup na Y. Pokud je nastaven, další konfigurační vstupy konfigurují specifické aspekty dotykové obrazovky. Implicitní hodnota je N. X_TOUCH_DEVICE Dotyková obrazovka pracuje jako myš a obvykle je připojena k pracovní stanici přes sériové rozhraní počítače. Tímto vstupem Můžete specifikovat, které sériové rozhraní počítače je použito. Například je možné nastavit /dev/ttyS0. Není žádná standardní hodnota pro tento vstup. X_TOUCH_MINX Kalibrační vstup pro EloTouch dotykovou obrazovku. Standard je 433. X_TOUCH_MAXX Kalibrační vstup pro EloTouch dotykovou obrazovku. Standard je 3588. X_TOUCH_MINY Kalibrační vstup pro EloTouch dotykovou obrazovku. Standard je 569. X_TOUCH_MAXY Kalibrační vstup pro EloTouch dotykovou obrazovku. Standard je 3526. X_TOUCH_UNDELAY Kalibrační vstup pro EloTouch dotykovou obrazovku. Standard je 10. X_TOUCH_RPTDELAY Kalibrační vstup pro EloTouch dotykovou obrazovku. Standard je 10.
8.2. Dostupné lts.conf parametry
34
LTSP − Linux Terminal Server Project − v3.0 8.2.4. Parametry pro lokální aplikace LOCAL_APPS Pokud chcete umožnit běh aplikací lokálně na pracovní stanici, nastavte proměnnou na Y. Je potřeba provést několik dalších kroků na serveru, aby bylo možno spouštět aplikace lokálně. Podívejte se na kapitolu 'Lokální aplikace' v tomto LTSP manuálu. Implicitní hodnota je N. NIS_DOMAIN Jestliže nastavíte LOCAL_APPS, pak potřebujete NIS server ve vaší síti. NIS_DOMAIN vstup specifikujete NIS doménové jméno. Musí být shodné s doménovým jménem, které definuje NIS server. Toto není stejné jako internetová doména. Implicitní hodnota je ltsp. NIS_SERVER Nastavte zde IP adresu vašeho NIS serveru, pokud nechcete hledat NIS server pomocí všesměrového vysílání. 8.2.5. Parametry pro klávesnici Všechny podpůrné soubory pro klávesnici jsou nyní zkopírované do /opt/ltsp/i386 hierarchie, takže konfigurace mezinárodní klávesnice je nyní záležitost konfigurace XFree86. Toto umožňuje několik konfiguračních, parametrů které jsou zde k dispozici. Hodnoty pro uvedené parametry jsou z XFree86 dokumentace. Cokoliv je platné pro XFree86, je platné pro tyto parametry. Rádi bychom přidali do dokumentace jaké hodnoty jsou potřebné pro každý typ mezinárodní klávesnice. Jestliže s tímto pracujete a jste schopni konfigurovat vaši mezinárodní klávesnici, vaše odezva směrovaná k ltsp vývojovému týmu by byl velice hodnotná. XkbTypes Standardní hodnota je 'default'. XkbCompat Standardní hodnota je 'default'. XkbSymbols Standardní hodnota je 'us(pc101)'. XkbModel Standardní hodnota je 'pc101'. XkbLayout Standardní hodnota je 'us'. 8.2.6. Konfigurační parametry pro tiskárnu Až tři tiskárny mohou být připojeny k bezdiskové pracovní stanici. Kombinace sériové a paralelní tiskárny mohou být konfigurovány pomocí následujících vstupů v souboru lts.conf: PRINTER_0_DEVICE Jméno zařízení první tiskárny. Jména jako /dev/lp0, /dev/ttyS0 nebo /dev/ttyS1 jsou povolena. PRINTER_0_TYPE Typ tiskárny. Platné volby jsou 'P' pro paralelní, a 'S' pro sériovou. PRINTER_0_PORT Číslo použitého TCP/IP portu. Standardně se použije '9100' PRINTER_0_SPEED 8.2. Dostupné lts.conf parametry
35
LTSP − Linux Terminal Server Project − v3.0 Pokud je tiskárna sériová, toto nastaví přenosovou rychlost. Standardně, se použije '9600'. PRINTER_0_FLOWCTRL Pro sériové tiskárny může být specifikována regulace toku dat. Buď' S' pro softwarovou (XON/XOFF) regulaci toku, nebo 'H' pro hardwarovou (CTS/RTS) regulaci toku dat. Pokud není specifikováno, použije se 'S'. PRINTER_0_PARITY Pro sériové tiskárny může být specifikovaná parita. Volby jsou: 'E'−Even, 'O'−Odd nebo 'N'−None. Jestliže není specifikováno, použije se 'N'. PRINTER_0_DATABITS Pro sériové tiskárny je možné specifikovat počet datových bitů. Volby jsou: '5',' 6', '7' a' 8'. Jestliže není specifikováno, použije se '8'. PRINTER_1_DEVICE Název zařízení pro druhou tiskárnu PRINTER_1_TYPE Typ druhé tiskárny PRINTER_1_PORT Použitý TCP/IP port pro druhou tiskárnu PRINTER_1_SPEED Rychlost druhé tiskárny v baudech (sériová tiskárna) PRINTER_1_FLOWCTRL Kontrola toku dat pro druhou tiskárnu (sériová tiskárna) PRINTER_1_PARITY Parita pro druhou tiskárnu (sériová tiskárna) PRINTER_1_DATABITS Počet bitů dat pro druhou tiskárnu (sériová tiskárna) PRINTER_2_DEVICE Název zařízení pro třetí tiskárnu PRINTER_2_TYPE Typ třetí tiskárny PRINTER_2_PORT Použitý TCP/IP port pro třetí tiskárnu PRINTER_2_SPEED Rychlost třetí tiskárny v baudech (sériová tiskárna) PRINTER_2_FLOWCTRL Kontrola toku dat pro třetí tiskárnu (sériová tiskárna) PRINTER_2_PARITY Parita pro třetí tiskárnu (sériová tiskárna) PRINTER_2_DATABITS Počet bitů dat pro třetí tiskárnu (sériová tiskárna)
8.2. Dostupné lts.conf parametry
36
Kapitola 9. Lokální aplikace V prostředí LTSP, máte na vybranou spouštět aplikace lokálně na pracovní stanici nebo vzdáleně na serveru. Zdaleka nejsnadnější cesta jak nastavit LTSP prostředí je spouštět aplikace na serveru. Klientská aplikace běžící na serveru používá paměť a CPU serveru, zatímco zobrazuje výstup na pracovní stanici a užívá její klávesnici a myš. Toto je základní schopnost X Windows. Pracovní stanice pracuje jako standardní X Windows terminál. Aby mohl uživatel spustit aplikaci na pracovní stanici, pracovní stanice potřebuje znát nějaké informace o uživateli. Informace tohoto typu: • Id uživatele • Primární skupinu, do které uživatel patří • Domovský adresář uživatele LTSP spoléhá v tomto na síťovou informační službu − NIS, (dříve nazývanou Yellow Pages), která dává pracovním stanicím k dispozici informace o uživateli a skupině.
9.1. Výhody lokálně běžících aplikací Výhody lokálně běžících aplikací na pracovní stanici. • Redukují náklady na server. Ve velkých sítích s paměťově náročnými aplikacemi, jako Netscape, běh aplikace na pracovní stanici může poskytnout lepší výkon, pokud je pracovní stanice dostatečně silná aby to zvládla. • Aplikace neovlivňuje další uživatele. • Podpora zvuku se snadněji konfiguruje, když aplikace, která hraje na zvuk běží na pracovní stanice.
9.2. Nastavení podpory pro lokální aplikace Nastavení schopnosti lokálního běhu aplikace vyžaduje mnohem více. • Stanice potřebuje více RAM a silnější CPU. 64MB RAM na pracovní stanici je dost dobré východisko. • NIS − pro řízení lokální aplikace na pracovní stanici, nejprve musíte identifikovat sám sebe na pracovní stanici. Pracovní stanice potřebuje vědět kdo jste. Vyžaduje to nějakou variantu autentifikace. Služba NIS byla vybrána jako metoda pro ověřování uživatelů v sítí. • Další adresáře potřebují být exportovány pro pracovní stanice a připojovány přes NFS. • Pomalejší start aplikací, protože jsou zaváděny přes NFS, způsobuje to také zvýšenou síťovou aktivitu. Protože každá kopie programu běží na vlastní CPU, ztratíte výhodu sdílet kód mezi více instancemi stejného programu. Toto redukuje čas, který potřebuje druhá a další instance programu ke svému spuštění.
Kapitola 9. Lokální aplikace
37
LTSP − Linux Terminal Server Project − v3.0
9.3. Konfigurace serveru pro lokální aplikace 9.3.1. Parametry souboru lts.conf Několik voleb je nutné nastavit v souboru lts.conf: LOCAL_APPS Toto musí být nastaveno na Y. Nastavení způsobí následující při zaváděcím proces pracovní stanice: 1. /home adresář ze serveru bude připojen přes NFS. 2. /var/yp/nicknames bude vytvořen na pracovní stanici. 3. portmapper bude spuštěn na pracovní stanici. 4. xinetd bude spuštěn na pracovní stanici. 5. /etc/yp.conf bude vytvořen na pracovní stanici. 6. domainname se spustí s hodnotou parametru NIS_DOMAIN ze souboru lts.conf. 7. ypbind se spustí na pracovní stanici. NIS_DOMAIN Všechny uzly na síti, které chtějí být spojeny se specifickým NIS serverem musí patřit do stejné NIS domény (toto nijak souvisí s DNS doménou). Použijte NIS_DOMAIN parametru pro specifikování jména NIS domény, do které budou pracovní stanice patřit. NIS_SERVER NIS na stanici se pokusí spojit se specifikovaným NIS serverem nebo pošle všesměrový požadavek do sítě pro vyhledání serveru. Pokud chcete vybrat specifický server, zadejte jeho IP adresu v parametru NIS_SERVER. 9.3.2. Síťová informační služba − NIS NIS je typ služby klient/server. Na serveru běží démon, který přijímá žádosti od klientů (pracovní stanice). Démon se jmenuje ypserv. Na pracovní stanici je proces, který se nazývá ypbind. Když potřebuje pracovní stanice informace o uživateli, ověřující heslo nebo vyhledání domovských adresářů uživatelů, použije ypbind pro spojení s ypserv na serveru. Jestliže již používáte NIS ve vaší síti, pak není třeba konfigurovat LTSP server pro běh démona ypserv. Můžete pouze nastavit NIS_DOMAINNAME a NIS_SERVER parametry v ltsp.conf, tak aby odpovídaly vašemu aktuálnímu NIS schématu. Jestliže ještě nepoužíváte NIS ve vaší síti, pak potřebujete nakonfigurovat server pro běh démona ypserv. Kompletní informaci o nastavení NIS serveru naleznete v HOWTO dokumentu na LDP serveru s názvem Linux NISS/NIS+ HOWTO. Seznam dalších pramenů naleznete na konci tohoto dokumentu.
9.4. Konfigurace lokální aplikace Pro nastavení aplikace běžící na pracovní stanici potřebujete dát všechny součásti aplikace na místo, kde je pracovní stanice může vidět. Se staršími verzemi LTSP (2.08 a dříve), bylo mnoha adresářů exportováno ze serveru a připojováno pracovní stanicí. Adresáře jako /bin, /usr/bin, /lib a /usr byli vystaveny pro pracovní stanici. 9.3. Konfigurace serveru pro lokální aplikace
38
LTSP − Linux Terminal Server Project − v3.0 Problém s tímto schématem je ten že, toto je možné pouze tehdy, pokud je pracovní stanice a server stejné architektury. Ve skutečnosti, dokonce rozdíly, jako server je Pentium II (i686) a pracovní stanice je klasické Pentium (i586) může být problém, protože server pravděpodobně bude mít i686 knihovny a ne i386, i486 nebo i586 knihovny. Tedy nejčistější způsob jak to udělat je mít kompletní strom ze všemi binárkami a knihovnami, které pracovní stanice potřebuje, nezávislý na binárkách a knihovnách serveru. Konfigurace aplikace pro lokální spouštění vyžaduje dát všechny požadované části do tohoto stromu. Jeden z balíků, který je možno stáhnout z LTSP serveru je lokální Netscape balík, který instaluje množství souborů do adresáře /opt/ltsp/i386/usr/local/netscape. Věci jako Java třídy, soubory nápovědy, spustitelné binární soubory a skripty jsou uloženy sem. Netscape nepotřebuje nějaké další systémové knihovny, není tedy nutné nic přidávat do adresáře /opt/ltsp/i386/lib Mnoho aplikací požaduje další knihovny. Jak můžete určit jaké knihovny jsou potřebné? Zde se bude hodit příkaz ldd. Předpokládejme, že chcete nastavit jistou aplikaci, aby běžela lokálně. Vybereme si gaim pro příklad. gaim je AOL instantní komunikační klient, který umožňuje komunikovat s dalšími lidmi na AOL fórech. Především potřebujete najít spustitelný binární soubor gaim. Na systému Redhat 7.2 je umístěn v adresáři /usr/bin. Až lokalizujete binární souborgaim, můžete na něj spustit ldd: [jam@server /]$ ldd /usr/bin/gaim libaudiofile.tak.0 = /usr/lib/libaudiofile.so.0 (0x40033000) libm.tak.6 = /lib/i686/libm.so.6 (0x40051000) libnsl.tak.1 = /lib/libnsl.so.1 (0x40074000) libgnomeui.so.32 = /usr/lib/libgnomeui.so.32 (0x4008a000) libart_lgpl.so.2 = /usr/lib/libart_lgpl.so.2 (0x4015d000) libgdk_imlib.so.1 = /usr/lib/libgdk_imlib.so.1 (0x4016c000) libSM.tak.6 = /usr/X11R6/lib/libSM.so.6 (0x40191000) libICE.tak.6 = /usr/X11R6/lib/libICE.so.6 (0x4019a000) libgtk−1.2.so.0 = /usr/lib/libgtk−1.2.so.0 (0x401b1000) libdl.tak.2 = /lib/libdl.so.2 (0x402df000) libgdk−1.2.so.0 = /usr/lib/libgdk−1.2.so.0 (0x402e3000) libgmodule−1.2.so.0 = /usr/lib/libgmodule−1.2.so.0 (0x40319000) libXi.tak.6 = /usr/X11R6/lib/libXi.so.6 (0x4031d000) libXext.tak.6 = /usr/X11R6/lib/libXext.so.6 (0x40325000) libX11.so.6 = /usr/X11R6/lib/libX11.so.6 (0x40333000) libgnome.so.32 = /usr/lib/libgnome.so.32 (0x40411000) libgnomesupport.tak.0 = /usr/lib/libgnomesupport.so.0 (0x40429000) libesd.tak.0 = /usr/lib/libesd.so.0 (0x4042e000) libdb.tak.2 = /usr/lib/libdb.so.2 (0x40436000) libglib−1.2.so.0 = /usr/lib/libglib−1.2.so.0 (0x40444000) libcrypt.tak.1 = /lib/libcrypt.so.1 (0x40468000) libc.tak.6 = /lib/i686/libc.so.6 (0x40495000) libz.tak.1 = /usr/lib/libz.so.1 (0x405d1000) /lib/ld−linux.so.2 = /lib/ld−linux.so.2 (0x40000000)
Seznam zobrazuje všechny knihovny, proti kterým je program gaim dynamicky slinkován.
9.3. Konfigurace serveru pro lokální aplikace
39
LTSP − Linux Terminal Server Project − v3.0 Většina programů, které používají sdílené knihovny, spoléhají na dynamický zavaděč ld−linux pro lokalizaci a zavedení každé ze sdílených knihoven. Některé programy zavádějí knihovny ručně pomocí volání funkce dlopen(). Pro tyto aplikace ldd knihovny neukáže. V tomto případě můžete použít program strace pro vystopování volání funkce dlopen() se jménem volané knihovny uvedeným v argumentech. Po zjištění všech knihoven, je nutné je nakopírovat na vhodné místo v /opt/ltsp/i386 stromu.
9.5. Spuštění lokálních aplikací V X Windows se programy typicky spouští tam, kde běží okenní manažer. Tedy, jestli okenní manažer běží na serveru, výstupy se zobrazují na pracovní stanici, pak všechny programy, které jsou spuštěny, budou také běžet na serveru a své výstupy budou zobrazovat na pracovní stanici. Trik je v tom, že server řekne pracovní stanici, aby program spustila. Toto se typicky dělá pomocí programu rsh. Zde je příklad jak spustit program gaim na pracovní stanici: HOST=`echo $DISPLAY | awk −F: '{ print $1 }'` rsh ${HOST} /usr/bin/gaim −display ${DISPLAY}
Výše uvedený příklad může být zadán v okně programu xterm nebo může být vytvořen shell skript a ten může být spouštěn pomocí ikony na desktopu. Spuštění lokálního Netscapu je zařízeno podobně, ale je nutné nastavit další proměnnou prostředí před spuštěním programu. HOST=`echo $DISPLAY | awk −F: '{ print $1 }'` rsh ${HOST} MOZILLA_HOME=/usr/local/netscape \ /usr/local/netscape/netscape −display ${DISPLAY}
9.5. Spuštění lokálních aplikací
40
Kapitola 10. Konfigurační příklady Téměř každý aspekt pracovní stanice může být konfigurovaný parametry v souboru lts.conf, který je obvykle lokalizovaný v adresáři /opt/ltsp/i386/etc.
10.1. Sériová myš Zde je příkladem lts.conf parametrů pro standardní 2−tlačítkovou sériovou myš: X_MOUSE_PROTOCOL X_MOUSE_DEVICE X_MOUSE_RESOLUTION X_MOUSE_BUTTONS X_MOUSE_EMULATE3BTN
= = = = =
"Microsoft" "/dev/ttyS0" 400 2 Y
10.2. PS/2 myš s kolečkem Zde je příkladem lts.conf parametrů pro Intellimouse: X_MOUSE_PROTOCOL X_MOUSE_DEVICE X_MOUSE_RESOLUTION X_MOUSE_BUTTONS X_ZAxisMapping
= = = = =
"IMPS/2" "/dev/psaux" 400 5 "4 5"
10.3. USB tiskárna na ThinkNic ThinkNIC pracovní stanice má USB port, který může být použit pro připojení lokální tiskárny. Zde je příklad požadovaných parametrů v souboru lts.conf: MODULE_01 MODULE_02 PRINTER_0_DEVICE PRINTER_0_TYPE
= = = =
usb−ohci printer /dev/usb/lp0 S
10.4. Vynucené použití XFree86 3.3.6 Xserveru na pracovní stanici Standardně se používá XFree86 4.1.0 pro pracovní stanici. Jestli chcete přinutit pracovní stanici použít starší X3.3.6 Xserver, tak potřebujete použít ten správný balík 3.3.6 Xserveru. Poté je nutné přidat parametr v souboru lts.conf. Toto je příkladem specifikující SVGA Xserver: XSERVER
= XF86_SVGA
Kapitola 10. Konfigurační příklady
41
Kapitola 11. Další prameny informací 11.1. Online odkazy 1. Domácí stránka projektu LTSP www.LTSP.org 2. Bezdiskové stanice − HOWTO dokument pro Linux www.linuxdoc.org/HOWTO/Diskless−HOWTO.html 3. Domácí stránka projektu Etherboot etherboot.sourceforge.net 4. Server Rom−O−Matic www.Rom−O−Matic.net 5. XFree86 podpora pro myši www.xfree86.org/current/mouse.html 6. XFree86−Video−Timings−HOWTO www.linuxdoc.org/HOWTO/XFree86−Video−Timings−HOWTO.html 7. Linux NISS/NIS+ HOWTO www.linuxdoc.org/HOWTO/NIS−HOWTO.html
11.2. Tištěné publikace 1. ManagingNFSandNIS HalStern O'Reilly&Associates,Inc. 1991 ISBN0−937175−75−7 2. TCP/IPIllustrated,Volume1 W.RichardStevens Addison−Wesley 1994 ISBN0−201−63346−9 3. XWindowSystemAdministrator'sGuide LindaMuiandEricPearce O'Reilly&Associates,Inc. 1993 ISBN0−937175−83−8 (Volume8oftheTheDefinitiveGuidestotheXWindowSystem)
Kapitola 11. Další prameny informací
42