DRBL
Fra GNUskole
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

