Diskless Ubuntu klient fra Arch server
Fra Diskusjon.no WIKI
Innhold |
Forord
Diskløs Ubuntu klient fra Arch Linux server via TFTP og NFS.
Det kan være flere fordeler med å ikke ha harddisk i en datamaskin. Mindre varmeutvikling, mindre støy, enklere vedlikehold og administrasjon, enklere backup, osv.
I denne artikkelen så tas det i bruk Ubuntu som det diskløse klientoperativsystemet, og Arch Linux som server.
Forhåndsavklaringer
- Alt er på eget ansvar. Tukling med harddisker, partisjoner, installasjon av operativsystemer, osv. kan høre til datatap eller lignende. Husk å ha backup på forhånd.
- Jeg forutsetter i dette eksempelet at serveren sin IP-adresse er 192.168.0.2 og den diskløse Ubuntumaskinen sin IP-adresse er 192.168.0.4
- I dette eksempelet bruker jeg DHCP-tjeneren"dhcpd".
- Det er tidkrevende og noe teknisk å sette opp dette, så du må beregne noen timer. :-)
- Vi bruker NFS til å dele ut dataområde som den diskløse klienten skal ha som /, og TFTP til å dele ut kjernen som den diskløse klienten skal boote fra.
Serveroppsett
Del 1
Det vil ikke bli foretatt noen gjennomgang av installasjonen av Arch Linux, så går ut ifra at det allerede er et fungerende system oppe og kjører, at den er på nettverket + internett.
Første trinn er å installere NFS, slik at vi kan dele ut dataområde som den diskløse maskinen skal bruke som dataområde.
# pacman -Sy nfs-utils rpcbind
Etter dette er installert, må det redigeres i konfigurasjonsfilen til NFS for å dele ut et angitt dataområde fra serveren.
# nano /etc/exports
Forutsatt at dataområde som den diskløse klienten skal starte fra ligger på /storge/nfsroot. Rediger dette og IP-adresse for den diskløse klienten etter behov. Legg til linjen under:
/storage/nfsroot 192.168.0.4(rw,async,no_root_squash,no_subtree_check)
Til slutt starter vi NFS-tjeneren.
# /etc/rc.d/rpcbind start # /etc/rc.d/nfs-common start # /etc/rc.d/nfs-server start
Hvis du ønsker at disse tjenestene skal starte som standard når du starter serveren din, må du også redigere /etc/rc.conf og legge til "rpcbind nfs-common nfs-server" på slutten av DAEMONS-linjen.
Tips: hvis du senere gjør endringer i /etc/exports så trenger du ikke starte noen tjenester på nytt, men du må alikevel fortelle at nfs-server skal ta endringene i bruk med følgende linje:
# exportfs -arv
Klientmal
Det er alltid litt arbeid med førstegangsoppsett av en diskløs maskin, men det er greit å ha i tankene at det ikke tar stort lenger tid å sette opp f.eks. 20 diskløse maskiner som det tar å sette opp 1. :-)
Vi må installere operativsystemet (Ubuntu) som vi skal bruke som mal til den diskløse. Hvis du allerede har en fungerende installasjon, kan du selvsagt bruke denne. Jeg har installert Ubuntu som en virtuell maskin, slik at jeg ikke måtte installere det på en fysisk boks.
Obs: husk at endringene som blir foretatt på denne mal-installasjonen "ødelegger" den for vanlig bruk - hvis du skal bruke Ubuntuinstallasjonen her etterpå, reverser endringer som blir gjort før du starter maskinen på nytt. Ta i såfall backup av konfigurasjonsfil etc.
1. Forutsetter at brukernavnet ditt på Ubuntuinstallasjonen er "brukernavn" - bytt ut med ditt. :-) Det er også mulig at versjonsnummerene er endre, så det må du passe på. Kjør følgende kommandoer:
$ sudo aptitude install nfs-common $ sudo cp /boot/vmlinuz-2.6.28-11-generic /home/brukernavn
2. Rediger initramfs.conf, og endre BOOT=local -> BOOT=nfs. Lag så en inird.img med kommandoen mkinitramfs.
$ sudo nano /etc/initramfs-tools/initramfs.conf $ mkinitramfs -o /home/brukernavn/initrd.img-2.6.28-11-generic
3. Sett at eth0 ikke skal hente IP-adresse automatisk. Dette for at NFS-oppkoblingen som gjøre i boot ikke skal bli brutt av dhcp-klienten etter den har begynt å starte Ubuntu. (noen forslag til løsning rundt dette med statisk IP hvis man har 100 maskiner?)
$ sudo nano /etc/network/interfaces. iface eth0 inet manual
4. Rediger /etc/fstab til at linjen for root-mount er nfs, samt eventuelt noe tmpfs hvis det er flere maskiner som skal dele samme datalagringsområde.
proc /proc proc defaults 0 0 /dev/nfs / nfs rsize=32768,wsize=32768 0 1 /dev/scd0 /media/cdrom0 udf,iso9660 user,noauto,exec,utf8 0 0 none /tmp tmpfs defaults 0 0 none /var/run tmpfs defaults 0 0 none /var/lock tmpfs defaults 0 0 none /var/tmp tmpfs defaults 0 0
5. Montèr opp NFS-sharen du har på serveren din, slik at vi kan få kopiert over filene. Endre IP-adresse og NFS-sharenavn til det som passer for deg.
$ sudo mount -t nfs -o nolock 192.168.0.2:/storage/nfsroot /mnt $ sudo cp -ax /. /mnt $ sudo cp -ax /dev/. /mnt/dev
6. Slå av den Ubuntumaskinen som vi brukte som "mal", da vi ikke trenger denne mer. :-) Som tidligere nevnt, hvis du skal fortsette å bruke denne mal-installasjonen til noe, må du reversere endringer du har gjort før du starter på nytt.
Serveroppsett
Del 2
Hvis du allerede har DHCP-tjeneren "dhcpd" installert, hopp over installasjon av denne - men pass på å utføre korrekte endringer i konfigurasjon. Husk backup av original konfigurasjonsfil. :-)
1. Installer syslinux, tftp og eventuelt dhcp-tjener. Legg også til "tftpd" og eventuelt "dhcpd" under DAEMONS i rc.conf, etter nfs-server vi la inn i Del 1.
# pacman -Sy dhcp # pacman -S syslinux tftp-hpa
2. Vi må kjøre noen kommandoer:
# mkdir /var/tftpboot && mkdir /var/tftpboot/pxelinux.cfg # cp /usr/lib/syslinux/pxelinux.0 /var/tftpboot/
3. Redigering av TFTP-innstillingene
# nano /var/tftpboot/pxelinux.cfg/default
PS: istede for default, så kan du bruke 01-macadresse som navn, f.eks. 01-00-22-15-c8-59-03 (01 står for ethernet elns). Dette gjør at du kan ha egendefinerte innstillinger pr datamaskin.
LABEL linux KERNEL vmlinuz-2.6.28-11-generic APPEND root=/dev/nfs initrd=initrd.img-2.6.28-11-generic nfsroot=192.168.0.2:/storage/nfsroot ip=dhcp rw
4. Redigere DHCP-tjenerinnstillinger. Endre IP-ranger og MAC-adresser til det som stemmer for deg.
# nano /etc/dhcpd.conf.
allow booting;
allow bootp;
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.100 192.168.0.120;
option broadcast-address 192.168.0.255;
option routers 192.168.0.1;
option domain-name-servers 208.67.222.222, 208.67.220.220;
filename "/pxelinux.0";
}
host pxe_client {
hardware ethernet 00:22:15:c8:59:03;
fixed-address 192.168.0.4;
}
5. Oppsett av server er ferdig! Start tjenestene:
# /etc/rc.d/dhcpd start (eventuelt) # /etc/rc.d/tftpd start
Diskløs klientoppsett
- Du må ha et nettverkskort som støtter å boote på nettverket (pxeboot). Nesten alle har støtte for dette, men det må muligens aktiveres i BIOS hvis det er på hovedkortet.
- Sett i BIOS at bootprioritet 1 er nettverksboot (pxeboot). :-)
- Boot maskinen, og se at den starter på nettverket!
Tips ved mange diskløse maskiner mot èn server
- Sjekk cron-jobbene. Litt kjipt hvis 25 maskiner kjører updatedb mot samme lagringsområde samtidig på natta.
- Husk at det kan bli tull med forskjellige skjermkortdrivere, etc.
- Ønsker du at alle maskinene skal ha samme logg-filer? Kanskje kjøre /var/log via NFS mot forskjellige kataloger?
