Ltsp

Uit Linuxdocs.nl
Ga naar: navigatie, zoeken

Een pc laten opstarten via netwerk.


Door: Michaell Bakker
Datum: 31-08-2009
Website: www.linuxdocs.nl

Inleiding:

Normaal gesproken start de computer het besturingssysteem op vanaf een hardeschijf, diskette of cd-rom station.
Het is echter ook mogelijk om via netwerk op te starten. Dit is zeer handig om kosten te besparen in b.v. een klein bedrijf.
De computers hoeven namelijk niet uitgerust te zijn met een hardeschijf, diskette station en/of cd-rom station. Maar hier houden de voordelen niet op! Zo kun je een oud brikkie inzetten om hedendaagse programma's te draaien. Alle programma's draaien namelijk op de server en niet op het werkstation.
Het enigste waar je rekening mee moet houden, is dat je een krachtige server nodig hebt om alle werkstations te kunnen voorzien.

Voor en nadelen:

Werken vanaf de server zoals in deze handleiding verteld zal worden lijkt heel erg op Microsoft Terminal services.
Op deze manier werken heb je de volgende voor en nadelen:

Voordelen:

  • Goedkoper in energieverbruik en aanschaf van werkstations.
  • Werkstations mogen beschikken over oudere hardware en kunnen toch de laatste programma's uitvoeren.
  • Werkstations en gebruikers zijn eenvoudiger te beheren. Alles staat namelijk op de server. De werkstations zelf hebben 0 byte aan data.
  • Werkstations hoeven zelf geen besturingssysteem te hebben. Dit scheelt zeker voor Windows zakken met geld.
  • Werkstation kapot? Zet er een andere neer en meer hoef je niet te doen.

Nadelen:

  • De server dient een krachtige machine te zijn. De server is namelijk verantwoordelijk voor het uitvoeren van alle programma's.
  • Server kapot? Dan kan niemand nog werken (Al is dit meestal zowiezo wel het geval en zeker bij bedrijven).

Systeemeisen:

Zoals ik hierboven al aangaf dient de server een krachtige machine te zijn. Hoe krachtig is echter afhankelijk van het aantal werkstations. Al met al komt het op het volgende neer voor de server en de werkstations:

De Server:

  • Processor: Dual core of beter met een kloksnelheid van minimaal 2,4Ghz.
  • Geheugen: Minimaal 512MB voor het systeem (1GB sterk aanbevolen)+ 256MB per werkstation.
  • Hardeschijf: hou rekening met 1GB beschikbaar per werkstation + 8GB beschikbaar voor het systeem zelf. Dit is echter afhankelijk van de programma's die je gaat draaien.
  • Netwerk: 1Gbps netwerk.
  • Besturingssysteem: Ik ga voor Debian Linux. Debian is namelijk zeer stabiel en ook onder een zware belasting presteert deze zeer goed.

Werkstations:

  • Processor: Minimaal 80486SX (DX aanbevolen ivm de aanwezigheid van een co-processor) 66Mhz. Pentium 120Mhz of beter sterk aanbevolen.
  • Geheugen: Minimaal 16MB (Afhankelijk van je kernel kan 128MB het minimum zijn!!!). 128MB of meer is echter sterk aanbevolen.
  • Hardeschijf: niet nodig.
  • Netwerk: 10Mbps met PXE bootrom. Aanbevolen is 100Mbps met een PXE bootrom.

Zoals je ziet zijn de systeemeisen van een werkstation niet bepaalt hoog te noemen. Als je dit op een bedrijf wilt gebruiken raad ik aan niet op de minimale systeemeisen te gaan zitten. Dan raad ik toch aan dat je minimaal een Pentium III 800Mhz met 265MBram gebruikt. Dit ivm dat de werkstations ten alle tijden goed moeten reageren en functioneren.
Met minimaal bedoelen we immers: "Het zal werken. Maar verwacht er niet veel van".

Benodigdheden en set-up:

De lay-out van deze set-up lijkt zeer ster op Micrsoft Terminal server, maar dan met een aantal verschillen. Het stappenplan van een werkstation die aan word gezet gaat als volgt:

  1. Werkstation verkrijgt dankzij de PXE bootrom van de netwerkkaart via de server een IP, gateway, DNS, netmask en broadcast adres.
  2. Werkstation krijgt via DHCP een bootmanager aangeboden.
  3. Werkstation laad een kernel image (bzImage) van de server via het TFTP protocol
  4. Werkstation laad alle drivers en start een Linux kernel op die hij van de server heeft gekregen.
  5. Werkstation koppelt een / bestandssysteem aan via NFS ( De TFTP verbinding word nu niet meer gebruikt)
  6. Werkstation laad nu aanvullende software via NFS.
  7. Werkstation start een grafische interface op en de gebruiker moet inloggen.
  8. Werkstation is klaar voor gebruik.

Zoals je dus kunt zien moeten we een server opzetten met de volgende software en mogelijkheden:

  • De server moet voorzien zijn van Debian Linux.
  • De server moet voorzien zijn van een DHCPd server.
  • De server moet voorzien zijn van een TFTP server.
  • De server moet voorzien zijn van een NFS server.
  • De server moet voorzien zijn van een kernel image speciaal voor de werkstations.
  • De server moet voorzien zijn van een "/" plek voor de werkstations in een chroot omgeving.
  • De server moet voorzien zijn van alle benodigde software die je op de werkstations wilt gaan gebruiken en de werkstations moeten hiertoe toegang en rechten hebben.

De server opzetten:

Installeer een server met Debian Linux Etch of Lenny door vanaf de eerste cd te starten en volgens de instructies op het scherm.

Vervolgens kunnen we de software installeren. Dit gaat onder Debian vrij eenvoudig met een aantal opdrachten:
Om de server op te zetten met alle toetsers en bellen, geef je de opdracht:

[root@ts ~/]# apt-get install ltsp-server-standalone

Om een kale server te installeren, zodat jij wat meet controle hebt over de te installeren versies van o.a. de DHCP server geef je de opdracht:

[root@ts ~/]# apt-get install ltsp-server

Je moet nu echter wel zelf alle overige pakketten installeren.

Nu de server voorzien is van alle benodigde pakketten en servers, kunnen we de omgeving voor de werkstations aanmaken op de server. Dit gaat via de opdracht:

[root@ts ~/]# ltsp-build-client

Deze opdracht kunnen we indien nodig nog wat tweaken:
Deze opdracht zal namelijk een versie van Debian installeren met een bestandssysteem in de directory: /opt/ltsp/i386.
Je kan echter zelf bepalen welke versie van Debian dat moet worden door de flag --base xxx. Waar de xxx staan voor de Debian versie zoals: Lenny of Etch. B.v.:

[root@ts ~/]# ltsp-build-client --base lenny

Ook kun je opgeven of de client een 32 of een 64 bits kernel moet krijgen met de --arch flag. B.v.:

[root@ts ~/]# ltsp-build-client --base lenny --arch i568

Standaard zal de opdracht een omgeving installeren die gelijk is als wat op de server draait. Dit hoeft echter niet altijd wenselijk te zijn. Stel je hebt een super server die 64bits is, maar je werkstations zijn oude Pentium II computers. In dat geval zullen ze niet werken, want de Pentium II processor is 32bit.

Als je twijfelt, kies dan altijd voor een 32bits omgeving voor de werkstations.
Het is echter mogelijk om zowel Etch als Lenny voor zowel 32 als 64bits te installeren. Je kan doormiddel van MAC adres bepalen welke werkstation welke omgeving krijgt (Ga ik later op in).

Natuurlijk hebben de werkstations ook een grafische interface nodig. Vergeet niet de server uit te rusten met een X11 server en GNOME of KDE desktop.
Als je dat nog niet hebt gedaan, dan kun je deze alsnog installeren met de opdracht:

[root@ts ~/]# apt-get install xorg
[root@ts ~/]# apt-get install kde

Memo:

  1. Als je het IP-adres van je netwerk aanpast. Geef voordat je alles weer in werking zet eerst de opdracht: ltsp-update-sshkeys op de server.
  2. De bestanden die de client gebruikt om te starten zijn te vinden in: /var/lib/tftpboot.

De DHCPd server instellen:

Nu is de software wat de werkstations betreft bijna klaar. De volgende stappen die we moeten nemen is om ervoor te zorgen dat de werkstations kunnen booten.
De service die hiervoor verantwoordelijk is is onze DHCP server. Dit gaat als volgt:

Maak een leeg bestand aan in /etc genaamd: /etc/dhcpd.conf.
Als dit bestand al bestaat; edit deze dan zodat de volgende aanpassingen aanwezig zijn. Onderstaand voorbeeld is van mijn configuratie. Pas deze naar eigen wens aan (Zie de DHCP server howto voor details).

subnet 192.168.0.0 netmask 255.255.255.0 {
        deny client-updates;
        ddns-updates on;
        ddns-rev-domainname "linuxdocs.lan";
        option ntp-servers pool.ntp.org;
        option netbios-name-servers 192.168.0.1;
        server-name "VM11.linuxdocs.lan";
        max-lease-time 172800;
        default-lease-time 86400;
        authoritative;
        filename "/ltsp/i386/pxelinux.0";
        range 192.168.0.20 192.168.0.200;
        option domain-name "linuxdocs.lan";
        option domain-name-servers 192.168.0.1 , 192.168.0.12 , 192.168.0.100;
        option broadcast-address 192.168.0.255;
        option routers 192.168.0.254;
        next-server 192.168.0.12;
        # get-lease-hostnames true;
        option subnet-mask 255.255.255.0;
        option root-path "/opt/ltsp/i386";
        if substring( option vendor-class-identifier , 0 , 9 ) = "PXEClient" {
                filename "/ltsp/i386/pxelinux.0";
                }
        else {
                filename "/ltsp/i386/nbi.img";
                }
        }

De laatste regels in het bestand is een klein script.
Gezien er meerdere manieren bestaan om vanaf netwerk te booten, word in dit geval gebruik gemaakt van 2 boot images. Over het algemeen is PXE de meest gebruikte boot methode.
Als je een ouder kaartje gebruikt, die niet via de PXE methode kan starten, is de server instaat ook deze kaarten een bootbestand aan te bieden. Ik verwacht echter niet dat je het nodig hebt, maar je weet maar nooit.

Bug waarschuwing!:De DHCPd server versie 3.x heeft een kleine bug, die gelukkig eenvoudig te omzeilen is
Als de boot server dezelfde server is als de DHCPd server hoefde je in v2 van de DHCPd software niet op te geven wat de boot server was. Dit verwees default naar zichzelf.
Echter werkt dit niet meer in v3 en waarschijnlijk ook niet in v4. Deze bug is bekend bij de ontwikkelaars en ik verwacht dat deze snel gefixt word. Of de DHCPd server nou zelf de boot server is of niet, je moet de Next-server attribuut opgeven, met het IP-adres van de server zelf wil je kunnen booten.
Niet echt geen kwaadaardige bug, maar meer een slordigheidje. Ik heb hier lang mee zitten rommelen toen ik een upgade uitvoerde naar v3, tot ik via google erachter kwam dat dit een bug was.

Bootopties van de client bewerken:

Standaard zal elk werkstation booten met dezelfde kernel. Dit kun je echter tweaken op basis van MAC adres!
Het is aan te bevalen dit alleen te doen, als je iets weet van boot parameters van Linux. Geen zorgen, echt moeilijk is het niet. Ik weet zeker dat je erwel uit komt. Je kan dit altijd proberen. Er gaat immers niks kapot ofzo.

Om dit te doen, ga je naar de map: /var/lib/tftpboot/ltsp/i386/pxelinux.cfg

[root@ts ~/]# cd /var/lib/tftpboot/ltsp/i386/pxelinux.cfg

En ja: pxelinux.cfg is een map en geen bestand.

Standaard zul je hier 1 bestandje aantreffen, genaamd: default
Lees dit bestand met de opdracht:

[root@ts ~/]# cat default
DEFAULT vmlinuz ro initrd=initrd.img quiet root=/dev/nfs ip=dhcp boot=nfs

Dit is de bootopdracht die het werkstation krijgt om de kernel te starten en de bijbehorende parameters.

Als je een werkstation wilt aanpassen, dan doe je het volgende:

  1. Zoek uit wat het MAC adres is van het werkstation. Onder Linux kan dat met de opdracht: ifconfig De gegevens die je nodig hebt is: HWaddr 00:e0:98:a0:16:56. Hier is: 00:e0:98:a0:16:56 je MAC adres. Schijf dit op.
  2. Maak in de map: /var/lib/tftpboot/ltsp/i386/pxelinux.cfg een nieuw bestand aan, met het MAC adres wat je net hebt gevonden als bestandsnaam (gebruik geen extensie).
  3. Kopieer de regel uit het bestand default en plak deze in je zojuist aangemaakt bestand.
  4. Pas deze regels naar wens aan. vmlinuz is de te booten kernel en initrd.img is het initrd bestand voor de kernel, wat bestaat uit drivers die de kernel nodig heeft om te werken.
  5. Sal dit bestand op.

Op deze manier kun je een nieuwe pc voorzien van een 64bit kernel, en de rest een 32bit kernel geven. Let wel: Dat je deze kernels wel eerst zelf moet maken (Zie een kernel howto!)
Op deze manier kun je de werkstations per stuk tweaken. Alle werkstations met een ander MAC adres, dan het zojuist gemaakte bestand zullen booten van het default bestand.
Let wel op: Als je ooit een andere netwerkkaart in een werkstation doen, dan veranderd ook het MAC adres en zal de pc vanaf dat moment booten vanaf het default bestand.
Verander in dat geval het MAC adres van het werkstation, of verander de naam van het bijbehorende boot bestand in het juiste MAC adres.

Lokale apparaten benaderen:

Het is standaard niet mogelijk om lokale apparaten zoals cd-rom stations en diskettedrives te benaderen.
Dit is echter wel mogelijk, maar heb ikzelf nog niet getest. Als ik hier wat meet over weet, zal ik deze howto updaten.

Voor wat ik heb weten te vinden, moet je alle lokale apparaten als een NFS share op de server mounten. Dit kan volledig automatisch. De echte pioneers krijgen dit vast wel aan de praat. :)
Zodra het mij ook is gelukt, zal ik dit hier beschrijven.



How-TO's | Hoofdpagina | Linux Nieuws | Externe links | Help