Se også Solaris/installasjon/filer
Contents
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:
- Nettbooter Solaris10.
- 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.
- start-scriptet kjøres.
- Partisjonering, newfs, installasjon av pakker m.m.
- 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.
- 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:
boot net:dhcp - install
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
- Får ikke ip-adresse. Årsak ingen server kjører rarpd på subnettet eller ethernet-adressen for klienten mangler i /etc/ethers. Som nevnt brukes rarpd i første fasen selv om dhcp brukes i neste fase. Sjekk /etc/ethers på ask. Når maskinen booter vil du se ethernet-adressen der.
- Klarer ikke laste bootfil. Sjekk at tftpd finnes i inetd.conf og er lagt inn riktig. Husk at tftpd vil kjøre som nobody så nobody eller "other" må ha tilgang (bruk chmod 444).
- Stopper og sier "cannot open install". Du har skrevet "net boot:dhcp install" istedenfor "net boot:dhcp - install"
- Henger ved nettboot. Har glemt å ekspotere anon=0 på installserver på filsystemer som klienten skal montere.
- Starter manuell installasjon. Maskinen er ikke lagt inn i rules filen og/eller du har ikke kjørt ./check etterpå (./check validerer at det er ok og oppdaterer rules.ok).
- Installasjon starter først når du har tastet inn en masse opplysinger. Årsaken er da at sysid.cfg mangler eller har en syntaksfeil. Du får normalt bare spørsmål om tid (fikk ikke fjernet dette spørsmålet, vet ikke helt hvorfor) som du bruker defaultsvar på.
- Problemer med partisjoner (slice). Det kan være at disken er for liten i forhold til summen størrelsen av partisjoner. Det kan oppstå problemer (ikke sikker på for Solaris10) dersom slice 2, altså den for hele disken, ikke er satt opp på forhånd. Så på en helt blank disk kan det være nødvendig med format så "part" og "label" før den brukes som systemdisk.