Installationsguide för Solaris 9 9/04

Kapitel 27 Använda valfria anpassade JumpStart-funktioner (Steg-för-steg-anvisningar)

I det här kapitlet beskrivs de valfria funktioner som är tillgängliga för att skapa ytterligare JumpStart-installationsverktyg.


Obs!  

Instruktionerna i det här kapitlet gäller både SPARC- och x86-servrar, som används för att tillhandahålla anpassade JumpStart-filer, så kallade profilservrar. 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.


Skapa startskript

Ett startskript är ett användardefinierat skript i skalet Bourne som anges i filen rules. 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:

Viktig information om startskript

Skapa härledda profiler med ett startskript

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:

Om ett system motsvarar en regel där profilfältet innehåller lika med (=), 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.


Exempel 27–1 Ett startskript som skapar en härledd profil

#!/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.



Obs!  

Om ett startskript används för att skapa en härledd profil måste du se till 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.


Skapa slutskript

Ett slutskript är ett användardefinierat skript i skalet Bourne som anges i filen rules. 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:

Viktig information om slutskript

Så här lägger du till filer i ett slutskript

Med ett slutskript kan du lägga till filer från katalogen JumpStart på ett installerat system. 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.


Obs!  

Du kan även ersätta filer genom att kopiera filer från katalogen JumpStart och skriva över de befintliga filerna i det installerade systemet.


  1. Kopiera alla filer som du lägger till i det installerade systemet till JumpStart-katalogen.

  2. 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 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

Lägga till paket eller korrigeringsfiler med ett slutskript

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.

Om du använder kommandona pkgadd(1M) eller patchadd(1M) i slutskript ska du ange /a som rotsökväg i alternativet -R.


Exempel 27–2 Lägga till paket med ett slutskript

  #!/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.



Exempel 27–3 Lägga till korrigeringsfiler med ett slutskript

 #!/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


Obs!  

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.

Lägg till följande rad i slutskriptet för att skapa slaskfilen /etc/mnttab:

cp /etc/mnttab /a/etc/mnttab

Anpassa rotomgivningen med ett slutskript

Du kan även anpassa filer som redan har installerats på ett system med slutskript. Slutskriptet i Exempel 27–4, till exempel, anpassar rotomgivningen genom att lägga till information i filen .cshrc i rotkatalogen (/).


Exempel 27–4 Anpassa rotomgivningen med ett slutskript

#!/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
}

Ställa in systemets rotlösenord med ett slutskript

När Solaris har installerats på ett system startas det 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 27–5.


Obs!  

Om du anger systemets rotlösenord med ett slutskript kan användarna försöka ta reda på det med hjälp av det krypterade lösenordet i slutskriptet. Se till att du är skyddad mot användare som kan tänkas försöka ta reda på rotlösenordet.



Exempel 27–5 Så här ställer du in systemets rotlösenord med ett slutskript

	 #!/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.


Installera programvara som har Web Start-installationsprogram med slutskript

Du kan använda slutskript för att installera ytterligare programvara när Solaris har installerats. Vissa program installeras av Solaris Web Start, som ber dig mata in information under installationen. Om du vill att installationen ska skötas automatiskt kan du köra Solaris Web Start med alternativen -nodisplay eller -noconsole.

Tabell 27–1 Alternativ för Solaris Web Start

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).

Så här skapar du en komprimerad konfigurationsfil

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 när du utfärdar kommandot boot. Därför måste du komprimera alla anpassade JumpStart-konfigurationsfiler i en fil. Konfigurationsfilen kan komprimeras i något av följande format:

Så här skapar du en komprimerad konfigurationsfil

  1. Flytta till katalogen JumpStart på profilservern.


    # cd sökväg_till_jumpstartkat
    
  2. Komprimera de anpassade JumpStart-konfigurationsfilerna till en fil med ett komprimeringsverktyg.


    Obs!  

    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.

  3. Spara den komprimerade konfigurationsfilen på en NFS-server, en HTTP-server eller ett lokalt skivminne.

Exempel på en komprimerad konfigurationsfil

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.


Exempel 27–6 Så här skapar du en komprimerad konfigurationsfil


# cd /jumpstart
# tar -cvf config.tar *
a profile 1K
a rules 1K
a rules.ok 1K
a sysidcfg 1K

Skapa skivminneskonfigurationsfiler

Det här avsnittet beskriver hur det går till att skapa konfigurationsfiler för enstaka eller flera skivminnen. Skivminneskonfigurationsfiler gör det möjligt att använda pfinstall(1M) från ett enskilt system för att prova profiler med avseende på olika diskkonfigurationer.

SPARC: Så här skapar du en skivminneskonfigurationsfil

  1. Leta reda på ett SPARC system med ett skivminne som du vill testa.

  2. Logga in som superanvändare.

  3. Skapa en konfigurationsfil för ett skivminne genom att styra om utdata från kommandot prtvtoc(1M) till en fil.


    # prtvtoc /dev/rdsk/enhetsnamn >skivminneskonfigurationsfil
    
    /dev/rdsk/enhetsnamn

    Enhetsnamnet på systemets skivminne. enhetsnamn måste vara på formen cwtxdys2 eller cxdys2.

    skivminneskonfigurationsfil

    Namnet på skivminneskonfigurationsfilen.

  4. 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
      
  5. 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

SPARC: Exempel på en skivminneskonfigurationsfil

I följande exempel visas hur du skapar en konfigurationsfil – 104_test – för ett 104 MB stort skivminne på ett SPARC system.


Exempel 27–7 SPARC: Så här skapar du en skivminneskonfigurationsfil

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-baserat system. Testa en profil innehåller information om hur man använder skivminneskonfigurationsfiler för att testa profiler.


x86: Så här skapar du en skivminneskonfigurationsfil

  1. Leta reda på ett x86-system med ett skivminne som du vill testa.

  2. Logga in som superanvändare.

  3. Skapa en del av konfigurationsfilen för skivminnet genom att spara utdata från kommandot fdisk(1M) i en fil.


    # fdisk -R -W skivminneskonfigurationsfil -h /dev/rdsk/enhetsnamn
    
    skivminneskonfigurationsfil

    Namnet på en skivminneskonfigurationsfil.

    /dev/rdsk/enhetsnamn

    Enhetsnamnet på kommandot fdisk:s representation av hela skivminnet. Enhetsnamnet måste vara på formen cwtxdyp0 eller cxdyp0.

  4. Lägg till utdata från kommandot prtvtoc(1M) till skivminneskonfigurationsfilen:


    # prtvtoc /dev/rdsk/enhetsnamn >>skivminneskonfiguration
    
    /dev/rdsk/enhetsnamn

    Enhetsnamnet på systemets skivminne. enhetsnamn måste vara på formen cwtxdys2 eller cxdys2.

    skivminneskonfiguration

    Namnet på skivminneskonfigurationsfilen

  5. 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
      
  6. 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.

      Säg att enhetsnamnen för olika skivminnen exempelvis 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

x86: Exempel på en skivminneskonfigurationsfil

I följande exempel visas hur du skapar en konfigurationsfil – 500_test – för ett 500 MB stort skivminne på ett x86-system.


Exempel 27–8 x86: Så här skapar du en skivminneskonfigurationsfil

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 från kommandot prtvtoc i en fil med namnet 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 man använder skivminneskonfigurationsfiler för att testa profiler.


Använda ett platsspecifikt installationsprogram

Du kan även använda start- och slutskript för att skapa ett eget program för att installera Solaris.

Om du anger ett minustecken (-) i profilfältet kontrollerar start- och slutskript på vilket sätt Solaris installeras på ett system i stället för profilen och programmet Solaris suninstall.

Om den följande regeln matchar ett system installerar startskriptet x_install.beg och slutskriptet x_install.fin Solaris på systemet klaver:

hostname klaver x_install.beg - x_install.fin