DRBL
DRBL (Diskless Remote Boot in Linux)
Prosjektet finner du på http://drbl.sourceforge.net/
DRBL betyr Diskless Remote Booting in Linux og likner en del på tynne klienter, men istedet for at du får tynne klienter mot en terminaltjener får du her en DRBL-tjener som deler "seg selv" ut til tykke klienter (som da ikke trenger noen harddisk). Fordelen DRBL har overfor tynne klienter er at DRBL er tykke klienter og takler derfor flash, lyd, film og alle andre tunge ting mye bedre enn tynne klienter gjør. Ulempen er at klientene bør være relativt kraftige (>=1024MB minne og en passe moderne Intel i-ett-eller-annet-prosessor).
I løpet av skoleåret 2011-2012 rullet vi ut DRBL med CentOS 6.2 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 LTSP 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 CentOS
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å CentOS-installasjonen!
rm -f GPG-KEY-DRBL; wget http://drbl.sourceforge.net/GPG-KEY-DRBL; rpm --import GPG-KEY-DRBL yum -y localinstall drbl-*.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 valget om den kjernen maskinen du installerer på bruker.
(OBS! Ta innom filen /etc/hosts og slett linjen som begynner med ::1 (den kan lage bråk seinere).)
Skriv så...
drblpush -i
(I den siste utgaven av DRBL er sentrale filer lagt i stien (i /usr/bin og /usr/sbin), mens alle filer før lå katalogen /opt/drbl/) Svar igjen så godt du kan, men du kan godt gå for standardsvarene. Bare pass på hva du svarer på IP-serien i DHCP-biten.
Da skal det faktisk virke :-)
Integrer systemet i et større system
Vi bruker LDAP og NFS i vårt 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 /etc/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
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 /usr/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 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 sss dns/" $drbl_common_root/etc/nsswitch.conf
Du må også legge dette inn i filen /etc/drbl/conf/client-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 i filen /usr/sbin/drblpush (etter "chkconfig --add $i).
chroot $drbl_common_root/ /sbin/chkconfig $i on
(PS! Når du først er her - føy til denne.)
CUPS
Legg til denne linjen til slutt i /etc/cups/cupsd.conf på DRBL-tjeneren:
BrowsePoll 192.168.1.30:631
Så må du oppdatere DRBL-klienten:
drblpush -c /etc/drbl/drblpush.conf
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:
mknic-nbi -c no
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.
Andre ting du bør tenke på
Google Chrome
(Dette buggen pleier de å fikse hvis den oppstår, men det er greit å ha løsningen her.)
Google Chrome virker ikke uten at du fikser enda en liten bug. Du må legge til linjen...
/bin/chmod 1777 /dev/shm
...omtrent på linje 3109 i /usr/sbin/drblpush-kommandoen hvor filen rc.local genereres for RH/CentOS (mellom RC_LOCAL-markørene).
Så må du kjøre drblpush-kommandoen på nytt for å oppdatere DRBL-klienten.
Noen maskiner med Intel-skjermkort og bare VGA
Hvis maskinen booter bare med "blå" desktop, kan det hende at maskinen tror du har koblet til en HDMI-skjerm (som du da ikke har). Du løser dette ved å legge inn...
video=LVDS-1:d
...til slutt i append-linjen i /tftpboot/nbi_img/pxelinux.cfg/default på DRBL-tjeneren maskinen booter fra.
Da kobler du ut hele HDMI-kortet når maskinen booter. Løsningen er hentet fra https://www.centos.org/modules/newbb/viewtopic.php?topic_id=34672
Fjerne "annet", samt mulighet for liste av brukere i innloggingsbildet
Innloggingsbildet på CentOS 6 og forøvrig alle Redhat distroene kan være litt plagsomt i forhold til at maskinen husker hvem som har vært innlogget tidligere, og dermed presenterer disse i innloggingsbildet. Eller at du simpelthen må klikke "annet" for å skrive inn brukernavnet ditt. Denne er ment vel, men kan være irriterende i et stort system med gjerne flere hundre brukere. Fjern ovennevnte ved å skrive:
gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.defaults/ --type bool --set /apps/gdm/simple-greeter/disable_user_list true