Linux zonder Schijf
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 restartzou het nieuwe configuratie bestand gelezen moeten zijn
Shutting down service dhcpd done Starting service dhcpd doneIn 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 xconfigConfigureer 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 zImagekopieer 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 bootImageDit 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 255De laatste actie op het image moet zijn:
rdev bootImage /dev/nfsNu 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 /tftpbooten de sub-directories voor de verschillende clients:
>> mkdir /tftpboot/pc1 >> mkdir /tftpboot/pc2De 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.

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.1toe 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.
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 -sActiveer 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/meminfouit. 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 /SWAPFILEKijk nog eens
>> cat /proc/meminfoen 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! |