Diskless Ubuntu klient fra Arch server

Fra Diskusjon.no WIKI

Gå til: navigasjon, søk

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?

Kilder

Personlige verktøy