NFS-Root Mini-Howto

Andreas Kostyrka, andreas@ag.or.at,
Vertaald door: Ellen Bokhorst, bokkie@nl.linux.org

V8, 8 augustus 1997


In deze Mini-HOWTO zal worden geprobeerd een uitleg te geven hoe een Linux werkstation zonder harddisk in te stellen, welke zijn rootbestandssysteem via NFS mount. De nieuwste versie van deze Mini-Howto is altijd te vinden in ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/mini/NFS-Root of op een sunsite mirror in de buurt.

1. Copyright

(c) 1996 Andreas Kostyrka (e9207884@student.tuwien.ac.at of andreas@ag.or.at)

Tenzij anders aangegeven, vallen HOWTO-documenten onder het copyright van hun respectieve auteurs. Linux HOWTO documenten mogen geheel of gedeeltelijk worden gereproduceerd en gedistribueerd, via elk fysiek of elektronisch medium, zolang deze copyright-melding op alle kopieën behouden blijft. Commerciële herdistributie is toegestaan en wordt aangemoedigd; de auteur zou echter graag van dergelijk distributies op de hoogte worden gebracht.

Alle vertalingen, afgeleide werken, of verzamelde werken aangaande enige Linux HOWTO-documenten moeten zijn voorzien van deze copyright-melding. Dat wil zeggen dat je geen afgeleide werken van een HOWTO mag produceren en aanvullende beperkingen op de distributie ervan mag opleggen. Uitzonderingen op deze regels kunnen onder bepaalde voorwaarden worden toegestaan; neem alsjeblieft contact op met de Linux HOWTO coördinator via het hieronder aangegeven adres.

In 't kort, we willen verspreiding van deze informatie via zoveel mogelijk kanalen bevorderen. We willen echter dat het copyright op de HOWTO-documenten behouden blijft, en zouden graag op de hoogte worden gesteld van alle plannen om de HOWTO's te herdistribueren.

Als je vragen hebt, neem dan alsjeblieft contact op met Andreas Kostyrka <mailto:andreas@ag.or.at>, de auteur van deze mini-HOWTO, of Tim Bynum, de Linux HOWTO coördinator, via email <mailto:linux-howto@sunsite.unc.edu>.

1.1 Contributors

2. Algemeen overzicht

Over het algemeen gesproken komen de volgende problemen bij een werkstation om de hoek kijken:

De huidige implementatie van NFSROOT in de Linux kernel (op 't moment 1.3.7x) geeft de volgende mogelijke ``oplossingen'':

Voor je begint met het instellen van een omgeving zonder disk, zal je een beslissing moeten nemen of je via LILO óf LOADLIN zal gaan booten. Het voordeel hiervan is flexibliteit, het nadeel is snelheid. Een Linux kernel zonder LILO booten is sneller. Dit kan wel of geen overweging zijn.

3. Setup van de server

3.1 De kernels compileren

RARP ondersteuning in de kernel van de server zal vermoedelijk wel een goed idee zijn. Je moet het hebben als je zonder kernelparameters wilt booten. Aan de andere kant helpt het je niet als de client zich niet op hetzelfde subnet bevindt als de server.

De kernel voor het werkstation heeft minimaal het volgende meegecompileerd nodig:

Als het werkstation zonder kernelparameters zal worden geboot, moet je ook het rootdevice instellen op 0:255. Doe dit door het aanmaken van een dummy apparaatbestand met mknod /dev/nfsroot b 0 255. Nadat je een dergelijk apparaatbestand hebt aangemaakt, kun je het rootdevice van de kernel-image instellen met rdev <kernel-image> /dev/nfsroot.

3.2 Aanmaak van het rootbestandssysteem

Kopiëren van het bestandssysteem

Waarschuwing: ondanks dat deze instructies voor je zouden kunnen werken, zijn ze in geen enkele betekenis zinvol in een produktie-omgeving. Zie de NSF-Root-Client mini-howto van Ofer Maor <ofer@hadar.co.il> voor een betere manier om een rootbestandssysteem voor de clients in te stellen.

Nadat je hebt besloten waar de root-structuur te plaatsen, maak je het aan met (b.v.) mkdir -p <directory> en tar cClf / - | tar xpCf <directory> -.

Als je de kernel zonder LILO boot, dan moet de rootdir /tftpboot/<IP-adres> zijn. Als je dit niet prettig vindt, kun je het wijzigen in de Makefile in de kernel-sources, zoek naar een regel als: NFS_ROOT = -DNFS_ROOT="\"/tftpboot/%s\"" Als je dit wijzigt, moet je de kernel opnieuw compileren.

Wijzigingen aan het rootbestandssysteem

Trim nu de niet benodigde bestanden, en controleer de /etc/rc.d scripts. Een aantal belangrijke punten:

Exporteren van het bestandssysteem

Exporteer de rootdir naar het werkstation. Zie exports(5). Zeer waarschijnlijk moet je de nfsd/mountd na deze wijziging opnieuw starten. Onder RedHat kan dit eenvoudig worden bewerkstelligd door het typen van /etc/rc.d/init.d/nfs stop ; /etc/rc.d/init.d/nfs start .

RARP setup

Stel RARP ergens op het net in. Als je zonder nfsroot parameter boot, moet de RARP-server de NFS-server zijn. Gewoonlijk zal dit de NFS-server worden. Om dit te kunnen doen, moet je een kernel draaien met ondersteuning voor RARP.

Voer het uit (en installeer het ergens in /etc/rc.d op de server!):

/sbin/rarp -s <ip-addr> <hardware-addr>

hier is

ip-addr

het IP-adres van het werkstation en

hardware-addr

het Ethernet-adres van de netwerkkaart van het werkstation.

voorbeeld: /sbin/rarp -s 131.131.90.200 00:00:c0:47:10:12

Je kunt in plaats van het IP-adres ook een symbolische naam gebruiken, zolang de server maar achter het IP-adres kan komen. (/etc/hosts of DNS lookups)

BOOTP setup

Voor een BOOTP setup moet je /etc/bootptab wijzigen. Raadpleeg alsjeblieft de manpages van bootpd(8) en bootptab(5).

Het hardware-adres achterhalen

Ik weet het hardware-adres niet! Hoe kom ik daar achter?

4. Het werkstation booten

4.1 Gebruiken van een bootrom

Aangezien ik iets dergelijks zelf nog niet hebt gebruikt, kan ik je slechts de volgende tips geven (Christian Leutloff <leutloff@sundancer.tng.oche.de> was zo vriendelijk):

4.2 Een raw kerneldisk gebruiken

Als je het rootbestandssysteem met de juiste naam gezien de standaard benaming hebt geëxporteerd en je NFS-server ook de RARP-server is, (wat impliceert dat de boxen zich op hetzelfde subnet bevinden), dan kun je de kernel gewoon booten door een cat naar een disk. (Je moet het rootdevice in de kernel op 0:255 instelen). Hierbij wordt verondersteld dat de rootdirectory op de server /tftpboot/IP-adres is (deze waarde kan bij het compileren van de kernel worden gewijzigd).

4.3 Gebruik van een bootloader & RARP

Geef de kernel bij het booten alle benodigde parameters en voeg toe nfsroot=<server-ip-addr>:</path/to/mount>; hier is server-ip-addr het IP-adres van je NFS-server, en /path/to/mount het path naar de rootdirectory.

Tips:

4.4 Een bootloader met RARP gebruiken

Geef in aanvulling op nfsroot een nfsaddrs=<wst-IP>:<srv-IP>:<gw-IP>:<netm-IP>:<hostname> commandoregelargument voor de kernel. De kernel zal eth0 met de opgegeven parameters instellen:

wst-IP

IP-adres van de computer

srv-IP

IP-adres van de NFS-server

gw-IP

gateway

netm-IP

netmask

hostname

computernaam

5. Bekende problemen

5.1 /sbin/init start niet

Een bekend probleem met /sbin/init, dat bij (tenminste) een aantal huidige distributies wordt geleverd, is dat /sbin/init dynamisch is gelinkt. Dus je moet voor de client in een juiste /lib setup voorzien. Wat eenvoudig is te doen is /sbin/init (voor de client) proberen te vervangen door een statisch gelinkt ``Hello World'' programma. Op deze manier weet je of het iets fundamenteels is, of ``gewoon'' een probleem dat te maken heeft met het dynamische linken.

5.2 /dev problemen

Als je bij het booten een aantal onjuist weergegeven meldingen krijgt over tty's, dan zou je vanaf de client in de /dev directory MAKEDEV uit kunnen voeren. Er gaan geruchten dat dit met bepaalde server os'sen die gebruik maken van 64-bit dev nummers niet werkt. Mocht dit je overkomen, mail me dan alsjeblieft met welk os je problemen ervaart. Een mogelijke oplossing is het aanmaken van een kleine /dev ramdisk aan het begin van het bootproces en het iedere keer herinstalleren van de device nodes.

6. Andere onderwerpen