Yamato47 Skrevet 11. oktober 2003 Del Skrevet 11. oktober 2003 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
Egil.B Skrevet 11. oktober 2003 Del Skrevet 11. oktober 2003 Post den i Faq'en. En god ting å bevare for framtiden. Lenke til kommentar
Silvester Skrevet 11. oktober 2003 Del Skrevet 11. oktober 2003 Smooth da. har tenkt en del på diskløs freebsd. Lenke til kommentar
DarkKing888 Skrevet 11. oktober 2003 Del Skrevet 11. oktober 2003 Ja, post den i FAQ'en Lenke til kommentar
DummeGaas Skrevet 13. oktober 2003 Del Skrevet 13. oktober 2003 Du burde legge enkelte ting i -tags. Lenke til kommentar
Yamato47 Skrevet 13. oktober 2003 Forfatter Del Skrevet 13. oktober 2003 Jeg holder på å få dette til nå med FreeBSD 5.1 mot 486 med 8 mb ram. Jeg venter på buildworld med cpu=486 for å ha verden og kjerne på samme patch-level. Jeg kom til login, men fikk ikke prompt. Nøkkelen er hvordan man kan sette opp swap over nfs. Her er svaret: http://www.freebsd.org/doc/en_US.ISO8859-1...swap-space.html Lenke til kommentar
Yamato47 Skrevet 14. oktober 2003 Forfatter Del Skrevet 14. oktober 2003 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
kyrsjo Skrevet 16. oktober 2003 Del Skrevet 16. oktober 2003 Må man ha diskett? Kan man ikke boote over ethernet da? 8) Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå