home   artikelen   forum   colofon  
Gepubliceerd op 12.10.2001
Auteur: Ronny Ziegler
Vertaald door: Guus Snijders
Languages: en de
Help Ons!
 

Linux zonder Schijf

Network-booting Het klinkt misschien vreemd, een PC die volledig via het netwerk opstart (dus zonder floppy, CD-ROM of harde schijf), maar met een klein beetje inspanning is het mogeljk.

Introductie

Na het inschakelen van een PC probeert de BIOS een aangesloten harde schijf, CD-ROM of floppy te vinden om een besturingssyteem van op te starten.
Als geen van deze componenten aanwezig is, zou je niet in staat zijn enig besturingssysteem te starten.
Er is echter een manier waarop het kan werken zonder een lokaal opslag apparaat. Als de PC een netwerkkaart heeft, kan het besturingssysteem worden gedownload over het netwerk vanaf een juist-geconfigureerde server.

Blijft nog de vraag: welke voordelen heeft dit soort PC?
In grotere netwerken is het beheer duidelijk eenvoudiger, omdat de data zich op een enkele server bevindt en dus altijd op dezelfde plek toegankelijk is voor de beheerder.
Als het nodig is om het systeem te upgraden (door een bug in de beveiliging bijvoorbeeld) of nieuwe software te installeren, kan het zo op de server gebeuren. In een goed gedefinieerde configuratie van de server is het voldoende om een enkel software pakket te installeren en is het dan gelijk toegankelijk voor alle componenten in het netwerk.
joor de centrale opslag van de data is de backup eenvoudig te regelen.
Er zijn echter interessantere manieren om voordeel te halen uit de schijfloze PC.
Voor embedded systemen bijvoorbeeld, zou een netwerk-bootende PC een aardige oplossing zijn. Embedded systemen zijn kleine PC systemen die niet worden gebruikt als lokale PC, maar een speciale taak hebben zoals een MP3-speler of apparaat controller.

Een oude PC kan worden omgebouwd in een netwerk-bootende X terminal.
Het voordeel is dat je geen harde schijf of andere bewegende delen (zoals een ventilator) nodig hebt als je het goed construeerd. Deze PC zou dan geen irritant geluid maken en zou zelfs gebruikbaar zijn voor in de woonkamer.

Voordat de configuratie begint, lees alsjeblieft eerst het volgende:

Waarschuwing !
Dit artikel bechrijft een configuratie die de functionaliteit van de PC dramatisch veranderd (Software en Hardware).
Het gebruik van alle programma- en hardware handleidingen gebeurd op eigen risico. Alle betrokken auteurs (oa de auteurs van dit artikel, gelinkte artikelen en gelinkte software) zijn niet verantwoordelijk voor eventuele schade die voortkomt uit het juist of onjuist gebruik van deze componenten (Tekst, Software, Hardware).


Nu een andere waarschuwing in een compleet ander geval.
De installatie van een netwerk-bootende PC kan erg lastig zijn en werkt vaak niet direct, maar pas na lange tijd van aanpassingen. De documentatie van de software is vaak beperkt. Daarom zou je bekend moeten zijn met de gebruikte software, hardware en netwerk protocollen en het vooral niet opgeven.
Hoewel we proberen deze configuratie gids zo compleet mogelijk en duidelijk te maken, kunnen we niet alle mogelijkheden weergeven of alles raden wat er kan gebeuren.
Alle hints, opmerkingen en commentaren zijn welkom.

Hardware

Het besturingssysteem wordt niet op een lokale harde schijf opgeslagen maar gedownload via het netwerk, de BIOS moet dus in staat zijn de gedownloade kernel uit te voeren.
De juiste software hiervoor wordt opgeslagen in een bootrom die op de netwerkkaart wordt geplaatst.
Hoewel er commerciële bootroms bestaan en kunnen worden aangeschaft, wordt dit niet aangeraden omdat deze bootroms meestal zijn voorbereid op Novell netwerken en gebaseerd op IPX in plaats van TCP/IP.
Het netboot pakket (homepage: http://www.han.de/~gero/netboot.html) biedt software en een driver om zelf een bootrom te maken (later meer hierover). Deze bootrom kun je kopiëren naar een lege Eprom of EEprom, of op floppy zetten.
Helaas is een Eprom-schrijver te duur in aanschaf (minstens EUR 200,-) voor een enkele Eprom en kosten de lege Eproms ongeveer EUR 10,- als je er slechts enkele aanschaft. Daarom is het beter om een bootdisk te maken die is gebaseerd op een floppy, vooral omdat dat evengoed werkt als de bootrom op de Eprom.
De floppy drive zou je binnenin de kast moeten plaatsen, buiten het bereik van de gebruiker.
De floppy wordt alleen tijdens het opstarten gebruikt en heeft geen invloed op de snelheid van het systeem.

Bootrom

Het is aan te raden om de nieuwste versie van netboot te gebruiken, deze kun je downloaden van http://www.han.de/~gero/netboot.html (nieuwste versie is 0.8.1).
Pak deze uit met:
  >> tar zxvf netboot-0.8.1.tar.gz -C /tmp/
  
Ga naar de zojuist gemaakte directory en start de configuratie:
  >> cd /tmp/netboot
  >> ./configure 
  >> make
  >> make install
  

Het kan gebeuren dat het compileren wordt onderbroken met een fout melding (dat gebeurde op ons systeem). Dit is echter geen groot probleem, omdat je de delen die niet werken niet nodig hebt.
Als het commando make met een fout stopt, ga dan naar de directory makerom en voer hier make uit. Dezelfde procedure geldt voor de directories mknbi-linux en bootrom. Daarna start je make install.

Vervolgens maak je de bootrom. Daarvoor heb je specifieke informatie nodig over je netwerkkaart.

kaart type:
De erg goedkope kaarten zijn vaak NE2000 kaarten.

Interrupt/IO-addres/MAC-Addres:
Niet-Plug&Play kaarten hebben een jumper om het interrupt in te stellen, Plug&Play kaarten stellen zichzelf automatisch in. Vaak is er een programmaatje bij de kaart meegeleverd wat het kan uitlezen.
Als je kaart al in een draaiend systeem zit, krijg je deze informatie tijdens het bootproces. Met het commando

  cat /var/log/dmesg
  

kun je de uitvoer van het opstarten bekijken. Daarin zoek je naar een regel als

  eth0: RealTek RTL-8029 found at 0x7400, IRQ 5, 00:E0:7D:82:5F:B6
  

Hier zie je het IRQ nummer en IO adres (0x740 - zonder de laatste nul). Ook zou je de laatste 6 letters en nummers (het zogenoemde MAC adres) van deze regel moeten opschrijven. Dit is een wereldwijd uniek nummer dat jouw kaart identificeerd.
Als de driver van de netwerkkaart niet in de kernel is gecompileerd maar als module, moet je de module laden (insmod eth0 of stuur een ping als hij automatisch wordt geladen) en zoek dan naar de netwerk entry in de bestanden /proc/interrupts en /proc/ioports.

Als je al deze informatie hebt verzameld, kun je de bootrom gaan genereren:
Ga naar de subdirectory /tmp/netboot/makerom en type daar:

  >> ./makerom
  

Dit zou een uitvoer moeten geven als:

  Bootrom configuration program, Version 0.8.1 (netboot)
  Copyright (C) 1995-1998 G. Kuhlmann
  
  The following 3 kernels are available:
  (1)	kernel.bin
  (2)	kernelm.bin
  (3)	kernel86.bin
  Select the kernel you wish to use [1]: 
  

Hier kies je de kernel die op de bootrom wilt hebben. Je hebt alleen de minimale kernel nodig, kies dus voor 2.

De volgende vraag:

  Do you want the bootrom to look for boot drives (y/n) [no] ? 
  

beantwoord je met no, als je wilt dat PC gaat booten via het netwerk en je geen bootable drives hebt.

De volgende stap vraagt welke netwerkkaart is ingebouwd:

  The following 10 network drivers are available:
  (0)	user defined network driver
  (1)	3c501.com
  (2)	3c503.com
  (3)	3c509.com
  (4)	arcether.com
  (5)	dc21x4.com
  (6)	e100bpkt.com
  (7)	ne1000.com
  (8)	ne2000.com
  (9)	ne2100.com
  (10)	smc_wd.com
  Select the network driver you wish to use [0]: 
  

Hier kies je je kaart (bijvoorbeeld een NE2000 kaart met 8). Als je problemen krijgt met de driver, haal de nieuwste op van de CRYNWR-driver-collection, kies je 0 en geef je het volledige pad op naar de gedownloade driver.
Iedere driver moet het interrupt, IO adres en packet-interrupt-nummer weten. De volgorde is: <packet_int_no> <int_level> <io_addr>, een voorbeeld:

  Enter command line arguments for network driver: 0x62 5 0x740
  

De specificatie van het packet-interrupt-nummer wordt alleen intern in de bootrom gebruikt en kan vrij gekozen worden tussen 0x60 tot 0x66, 0x68 tot 0x6f en 0x78 tot 0x7e.
De meningen verschillen over welke waarde het beste werkt. Probeer een hoge en een lage waarde als het niet gelijk werkt.
Met Plug&Play kaarten kan het gebeuren dat er automatisch een hoog IO adres wordt gekozen. Dit kan problemen opleveren met de netboot drivers.
Kaarten met jumpers zijn aan te raden, omdat je dan volledige controle over de gekozen bronnen hebt en je niet afhankelijk bent van de willekeurig gekozen Plug&Play instellingen.

De volgende drie vragen kun je beantwoorden met "no":

  Do you want to use the ANSI display driver (y/n) [yes] ? no
  Do you want to use the packet driver debugger (y/n) [no] ? no
  Do you want to specify an additional program (y/n) [no] ? no
  

Vervolgens moet je aangeven in welk formaat je de bootrom wilt. Dit is afhankelijk van de interpreter van je Eprom schrijver of op welk type chip je gaat schrijven.
De floppy bootrom wordt parallel met alle keuzes gecreëerd.

  Available output file types (floppy image gets always created):
  (1)	Raw binary
  (2)	Image for programming a FlashCard across the network
  (3)	Intel hex
  (4)	Motorola hex
  (5)	Tektronix hex
  Select the format you wish to use [1]: 
  

En zo eindig je met deze stap. In de directory makerom staat nu een bestand image.flo en een bestand Image.???, waarvan de extensie afhankelijk is van het gekozen uitvoer type (de laatste vraag).

Nu kun je een bootdisk maken. Plaats een lege floppy in je floppy drive (niet mounten) en voer gebruik het volgende commando:

  >> dd if=image.flo of=/def/fd0
  

Nu heb je je bootrom op de floppy.

Server configuratie

Dit deel beschrijft de configuratie van de server vanwaar de schijfloze PC zijn kernel en bestandssysteem krijgt.
Er zijn veel manier om een PC via het netwerk te booten. Twee oudere methoden zijn RARP en BOOTP.
Een DHCP server biedt veel meer flexibiliteit, als deze onderdeel is van je distributie (anders moet je deze installeren).
De tijd die nodig is voor beide installaties is ongeveer gelijk, dus kun je het beste DHCP kiezen.
De installatie van een DHCP server is afhankelijk van de distributie die je gebruikt. Met SuSE kun je de configuratie met YAST aanpassen: verander alleen

  START_DHCPD="no"
  

in yes en stel je netwerk apparaat in.

  DHCPD_INTERFACE="eth0"
  

De optie

  START_DHCRELAY="no"
  

zou op nee moeten staan, tenzij je precies weet wat je gaat veranderen.

Andere distributies volgen andere installatie methoden. Soms moet je het DHCP init script in het juiste runlevel linken. Zie de documentatie van je distributie over hoe je dit aanpakt.

Het configuratie bestand van de DHCP server is /etc/dhcpd.conf en zou er ongeveer als volgt uit moeten zien:

Het bestand /etc/dhcpd.conf
         server-identifier server.netmag.de;
         option subnet-mask              255.255.255.0;
         option routers                   192.168.0.1;
         option domain-name-servers      192.168.0.1;
         option domain-name              "netmag.de";
  
         use-host-decl-names on;
  
         shared-network WORKSTATIONS {
                 subnet 192.168.0.0 netmask 255.255.255.0 {
                 }
         }
         group   {
                 use-host-decl-names             on;
  
                 host pc1 {
                         hardware ethernet       00:80:C8:D9:31:C1;
                         #                       ---MAC adres
                         fixed-address           192.168.0.10;
                         #                       ---toegewezen IP nummer
                         filename                "pc1/bootImage";
                         #	               ---Waar de kernel staat
                         #                          die geboot moeten worden
                         #                          (later meer)
                 }
                 host pc2 {
                         hardware ethernet       00:E3:7F:86:3F:B9;
                         fixed-address           192.168.0.119;
                         filename                "pc2/bootImage";
                 }
  	}
  


Na het herstarten van de DHCP server met (SuSE):

  >> /sbin/init.d/dhcp restart
  
zou het nieuwe configuratie bestand gelezen moeten zijn
  Shutting down service dhcpd                                       done
  Starting service dhcpd                                            done
  
In RedHat-gebaseerde distributies, is het DHCP init-script geplaatst in /etc/rc.d/init.d/.

De configuratie van de DHCP kan getest worden met het programma bootpc dat automatisch wordt geïnstalleerd als je een van de grotere distributies gebruikt (Homepage is te vinden op http://www.damtp.cam.ac.uk/linux/bootpc/).
Dit programma stuurt een broadcast over het netwerk en wacht op het antwoord van een server die bootp ondersteund. Het antwoord verschijnt op de prompt:

  >> bootpc
  SERVER='192.168.0.1'
  IPADDR='192.168.0.119'
  BOOTFILE='pc2/kernel.net'
  NETMASK='255.255.255.0'
  NETWORK='192.168.0.0'
  BROADCAST='192.168.0.255'
  GATEWAYS_1='192.168.0.13'
  GATEWAYS='192.168.0.13'
  DNSSRVS_1='192.168.0.13'
  DNSSRVS='192.168.0.13'
  HOSTNAME='pc1'
  DOMAIN='netmag.de'
  SEARCH='netmag.de'
  
Zonder opties gebruikt bootpc het MAC-adres van de huidige PC, maar kan ook een andere gebruiken met de optie --hwaddr, om zo de instellingen voor een ander MAC adres te testen. Voor debug-doeleinden kun je de optie --verbose gebruiken.

Hoe komt de kernel bij de client vanaf de server tijdens het booten?
Dit werkt op de volgende manier:
De bootende client voert de code in de bootrom of bootfloppy uit en stuurt een broadcast met zijn MAC-adres en het niet-toegewezen IP adres 0.0.0.0 over het netwerk en wacht op een antwoord van de server.
De DHCP server ontvangt deze vraag en stuurt de instellingen terug die je zag met het commando bootpc.
De client leest deze instellingen, stelt het IP in op een nieuwe waarde, legt contact met de server en laadt de kernel via het TFTP protocol (een simpel FTP protocol) in de opgegeven directory.
Dan wordt de kernel gekopieerd naar het geheugen en uitgevoerd. Vervolgens boot Linux.

Deze korte overzichten laten zien dat je het TFTP protocol op je server moet installeren. Meestal is dit niet actief omdat het enorme beveiligingsgaten heeft; het vraagt (standaard) niet om een wachtwoord en zou alleen gebruikt moeten worden in netwerken waar de poort van het TFTP protocol veilig is (achter een firewall, bijvoorbeeld).
Dit betekend echter niet dat iedereen illegale toegang tot je lokale netwerk kan krijgen.

Je activeert de TFTP server door de volgende regel in /etc/inetd.conf op te nemen:

Het bestand /etc/inetd.conf
  tftp          dgram   udp     wait    nobody  /usr/sbin/tcpd  in.tftpd /tftpboot
  


De laatste entry, /tftpboot, stelt de directory /tftpboot in als de root directory voor de net-bootende PC.
Op deze manier is het niet toegestaan om de bestanden op de server te benaderen, maar alleen de bestanden van de client directories. Dit beveiligt de bestanden van de server enigzinds.
(In de DHCP configuratie gebruik je de relatieve paden ten opzicht van deze /tftpboot, daar dit de root directory voor de TFTP client is.)

Een herstart van het inetd-proces (wat ook een herstart van de server kan betekenen) leest de nieuwe inetd.conf.

NFS instellingen

De client krijgt zijn volledige bestandssysteem over het netwerk, de NFS-server moet dus zodanig geconfigureerd zijn dat de client de directories mag mounten.
Ieder client krijgt een entry in /etc/exports:

Bestand /etc/exports
  /tftpboot/pc1   pc1.netmag.de(rw,no_root_squash)
  /tftpboot/pc2   pc2.netmag.de(rw,no_root_squash)
  /usr		*.netmag.de(ro)
  


De root directorie moet gemount worden met lees/schrijf (read/write) toegang, voor de /usr volstaat lees toegang.
De optie no_root_squash staat toe dat de root gebruiker op de clients bestanden op de server kan plaatsen met root rechten.
Zonder deze entry zouden alle bestanden die worden gelezen of geschreven door root worden behandeld als de gebruiker nobody met de groep nogroup, dit kan problemen opleveren tijdens het booten; waarschijnlijk krijg je niet eens een prompt om in te loggen, omdat root niet de juiste rechten heeft om naar /var/run/utmp te schrijven.

Verder moeten alle boot-clients op de DNS server geregistreerd zijn met hun naam, indien aanwezig, of anders met entries in het bestand /etc/hosts op de computers.

/etc/hosts
  192.168.0.10  pc1.netmag.de  pc1
  192.168.0.119 pc2.netmag.de  pc2
  


Na het herstarten van de NFS daemon (of de hele server) zijn de veranderingen actief en kunnen we ons concentreren op de configuratie van de clients.

Installatie van de client

De volgende stappen leggen het maken van een werkende kernel en een bootende installatie uit.

Eerst moet je de kernel compileren die gaat booten op de client. Ga op een Linux computer naar de directory /usr/src/linux en start daar

  >> make xconfig
  
Configureer de kernel zo dat hij werkt op de hardware van de client. Denk eraan dat alleen de belangrijkste componenten en drivers in de kernel hoeven te worden gecompileerd. De volgende instellingen zijn absoluut noodzakelijk voor een netwerk-bootende PC:

Selectie van kernel instellingen
                     Networking support            y
                     TCP/IP networking             y
                     Network device support        y
                     Ethernet (10 or 100Mbit)      y
                     NFS filesystem support        y
                         Root file system on NFS   y
                              BOOTP support        n
                              RARP support         n
  


BOOTP en RARP zouden gedeactiveerd moeten zijn omdat we DHCP gebruiken. Het is aan te raden om eerst een kleine kernel te maken en later meer hardware ondersteuning toe te voegen aan de kernel.

Dan compileer je met

  >> make config
  >> make dep
  >> make clean
  >> make zImage
  
kopieer de zojuist gemaakte kernel arch/i386/boot/zImage naar de /tmp/netboot/mknbi-linux directory:
  >> cp arch/i386/boot/zImage /tmp/netboot/mknbi-linux/
  
In de volgende stap dien je de kernel een beetje aan te passen, zodat deze via het netwerk kan worden gestart. In de directory /tmp/netboot/mknbi-linux voer je het volgende commando uit:
  ./mknbi-linux/mknbi -d rom -i rom -k zImage -o bootImage
  
Dit maakt de netwerk-bootende kernel bootImage. Dit is nog niet alles:

Als het apparaatbestand /dev/nfs nog niet bestaat, dien je het volgende als root uit te voeren:

  mknod /dev/nfs b 0 255 
  
De laatste actie op het image moet zijn:
  rdev bootImage /dev/nfs
  
Nu is de kernel gereed. Vervolgens maak je het bestandssysteem op de server dat later door clients gebruikt gaat worden. Daarvoor creëer je de directory /tftpboot:
  >> mkdir /tftpboot
  
en de sub-directories voor de verschillende clients:
  >> mkdir /tftpboot/pc1
  >> mkdir /tftpboot/pc2
  
De aangepaste kernel kopieer naar deze directories:
  >> cp bootImage /tftpboot/pc1/
  >> cp bootImage /tftpboot/pc2/
  
Het bestandssysteem van de boot-PCs moet eerst worden gecreëerd. De makkelijkste manier is om de directories van een werkende distributie naar de nieuwe te kopiëren. Als je dezelfde distributie als op je server wilt gebruiken, kopieer je (als root):
  >> cp -a /bin /tftpboot/pc1/
  >> cp -a /sbin /tftpboot/pc1/
  >> cp -a /boot /tftpboot/pc1/
  >> cp -a /dev /tftpboot/pc1/
  >> cp -a /etc /tftpboot/pc1/
  >> cp -a /lib /tftpboot/pc1/
  >> cp -a /var /tftpboot/pc1/
  >> cp -a /bin /tftpboot/pc1/
  
Verder maak je de volgende sub-directories:
  >> mkdir /tftpboot/pc1/home
  >> mkdir /tftpboot/pc1/proc
  >> mkdir /tftpboot/pc1/tmp
  
(Hetzelfde voor de pc2 installatie.) Als je dezelfde gebruikers-accounts als op de server wilt gebruiken, kun je simpelweg de home directories mounten met NFS.

Alle verdere configuratie van de clients is afhankelijk van de gebruikte distributie. In ieder geval moet op alle PCs de routing worden ingesteld en moet ook de /etc/fstab worden aangepast.
Verder zijn instellingen als de hostnaam en het IP nummer van de computer belangrijk (met SuSE in het bestand /etc/rc.config), anders werkt het mounten via NFS niet.

File /tftpboot/pc1/etc/fstab
   #
   # /etc/fstab on firewall
   #
   server:/usr			/usr	nfs	defaults	0  0
   # om de home directories te mounten
   #server:/home			/home   nfs	defaults	0  0
   # om de CD-ROM drive van de server te gebruiken
   server:/mnt/cdrom                /cdrom  nfs     noauto,user     0  0
   #
   proc 			        /proc   proc    defaults        0  0
  


File /tftpboot/pc1/etc/route.conf
   #
   # /etc/route.conf
   #
   # In dit bestand kun je je statische routing configureren...
   #
   # Dit bestand wordt gelezen door /sbin/init.d/route.
   #
   #
   192.168.0.10            0.0.0.0                 255.255.255.255         eth0
   192.168.1.0             0.0.0.0		       255.255.255.0	       eth0
  


En nu de delen van het rc.conf bestand die moeten worden aangepast

File /tftpboot/pc1/etc/rc.conf
   .
   .
   #
   # IP Adresses
   #
   IPADDR_0="192.168.0.10"
   .
   .
   # parameters for ifconfig, if you put "Bootp" into it, Bootp will
   # be used to configure it
   # sample entry for ethernet:
   # IFCONFIG_0="192.168.81.38 broadcast 192.168.81.63 netmask 255.255.255.224"
   #
   IFCONFIG_0="192.168.0.10 up"
   . 
   .
   #
   FQHOSTNAME="pc1.netmag.de"
  


Deze instellingen zorgen ervoor dat de PC opstart en (tenminste) de prompt bereikt. De eerste keer zul je vaak foutmeldingen krijgen. Het beste scenario zou zijn om in te loggen en deze problemen gelijk op de client op te lossen.
Als je de ideale configuratie voor je client hebt gevonden, kun je de directory /tfptboot kopiëren en ook voor andere clients gebruiken. Uiteraard kun je meer dan een client booten met dezelfde /tftpboot/ sub-directory.

Schijfloze PC
Een netwerk-bootende PC in een kartonnen doos. Zonder harde schijf, alleen een netwerkkaart, geluidskaart, een vga kaart en een floppy drive. Geen ventilator. (Nabouwen wordt niet aangeraden.)

Problemen

Het zou je sterk moeten verbazen als alles gelijk de eerste keer al werk. Blijf dapper als een stap niet werkte. Er bestaan teveel distributies en configuraties, het is dus niet mogelijk om een all-round oplossing te geven.
Vaak zijn de problemen de volgende:

Je systeem gebruikt /tcpwrapper/.
Als de nieuwe bootende PC geen legaal IP adres heeft en zichzelf aankondigt met het IP adres 0.0.0.0, kan TCP wrapper de toegang tot de Bootp of DHCP poort ontzeggen.
Dit kun je voorkomen met een entry in het bestand /etc/hosts.allow op je server:

File /etc/hosts.allow
  ALL:            192.168.0.0/255.255.255.0: ALLOW
  bootpd:		0.0.0.0
  in.tftpd:	192.168.0.
  portmap:	192.168.0.
  


Als de bootfloppy niet werkt zoals we wilden, zijn verkeerde instellingen in de bootrom waarschijnlijk de oorzaak. Als je zeker weet dat de opties goed gekozen waren, zou je nieuwe drivers moeten proberen.
Ook kunnen problemen optreden met hoge IO adressen. Er zijn rapporten over enkele kaarten die problemen hebben met speciale packet interrupt nummers.
Als het MAC adres tijdens het booten als FF:FF:FF:FF:FF wordt weergegeven, werd de kaart niet correct door de driver herkend.

Als je kaart gevonden werd, maar je kreeg geen boot-data van de server (de informatie over de bootpc), kan het ook een probleem met de routing op de server zijn. Controleer het bestand /var/log/messages en zoek naar entry als "Network not reachable".
Voeg dan de regel

  default 	192.168.0.1
  
toe aan de routetabel met het IP adres van de gateway (vaak het IP van de server zelf).

Als de client de bootp data van de server krijgt, maar niet in staat is om de kernel te downloaden, controleer dan of het pad in /etc/dhcp.conf correct is.
Deze fout kan ook optreden bij buggy netwerk drivers. Probeer andere (oudere of nieuwere) drivers uit.

Meer mogelijke fouten kun je vinden aan het eind van de documentatie van http://www.ltsp.org/download/lts/doc/lts.html

NFS swapping

Een goede reden voor het bouwen van netwerk-bootende PCs is het her-activeren van oudere computers als werkende X-terminals.
Vaak hebben de oude computers echter niet genoeg RAM om programma's te gebruiken of zelfs een X server.
Je zou natuurlijk een swap schijf kunnen inbouwen, maar dan verlies je het geluids-arme voordeel omdat je dan een harde schijf nodig hebt. Een oplossing voor dit probleem wordt aangeboden door een Hacker patch voor de Linux kernel die een NFS swap device op de server mogelijk maakt.
Je hoeft geen veranderingen op de server door te voeren en dus loop je ook geen (verdere) risico's op de server.

Niettemin heeft deze patch twee nadelen die je niet zou moeten negeren:

  • Swap op een NFS drive is erg, erg traag. Het gebruik ervan komt pas in beeld als de PC echt zo weinig RAM heeft dat er veel programma's niet willen starten en/of werken (tot 8MB RAM).
  • Swap ruimte op een NFS drive is een beveiligings-gat omdat het geheugen niet versleuteld wordt voor het versturen, als er dus wachtwoorden zijn opgeslagen in het geheugen kunnen die onderschept worden.
Als je nog niet geschokt bent, kunnen we beginnen. Eerst haal de benodigde patch voor jouw kernel op van van http://www.instmath.rwth-aachen.de/~heine/nfs-swap/nfs-swap.html (de patch is niet voor alle kernel versies beschikbaar).

Voordat je de patch toepast zou je eerst een kopie van de kernel moeten maken.

  >> mkdir /usr/src/hacking
  >> cp -a /usr/src/linux /usr/src/hacking/
  
dan ga je naar de directory /usr/src/hacking/linux en pas je de patch toe met:
  gunzip -c /path/to/linux-2.*.*-nfs-swap.diff |  patch -p1 -l -s
  
Activeer de volgende optie in de kernel:

aanvullende kernel optie
  Code maturity level options 
                Prompt for development and/or incomplete code/drivers 
         Networking options 
                Swapping via network sockets (EXPERIMENTAL) 
         Filesystems/Network File Systems 
                Swapping via NFS (EXPERIMENTAL) 
  


en compileer het. De kernel moet weer worden aangepast met mknbi en rdev, daarna kopieer je kernel over de oude.
Start de client op en voer het commando

  >> cat /proc/meminfo
  
uit. Dit zou je een uitvoer moeten geven als:
Uitvoer cat /proc/meminfo
          total:    used:    free:  shared: buffers:  cached:
  Mem:   6938624  5767168  1171456  4685824        0  3690496
  Swap:        0        0        0
  MemTotal:      6776 kB
  MemFree:       1144 kB
  MemShared:     4576 kB
  Buffers:          0 kB
  Cached:        3604 kB
  SwapTotal:        0 kB
  SwapFree:         0 kB
  


Je kunt zien dat het swap geheugen nog niet bestaat. Dit kun je veranderen met:

  >> dd if=/dev/zero of=/SWAPFILE bs=1k count=20480
  >> mkswap /SWAPFILE 20480
  >> swapon /SWAPFILE
  
Kijk nog eens
  >> cat /proc/meminfo
  
en nu krijg je
Output cat /proc/meminfo
          total:    used:    free:  shared: buffers:  cached:
  Mem:   6938624  5783552  1155072  4685824        0  3690496
  Swap: 20967424        0 20967424
  MemTotal:      6776 kB
  MemFree:       1128 kB
  MemShared:     4576 kB
  Buffers:          0 kB
  Cached:        3604 kB
  SwapTotal:    20476 kB
  SwapFree:     20476 kB
  



Je hebt 20 MB swap space geïnstalleerd!
Nu kun nog grotere programma's starten zonder dat je geheugen volloopt.

Je hebt het gehaald! We hadden gewaarschuwd dat de installatie van een netwerk-bootende PC niet triviaal is.


Links:
http://web.singnet.com.sg/~leetc/howto/x-terminal.html Een kort document dat de installatie van een X terminal beschrijft. Verder kun je hier ook scripts voor een automatische configuratie van de PCs vinden.
Gebruikt Bootp in plaats van DHCP.
http://www.ltsp.org/download/lts/doc/lts.html Als je veel X terminals moet installeren kan dit pakket je een hoop configuratie-tijd besparen. De handleiding is ook de moeite waard als je slechts enkele X terminals installeerd.
Je kunt hier hints vinden om de server te optimaliseren en tips voor het vinden van fouten.
http://batronix.com/elektronik/bauanleitungen/eeprommer.shtml Als je niet het geld hebt om een Eprom schrijver te kopen, kun je er ook een zelf bouwen.
http://metalab.unc.edu/pub/Linux/system/
boot/ethernet/diskless/Dless-Linux.README
Een korte handleiding die het opzetten van een schijfloze computer beschrijft.
http://www.linuxdoc.org/HOWTO/mini/NFS-Root.html Mini-Howto over de installatie en configuratie van een PC met de root-partitie gemount via NFS.
http://www.nilo.org/remoteboot/Remote-Boot.html Nilo is een netwerk-lilo en kan gebruikt worden om verschillende configuraties en besturingssytemen over het netwerk te laden.
http://etherboot.sourceforge.net/ Etherboot is een ander pakket voor het maken van bootroms, maar is minder ver ontwikkeld dan netboot.
http://www.online-club.de/m0/rp10067/diskless/grundlagen.html Hier kun je een korte Duitse handleiding vinden over de configuratie van een schijfloze client.
http://www.instmath.rwth-aachen.de/~heine/nfs-swap/nfs-swap.html De homepage van de NFS swap patch. Denk aan de beveiligings gaten!