<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V4.1//EN">

<!-- TOCTITLE="Inhoudsopgave" -->

<book id="ltsp-4.1-0" lang="nl">

  <bookinfo>
    <title>LTSP - Linux Terminal Server Project - v4.1</title>

    <authorgroup>
        <author>
           <firstname>James</firstname>
           <surname>McQuillan</surname>
           <affiliation>
              <address><email>jam@LTSP.org</email>
              </address>
           </affiliation>
        </author>
      <othercredit>
      	<firstname>Tom</firstname>
	<surname>Welter</surname>
	<affiliation>
	  <jobtitle>Nederlandse vertaling</jobtitle>
	  <address>ltsp@startstop.nl</address>
	</affiliation>
     </othercredit>
     </authorgroup>

    <revhistory>
       <revision>
         <revnumber>4.1.3&nbsp;</revnumber>
         <date>2004-06-20</date>
         <authorinitials>jam</authorinitials>
       </revision>
 	<revision>
         <revnumber>4.1.3-1-nl&nbsp;</revnumber>
         <date>2005-03-02</date>
         <authorinitials>tgw</authorinitials>
       </revision>
    </revhistory>

    <copyright>
        <year>2004</year>
        <holder>James A. McQuillan</holder>
    </copyright>

    <abstract>
       <para>
           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.
       </para>
    </abstract>
  </bookinfo>

<preface>
    <title>Inleiding</title>

    <para>
        LTSP biedt een simpele manier voor het gebruik van goedkope
        werkstations als grafische of tekstterminals van een GNU/Linux server.
    </para>

    <para>
        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.
    </para>

    <para>
        Heeft het echt zin om zo'n zware computer op ieder bureau te hebben?
    </para>

    <para>
        Wij vinden van niet.
    </para>

    <para>
        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.
    </para>

    <para>
        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.
    </para>

    <para>
        Het werkstation kan op drie manieren worden geconfigureerd:
        <itemizedlist>
            <listitem>
                <para><command>Graphisch X Window
Systeem interface</command></para>
                <para>
                    Met X Windows kan het werkstation gebruik maken van alle
		    toepassingen op de server of op andere servers van het
		    netwerk.
                </para>
            </listitem>
        </itemizedlist>

        <itemizedlist>
            <listitem>
                <para><command>Tekst georiënteerde
telnet-sessies</command></para>
                <para>
                    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.
                </para>
            </listitem>
        </itemizedlist>

        <itemizedlist>
            <listitem>
                <para><command>Shell prompt</command></para>
                <para>
                    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.
                </para>
            </listitem>
        </itemizedlist>
    </para>

    <para>
        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.
    </para>

    <para>
        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!
    </para>

    <sect1>
        <title>Aansprakelijkheid</title>
        <para>
            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.
        </para>
    </sect1>

    <sect1 id="copyright">
        <title>Auteursrechten en licentie</title>
        <para>
            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.
        </para>
    </sect1>
</preface>

<chapter>
    <title>Hoe werkt het?</title>
    <para>
        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.
    </para>
    <para>
        Er zijn vier essentiële services nodig voor het opstarten
	van een LTSP werkstation, te weten:
        <itemizedlist>
            <listitem>
                <para>DHCP</para>
            </listitem>
            <listitem>
                <para>TFTP</para>
            </listitem>
            <listitem>
                <para>NFS</para>
            </listitem>
            <listitem>
                <para>XDMCP</para>
            </listitem>
        </itemizedlist>

    </para>

    <para>
        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.
    </para>

  <sect1>
    <title>De stappen die een werkstation doorloopt</title>

    <orderedlist spacing="normal">

        <listitem>
            <para>
                Laadt de Linux kernel in het werkstation geheugen. Dit kan op
		ver schillende manieren, waaronder:
                <orderedlist>
                  <listitem>
                    <para>
                      Bootrom (Etherboot,PXE,MBA,Netboot)
                    </para>
                  </listitem>
                  <listitem>
                    <para>
                      Floppy
                    </para>
                  </listitem>
                  <listitem>
                    <para>
                      Harde schijf
                    </para>
                  </listitem>
                  <listitem>
                    <para>
                      cdrom
                    </para>
                  </listitem>
                  <listitem>
                    <para>
                      usb-geheugen
                    </para>
                  </listitem>
                </orderedlist>
            </para>
            <para>
             Elk van bovengenoemde opstartmethodes zal later in dit hoofdstuk
	     worden uitgelegd.
            </para>
        </listitem>

        <listitem>
            <para>
                Nadat de kernel in het geheugen is geladen wordt
		hij opgestart.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                De kernel initialiseert het hele systeem en alle randapparatuur
		die herkend wordt.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                Op dit moment wordt het echt leuk. Tijdens het laden van de
		kernel wordt ook een ramdisk 'image' geladen.
		De kernel commanderegel <command>root=/dev/ram0</command>
		zorgt ervoor dat die image als root map wordt aangekoppeld.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                Normaalgesproken zal de kernel als hij klaar is met opstarten
		het programma <command>init</command> aanroepen. In dit geval
		echter, instrueren we de kernel in plaats daarvan een klein shell
		script te draaien. Dit gebeurt door op de kernel commandoregel de optie
		<command>init=/linuxrc</command> mee te geven.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
		Het <command>/linuxrc</command> script begint met het scannen van de
		PCI bus op zoek naar een netwerkkaart. Voor ieder gevonden PCI apparaat
		wordt een overeenkomstige vermelding gezocht in het bestand /etc/niclist.
		Wanneer die gevonden wordt, wordt de naam van de driver module teruggegeven
		en de betreffende netwerk kaart module wordt geladen. Voor ISA kaarten
		MOET de driver module op de kernel commando regel wordt
		gespecificeerd samen met eventueel benodigde IRQ of IO-adres parameters.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
		Vervolgens wordt een kleine dhcp-client genaamd <command>dhclient</command>
		opgestart om nogmaals een dhcp-verzoek uit te voeren. Dit
		aparte dhcp-verzoek als gewone gebruiker (in 'user-space') is nodig omdat
		meer informatie benodigd is dan dat de bootrom opgehaald had in het eerste DHCP
		verzoek.
	    </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                Nadat <command>dhclient</command> een antwoord heeft ontvangen
		van de server zal deze het script <command>/etc/dhclient-script</command>
		uitvoeren, dat de opgehaalde informatie gebruikt om de eth0 interface
		te configureren.
            </para>
            <para></para>
        </listitem>


        <listitem>
            <para>
                Tot op dit moment is het root bestandssysteem een ram disk
		geweest. Nu zal het /linuxrc script een nieuw root
		bestandssysteem gaan aankoppelen via NFS. De map die
		hiervoor gebruikelijkerwijs wordt geexporteerd door de server is
		<command>/opt/ltsp/i386</command>.
		Het nieuwe bestandssysteem kan niet zomaar als /. aangekoppeld
		worden. Het moet eerst als /mnt worden aangekoppeld. Vervolgens
		wordt <command>pivot_root</command> uitgevoerd. pivot_root
		verwisseld het huidigde bestandssysteem voor een nieuw. Als dat
		klaar is, is het NFS bestandssysteem aangekoppeld aan /, en het
		oude root bestandssysteem aan /oldroot.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                Nadat het aankoppelen en pivoteren van het nieuwe root
		bestandssyteem uitgevoerd is, is het /linuxrc shell script
		klaar en is het tijd het echte <command>/sbin/init</command>
		programma uit te voeren.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                Init leest <filename>/etc/inittab</filename> en begint
		met het opzetten van de werkstation werkomgeving.
		('environment')
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                Een van de eerste items in het inittab bestand is het
		<command>rc.sysinit</command> commando dat wordt uitgevoerd
		terwijl het werkstation in de '<emphasis role="strong">sysinit</emphasis>'
		fase is.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                Het rc.sysinit script maakt een 1 Mb ramdisk aan waarop
		dingen kunnen worden weggeschreven of gewijzigd.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
	        De ramdisk wordt aangekoppeld als de map
		<filename class="directory">/tmp</filename>.
		Alle bestanden die beschreven moeten kunnen worden
		staan in werkelijkheid in de map
		<filename class="directory">/tmp</filename>. Uiteindelijk
		verwijzen 'symbolic links' naar deze bestanden.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                Het <filename class="directory">/proc</filename> bestandssystem
                wordt aangekoppeld.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                Het bestand <filename>lts.conf</filename> en de daarin
		vermelde parameters voor het betreffende werkstation 
		worden als omgevingsvariabelen geïnitialiseerd voor
		gebruik door het script rc.sysinit.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                Indien het werkstation geconfigureerd is om over NFS
		te swappen zal de map
		<command>/var/opt/ltsp/swapfiles</command>
		gekoppeld worden als /tmp/swapfiles. Vervolgens zal indien dat
		nog niet gebeurd is, automatisch een swapfile worden
		aangemaakt. De grootte van de swapfile wordt geconfigureerd
		in <filename>lts.conf</filename>.
            </para>
            <para>
                De swapfile wordt geactiveerd met het commando
		<command>swapon</command>.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                Het <emphasis role="strong">loopback</emphasis>
		netwerk interface wordt geconfigureerd met 
		<emphasis>127.0.0.1</emphasis>
		als ip-adres.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                Indien 'Local apps' aangezet is wordt de
		map <command>/home</command>
		aangekoppeld zodat de toepassingen toegang hebben
		tot de map /home van de gebruikers.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                Verschillende mappen worden aangemaakt in het
		<filename class="directory">/tmp</filename>
		bestandssysteem ten behoeve tijdelijke bestanden
		die nodig zijn zolang het werkstation aan staat.
		Mappen zoals
                <orderedlist>
                    <listitem>
                        <para>
                            <filename>/tmp/compiled</filename>
                        </para>
                        <para></para>
                    </listitem>
                    <listitem>
                        <para>
                            <filename>/tmp/var</filename>
                        </para>
                        <para></para>
                    </listitem>
                    <listitem>
                        <para>
                            <filename>/tmp/var/run</filename>
                        </para>
                        <para></para>
                    </listitem>
                    <listitem>
                        <para>
                            <filename>/tmp/var/log</filename>
                        </para>
                        <para></para>
                    </listitem>
                    <listitem>
                        <para>
                            <filename>/tmp/var/lock</filename>
                        </para>
                        <para></para>
                    </listitem>
                    <listitem>
                        <para>
                            <filename>/tmp/var/lock/subsys</filename>
                        </para>
                        <para></para>
                    </listitem>
                </orderedlist>
            </para>
            <para></para>

            <para>
                worden aangemaakt.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                Het bestand <filename>/tmp/syslog.conf</filename>
		wordt aangemaakt.
		Dit bestand vertelt <command>syslogd</command>
		naar welke server op het netwerk de log-informatie
		gestuurd moet worden. De server voor het systeemlog wordt gespecificeerd
		in het bestand <filename>lts.conf</filename>.
		Een symbolische koppeling
		<filename>/etc/syslog.conf</filename>
		verwijst naar het bestand
		<filename>/tmp/syslog.conf</filename>.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                De <command>syslogd</command> daemon wordt opgestart,
		gebruikmakend van de instelling uit de vorige stap.
            </para>
            <para></para>
        </listitem>

        <listitem>
          <para>
               Als het rc.sysinit script klaar is wordt de controle
	       overgegeven aan het programma /sbin/init, dat het
	       runlevel verandert van <emphasis role="strong">sysinit</emphasis>
	       naar <emphasis role="strong">5</emphasis>.
          </para>
          <para>
               Hierdoor worden de in /etc/inittab geconfigureerde
	       items en scripts uitgevoerd.
          </para>
          <para></para>
        </listitem>

        <listitem>
          <para>
               Standaard is inittab ingesteld om het
	       <command>/etc/screen_session</command> script
	       uit te voeren op tt1, tty2 en tty3. Dit betekend dat
	       3 sessies tegelijkertijd worden opgestart. Het type sessie wordt
	       bepaald door de <emphasis role="strong">SCREEN_01</emphasis>,
               <emphasis role="strong">SCREEN_02</emphasis> and
               <emphasis role="strong">SCREEN_03</emphasis>
	       instellingen in <filename>lts.conf</filename>.
          </para>
          <para>
               Er kunnen indien gewenst meer regels aan
	       <filename>inittab</filename>
	       worden toegevoegd om meer sessies op te starten.
          </para>
          <para></para>
        </listitem>

        <listitem>
            <para>
		Indien <emphasis role="strong">SCREEN_01</emphasis>
		is ingesteld op de waarde
		<emphasis role="strong">startx</emphasis>
		dan wordt het script <command>/etc/screen.d/startx</command>
		uitgevoerd dat de grafische interface van
		het X Windows systeem opstart.
            </para>
            <para>
                In het bestand <command>lts.conf</command> staat een
		parameter <command>XSERVER</command>. 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 <command>/etc/vidlist</command>.
            </para>
            <para>
                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.
		<emphasis>ati</emphasis>
                of <emphasis>trident</emphasis>.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                Indien Xorg wordt gebruikt, dan wordt het script
		<command>/etc/build_x3_cfg</command>
		aangeroepen om een XF86Config bestand te maken.
		Indien XFree86 3.3.6 wordt gebruikt, dan wordt het
		script <command>/etc/build_x3_cfg</command> aangeroepen
		om het XF86Config te maken. Deze bestanden staan in
		de map <filename>/tmp</filename>, die zoals
		gezegd, een ramdisk is die alleen voor het werkstation
		zichtbaar is.
            </para>
            <para>
                Het XF86Config bestand wordt gebaseerd op de
		instellingen in het bestand <command>/etc/lts.conf</command>.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                Nadat het XF86Config bestand aangemaakt is
		start het script <command>startx</command> de X server
		op met het nieuwe configuratiebestand.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                De X server stuurt een <emphasis role="strong">XDMCP</emphasis>
		verzoek aan de LTSP server, die vervolgens een aanmeldscherm aanbiedt.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                Op dit punt aangekomen kunnen de gebruikers inloggen. Zij
		krijgen dan een sessie op de server.
            </para>
            <para>
                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.
	    </para>
            <para></para>
        </listitem>

    </orderedlist>
  </sect1>

  <sect1>
    <title>Laden van de kernel in het geheugen</title>
    <para>
      Het laden van de Linux kernel in het geheugen kan op verschillende
      manieren gebeuren.
    </para>
    <itemizedlist>
      <listitem>
        <para>Boot ROM</para>
      </listitem>
      <listitem>
        <para>Lokale media</para>
      </listitem>
    </itemizedlist>
    <para></para>

    <sect2>
      <title>Boot ROM</title>
      <itemizedlist>
         <listitem>
           <para>Etherboot</para>
           <para>
             Etherboot is een populair open-source bootrom project.
	     Het bevat drivers voor diverse populaire netwerkkaarten en werkt
	     erg goed samen met LTSP.
           </para>
           <para>
	     Linux kernels moeten worden 'gemerkt' met het commando
	     <command>mknbi-linux</command>. 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.
           </para>
           <para>
             De met LTSP meegeleverde kernels zijn al gemerkt en
	     gebruiksklaar voor Etherboot.
           </para>
           <para>
             Etherboot kan ook op een floppy worden geschreven,
	     handig om te testen.
           </para>
         </listitem>
         <listitem>
           <para>PXE</para>
           <para>
              Onderdeel van de 'Wired for Management' specificatie
	      van eind jaren '90 was een specificatie voor een bootrom
	      technologie bekend onder de naam
	      <emphasis>Pre-boot Execution Environment</emphasis>,
	      meestal afgekort als <emphasis role="strong">PXE</emphasis>
           </para>

           <para>
              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 <emphasis role="strong">pxelinux</emphasis> te laden.
	      pxelinux is klein genoeg, en kan
	      vervolgens veel grotere bestanden laden zoals de Linux kernel.
           </para>
         </listitem>
         <listitem>
           <para>MBA</para>
           <para>
              Managed Boot Agent (MBA) is een bootrom van het bedrijf
	      <emphasis role="strong">emBoot</emphasis>.
	      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.
           </para>
           <para>
              De implementatie van PXE door MBA werkt erg goed. Hij kan
	      met pxelinux gebruikt worden om een Linux kernel op te starten.
           </para>
           <para>
	      <emphasis role="strong">TCP/IP</emphasis> kan ook gebruikt
	      worden, maar de kernel moet dan wel eerst aangepast worden
	      met een hulpprogramma genaamd <command>imggen</command>.
           </para>
         </listitem>
         <listitem>
           <para>Netboot</para>
           <para>
             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.
           </para>
         </listitem>
      </itemizedlist>
    </sect2>

    <sect2>
      <title>Lokale media</title>
      <itemizedlist>
         <listitem>
           <para>Floppy disk</para>
           <para>
             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.
           </para>
           <para>
             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.
           </para>
         </listitem>
         <listitem>
           <para>Harde schijf</para>
           <para>
              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.
           </para>
         </listitem>
         <listitem>
           <para>cdrom</para>
           <para>

	      Een bootable cdrom met een Linux
	      kernel of een Etherboot image kan worden gebruikt.
	   </para>
         </listitem>
         <listitem>
           <para>USB-geheugen</para>
           <para>
              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.
           </para>
         </listitem>
      </itemizedlist>
    </sect2>

  </sect1>

</chapter>


<chapter>
    <title>Installeren van LTSP op de server</title>
    <para>
      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.
    </para>

    <para>
      Er zijn drie stappen voor het installeren van een LTSP server
      <itemizedlist>

        <listitem>
          <para>Installeren van de LTSP hulpprogramma's</para>
        </listitem>

        <listitem>
          <para>Installeren van de LTSP client pakketten</para>
        </listitem>

        <listitem>
          <para>Configureren van de services ten behoeve van LTSP</para>
        </listitem>

      </itemizedlist>
    </para>

    <sect1>
        <title>Installeren van de LTSP hulpprogramma's</title>
      <para>
        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.
      </para>

      <para>
        Het administratie hulpprogramma (in het engels 'utility') heet <command>ltspadmin</command> en het
	configuratie hulpprogramma heet <command>ltspcfg</command>. Beide
	zijn onderdeel van het <command>ltsp-utils</command>
        pakket.
      </para>

      <para>
        Het <emphasis role="strong">ltsp-utils</emphasis> pakket is 
	beschikbaar in zowel
        <emphasis role="strong">RPM</emphasis> als
        <emphasis role="strong">TGZ</emphasis> formaat.
	Kies een bestandsformaat en volg de betreffende instructies op.
      </para>

      <sect2>
        <title>Installatie van het RPM pakket</title>
        <para>
            Download de laatste versie van het ltsp-pakket en installeer dat
	    met het volgende commando:
            <programlisting>
	    rpm -ivh ltsp-utils-0.1-0.noarch.rpm</programlisting>
	    Het bovenstaande commando installeert de hulpprogramma's op de server.
         </para>
      </sect2>

      <sect2>
        <title>Installeren van het TGZ pakket</title>
        <para>
            Download de laatste versie van het ltsp-utils TGZ pakket en
	    installeer dat met de volgende commando's:
            <programlisting>
	    tar xzf ltsp-utils-0.1-0.noarch.tgz
	    cd ltsp_utils
	    ./install.sh
	    cd ..</programlisting>
	    De bovenstaande commando's installeren de hulpprogramma's op de server.
	    Gebruik deze op niet-RPM systemen.
        </para>
      </sect2>
    </sect1>

    <sect1>
        <title>Installeren van de LTSP client pakketten</title>
        <para>
	Als de ltsp-hulprogramma's geïnstallleerd zijn kan het programma
	<command>ltspadmin</command> 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 <command>ltspadmin</command> levert
	het volgende scherm op:
        </para>
        <para>
          <figure>
            <title>LTSP installer - hoofdscherm</title>
            <GRAPHIC FILEREF="pics/installer_main_window.jpg"
                     FORMAT="JPG"
                     SRCCREDIT="James McQuillan, 2004" >
          </figure>

        </para>

        <para>
	  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:
        </para>
        <para>
          <figure>
            <title>LTSP installer - Configuration scherm</title>
            <GRAPHIC FILEREF="pics/installer_config_window.jpg"
                     FORMAT="JPG"
                     SRCCREDIT="James McQuillan, 2004" >
          </figure>
        </para>

        <para>
	In het <emphasis role="strong">configuration</emphasis>scherm kunnen
	verschillende waarden worden
	opgegeven voor het downloaden en installeren van LTSP pakketten:
          <variablelist>

            <varlistentry>
              <term><command>Where to retrieve packages from?</command></term>
              <listitem>
                <para>
                  (Vanaf waar moeten de pakketten worden opgehaald?) Dit is een URL
		  die wijst naar de plaats van de pakketten. Gewoonlijk is dit
		  <filename>http://www.ltsp.org/ltsp-4.1</filename>, maar als de pakketten
		  vanaf een lokaal bestandssysteem moeten worden geïnstalleerd kan ook
		  <filename>file:</filename> worden gebruikt. Als de pakketten
		  bijvoorbeeld op een cd staan die aangekoppeld is als <filename>/mnt/cdrom</filename>
		  dan zou <filename>file:///mnt/cdrom</filename> (let op: 3 slashes) moeten worden
		  opgegeven.
                </para>
                <para></para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term><command>In which directory would you like to place the LTSP
	      client tree?</command></term>
              <listitem>
                <para>
                  (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 <filename>/opt/ltsp</filename>.
		   De map wordt aangemaakt als hij nog niet bestaat.
                </para>
                <para>
                  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.
                </para>
                <para></para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term><command>HTTP Proxy</command></term>
              <listitem>
                <para>
                  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:
                  <filename>http://firewall.yourdomain.com:3128</filename>.
                </para>
                <para>
                  Als geen proxy nodig is kan worden volstaan met
		  "<filename>none</filename>".
                </para>
                <para></para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term><command>FTP Proxy</command></term>
              <listitem>
                <para>
                  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.
                </para>
                <para>
                  Als een proxy niet nodig is kan worden volstaan met
		  "<filename>none</filename>".
                </para>
                <para></para>
              </listitem>
            </varlistentry>
          </variablelist>
        </para>

        <para>
          Als het configuratiescherm wordt afgesloten gaat de installer
	  bij de opgegeven URL informatie ophalen over de lijst van op
	  dat moment aanwezige installeerbare componenten.
        </para>

        <para>
          <figure>
            <title>LTSP installer - Componentenlijst</title>
            <GRAPHIC FILEREF="pics/installer_comp_list_window.jpg"
                     FORMAT="JPG"
                     SRCCREDIT="James McQuillan, 2004" >
          </figure>
          Selecteer de componenten die geïnstalleerd moeten worden.
	  Verplaats de oplichtende lijn naar de gewenste component en druk
	  op '<command>I</command>'
	  Het is ook mogelijk '<command>A</command>' 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.
        </para>

        <para>
          Er zijn verschillende sneltoetsen voor dit scherm. Hulp is beschikbaar
	  door '<command>H</command>' in te drukken.
          <figure>
            <title>LTSP installer - Help scherm</title>
            <GRAPHIC FILEREF="pics/installer_help_window.jpg"
                     FORMAT="JPG"
                     SRCCREDIT="James McQuillan, 2004" >
          </figure>
        </para>

        <para>
          Voor het weergeven van de lijst met pakketten van een bepaalde component
	  moet '<command>S</command>' worden ingetoetst. De op dit moment geïnstalleerde versies 
	  worden getoond samen met de meest recente beschikbare versies.
          <figure>
            <title>LTSP installer - Package list</title>
            <GRAPHIC FILEREF="pics/installer_pkg_list_window.jpg"
                     FORMAT="JPG"
                     SRCCREDIT="James McQuillan, 2004" >
          </figure>
        </para>

        <para>
          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 '<command>Y</command>' wordt ingetoetst worden de pakketten
	  opgehaald en geïnstalleerd.
        </para>

    </sect1>

    <sect1>
        <title>Configureren van de benodigde services voor LTSP</title>
        <para>
          Er zijn vier essentiële services nodig voor de ondersteuning van opstartende 
	  LTSP werkstations, te weten:
          <itemizedlist>
            <listitem><para>DHCP</para></listitem>
            <listitem><para>TFTP</para></listitem>
            <listitem><para>NFS</para></listitem>
            <listitem><para>XDMCP</para></listitem>
          </itemizedlist>
        </para>

        <para>
          Het <command>ltspcfg</command> hulpprogramma wordt gebruikt voor het
	  configureren van deze services en tevens voor een aantal andere aan LTSP gerelateerde
	  zaken.
        </para>
        <para>
	  <command>ltspcfg</command> kan worden opgestart vanuit
	  <command>ltspadmin</command>, of vanaf de commandoregel door middel van het
	  commando <command>ltspcfg</command>.
        </para>

        <para>
          Wanneer ltscfg wordt opgestart onderzoekt het de server om te zien wat
	  op dat moment geïnstallleerd is en draait.
	   Het onderstaande scherm verschijnt:
          <figure>
            <title>ltspcfg - Initieel Scherm</title>
            <GRAPHIC FILEREF="pics/ltspcfg_initial_screen.jpg"
                     FORMAT="JPG"
                     SRCCREDIT="James McQuillan, 2004" >
          </figure>
          Dit laat zien waar het hulpprogramma naar zoekt.
        </para>

        <para>
	Druk '<command>C</command>' 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.
          <figure>
            <title>ltspcfg - Initial screen</title>
            <GRAPHIC FILEREF="pics/ltspcfg_service_list.jpg"
                     FORMAT="JPG"
                     SRCCREDIT="James McQuillan, 2004" >
          </figure>

          <variablelist>
            <varlistentry>
              <term><command>1 - Runlevel</command></term>
              <listitem>
                <para>
                  Het commando <command>Runlevel</command> wordt gebruikt door
		  het programma <command>init</command>. 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.
                </para>
                <para>
                  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.
                </para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term><command>2 - Interface selectie</command></term>
              <listitem>
                <para>
                  Voor systemen met meerdere netwerkkaarten kan hier worden opgegeven
		  via welke netwerk interface de werkstations verbonden zijn.
                </para>
                <para>
                  Door de juiste interface op te geven kan configuratie hulpprogramma
		  op correcte wijze ander configuratiebestanden zoals
		  <filename>dhcpd.conf</filename> en
                  <filename>/etc/exports</filename> aanmaken.
                </para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term><command>3 - DHCP configuratie</command></term>
              <listitem>
                <para>
                  DHCP moet worden geconfigureerd om de juiste velden aan de werkstations te kunnen
		  doorgeven. Het gaat om onder andere de volgende velden:
                  <command>fixed-address</command>, <command>filename</command>,
                  <command>subnet-mask</command>,
                  <command>broadcast-address</command> en
                  <command>root-path</command>.
                </para>
                <para>
                  Door dit menu te selecteren kan het bestand <filename>dhcpd.conf</filename> 
		  worden aangemaakt en kan <command>dhcpd</command> worden ingesteld
		  op te starten als het systeem wordt aangezet.
                </para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term><command>4 - TFTP configuratie</command></term>
              <listitem>
                <para>
                  TFTP wordt gebruikt door het werkstation om de Linux
		  kernel te downloaden. Daarvoor moet de <command>tftpd</command>
		  daemon op de server worden geactiveerd.
                </para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term><command>5 - Portmapper configuratie</command></term>
              <listitem>
                <para>
                  De <command>Portmapper</command> wordt gebruikt door RPC services
		  zoals NFS
                </para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term><command>6 - NFS configuratie</command></term>
              <listitem>
                <para>
                  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.
                </para>
                <para>
                  Dit menu item zorgt er voor dat NFS gelijktijdig met het systeem opstart.
		  Het aanmaken van het betrokken configuratie bestand
		  <filename>/etc/exports</filename> wordt verderop in deze sectie
		  beschreven.
                </para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term><command>7 - XDMCP configuratie</command></term>
              <listitem>
                <para>
                  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.
                </para>
                <para>
                  Veel gebruikte displaymanagers zijn <command>XDM</command>,
                  <command>GDM</command> en <command>KDM</command>.
		  Dit menu item toont alle gevonden displaymanagers en geeft aan welke
		  op dit moment geconfigureerd voor gebruik.
                </para>

                <para>
                  Uit veiligheidsoverwegingen wordt het de displaymanager standaard NIET
		  toegestaan om externe werkstations te bedienen. Dit is meestal de oorzaak van het
		  beruchte <emphasis role="strong">Grijze scherm met grote X cursor</emphasis>.
		  ltspcfg is meestal in staat de displaymanager zo te configureren dat externe
		  werkstations wel een verbinding kunnen krijgen.
                </para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term><command>8 - Aanpassen van /etc/hosts </command></term>
              <listitem>
                <para>
		  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 <emphasis role="strong">reverses</emphasis> 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.
                </para>

                <para>
		Een veel eenvoudiger methode is om de ip-adressen en hostnamen op te nemen in
                  het bestand <filename>/etc/hosts</filename>.
                </para>

              </listitem>
            </varlistentry>

            <varlistentry>
              <term>
                     <command>9 - Aanpassen van /etc/hosts.allow </command>
              </term>
              <listitem>
                <para>
                  Een aantal services maakt gebruik van een veiligheidslaag bekend onder
		  de naam <emphasis role="strong">tcpwrappers</emphasis>.
		  Deze wordt geconfigureerd met het bestand
		  <filename>/etc/hosts.allow</filename>.
		  Dat bestand wordt door dit menu item configureerd.
                </para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term>
                     <command>10 - Aanpassen van /etc/exports</command>
              </term>
              <listitem>
                <para>
                  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.
                </para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term>
                     <command>11 - Aanmaken van lts.conf</command>
              </term>
              <listitem>
                <para>
                  De configuratie van ieder werkstation wordt bepaald door
		  de items in het bestand <filename>lts.conf</filename>.
		  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.
                </para>
              </listitem>
            </varlistentry>

          </variablelist>
        </para>

    </sect1>

    <sect1>
        <title>Werkstationspecifieke configuratie</title>
        <para>
            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:
            <orderedlist>

                <listitem>
                    <para>/etc/dhcpd.conf</para>
                </listitem>

                <listitem>
                    <para>/etc/hosts</para>
                </listitem>

                <listitem>
                    <para>/opt/ltsp/i386/etc/lts.conf</para>
                </listitem>

            </orderedlist>

        </para>

        <sect2>
            <title>/etc/dhcpd.conf</title>
            <para>
	    Het werkstation heeft een ip-adres en andere informatie nodig.
	    Het volgende kan van de server worden verkregen:
                <itemizedlist>
                    <listitem> <para>ip-adres</para> </listitem>
                    <listitem> <para>hostnaam</para> </listitem>
                    <listitem> <para>Server ip-adres</para> </listitem>
                    <listitem> <para>Default gateway</para> </listitem>
                    <listitem> <para>Padnaam van de te laden kernel</para>
</listitem>
                    <listitem> <para>Server and map voor root bestandssysteem
                               </para> </listitem>
                </itemizedlist>
            </para>
            <para>
                Voor dit voorbeeld hebben we DHCP gekozen om
		ip-adressen uit te delen aan de werkstations.
            </para>
            <para>
	        Tijdens het draaien van het ltsp_initialize script wordt een
		voorbeeld dhcpd.conf bestand geïnstalleerd. Dat bestand heet
		<filename>/etc/dhcpd.conf.example</filename>.
		U kunt dat bestand kopiëren naar <filename>/etc/dhcpd.conf</filename>
		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.
                <figure float="1">
                <title>/etc/dhcpd.conf</title>
                <programlisting>
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";
    }
} </programlisting>
                </figure>
            </para>

            <para>
                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:
                <programlisting>
vmlinuz-2.4.9-ltsp-5
vmlinuz-2.4.9-ltsp-lpp-5 </programlisting>
            </para>
            <para>
                Het is u misschien opgevallen dat de kernel in
		<filename class="directory">/tftpboot/lts</filename>
		staat, maar dat in de "filename" parameter in
		<filename>/etc/dhcpd.conf</filename>
		de inleidende
		<filename class="directory">/tftpboot</filename>
		ontbreekt. De reden is dat in Redhat 7.1 en later, TFTP wordt
		opgestart met de '-s' optie. Daardoor draait de tftpd in
		<emphasis role="strong">secure</emphasis> mode, veilige modus.
		Dat betekend dat tftpd bij het opstarten een <command>chroot</command>
		uitvoert naar de map
		<filename class="directory">/tftpboot</filename>. Daarna zijn
		alle bestandsnamen voor tftpd relatief ten opzichte van die map.
            </para>
            <para>
                In andere Linux distributies is deze '-s' optie misschien niet standaard ingeschakeld voor tftp.
		In dat geval zal de voorlooptekst
		'<filename class="directory">/tftpboot</filename>' moeten worden toegevoegd.
            </para>
        </sect2>

        <sect2>
            <title>/etc/hosts</title>
            <para>IP addres vertalen naar hostnaam</para>
            <para>
                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 <filename>/etc/hosts</filename>.
		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.
            </para>
            <para>
                Daarnaast zijn er, als het werkstation niet opgenomen is in
		<filename>/etc/hosts</filename>,
		problemen te verwachten met de
		<emphasis role="strong">GDM</emphasis> of
                <emphasis role="strong">KDM</emphasis> displaymanagers.
            </para>
        </sect2>

        <sect2>
            <title>/opt/ltsp/i386/etc/lts.conf</title>
            <para>
	        Er zijn een aantal configuratie-items die kunnen
		worden ingesteld in het bestand lts.conf.
            </para>

            <para>
                Het bestand <filename>lts.conf</filename> heeft een eenvoudige
		syntax, bestaande uit meerdere secties.
		Er is een standaard sectie genaamd <command>[default]</command>, en
		er zijn secties voor individuele werkstations.
		De werkstation kunnen worden aangeduid met hostnaam,
		ip-adres of MAC adres (hardware adres).
            </para>

            <para>
                Een gebruikelijke <filename>lts.conf</filename> ziet er als 
		volgt uit:
                <example>
                    <title>lts.conf file</title>
                    <programlisting>
#
# 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</programlisting>
                </example>
            </para>

            <para>
                Hieronder volgt een lijst van enkele van deze items:
                <variablelist>
                    <varlistentry>
                        <term><command>XSERVER</command></term>
                        <listitem>
                            <para>
                                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.
                            </para>
                            <para>
                                Voor LTSP zijn diverse XFree86 3.3.6 pakketten beschikbaar
				voor het geval de videokaart niet door X.org 6.7.0
				wordt ondersteund.
                            </para>
                            <para>
                               Men kan in <filename>lts.conf</filename>
				voor ieder werkstation apart items instellen, of men kan
				standaardwaarden instellen voor items die door alle werkstations
				worden gebruikt.
                            </para>
                            <para>
			       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.
                            </para>
                        </listitem>
                    </varlistentry>

                    <varlistentry>
                        <term><command>RUNLEVEL</command></term>
                        <listitem>
                            <para>
                                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 <filename>lts.conf</filename>.
                            </para>
                        </listitem>
                    </varlistentry>
                </variablelist>
            </para>
        </sect2>

    </sect1>

    <sect1>
        <title>Huidige configuratie weergeven</title>
        <para>
            Met <command>ltspcfg</command> is het ook mogelijk een overzicht van 
	    de huidige status van alle services te krijgen. Druk in het hoofdmenu van ltspcfg
	    op '<command>S</command>' en het overzicht wordt getoond.
            <figure>
              <title>ltspcfg - Huidige Status</title>
              <GRAPHIC FILEREF="pics/ltspcfg_status.jpg"
                       FORMAT="JPG"
                       SRCCREDIT="James McQuillan, 2004" >
            </figure>
        </para>

    </sect1>

</chapter>


<chapter>
    <title>Installeren van het werkstation</title>
    <para>
        Als de server geïnstalleerd is wordt het tijd om ons te richten op
	het installeren van het werkstation
    </para>
    <para>
        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.
    </para>

    <sect1>
      <title>Opstarten met PXE</title>
      <para>
        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.
      </para>

      <para>
        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.
      </para>

      <para>
        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.
      </para>

      <para>
        Er is een NBP voor Linux beschikbaar met de naam
	<command>pxelinux.0</command>.
	Het is onderdeel van het
	<command>syslinux</command> pakket van
	kernel ontwikkelaar H. Peter Anvin.
      </para>

      <para>
        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.
      </para>
      <para>
        Het werk op de volgende manier:
        <itemizedlist>
          <listitem>
            <para>
              Het PXE bootrom initialiseert de netwerkkaart en zend een dhcp-verzoek.
            </para>
          </listitem>
          <listitem>
            <para>
              De dhcp-server antwoordt met een ip-adres en de naam van het NBP
	      dat geladen moet worden.
            </para>
          </listitem>
          <listitem>
            <para>
              De PXE bootrom haalt het NBP op, zet het in het geheugen, en
	      voert het uit.
            </para>
          </listitem>
          <listitem>
            <para>
              Het NBP gebruikt tftp om het configuratie bestand van de server op te
	      halen.
            </para>
          </listitem>
          <listitem>
            <para>
              Het configuratiebestand bevat de naam van de kernel, de naam van de opstart
	      ramdisk, en de opties die aan de kernel moeten worden doorgegeven als die is geladen.
            </para>

            <para>
            Hier is een voorbeeld van een pxe configuratiebestand:
              <programlisting>
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
              </programlisting>
            </para>
          </listitem>
          <listitem>
            <para>
             Het NBP gebruikt daarna tftp om de kernel en de opstart ramdisk op
	     te halen.
            </para>
          </listitem>
          <listitem>
            <para>
              Vervolgens wordt de controle overgedragen aan de Linux-kernel die opstart,
	      initrd aankoppelt (mount), en doorgaat met het verder opstarten van het werkstation.
            </para>
          </listitem>
        </itemizedlist>
      </para>

    </sect1>

    <sect1>
      <title>Opstarten met Etherboot</title>
      <blockquote><attribution>Ken Yap</attribution>
        <para>
          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.
        </para>
      </blockquote>

      <para>
          Etherboot is ook Open Source, vrijgegeven onder de GNU General
	  Public License, versie 2 (GPL2)
      </para>

      <para>
          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.
      </para>

      <para>
          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.
      </para>
      <para>
          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.
      </para>

      <sect2>
        <title>Het kiezen van een Etherboot driver voor een ISA netwerkkaart</title>
        <para>
            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)
        </para>
      </sect2>

      <sect2>
        <title>Het kiezen van een Etherboot driver voor een PCI netwerkkaart</title>
        <para>
            Voor PCI is het belangrijk dat de goed driver gekozen wordt
	    met het juiste PCI Vendor en Device ID.
        </para>

        <para>
          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.
        </para>

        <para>
          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.
        </para>


        <para>
          Wanneer eenmaal Linux opgestart is kan het commando
           <command>lspci</command> gebruikt worden met de optie -n.
	   <programlisting>
[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)
          </programlisting>
	  In het bovenstaande voorbeeld is voor iedere PCI kaart een informatieregel
	  zichtbaar. Alleen de <emphasis role="strong">Class 0200</emphasis>
	  regels zijn van belang. Nogmaals het commando intypen maar nu met alleen weergave
	  van  de Ethernet kaarten maakt de lijst wat overzichtelijker:
          <programlisting>
[root@jamlap root]# lspci -n | grep "Class 0200"
0000:06:00.0 Class 0200: 8086:1229 (rev 09)
          </programlisting>
          De PCI ID nummers zijn hier:
	  <command>8086:1229</command>. Het eerste veld
	  <command>8086</command> is het PCI Vendor ID, in dit geval de
	  Intel Corporation. Het tweede veld
	  <command>1229</command> is het PCI device ID. Dit vertelt ons het
	  model van de netwerkkaart, in dit geval een EtherExress 100.
        </para>

      </sect2>

      <sect2>
          <title>Het maken van een opstartfloppy</title>

          <para>
          </para>

          <para>
              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.
          </para>

          <para>
              Een veel eenvoudigere manier is om naar Marty Connor's
              <ulink
url="http://www.rom-o-matic.net"><citetitle>www.Rom-O-Matic.net</citetitle></ulink>
              website te gaan.
          </para>

          <para>
              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.
          </para>

          <para>
              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.
          </para>

          <para>
              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.
          </para>

        <para>
            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:
            <programlisting>
dd if=<emphasis>Etherboot_Image</emphasis> of=/dev/fd0 </programlisting>
        </para>
      </sect2>

      <sect2>
        <title>Het maken van een bootrom</title>
        <para>
           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.
        </para>
        <para>
           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.
        </para>
      </sect2>

    </sect1>

</chapter>


<chapter>
    <title>Opstarten van het werkstation</title>
    <para>
        Als de server en het werkstation goed zijn geconfigureerd is het gewoon een 
	kwestie van floppy in het station en de computer aanzetten.
    </para>

    <para>
        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:
    </para>

    <figure><title>Aanmeldscherm</title>
        <GRAPHIC FILEREF="pics/ltsplogin1.gif"
                 FORMAT="GIF"
                 SRCCREDIT="James McQuillan, 2001" >
    </figure>

    <para>
        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.
    </para>

    <para>
        Alle programma's die op de server staan kunnen worden gebruikt.
    </para>

</chapter>


<chapter>
    <title>Afdrukken</title>
    <para>
        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.
    </para>

    <para>
        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.
    </para>

    <sect1>
        <title>Installeren gebruikerszijde</title>

        <para>
            LTSP gebruikt het <command>lp_server</command> 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.
        </para>

        <para>
            Een printer op het werkstation kan worden aangesloten door
	    een aantal configuratie items in het bestand <command>lts.conf</command>
	    van een waarde te voorzien.
            <programlisting>
[ws001]
    PRINTER_0_DEVICE = /dev/lp0
    PRINTER_0_TYPE   = P </programlisting>
            Bovenstaande items zorgen ervoor dat het lp_server programma op de
	    achtergrond gedraaid wordt, wachtend op een printopdracht via poort
	    9100. De printdata  worden doorgestuurd naar de parallelle poort /dev/lp0.
        </para>

        <para>
            Er zijn meer opties. Kijk in de sectie over lts.conf voor meer informatie
	    over het configureren van printers.
        </para>
    </sect1>

    <sect1>
        <title>Installeren serverzijde</title>

        <para>
            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.
        </para>

        <para>
            Op redhat 7.2 is zowel een GUI als een tekstgebaseerd programma
	    aanwezig voor de printerconfiguratie.
	    De GUI heet <command>printconf-gui</command>, de tekstversie heet
	    <command>printconf-tui</command>. Oudere versies van Redhat
	    hebben het programma <command>printtool</command>.
	    Printtool bestaat ook in Redhat 7.2, maar dan roept het alsnog
	    <command>printconf-gui</command> aan.
	    Andere Linux distributies hebben hun eigen printer configuratie programma's.
        </para>

        <figure>
            <title>Printconf-gui Toevoegen van een nieuwe printer</title>
            <GRAPHIC FILEREF="pics/printconf-gui-add.gif"
                     FORMAT="GIF"
                     SRCCREDIT="James McQuillan, 2001" >
        </figure>

        <para>
            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 <command>JetDirect</command> printer
	    toe te voegen.
        </para>

        <para>
            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:
            <itemizedlist>
                <listitem>
                    <para>
                        <computeroutput>
                            "a-z"  kleine letters
                        </computeroutput>
                    </para></listitem>
                <listitem>
                    <para>
                        <computeroutput>
                            "A-Z"  hoofdletters
                        </computeroutput>
                    </para></listitem>
                <listitem>
                    <para>
                        <computeroutput>
                            "0-9"  getallen
                        </computeroutput>
                    </para></listitem>
                <listitem>
                    <para>
                        <computeroutput>
                            "-"    &nbsp;&nbsp;minteken
                        </computeroutput>
                    </para></listitem>
                <listitem>
                    <para>
                        <computeroutput>
                            "_"    &nbsp;&nbsp;underscore
                        </computeroutput>
                    </para></listitem>
            </itemizedlist>
        </para>
        <para>
            De gekozen naam in het bovenstaande voorbeeld is
            <command>ws001_lp</command>.
	    Door deze naam is het makkelijk te zien dat de printer is verbonden met 
	    <command>ws001</command>.
        </para>

        <figure>
            <title>Printconf-gui Detail informatie</title>
            <GRAPHIC FILEREF="pics/printconf-gui-detail.gif"
                     FORMAT="GIF"
                     SRCCREDIT="James McQuillan, 2001" >
        </figure>
        <para>
            Twee velden zijn noodzakelijk voor communicatie met de printer:
            <orderedlist>
                <listitem>
                    <para>
                        Het ip-adres of de hostnaam van het werkstation waarmee
			de printer verbonden is.
                    </para>
                </listitem>
                <listitem>
                    <para>
                        De tcp-poort waarop de <command>lp_server</command>
			daemon luistert.
                    </para>
                    <para>
                        De eerste printer die aan een werkstation vast zit krijgt tcp-poort
			<command>9100</command>. De tweede printer zit op poort
			<command>9101</command>, en de derde printer op 
			<command>9102</command>.
                    </para>
                </listitem>
            </orderedlist>
        </para>
    </sect1>

</chapter>


<chapter>
    <title>Schermscripts</title>
    <para>
        Een van de faciliteiten die sinds versie 4.0 aan LTSP zijn toegevoegd  zijn de
	zg '<command>Schermscripts</command>'. Deze scripts dienen voor het opstarten van
	de verschillende type sessies.
    </para>

    <para>
        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:
        <programlisting>
   SCREEN_01 = startx
   SCREEN_02 = shell</programlisting>
        Dit start een X server op het eerstescherm en een shell op het tweede
	scherm. Wisselen tussen schermen kan met Ctrl-Alt-F1, om naar het eerste scherm te gaan,
	en Ctrl-Alt-F2, voor het tweede scherm.
    </para>

    <para>
	Op deze manier kunnen 12 'schermscripts' worden opgegeven, maar de meeste mensen
	hebben aan 1 genoeg.
    </para>

    <para>
        Beschikbare typen schermscripts:
        <variablelist>
          <varlistentry>
              <term><command>startx</command></term>
              <listitem>
                  <para>
                      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.
                  </para>
              </listitem>
          </varlistentry>

          <varlistentry>
              <term><command>shell</command></term>
              <listitem>
                  <para>
                      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.
                  </para>
              </listitem>
          </varlistentry>

          <varlistentry>
              <term><command>telnet</command></term>
              <listitem>
                  <para>
                      Dit script start een telnet-sessie die verbonden is met de server.
		      Het is een tekstsessie.
                  </para>
                  <para>
                      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:
                      <programlisting>
    SCREEN_01 = telnet server2.mydomain.com</programlisting>
                      Alle opties die het telnet programma kent kunnen op de regel worden
		      opgegeven, maar zodra opties worden opgegeven moet altijd ook de server
		      opgegeven worden waarmee verbonden moet worden.
                  </para>
              </listitem>
          </varlistentry>

          <varlistentry>
              <term><command>rdesktop</command></term>
              <listitem>
                  <para>
			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:
                      <programlisting>
    SCREEN_01 = rdesktop -f w2k.mydomain.com</programlisting>
                      Het bovenstaande voorbeeld start een desktop in volledige scherm.
		      De gebruiker ziet een Windows aanmeldvenster, en hoeft maar een keer
		      in te loggen. Dit is erg handig als alleen een windows aanmeldscherm nodig is,
		      zonder Linux. De gebruikers weten niet eens dat ze in feite Linux gebruiken.
                  </para>
              </listitem>
          </varlistentry>

        </variablelist>

    </para>

    <para>
      De schermscripts staan in de map
      <filename class="directory">/opt/ltsp/i386/etc/screen.d</filename>.
     Men kan eigen schermscripts maken en toevoegen aan deze map. Het
      handigste is om een van de scripts als voorbeeld te gebruiken.
    </para>

</chapter>


<chapter>
    <title>Problemen oplossen</title>
    <para>
        Indien na het volgen van de aanwijzingen in de voorgaande hoofdstukken
	het werkstation niet opstart begint het proces van probleemoplossing.
    </para>

    <para>
        Het eerste dat uitgezocht moet worden is hoever het opstartproces van het
	werkstation gekomen is.
    </para>

    <sect1>
        <title>Problemen oplossen van het Etherboot floppy image</title>
        <para>
            Als van een floppy wordt opgestart zou ongeveer het volgende op het scherm te zien moeten
	    zijn:
        </para>
        <para>
        <screen>
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)...
&#60;sleep&#62; </screen>
        </para>
        <para>
            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.
        </para>

        <para>
        De volgende boodschap is waarschijnlijk zichtbaar
	het Etherboot image dat gemaakt is niet correct is voor de
	gebruikte netwerkkaart.
        <screen>
ROM segment 0x0800 length 0x8000 reloc 0x9400
Etherboot 5.0.2 (GPL) Tagged ELF for [Tulip]
Probing...[Tulip]No adapter found
&#60;sleep&#62;
&#60;abort&#62; </screen>
        </para>

        <para>
            Als het opstartproces aankomt op het punt waarop het correcte MAC adres van de
	    kaart wordt weergegeven dan is de floppy waarschijnlijk goed.
        </para>

    </sect1>

    <sect1>
        <title>Problemen oplossen van DHCP</title>
        <para>
            Als de netwerkkaart is geïnitialiseerd zendt hij een dhcp-verzoek over het
	    lokale netwerk, op zoek naar een dhcp-server.
        </para>

        <para>
        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:
            <screen>
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)...
&#60;sleep&#62;
Me: 192.168.0.1, Server: 192.168.0.254, Gateway 192.168.0.254 </screen>
            Als de regel zichtbaar is die begint met 'Me:', gevolgd door een
	    ip-adres, dan is duidelijk dat DHCP correct werkt. In dat geval kan worden doorgegaan
	    met controle van TFTP
        </para>

        <para>
            Als in plaats daarvan de volgende boodschap op het scherm verschijnt
	    gevolgd door een heleboel &#60;sleep&#62; meldingen, dan is er iets mis.
	    Het is normaal als er een of twee van deze &#60;sleep&#62; meldingen te zien zijn en pas daarna
	    het antwoord van de dhcp-server.
            <screen>
Searching for server (DHCP)...  </screen>
        </para>

        <para>
            Uitzoeken wat er mis is kan soms moeilijk zijn, maar er zijn een paar zaken om
	    aandacht aan te besteden.
        </para>
            <sect2>
                <title>Controleer de verbindingen</title>
                <para>
                    Is het werkstation fysiek verbonden met hetzelfde netwerk als waar
		    de server aan vast zit?
                </para>
                <para>
                    Kijk, met het werkstation aan, of alle verbindings-indicatorlichtjes op alle verbindingen
		    aanstaan.
                </para>

                <para>
                    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.
                </para>

            </sect2>

            <sect2>
                <title>Draait dhcpd?</title>
                <para>
                    Er dient te worden vastgesteld of <command>dhcpd</command> draait
		    op de server. We kunnen het antwoord op een aantal manieren vinden.
                </para>

                <para>
                    <command>dhcpd</command> draait normaal gesproken op de achtergrond en luistert op
		    poort 67.
		    Probeer het commando <command>netstat</command> om te kijken of er iets luistert
		    op die poort:
                    <programlisting>
netstat -an | grep ":67 " </programlisting>
                    Dit zou ongeveer het volgende moeten opleveren:
                    <programlisting>
udp     0    0   0.0.0.0:67         0.0.0.0:*</programlisting>
                    De vierde kolom bevat het ip-adres en poortnummer, gescheiden door een dubbelepunt
		    (':'). Een adres met allemaal nullen ('0.0.0.0') geeft aan dat er geluisterd wordt op alle
		    interfaces (netwerkkaarten). Dat wil zeggen, er is een <command>eth0</command>
		    en een <command>eth1</command> interface, en <command>dhcpd</command>
		    luistert op beide interfaces.
                </para>

                <para>
                    Dat  netstat laat zien dat er iets luistert op udp poort 67 betekend nog niet dat het ook
		    <command>dhcpd</command> is die luistert. Het zou ook
		    <command>bootpd</command> kunnen zijn, al is dat onwaarschijnlijk omdat
		    <command>bootpd</command> in de meeste Linux distributies niet meer meegeleverd
		    wordt.
                </para>

                <para>
                    Om er zeker van te zijn dat inderdaad <command>dhcpd</command>
		    draait kunnen we het commando <command>ps</command> gebruiken.
                    <programlisting>
ps aux | grep dhcpd </programlisting>

                    Dit zou ongeveer het volgende moeten opleveren:

                    <programlisting>
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 </programlisting>

                    De eerste regel laat zien dat <command>dhcpd</command> draait.
		    De tweede regel laat alleen maar ons <command>grep</command> commando
		    zien.
                </para>

                <para>
                    Als er helemaal geen regels zijn die aangeven dat dhcpd draait, controleer
		    dan of <command>dhcpd</command> geconfigureerd is om onder runlevel 5 te draaien.
		    Op Redhat systemen kan het commando <command>ntsysv</command> ingetypt worden.
		    Naar beneden scrollend kan dan gecontroleerd worden of <command>dhcpd</command>
		    geconfigureerd is om op te starten.
                </para>

                <para>
                    De <command>dhcpd</command> daemon kan worden opgestart met het commando:
                    <programlisting>
service dhcpd start</programlisting>

                    Let goed op de schermuitvoer, er kunnen foutmeldingen in staan.
                </para>

            </sect2>

            <sect2>
                <title>Dubbele controle van de dhcpd-configuratie</title>
                <para>
                    Heeft het bestand <filename>/etc/dhcpd.conf</filename> wel voor ieder werkstation
		    aparte instellingen?
                </para>
                <para>
                    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.
                </para>
            </sect2>

            <sect2>
                <title>Blokkeert ipchains of iptables het verzoek?</title>
                <sect3>
                    <title>Onderzoeken van ipchains</title>
                    <para>
                        Draai het volgende command en kijk naar de uitvoer:
                        <programlisting>
ipchains -L -v </programlisting>
                        Als dit ongeveer het volgende oplevert:
                        <programlisting>
Chain input (policy ACCEPT: 229714 packets, 115477216 bytes):
Chain forward (policy ACCEPT: 10 packets, 1794 bytes):
Chain output (policy ACCEPT: 188978 packets, 66087385 bytes): </programlisting>
                        Dan is het niet ipchains dat in de weg zit.
                    </para>
                </sect3>
                <sect3>
                    <title>Onderzoeken van iptables</title>
                    <para>
                        Draai het volgende command en kijk wat het zegt:
                        <programlisting>
iptables -L -v </programlisting>
                        Als dit ongeveer het volgende oplevert:
                        <programlisting>
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</programlisting>
                        Dan is het niet iptables dat in de weg zit.
                    </para>
                </sect3>
            </sect2>

            <sect2>
                <title>Stuurt het werkstation dhcp-verzoeken?</title>
                <para>
                    Bekijk <filename>/var/log/messages</filename>
                    terwijl het werkstation opstart. Dat kan met het volgende commando:
                    <programlisting>
tail -f /var/log/messages </programlisting>
                    Dit 'volgt' het logbestand terwijl er nieuwe regels worden bijgeschreven.
                    <programlisting>
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 </programlisting>
                    Als dit meldingen zoals hierboven oplevert, met 'no free leases',
		    dan betekend dat dat <command>dhcpd</command> wel draait maar
		    dat het niks weet over het
		    werkstation dat het ip-adres verzoek doet.
                </para>
            </sect2>

    </sect1>

    <sect1>
        <title>Problemen oplossen van TFTP</title>
        <para>
            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.
        </para>

        <para>
            Als een melding zoals hieronder zichtbaar is:
        <screen>
Loading 192.168.0.254:/lts/vmlinuz-2.4.24-ltsp-4......... </screen>
          met puntjes die snel het scherm vullen, dan is dat een indicatie dat TFTP
	  goed werkt en de kernel wordt opgehaald.
        </para>

        <para>
          Als daarentegen geen puntjes verschijnen is er een probleem. Mogelijke
	  problemen kunnen zijn:
        </para>

        <sect2>
            <title><command>tftpd</command> draait niet</title>
            <para>
                Als <command>tftpd</command> 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 <command>netstat</command>
		worden gebruikt:
                <programlisting>
[root@bigdog]# netstat -anp | grep ":69 "

udp     0   0 0.0.0.0:69         0.0.0.0:*                 453/inetd
                </programlisting>
                Als er geen uitvoer van dat commando verschijnt is tftp waarschijnlijk niet actief.
              </para>
            <para>
                Er zijn twee gebruikelijke methoden voor het opstarten van tftpd.
		Dat zijn <command>inetd</command> en het nieuwere
		<command>xinetd</command>
              </para>
            <para>
                <command>inetd</command> gebruikt een configuratie bestand genaamd
                <filename>/etc/inetd.conf</filename>.  Zorg er voor dat in dat bestand
		tftpd NIET uitgeschakeld is met het commentaarteken '#'.
		De regel zou er zo uit moeten zien:
                <programlisting>
tftp dgram udp wait nobody /usr/sbin/tcpd  /usr/sbin/in.tftpd -s /tftpboot
                </programlisting>
            </para>
            <para>
		<command>xinetd</command> gebruikt een map met aparte configuratiebestanden.
		Een bestand voor iedere service. Als de server xinetd gebruikt dan is er een bestand
		<filename>/etc/xinetd.d/tftp</filename>.
		Hieronder staat een voorbeeld:
                <programlisting>
service tftp
{
  disable          = no
  socket_type      = dgram
  protocol         = udp
  wait             = yes
  user             = root
  server           = /usr/sbin/in.tftpd
  server_args      = -s /tftpboot
}
                </programlisting>

                Wees er zeker van dat op de <command>disable</command> regel geen 'yes'
		staat.
            </para>
        </sect2>

        <sect2>
            <title>Kernel staat niet op de plaats waar tftp hem verwacht</title>
            <para>
                De kernel moet in een map staan waar de tftp daemon toegang heeft. Indien de 
		optie '-s' wordt meegegeven aan de <command>tftpd</command> daemon
		dan moeten alle bestandspaden die het werkstation noemt relatief zijn ten opzichte van de map
		<filename class="directory">/tftpboot</filename>.
		Dus, als de instelling voor <command>filename</command> in het bestand
		<filename>/etc/dhcpd.conf</filename> ingesteld is op
		<filename>/lts/vmlinuz-2.4.24-ltsp-4</filename>
		, dan moet de kernelnaam zijn: <filename>/tftpboot/lts/vmlinuz-2.4.24-ltsp-4</filename>
            </para>
        </sect2>
    </sect1>

    <sect1>
        <title>Problemen oplossen van het NFS root bestandssysteem</title>
        <para>
            Er zijn verschillende oorzaken waardoor het root bestandssysteem niet geladen kan worden,
	    zoals:
        </para>
        <sect2>
            <title>Geen init gevonden</title>
            <para>
                Als de volgende foutmelding verschijnt:
                <screen>
Kernel panic: No init found.  Try passing init= option to kernel.  </screen>
                wordt waarschijnlijk de foute map als root bestandssysteem opgegeven, of
		de map <filename>/opt/ltsp/i386</filename> is leeg.
            </para>
        </sect2>

        <sect2>
            <title>Server meldt error -13</title>
            <para>
                Als de volgende foutmelding verschijnt:
                <screen>
Root-NFS: Server returned error -13 while mounting /opt/ltsp/i386 </screen>
                betekent dat dat de map
		<filename class="directory">/opt/ltsp/i386</filename>
		niet vermeld staat in het bestand
		<filename>/etc/exports</filename>.
            </para>
            <para>
                Bekijk het bestand <filename>/var/log/messages</filename>
		om te zien of aanwijzingen in staan. Een melding als:
                <screen>
Jul 20 00:28:39 bigdog rpc.mountd: refused mount request from ws004
                  for /opt/ltsp/i386 (/): no export entry </screen>
                bevestigt ons vermoeden dat  de instelling in
		<filename>/etc/exports</filename>
		niet goed is.
            </para>
        </sect2>

        <sect2>
            <title>NFS Daemon problemen (portmap, nfsd &amp; mountd)</title>
            <para>
                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.
            </para>
            <para>
                Er zijn drie daemons die op de server moeten draaien wil NFS goed werken:
		 <command>portmap</command>,
                <command>nfsd</command> en <command>mountd</command>.
            </para>
            <sect3>
                <title>De Portmapper (portmap)</title>
                <para>
                    Als de volgende foutmelding verschijnt:
                    <screen>
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 </screen>
                    wordt dat waarschijnlijk veroorzaakt doordat de
		    <command>portmap</command> daemon niet draait. Controleren
		    of <command>portmap</command> draait kan met het commando
		    <command>ps</command>:
                    <screen>
ps -e | grep portmap </screen>
                    Als de portmapper draait is de uitvoer:
                    <screen>
30455 ?        00:00:00 portmap </screen>
                    Een ander controle is met het commando <command>netstat</command>.
		    De portmapper gebruikt tcp- en udp-poort 111. Probeer:
                    <screen>
netstat -an | grep ":111 " </screen>
                    Dit zou als uitvoer moeten geven:
                    <screen>
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:*                           </screen>
                    Als de uitvoer hier niet op lijkt dan draait de portmapper niet.
		    De portmapper kan worden opgestart met:
                    <screen>
/etc/rc.d/init.d/portmap   start </screen>
                    Daarna moet er voor worden gezorgd worden dat de portmapper gestart wordt
		    bij het opstarten van de server. Gebruik <command>ntsysv</command>
		    om daarvoor te zorgen dat zo is.
                </para>
            </sect3>

            <sect3>
                <title>De NFS en MOUNT daemons (nfsd &amp; mountd)</title>
                <para>
                    NFS heeft 2 daemons die moeten draaien.
                    <command>nfsd</command> en <command>mountd</command>.
                    Beide worden gestart met het script
                    <filename>/etc/rc.d/init.d/nfs</filename>.
                </para>
                <para>
                    Met het commando <command>ps</command> kan gecontroleerd worden
		    of ze draaien.
                    <screen>
ps -e | grep nfs
ps -e | grep mountd </screen>
                    Als dit aangeeft dat een van de twee of beide niet draaien moeten ze
		    worden opgestart.
                </para>

                <para>
                    Normaal gesproken zou in dat geval het opstartscript moeten worden gedraaid
		    met als argument <command>restart</command>. Echter, om een of andere
		    reden herstart het script <filename>/etc/rc.d/init.d/nfs</filename>
		    niet <command>nfsd</command> op die manier. Alleen 
		    <command>mountd</command> wordt herstart (bug?). Geef daarom 
		    de volgende commando's:
                    <screen>
/etc/rc.d/init.d/nfs  stop
/etc/rc.d/init.d/nfs  start </screen>
                    Eventuele fouten in het commando <command>stop</command> zijn niet erg.
		    Het commando <command>start</command> moet wel 
		    <command>OK</command> als uitvoer terug geven.
                </para>

                <para>
                    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
		    <command>rpcinfo</command>.
                    <screen>
rpcinfo -p localhost </screen>
                    Zou ongeveer het volgende resultaat moeten opleveren:
		    <screen>
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</screen>
                    Dit geeft aan dat <command>nfs</command> (nfsd) en
                    <command>mountd</command> beide draaien en zich hebben geregistreerd bij de
		    portmapper.
                </para>
            </sect3>
        </sect2>
    </sect1>

    <sect1>
        <title>Problemen oplossen met de Xserver</title>
        <para>
            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.
        </para>
        <para>
            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.
        </para>
        <para>
            Als een werkstation de X server gaat opstarten, wordt het script
	    <filename>startx</filename> aangeroepen met de optie
	    <command>-query</command>, wijzend naar een server een
	    displaymanager zoals bv <command>XDM</command>,
            <command>GDM</command> or <command>KDM</command>
	    draait
        </para>

        <para>

        </para>


        <para>

	    De X server wordt opgestart door het script <filename>startx</filename>
	    dat op zijn beurt weer wordt opgestart door het programma
	    <command>init</command>. Als het <filename>startx</filename> script
	    faalt dan start <command>init</command> tot 10 keer toe
	    het script opnieuw op. Uiteindelijk geeft <command>init</command>
	    het op en blijft een foutmelding op het scherm achter.
        </para>

        <para>
            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
	    <command>bash</command> prompt.
	    Vanaf de bash prompt kan de X server worden opgestart met het volgende
	    commando:
            <screen>
sh  /tmp/start_ws </screen>
            De X server zal dan proberen op te starten en als dat niet lukt, terugkeren naar de
	    bash prompt met een leesbare foutmelding.
        </para>
    </sect1>

    <sect1>
        <title>Problemen oplossen met de Displaymanager</title>
        <para>
            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.
        </para>

        <para>
            De drie meest voorkomende displaymanagers zijn:
            <itemizedlist>
                <listitem>
                    <para>
                        XDM - Is er altijd al geweest. Zit standaard bij het X windowssysteem.
                    </para>
                </listitem>
                <listitem>
                    <para>
                        GDM - De 'Gnome Display Manager'. Onderdeel van het Gnome-pakket.
                    </para>
                </listitem>
                <listitem>
                    <para>
                        KDM - De 'KDE Display Manager'.  Onderdeel can het KDE-pakket
                    </para>
                </listitem>
            </itemizedlist>
            In de meeste GNU/Linux distributies zitten alle drie de displaymanagers.
        </para>

        <sect2>
            <title>Grijs scherm met grote X cursor</title>
            <para>
                Dit betekent dat de X server draait maar dat geen contact gelegd kon worden met
		de displaymanager. Mogelijke oorzaken zijn:
                <orderedlist>
                    <listitem>
                        <para>
                            De displaymanager draait niet
                        </para>
                        <para>
                            Op recente versies van Redhat (7.0 en hoger) wordt de displaymanager gestart
			    vanuit
                            <command>init</command>.  In het bestand
                            <filename>/etc/inittab</filename> staat een regel die er als volgt uit ziet:
                            <screen>
x:5:respawn:/etc/X11/prefdm -nodaemon </screen>
				Het script  <command>prefdm</command> stelt vast
				welke displaymanager gedraaid moet worden.
                        </para>

                        <para>
                            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.
                        </para>

                        <para>
			Met het commando <command>netstat</command> kan worden
			gecontroleerd of er een displaymanager draait. Typ op de server
			het volgende commando in:
                            <screen>
netstat -ap | grep xdmcp </screen>
                            Dit zou als resultaat moeten geven dat er een proces luistert
			    op de xdmcp poort (177).
                            <screen>
udp     0   0 *:xdmcp            *:*               1493/gdm </screen>
                            Dit laat duidelijk zien dat <command>gdm</command> draait
			    met een PID van 1493, en luistert op de de xdmcp poort.
                        </para>

                        <para>
                            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.
                        </para>

                        <para>
                            In het bestand <filename>lts.conf</filename> 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:
                            <screen>
XDM_SERVER  =  192.168.0.254 </screen>
                            Uiteraard zal het ip-adres per netwerk verschillen.
                      </para>

                        <para>
                            Als het item 'XDM_SERVER' niet aanwezig is wordt de waarde van
			    'SERVER' gebruikt. Als ook die ontbreekt
			    wordt <command>192.168.0.254</command> gebruikt.
                        </para>

                        <para>
                            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.
                        </para>
                    </listitem>
                    <listitem>
                        <para>
                            De displaymanager is ingesteld om externe verzoeken te negeren.
                        </para>

                        <para>
			    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.
                        </para>

                        <itemizedlist>
                            <listitem>
                                <para><command>XDM</command></para>
                                <para>
				In Redhat wordt standaard de mogelijk voor extern
				aanmelden uitgeschakeld. Het commando <command>ltsp_initialize</command>
				zou dit moeten inschakelen maar als dat niet werkt
				kan het bestand
				<filename>/etc/X11/xdm/xdm-config</filename>
				handmatig worden aangepast. Zoek naar een regel die
				er ongeveer als volgt uit ziet:
                                    <screen>
DisplayManager.requestPort:     0 </screen>
                                    Deze regel MOET uitgekommenteerd (met een kommentaarteken
				    aan het begin van de regel uitgeschakeld) zijn om XDM
				    te laten luisteren op poort 177.
                                </para>
                                <para>
                                    Er is nog een belangrijk configuratiebestand dat nodig is om
				    XDM te laten luisteren naar externe aanmeldingsverzoeken.
				    In het bestand  <filename>/etc/X11/xdm/Xaccess</filename>
				    MOET een regel staan die start met het '*' teken.
				    De regel staat normaal al in het bestand maar Redhat
				    kommenteerd hem uit.
				    Het script <command>ltsp_initialize</command>
				    schakelt de regel weer in maar als XDM toch niet werkt
				    moet dit bestand worden gecontroleerd. Een geldige
				    regel ziet er als volgt uit:
                                    <screen>
*        #any host can get a login window </screen>
                                 .</para>

                            </listitem>

                            <listitem>
                                <para><command>KDM</command></para>
                                <para>
                                    Nieuwe versies van KDM kennen het configuratiebestand
				    <command>kdmrc</command>.
				    Verschillende Linux distributies plaatsen het bestand op verschillende
				    locaties. In redhat 7.2 is de bestandsnaam
				    <command>/etc/kde/kdm/kdmrc</command>.
				    In ander distributies kan met het commando
				    <command>locate</command> het bestand worden getraceerd.
                                </para>
                                <para>
                                    Het gedeelte waar extern aanmelden voor werkstations kan worden ingesteld is
				    de sectie <command>[Xdmcp]</command>.
				    Zorg ervoor dat <command>Enable</command> = <command>true</command>.
                                </para>
                                <para>
                                    Oudere versies van KDM gebruiken de configuratiebestanden van XDM in
				    /etc/X11/xdm.
                                </para>
                            </listitem>

                            <listitem>
                                <para><command>GDM</command></para>
                                <para>
                                    GDM gebruikt een andere groep configuratiebestanden. Ze staan in de
				    map:
                                    <filename
class="directory">/etc/X11/gdm</filename>
                                </para>

                                <para>
                                    Het belangrijkste bestand is
                                    <filename>gdm.conf</filename>. Localiseer de sectie:
                                    <command>[xdmcp]</command>. 
				     Daar staat een instelling met de naam
				     'Enable' die op '1' of 'true' moet staan afhankelijk van de 
				     GDM versie. Hier is een voorbeeld:
                                    <screen>
[xdmcp]
Enable=true
HonorIndirect=0
MaxPending=4
MaxPendingIndirect=4
MaxSessions=16
MaxWait=30
MaxWaitIndirect=30
Port=177 </screen>
                                </para>
                                <para>
                                    Let op de regel 'Enable=true'. Ouder GDM versies 
				    gebruiken '0' of '1' voor Disable en Enable. Nieuwere versies
				    gebruiken 'False' en 'True'.
                                </para>
                            </listitem>
                        </itemizedlist>
                    </listitem>

                    <listitem>
                        <para>
                            Als het zeker is dat de displaymanager draait en luistert
			    naar verzoeken van externe werkstations, kan het ook nog zijn dat
			    de displaymanager eenvoudigweg het ip-adres en de hostnaam
			    niet aan elkaar kan koppelen. Het werkstation moet genoemd worden in
			    het bestand <filename>/etc/hosts</filename>, of de DNS tabellen
			    moeten worden aangepast.
                        </para>
                    </listitem>

                </orderedlist>
            </para>
        </sect2>
    </sect1>
</chapter>


<chapter>
    <title>Kernels</title>
    <para>
        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
	<command>Linux Progress Patch (LPP)</command>.
    </para>

    <sect1>
        <title>Beschikbare standaard LTSP kernels</title>
        <para>
            Het kernel pakket van LTSP bevat twee kernels. Een met, en een zonder
	    'Linux Progress Patch'.
        </para>

        <para>
            Voor beide kernels is de NFS swap patch al toegepast.
        </para>
    </sect1>

    <sect1>
        <title>Zelf een Kernel maken</title>
        <para>
            De LTSP kernel kan op twee manier worden geconfigureerd.
            De standaardmethode is met een zogenaamde 'Initial Ram Disk' (in het kort:
	    <command>initrd</command>), 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 
	    <command>initrd</command>.
	    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.
        </para>

        <para>
	     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.
        </para>

        <para>
            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.
        </para>

        <sect2>
            <title>Verkrijgen van de broncode voor de kernel</title>

            <para>
                Als u een aangepaste kernel wilt maken dan is het meestal een goed idee om
		met een 'schone' versie van de broncode van <command>ftp.kernel.org</command>
		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.
            </para>

            <para>
                Kies een broncodepakket en bewaar deze in
		de map <filename class="directory">/usr/src</filename>.
		De kernels worden opgeslagen in de map
		<filename class="directory">/pub/linux/kernel</filename> 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 <command>devfs</command>.
            </para>

            <para>
                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.
            </para>

            <para>
                Voor dit voorbeeld wordt kernel versie 2.4.9 gebruikt. De volledige padnaam voor
		deze kernel is:
<filename>ftp://ftp.kernel.org/pub/linux/kernel/v2.4/linux-2.4.9.tar.bz2</filename>
            </para>

            <para>
                Plaats de broncode van de kernel in de map
                <filename class="directory">/usr/src</filename>.
		Let op! Als het bestand met untar wordt uitgepakt wordt de broncode in de map
		<filename>linux</filename> geplaatst. Als deze map al bestaat wordt de eventuele
		inhoud overschreven! Hernoem de map voordat het bestand wordt uitgepakt.
            </para>

            <para>
                Het broncodepakket is gecomprimeerd met het commando
		<command>bzip2</command>. Het moet daarom eerst worden ge-
		decomprimeerd voordat het wordt uitgepakt met het commando <command>tar</command>.
		Het de-comprimeren en uitpakken kan met het volgende commando:
                <screen>
bunzip2 &#60;linux-2.4.9.tar.bz2 | tar xf - </screen>
                Na het uitpakken resulteert een map genaamd <filename>linux</filename>.
		Meestal hernoem ik nu de map naar iets met meer betekenis zoals:
                <screen>
mv linux linux-2.4.9 </screen>
                Ga naar de nieuwe map zodra deze hernoemd is:
                <screen>
cd linux-2.4.9 </screen>
            </para>
            <para>
                Meestal verander ik nog wat aan de <filename>Makefile</filename>
		voordat ik verder ga met het configureren van de nieuwe kernel. Aan het begin van
		het bestand staat een variabele genaamd <command>EXTRAVERSION</command>.
		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:
                <screen>
VERSION = 2
PATCHLEVEL = 4
SUBLEVEL = 9
EXTRAVERSION = -ltsp-1

KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION) </screen>
            </para>
        </sect2>

        <sect2>
            <title>Kernel Patches</title>
            <para>
                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.
            </para>
            <sect3>
                <title>NFS Swap patch</title>
                <para>
                    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.
                </para>
                <para>
                    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:
                    <screen>
patch -p1 --dry-run &#60;../linux-2.4.9-nfs-swap.diff </screen>
                    Hiermee wordt gekeken of de patch probleemloos
		     kan worden uitgevoerd. Als er geen foutmeldingen zijn kan de patch
		     worden toegepast zonder de optie <command>--dry-run</command>:
                    <screen>
patch -p1 &#60;../linux-2.4.9-nfs-swap.diff </screen>
                </para>
            </sect3>
            <sect3>
                <title>Linux Progress Patch (LPP)</title>
                <para>
                    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.
		</para>
                <para>
                    Net als de NFS swap patch kan de LPP patch worden getest
		    met het commando:
                    <screen>
patch -p1 --dry-run &#60;../lpp-2.4.9 </screen>
                    Als de test zonder problemen verloopt kan de patch worden
		    toegepast met:
                    <screen>
patch -p1 &#60;../lpp-2.4.9 </screen>
                </para>
            </sect3>
        </sect2>

        <sect2>
            <title>Het configureren van kernel opties</title>
            <para>
                Het configureren van de opties voor een nieuwe kernel kan op verschillende manieren:
                <itemizedlist>
                    <listitem>
                        <para>make xconfig</para>
                        <para>
                            Dit start het X-Windows programma voor het configureren
			    van kernelopties.
			</para>
                    </listitem>
                    <listitem>
                        <para>make menuconfig</para>
                        <para>
                            Dit start het tekstscherm gebaseerde programma
			    voor het configureren van de kernelopties.
                        </para>
                    </listitem>
                    <listitem>
                        <para>make config</para>
                        <para>
                            Dit start het meest eenvoudige programma voor het instellen van kernelopties.
			    De opties worden regel voor regel gepresenteerd.
                        </para>
                    </listitem>
                </itemizedlist>
            </para>

            <sect3>
                <title>Kernel configuratie met initrd</title>
                <para>

                    Voor het configureren van een kernel met initrd moeten de 
		    volgende opties worden ingesteld:
                    <itemizedlist>

                        <listitem>
                            <para>
                                File systems -> /dev filesystem support
                            </para>
                            <para>
                                /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.
                            </para>
                        </listitem>
                        <listitem>
                            <para>
                                Block devices -> RAM disk support
                            </para>
                            <para>
                                De kernel van een werkstation moet het gebruik van een RAM disk
				ondersteunen. Dit kan worden ingeschakeld in de sectie 'Block devices'.
                            </para>
                        </listitem>
                        <listitem>
                            <para>
                                Block devices -> Initial RAM disk (initrd)
                                support
                            </para>
                            <para>
                            	Dit moet worden ingeschakeld.
                            </para>
                        </listitem>
                        <listitem>
                            <para>
                                Processor type and features -> Processor family
                            </para>
                            <para>
                                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.
                            </para>
                        </listitem>
                        <listitem>
                            <para>
                                File systems -> Network file systems -> NFS
                                Client support
                            </para>
                            <para>
                                Het werkstation koppelt zijn root bestandssysteem via NFS, dus 'NFS client support'
				moet worden ingeschakeld.
                            </para>
                        </listitem>
                    </itemizedlist>
                    Dit zijn de minimaal benodigde opties. Om de kernel zo klein mogelijk te maken
		    is het raadzaam zoveel mogelijk ongebruikte opties in de kernel uit te schakelen.
                </para>
            </sect3>

            <sect3>
                <title>Kernel configuratie zonder initrd</title>
                <para>
                    De configuratie van een kernel zonder initrd verschilt in een aantal opzichten
		    van de configuratie van een kernel met initrd:
                    <itemizedlist>
                        <listitem>
                            <para>
                                Block devices -> RAM disk support
                            </para>
                            <para>
                                De kernel van een LTSP werkstation moet het gebruik van een RAM disk
				ondersteunen.
                            </para>
                        </listitem>

                        <listitem>
                            <para>
                                Block devices -> Initial RAM disk (initrd)
                                support
                            </para>
                            <para>
                                Dit moet worden uitgeschakeld.
                            </para>
                        </listitem>
                        <listitem>
                            <para>
                                Networking options -> IP:kernel level
                                autoconfiguration
                            </para>
                            <para>
                                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.
                            </para>
                            <para>
                                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.
                            </para>
                        </listitem>
                        <listitem>
                            <para>
                                Network device support -> Ethernet (10 or
                                100Mbit)
                            </para>
                            <para>
                                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.
                            </para>
                        </listitem>
                        <listitem>
                            <para>
                                File systems -> /dev filesystem support
                            </para>
                            <para>
                                Vanaf LTSP versie 2.09pre2 is ondersteuning
				voor <command>devfs</command> nodig.
				Dit geldt zowel voor kernels met, als voor kernels zonder initrd.
                            </para>
                        </listitem>
                        <listitem>
                            <para>
                                File systems -> Automatically mount at boot
                            </para>
                            <para>
                                Als initrd niet wordt gebruikt moet het /dev bestandssysteem
				door de kernel zelf worden aangekoppeld. Zet deze optie daarom op 'Y'.
                            </para>
                        </listitem>
                        <listitem>
                            <para>
                                File systems -> Network file systems -> NFS
                                Client support
                            </para>
                            <para>
                                Het root bestandssysteem wordt door het werkstation via NFS
				aangekoppeld dus moet 'NFS client support' worden ingeschakeld.
                            </para>
                        </listitem>
                    </itemizedlist>
                </para>
            </sect3>
        </sect2>

        <sect2>
            <title>Het compileren van de kernel</title>

            <para>
                Om een en ander te vergemakkelijken is een kopie van het
		bestand <filename>.config</filename> opgenomen in het
		ltsp_initrd_kit pakket. Dit bestand kan worden gekopiëerd naar de map
		<filename>/usr/src/linux-2.4.9</filename>.
            </para>

            <para>
                Wanneer het instellen van de kernel opties klaar is kan worden begonnen
		met compileren. De volgende commando's moeten daarvoor worden uitgevoerd:
                <screen>
make dep
make clean
make bzImage
make modules
make modules_install </screen>
                Deze commando's kunnen ook allemaal in dezelfde regel worden opgegeven:
                <screen>
make dep &amp;&amp; make clean &amp;&amp; make bzImage &amp;&amp; make modules
&amp;&amp; make modules_install </screen>
                Met de dubbele ampersand (&amp;) wordt aangegeven dat het volgende commando alleen 
		wordt uitgevoerd als het voorgaande commando succesvol is afgerond. Het tweede commando 
		wordt dus pas uitgevoerd na het eerste, het derde commando wordt uitgevoerd na het tweede, enz.
              </para>
            <para>
                Als het compileren klaar is de bestandsnaam van de nieuwe kernel
                <filename
class="directory">/usr/src/linux-2.4.9/arch/i386/boot/bzImage</filename>.
            </para>
        </sect2>

        <sect2>
            <title>Het 'merken' van de kernel ten behoeve van Etherboot</title>
            <para>
                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
		'<command>mknbi-linux</command>'.
              </para>
            <para>
                In het pakket ltsp_initrd_kit is shell script <command>buildk</command>
		opgenomen waar alle commando's in staan die nodig zijn voor het
		prepareren van een kernel ten behoeve van het opstarten van een netwerk.
            </para>
        </sect2>
    </sect1>
</chapter>


<chapter>
    <title>lts.conf items</title>
    <para>
        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.
    </para>
    <para>
        Daarom ontwierpen we een manier om de configuratie van ieder werkstation
	op te geven. Het configuratiebestand heet
	<filename>lts.conf</filename>, en staat in de map
	<filename class="directory">/opt/ltsp/i386/etc</filename>.
    </para>

    <para>
        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]'.
    </para>

    <sect1>
        <title>lts.conf voorbeeldbestand</title>
        <para>
            Hier is een voorbeeld van een lts.conf bestand:
            <screen>
[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 </screen>
        </para>
    </sect1>

    <sect1>
        <title>Beschikbare lts.conf parameters</title>
        <sect2>
            <title>Algemene parameters</title>
            <variablelist>

                <varlistentry>
                    <term><command>Commentaar</command></term>
                    <listitem>
                        <para>
                            Commentaar begint met een hekje '#' en loopt door tot het einde
			    van de regel.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>LTSP_BASEDIR</command></term>
                    <listitem>
                        <para>
                            Dit geeft aan waar het LTSP root bestandssysteem zich bevindt.
			    De standaard waarde is <filename>/opt/ltsp</filename>.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>SERVER</command></term>
                    <listitem>
                        <para>
                            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
			    <command>192.168.0.254</command> gebruikt.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>SYSLOG_HOST</command></term>
                    <listitem>
                        <para>
                            Indien de log meldingen naar een andere dan de standaard
			    server moeten worden gestuurd kan dat hier worden opgegeven.
			    Standaard wordt 'SERVER' gebruikt.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>NFS_SERVER</command></term>
                    <listitem>
                        <para>
                            Het ip-adres van de NFS server indien de
			    map <filename>/home</filename> moet worden
			    aangekoppeld. Standaard wordt 'SERVER' gebruikt.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>USE_NFS_SWAP</command></term>
                    <listitem>
                        <para>
				Zet deze parameter op <command>Y</command>
				om NFS swap te gebruiken. Standaardwaarde is <command>N</command>.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>SWAPFILE_SIZE</command></term>
                    <listitem>
                        <para>
                            Dit stelt de grootte van het swapbestand in. Standaard is <command>64m</command>.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>SWAP_SERVER</command></term>
                    <listitem>
                        <para>
                            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.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>NFS_SWAPDIR</command></term>
                    <listitem>
                        <para>
                            De naam van de map op de server die wordt geëxporteerd
			    door NFS. De standaardwaarde is <filename>/var/opt/ltsp/swapfiles</filename>.
			    Zorg er voor dat deze map ook in het bestand 
			    <filename>/etc/exports</filename> wordt genoemd.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>TELNET_HOST</command></term>
                    <listitem>
                        <para>
                            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
			    <command>SERVER</command> gebruikt.
                        </para>
                        <para>
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>DNS_SERVER</command></term>
                    <listitem>
                        <para>
                            Wordt gebruikt om het bestand resolv.conf aan te maken.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>SEARCH_DOMAIN</command></term>
                    <listitem>
                        <para>
                            Wordt gebruikt om het bestand resolv.conf aan te maken.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>SCREEN_01</command> thru
                          <command>SCREEN_12</command></term>
                    <listitem>
                        <para>
                            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>
SCREEN_01   = startx
SCREEN_02   = shell</screen>
                        </para>

                        <para>
                            Op dit moment zijn de volgende waarden mogelijk.
			     <itemizedlist>
                              <listitem><para>startx</para></listitem>
                              <listitem><para>telnet</para></listitem>
                              <listitem><para>rdesktop</para></listitem>
                              <listitem><para>shell</para></listitem>
                            </itemizedlist>
                            Kijk in de map <filename
class="directory">/opt/ltsp/i386/etc/screen.d</filename>
                            voor meer schermscripts, of schrijf een eigen schermscript 
			    en plaats die in deze map.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>MODULE_01</command> thru
                          <command>MODULE_10</command></term>
                    <listitem>
                        <para>
                            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:
                            <screen>
MODULE_01   = uart401.o
MODULE_02   = "sb.o io=0x220 irq=5 dma=1"
MODULE_03   = opl3.o </screen>
                        </para>

                        <para>
                            Indien de opgegeven parameter waarde een volledige
			    padnaam is, wordt het commando <command>insmod</command>
			    gebruikt om de module te laden. Anders wordt het commando
			    <command>modprobe</command> gebruikt.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>RAMDISK_SIZE</command></term>
                    <listitem>
                        <para>
                            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 <command>RAMDISK_SIZE = 1024</command> op
			    om een ramdisk van 1 megabyte te maken.
                        </para>
                        <para>
                            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.
                        </para>
                        <para>
                            De standaard waarde voor deze parameter is 1024 ( 1 mb )
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>RCFILE_01</command> thru
                          <command>RCFILE_10</command></term>
                    <listitem>
                        <para>
                            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.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>SOUND</command></term>
                    <listitem>
                        <para>
                            Indien het LTSP Sound pakket (Geluidsondersteuning)
			    is geïnstalleerd moet deze paramater op <command>Y</command>
			     worden ingesteld. In dat geval wordt het script
			     <command>rc.sound</command> uitgevoerd
			     om de geluidskaart en de daemon op te starten.
			     De standaardwaarde is <command>N</command>.
                        </para>
                    </listitem>
                </varlistentry>

            </variablelist>
        </sect2>

        <sect2>
            <title>X-Windows parameters</title>
            <variablelist>
                <varlistentry>
                    <term><command>XDM_SERVER</command></term>
                    <listitem>
                        <para>
                            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.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>XSERVER</command></term>
                    <listitem>
                        <para>
                            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 <command>auto</command> 
			    gezet worden om aan te geven dat automatische detectie
			    gebruikt moet worden.
                        </para>

                        <para>
                            Voor ISA kaarten, of in andere gevallen waarin dat nodig is, kan de naam
			    van de driver of X server worden opgegeven.
                        </para>
                        <para>
			Als de waarde begint met <command>XF86_</command> dan wordt
			XFree86 3.3.6 gebruikt. Anders wordt X.org 6.7.0 gebruikt.
			De standaardwaarde voor deze parameter is
                            <command>auto</command>.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>X_MODE_0</command> tot en met
                          <command>X_MODE_2</command></term>
                    <listitem>
                        <para>
                            Er kunnen maximaal 3 'modelines' worden opgegeven.
			    Een modeline kan twee verschillende types invoer bevatten: een resolutie
			    of een volledige modeline.
                            <programlisting width=80>
X_MODE_0 = 800x600

   of

X_MODE_0 = 800x600 60.75 800 864 928 1088 600 616 621 657 -HSync -VSync
                            </programlisting>
                        </para>
                        <para>
                            Indien geen X_MODE_x parameter wordt ingesteld dan worden 
			    ingebouwde modelines gebruikt met de resoluties 
       			1024x768, 800x600 and 640x480.
                        </para>
                        <para>
                            Indien een of meer X_MODE_x parameters worden opgegeven
			    hebben die voorrang op de ingebouwde modelines.
                        </para>

                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>X_MOUSE_PROTOCOL</command></term>
                    <listitem>
                        <para>
				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 <command>"PS/2"</command>.
                         </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>X_MOUSE_DEVICE</command></term>
                    <listitem>
                        <para>

			    Dit is de poort waar de muis op aangesloten is. Voor 
			    een seriële muis is dat een seriële poort zoals 
			    <command>/dev/ttyS0</command> of
                            <command>/dev/ttyS1</command>. Voor een 
			    PS/2 muis is de waarde <command>/dev/psaux</command>.
			    De standaardwaarde is <command>/dev/psaux</command>.
                               </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>X_MOUSE_RESOLUTION</command></term>
                    <listitem>
                        <para>
                            Dit is de waarde voor de 'Resolution' parameter in het bestand
			    <command>XF86Config</command>. Voor een seriële muis is de gebruikelijke 
			    waarde <command>50</command>, voor een PS/2 muis
			    <command>400</command>. De standaardwaarde is
			    <command>400</command>.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>X_BUTTONS</command></term>
                    <listitem>
                        <para>
                            Deze parameter vertelt het systeem hoeveel knoppen de muis heeft.
			    Wordt meestal op <command>2</command> of <command>3</command>
			    gezet. De standaard waarde is <command>3</command>.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>X_MOUSE_EMULATE3BTN</command></term>
                    <listitem>
                        <para>
                            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 <command>N</command>.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>X_MOUSE_BAUD</command></term>
                    <listitem>
                        <para>
                            De baudrate van de seriële muispoort. De standaard waarde is
			    <command>1200</command>.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>X_COLOR_DEPTH</command></term>
                    <listitem>
                        <para>
                            Dit is het aantal bits voor de kleurdiepte. Mogelijke waarden zijn
			    <command>8</command>,
                            <command>15</command>, <command>16</command>,
                            <command>24</command> en <command>32</command>.
			    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 <command>16</command>.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>USE_XFS</command></term>
                    <listitem>
                        <para>
				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
				 <command>Y</command> en <command>N</command>.
				 De standaardwaarde is <command>N</command>.
				 Indien voor een fontserver gekozen wordt, kan met de
				 parameter <command>XFS_SERVER</command> worden
				 ingesteld om welke computer het dan gaat.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>XFS_SERVER</command></term>
                    <listitem>
                        <para>
                            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 <command>SERVER</command> gebruikt.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>X_HORZSYNC</command></term>
                    <listitem>
                        <para>
                            
			    Dit stelt de <command>HorizSync</command> parameter in van het
			    X.org configuratiebestand. De standaardwaarde is
			    <command>"31-62"</command>.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>X_VERTREFRESH</command></term>
                    <listitem>
                        <para>
                            Dit stelt de <command>VertRefresh</command> parameter in van het
			    X.org configuratiebestand. De standaardwaarde is
			    <command>"55-90"</command>.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>XF86CONFIG_FILE</command></term>
                    <listitem>
                        <para>
                            Het is ook mogelijk een volledig zelfgemaakt XF86Config bestand te
			    gebruiken. Het bestand moet dan in de map
			     <command>/opt/ltsp/i386/etc</command> worden
			     gezet en de naam moet worden meegegeven met dit item.
			     De keuze van de bestandsnaam is vrij.
			     Een voorbeeld:
                            <screen>
XF86CONFIG_FILE = XF86Config.ws004 </screen>
                        </para>
                    </listitem>
                </varlistentry>
            </variablelist>
        </sect2>

        <sect2>
            <title>Touch screen parameters</title>
            <variablelist>
                <varlistentry>
                    <term><command>USE_TOUCH</command></term>
                    <listitem>
                        <para>
			Indien een zogenaamd 'touch screen' (aanraakscherm) wordt gebruikt
			kan dat worden aangegeven via dit item met de waarde
			<command>Y</command>. In dat geval kunnen specifieke instellingen van
			het touchscreen worden opgegeven met extra items.
			De standaardwaarde is <command>N</command>.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>X_TOUCH_DEVICE</command></term>
                    <listitem>
                        <para>
                            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
			    <command>/dev/ttyS0</command>. Er is geen standaardwaarde voor dit item.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>X_TOUCH_MINX</command></term>
                    <listitem>
                        <para>
                            Een calibratiewaarde voor een EloTouch touch screen.
			    Standaard <command>433</command>.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>X_TOUCH_MAXX</command></term>
                    <listitem>
                        <para>

			     Een calibratiewaarde voor een EloTouch touch screen.
			    Standaard <command>3588</command>.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>X_TOUCH_MINY</command></term>
                    <listitem>
                        <para>
                             Een calibratiewaarde voor een EloTouch touch screen.
			    Standaard <command>569</command>.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>X_TOUCH_MAXY</command></term>
                    <listitem>
                        <para>

			     Een calibratiewaarde voor een EloTouch touch screen.
			    Standaard <command>3526</command>.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>X_TOUCH_UNDELAY</command></term>
                    <listitem>
                        <para>
                             Een calibratiewaarde voor een EloTouch touch screen.
			    Standaard <command>10</command>.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>X_TOUCH_RPTDELAY</command></term>
                    <listitem>
                        <para>
                             Een calibratiewaarde voor een EloTouch touch screen.
			    Standaard <command>10</command>.
                        </para>
                    </listitem>
                </varlistentry>
            </variablelist>
        </sect2>

        <sect2>
            <title>Parameters voor Lokale toepassingen</title>
            <variablelist>
                <varlistentry>
                    <term><command>LOCAL_APPS</command></term>
                    <listitem>
                        <para>
                            Als de werkstations in staat moeten zijn om lokaal
			    toepassingen te draaien moet dit item op
			    <command>Y</command> 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 <command>N</command>.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>NIS_DOMAIN</command></term>
                    <listitem>
                        <para>
                            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
			    <command>ltsp</command>.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>NIS_SERVER</command></term>
                    <listitem>
                        <para>
                            Stel dit item in op het ip-adres van de NIS server als een
			    broadcast naar deze sever ongewenst is.
                        </para>
                    </listitem>
                </varlistentry>
            </variablelist>
        </sect2>

        <sect2>
            <title>Toetsenbord parameters</title>
            <para>
		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.
            </para>
            <para>
                De waarden van de bovengenoemde parameters komen uit de documentatie van
		X.org. Wat voor X.org geldig is geldt ook voor deze parameters.
            </para>
            <para>
                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.
            </para>
            <variablelist>
                <varlistentry>
                    <term><command>XkbTypes</command></term>
                    <listitem>
                        <para>
                            De standaardwaarde hiervoor is het woord
			    <command>default</command>'.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>XkbCompat</command></term>
                    <listitem>
                        <para>
                            De standaardwaarde hiervoor is het woord
			    '<command>default</command>'.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>XkbSymbols</command></term>
                    <listitem>
                        <para>
                            De standaardwaarde hiervoor is
                            '<command>us(pc101)</command>'.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>XkbModel</command></term>
                    <listitem>
                        <para>
                    	De standaardwaarde hiervoor
                            is '<command>pc101</command>'.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>XkbLayout</command></term>
                    <listitem>
                        <para>
                            De standaardwaarde hiervoor is '<command>us</command>'.
                        </para>
                    </listitem>
                </varlistentry>
            </variablelist>
        </sect2>

        <sect2>
            <title>Printer configuratieparameters</title>
            <para>
                Er kunnen maximaal 3 printers op het werkstation worden aangesloten.
		Met de volgende items
		in het bestand <command>lts.conf</command>
		kan een combinatie van seriële en parallelle printers worden ingesteld:
            </para>

            <variablelist>
                <varlistentry>
                    <term><command>PRINTER_0_DEVICE</command></term>
                    <listitem>
                        <para>
                            De device naam van de eerste printer. Het gaat om namen als:
                            <command>/dev/lp0</command>,
                            <command>/dev/ttyS0</command> of
                            <command>/dev/ttyS1</command>.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>PRINTER_0_TYPE</command></term>
                    <listitem>
                        <para>
                            Het type printer. Geldige keuzes zijn:
			    '<command>P</command>' voor Parallel,
                            en '<command>S</command>' voor Serieel.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>PRINTER_0_PORT</command></term>
                    <listitem>
                        <para>
                            HEt TCP/IP poortnummer. Standaard wordt de waarde
			    '<command>9100</command>' gebruikt.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>PRINTER_0_SPEED</command></term>
                    <listitem>
                        <para>
                            Als het een seriële printer betreft kan hier de
			    instelling voor baudrate opgegeven worden. De standaardwaarde is
                            '<command>9600</command>'.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>PRINTER_0_FLOWCTRL</command></term>
                    <listitem>
                        <para>
                            Voor seriële printers kan hier de flowcontrol
			    worden opgegeven. Ofwel  '<command>S</command>' voor
                            Software (XON/XOFF) flow control, ofwel
                            '<command>H</command>' voor Hardware (CTS/RTS)
                            flow control.  Als geen van beide wordt opgegeven wordt standaard
			    '<command>S</command>' gebruikt
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>PRINTER_0_PARITY</command></term>
                    <listitem>
                        <para>
                            Voor seriële printers kan hier de pariteit worden ingesteld.
			    De mogelijke keuzes zijn: '<command>E</command>'-Even,
                            '<command>O</command>'-Odd of
                            '<command>N</command>'-None.  Indien niets wordt opgegeven wordt
			    '<command>N</command>' gebruikt.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>PRINTER_0_DATABITS</command></term>
                    <listitem>
                        <para>
                            Voor seriële printers kan hier het aantal databits worden ingesteld.
			    Mogelijke keuzes zijn:
                            '<command>5</command>', '<command>6</command>',
                            '<command>7</command>' en '<command>8</command>'.
                            Indien niet opgegeven wordt '<command>8</command>' gebruikt.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>PRINTER_1_DEVICE</command></term>
                    <listitem><para>Tweede printer device naam</para></listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>PRINTER_1_TYPE</command></term>
                    <listitem><para>Tweede printer device type</para></listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>PRINTER_1_PORT</command></term>
                    <listitem><para>Tweede printer device TCP/IP poort
		    </para></listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>PRINTER_1_SPEED</command></term>
                    <listitem><para>Tweede printer baud
                            rate instelling (serieel)</para></listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>PRINTER_1_FLOWCTRL</command></term>
                    <listitem><para>Tweede printer flow
                            control instelling (serieel)</para></listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>PRINTER_1_PARITY</command></term>
                    <listitem><para>Tweede printer
                             pariteit instelling (serieel)</para></listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>PRINTER_1_DATABITS</command></term>
                    <listitem><para>Second printer data
                              bits (serial)</para></listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>PRINTER_2_DEVICE</command></term>
                    <listitem><para>Derde printer device
                              naam</para></listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>PRINTER_2_TYPE</command></term>
                    <listitem><para>Derde printer device
                              type</para></listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>PRINTER_2_PORT</command></term>
                    <listitem><para>Derde printer device
                              TCP/IP poort</para></listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>PRINTER_2_SPEED</command></term>
                    <listitem><para>Derde printer baud
                              rate instelling (serieel)</para></listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>PRINTER_2_FLOWCTRL</command></term>
                    <listitem><para>Derde printer flow
                              control instelling (serieel)</para></listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>PRINTER_2_PARITY</command></term>
                    <listitem><para>Derde printer pariteit instelling
(serieel)</para></listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>PRINTER_2_DATABITS</command></term>
                    <listitem><para>Derde printer data
                              bits instelling (serieel)</para></listitem>
                </varlistentry>
            </variablelist>
        </sect2>
    </sect1>
</chapter>


<chapter>
    <title>Lokale toepassingen</title>
    <para>
        Binnen een LTSP omgeving kunnen toepassingen zowel lokaal als op afstand, dwz op de server,
	draaien.
    </para>

    <para>
        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.
    </para>

    <para>
        Dit is een functionaliteit die eigen is aan X windows. Het werkstation werkt als een
	standaard 'X Windows terminal'.
    </para>

    <para>
        Als een gebruiker een toepassing op het werkstation wil laten uitvoeren
	moet het werkstation een aantal dingen van de gebruiker weten zoals:
        <itemizedlist>
            <listitem>
                <para>
                    gebruikersnummer (User id)
                </para>
            </listitem>
            <listitem>
                <para>
                    De primaire gebruikersgroep waartoe de gebruiker behoort (group)
                </para>
            </listitem>
            <listitem>
                <para>
                    De persoonlijke map /home van de gebruiker
                </para>
            </listitem>
        </itemizedlist>
	LTSP maakt gebruik van Network Information Service, kortweg NIS (voorheen
	genaamd <emphasis role="strong">Yellow Pages</emphasis>) om de gebruikers-
	en groepsinformatie beschikbaar te maken aan werkstations.
    </para>

    <sect1>
        <title>Voordelen van het lokaal draaien van programma's</title>
        <para>
            Er zijn voordelen aan het laten uitvoeren van toepassingen op het werkstation.
        </para>
        <para>
            <itemizedlist>
                <listitem>
                    <para>
                        Het vermindert de belasting op de server. Het lokaal uitvoeren
			van toepassingen kan, als het werkstation krachtig genoeg is,  leiden tot
			betere prestaties. Vooral bij het uitvoeren van
			geheugenintensieve programma's zoals Netscape 
			op een druk bezette server van een groot netwerk.
                    </para>
                </listitem>
                <listitem>
                    <para>
                        Op hol geslagen programma's hebben geen invloed op andere gebruikers.
                    </para>
                </listitem>
                <listitem>
                    <para>
                        Ondersteuning voor geluid is voor lokale programma's op het werkstation
			makkelijker te configureren.
                    </para>
                </listitem>
            </itemizedlist>
        </para>
    </sect1>

    <sect1>
        <title>Instellingen voor het gebruik van lokale toepassingen</title>
        <para>
            Het gebruik van lokale toepassingen stelt echter ook bepaalde eisen.
            <itemizedlist>
                <listitem>
                    <para>
                        Hogere eisen aan het werkstation. Er is meer RAM en een krachtiger
			processor nodig. 64mb op het werkstation is een leuk begin.
                    </para>
                </listitem>
                <listitem>
                    <para>
                        NIS- Om programma's op het werkstation te kunnen draaien
			moet men zich eerst bij het werkstation identificeren. Dat wil zeggen,
			het werkstation moet weten wie de gebruiker is. Dit vereist identificatie met behulp van
			een wachtwoord. Voor de identificatieprocedure over het
			netwerk is NIS gekozen.
                    </para>
                </listitem>
                <listitem>
                    <para>
                        Er moeten een aantal extra
			mappen worden geëxporteerd voor het aankoppelen met NFS.
                    </para>
                </listitem>
                <listitem>
                    <para>
                        Men moet genoegen nemen met het iets langzamer opstarten van
			toepassingen. Dit komt omdat ze via NFS ingelezen moeten worden, wat extra
			netwerkactiviteit veroorzaakt. Bovendien kan geen voordeel meer worden gehaald uit
			het gebruik van overlappende programmaonderdelen in het geheugen van de server,
			wat er op de server voor kan zorgen dat herhaaldelijk inladen van het programma minder
			tijd kost.
                    </para>
                </listitem>
            </itemizedlist>
        </para>
    </sect1>

    <sect1>
        <title>Server Configuratie voor Lokale toepassingen</title>
        <sect2>
            <title>lts.conf items</title>
            <para>
                In het bestand <filename>lts.conf</filename>
		moeten een paar items worden
		ingesteld:
                <variablelist>
                  <varlistentry>
                    <term><command>LOCAL_APPS</command></term>
                    <listitem>
                      <para>
                        Dit item moet op <command>Y</command> worden
			gezet. Hierdoor wordt de volgende opeenvolging van
			acties uitgevoerd tijdens het opstarten van het werkstation:
                        <orderedlist>
                          <listitem>
                            <para>
                              De <filename>/home</filename> map op de server wordt 
			      aangekoppeld via NFS.
                            </para>
                          </listitem>
                          <listitem>
                            <para>
                              Het bestand <filename>/var/yp/nicknames</filename> wordt op het werkstation
			      aangemaakt.
                            </para>
                          </listitem>
                          <listitem>
                            <para>
                              De <command>portmapper</command> op het werkstation wordt gestart.
                            </para>
                          </listitem>
                          <listitem>
                            <para>
                              <command>xinetd</command> wordt op het werkstation gestart.
                            </para>
                          </listitem>
                          <listitem>
                            <para>
                              Het bestand <filename>/etc/yp.conf</filename> wordt op het werkstation
			      aangemaakt.
                            </para>
                          </listitem>
                          <listitem>
                            <para>
                              Het commando <command>domainname</command> wordt uitgevoerd
			      met de waarde van <command>NIS_DOMAIN</command> uit het bestand
			      lts.conf.
                            </para>
                          </listitem>
                          <listitem>
                            <para>
                              Het commando <command>ypbind</command> wordt
			      op het werkstation uitgevoerd.
                            </para>
                          </listitem>
                        </orderedlist>
                      </para>
                    </listitem>
                  </varlistentry>
                  <varlistentry>
                    <term><command>NIS_DOMAIN</command></term>
                    <listitem>
                      <para>
                        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.
                      </para>
                    </listitem>
                  </varlistentry>
                  <varlistentry>
                    <term><command>NIS_SERVER</command></term>
                    <listitem>
                      <para>

			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.
                      </para>
                    </listitem>
                  </varlistentry>
                </variablelist>
            </para>
        </sect2>

        <sect2>
            <title>Network Information Service - NIS</title>
            <para>
                NIS is een service met clients en servers. Op de server draait een daemon 
		die verzoeken van werkstations accepteerd. Die daemon heet 
		<command>ypserv</command>.
            </para>
            <para>
                Op het werkstation draait een proces genaamd <command>ypbind</command>.
		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.
            </para>
            <para>
                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.
            </para>
            <para>
                Als NIS nog NIET op het netwerk aanwezig is moet de server worden geconfigureerd
		om <command>ypserv</command> op te starten.
            </para>
            <para>
                Voor een volledige uiteenzetting over het opzetten van een
		NIS server wordt verwezen naar
		<emphasis role="strong">The Linux NIS(YP)/NYS/NIS+HOWTO</emphasis>
		op de LDP website.
		Onder aan dit document staat een lijst met verwijzingen voor verdere
		informatie.
            </para>
        </sect2>
    </sect1>

    <sect1>
        <title>Configuratie van toepassingen</title>
        <para>
		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.
        </para>

        <para>
            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 <filename>/bin</filename>,
            <filename>/usr/bin</filename>, <filename>/lib</filename> en
            <filename>/usr</filename>.
        </para>

        <para>
            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.
        </para>

        <para>
            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.
        </para>

        <para>
            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
	    <filename>/opt/ltsp/i386/usr/local/netscape</filename>.
	    Het gaat om java classes, hulpbestanden, programmabestanden en scripts die in de
	    genoemde map worden geïnstalleerd.
        </para>

        <para>
            Netscape heeft geen extra systeembibliotheken nodig, dus er wordt
	    niets in de map <filename>/opt/ltsp/i386/lib</filename>
	    geplaatst. Een hoop toepassingen hebben echter wel extra bibliotheken
	    nodig.
        </para>

        <para>
            Hoe kan nu worden bepaald welke bibliotheken voor een toepassing nodig
	    zijn?
	    Welnu, daar kan het commando <command>ldd</command> voor worden
	    gebruikt.
        </para>
        <para>
            Stel dat we een bepaalde toepassing lokaal willen draaien. Als voorbeeld
	    nemen we  <command>gaim</command>. Dat is een AOL instant messaging
	    client die het mogelijk maakt met andere mensen op een AOL forum te
	    communiceren.
        </para>
        <para>
            Eerst moet de locatie van het <command>gaim</command>
	    programma bestand worden vastgesteld. Op een Redhat 7.2 systeem
	    is dat in de map <filename>/usr/bin</filename>.
        </para>
        <para>
            Als de locatie gevonden is kan <command>ldd</command> op de volgende
	    manier worden aangeroepen:
            <programlisting>
[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)
</programlisting>
        </para>
        <para>
            De uitdraai hierboven laat alle gedeelde bibliotheken zien die voor het draaien
	    van het programma <command>gaim</command> nodig zijn.
        </para>
        <para>
	    De meeste programma's die gedeelde bibliotheken gebruiken
	    vertrouwen op <command>ld-linux</command> om de benodigde
	    bibliotheken te lokaliseren en te laden.
	    Echter, sommige programma's laden hun bibliotheken handmatig, met
	    de functieaanroep <command>dlopen()</command>. Voor die toepassingen
	    werkt <command>ldd</command> niet. In dat geval moet
	    het commando <command>strace</command> gebruikt worden. Dit laat alle
	    <command>dlopen()</command> aanroepen zien, met de naam
	    naam van de bibliotheken.
        </para>
        <para>
            Als de lijst met bibliotheken uiteindelijk compleet is, moeten de
	    betreffende bibliotheken gekopiëerd worden naar de juiste plaats
	    in de <filename>/opt/ltsp/i386</filename> mapstructuur.
        </para>

    </sect1>

    <sect1>
        <title>Het starten van lokale toepassingen</title>
        <para>
            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.
        </para>
        <para>
            Er is een truc nodig om het programma door het werkstation uit te laten voeren.
	    Dit kan met het commando <command>rsh</command>.
        </para>
        <para>
            Hier is een voorbeeld hoe het <command>gaim</command> programma
	    op het werkstation kan worden opgestart:
            <programlisting>
HOST=`echo $DISPLAY | awk -F: '{ print $1 }'`
rsh ${HOST} /usr/bin/gaim -display ${DISPLAY} </programlisting>
        </para>
        <para>
            Het bovenstaande voorbeeld kan in een <command>xterm</command>
	    venster worden ingetoetst, of het kan in een shell script worden gezet dat
	    via een ikoon op de desktop kan worden aangeroepen.
        </para>
        <para>
            Het opstarten van Netscape gebeurt op ongeveer dezelfde manier,
	    maar er is een extra omgevingsvariabele nodig die eerst moet worden
	    gedefinieerd.
            <programlisting>
HOST=`echo $DISPLAY | awk -F: '{ print $1 }'`
rsh ${HOST} MOZILLA_HOME=/usr/local/netscape \
       /usr/local/netscape/netscape -display ${DISPLAY} </programlisting>
        </para>
    </sect1>

</chapter>


<chapter>
    <title>Configuratievoorbeelden</title>
    <para>
        Bijna alle onderdelen van het werkstation kunnen worden ingesteld met items in het bestand
	<filename>lts.conf</filename> dat meestal staat in de map
	<filename>/opt/ltsp/i386/etc</filename>.
    </para>
    <sect1>
        <title>Seriële Muis</title>
        <para>
            Hier een voorbeeld van <filename>lts.conf</filename> items voor een tweeknops
	    seriële muis:
            <screen>
X_MOUSE_PROTOCOL    = "Microsoft"
X_MOUSE_DEVICE      = "/dev/ttyS0"
X_MOUSE_RESOLUTION  = 400
X_MOUSE_BUTTONS     = 2
X_MOUSE_EMULATE3BTN = Y
</screen>
        </para>
    </sect1>

    <sect1>
        <title>PS/2 Wielmuis</title>
        <para>
            Hier een voorbeeld van de <filename>lts.conf</filename> items voor een
	    Intellimouse:
            <screen>
X_MOUSE_PROTOCOL    = "IMPS/2"
X_MOUSE_DEVICE      = "/dev/psaux"
X_MOUSE_RESOLUTION  = 400
X_MOUSE_BUTTONS     = 5
X_ZAxisMapping      = "4 5"
</screen>
        </para>
    </sect1>

    <sect1>
        <title>USB printer op een ThinkNic</title>
        <para>
            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 <filename>lts.conf</filename>:
            <screen>
MODULE_01           = usb-ohci
MODULE_02           = printer
PRINTER_0_DEVICE    = /dev/usb/lp0
PRINTER_0_TYPE      = S
</screen>
        </para>
    </sect1>

    <sect1>
        <title>Geforceerd laden van de XFree86 3.3.6 Xserver op een werkstation</title>
        <para>
            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 <filename>lts.conf</filename>
	    met een item de naam worden opgegeven. Hier een voorbeeld waar de
	    <command>SVGA</command> X server wordt ingesteld:
            <screen>
XSERVER             = XF86_SVGA
</screen>
        </para>
    </sect1>


</chapter>


<chapter>
    <title>Andere informatiebronnen</title>
    <sect1>
        <title>Online referenties</title>
        <para>
            <orderedlist>
                <listitem>
                    <para>
                        De LTSP home page&nbsp;&nbsp;
                    </para>
                    <para>
                        <ulink url="http://www.LTSP.org">
                            <citetitle>www.LTSP.org</citetitle>
                        </ulink>
                    </para>
                    <para>
                    </para>
                </listitem>

                <listitem>
                    <para>
                        Schijfloze computers HOW-TO dokument voor Linux&nbsp;&nbsp;
                    </para>
                    <para>
                        <ulink
url="http://www.linuxdoc.org/HOWTO/Diskless-HOWTO.html">

<citetitle>www.linuxdoc.org/HOWTO/Diskless-HOWTO.html</citetitle>
                        </ulink>
                    </para>
                    <para>
                    </para>
                </listitem>

                <listitem>
                    <para>
                        Etherboot Home Page&nbsp;&nbsp;
                    </para>
                    <para>
                        <ulink url="http://etherboot.sourceforge.net">
                            <citetitle>etherboot.sourceforge.net</citetitle>
                        </ulink>
                    </para>
                    <para>
                    </para>
                </listitem>

                <listitem>
                    <para>
                        De Rom-O-Matic site&nbsp;&nbsp;
                    </para>
                    <para>
                        <ulink url="http://www.rom-o-matic.net">
                            <citetitle>www.Rom-O-Matic.net</citetitle>
                        </ulink>
                    </para>
                    <para>
                    </para>
                </listitem>

                <listitem>
                    <para>
                        X.org Muisondersteuning&nbsp;&nbsp;
                    </para>
                    <para>
                        <ulink url="http://www.xfree86.org/current/mouse.html">

<citetitle>www.xfree86.org/current/mouse.html</citetitle>
                        </ulink>
                    </para>
                    <para>
                    </para>
                </listitem>

                <listitem>
                    <para>
                        XFree86-Video-Timing-HOWTO&nbsp;&nbsp;
                    </para>
                    <para>
                        <ulink
url="http://www.linuxdoc.org/HOWTO/XFree86-Video-Timings-HOWTO.html">

<citetitle>www.linuxdoc.org/HOWTO/XFree86-Video-Timings-HOWTO.html</citetitle>
                        </ulink>
                    </para>
                    <para>
                    </para>
                </listitem>

                <listitem>
                    <para>
                        De Linux NIS(YP)/NYS/NIS+ HOWTO&nbsp;&nbsp;
                    </para>
                    <para>
                        <ulink
url="http://www.linuxdoc.org/HOWTO/NIS-HOWTO.html">

<citetitle>www.linuxdoc.org/HOWTO/NIS-HOWTO.html</citetitle>
                        </ulink>
                    </para>
                    <para>
                    </para>
                </listitem>


            </orderedlist>
        </para>
    </sect1>

    <sect1>
        <title>Gedrukte  publicaties</title>
        <para>
            <orderedlist>
                <listitem>
                    <para>
                        <literalLayout>
Managing NFS and NIS
Hal Stern
O'Reilly &amp; Associates, Inc.
1991
ISBN 0-937175-75-7
                        </literalLayout>
                    </para>
                </listitem>

                <listitem>
                    <para>
                        <literalLayout>
TCP/IP Illustrated, Volume 1
W. Richard Stevens
Addison-Wesley
1994
ISBN 0-201-63346-9
                        </literalLayout>
                    </para>
                </listitem>

                <listitem>
                    <para>                        
                        <literalLayout>
X Window System Administrator's Guide
Linda Mui and Eric Pearce
O'Reilly &amp; Associates, Inc.
1993
ISBN 0-937175-83-8
(Volume 8  of the The Definitive Guides to the X Window System)
                        </literalLayout>
                    </para>                        
                </listitem>
            </orderedlist>
        </para>
    </sect1>
</chapter>
</book>
