I det här kapitlet beskrivs de valfria funktioner som är tillgängliga för att skapa ytterligare JumpStart-installationsverktyg.
Instruktionerna i det här kapitlet gäller för antingen en SPARC-server eller en x86-server som används för att tillhandahålla anpassade JumpStart-filer, en så kallad profilserver. En profilserver kan lagra anpassade JumpStart-filer för olika plattformar. En SPARC-server kan exempelvis tillhandahålla anpassade JumpStart-filer både för SPARC- och x86-system.
Ett startskript är ett användardefinierat Bourne-skalskript som du anger i rules-filen. Ett startskript utför uppgifter innan Solaris installeras på ett system. Det går bara att använda startskript om du använder en anpassad JumpStart-funktion för att installera Solaris.
Startskript kan användas för att utföra följande uppgifter:
Skapa härledda profiler
Säkerhetskopiera filer före en uppgradering
Ange inget i skriptet som kan förhindra att filsystem monteras på /a under en standardinstallation eller uppgradering. Om programmet JumpStart inte kan montera filsystemen på /a inträffar ett fel och installationen misslyckas.
Under installationen placeras utdata från startskriptet i /tmp/begin.log. Efter att installationen är färdig omdirigeras loggfilen till /var/sadm/system/logs/begin.log.
Kontrollera att startskriptet ägs av root och att behörigheterna har värdet 644.
Startskripten får innehålla anpassade JumpStart-omgivningsvariabler. En lista över omgivningsvariabler finns i Miljövariabler för anpassad JumpStart.
Spara startskripten i katalogen JumpStart.
En härledd profil är en profil som skapas dynamiskt av ett startskript under en anpassad JumpStart-installation. Härledda profiler är nödvändiga om det inte går att se till att filen rules innehåller information som matchar specifika system mot en profil. Du kanske behöver använda härledda profiler för identiska systemmodeller med olika maskinvarukomponenter, till exempel system med olika bildskärmsminnen.
Så här anger du en regel att använda en härledd profil:
Ange ett likhetstecken (=) i stället för en profil i profilfältet.
Ange ett startskript i startfältet som skapar en härledd profil som är avhängigt systemet där du tänker installera Solaris.
Om ett system matchar en regel där profilfältet innehåller ett likamedtecken (=), så skapar startskriptet den härledda profilen som används för att installera Solaris på systemet.
Här nedan följer ett exempel på ett startskript som skapar samma härledda profil varje gång. Du kan skriva startskript för att skapa olika härledda profiler som beror på hur reglerna utvärderas.
#!/bin/sh echo "install_type initial_install" > ${SI_PROFILE} echo "system_type standalone" >> ${SI_PROFILE} echo "partitioning default" >> ${SI_PROFILE} echo "cluster SUNWCprog" >> ${SI_PROFILE} echo "package SUNWman delete" >> ${SI_PROFILE} echo "package SUNWolman delete" >> ${SI_PROFILE} echo "package SUNWxwman delete" >> ${SI_PROFILE} |
I exemplet måste startskriptet använda miljövariabeln SI_PROFILE för namnet på den härledda profilen, som anges till /tmp/install.input som standard.
Om ett start-skript används för att skapa en härledd profil kontrollerar du att skriptet inte innehåller några fel. Härledda profiler kontrolleras inte av check-skriptet, eftersom de inte skapas förrän startskriptet körs.
Ett slutskript är ett användardefinierat Bourne-skalskript som du anger i rules-filen. Slutskript utför uppgifter när Solaris har installerats på ett system men innan det startas om. Det går bara att använda slutskript om du använder en anpassad JumpStart-funktion för att installera Solaris.
Du kan bland annat utföra följande uppgifter med ett slutskript:
Lägga till filer
Lägga till individuella paket eller korrigeringsfiler förutom de som installeras i en viss programvarugrupp
Anpassa rotmiljön
Ställa in systemets rotlösenord
Installerar extra programvara
Solaris installationsprogram monterar systemets filsystem på /a. Filsystemen förblir monterade på /a tills systemet startas om. Du kan använda slutskriptet för att lägga till, ändra eller ta bort filer från den nyss installerade filsystemhierarkin genom att modifiera filsystemen för respektive /a.
Under installationen placeras utdata från slutskriptet i /tmp/finish.log. Efter att installationen är färdig omdirigeras loggfilen till /var/sadm/system/logs/finish.log.
Kontrollera att slutskriptet ägs av root och att behörigheterna har värdet 644.
Slutskripten får innehålla anpassade JumpStart-omgivningsvariabler. En lista över omgivningsvariabler finns i Miljövariabler för anpassad JumpStart.
Spara slutskripten i katalogen JumpStart.
Du kan lägga till filer från katalogen JumpStart till ett installerat system med hjälp av ett slutskript. Det är möjligt på grund av att katalogen JumpStart monteras i katalogen som anges i variabeln SI_CONFIG_DIR. Katalogens standardvärde är /tmp/install_config.
Du kan även ersätta filer genom att kopiera filer från katalogen JumpStart och skriva över de befintliga filerna i det installerade systemet.
Kopiera alla filer som du lägger till i det installerade systemet till katalogen JumpStart.
Infoga följande rad i slutskriptet för alla filer som du vill ska kopieras till den nyinstallerade filsystemhierarkin:
cp ${SI_CONFIG_DIR}/filnamn/a/sökväg |
Anta till exempel att du har ett speciellt program, site_prog, utvecklat för alla användare. Om du kopierar site_prog till katalogen JumpStart så kopieras site_prog till systemkatalogen /usr/bin med hjälp av följande rad i slutskriptet:
cp ${SI_CONFIG_DIR}/site_prog /a/usr/bin |
Du kan skriva ett slutskript som automatiskt lägger till paket eller korrigeringsfiler när Solaris har installerats på ett system. Installationen går snabbare om du lägger till paket i ett slutskript, och du ser dessutom till att platsens olika system är konsekvent utformade beträffande paket och korrigeringsfiler.
När du använder kommandona pkgadd(1M) eller patchadd(1M) i slutskript använder du alternativet -R för att ange /a som rotsökväg.
Exempel 7–3 visar ett exempel på ett slutskript som lägger till paket.
Exempel 7–4 visar ett exempel på ett slutskript som lägger till korrigeringsfiler.
#!/bin/sh BASE=/a MNT=/a/mnt ADMIN_FILE=/a/tmp/admin mkdir ${MNT} mount -f nfs sherlock:/export/package ${MNT} cat >${ADMIN_FILE} <<DONT_ASK mail=root instance=overwrite partial=nocheck runlevel=nocheck idepend=nocheck rdepend=nocheck space=ask setuid=nocheck conflict=nocheck action=nocheck basedir=default DONT_ASK /usr/sbin/pkgadd -a ${ADMIN_FILE} -d ${MNT} -R ${BASE} SUNWxyz umount ${MNT} rmdir ${MNT} |
Följande är beskrivningar av några kommandon för det här exemplet.
Följande kommando monterar en katalog på en server som innehåller paketet som ska installeras.
mount -f nfs sherlock:/export/package ${MNT} |
Följande kommando skapar en temporär administrationsfil, admin, som förhindrar att kommandot pkgadd(1M) utför kontroller eller ställer frågor när ett paket installeras. Använd den temporära paketadministrationsfilen om du vill lägga till paket automatiskt.
cat >${ADMIN_FILE} <<DONT_ASK |
Kommandot pkgadd (nedan) lägger till paketet genom att använda alternativet -a, som anger paketadministrationsfilen, samt alternativet -R, som anger rotsökvägen.
/usr/sbin/pkgadd -a ${ADMIN_FILE} -d ${MNT} -R ${BASE} SUNWxyz |
#!/bin/sh ######## # # USER-CONFIGURABLE OPTIONS # ######## # The location of the patches to add to the system after it's installed. # The OS rev (5.x) and the architecture (`mach`) will be added to the # root. For example, /foo on a 8 SPARC would turn into /foo/5.8/sparc LUPATCHHOST=ins3525-svr LUPATCHPATHROOT=/export/solaris/patchdb ######### # # NO USER-SERVICEABLE PARTS PAST THIS POINT # ######### BASEDIR=/a # Figure out the source and target OS versions echo Determining OS revisions... SRCREV=`uname -r` echo Source $SRCREV LUPATCHPATH=$LUPATCHPATHROOT/$SRCREV/`mach` # # Add the patches needed # echo Adding OS patches mount $LUPATCHHOST:$LUPATCHPATH /mnt >/dev/null 2>&1 if [ $? = 0 ] ; then for patch in `cat /mnt/*Recommended/patch_order` ; do (cd /mnt/*Recommended/$patch ; echo yes | patchadd -u -d -R $BASEDIR .) done cd /tmp umount /mnt else echo "No patches found" if |
Tidigare användes kommandot chroot(1M) tillsammans med kommandona pkgadd och patchadd i slutskriptsmiljön. I sällsynta fall går det inte att använda alternativet -R med vissa paket eller korrigeringsfiler. Du måste skapa slaskfilen /etc/mnttab i rotsökvägen /a innan du kör kommandot chroot.
Du skapar slaskfilen /etc/mnttab genom att lägga till följande rad i slutskriptet:
cp /etc/mnttab /a/etc/mnttab
Du kan även använda slutskript om du vill anpassa filer som redan är installerade på ett system. Slutskriptet i Exempel 7–5 anpassar rotomgivningen genom att lägga till information i .cshrc-filen i rotkatalogen (/).
#!/bin/sh # # Anpassa rotomgivningen # echo "***lägger till anpassningar i /.cshrc" test -f a/.cshrc || { cat >> a/.cshrc <<EOF set history=100 savehist=200 filec ignoreeof prompt="\$user@`uname -n`> " alias cp cp -i alias mv mv -i alias rm rm -i alias ls ls -FC alias h history alias c clear unset autologout EOF } |
När Solaris-programvaran har installerats på ett system så startas systemet om. Innan startprocessen har körts färdigt uppmanas användaren att ange rotlösenordet. Systemet kan inte avsluta startprocessen förrän någon anger ett lösenord.
Ett slutskript med namnet set_root_pw ligger i katalogen auto_install_sample. Slutskriptet visar hur du ställer in rotlösenordet automatiskt. set_root_pw visas i Exempel 7–6.
Om du ställer in systemets rotlösenord med ett slutskript kan användare försöka ta reda på rotlösenordet via det krypterade lösenordet i ditt slutskript. Se till att du är skyddad mot användare som kan tänkas försöka ta reda på rotlösenordet.
#!/bin/sh # # @(#)set_root_pw 1.4 93/12/23 SMI # # This is an example Bourne shell script to be run after installation. # It sets the system's root password to the entry defined in PASSWD. # The encrypted password is obtained from an existing root password entry # in /etc/shadow from an installed machine. echo "setting password for root" # set the root password PASSWD=dKO5IBkSF42lw #create a temporary input file cp /a/etc/shadow /a/etc/shadow.orig mv /a/etc/shadow /a/etc/shadow.orig nawk -F: '{ if ( $1 == "root" ) printf"%s:%s:%s:%s:%s:%s:%s:%s:%s\n",$1,passwd,$3,$4,$5,$6,$7,$8,$9 else printf"%s:%s:%s:%s:%s:%s:%s:%s:%s\n",$1,$2,$3,$4,$5,$6,$7,$8,$9 }' passwd="$PASSWD" /a/etc/shadow.orig > /a/etc/shadow #remove the temporary file rm -f /a/etc/shadow.orig # set the flag so sysidroot won't prompt for the root password sed -e 's/0 # root/1 # root/' ${SI_SYS_STATE} > /tmp/state.$$ mv /tmp/state.$$ ${SI_SYS_STATE} |
Följande är beskrivningar av några kommandon för det här exemplet.
Följande kommando ställer in variabeln PASSWD till ett krypterat rotlösenord, som hämtas från en befintlig post i ett systems /etc/shadow-fil.
#skapa en temporär indatafil |
Följande kommando skapar en temporär indatafil av /a/etc/shadow.
cp /a/etc/shadow /a/etc/shadow.orig |
Följande kommando ändrar rotposten i filen /etc/shadow för det nyinstallerade systemet med $PASSWD som lösenordsfält.
if ( $1 == "root" ) |
Följande kommando tar bort den temporära /a/etc/shadow-filen.
rm -f /a/etc/shadow.orig |
Följande kommando ändrar posten från 0 till 1 så att användaren inte behöver ange rotlösenordet. Statusfilen går att komma åt via variabeln SI_SYS_STATE, som för närvarande har värdet /a/etc/.sysIDtool.state. Hänvisa alltid till den här filen med hjälp av $SI_SYS_STATE, om du vill undvika problem med dina skript om värdet skulle råka ändras. Kommandot sed som visas här innehåller ett tabbtecken efter 0 och efter 1.
sed -e 's/0 # root/1 # root/' ${SI_SYS_STATE} > /tmp/state.$$ |
Du kan använda slutskript för att installera ytterligare programvara när Solaris har installerats. Solaris installationsprogram uppmanar dig att ange information under installationen. Om du vill att installationen ska skötas automatiskt kan du köra Solaris installationsprogram med något av alternativen -nodisplay eller -noconsole.
Tabell 7–1 Solaris-installationsalternativ
Alternativ |
Beskrivning |
---|---|
-nodisplay |
Kör installationsprogrammet utan grafiskt gränssnitt. Använder produktens normala installationsinställningar, såvida installationen inte har ändrats med alternativet -locales. |
-noconsole |
Kör installationen utan att visa ett interaktivt systemfönster. Det är användbart i UNIX-skript i par med alternativet -nodisplay. |
Mer information finns i direkthjälpen (man page) till installer(1M).
I stället för att använda kommandot add_install_client för att ange var de anpassade JumpStart-konfigurationsfilerna ligger, kan du ange var filerna ligger när systemet startas. Du kan emellertid bara ange namnet på en fil. Därför måste du komprimera alla anpassade JumpStart-konfigurationsfiler i en fil.
För SPARC-baserade system anger du platsen för filen i kommandot boot
För x86-baserade system:
Från och med Solaris 10 1/06 anger du platsen för filerna genom att redigera GRUB-posten på GRUB-menyn
För Solaris 10 3/05 anger du platsen för filen med kommandot boot
Konfigurationsfilen kan komprimeras i något av följande format:
tar
Komprimerad tar
zip
bzip tar
Flytta till katalogen JumpStart på profilservern.
# cd sökväg_till_jumpstartkat |
Komprimera de anpassade JumpStart-konfigurationsfilerna till en fil med ett komprimeringsverktyg.
Den komprimerade konfigurationsfilen får inte innehålla relativa sökvägar. De anpassade JumpStart-konfigurationsfilerna måste ligga i samma katalog som den komprimerade filen.
Den komprimerade konfigurationsfilen måste innehålla följande filer:
Profil
rules
rules.ok
Du kan även låta filen sysidcfg ingå i den komprimerade konfigurationsfilen.
Spara den komprimerade konfigurationsfilen på en NFS-server, en HTTP-server eller ett lokalt skivminne.
Exemplet här nedan visar hur man använder kommandot tar för att skapa den komprimerade konfigurationsfilen config.tar. De anpassade JumpStart-konfigurationsfilerna ligger i katalogen /jumpstart.
# cd /jumpstart # tar -cvf config.tar * a profile 1K a rules 1K a rules.ok 1K a sysidcfg 1K |
I det här avsnittet beskrivs hur du skapar konfigurationsfiler för enskilda skivminnen och flera skivminnen. Skivminneskonfigurationsfiler gör det möjligt att använda pfinstall(1M) från ett enskilt system för att testa profiler med avseende på olika skivminneskonfigurationer.
Leta rätt på ett SPARC-baserat system med ett skivminne som du vill testa.
Bli superanvändare eller anta en motsvarande roll.
Roller innehåller behörigheter och priviligierade kommandon. Mer information om roller finns i Configuring RBAC (Task Map) i System Administration Guide: Security Services.
Skapa en enskild skivminneskonfigurationsfil genom att omdirigera utdata för kommandot prtvtoc(1M) till en fil.
# prtvtoc /dev/rdsk/enhetsnamn >skivminneskonfigurationsfil |
Enhetsnamnet på systemets skivminne. enhetsnamn måste ha formatet cwtxdys2 eller cxdys2.
Namnet på skivminneskonfigurationsfilen.
Fundera över huruvida du testar installationen av Solaris på flera skivminnen.
Avbryt om svaret är nej. Då är du klar.
Om svaret är ja måste du sammanlänka konfigurationsfilerna för de enskilda skivminnena och spara resultatet i en ny fil.
# cat skivminnesfil1 skivminnes2 >flera_skivminneskonfigurationer |
Den nya filen är konfigurationsfilen för skivminnena, som i följande exempel:
# cat 104_disk2 104_disk3 104_disk5 >multi_disk_test |
Undersök huruvida målnumren i skivminnesenhetsnamnen är unika i konfigurationsfilen som du skapade för skivminnena i föregående steg.
Avbryt om svaret är ja. Då är du klar.
Om svaret är nej öppnar du filen i en texteditor och ser till att målnumren i skivminnenas enhetsnamn är unika.
Anta att enhetsnamnen för olika skivminnen innehåller samma målnummer, t0, som i exemplet här nedan:
* /dev/rdsk/c0t0d0s2 partition map ... * /dev/rdsk/c0t0d0s2 partition map |
Ändra då det andra målnumret till t2, på det här viset:
* /dev/rdsk/c0t0d0s2 partition map ... * /dev/rdsk/c0t2d0s2 partition map |
Följande exempel visar hur du skapar konfigurationsfilen 104_test för ett 104 MB stort skivminne på ett SPARC-baserat system.
Styr om utmatningen från kommandot prtvtoc till konfigurationsfilen 104_test för ett skivminne:
# prtvtoc /dev/rdsk/c0t3d0s2 >104_test |
Innehållet i filen 104_test ser ut ungefär så här:
* /dev/rdsk/c0t3d0s2 partition map * * Dimensions: * 512 bytes/sector * 72 sectors/track * 14 tracks/cylinder * 1008 sectors/cylinder * 2038 cylinders* 2036 accessible cylinders * Flags: * 1: unmountable * 10: read-only * * First Sector Last * Partition Tag Flags Sector Count Sector Mount Directory 1 2 00 0 164304 164303 / 2 5 00 0 2052288 2052287 3 0 00 164304 823536 987839 /disk2/b298 5 0 00 987840 614880 1602719 /install/298/sparc/work 7 0 00 1602720 449568 2052287 /space |
Du har nu skapat skivminneskonfigurationsfiler för ett SPARC-system. Testa en profil innehåller information om hur du använder skivminneskonfigurationsfiler för att testa profiler.
Leta rätt på ett x86-baserat system som innehåller ett skivminne som du testar.
Bli superanvändare eller anta en motsvarande roll.
Roller innehåller behörigheter och priviligierade kommandon. Mer information om roller finns i Configuring RBAC (Task Map) i System Administration Guide: Security Services.
Skapa en del av skivminneskonfigurationsfilen genom att spara utdata för kommandot fdisk(1M) i en fil.
# fdisk -R -W skivminneskonfigurationsfil -h /dev/rdsk/enhetsnamn |
Namnet på en skivminneskonfigurationsfil.
Enhetsnamnet på kommandot fdisk:s representation av hela skivminnet. enhetsnamn måste ha formatet cwtxdys0 eller cxdys0.
Spara utdata för kommandot prtvtoc(1M) i skivminneskonfigurationsfilen:
# prtvtoc /dev/rdsk/enhetsnamn >skivminneskonfiguration |
Enhetsnamnet på systemets skivminne. enhetsnamn måste ha formatet cwtxdys2 eller cxdys2.
Namnet på skivminneskonfigurationsfilen.
Fundera över huruvida du testar installationen av Solaris på flera skivminnen.
Avbryt om svaret är nej. Då är du klar.
Om svaret är ja måste du sammanlänka konfigurationsfilerna för de enskilda skivminnena och spara resultatet i en ny fil.
# cat skivminnesfil1 skivminnes2 >flera_skivminneskonfigurationer |
Den nya filen är konfigurationsfilen för skivminnena, som i följande exempel:
# cat 104_disk2 104_disk3 104_disk5 >multi_disk_test |
Undersök huruvida målnumren i skivminnesenhetsnamnen är unika i konfigurationsfilen som du skapade för skivminnena i föregående steg.
Avbryt om svaret är ja. Då är du klar.
Om svaret är nej öppnar du filen i en texteditor och ser till att målnumren är unika.
Enhetsnamnen för olika skivminnen kan exempelvis innehålla samma målnummer, t0, enligt exemplet här nedan:
* /dev/rdsk/c0t0d0s2 partition map ... * /dev/rdsk/c0t0d0s2 partition map |
Ändra då det andra målnumret till t2, på det här viset:
* /dev/rdsk/c0t0d0s2 partition map ... * /dev/rdsk/c0t2d0s2 partition map |
I följande exempel visas hur du skapar konfigurationsfilen 500_test för ett 500 MB stort skivminne på ett x86-system.
Först sparar du utdata från kommandot fdisk i en fil med namnet 500_test:
# fdisk -R -W 500_test -h /dev/rdsk/c0t0d0p0 |
Filen 500_test ser ut så här:
* /dev/rdsk/c0t0d0p0 default fdisk table * Dimensions: * 512 bytes/sector * 94 sectors/track * 15 tracks/cylinder * 1455 cylinders * * HBA Dimensions: * 512 bytes/sector * 94 sectors/track * 15 tracks/cylinder * 1455 cylinders * * systid: * 1: DOSOS12 * 2: PCIXOS * 4: DOSOS16 * 5: EXTDOS * 6: DOSBIG * 86: DOSDATA * 98: OTHEROS * 99: UNIXOS * 130: SUNIXOS * * Id Act Bhead Bsect Bcyl Ehead Esect Ecyl Rsect Numsect 130 128 44 3 0 46 30 1001 1410 2050140 |
Därefter sparar du utdata för kommandot prtvtoc i filen 500_test:
# prtvtoc /dev/rdsk/c0t0d0s2 >>500_test |
Filen 500_test är nu en komplett skivminneskonfigurationsfil:
* /dev/rdsk/c0t0d0p0 default fdisk table * Dimensions: * 512 bytes/sector * 94 sectors/track * 15 tracks/cylinder * 1455 cylinders * * HBA Dimensions: * 512 bytes/sector * 94 sectors/track * 15 tracks/cylinder * 1455 cylinders * * systid: * 1: DOSOS12 * 2: PCIXOS * 4: DOSOS16 * 5: EXTDOS * 6: DOSBIG * 86: DOSDATA * 98: OTHEROS * 99: UNIXOS * 130: SUNIXOS * * Id Act Bhead Bsect Bcyl Ehead Esec Ecyl Rsect Numsect 130 128 44 3 0 46 30 1001 1410 2050140 * /dev/rdsk/c0t0d0s2 partition map * * Dimensions: * 512 bytes/sector * 94 sectors/track * 15 tracks/cylinder * 1110 sectors/cylinder * 1454 cylinders * 1452 accessible cylinders * * Flags: * 1: unmountable * 10: read-only * First Sector Last * Partition Tag Flags Sector Count Sector Mount Directory 2 5 01 1410 2045910 2047319 7 6 00 4230 2043090 2047319 /space 8 1 01 0 1410 1409 9 9 01 1410 2820 422987 |
Du har nu skapat skivminneskonfigurationsfiler för ett x86-system. Testa en profil innehåller information om hur du använder skivminneskonfigurationsfiler för att testa profiler.
Du kan även använda start- och slutskript för att skapa ett eget program för att installera Solaris.
När du anger ett minustecken (-) i profilfältet så kontrollerar start- och slutskripten hur Solaris-programvaran installeras på ett system, i stället för profilen och Solaris installationsprogram.
Om den följande regeln matchar ett system så installerar startskriptet x_install.beg och slutskriptet x_install.fin Solaris på systemet klaver:
hostname klaver x_install.beg - x_install.fin |