Se også Solaris/installasjon/filer

Automatisert installasjon av Solaris10

Før installasjon, sørg for å ha siste versjon av Solaris-10 DVD, det kommer nye utgaver med noen måneders mellomrom. Har man siste utgave trenger man ikke installere så mange patcher og det kan være ny funksjonalitet. Per jul-2006 er utgave 06/06 (juni-2006) som brukes. Dette er første utgaven med støtte for zfs.

En automatisk installasjon har følgende faser:

  1. Nettbooter Solaris10.
  2. Filen rules.ok sjekkes. Dersom maskinen mather en linje der får den info om a) en fil med partisjonstabell og info om pakker/cluster som skal instlleres, b) navn på et start-script og c) navn på et finish script.
  3. start-scriptet kjøres.
  4. Partisjonering, newfs, installasjon av pakker m.m.
  5. finish-scriptet kjøres. Det er vanlig at det sørger for at en postinstall-script blir kjørt ved første reboot for å gjøre det som ikke kan gjøres før maskinen booter normalt fra disk.
  6. postinstall-script kjøres ved første reboot (og i noen tilfeller også ved 2. reboot). En konfigfil sjekkes for å se om postinstall skal kjøres på denne maskinen. Kaller diverse andre script som gjør alt som skal gjøres etter grunninstallasjon. Kan eventuelt også sjekke hvilken maskin det kjøres på og konfigurere avhengig av hvilken kataegori maskin det er. Målet er minst mulig manuelt etterarbeid. Men spesielle ting som gjelder kun på en eller noen få servere som det er mye jobb å automatisere er det liten vits å automatisere (men det bør da dokumenteres hva som må gjøres manuelt).

Sette opp nettboot

I første fase brukes rarp for å få IP-adresse og deretter brukes tftp mot samme server som kjører rarpd for å hente en bootfil. Denne starter andre fase av nettboot og bruker dhcp for å få en del parametere som trengs for boot og eventuelt (auto)installasjon.

rarp og tftp

Vi bruker ask (FreeBSD-server) som rarp - og tftp-server. For at rarp skal fungere må vi legge inn ethernetadressen til alle Solaris-maskiner som skal nettbootes i /etc/ethers (distribueres via cfengine, se i toppen av filen hvor source ligger).

Klienten vil bruke samme server som tftpserver (det er jo den eneste serveren den vet om) og laste ned bootfilen /srv/tftpboot/<hexip>. HexIP er en symlink til inetboot.SUN4U.,Solaris10 eller inetboot.SUN4US.Solaris10 avhengig av platform. Vi oppretter den f.eks slik:

cd /srv/tftpboot
ln -s inetboot.SUN4U.Solaris10 `hexip barlind`

Dersom flere servere er rarp - og tftp-servere, så sørg for at "/tfptboot" er lik på alle. Anbefaler å ikke bruke flere (om gangen), det er enklere å feilsøke da dersom noe ikke virker.

(!) Siden tftpd-prosessen vil kjøre som nobody må du enten sette nobody som eier av bootfilen eller den må være lesbar for alle. Får du TFTP: access denied e.l er det trolig dette som er feilen.

Oppsett av dhcp for Solaris nettboot

Vi må angi ved boot at vi skal bruke dhcp, hvis ikke vil bootparams bli brukt:

Før ble bootparams brukt for å hente parametere som trenges ved nettboot. Vi må nå legge inn denne informasjonen i ask:/srv/dhcpd/etc/conf/dhcpd.head. Her er det som er lagt inn der som har med Solaris å gjøre:

option space SUNW;
option SUNW.SrootOpt code 1 = text;
option SUNW.SrootIP4 code 2 = ip-address;
option SUNW.SrootNM code 3 = text;
option SUNW.SrootPTH code 4 = text;
option SUNW.SswapIP4 code 5 = ip-address;
option SUNW.SswapPTH code 6 = text;
option SUNW.SbootFIL code 7 = text;
option SUNW.Stz code 8 = text;
option SUNW.SbootRS code 9 = unsigned integer 16;
option SUNW.SinstIP4 code 10 = ip-address;
option SUNW.SinstNM code 11 = text;
option SUNW.SinstPTH code 12 = text;
option SUNW.SsysidCF code 13 = text;
option SUNW.SjumpsCF code 14 = text;
option SUNW.Sterm code 15 = text;

class "Solaris" {
        match if ( substring (option vendor-class-identifier,0,6) = "SUNW.U" )
              or ( substring (option vendor-class-identifier,0,6) = "SUNW.S" );
        vendor-option-space SUNW;
        option SUNW.SinstNM "furu.idi.ntnu.no";
        option SUNW.SinstIP4 129.241.107.64;
        option SUNW.SinstPTH "/export/san/28/solaris";
        option SUNW.SrootNM "furu.idi.ntnu.no";
        option SUNW.SrootIP4 129.241.107.64;
        option SUNW.SrootPTH "/export/san/28/solaris/Solaris_10/Tools/Boot";
        option SUNW.SsysidCF "furu.idi.ntnu.no:/export/san/28/solaris/sysidcfg-dir";
        option SUNW.SjumpsCF "furu.idi.ntnu.no:/export/san/28/solaris/jumpstart";
        filename="inetboot.SUN4U.Solaris10";
        server-name "129.241.107.64";
        next-server furu.idi.ntnu.no;
}

Vi trenger bare å endre dette dersom vi skal boot fra en annen server. Når dette skrives brukes furu, men dersom furu skal nettbootes må naturligvis en annen server brukes.

Oppsett av boot-katalog

Som nevnt er furu boot-server og alt som har med nettboot og (auto)instalasjon ligger under /srv/sun/solaris ( samme som furu:/export/san/28/solaris).

Solaris10 kommer normalt på en DVD, men vi fikk det som en iso-image fil som ligger under /srv/sun/solaris/images/. Scriptet /etc/init.d/mount_solaris10_DVD kjøres ved boot og ser slik ut:

#!/bin/sh
dvdimage=/src/sun/solaris/DVD/images/sol-10-GA-sparc-dvd-iso.iso
mount -F hsfs -r `lofiadm -a $dvdimage` /export/san/28/solaris/DVD/Solaris10
share -F nfs ro=.idi.ntnu.no,nfs -d "Solaris DVD" /export/san/28/solaris/DVD/Solaris10

Solaris-DVD blir dermed tilgjengelig under /src/sun/solaris/DVD/Solaris10. For å sette opp install-katalog for første gang skal man kjøre dette fra Solaris10 DVD:

Filsystemene må eksporteres ( /etc/dfs/dfstab, siset linjen kan egentlig fjernes):

share -F nfs -o rw=nfs -d "src" /export/san/28/src
share -F nfs -o ro=nfs,anon=0 -d "solaris" /export/san/28/solaris
share -F nfs -o ro=nfs,anon=0 -d "Solaris10 DVD" /export/san/28/solaris/DVD/Solaris10

Uten anon=0 vil nettboot henge. Vi eksporerer read-only til maskin i nettgruppen nfs. Skal du sette opp en ny server, så pass på å legge inn den i denne nettgruppen.

Når dette er satt opp skal du kunne nettboote en server med: ’’’boot net:dhcp’’’ Dersom det henger er den vanligste årsaken at man har glemt anon=0 i dfstab. Nettbooting av Solaris tar lang tid, så om det tar noen minutter så er det helt normalt.

sysidcfg

Plassering: /src/sun/solaris/10/jumpstart/sysidcfg .

Denne filen inneholder diverse informasjon Solaris trenger ved boot/installasjon som den ikke kan finne automatisk. Mangler denne filen må man taste inn informasjonen ved hver nettboot. Katalogen hvor denne filen ligger er lagt inn i opsjonen SUNW.SsysidCF i dhcpd.head (se over). Filen kopieres til /etc/sysidcfg (symlink til tmp-katalog) av scriptet /sbin/install-setup. Filen vi bruker ser slik ut (kryptert passord fjernet her):

timezone=MET
timeserver=ntp.idi.ntnu.no
terminal=xterms
name_service=DNS
        {domain_name=idi.ntnu.no
        name_server=129.241.107.25,129.241.42.25
        search=idi.ntnu.no,itea.ntnu.no,stud.ntnu.no,ntnu.no}
root_password=********
system_locale=C
network_interface=primary {dhcp protocol_ipv6=no}
security_policy=none

For mer info, se http://docsun.cites.uiuc.edu/sun_docs/C/solaris_9/SUNWaman/hman4/sysidcfg.4.html eller man sysidcfg.

Merk at selv om sysidcfg er lagt inn vil man likevel få et spørsmål om dato er riktig m.m. Bruk ESC-2 3 ganger for de 3 spørsmålene du får siden default-svar stort sett er riktig. Det er like greit at det ikke starter med en gang, da får man litt tid til å tenke seg om før man starter.

Oppsett for automatisk installasjon

Når vi vet at vanlig nettboot fungerer kan vi sette opp det som skal til for å kjøre en automatisk installasjon eller jumpstart som Sun kaller det.

rules.ok

Plassering: /src/sun/solaris/10/jumpstart/rules.ok

Det kan legges inn ulike kriterier for å matche kategorier av maskiner eller enkeltmaskiner (maskinvareplattform, min diskstørrelse osv). Vi har så få servere at vi bruker en linje per maskinnavn. I linjen for hvert maskinnavn står det navnet på et start-script, en class-fil og en finish-fil.

NB! Rediger filen rules og kjøre ./check. Det sjekkes den og class-fileren den referer til og dersom alt er ok opprettes rules.ok.

Start-script

Plassering: /src/sun/solaris/10/jumpstart/scripts/start .

Kjøres like før selve installasjon starter. Ble før brukt til å ta vare på filer som skulle overleven en eventuell reinstallasjon. Men på servere installerer vi aldri over filsystemer med den gamle Solaris-versjoner, vi installerer på en annen disk eller vi bruker Liveupgrade. Men scriptet kan brukes ved feilsøking ved å legge inn /bin/sh slik at man kan kjøre script manuelt og sjekke hva som kan være feil. Du vil ikke se noen ledetekst (”prompt”), så husk å fjerne /bin//sh etterpå siden det ellers vi se ut som om det henger.

Class-filer

Eksempel: /src/sun/solaris/10/jumpstart/classes/standard_server

Angir type installasjon (upgrade eller full installasjon), partisjonstabell og hvilken samling av pakker (cluster) som skal installeres.

Partisjoner

I class-filen standard_server brukes denne partisjoneringen:

filesys         rootdisk.s0     8192  /
filesys         rootdisk.s1     4096    swap
filesys         rootdisk.s3     2048    /var/tmp
filesys         rootdisk.s4     4096    /BE2
filesys         rootdisk.s5       20    /mirror_db
filesys         rootdisk.s6     free    /export

Denne er satt opp slik at det skal kunne brukes på 36GB disker som er de minste diskene som kan brukes som systemdisker nå. Nyere servere har gjerne 2 x70GB disker (speil) som systemdisk.

På grunn av Liveupgrade kan vi ikke ha for mange partisjoner (/,/var, /var/tmp, /usr, /opt osv) siden vi må ha dobbelt opp av partisjoner som brukes ved en oppgradering. Derfor har vi /usr, /var og /opt på root-filsystemet. Ved en Livupgrade kopieres alt på / til /BE2 (monteres som noe annet) og så kjøres en upgrade på dette (i praksis litt mer komplisert enn som så, men det er prinsippet). Vi har /var/tmp som eget filsystem fordi brukerne kan skrive til det og dermed også fylle det helt opp (utilsikta eller for å sabotere). Partisjonen (det heter vel egentlig slice i Solaris) brukes for metadata ved speiling. Selv om vi ikke skal ha speiling til med en gang er det greit å sette av plass for det (krever neppe mer enn 1MB, men vi setter av 20MB til det). Vi har satt av 4GB for swap. På de største serverne med 16GB RAM er dette for lite og vi bruker gjerne en annen class-fil for disse (når dette skrives er det vel bare selje som har 16GB RAM). Det som blir til overs brukes til /export. På export legger store og local og eventuelt /opt (loopback-montert).

Pakker, cluster og metacluster

En Solarisinstrallasjon består av et sett av pakker. Et cluster er en samling pakker som naturlig hører sammen, for eksempel alt som har med en tjeneste å gjøre (sendmail, apache m.m). Et metacluster er en samling av cluster og eventuelt enkeltpakker. I en classfil angir vi gjerne først et metacluster og deretter de cluster eg enkeltpakker vi ikke ønsker fra dette metaclusteret. Det kan f.eks være definert slik i en classfil:

cluster SUNWCXall
cluster SUNWCnet        delete
cluster SUNWCpcmc       delete
cluster SUNWCthai       delete
cluster SUNWC4u1        delete
cluster SUNWCssh        delete
cluster SUNWCsndm       delete
cluster SUNWapchr       delete
cluster SUNWCapache     delete

Her er SUNWCXall et metacluster. Dette inneholder alt, inkludert en del tredjeparts programvare som f.eks Apache, perl m.m. SUNWCall inneholder kun alle Solarispakker, ikke pakker for tredjeparts-programvare. Det finnes også metacluster for arbeidstasjoner m.m.

For en full oversikt over alle pakker, cluster og metacluster se: /src/sun/solaris/DVD/Solaris10/Solaris_10/Product/.clustertoc på furu.

Finish-script

Plassering: /src/sun/solaris/10/jumpstart/scripts/finish

Kjøres like etter installasjon. Vi bruker dette i hovedsak for å forberede kjøring av et postinstall-script , /etc/rc3.d/S99postinstall, som vi setter opp til å kjøre ved første boot etter installasjon. S99postinstall monterer jumpstart til /mnt og starter /mnt/postinstall.sh. Vi velger å gjøre mest mulig av det som skal gjøres etter installasjon i postinstall-scriptet slik at dette og script det kalles kan lages uavhengig av om de brukes i forbindelse med en solaris-installasjon. Det blir også enklere å dele opp i uavhengige script da. Vi kunne kanskje ha klart oss med en reboot i noen tilfeller ved å legge mer direkte i finish scriptet, men det spiller liten rolle når alt skjer automatisk. Det kan også tenkes at det skal settes opp spesielle maskiner og da ønsker vi gjerne å ha en ren Solaris-installasjon og gjøre resten manuelt.

Merk at første gang Solaris10 booter etter installasjon vil den stå lenge med:

'’Loading smf(5) service descriptions: nn/112’’

Dette er normal vil bare skje ved første gangs boot når det er veldig mye å sette opp. Til gjengjeld booter den veldig raskt senere når denne jobben er gjort.

Postinstall

Ved først gangs boot etter grunninstallasjon kjøres /etc/rc3.d/S99postinstall. Dette scriptet kaller i sin tur andre script. Men de må kjøres i riktig rekkefølge siden noen script forutsetter at en del ting allerede er på plass. Etter at S99postinstall er kjørt, rebootes maskinen. Dersom speiling brukes må S99postinstall kjøres også ved 2. reboot, men det vet da det er kjøres for 2. gang. Det siste som gjøres er at S99postinstall renames til not.S99postinstall slik at det ikke kjøres ved neste reboot.

Hvordan nettboote og sette i gang installasjon

Du kan logge inn via LOM eller rocketport (for tiden på scylla). Brukes LOM logg inn på gran og kjør telnet <servernavn>-lom. Ta kontakt med dersom du ikke vet brukernavn/passord der. Ikke alle servere støtter LOM (via ethernet) og du må da logge inn på scylla og kjøre console servernavn (forutsatt at kabler er koplet riktig).

Når du har ok promten skriver du: boot net:dhcp - install

Det er normalt at det går tregt, er det flere interface starter den gjerne på det siste og går nedover inntil den finner noen som er aktiv.

Vanlige problemer ved nettboot

Solaris/installasjon (last edited 2006-07-26 08:05:57 by JanGronsberg)