Gå til innhold

Diskløse FreeBSD-klienter - veldig bra norsk howto!


Anbefalte innlegg

Jeg fant denne howtoen på GG.

 

Det tøffe er at man med dette oppsettet, kan boote hva det er av maskiner med floppy og vips så har man en FreeBSD-klient.

 

 

 

 

Diskløse X-terminaler - FreeBSD DHCP server

Av Joakim Flathagen 26.06.02

 

 

Dette dokumentet beskriver hvordan eksisterende maskiner med ferdig installert

operativsystem med en enkelt diskett lett kan konverteres til fullverdige Unix

maskiner.

 

Dokumentet beskriver:

* Hvordan man får diskløs oppstart til å fungere

* Hvordan man konfigurerer X-windows for den/de diskløse klientene

* Hvordan man setter opp en FreeBSD server til formålet

* Hvordan man får to DHCP-servere til å fungere sammen ett og samme nett.

 

 

 

*Diskløs boot*

 

 

1. Lag en mappe en eller annen plass på harddisken der det diskløse systemet

skal installeres (dette må være en kopi av root eller en egen installasjon).

Vi kaller denne mappa for diskless.

 

mkdir - p /usr/diskless/rootfs

 

2. For å installere FreeBSD på dette området, bruker vi /stand/sysinstall

 

I Options:

InstallRoot -> /usr/diskless/rootfs

 

I Configure/Distribution:

Distributions -> bin

Crypto

Src/sys

Eventuelt også installere x-windows.

 

Start deretter installasjonen.

 

3. Lag kjernen til det diskløse systemet:

 

chroot /usr/diskless/rootfs

cd /sys/i386/conf

 

Konfigurasjonsfilen for kjernen skal hete diskless, og inneholde disse

parametrene ( i tilegg til alt det andre)

 

options MFS

options BOOTP

options BOOTP_COMPAT

options BOOTP_NFSROOT

 

Lag deretter kjernen

 

config diskless

cd ../../compile/diskless

make depend

make

make install

exit

 

4. Vi må konfigurere det diskløse området:

chroot /usr/diskless/rootfs

cd /

passwd root

newaliases

 

Følgende linje må legges til I /etc/fstab for den diskløse klienten.

 

192.168.0.1:/usr/diskless/rootfs / nfs rw 1

1

192.168.0.1:/usr/diskless/rootfs/usr /usr nfs rw 2 2

 

Forutsatt at ipadressen til serveren er 192.168.0.1

 

 

Alle endringer i /etc for den diskløse delen av serveren må kopieres til

/conf/default.

 

mkdir -p /conf/default

cp -r etc /conf/default

exit

 

5. Nå må vi konfigurere serverens dhcp opplegg:

 

I /usr/local/etc/dhcpd.conf har vi følgende:

 

option domain-name "test.no";

 

default-lease-time 600;

max-lease-time 7200;

 

authoritative;

 

subnet 192.168.0.0 netmask 255.255.255.0 {

use-host-decl-names on;

option subnet-mask 255.255.255.0;

option broadcast-address 192.168.0.255;

 

#option swap-path code 128 = string;

#option swap-size code 129 = integer 32;

 

host joakim {

hardware ethernet 00:20:e0:6b:cf:86;

fixed-address 192.168.0.3;

next-server 192.168.0.1;

option root-path "192.168.0.1:/usr/diskless/rootfs";

filename "/usr/diskless/rootfs/kernel";

}

}

 

Hver host må konfigureres med sin hardwareadresse slik som hostèn joakim her er

konfigurert. Det er ikke mulig å få til dette helt dynamisk på en enkel måte.

 

6. Konfigurere tftp:

 

Fjern kommenteringen på følgende linje i /etc/inetd.conf

 

tftp dgram udp wait nobody /usr/libexec/tftpd /tftpboot

 

Restart deretter inetd

 

 

I root området lager vi følgende:

 

cd /

mkdir -p /usr/tftpboot

ln -s /usr/tftpboot

cp /boot/pxeboot /tftpboot

 

PS: Det er mulig å la nettverkskortene boote selv dersom de støtter pxeboot. Da

slipper du å bruke etherboot diskett (se punkt 8).

 

 

7. Vi må konfigurere NFS:

I /etc/exports legger vi til linjen:

 

/usr -maproot=0.0 -alldirs 192.168.0.3

 

Ved flere hostèr :

 

/usr -maproot=0.0 -alldirs -network 192.168.0

 

Deretter restarter vi mountd:

killall -HUP mountd

 

 

8. Diskless boot.

 

Om ikke nettverkskortet på den diskløse klienten støtter boot, må du lage en

bootdiskett med etherboot for det aktuelle nettverkskortet.

 

Gå inn i /usr/ports/net/etherboot/

make

(eksempel for Intel EEPro100 kort :)

cd work/etherboot-5.0.5/src/

[sett inn en floppy]

gmake bin32/eepro100.fd0

 

 

*NFS share av hjemmeområdene og innlogging med NIS/YP.*

 

Slik systemet er nå etter punktene 1-8 kan man boote en diskløs klient. Når man

logger inn som root fra den diskløse klienten er det fritt frem og fullt anarki

på den diskløse delen av serveren. Dette berører ikke den "ekte" serveren, men

like fullt er det ønskelig med en viss kontroll over hva klientmaskinene

foretar seg.

 

Vi ønsker følgelig at klientene skal kunne logge inn med det brukernavnet de

har fått på serveren og få tilgang til sitt hjemmeområde.

 

Vi trenger å mappe opp homes som et NFS share, og ordne innlogging med NIS/YP

 

(Jeg kaller domenet for test).

Server setup:

1. Følgende må være til stede i etc.conf

 

nisdomainname="test"

nis_server_enable="YES" -selve YP serveren - ypserv

nis_yppasswdd_enable="YES" -slår på rpc.yppasswd som gjør det mulig å

endre passord fra klienten.

 

2. Restart nett med /etc/netstart

 

3. Konfigurasjonen av Yp ligger i /var/yp

Vi må initialisere passordfilene for YP. For dette finnes skriptet ypinit, men

først må vi kopiere passordfilen (den med de krypterte passordene) manuelt.

 

cp /etc/master.passwd /var/yp/master.passwd

cd /var/yp

vi master.passwd

 

Slett alle passordene som ikke skal være delt med klientene - eksempelivis bin,

tty, ftp osv.

For klientene skal filen være kun lesbar.

 

Nå kjører vi skriptet:

 

ypinit -m test

 

(Nå skjer det masse ting som du svarer fornuftig på... Vi kjører ikke slave YP)

 

Du skal få melding om at "blablabla has been setup as YP master server without

any errors"

 

Klient setup:

 

4. På klientene må nis konfigureres/startes via etc.conf filen. Denne

konfigureringen gjøres via det diskløse området (/usr/diskless/rootfs) på

serveren. Ha tunga rett i munnen så du vet hvor du er på serveren - serverens

root eller det diskløse områdets root (dette er viktig).

 

I etc.conf:

 

nisdomainname="test"

nis_client_enable="YES"

 

5. /etc/master.passwd må editeres slik at klienten spør YP etter brukere om de

ikke står i master.passwd:

 

Føy til følgende linje nederst i /etc/master.passwd:

Bruk kommandoen vipw til dette. Hvilken editor vipw benytter endres i EDITOR

variabelen.

 

Legg til denne:

+:::::::::

(9 kolon)

 

Mulig du må føye til følgende linje i /etc/passwd også (test selv - jeg måtte

ikke det) :

+::::::

(6 kolon)

 

For å importere gruppene, trengs følgende oppføring i /etc/group:

+:*::

 

 

Husk å kopiere etc mappa over til /conf/default/etc. Dette fordi

/etc/rc.diskless1 og /etc/rc.diskless2 skriptene kopierer /conf/default/etc til

den diskløse klientens /etc ved oppstart.

 

Dette må du gjøre hver gang du gjør en endring i filene under

/usr/diskless/rootfs/etc.

 

Slik:

 

chroot /usr/diskless/rootfs

[endre og konfigurere filer]

cp -r etc /conf/default

exit

 

 

6. Nå skal det være mulig å kjøre ypcat passwd på klienten og få opp brukerne

fra serveren. ypwhich er også en morsom kommando.

 

Kommandoen domainname skal vise navnet på NIS-domenet, og resultatet skal være

det samme både på serveren og klienten.

 

7. Nå skal det hele funke om du mapper opp hjemmekatalogen /home med nfs

 

 

Følgende linje må legges til I /etc/fstab:

192.168.0.1:/usr/home /home nfs rw 2 2

 

Husk at home katalogen må gjøres tilgjengelig for den gitte ipadressen.

Gjøres i rhosts på serveren.

 

Nå skal diskløs innlogging fungere, og det gjenstår bare å konfigurere X for

klientene.

Om du nå logger inn med en av brukerne som er definert på serveren, vil

passorden bli autentisert med NIS og brukerens hjemmeområde vi bli mappet opp

ned NFS.

 

Om rc.diskless1 og rc.diskless2

 

Det skal ikke være nødvendig å endre noe i disse to skriptene, selv om diverse

artikler på nettet hevder det motsatte.

 

Det disse skriptene gjør er å dele noen mapper med mfs, samt å dele etc fra

/conf/default.

 

 

 

8. Husk: Når du nå legger til brukere på serveren, må du "rebulde" NIS. La oss

si at vi skal legge til brukeren "joakim".

 

adduser joakim

cd /var/yp

make test

 

9. Hvis alle de overnevnte "finessene" nå fungerer, er resten bare vanlig

unix-hacking. Gratulerer!

 

 

*X-Windows*

 

Root på det diskløse området må konfigurere X likt for alle klientene. Fungerer

X for root fra en diskløs terminal, skal det også kunne fungere for

NIS-brukerne på de diskløse terminalene.

 

Sjekk at /etc/XF86Config blir oppdatert før du restarter. Denne må du oppdatere

på serverens diskløse område (/usr/diskless/rootfs/etc/XF86Config).

 

Å sette opp X-manageren for klientene er enkelt, og kan gjøres med

/stand/sysinstall eller ved å kopiere konfigureringen fra serveren selv (hvis

den har X konfigurert).

 

Hvilken windowmanager som skal benyttes endres i den enkelte brukers .xrcinit.

 

 

 

 

*Programvare*

 

For å installere programvare for de diskløse klientene:

chroot /usr/diskless/rootfs på serveren.

 

gå til /usr/ports og mappen for det aktuelle programmet.

make install

 

exit (for å gå ut av chroot mappen).

 

*DHCP-konfigurasjon*

 

Vi ønsker å bruke en egen DHCP-tjener til FreeBSD prosjektet. Å bruke to DHCP

servere i ett og samme nettverk er generelt sett ikke så smart, da man ikke har

noen kontroll på hvilken av DHCP tjenerne som svarer på en gitt forespørsel.

 

Etherboot har en finesse som gjør at vi slipper dette problemet.

Vi konfigurerer nemlig klienten slik at den kun tillater DHCP-svar fra en

bestemt tjener. Tjeneren konfigureres på sin side slik at den kun "tar imot"

forespørsler fra enkelte klienter.

 

Etherboot inneholder kode som gjør at den legger med en "tag" (som heter Vendor

Class Identifier) med innhold "Etherboot-x.y". Hvor x.y er versjonsnummeret

(5.0 i dette tilfellet). Dette gir serveren mulighet til å identifisere

Etherboot klientene, samt ignorere alle de andre.

 

 

Etherboot må konfigureres for å "slå på" denne finessen.

 

1. Ethereal konfigurering:

I /usr/ports/net/etherboot/work/etherboot-5.0.5/src/Conf :

Skriv følgende nederst i filen:

CFLAGS32+= -DREQUIRE_VCI_ETHERBOOT

 

 

Atributten DREQUIRE_VCI_ETHERBOOT vil slå på Vendor Class Identifier, slik at

klienten sender med Option 60 "Etherboot-5,0" med en DHCP-discover pakke.

Du kan se dette selv med en pakkesniffer -eksempelvis Ethereal.

 

 

2. Lag en ny etherboot diskett med

gmake bin32/eepro100.fd0 (imaget vil nå kompileres på nytt med den nye

atributten - dette tilfellet med Intel EEpro100 imaget) .

 

 

 

 

3. I dhcpd.conf på serveren må du legge til følgende:

option vendor-encapsulated-options 3c:09:45:74:68:65:72:62:6f:6f:74:ff;

 

 

 

option vendor-encapsulated-options er støttet av ISC DHCPD2 og 3.

Oversatt betyr denne linjen:

Vendor Encapsulated Options (Option 43) encloses :

"3c" = Option 60 - Vendor Class Identifier.

"09" = Lengden på Identifikatoren er 9

" 45:74:68:65:72:62:6f:6f:7" = "E:t:h:e:r:b:o:o:t" => Etherboot

"ff" = slutt på options.¨

 

 

Linjen vi legger til i dhcpd.conf gjør at DHCP-serveren sender atributten

Option 43 inneholdende "Etherboot" med DHCP-OFFER meldingen. Klientene vil fra

kun akseptere OFFER meldinger fra tjenere med denne atributten.

 

Boot fra nettverkskortet (altså uten diskett og uten boot-prom) vil ikke lenger

fungere. All den tid vi har definert at DHCP-discover-pakken må inneholde

Option 60 meldingen. Det er imidlertid mulig å legge Etherboot-imaget på

harddisken og velge OS med en meny.

 

 

Kilder

Etherboots hjemmesider http://etherboot.sourceforge.net

FreeBSD dokumentasjon http://www.freebsd.org/handbook/advanced-n...networking.html

Lenke til kommentar
Videoannonse
Annonse

Her er en foreløbig howto jeg har laget. Jeg er ikke sikker på om den er helt riktig. Er det noen som har lyst til å teste den?

 

 

 

FREEBSD 5.1 DISKLESS CLIENT - SERVER SETUP - BETA EDITION



This howto explains how to set up FreeBSD 5.1 clients without a hard drive to boot and function with nfs-mounted disks from the server.

There is no copyright on this document. You can do whatever you want with it.

If this document causes damage to you, feel free to sue the athor in court. You can reach the author at [email protected].





1. Set up the client's filesystem.

# mkdir -p /client/root

# /usr/sbin/sysinstall 



Choose 'custom'. Choose 'options' and set 'install root' to /client/root. Skip the 'partition' and 'label'-step. Select distributions (I recommend base, crypto and man) and installation media of your choice and commit. Do not do any other configuration!





2. Configure the server.

Put the following at the bottom of /etc/rc.conf:



nfs_server_enable="YES"    

nfs_server_flags="-u -t -n 4 -h 192.168.0.1"   

mountd_enable="YES"              

mountd_flags="-l -r"             

rpcbind_enable="YES"             

rpcbind_flags="-l -h 192.168.0.1" 



For more information, read the handbook. The -r for mountd is especially important.

Create the file /etc/exports with the content:

/client -maproot=0:0 -alldirs -network 192.168.0 



Install the port/package net/isc-dhcp3. Put the following in /usr/local/etc/dhcpd.conf:



server-identifier server.domain.name

default-lease-time 3600;

ddns-update-style none;

max-lease-time 72000;

use-host-decl-names on;

allow bootp;

subnet 192.168.0.0 netmask 255.255.255.0

        {

        option subnet-mask 255.255.255.0;

        option routers 192.168.0.1;

        option domain-name-servers 192.168.0.1;

        option broadcast-address 192.168.0.255;

 option domain-name "domain.name";



        host clientname

                {

                hardware ethernet 00:aa:bb:cc:dd:ee;

                fixed-address 192.168.0.2;

                option host-name "clientname";

                next-server 192.168.0.1;

                filename "client-kernel";

                option root-path "192.168.0.1:client/root";

                }

        range 192.168.0.100 192.168.0.199;

        }



To continue from outside the chroot jail:

# exit



Put the following line in /etc/inetd.conf:

tftp dgram udp wait root /usr/libexec/tftpd tftpd -s /clients/tftpd





3. Make client kernel from vanilla sources.

Get vanilla sources. Use sysinstall to install 5.1-sources, or create a cvsup-file with tag=RELENG_5_1_0_RELEASE and cvsup.



Make a kernel config file for the client's server in /sys/i386/conf. Include all modules you need to boot on the client! Modules cannot be loaded from loader.conf! Include the following entries:



#These are mandatory for a diskless client:

options     BOOTP          

options     BOOTP_NFSROOT  

device      md             

options     NFSCLIENT      

options     NFS_ROOT      

hints       "GENERIC.hints"      



#These may not be required, but I suggest you include them:

options     BOOTP_COMPAT  

options     BOOTP_NFSV3

#makeoptions DESTDIR=/client/root



Make client make.conf

# mv /etc/make.conf /etc/make.conf.server

# cp /usr/share/examples/etc/make.conf /etc/make.conf



The new make.conf will be used to compile kernel and world for the client. Make adjustments!

# cd /sys/i386/conf && config CLIENTCONFIG && cd ../compile/CLIENTCONFIG && make depend && make install DESTDIR=/client/root



Prepare the new kernel for booting:

# mkdir /client/tftpd

# cp /client/root/boot/kernel/kernel /client/tftpd/client-kernel



From the client you can later run installworld, installkernel and mergemaster from a /usr/obj compiled on the server or on the client.





5. Configure the client

# chroot /client/root

# /usr/sbin/sysinstall



Setup console settings, time zone, charset and such. Don't set up network.



Replace X with the desired number of megabytes for the client's swap space.

# dd if=/dev/zero of=/client/swap bs=1024k count=X

# chmod 0600 /client/swap



Do post-installation configuration and exit. Edit any /etc-files as you want.

Remove all network setup stuff from the client's /etc/rc.conf and put in it:

swapfile="/client/swap"



Set up /etc/fstab on the client:

192.168.0.1:/data/clients/netplay-root / nfs rw 0 0

#proc /proc procfs rw 0 0





6. Get boot floppy for the client.

Go to http://rom-o-matic.net/ and create the floppy. Select your ethernet card, and under options mark off IMAGE_FREEBSD. Get the floppy image, and put it on a floppy. How you do this I leave to you to figure out. Google will allways help you.





7. Rock!

Start server daemons:

# cp /etc/make.conf /client/root/etc/make.conf && mv /etc/make.conf.server /etc/make.conf

# /etc/rc.d/nfsd start

# /usr/local/etc/rc.d/isc-dhcpd.sh start

# killall -HUP /dev/



Boot the client and pray!



Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...