<
jam@LTSP.org>
ltsp@startstop.nl
Copyright © 2004 James A. McQuillan
| Wijzigingen | ||
|---|---|---|
| Herziening 4.1.3 | 2004-06-20 | Herzien door: jam |
| Herziening 4.1.3-1-nl | 2005-03-02 | Herzien door: tgw |
GNU/Linux is een uitermate geschikt platform voor het gebruik van schijfloze zogenaamde 'thin clients' of werkstations. Het belangrijkste doel van dit document is duidelijk te maken hoe zulke werkstations met behulp van LTSP kunnen worden geïnstalleerd. Daarnaast behandelt dit document onderwerpen over thin clients in het algemeen.
LTSP biedt een simpele manier voor het gebruik van goedkope werkstations als grafische of tekstterminals van een GNU/Linux server.
In traditionele kantooromgevingen staan vaak relatief zware PC's met een Intel processor op ieder bureau. Elke computer beschikt over een eigen harde schijf met een capaciteit van meerdere Gigabytes. Gebruikers bewaren hun data op de lokale harde schijf en backups worden zelden (of nooit) gemaakt.
Heeft het echt zin om zo'n zware computer op ieder bureau te hebben?
Wij vinden van niet.
Gelukkig is er een andere manier. Met LTSP is het mogelijk een eenvoudige computer te gebruiken, zonder harde schijf, floppy of cdrom. Alles wat nodig is, is een geïnstalleerde 'bootable' netwerkkaart. Veel netwerkkaarten hebben een voorziening voor het plaatsen van een bootrom, klaar voor gebruik.
Tijdens de opstartfase haalt het schijfloze werkstation zijn IP informatie en een kernel op van de server, en koppelt zijn root bestandssysteem via NFS aan de server.
Het werkstation kan op drie manieren worden geconfigureerd:
Met X Windows kan het werkstation gebruik maken van alle toepassingen op de server of op andere servers van het netwerk.
Het werkstation kan meerdere telnet-sessies met de server opstarten. Iedere telnet-sessie heeft zijn eigen virtuele scherm. Met Alt-F1 tot en met Alt-F9 kan tussen de verschillende sessies gewisseld worden.
Het werkstation kan zodanig worden geconfigureerd dat een lokale 'bash shell' wordt opgestart. Dit is handig bij het oplossen van problemen met X Windows of NFS.
Het mooie is dat meerdere werkstations door een GNU/Linux server kunnen worden bediend. Hoeveel werkstations? Dat hangt af van de eigenschappen van de server en de soort toepassingen die gebruikt worden.
Het is niet ongebruikelijk om met 50 werkstations Mozilla en OpenOffice te laten draaien op een Dual P4-2.4 server met 4GB ram. Wij weten dat dit werkt. De gemiddelde belasting van de server komt zelden boven 1.0!
Noch de auteur, noch de distributeur, noch enige andere medewerker aan dit document zijn op enigerlei wijze verantwoordelijk voor de fysieke, financiële, morele of andere vorm van schade als gevolg van het opvolgen van de suggesties in deze tekst.
Het auteursrecht (2004) berust bij James McQuillan. De tekst is te gebruiken onder de voorwaarden van de 'GNU Free Documentation License' welke bij deze middels verwijzing is opgenomen in deze tekst.
Het opstarten van een schijfloos werkstation omvat verschillende stappen. Begrip voor wat er gedurende dit proces gebeurt maakt het een stuk makkelijker eventuele problemen op te lossen.
Er zijn vier essentiële services nodig voor het opstarten van een LTSP werkstation, te weten:
LTPS is erg flexibel. Elk van de bovengenoemde services kan door een of door meerdere servers worden geleverd. Als voorbeeld beschrijven we een setup waarbij alle genoemde services door een server worden geleverd.
Elk van bovengenoemde opstartmethodes zal later in dit hoofdstuk worden uitgelegd.
De swapfile wordt geactiveerd met het commando swapon.
worden aangemaakt.
Hierdoor worden de in /etc/inittab geconfigureerde items en scripts uitgevoerd.
Er kunnen indien gewenst meer regels aan inittab worden toegevoegd om meer sessies op te starten.
In het bestand lts.conf staat een parameter XSERVER. Indien deze parameter ontbreekt zal het systeem proberen automatisch de videokaart te detecteren. Als er een PCI of AGP videokaart aanwezig is zullen de gevonden PCI Vendor Id en Device Id worden gebruikt om een overeenkomstige vermelding te vinden in het bestand /etc/vidlist.
Indien de kaart ondersteund wordt door Xorg 6.7 zal de pci_scan routine de naam van de driver module teruggeven. Indien de kaart alleen ondersteund wordt door XFree86 3.3.6, dan zal pci_scan de naam van de te gebruiken Xserver teruggeven. Het startx script kan deze twee onderscheiden doordat de oudere 3.3.6 servernamen beginnen met 'XF86_', terwijl de nieuwere Xorg Xserver modules beginnen met kleine letters, bv. ati of trident.
Het XF86Config bestand wordt gebaseerd op de instellingen in het bestand /etc/lts.conf.
Dit leidt bij veel mensen in eerste instantie tot verwarring. Men zit aan een werkstation, maar de sessie draait op de server. Alle commando's worden op de server uitgevoerd maar de uitvoer wordt weergegeven op het werkstation.
Het laden van de Linux kernel in het geheugen kan op verschillende manieren gebeuren.
Etherboot is een populair open-source bootrom project. Het bevat drivers voor diverse populaire netwerkkaarten en werkt erg goed samen met LTSP.
Linux kernels moeten worden 'gemerkt' met het commando mknbi-linux. Hiermee wordt de kernel aangepast voor opstarten vanaf het netwerk door voor aan de kernel wat code toe te voegen en aan het einde de initrd er aan vast te plakken.
De met LTSP meegeleverde kernels zijn al gemerkt en gebruiksklaar voor Etherboot.
Etherboot kan ook op een floppy worden geschreven, handig om te testen.
Onderdeel van de 'Wired for Management' specificatie van eind jaren '90 was een specificatie voor een bootrom technologie bekend onder de naam Pre-boot Execution Environment, meestal afgekort als PXE
Een PXE bootrom is in staat maximaal 32 kilo-byte te laden. De Linux kernel is aanzienlijk groter. Daarom configureren we PXE om een zogenaamde '2nd stage boot-loader' genaamd pxelinux te laden. pxelinux is klein genoeg, en kan vervolgens veel grotere bestanden laden zoals de Linux kernel.
Managed Boot Agent (MBA) is een bootrom van het bedrijf emBoot. Dit was vroeger de afdeling Lanworks van 3Com. MBA is eigenlijk een combinatie van 4 bootroms in een. Het kan overweg met PXE, TCP/IP, RPL en Netware.
De implementatie van PXE door MBA werkt erg goed. Hij kan met pxelinux gebruikt worden om een Linux kernel op te starten.
TCP/IP kan ook gebruikt worden, maar de kernel moet dan wel eerst aangepast worden met een hulpprogramma genaamd imggen.
Netboot is net als Etherboot open-source software voor het maken van boot ROM images. Het verschil is dat het in feite een schil vormt om de NDIS drivers of de packetdrivers die worden meegeleverd met netwerkkaarten.
Er zijn twee manieren om een LTSP werkstation met een floppy op te starten. De eerste manier is door Etherboot weg te schrijven in de bootsector van een floppy. De bootcode wordt dan uitgevoerd, de netwerkkaart wordt geïnitialiseerd en de kernel wordt geladen van de netwerkserver.
Het is ook mogelijk de kernel samen met initrd op een floppy te zetten en op die manier op te starten. Het is echter sneller om de kernel over het netwerk te laden.
De harde schijf kan in combinatie met LILO of GRUB worden gebruikt om de Linux kernel en initrd te laden. Ook kan de Etherboot bootrom van de harde schijf worden geladen, zodat die dus werkt als bootrom.
Een bootable cdrom met een Linux kernel of een Etherboot image kan worden gebruikt.
Net als bij een CD-ROM, floppy of harde schijf kan ook USB geheugen gebruikt worden om een etherboot module of een complete Linux kernel met initrd image te laden.
LTSP kan het beste worden gezien als een complete distributie van Linux. Het is een distributie boven op een andere distributie. Deze 'andere' distributie kan iedere gewenste distributie zijn. In feite is het zelfs geen voorwaarde dat de server Linux draait. De enige voorwaarde is dat de server het NFS (Network File System) protocol ondersteund. Vrijwel alle Unix systemen kunnen dat. Er zijn zelfs Windows servers die als LTSP server kunnen worden geconfigureerd.
Er zijn drie stappen voor het installeren van een LTSP server
Sinds versie 4.1 heeft LTSP een hulpprogramma-pakket voor het installeren en onderhouden van LTSP client pakketten (de programma's die op het werkstation draaien), en voor de configuratie van de services op de server.
Het administratie hulpprogramma (in het engels 'utility') heet ltspadmin en het configuratie hulpprogramma heet ltspcfg. Beide zijn onderdeel van het ltsp-utils pakket.
Het ltsp-utils pakket is beschikbaar in zowel RPM als TGZ formaat. Kies een bestandsformaat en volg de betreffende instructies op.
Download de laatste versie van het ltsp-pakket en installeer dat met het volgende commando:
rpm -ivh ltsp-utils-0.1-0.noarch.rpm |
Download de laatste versie van het ltsp-utils TGZ pakket en installeer dat met de volgende commando's:
tar xzf ltsp-utils-0.1-0.noarch.tgz cd ltsp_utils ./install.sh cd .. |
Als de ltsp-hulprogramma's geïnstallleerd zijn kan het programma ltspadmin worden uitgevoerd. Dit hulpprogramma dient voor het beheren van de LTSP client pakketten. Het maakt contact met de LTSP downloadpagina en haalt de lijst met beschikbare pakketten op. Opstarten van ltspadmin levert het volgende scherm op:
In dit scherm kan gekozen worden voor "Install/Update". Als het hulpprgramma voor de eerste keer wordt gebruikt dan wordt het 'Installer Configuration' scherm getoond:
In het configurationscherm kunnen verschillende waarden worden opgegeven voor het downloaden en installeren van LTSP pakketten:
(Vanaf waar moeten de pakketten worden opgehaald?) Dit is een URL die wijst naar de plaats van de pakketten. Gewoonlijk is dit http://www.ltsp.org/ltsp-4.1, maar als de pakketten vanaf een lokaal bestandssysteem moeten worden geïnstalleerd kan ook file: worden gebruikt. Als de pakketten bijvoorbeeld op een cd staan die aangekoppeld is als /mnt/cdrom dan zou file:///mnt/cdrom (let op: 3 slashes) moeten worden opgegeven.
(In welke map moeten de LTSP mappen worden geïnstalleerd?) Dit is de map waar de mapstructuur van LTSP moet worden geïnstalleerd. Gewoonlijk is dit /opt/ltsp. De map wordt aangemaakt als hij nog niet bestaat.
In deze map worden de root mappen voor iedere architectuur aangemaakt. Op dit moment worden alleen x86 werkstations officieel ondersteund, maar er zijn verschillende mensen bezig met 'ports' naar andere architecturen zoals PPC en Sparc.
Als de server achter een firewall staat en al het webverkeer door een proxy heen moet, kan hier de installer worden geconfigureerd om de proxy te gebruiken. Er moet een URL worden ingevuld inclusief het gebruikte protocol en poortnummer. Bijvoorbeeld: http://firewall.yourdomain.com:3128.
Als geen proxy nodig is kan worden volstaan met " none".
Als de pakketten op een FTP server staan of als een een FTP proxy gepasseerd moet worden dan kan dat hier worden opgegeven. De syntax is identiek aan de die van de HTTP proxy hierboven.
Als een proxy niet nodig is kan worden volstaan met " none".
Als het configuratiescherm wordt afgesloten gaat de installer bij de opgegeven URL informatie ophalen over de lijst van op dat moment aanwezige installeerbare componenten.
Figuur 2-3. LTSP installer - Componentenlijst
Selecteer de componenten die geïnstalleerd moeten worden. Verplaats de oplichtende lijn naar de gewenste component en druk op ' I' Het is ook mogelijk 'A' in te toetsen waarmee alle componenten geselecteerd worden. Dit is meestal het geval. Op deze manier kan de grootste range van mogelijk hardware in werkstations worden ondersteund.Er zijn verschillende sneltoetsen voor dit scherm. Hulp is beschikbaar door 'H' in te drukken.
Voor het weergeven van de lijst met pakketten van een bepaalde component moet 'S' worden ingetoetst. De op dit moment geïnstalleerde versies worden getoond samen met de meest recente beschikbare versies.
Nadat de gewenste componenten zijn geselecteerd kan het 'component selection' scherm worden afgesloten. De installer vraagt dan of de geselecteerde pakketten echt moeten worden geïnstalleerd of bijgewerkt. Als 'Y' wordt ingetoetst worden de pakketten opgehaald en geïnstalleerd.
Er zijn vier essentiële services nodig voor de ondersteuning van opstartende LTSP werkstations, te weten:
Het ltspcfg hulpprogramma wordt gebruikt voor het configureren van deze services en tevens voor een aantal andere aan LTSP gerelateerde zaken.
ltspcfg kan worden opgestart vanuit ltspadmin, of vanaf de commandoregel door middel van het commando ltspcfg.
Wanneer ltscfg wordt opgestart onderzoekt het de server om te zien wat op dat moment geïnstallleerd is en draait. Het onderstaande scherm verschijnt:
Druk 'C' om het configuratiemenu te zien. Ieder item uit het configuratiemenu moet worden bekeken om er zeker van te zijn dat alles goed is ingesteld om LTSP werkstations te kunnen bedienen.

Figuur 2-7. ltspcfg - Initial screen
Het commando Runlevel wordt gebruikt door het programma init. In Linux en Unix wordt het systeem verondersteld in een zeker "Runlevel" te zijn. Runlevel 2 of 3 worden gewoonlijk gebruikt om aan te geven dat het systeem in tekstmodus werkt. Runlevel 5 geeft aan dat het systeem in grafische modus werkt, al of niet op een netwerk.
Voor een LTSP server wordt traditioneel Runlevel 5 gebruikt. De meeste systemen zijn standaard al geconfigureerd om in runlevel 5 NFS en XDMCP services te leveren. Dit hulppgrogramma configureert de systemen waarvoor dat niet het geval is.
Voor systemen met meerdere netwerkkaarten kan hier worden opgegeven via welke netwerk interface de werkstations verbonden zijn.
Door de juiste interface op te geven kan configuratie hulpprogramma op correcte wijze ander configuratiebestanden zoals dhcpd.conf en /etc/exports aanmaken.
DHCP moet worden geconfigureerd om de juiste velden aan de werkstations te kunnen doorgeven. Het gaat om onder andere de volgende velden: fixed-address, filename, subnet-mask, broadcast-address en root-path.
Door dit menu te selecteren kan het bestand dhcpd.conf worden aangemaakt en kan dhcpd worden ingesteld op te starten als het systeem wordt aangezet.
TFTP wordt gebruikt door het werkstation om de Linux kernel te downloaden. Daarvoor moet de tftpd daemon op de server worden geactiveerd.
De Portmapper wordt gebruikt door RPC services zoals NFS
NFS is de service die er voor zorgt dat lokale mappen kunnen worden aangekoppeld door externe computers. Dit is nodig voor LTSP omdat de werkstations hun root bestandssysteem op de server hebben staan.
Dit menu item zorgt er voor dat NFS gelijktijdig met het systeem opstart. Het aanmaken van het betrokken configuratie bestand /etc/exports wordt verderop in deze sectie beschreven.
XDMCP is het "X Display Manager Protocol". Om een aanmeldscherm te krijgen stuurt de X server een XDMCP verzoek naar de displaymanager op de server.
Veel gebruikte displaymanagers zijn XDM, GDM en KDM. Dit menu item toont alle gevonden displaymanagers en geeft aan welke op dit moment geconfigureerd voor gebruik.
Uit veiligheidsoverwegingen wordt het de displaymanager standaard NIET toegestaan om externe werkstations te bedienen. Dit is meestal de oorzaak van het beruchte Grijze scherm met grote X cursor . ltspcfg is meestal in staat de displaymanager zo te configureren dat externe werkstations wel een verbinding kunnen krijgen.
Verschillende services moeten voor hun werking het ip-adres van het werkstation kunnen vertalen in een hostnaam. Het is mogelijk dit voor elkaar te krijgen met de Berkeley Internet Naming Daemon (BIND) maar dan moeten de reverses goed worden ingesteld. Eigenlijk is dat ook de manier waarop het hoort, maar de configuratie van BIND gaat voor dit document en voor ltspcfg iets te ver.
Een veel eenvoudiger methode is om de ip-adressen en hostnamen op te nemen in het bestand /etc/hosts.
Een aantal services maakt gebruik van een veiligheidslaag bekend onder de naam tcpwrappers. Deze wordt geconfigureerd met het bestand /etc/hosts.allow. Dat bestand wordt door dit menu item configureerd.
Dit is het bestand dat NFS gebruikt om vast te stellen welke mappen mogen worden aangekoppeld door externe machines. Het bestand wordt met dit menu-item aangemaakt danwel aangepast.
De configuratie van ieder werkstation wordt bepaald door de items in het bestand lts.conf. Voor min of meer moderne werkstations met een PCI bus zijn eigenlijk geen aanpassingen in dit bestand nodig, maar het moet wel bestaan. Dit menu-item maakt een standaard lts.conf aan.
Nu is het moment aangebroken om de LTSP server in te lichten over uw specifieke werkstation. Er zijn drie bestanden die informatie bevatten over het werkstation:
Het werkstation heeft een ip-adres en andere informatie nodig. Het volgende kan van de server worden verkregen:
Voor dit voorbeeld hebben we DHCP gekozen om ip-adressen uit te delen aan de werkstations.
Tijdens het draaien van het ltsp_initialize script wordt een voorbeeld dhcpd.conf bestand geïnstalleerd. Dat bestand heet /etc/dhcpd.conf.example. U kunt dat bestand kopiëren naar /etc/dhcpd.conf als het gebruikt moet worden voor de DHCP configuratie. Het is wel nodig de delen aan te passen die betrekking hebben op uw werkstation en serverinstallatie.
default-lease-time 21600;
max-lease-time 21600;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.0.255;
option routers 192.168.0.254;
option domain-name-servers 192.168.0.254;
option domain-name "ltsp.org";
option root-path "192.168.0.254:/opt/ltsp/i386";
shared-network WORKSTATIONS {
subnet 192.168.0.0 netmask 255.255.255.0 {
}
}
group {
use-host-decl-names on;
option log-servers 192.168.0.254;
host ws001 {
hardware ethernet 00:E0:18:E0:04:82;
fixed-address 192.168.0.1;
filename "/lts/vmlinuz.ltsp";
}
}
|
Figuur 2-8. /etc/dhcpd.conf
Vanaf LTSP versie 2.09pre2 is het niet langer nodig een specifieke kernel op te geven. De standaard kernel ondersteund nu alle netwerkkaarten die Linux kent. Er worden twee kernel bestanden meegeleverd in het LTSP pakket. Een is bijgewerkt met de Linux Progress Patch (LPP) en de ander niet. De bestandsnamen zijn:
vmlinuz-2.4.9-ltsp-5 vmlinuz-2.4.9-ltsp-lpp-5 |
Het is u misschien opgevallen dat de kernel in /tftpboot/lts staat, maar dat in de "filename" parameter in /etc/dhcpd.conf de inleidende /tftpboot ontbreekt. De reden is dat in Redhat 7.1 en later, TFTP wordt opgestart met de '-s' optie. Daardoor draait de tftpd in secure mode, veilige modus. Dat betekend dat tftpd bij het opstarten een chroot uitvoert naar de map /tftpboot. Daarna zijn alle bestandsnamen voor tftpd relatief ten opzichte van die map.
In andere Linux distributies is deze '-s' optie misschien niet standaard ingeschakeld voor tftp. In dat geval zal de voorlooptekst '/tftpboot' moeten worden toegevoegd.
IP addres vertalen naar hostnaam
Computers kunnen prima met elkaar communiceren via ip-adressen. Pas als mensen zich er mee gaan bemoeien moeten er opeens namen gegeven worden want wij kunnen geen nummers onthouden. Daarom is er DNS, of het bestand /etc/hosts. In het algemeen is de vertaling van ip-adres naar hostnaam niet noodzakelijk. Voor LTSP omgevingen is het echter wel noodzakelijk. Dat is omdat anders NFS sputtert over toegangsrechten als het werkstation zijn root bestandssysteem wil aankoppelen.
Daarnaast zijn er, als het werkstation niet opgenomen is in /etc/hosts, problemen te verwachten met de GDM of KDM displaymanagers.
Er zijn een aantal configuratie-items die kunnen worden ingesteld in het bestand lts.conf.
Het bestand lts.conf heeft een eenvoudige syntax, bestaande uit meerdere secties. Er is een standaard sectie genaamd [default], en er zijn secties voor individuele werkstations. De werkstation kunnen worden aangeduid met hostnaam, ip-adres of MAC adres (hardware adres).
Een gebruikelijke lts.conf ziet er als volgt uit:
#
# Config file for the Linux Terminal Server Project (www.ltsp.org)
#
[Default]
SERVER = 192.168.0.254
XSERVER = auto
X_MOUSE_PROTOCOL = "PS/2"
X_MOUSE_DEVICE = "/dev/psaux"
X_MOUSE_RESOLUTION = 400
X_MOUSE_BUTTONS = 3
USE_XFS = N
LOCAL_APPS = N
RUNLEVEL = 5
[ws001]
USE_NFS_SWAP = Y
SWAPFILE_SIZE = 48m
RUNLEVEL = 5
[ws002]
XSERVER = XF86_SVGA
LOCAL_APPS = N
USE_NFS_SWAP = Y
SWAPFILE_SIZE = 64m
RUNLEVEL = 3
|
Voorbeeld 2-1. lts.conf file
Hieronder volgt een lijst van enkele van deze items:
Indien de videokaart een PCI kaart is die ook ondersteund wordt door X.org 6.7.0 dan is alleen het lts_x_core pakket nodig. Dit bevat alle driver modules voor X4.
Voor LTSP zijn diverse XFree86 3.3.6 pakketten beschikbaar voor het geval de videokaart niet door X.org 6.7.0 wordt ondersteund.
Men kan in lts.conf voor ieder werkstation apart items instellen, of men kan standaardwaarden instellen voor items die door alle werkstations worden gebruikt.
Ons werkstation heeft een Intel i810 video chipset die automatisch kan worden gedetecteerd. Er is dus geen XSERVER item nodig in het lts.conf bestand. Het item XSERVER mag echter wel, indien gewenst, worden ingesteld. Het is ook mogelijk de waarde 'auto' op te geven, om aan te geven dat hij automatisch gedetecteerd zal worden.
We willen dat het werkstation in grafische modus draait dus het runlevel moet op '5' worden gezet. Dit gebeurt door weer een ander item in het bestand lts.conf.
Met ltspcfg is het ook mogelijk een overzicht van de huidige status van alle services te krijgen. Druk in het hoofdmenu van ltspcfg op 'S' en het overzicht wordt getoond.
Als de server geïnstalleerd is wordt het tijd om ons te richten op het installeren van het werkstation
In het LTSP project gaat het om wat er gebeurt als de kernel in het geheugen geladen is. Er zijn verschillende manieren om de kernel in het geheugen te krijgen, zoals Etherboot, Netboot, PXE en floppy.
Als er PXE in de netwerkkaart of PC zit dan kan dat gebruikt worden om de kernel te laden. PXE is een bootrom technologie vergelijkbaar met Etherboot en Netboot.
Mogelijk moet PXE eerst geactiveerd worden op de netwerkkaart. Ook kan het zijn dat opstartvolgorde in het BIOS moet worden aangepast, zodat "Boot from Lan" op de eerste plaats staat in plaats van bv floppy of harde schijf.
PXE heeft de beperking dat alleen bestanden kleiner dan 32 kb geladen kunnen worden. De Linux kernel is aanzienlijk groter dus die kan niet direct worden geladen met PXE. Daarom moet eerst een zogenaamd 'Network Bootstrap Program', kortweg NBP, geladen worden.
Er is een NBP voor Linux beschikbaar met de naam pxelinux.0. Het is onderdeel van het syslinux pakket van kernel ontwikkelaar H. Peter Anvin.
Het LTSP kernel pakket bevat het pxelinux.0 NBP, de benodigde configuratiebestanden voor het laden van een Linux kernel, plus een ramdisk image voor het opstarten.
Het werk op de volgende manier:
Hier is een voorbeeld van een pxe configuratiebestand:
prompt=0
label linux
kernel bzImage-2.4.24-ltsp-4
append init=/linuxrc rw root=/dev/ram0 initrd=initrd-2.4.24-ltsp-4.gz
|
|
Etherboot is een software pakket voor het maken van ROM images die programmacode voor x86 computers downloaden over een Ethernet netwerk. Veel netwerkkaarten hebben een voorziening voor het plaatsen van een ROM chip. Etherboot is code die in zo'n chip gezet kan worden. | ||
| -- Ken Yap | ||
Etherboot is ook Open Source, vrijgegeven onder de GNU General Public License, versie 2 (GPL2)
Als men Etherboot wil gebruiken en over een netwerkkaart met bootrom beschikt, dan kan het nodig zijn dat de BIOS-configuratie moet worden ingesteld om op te starten van het netwerk ('Boot from LAN') in plaats van de harde schijf of de floppy.
Als er nog geen Etherboot bootrom is kan men ofwel een een bootrom maken, ofwel een floppy maken met een Etherboot image in de bootsector.
Etherboot ondersteund meer dan 200 typen netwerkkaarten, en regelmatig worden er typen toegevoegd. Of er nu een bootrom gemaakt wordt of dat er een floppy wordt gebruikt, het is in ieder geval nodig het juiste type netwerkkaart vast te stellen.
Voor oudere ISA kaarten is het niet zo belangrijk om het type exact vast te stellen. Meestal gaat het om ne2000 of 3Com 3c509 kaarten. Men hoeft dan alleen maar de goede Etherboot driver uit te kiezen die overeenkomt met het type kabel dwz 10 base-2 (Coax) of 10 base-T (Twisted pair)
Voor PCI is het belangrijk dat de goed driver gekozen wordt met het juiste PCI Vendor en Device ID.
Met wat geluk is het model kaart bekend. Bijvoorbeeld omdat het modelnummer dat op de kaart geprint staat overeenkomt met de beschrijving van de Etherboot modules. Meestal echter moet het PCI ID nummer opgezocht worden.
Als het werkstation een floppy station heeft kan worden opgestart met tomsrtbt (Tom's Root Boot) floppy. Als het werkstation een cdrom station heeft kan met een Knoppix cd worden opgestart. Als op geen enkele manier Linux opgestart kan worden zit er niets anders op dan de kaart over te brengen naar een computer die wel Linux kan booten.
Wanneer eenmaal Linux opgestart is kan het commando lspci gebruikt worden met de optie -n.
[root@jamlap root]# lspci -n
0000:00:00.0 Class 0600: 8086:7190 (rev 03)
0000:00:01.0 Class 0604: 8086:7191 (rev 03)
0000:00:03.0 Class 0607: 104c:ac1c (rev 01)
0000:00:03.1 Class 0607: 104c:ac1c (rev 01)
0000:00:07.0 Class 0680: 8086:7110 (rev 02)
0000:00:07.1 Class 0101: 8086:7111 (rev 01)
0000:00:07.2 Class 0c03: 8086:7112 (rev 01)
0000:00:07.3 Class 0680: 8086:7113 (rev 03)
0000:00:08.0 Class 0401: 125d:1978 (rev 10)
0000:01:00.0 Class 0300: 1002:4c4d (rev 64)
0000:06:00.0 Class 0200: 8086:1229 (rev 09)
|
[root@jamlap root]# lspci -n | grep "Class 0200"
0000:06:00.0 Class 0200: 8086:1229 (rev 09)
|
Men kan ervoor kiezen het Etherboot pakket te downloaden en te configureren voor een specifiek type kaart, en vervolgens de broncode te compileren voor het benodigde type bootrom. Dit levert dan de gewenste bootrom image op die uiteindelijk in een EPROM of op een floppy geschreven kan worden.
Een veel eenvoudigere manier is om naar Marty Connor's www.Rom-O-Matic.net website te gaan.
Marty heeft prima werk verricht met het maken van een webpagina die het configuratie en compilatie proces van bootrom images voor zijn rekening neemt. Op de pagina kan aangegeven worden om welk type netwerkkaart het gaat, en welk soort image gemaakt moet worden. Ook is er nog een mogelijkheid om eventuele verdere opties te configureren. Na een druk op de knop 'Get ROM' wordt er vervolgens in een paar seconden een bootrom image gemaakt.
Kies bij de optie 'ROM output' voor 'Floppy Bootable ROM Image'. Dit plakt een 512 bytes lang opstart programma vooraan het image. Als het resultaat in de bootsector van een floppy wordt geschreven dan wordt tijdens het opstarten de etherboot image in het geheugen geladen waar het kan worden uitgevoerd.
Druk op 'Get ROM' en na een paar seconden verschijnt in de browser een pop-up venster met de vraag waar het bestand in de computer opgeslagen moet worden.
Als het image op de harde schijf staat moet hij nog naar een floppy worden gekopiëerd. Doe een floppy in het station en typ het volgende commando in om de floppy te beschrijven:
dd if=Etherboot_Image of=/dev/fd0 |
Om het Etherboot image in een EPROM weg te schrijven is een programmeer apparaat nodig. De prijs van dit soort apparatuur varieert van enige honderden tot duizenden dollars, afhankelijk van de mogelijkheden van het apparaat.
Het proces van het programmeren van een EPROM is volledig afhankelijk van de gebruikte apparatuur. Een beschrijving valt daarom buiten de doelstelling van dit document.
Als de server en het werkstation goed zijn geconfigureerd is het gewoon een kwestie van floppy in het station en de computer aanzetten.
De Etherbootcode wordt van de floppy in het geheugen geladen, de netwerkkaart wordt gevonden en geïnitialiseerd, het dhcp-verzoek wordt verzonden en een antwoord komt terug waarna de kernel van de server wordt opgehaald. Als het werkstation door de kernel is geïinitialiseerd start X windows op en verschijnt een aanmeldvenster op het scherm vergelijkbaar met het voorbeeld hieronder:

Figuur 4-1. Aanmeldscherm
Op dit moment kan de gebruiker zich aanmelden. Het is belangrijk te onthouden dat men zich bij een server aanmeldt. Alle commando's worden op die server uitgevoerd en de uitvoer wordt op het werkstation weergegeven. Dit is de kracht van X windows.
Alle programma's die op de server staan kunnen worden gebruikt.
Los van de rol van GUI of tekstterminal kan het werkstation ook als printserver dienen. In totaal 3 printers kunnen worden verbonden met de parallelle of seriële poorten.
Dit gebeurt allemaal onmerkbaar voor de gebruikers van het werkstation. Zij zullen niet in de gaten hebben dat er dataverkeer door het werkstation naar de printers toe gaat.
LTSP gebruikt het lp_server programma op het werkstation om de binnenkomende printopdrachten van de server door te sturen naar een printer aan een van de poorten van het werkstation.
Een printer op het werkstation kan worden aangesloten door een aantal configuratie items in het bestand lts.conf van een waarde te voorzien.
[ws001]
PRINTER_0_DEVICE = /dev/lp0
PRINTER_0_TYPE = P
|
Er zijn meer opties. Kijk in de sectie over lts.conf voor meer informatie over het configureren van printers.
Het opzetten van een printer op de server is een kwestie van het definiëren van een printer wachtrij. Dit kan met het printerconfiguratie-programma op de server.
Op redhat 7.2 is zowel een GUI als een tekstgebaseerd programma aanwezig voor de printerconfiguratie. De GUI heet printconf-gui, de tekstversie heet printconf-tui . Oudere versies van Redhat hebben het programma printtool. Printtool bestaat ook in Redhat 7.2, maar dan roept het alsnog printconf-gui aan. Andere Linux distributies hebben hun eigen printer configuratie programma's.

Figuur 5-1. Printconf-gui Toevoegen van een nieuwe printer
Indien het printer configuratieprogramma wordt opgestart moet eerst een nieuwe printer worden toegevoegd. Het lp-server programma op het werkstation emuleert een HP JetDirect print server. Het is nodig een JetDirect printer toe te voegen.
De printer heeft een naam voor de printer wachtrij nodig. De naam kan van alles zijn maar maak er een betekenisvolle naam van, met uitsluitend de onderstaande tekens:
De gekozen naam in het bovenstaande voorbeeld is ws001_lp. Door deze naam is het makkelijk te zien dat de printer is verbonden met ws001.

Figuur 5-2. Printconf-gui Detail informatie
Twee velden zijn noodzakelijk voor communicatie met de printer:
De eerste printer die aan een werkstation vast zit krijgt tcp-poort 9100. De tweede printer zit op poort 9101, en de derde printer op 9102.
Een van de faciliteiten die sinds versie 4.0 aan LTSP zijn toegevoegd zijn de zg 'Schermscripts'. Deze scripts dienen voor het opstarten van de verschillende type sessies.
Er kunnen meerdere schermen voor een werkstation worden gedefinieerd. Hierdoor kunnen meerdere sessies tegelijkertijd actief zijn. Het kunnen verschillende type sessies zijn of allemaal dezelfde. Men kan bijvoorbeeld het volgende opgeven:
SCREEN_01 = startx SCREEN_02 = shell |
Op deze manier kunnen 12 'schermscripts' worden opgegeven, maar de meeste mensen hebben aan 1 genoeg.
Beschikbare typen schermscripts:
Dit script start de X server op met de optie -query, waardoor een XDMCP verzoek naar een displaymanager gestuurd wordt om een aanmeldvenster op het scherm te krijgen.
Dit script start een shell op het werkstation. Eigenlijk is dit script speciaal voor het oplossen van problemen op het werkstation. Omdat de sessie op het werkstation plaats vindt, en niet op de server, is hij niet erg handig voor het draaien van programma's.
Dit script start een telnet-sessie die verbonden is met de server. Het is een tekstsessie.
Standaard wordt de telnet-sessie met de LTSP server verbonden maar als men een verbinding met een andere server wil kan dat op de dezelfde regel aangegeven worden. Bijvoorbeeld:
SCREEN_01 = telnet server2.mydomain.com |
Dit script start het rdesktop programma dat contact maakt met een Microsoft Windows server. Opties voor dit programma kunnen op dezelfde regel worden opgegeven, direct na de scriptnaam. Als bijvoorbeeld de server moet worden opgegeven kan dat op de volgende manier:
SCREEN_01 = rdesktop -f w2k.mydomain.com |
De schermscripts staan in de map /opt/ltsp/i386/etc/screen.d. Men kan eigen schermscripts maken en toevoegen aan deze map. Het handigste is om een van de scripts als voorbeeld te gebruiken.
Indien na het volgen van de aanwijzingen in de voorgaande hoofdstukken het werkstation niet opstart begint het proces van probleemoplossing.
Het eerste dat uitgezocht moet worden is hoever het opstartproces van het werkstation gekomen is.
Als van een floppy wordt opgestart zou ongeveer het volgende op het scherm te zien moeten zijn:
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> |
Het bovenstaande voorbeeld laat zien wat verwacht kan worden bij het opstarten vanaf een floppy. Als deze boodschappen, die aangeven dat Etherboot opgestart is, niet te zien zijn kan het zijn dat de floppy defect is, of dat de image niet goed op de floppy weggeschreven is.
De volgende boodschap is waarschijnlijk zichtbaar het Etherboot image dat gemaakt is niet correct is voor de gebruikte netwerkkaart.
ROM segment 0x0800 length 0x8000 reloc 0x9400 Etherboot 5.0.2 (GPL) Tagged ELF for [Tulip] Probing...[Tulip]No adapter found <sleep> <abort> |
Als het opstartproces aankomt op het punt waarop het correcte MAC adres van de kaart wordt weergegeven dan is de floppy waarschijnlijk goed.
Als de netwerkkaart is geïnitialiseerd zendt hij een dhcp-verzoek over het lokale netwerk, op zoek naar een dhcp-server.
Wanneer het werkstation een bruikbaar antwoord heeft gekregen van de dhcp-server wordt de netwerkkaart geconfigureerd. Of dit gelukt is valt af te leiden uit de ip-adres die in dat geval op het scherm wordt weergegeven. Hier is een voorbeeld hoe dat eruit zou moeten zien:
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 |
Als in plaats daarvan de volgende boodschap op het scherm verschijnt gevolgd door een heleboel <sleep> meldingen, dan is er iets mis. Het is normaal als er een of twee van deze <sleep> meldingen te zien zijn en pas daarna het antwoord van de dhcp-server.
Searching for server (DHCP)... |
Uitzoeken wat er mis is kan soms moeilijk zijn, maar er zijn een paar zaken om aandacht aan te besteden.
Is het werkstation fysiek verbonden met hetzelfde netwerk als waar de server aan vast zit?
Kijk, met het werkstation aan, of alle verbindings-indicatorlichtjes op alle verbindingen aanstaan.
Als een directe verbinding (geen hub of switch) gelegd is tussen werkstation en server, wees er dan zeker van dat een cross-over kabel gebruikt wordt. Als een hub of switch gebruikt wordt, controleer dan of gewone 'straight-through' kabels worden gebruikt tussen zowel het werkstation en de hub, als tussen de hub en de server.
Er dient te worden vastgesteld of dhcpd draait op de server. We kunnen het antwoord op een aantal manieren vinden.
dhcpd draait normaal gesproken op de achtergrond en luistert op poort 67. Probeer het commando netstat om te kijken of er iets luistert op die poort:
netstat -an | grep ":67 " |
udp 0 0 0.0.0.0:67 0.0.0.0:* |
Dat netstat laat zien dat er iets luistert op udp poort 67 betekend nog niet dat het ook dhcpd is die luistert. Het zou ook bootpd kunnen zijn, al is dat onwaarschijnlijk omdat bootpd in de meeste Linux distributies niet meer meegeleverd wordt.
Om er zeker van te zijn dat inderdaad dhcpd draait kunnen we het commando ps gebruiken.
ps aux | grep dhcpd |
root 23814 0.0 0.3 1676 820 ? S 15:13 0:00 /usr/sbin/dhcpd root 23834 0.0 0.2 1552 600 pts/0 S 15:52 0:00 grep dhcp |
Als er helemaal geen regels zijn die aangeven dat dhcpd draait, controleer dan of dhcpd geconfigureerd is om onder runlevel 5 te draaien. Op Redhat systemen kan het commando ntsysv ingetypt worden. Naar beneden scrollend kan dan gecontroleerd worden of dhcpd geconfigureerd is om op te starten.
De dhcpd daemon kan worden opgestart met het commando:
service dhcpd start |
Heeft het bestand /etc/dhcpd.conf wel voor ieder werkstation aparte instellingen?
Controleer nogmaals de 'fixed-address' instelling in het configuratiebestand om er zeker van te zijn dat die exact overeenkomt met die van de kaart in het werkstation.
Draai het volgende command en kijk naar de uitvoer:
ipchains -L -v |
Chain input (policy ACCEPT: 229714 packets, 115477216 bytes): Chain forward (policy ACCEPT: 10 packets, 1794 bytes): Chain output (policy ACCEPT: 188978 packets, 66087385 bytes): |
Draai het volgende command en kijk wat het zegt:
iptables -L -v |
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 |
Bekijk /var/log/messages terwijl het werkstation opstart. Dat kan met het volgende commando:
tail -f /var/log/messages |
server dhcpd: DHCPDISCOVER from 00:50:56:81:00:01 via eth0 server dhcpd: no free leases on subnet WORKSTATIONS server dhcpd: DHCPDISCOVER from 00:50:56:81:00:01 via eth0 server dhcpd: no free leases on subnet WORKSTATIONS |
Etherboot gebruikt TFTP om een Linux kernel op te halen van de server. Het is een vrij eenvoudig protocol maar toch zijn er soms problemen om het aan de praat te krijgen.
Als een melding zoals hieronder zichtbaar is:
Loading 192.168.0.254:/lts/vmlinuz-2.4.24-ltsp-4......... |
Als daarentegen geen puntjes verschijnen is er een probleem. Mogelijke problemen kunnen zijn:
Als tftpd niet geconfigureerd is om op te starten dan zal het zeker geen verzoeken van het werkstation kunnen beantwoorden. Om te zien of het draait kan het commando netstat worden gebruikt:
[root@bigdog]# netstat -anp | grep ":69 "
udp 0 0 0.0.0.0:69 0.0.0.0:* 453/inetd
|
Er zijn twee gebruikelijke methoden voor het opstarten van tftpd. Dat zijn inetd en het nieuwere xinetd
inetd gebruikt een configuratie bestand genaamd /etc/inetd.conf. Zorg er voor dat in dat bestand tftpd NIET uitgeschakeld is met het commentaarteken '#'. De regel zou er zo uit moeten zien:
tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd -s /tftpboot
|
xinetd gebruikt een map met aparte configuratiebestanden. Een bestand voor iedere service. Als de server xinetd gebruikt dan is er een bestand /etc/xinetd.d/tftp. Hieronder staat een voorbeeld:
service tftp
{
disable = no
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /tftpboot
}
|
De kernel moet in een map staan waar de tftp daemon toegang heeft. Indien de optie '-s' wordt meegegeven aan de tftpd daemon dan moeten alle bestandspaden die het werkstation noemt relatief zijn ten opzichte van de map /tftpboot. Dus, als de instelling voor filename in het bestand /etc/dhcpd.conf ingesteld is op /lts/vmlinuz-2.4.24-ltsp-4 , dan moet de kernelnaam zijn: /tftpboot/lts/vmlinuz-2.4.24-ltsp-4
Er zijn verschillende oorzaken waardoor het root bestandssysteem niet geladen kan worden, zoals:
Als de volgende foutmelding verschijnt:
Kernel panic: No init found. Try passing init= option to kernel. |
Als de volgende foutmelding verschijnt:
Root-NFS: Server returned error -13 while mounting /opt/ltsp/i386 |
Bekijk het bestand /var/log/messages om te zien of aanwijzingen in staan. Een melding als:
Jul 20 00:28:39 bigdog rpc.mountd: refused mount request from ws004
for /opt/ltsp/i386 (/): no export entry
|
Voor het oplossen van problemen kan NFS kan een complexe en moeilijke service zijn. Begrip van wat moet worden ingesteld en welke gereedschappen daarvoor nodig zijn, kan de diagnose aanzienlijk vereenvoudigen.
Er zijn drie daemons die op de server moeten draaien wil NFS goed werken: portmap, nfsd en mountd.
Als de volgende foutmelding verschijnt:
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 |
ps -e | grep portmap |
30455 ? 00:00:00 portmap |
netstat -an | grep ":111 " |
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN udp 0 0 0.0.0.0:111 0.0.0.0:* |
/etc/rc.d/init.d/portmap start |
NFS heeft 2 daemons die moeten draaien. nfsd en mountd. Beide worden gestart met het script /etc/rc.d/init.d/nfs.
Met het commando ps kan gecontroleerd worden of ze draaien.
ps -e | grep nfs ps -e | grep mountd |
Normaal gesproken zou in dat geval het opstartscript moeten worden gedraaid met als argument restart. Echter, om een of andere reden herstart het script /etc/rc.d/init.d/nfs niet nfsd op die manier. Alleen mountd wordt herstart (bug?). Geef daarom de volgende commando's:
/etc/rc.d/init.d/nfs stop /etc/rc.d/init.d/nfs start |
Als de daemons draaien maar NFS nog steeds niet werkt, dan moet gecontroleerd worden of zij zich hebben geregistreerd bij portmapper. Dit kan met het comando rpcinfo.
rpcinfo -p localhost |
program vers proto port 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100003 2 udp 2049 nfs 100003 3 udp 2049 nfs 100021 1 udp 32771 nlockmgr 100021 3 udp 32771 nlockmgr 100021 4 udp 32771 nlockmgr 100005 1 udp 648 mountd 100005 1 tcp 651 mountd 100005 2 udp 648 mountd 100005 2 tcp 651 mountd 100005 3 udp 648 mountd 100005 3 tcp 651 mountd 100024 1 udp 750 status 100024 1 tcp 753 status |
Oh Jee! Waarschijnlijk is het goed configureren van de X server het moeilijkste onderdeel van het installatie van een LTSP werkstation. Als een tamelijk nieuwe videokaart gebruikt wordt, met een relatief nieuwe monitor die een grote range aan frequenties en resoluties aan kan, dan is het vrij makkelijk. Als het dan niet werkt is de oorzaak meestal een verkeerde X server voor de betreffende kaart.
Als een X server niet werkt met een kaart is dat meestal wel duidelijk. De X server start niet of de weergave is niet goed.
Als een werkstation de X server gaat opstarten, wordt het script startx aangeroepen met de optie -query, wijzend naar een server een displaymanager zoals bv XDM, GDM or KDM draait
De X server wordt opgestart door het script startx dat op zijn beurt weer wordt opgestart door het programma init. Als het startx script faalt dan start init tot 10 keer toe het script opnieuw op. Uiteindelijk geeft init het op en blijft een foutmelding op het scherm achter.
Wachten op een X server die 10 keer niet opstart is behoorlijk irritant. Een manier op dat te voorkomen is door het werkstation in runlevel 3 te starten zodat de X sever niet automatisch gestart wordt. In plaats daar van verschijnt een bash prompt. Vanaf de bash prompt kan de X server worden opgestart met het volgende commando:
sh /tmp/start_ws |
De displaymanager is een daemon die op de LTSP-server draait en die wacht tot een X server van een werkstation contact met hem zoekt. Als het contact gelegd is zet de displaymanager een aanmeldvenster op het scherm waarmee de gebruiker in kan loggen bij de server.
De drie meest voorkomende displaymanagers zijn:
Dit betekent dat de X server draait maar dat geen contact gelegd kon worden met de displaymanager. Mogelijke oorzaken zijn:
Op recente versies van Redhat (7.0 en hoger) wordt de displaymanager gestart vanuit init. In het bestand /etc/inittab staat een regel die er als volgt uit ziet:
x:5:respawn:/etc/X11/prefdm -nodaemon |
Wat de standaard displaymanager is hangt af van welke pakketten geïnstalleerd zijn. Als Gnome is geïnstalleerd is GDM de standaard displaymanager. Als Gnome niet is geïnstalleerd gaat prefdm kijken of KDE geïnstalleerd is. Is dat het geval dan is KDM de standaard displaymanager. Als KDE ook niet geïnstalleerd is wordt XDM de standaard displaymanager.
Met het commando netstat kan worden gecontroleerd of er een displaymanager draait. Typ op de server het volgende commando in:
netstat -ap | grep xdmcp |
udp 0 0 *:xdmcp *:* 1493/gdm |
Als je, zoals hierboven, een regel ziet die aangeeft dat er zeker een displaymanager luistert moet gecontroleerd worden of het werkstation wel zijn XDMCP verzoek naar de juiste server stuurt.
In het bestand lts.conf kan met een item worden opgegeven wat het ip-adres is van de server waar de displaymanager draait. Het item hoeft niet aanwezig te zijn maar als het er is moet het er als volgt uit zien:
XDM_SERVER = 192.168.0.254 |
Als het item 'XDM_SERVER' niet aanwezig is wordt de waarde van 'SERVER' gebruikt. Als ook die ontbreekt wordt 192.168.0.254 gebruikt.
Hoe het ook wordt aangegeven, zorg er in ieder geval voor dat het opgegeven ip-adres echt van een server is waarop de displaymanager draait.
Als vastgesteld is dat de displaymanager draait, kan het zijn dat hij ingesteld is om XDMCP verzoeken van buiten te negeren. Dat kan in de configuratie bestanden van de betreffende displaymanager worden gecontroleerd.
In Redhat wordt standaard de mogelijk voor extern aanmelden uitgeschakeld. Het commando ltsp_initialize zou dit moeten inschakelen maar als dat niet werkt kan het bestand /etc/X11/xdm/xdm-config handmatig worden aangepast. Zoek naar een regel die er ongeveer als volgt uit ziet:
DisplayManager.requestPort: 0 |
Er is nog een belangrijk configuratiebestand dat nodig is om XDM te laten luisteren naar externe aanmeldingsverzoeken. In het bestand /etc/X11/xdm/Xaccess MOET een regel staan die start met het '*' teken. De regel staat normaal al in het bestand maar Redhat kommenteerd hem uit. Het script ltsp_initialize schakelt de regel weer in maar als XDM toch niet werkt moet dit bestand worden gecontroleerd. Een geldige regel ziet er als volgt uit:
* #any host can get a login window |
Nieuwe versies van KDM kennen het configuratiebestand kdmrc. Verschillende Linux distributies plaatsen het bestand op verschillende locaties. In redhat 7.2 is de bestandsnaam /etc/kde/kdm/kdmrc. In ander distributies kan met het commando locate het bestand worden getraceerd.
Het gedeelte waar extern aanmelden voor werkstations kan worden ingesteld is de sectie [Xdmcp]. Zorg ervoor dat Enable = true.
Oudere versies van KDM gebruiken de configuratiebestanden van XDM in /etc/X11/xdm.
GDM gebruikt een andere groep configuratiebestanden. Ze staan in de map: /etc/X11/gdm
Het belangrijkste bestand is gdm.conf. Localiseer de sectie: [xdmcp]. Daar staat een instelling met de naam 'Enable' die op '1' of 'true' moet staan afhankelijk van de GDM versie. Hier is een voorbeeld:
[xdmcp] Enable=true HonorIndirect=0 MaxPending=4 MaxPendingIndirect=4 MaxSessions=16 MaxWait=30 MaxWaitIndirect=30 Port=177 |
Let op de regel 'Enable=true'. Ouder GDM versies gebruiken '0' of '1' voor Disable en Enable. Nieuwere versies gebruiken 'False' en 'True'.
Ten aanzien van de kernel versie die op een werkstation draait kunnen een aantal keuzes gemaakt worden. Er kan gekozen worden tussen de standaard kernels die voor download beschikbaar zijn, of voor het zelf compileren van de kernel. Bovendien kan gekozen worden voor het weergeven van een grafisch scherm met voortgangsbalk tijdens het opstarten door middel van de Linux Progress Patch (LPP).
Het kernel pakket van LTSP bevat twee kernels. Een met, en een zonder 'Linux Progress Patch'.
Voor beide kernels is de NFS swap patch al toegepast.
De LTSP kernel kan op twee manier worden geconfigureerd. De standaardmethode is met een zogenaamde 'Initial Ram Disk' (in het kort: initrd), een RAM opstartschijf. Het initrd is een klein bestandssysteem image dat in de kernel ingebouwd wordt. Als de kernel opstart wordt dit bestandssysteem als root bestandssysteem in het RAM geheugen geladen. Er zijn een aantal voordelen aan het gebruik van dit rdinit bestandssysteem. De eerste is dat netwerkdrivers als modules kunnen worden geladen tijdens het opstarten. Hierdoor kan met een standaard kernel een onbeperkt assortiment aan netwerkkaarten ondersteund worden. Een ander voordeel is dat de dhcp-client als gewone gebruiker ('in user space') in plaats van als root gedraaid kan worden. Hierdoor is er meer controle over de DHCP-instellingen door de server. Bijkomend voordeel is dat kernel iets kleiner wordt. De andere methode waarmee de kernel kan worden geconfigureerd is zonder initrd. In dat geval moet de specifieke driver voor de netwerkkaart statisch worden meegelinkt in de kernel. Ook moeten de opties 'IP-autoconfig' en 'Root filesystem on NFS' worden ingeschakeld voordat de kernel wordt gecompileerd. Het voordeel van het weglaten van initrd is een iets kleinere kernel en een iets versnelde opstartprocedure. Als het werkstation eenmaal draait is er vrijwel geen verschil meer tussen de twee methodes.
De standaard LTSP kernel bevat een Initial Ramdisk (initrd) die zorgt voor het detecteren van de netwerkkaart en voor het uitvoeren van het eerste dhcp-verzoek. Het doel was deze kernel zo klein mogelijk te maken. Daarom werd uClinux gebruikt als bibliotheek voor libc, en werd busybox gekozen voor de hulpprogramma's die voor het opstarten nodig zijn.
Voor het zelf maken van kernels kan het pakket 'ltsp-initrd-package' opgehaald worden. Dit pakket bevat de hiërarchie van het root bestandssysteem alsmede een script voor het aanmaken van het image.
Als u een aangepaste kernel wilt maken dan is het meestal een goed idee om met een 'schone' versie van de broncode van ftp.kernel.org te beginnen. In de meeste distributies zijn namelijk patches toepast op de broncode die voor download beschikbaar is, waardoor de broncode niet meer exact gelijk is aan de officiële distributie.
Kies een broncodepakket en bewaar deze in de map /usr/src. De kernels worden opgeslagen in de map /pub/linux/kernel van de FTP-server ftp.kernel.org. U moet beslist een kernel uit de recente 2.4.x serie nemen in verband met de ondersteuning voor devfs.
Als u ook nog ondersteuning voor NFS swap en de Linux Progress Patch (LPP) wilt geven moet u er voor zorgen dat de benodigde patches bij de kernel broncode passen. Om het moment van dit schrijven is de nieuwste kernel versie die u kunt gebruiken versie 2.4.9.
Voor dit voorbeeld wordt kernel versie 2.4.9 gebruikt. De volledige padnaam voor deze kernel is: ftp://ftp.kernel.org/pub/linux/kernel/v2.4/linux-2.4.9.tar.bz2
Plaats de broncode van de kernel in de map /usr/src. Let op! Als het bestand met untar wordt uitgepakt wordt de broncode in de map linux geplaatst. Als deze map al bestaat wordt de eventuele inhoud overschreven! Hernoem de map voordat het bestand wordt uitgepakt.
Het broncodepakket is gecomprimeerd met het commando bzip2. Het moet daarom eerst worden ge- decomprimeerd voordat het wordt uitgepakt met het commando tar. Het de-comprimeren en uitpakken kan met het volgende commando:
bunzip2 <linux-2.4.9.tar.bz2 | tar xf - |
mv linux linux-2.4.9 |
cd linux-2.4.9 |
Meestal verander ik nog wat aan de Makefile voordat ik verder ga met het configureren van de nieuwe kernel. Aan het begin van het bestand staat een variabele genaamd EXTRAVERSION. Deze zet ik op 'ltsp-1', zodat het versienummer van de kernel wordt: '2.4.9-ltsp-1'. Dit is handig om de kernel later makkelijk te kunnen identificeren. Het begin van de Makefile zou er ongeveer als volgt uit moeten zien:
VERSION = 2 PATCHLEVEL = 4 SUBLEVEL = 9 EXTRAVERSION = -ltsp-1 KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION) |
Na het uitpakken van de kernel is het tijd om de verschillende patches toe te passen. Voorbeelden hiervan zijn de NFS swap patch en de Linux Progress Patch. Deze Patches MOETEN worden uitgevoerd voordat de kernel verder wordt geconfigureerd.
De NFS Swap patch maakt het mogelijk dat het werkstation een swap bestand gebruikt dat op een NFS server staat. Ofschoon het aangeraden wordt om een werkstation met voldoende geheugen uit te rusten, zodat een swapbestand helemaal niet nodig is, kan het met name in oudere machines moeilijk zijn het geheugen uit te breiden. Met behulp van een swapbestand op een NFS server kan een anders onbruikbare machine toch nog van dienst zijn.
Als de huidige map gelijk is aan /usr/src/linux-2.4.9, en de patch staat in /usr/src, dan kan de patch met volgende commando worden getest:
patch -p1 --dry-run <../linux-2.4.9-nfs-swap.diff |
patch -p1 <../linux-2.4.9-nfs-swap.diff |
De Linux Progress Patch maakt het mogelijk een grafisch logo weer te geven tijdens het opstarten van het werkstation. De opstartmeldingen die gewoonlijk over het scherm heen lopen worden naar een ander tty scherm omgeleid. Speciale instructies in het opstartscript zorgen ervoor dat de voortgangsbalk aangeeft hoe ver het opstarten gevorderd is.
Net als de NFS swap patch kan de LPP patch worden getest met het commando:
patch -p1 --dry-run <../lpp-2.4.9 |
patch -p1 <../lpp-2.4.9 |
Het configureren van de opties voor een nieuwe kernel kan op verschillende manieren:
Dit start het X-Windows programma voor het configureren van kernelopties.
Dit start het tekstscherm gebaseerde programma voor het configureren van de kernelopties.
Dit start het meest eenvoudige programma voor het instellen van kernelopties. De opties worden regel voor regel gepresenteerd.
Voor het configureren van een kernel met initrd moeten de volgende opties worden ingesteld:
/dev file system support moet worden ingeschakeld. Dit gebeurt in de sectie 'File systems'. 'Autmatically mount at boot' moet NIET worden ingeschakeld! Het aankoppelen van het bestandssysteem wordt verzorgd door het script /linuxrc.
De kernel van een werkstation moet het gebruik van een RAM disk ondersteunen. Dit kan worden ingeschakeld in de sectie 'Block devices'.
Dit moet worden ingeschakeld.
U moet er zeker van zijn dat de nieuwe kernel kan draaien op de CPU van het werkstation. Dit kan worden ingesteld in de sectie 'Processor type and features'. Meestal moet ook de ondersteuning voor SMP worden uitgeschakeld, tenzij er meerdere CPU's in het werkstation zitten.
Het werkstation koppelt zijn root bestandssysteem via NFS, dus 'NFS client support' moet worden ingeschakeld.
De configuratie van een kernel zonder initrd verschilt in een aantal opzichten van de configuratie van een kernel met initrd:
De kernel van een LTSP werkstation moet het gebruik van een RAM disk ondersteunen.
Dit moet worden uitgeschakeld.
Dit moet worden ingeschakeld. Hierdoor zal de kernel automatisch de eth0 interface configureren met behulp van parameters die zijn meegegeven op de commando regel voor het opstarten van de kernel.
Het is niet nodig DHCP, BOOTP of RARP opties op te geven. De Etherboot bootrom heeft namelijk al een DHCP, BOOTP of RARP verzoek gedaan en de daarmee verkregen IP parameters worden via de commandoregel aan de kernel meegegeven. Dit zorgt ervoor dat de kernel niet zelf nog op ontdekkingstocht moet.
Als geen initrd gebruikt wordt moet de netwerkkaart statisch worden meegelinkt in de kernel. Dit MOET echt omdat de netwerkkaart nodig is voor het root bestandssysteem wordt aangekoppeld. Dit is een van de belangrijkste verschillen tussen een kernel met en zonder initrd.
Vanaf LTSP versie 2.09pre2 is ondersteuning voor devfs nodig. Dit geldt zowel voor kernels met, als voor kernels zonder initrd.
Als initrd niet wordt gebruikt moet het /dev bestandssysteem door de kernel zelf worden aangekoppeld. Zet deze optie daarom op 'Y'.
Het root bestandssysteem wordt door het werkstation via NFS aangekoppeld dus moet 'NFS client support' worden ingeschakeld.
Om een en ander te vergemakkelijken is een kopie van het bestand .config opgenomen in het ltsp_initrd_kit pakket. Dit bestand kan worden gekopiëerd naar de map /usr/src/linux-2.4.9 .
Wanneer het instellen van de kernel opties klaar is kan worden begonnen met compileren. De volgende commando's moeten daarvoor worden uitgevoerd:
make dep make clean make bzImage make modules make modules_install |
make dep && make clean && make bzImage && make modules && make modules_install |
Als het compileren klaar is de bestandsnaam van de nieuwe kernel /usr/src/linux-2.4.9/arch/i386/boot/bzImage.
Een kernel die door etherboot moet worden gebruikt heeft nog een speciale behandeling nodig. Dit heet het 'merken' (in het Engels 'tagging') van de kernel. Hiermee wordt een stukje extra code aan de kernel vastgeplakt die wordt uitgevoerd voordat de controle aan de kernel wordt overgedragen. Het programma waarmee de kernel kan worden gemerkt heet 'mknbi-linux'.
In het pakket ltsp_initrd_kit is shell script buildk opgenomen waar alle commando's in staan die nodig zijn voor het prepareren van een kernel ten behoeve van het opstarten van een netwerk.
Toen wij LTSP ontwierpen was een van de dingen waar we rekening mee moesten houden de diversiteit in hardware van de werkstations. In drie maanden tijd zouden de processor, video- en netwerkkaart van de nieuw aan het netwerk toe te voegen werkstations volledig verschillen van de eerste werkstations.
Daarom ontwierpen we een manier om de configuratie van ieder werkstation op te geven. Het configuratiebestand heet lts.conf, en staat in de map /opt/ltsp/i386/etc.
De opmaak van lts.conf maakt het mogelijk zowel standaard als individuele werkstation instellingen op te geven. Als alle werkstations identiek zijn, kan worden volstaan met de configuratie-instellingen in de sectie '[Default]'.
Hier is een voorbeeld van een lts.conf bestand:
[Default]
SERVER = 192.168.0.254
X_MOUSE_PROTOCOL = "PS/2"
X_MOUSE_DEVICE = "/dev/psaux"
X_MOUSE_RESOLUTION = 400
X_MOUSE_BUTTONS = 3
USE_XFS = N
SCREEN_01 = startx
[ws001]
XSERVER = auto
X_MOUSE_PROTOCOL = "Microsoft"
X_MOUSE_DEVICE = "/dev/ttyS1"
X_MOUSE_RESOLUTION = 50
X_MOUSE_BUTTONS = 3
X_MOUSE_BAUD = 1200
[ws002]
XSERVER = XF86_Mach64
[ws003]
SCREEN_01 = shell
|
Commentaar begint met een hekje '#' en loopt door tot het einde van de regel.
Dit geeft aan waar het LTSP root bestandssysteem zich bevindt. De standaard waarde is /opt/ltsp.
Dit is de server die gebruikt wordt voor de XDM_SERVER, TELNET_HOST, XFS_SERVER en de SYSLOG_HOST. Tenminste, als deze niet apart worden opgegeven. Als er een server is voor alle taken dan kan dat hier worden opgegeven. De andere serverparameters kunnen dan weggelaten worden. Als geen waarde wordt opgegeven dan wordt 192.168.0.254 gebruikt.
Indien de log meldingen naar een andere dan de standaard server moeten worden gestuurd kan dat hier worden opgegeven. Standaard wordt 'SERVER' gebruikt.
Het ip-adres van de NFS server indien de map /home moet worden aangekoppeld. Standaard wordt 'SERVER' gebruikt.
Zet deze parameter op Y om NFS swap te gebruiken. Standaardwaarde is N.
Dit stelt de grootte van het swapbestand in. Standaard is 64m.
Het swapbestand kan op iedere server staan die daarmee om kan gaan. Hier kan het adres van die server worden opgegeven. De standaardwaarde is gelijk aan de waarde die voor NFS_SERVER is ingesteld.
De naam van de map op de server die wordt geëxporteerd door NFS. De standaardwaarde is /var/opt/ltsp/swapfiles. Zorg er voor dat deze map ook in het bestand /etc/exports wordt genoemd.
Indien het werkstation als tekstgebaseerde terminal wordt geconfigureerd, wordt deze waarde gebruikt als de host (of server) waarmee een telnet-sessie wordt gestart. Als deze parameter NIET wordt ingesteld dan wordt de waarde voor SERVER gebruikt.
Wordt gebruikt om het bestand resolv.conf aan te maken.
Wordt gebruikt om het bestand resolv.conf aan te maken.
Er kan een maximum van 12 schermscripts worden opgegeven per werkstation. Dit resulteert in de mogelijkheid voor 12 sessies op het werkstation. Wisselen tussen sessie kan met Ctrl-Alt-F1 tot en met Ctrl-Alt-F12.
SCREEN_01 = startx SCREEN_02 = shell |
Op dit moment zijn de volgende waarden mogelijk.
Met deze items kunnen maximaal 10 modules worden opgegeven die moeten worden geladen. De volledig commandoregel die voor insmod nodig zou zijn kan worden opgegeven. Bijvoorbeeld:
MODULE_01 = uart401.o MODULE_02 = "sb.o io=0x220 irq=5 dma=1" MODULE_03 = opl3.o |
Indien de opgegeven parameter waarde een volledige padnaam is, wordt het commando insmod gebruikt om de module te laden. Anders wordt het commando modprobe gebruikt.
Als het werkstation opstart wordt een ramdisk aangemaakt die als /tmp wordt aangekoppeld. De grootte van die ramdisk kan met deze parameter worden ingesteld. De grootte wordt opgeven in kilobytes (1024 bytes). Geef RAMDISK_SIZE = 1024 op om een ramdisk van 1 megabyte te maken.
Als de groote van de ramdisk hier wordt veranderd moet dat ook worden veranderd in de kernel. Dit kan in de kernel worden ingecompileerd, of, indien Etherboot of Netboot wordt gebruikt, de ramdisk size kan aan de kernel worden kenbaar gemaakt door deze op een aangepaste manier te 'merken' met mknbi-linux.
De standaard waarde voor deze parameter is 1024 ( 1 mb )
Het script rc.local kan extra RC scripts uitvoeren. Zet de scripts in de map /etc/rc.d en geef de naam van het script met deze parameter.
Indien het LTSP Sound pakket (Geluidsondersteuning) is geïnstalleerd moet deze paramater op Y worden ingesteld. In dat geval wordt het script rc.sound uitgevoerd om de geluidskaart en de daemon op te starten. De standaardwaarde is N.
Indien XDM gebruik moet maken van een andere dan de standaard server kan dat met deze parameter worden ingesteld. Als de waarde NIET is ingesteld wordt de instelling van 'SERVER' gebruikt.
Dit definieert de X server die het werkstation gebruikt. Voor PCI en AGP videokaarten is deze instelling meestal niet nodig omdat het script rc.local die wel goed kan detecteren. De waarde kan op auto gezet worden om aan te geven dat automatische detectie gebruikt moet worden.
Voor ISA kaarten, of in andere gevallen waarin dat nodig is, kan de naam van de driver of X server worden opgegeven.
Als de waarde begint met XF86_ dan wordt XFree86 3.3.6 gebruikt. Anders wordt X.org 6.7.0 gebruikt. De standaardwaarde voor deze parameter is auto.
Er kunnen maximaal 3 'modelines' worden opgegeven. Een modeline kan twee verschillende types invoer bevatten: een resolutie of een volledige modeline.
X_MODE_0 = 800x600
of
X_MODE_0 = 800x600 60.75 800 864 928 1088 600 616 621 657 -HSync -VSync
|
Indien geen X_MODE_x parameter wordt ingesteld dan worden ingebouwde modelines gebruikt met de resoluties 1024x768, 800x600 and 640x480.
Indien een of meer X_MODE_x parameters worden opgegeven hebben die voorrang op de ingebouwde modelines.
Alle waarden die toepasbaar zijn voor het X.org protocol voor aanwijsapparaten kunnen hier ook worden gebruikt. Typische waarden zijn: "Microsoft" en "PS/2". De standaardwaarde is "PS/2".
Dit is de poort waar de muis op aangesloten is. Voor een seriële muis is dat een seriële poort zoals /dev/ttyS0 of /dev/ttyS1. Voor een PS/2 muis is de waarde /dev/psaux. De standaardwaarde is /dev/psaux .
Dit is de waarde voor de 'Resolution' parameter in het bestand XF86Config. Voor een seriële muis is de gebruikelijke waarde 50, voor een PS/2 muis 400. De standaardwaarde is 400.
Deze parameter vertelt het systeem hoeveel knoppen de muis heeft. Wordt meestal op 2 of 3 gezet. De standaard waarde is 3.
Deze parameter vertelt het systeem een 3 knops muis te emuleren door middel van het gelijktijdig indrukken van de linker en rechter muisknop. De standaard waard is N.
De baudrate van de seriële muispoort. De standaard waarde is 1200.
Dit is het aantal bits voor de kleurdiepte. Mogelijke waarden zijn 8, 15, 16, 24 en 32. 8 bits geeft 256 kleuren, 16 geeft 65536 kleuren, 24 geeft 16 miljoen kleuren en 32 bits geeft 4.2 miljard kleuren! Niet alle X server accepteren alle waarden. De standaard waarde is 16.
Er is een keuze mogelijk tussen het gebruiken van de Z Font Server (XFS) of het het uitlezen van de fonts via het NFS bestandssysteem. Met de Fontserver kunnen in principe op een eenvoudige manier alle fonts op een plaats worden beheerd. Er zijn echter wat problemen als het aantal werkstations boven de 40 komt. De twee waarden voor deze parameter zijn Y en N. De standaardwaarde is N. Indien voor een fontserver gekozen wordt, kan met de parameter XFS_SERVER worden ingesteld om welke computer het dan gaat.
Indien een X Font Server wordt gebruikt om fonts aan te leveren kan dit worden opgegeven met deze parameter het ip-adres van de fontserver worden opgegeven. Als er niets wordt opgegeven dan wordt de waarde voor SERVER gebruikt.
Dit stelt de HorizSync parameter in van het X.org configuratiebestand. De standaardwaarde is "31-62".
Dit stelt de VertRefresh parameter in van het X.org configuratiebestand. De standaardwaarde is "55-90".
Het is ook mogelijk een volledig zelfgemaakt XF86Config bestand te gebruiken. Het bestand moet dan in de map /opt/ltsp/i386/etc worden gezet en de naam moet worden meegegeven met dit item. De keuze van de bestandsnaam is vrij. Een voorbeeld:
XF86CONFIG_FILE = XF86Config.ws004 |
Indien een zogenaamd 'touch screen' (aanraakscherm) wordt gebruikt kan dat worden aangegeven via dit item met de waarde Y. In dat geval kunnen specifieke instellingen van het touchscreen worden opgegeven met extra items. De standaardwaarde is N.
Een touch screen werkt als een muis en wordt meestal ook via een seriële poort met het werkstation worden verbonden. Met dit item kan opgegeven worden welke seriële poort zoals /dev/ttyS0. Er is geen standaardwaarde voor dit item.
Een calibratiewaarde voor een EloTouch touch screen. Standaard 433.
Een calibratiewaarde voor een EloTouch touch screen. Standaard 3588.
Een calibratiewaarde voor een EloTouch touch screen. Standaard 569.
Een calibratiewaarde voor een EloTouch touch screen. Standaard 3526.
Een calibratiewaarde voor een EloTouch touch screen. Standaard 10.
Een calibratiewaarde voor een EloTouch touch screen. Standaard 10.
Als de werkstations in staat moeten zijn om lokaal toepassingen te draaien moet dit item op Y worden gezet. Zie het onderdeel 'Lokale Applicaties' in de LTSP handleiding. Daarna moeten nog een aantal acties worden ondernomen op de server. De standaard waarde is N.
Voor het gebruik van LOCAL_APPS is een NIS server op het netwerk nodig. Met het item NIS_DOMAIN wordt de NIS domeinnaam opgegeven. Deze moet overeenkomen met de domeinnaam die op de server is gedefinieerd. Dit is NIET het zelfde als het internet domein!. De standaardwaarde is ltsp.
Stel dit item in op het ip-adres van de NIS server als een broadcast naar deze sever ongewenst is.
Alle bestanden voor toetsenbordondersteuning worden in de /opt/ltsp/i386 mapstructuur geplaatst waardoor het configureren van een toetsenbord neerkomt op het configureren van X.org. Hiervoor zijn een aantal parameters beschikbaar.
De waarden van de bovengenoemde parameters komen uit de documentatie van X.org. Wat voor X.org geldig is geldt ook voor deze parameters.
We zouden hier graag documentatie toevoegen over de waarden die nodig zijn voor het configureren van ieder type internationaal toetsenbord. Als u hiermee werkt en u heeft het toetsenbord goed geconfigureerd dan zouden de LTSP ontwikkelgroep uw feedback zeer op prijs stellen.
De standaardwaarde hiervoor is het woord default '.
De standaardwaarde hiervoor is het woord 'default '.
De standaardwaarde hiervoor is 'us(pc101)'.
De standaardwaarde hiervoor is 'pc101'.
De standaardwaarde hiervoor is 'us'.
Er kunnen maximaal 3 printers op het werkstation worden aangesloten. Met de volgende items in het bestand lts.conf kan een combinatie van seriële en parallelle printers worden ingesteld:
De device naam van de eerste printer. Het gaat om namen als: /dev/lp0, /dev/ttyS0 of /dev/ttyS1.
Het type printer. Geldige keuzes zijn: 'P' voor Parallel, en 'S' voor Serieel.
HEt TCP/IP poortnummer. Standaard wordt de waarde ' 9100' gebruikt.
Als het een seriële printer betreft kan hier de instelling voor baudrate opgegeven worden. De standaardwaarde is ' 9600'.
Voor seriële printers kan hier de flowcontrol worden opgegeven. Ofwel 'S' voor Software (XON/XOFF) flow control, ofwel 'H' voor Hardware (CTS/RTS) flow control. Als geen van beide wordt opgegeven wordt standaard ' S' gebruikt
Voor seriële printers kan hier de pariteit worden ingesteld. De mogelijke keuzes zijn: 'E'-Even, ' O'-Odd of 'N'-None. Indien niets wordt opgegeven wordt 'N' gebruikt.
Voor seriële printers kan hier het aantal databits worden ingesteld. Mogelijke keuzes zijn: '5', ' 6', '7' en '8'. Indien niet opgegeven wordt '8' gebruikt.
Tweede printer device naam
Tweede printer device type
Tweede printer device TCP/IP poort
Tweede printer baud rate instelling (serieel)
Tweede printer flow control instelling (serieel)
Tweede printer pariteit instelling (serieel)
Second printer data bits (serial)
Derde printer device naam
Derde printer device type
Derde printer device TCP/IP poort
Derde printer baud rate instelling (serieel)
Derde printer flow control instelling (serieel)
Derde printer pariteit instelling (serieel)
Derde printer data bits instelling (serieel)
Binnen een LTSP omgeving kunnen toepassingen zowel lokaal als op afstand, dwz op de server, draaien.
Het is verreweg het eenvoudigst om een LTSP omgeving in te richten waarbij de toepassingen op de server draaien. Dat betekent dat de toepassingen ook de CPU en het geheugen van de server tot hun beschikking hebben, en dat van het werkstation het scherm, toetsenbord en muis worden gebruikt.
Dit is een functionaliteit die eigen is aan X windows. Het werkstation werkt als een standaard 'X Windows terminal'.
Als een gebruiker een toepassing op het werkstation wil laten uitvoeren moet het werkstation een aantal dingen van de gebruiker weten zoals:
Er zijn voordelen aan het laten uitvoeren van toepassingen op het werkstation.
Het gebruik van lokale toepassingen stelt echter ook bepaalde eisen.
In het bestand lts.conf moeten een paar items worden ingesteld:
Dit item moet op Y worden gezet. Hierdoor wordt de volgende opeenvolging van acties uitgevoerd tijdens het opstarten van het werkstation:
Met NIS moeten alle computers die bij een specifieke NIS server willen horen onder hetzelfde NIS domein vallen (dit is niet hetzelfde als het DNS domein) Met NIS_DOMAIN kan worden aangegeven tot welk NIS domein een computer behoort.
NIS kan zich direct bij een specifieke NIS-server aanmelden, of het kan een broadcast uitzenden om een server te zoeken. Als u een bepaalde server wilt kiezen kan het hostadres van die server met de parameter NIS_SERVER worden opgegeven.
NIS is een service met clients en servers. Op de server draait een daemon die verzoeken van werkstations accepteerd. Die daemon heet ypserv.
Op het werkstation draait een proces genaamd ypbind. Als het werkstation informatie over een bepaalde gebruiker wil opzoeken, bijvoorbeeld voor het controleren van een wachtwoord, wordt met ypbind een verbinding gemaakt met ypserv op de server.
Indien NIS al op het netwerk aanwezig is hoeft NIS niet op de LTSP server geïnstalleerd te worden. De items NIS_DOMAIN en NIS_SERVER in het bestand lts.conf kunnen in dat geval gebruikt worden om aan te sluiten bij de bestaande NIS configuratie.
Als NIS nog NIET op het netwerk aanwezig is moet de server worden geconfigureerd om ypserv op te starten.
Voor een volledige uiteenzetting over het opzetten van een NIS server wordt verwezen naar The Linux NIS(YP)/NYS/NIS+HOWTO op de LDP website. Onder aan dit document staat een lijst met verwijzingen voor verdere informatie.
Om een toepassing te kunnen laten draaien op een werkstation moeten alle componenten van die toepassing op een plaats worden gezet waar het werkstation ze kan vinden.
In oudere versies van LTSP (2.08 en eerder) werden een heleboel mappen door de server geëxporteerd en vervolgens door het werkstation aangekoppeld. Het ging dan om mappen als /bin , /usr/bin, /lib en /usr.
Het probleem met deze werkwijze is dat het alleen werkt als de server en het werkstation dezelfde architectuur hebben. Zelfs kleine verschillen als een Pentium II (i686) op de server en en klassieke Pentium (i586) op het werkstation zijn problematisch omdat de server waarschijnlijk alleen de i686 bibliotheken heeft en niet de i386, i486, en i586 bibliotheken.
Dit probleem is opgelost als de server over een volledige mapstructuur beschikt met alle programma's en bibliotheken voor een specifiek werkstation. Deze bestanden zijn onafhankelijk van de programma's en bibliotheken van de server zelf.
Voor het lokaal uitvoeren van een toepassing is het nodig alle benodigde programmaonderdelen in die mapstructuur te plaatsen. Een van de LTSP pakketten die voor download beschikbaar is, is het 'Local Netscape pakket'. Dit pakket installeert een aanzienlijke hoeveelheid files in de map /opt/ltsp/i386/usr/local/netscape . Het gaat om java classes, hulpbestanden, programmabestanden en scripts die in de genoemde map worden geïnstalleerd.
Netscape heeft geen extra systeembibliotheken nodig, dus er wordt niets in de map /opt/ltsp/i386/lib geplaatst. Een hoop toepassingen hebben echter wel extra bibliotheken nodig.
Hoe kan nu worden bepaald welke bibliotheken voor een toepassing nodig zijn? Welnu, daar kan het commando ldd voor worden gebruikt.
Stel dat we een bepaalde toepassing lokaal willen draaien. Als voorbeeld nemen we gaim. Dat is een AOL instant messaging client die het mogelijk maakt met andere mensen op een AOL forum te communiceren.
Eerst moet de locatie van het gaim programma bestand worden vastgesteld. Op een Redhat 7.2 systeem is dat in de map /usr/bin.
Als de locatie gevonden is kan ldd op de volgende manier worden aangeroepen:
[jam@server /]$ ldd /usr/bin/gaim
libaudiofile.so.0 => /usr/lib/libaudiofile.so.0 (0x40033000)
libm.so.6 => /lib/i686/libm.so.6 (0x40051000)
libnsl.so.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.so.6 => /usr/X11R6/lib/libSM.so.6 (0x40191000)
libICE.so.6 => /usr/X11R6/lib/libICE.so.6 (0x4019a000)
libgtk-1.2.so.0 => /usr/lib/libgtk-1.2.so.0 (0x401b1000)
libdl.so.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.so.6 => /usr/X11R6/lib/libXi.so.6 (0x4031d000)
libXext.so.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.so.0 => /usr/lib/libgnomesupport.so.0 (0x40429000)
libesd.so.0 => /usr/lib/libesd.so.0 (0x4042e000)
libdb.so.2 => /usr/lib/libdb.so.2 (0x40436000)
libglib-1.2.so.0 => /usr/lib/libglib-1.2.so.0 (0x40444000)
libcrypt.so.1 => /lib/libcrypt.so.1 (0x40468000)
libc.so.6 => /lib/i686/libc.so.6 (0x40495000)
libz.so.1 => /usr/lib/libz.so.1 (0x405d1000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
|
De uitdraai hierboven laat alle gedeelde bibliotheken zien die voor het draaien van het programma gaim nodig zijn.
De meeste programma's die gedeelde bibliotheken gebruiken vertrouwen op ld-linux om de benodigde bibliotheken te lokaliseren en te laden. Echter, sommige programma's laden hun bibliotheken handmatig, met de functieaanroep dlopen(). Voor die toepassingen werkt ldd niet. In dat geval moet het commando strace gebruikt worden. Dit laat alle dlopen() aanroepen zien, met de naam naam van de bibliotheken.
Als de lijst met bibliotheken uiteindelijk compleet is, moeten de betreffende bibliotheken gekopiëerd worden naar de juiste plaats in de /opt/ltsp/i386 mapstructuur.
Normaal gesproken draaien toepassingen in X Windows op dezelfde plaats als waar de windowmanager draait. Dat wil zeggen: als de windowmanager op de server draait dan draaien opgestarte toepassingen ook op de server. Hun schermuitvoer wordt doorgestuurd naar het werkstation.
Er is een truc nodig om het programma door het werkstation uit te laten voeren. Dit kan met het commando rsh.
Hier is een voorbeeld hoe het gaim programma op het werkstation kan worden opgestart:
HOST=`echo $DISPLAY | awk -F: '{ print $1 }'`
rsh ${HOST} /usr/bin/gaim -display ${DISPLAY}
|
Het bovenstaande voorbeeld kan in een xterm venster worden ingetoetst, of het kan in een shell script worden gezet dat via een ikoon op de desktop kan worden aangeroepen.
Het opstarten van Netscape gebeurt op ongeveer dezelfde manier, maar er is een extra omgevingsvariabele nodig die eerst moet worden gedefinieerd.
HOST=`echo $DISPLAY | awk -F: '{ print $1 }'`
rsh ${HOST} MOZILLA_HOME=/usr/local/netscape \
/usr/local/netscape/netscape -display ${DISPLAY}
|
Bijna alle onderdelen van het werkstation kunnen worden ingesteld met items in het bestand lts.conf dat meestal staat in de map /opt/ltsp/i386/etc.
Hier een voorbeeld van lts.conf items voor een tweeknops seriële muis:
X_MOUSE_PROTOCOL = "Microsoft" X_MOUSE_DEVICE = "/dev/ttyS0" X_MOUSE_RESOLUTION = 400 X_MOUSE_BUTTONS = 2 X_MOUSE_EMULATE3BTN = Y |
Hier een voorbeeld van de lts.conf items voor een Intellimouse:
X_MOUSE_PROTOCOL = "IMPS/2" X_MOUSE_DEVICE = "/dev/psaux" X_MOUSE_RESOLUTION = 400 X_MOUSE_BUTTONS = 5 X_ZAxisMapping = "4 5" |
Het ThinkNIIC werkstation heeft een USB poort die voor een lokale printer gebruikt kan worden. Hier is een voorbeeld van de daarvoor benodigde instellingen in lts.conf:
MODULE_01 = usb-ohci MODULE_02 = printer PRINTER_0_DEVICE = /dev/usb/lp0 PRINTER_0_TYPE = S |
Standaard wordt X.org 6.7.0 gebruikt. Indien voor een werkstation de oudere XFree86 3.3.6 Server moet worden gebruikt moet die eerst apart worden geïnstalleerd. Vervolgens moet in het bestand lts.conf met een item de naam worden opgegeven. Hier een voorbeeld waar de SVGA X server wordt ingesteld:
XSERVER = XF86_SVGA |
www.linuxdoc.org/HOWTO/Diskless-HOWTO.html
www.xfree86.org/current/mouse.html
www.linuxdoc.org/HOWTO/XFree86-Video-Timings-HOWTO.html
Managing NFS and NIS
Hal Stern
O'Reilly & Associates, Inc.
1991
ISBN 0-937175-75-7
TCP/IP Illustrated, Volume 1
W. Richard Stevens
Addison-Wesley
1994
ISBN 0-201-63346-9
X Window System Administrator's Guide
Linda Mui and Eric Pearce
O'Reilly & Associates, Inc.
1993
ISBN 0-937175-83-8
(Volume 8 of the The Definitive Guides to the X Window System)