DRBL

Fra GNUskole

Gå til: navigasjon, søk

Innhold

DRBL (Diskless Remote Boot in Linux)

Prosjektet finner du på http://drbl.sourceforge.net/

I løpet av skoleåret 2010-2011 ruller vi ut DRBL med Fedora 13 på alle nye maskiner og alle gamle maskiner som takler det. Det betyr at alle maskiner med mer enn 1GB minne blir lagt over fra LTSP5 til DRBL. Det er nokså enkelt å la begge systemer leve side om side siden vi bruker NFS og LDAP.

En helt vanlig installasjon

Hvis du vil teste DRBL er det ikke verre enn at du leser deg igjennom installasjonsforklaringen (les nøye!) og gjør det som står der. Jeg var tøff i trynet første gang og skummet igjennom forklaringen og gikk glipp av et par veldig viktig detaljer første gang jeg prøvde... ikke gjør det :-)

Forklaring for Fedora 11 og 12

Last ned fra http://drbl.sourceforge.net/download/nchc/stable/

wget http://drbl.nchc.org.tw/one4all/desktop/download/stable/RPMS/drbl-current.i386.rpm
rm -f GPG-KEY-DRBL; wget http://drbl.sourceforge.net/GPG-KEY-DRBL; rpm --import GPG-KEY-DRBL
yum -y localinstall drbl-current.i386.rpm
/opt/drbl/sbin/drblsrv -i

Svar så godt du kan, men jeg anbefaler at du prøver ut ssi-utgaven av drbl. Du kan få litt baluba med valg av kjerne, men gå for valg nr. 2 om ikke valg nr. 1 fungerer.

/opt/drbl/sbin/drblpush -i

Svar igjen så godt du kan, men kan du gå for standardverdiene. Bare pass på hva du svarer på IP-serien i DHCP-biten.

Da skal det faktisk virke :-)

Forklaring for Fedora 13

Last ned siste utgave fra http://drbl.sourceforge.net/download/nchc/unstable/ og installer den på maskinen. Pass på at du har skrudd av SELinux på Fedora-installasjonen!


Integrer systemet i et større system

Vi bruker LDAP og NFS fra før i vårt LTSP5-system. Hjemmeområder og fellesområder hentes fra ulike filtjenere via NFS og alle brukerne autentiseres via LDAP. DRBL bruker NFS og NIS for å få informasjon fra hovedmaskinen ut til de tykke klientene uten harddisk og en standardinstallasjon vil ikke virke mot vårt system om en ikke gjør endringer i oppsettet av DRBL-tjeneren.


NFS

Du kan legge inn egne monteringer (bl.a. NFS) i filen /opt/drbl/conf/client-append-fstab

Der kan du f.eks. legge inn...

192.168.1.10:/nfs/ansatte        /home/ansatte       nfs       noatime,acl,defaults     0 0

Så må du kjøre kommandoen...

/opt/drbl/sbin/drblpush -c /etc/drbl/drblpush.conf

...for å få endringene ut til de tykke klientene.


LDAP

Om du bruker LDAP til å autentisere brukere må du gjøre to endringer for å alt til å fungere godt med DRBL-klientene (på godt norsk - klare å logge deg på). Du må selvfølgelig ha satt opp DRBL-tjeneren til å autentisere brukere mot LDAP-tjeneren.

Så er det noen endringer i /opt/drbl/sbin/drblpush i linje 3260 (eller i nærheten - dette endrer seg litt fra versjon til versjon)...

perl -pi -e "s/^passwd:.*/passwd:     files nis/" $drbl_common_root/etc/nsswitch.conf
perl -pi -e "s/^shadow:.*/shadow:     files nis/" $drbl_common_root/etc/nsswitch.conf
perl -pi -e "s/^group:.*/group:     files nis/" $drbl_common_root/etc/nsswitch.conf
perl -pi -e "s/^hosts:.*/hosts:     files nis dns/" $drbl_common_root/etc/nsswitch.conf

...må endres til...

perl -pi -e "s/^passwd:.*/passwd:     files ldap/" $drbl_common_root/etc/nsswitch.conf
perl -pi -e "s/^shadow:.*/shadow:     files ldap/" $drbl_common_root/etc/nsswitch.conf
perl -pi -e "s/^group:.*/group:     files ldap/" $drbl_common_root/etc/nsswitch.conf
perl -pi -e "s/^hosts:.*/hosts:     files dns/" $drbl_common_root/etc/nsswitch.conf

OBS! I Fedora 13 skal det slik ut...

perl -pi -e "s/^passwd:.*/passwd:     files sss/" $drbl_common_root/etc/nsswitch.conf
perl -pi -e "s/^shadow:.*/shadow:     files sss/" $drbl_common_root/etc/nsswitch.conf
perl -pi -e "s/^group:.*/group:     files sss/" $drbl_common_root/etc/nsswitch.conf
perl -pi -e "s/^hosts:.*/hosts:     files dns/" $drbl_common_root/etc/nsswitch.conf

I Fedora 13 må du også legge dette inn i filen /opt/drbl/conf/config-extra-service

service_extra_added="sssd"

Det er også en "bug" i DRBL som gjør at sssd-tjenesten ikke starter helt slik den skal. Dette ordner du ved å legge til denne linjen i 2516 (etter "chkconfig --add $i).

chroot $drbl_common_root/ /sbin/chkconfig $i on

Så må du kjøre drblpush-kommandoen - enten for første gang, eller for å oppdatere endringene du har gjort.

Da skal DRBL-klientene autentisere seg mot LDAP-tjeneren din.

Skru av DRBL sin DHCP-tjener

Hvis du vil integrere DRBL i den vanlige DHCP-tjeneren du kanskje har i produksjon må du skru av DHCP i DRBL-tjeneren. Den enkleste måten å gjøre dette på er å...

1) Fjerne dhcp-tjeneren:

yum remove dhcp

Hvis du av en eller annen grunn ikke bør/kan avinstallere dhcp-tjeneren kan du føye til exit som første linje i filen /etc/init.d/dhcpd (husk å stoppe dhcp-tjeneren først :-).

2) Skru av funksjonen i drbl-klienten som spør etter en IP fra en DRBL-tjener:

/opt/drbl/sbin/mknic-nbi -c n

Så nå du inn i dhcp-tjeneren din og føye til...

next-server               192.168.1.10;
filename = "pxelinux.0";

...på alle de maskinen du vil ha over til DRBL-tjeneren.

Hvis du bruker NIS (bruk heller LDAP :-)

En bug

I filen drbl-ssi-client-prepare er det en "feil" som endrer på alle IPer i fstab og yp.conf som måtte vise til noe annet enn hovedmaskinen i DRBL-oppsettet. Dette må "fikses" slik at ip-adresser til de riktige filtjenerne og NIS-tjeneren beholdes.

Linje 178 (sett et # foran perl -pi...)

# for YP
# perl -pi -e "s/(domain.*server)[[:space:]]+.*/\$1 $nfsserver/g" /etc/yp.conf

Du må inn i filen /etc/drbl/drblpush.conf og føye til under eth1 (eller tilsvarende nederst i conf-filen):

nisserver=192.168.1.10 (eller nå hva NIS-tjeneren din heter)

Hver gang du kjører drblpush-kommandoen ødelegges alle autentiseringsinstillinger du måtte ha laget til andre maskiner enn DRBL-maskinen. Du må inn i /etc/yp.conf og endre localhost til IPen til NIS-tjeneren din.

Juks...

Du kan gå inn i filen drblpush og endre på et par ting for å sette NIS-tjeneren -permanent-.

Linje 1689 endres for å ordne /etc/yp.conf:

domain $nisdomain server 192.168.1.10

Linje 3571 endres hvis du ikke gidder å legge inn nisserver i /etc/drbl/drblpush.conf som beskrevet over for drbl-klientene:

drbl-gen-client-files -l $language -h $ip -k \$keep_old_files_flag -n $nfsserver -a $label -i 192.168.1.10 \$pseudo_opt


Hva har vi gjort?

Vi har satt opp flere DRBL-tjenene med støtte for SSI - altså at det er en standard /etc- og /var-katalog som deles ut til alle klienter. DRBL-tjenerne har bare installert ett nettverkskort, så vi har gjort alt vi skriver om i dette avsnittet om å installere DRBL i et større system. Det vi ikke har skrevet særlig mye om er at hver DRBL-tjener (med sitt ene nettverkskort) er satt opp i alle subnett hvor det skal dele ut DRBL. Da har vi satt opp Virtuelle nettverkskort på det ene (ekte) kortet som er installert. DRBL liker dårlig å gå på tvers av subnett, så tjeneren må finnes i hvert subnett hvor den deler ut data. Dette må du gjøre før du kjører drblpush -i.

Den ene DRBL-tjeneren er satt opp med ATI-drivere og deler da bare ut sitt bilde til ATI-maskiner med -nye- skjermkort. ATI-driveren støtter ikke gamle(!) ATI-skjermkort.

Den andre DRBL-tjeneren er satt til auto på skjermkort og deler ut DRBL til alle andre maskiner.

Installere drivere til skjermkort

Denne delen er litt eksperimentell, men vi har den med. Vi håper at fri programvare-driverne til ATI  og NVidia etterhvert blir så bra at det ikke er behov for å installere egne drivere for å få bedre ytelse på skjermkortene (spesielt 3D og video). Fedora 13 gjør gode ting her, så støtt opp om prosjektet og installer Fedora 13!

ATI-drivere

Hvis du tidligere har installert driverne direkte fra AMD-ATI må du avinstallere dem og reparere Mesa:

yum reinstall mesa-libGL

Oppdater kernel og restart maskinen:

yum update kernel
reboot

Installer ATI-driver fra RPMfusion:

rpm -Uvh http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-stable.noarch.rpm http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm
yum install kmod-catalyst xorg-x11-drv-catalyst xorg-x11-drv-catalyst-libs.i586

Legg merke til at vi her installerer i586-driveren - så du må passe på at det er denne kjernen du bruker på drbl-klientene dine!

Fjern i686-kjernen...

yum -y remove kernel-PAE.i686

...og reboot.

Ta kopi av de gamle initrd-filene og lag nye:

mv /boot/initrd-`uname -r`.img /boot/initrd-`uname -r`.img.backup
mkinitrd -v /boot/initrd-`uname -r`.img  `uname -r`

Jeg vet ikke om det er nødvendig å føye til nopat i grub.conf (se under), men den som lever får se. Du må i så tilfelle huske å gjøre dette i /tftpboot/nbi_img/pxelinux.cfg/default for drbl-klientene (om det er nødvendig!):

gedit /boot/grub/grub.conf
splashimage=(hd3,1)/boot/grub/splash.xpm.gz
hiddenmenu
title Fedora (2.6.29.2-126.fc11.x86_64)
   root (hd3,1) 
   kernel /boot/vmlinuz-2.6.29.2-126.fc11.x86_64 ro root=UUID=f372564c-f1a7-430e-b97f-b250812e2c30 rhgb quiet vga=0x318 nopat
   initrd /boot/initrd-2.6.29.2-126.fc11.x86_64.img

Så må du aktivere driveren og kopiere xorg.conf over til drbl-klientene:

catalyst-config-driver enable
cp /etc/X11/xorg.conf /tftpboot/nodes/192.160.1.100/etc/X11

Så må du kjøre for å oppdatere drbl-klientene:

/opt/drbl/sbin/update-drbl-client-kernel-from-server 
/opt/drbl/sbin/drblpush -c /etc/drbl/drblpush.conf

Ulempen med dette er at alle maskinene blir konfigurert med ATI, men det kommer vi tilbake til seinere.

NVIDIA-drivere

Denne har vi ikke begynt på en gang... fordi vi ikke har så mange maskiner med gode NVidia-kort ute i villmarken.


Automatisering

Slik at du kan bruke det i skript... (foreløpig en test spesifikk for DRBL inkludert i et større system!) PS! Det virker ikke enda :-(

 yum -y install drbl-current --nogpgcheck
 cd /opt/drbl/sbin/
 ./drblsrv -i -t n -a n -n n -m n -x n -c n -g n -k 1 -o 1 -s -l 0 #Hm... ikke alle valg skjedde automatisk allikevel
 yum -y remove dhcp
 ./mknic-nbi -c no
 cp -a /home/ikt/fedora12/drblpush /opt/drbl/sbin/
 cp -a /ho
Personlige verktøy