%! %%BoundingBox: (atend) %%Pages: (atend) %%DocumentFonts: (atend) %%EndComments % % FrameMaker PostScript Prolog 3.0, for use with FrameMaker 3.0 % Copyright (c) 1986,87,89,90,91 by Frame Technology Corporation. % All rights reserved. % % Known Problems: % Due to bugs in Transcript, the 'PS-Adobe-' is omitted from line 1 /FMversion (3.0) def % Set up Color vs. Black-and-White /FMPrintInColor systemdict /colorimage known systemdict /currentcolortransfer known or def % Uncomment this line to force b&w on color printer % /FMPrintInColor false def /FrameDict 295 dict def systemdict /errordict known not {/errordict 10 dict def errordict /rangecheck {stop} put} if % The readline in 23.0 doesn't recognize cr's as nl's on AppleTalk FrameDict /tmprangecheck errordict /rangecheck get put errordict /rangecheck {FrameDict /bug true put} put FrameDict /bug false put mark % Some PS machines read past the CR, so keep the following 3 lines together! currentfile 5 string readline 00 0000000000 cleartomark errordict /rangecheck FrameDict /tmprangecheck get put FrameDict /bug get { /readline { /gstring exch def /gfile exch def /gindex 0 def { gfile read pop dup 10 eq {exit} if dup 13 eq {exit} if gstring exch gindex exch put /gindex gindex 1 add def } loop pop gstring 0 gindex getinterval true } def } if /FMVERSION { FMversion ne { /Times-Roman findfont 18 scalefont setfont 100 100 moveto (FrameMaker version does not match postscript_prolog!) dup = show showpage } if } def /FMLOCAL { FrameDict begin 0 def end } def /gstring FMLOCAL /gfile FMLOCAL /gindex FMLOCAL /orgxfer FMLOCAL /orgproc FMLOCAL /organgle FMLOCAL /orgfreq FMLOCAL /yscale FMLOCAL /xscale FMLOCAL /manualfeed FMLOCAL /paperheight FMLOCAL /paperwidth FMLOCAL /FMDOCUMENT { array /FMfonts exch def /#copies exch def FrameDict begin 0 ne dup {setmanualfeed} if /manualfeed exch def /paperheight exch def /paperwidth exch def /yscale exch def /xscale exch def currenttransfer cvlit /orgxfer exch def currentscreen cvlit /orgproc exch def /organgle exch def /orgfreq exch def setpapername manualfeed {true} {papersize} ifelse {manualpapersize} {false} ifelse {desperatepapersize} if end } def /pagesave FMLOCAL /orgmatrix FMLOCAL /landscape FMLOCAL /FMBEGINPAGE { FrameDict begin /pagesave save def 3.86 setmiterlimit /landscape exch 0 ne def landscape { 90 rotate 0 exch neg translate pop } {pop pop} ifelse xscale yscale scale /orgmatrix matrix def gsave } def /FMENDPAGE { grestore pagesave restore end showpage } def /FMFONTDEFINE { FrameDict begin findfont ReEncode 1 index exch definefont FMfonts 3 1 roll put end } def /FMFILLS { FrameDict begin array /fillvals exch def end } def /FMFILL { FrameDict begin fillvals 3 1 roll put end } def /FMNORMALIZEGRAPHICS { newpath 0.0 0.0 moveto 1 setlinewidth 0 setlinecap 0 0 0 sethsbcolor 0 setgray } bind def /fx FMLOCAL /fy FMLOCAL /fh FMLOCAL /fw FMLOCAL /llx FMLOCAL /lly FMLOCAL /urx FMLOCAL /ury FMLOCAL /FMBEGINEPSF { end /FMEPSF save def /showpage {} def FMNORMALIZEGRAPHICS [/fy /fx /fh /fw /ury /urx /lly /llx] {exch def} forall fx fy translate rotate fw urx llx sub div fh ury lly sub div scale llx neg lly neg translate } bind def /FMENDEPSF { FMEPSF restore FrameDict begin } bind def FrameDict begin /setmanualfeed { %%BeginFeature *ManualFeed True statusdict /manualfeed true put %%EndFeature } def /max {2 copy lt {exch} if pop} bind def /min {2 copy gt {exch} if pop} bind def /inch {72 mul} def /pagedimen { paperheight sub abs 16 lt exch paperwidth sub abs 16 lt and {/papername exch def} {pop} ifelse } def /papersizedict FMLOCAL /setpapername { /papersizedict 14 dict def papersizedict begin /papername /unknown def /Letter 8.5 inch 11.0 inch pagedimen /LetterSmall 7.68 inch 10.16 inch pagedimen /Tabloid 11.0 inch 17.0 inch pagedimen /Ledger 17.0 inch 11.0 inch pagedimen /Legal 8.5 inch 14.0 inch pagedimen /Statement 5.5 inch 8.5 inch pagedimen /Executive 7.5 inch 10.0 inch pagedimen /A3 11.69 inch 16.5 inch pagedimen /A4 8.26 inch 11.69 inch pagedimen /A4Small 7.47 inch 10.85 inch pagedimen /B4 10.125 inch 14.33 inch pagedimen /B5 7.16 inch 10.125 inch pagedimen end } def /papersize { papersizedict begin /Letter {lettertray letter} def /LetterSmall {lettertray lettersmall} def /Tabloid {11x17tray 11x17} def /Ledger {ledgertray ledger} def /Legal {legaltray legal} def /Statement {statementtray statement} def /Executive {executivetray executive} def /A3 {a3tray a3} def /A4 {a4tray a4} def /A4Small {a4tray a4small} def /B4 {b4tray b4} def /B5 {b5tray b5} def /unknown {unknown} def papersizedict dup papername known {papername} {/unknown} ifelse get end /FMdicttop countdictstack 1 add def statusdict begin stopped end countdictstack -1 FMdicttop {pop end} for } def /manualpapersize { papersizedict begin /Letter {letter} def /LetterSmall {lettersmall} def /Tabloid {11x17} def /Ledger {ledger} def /Legal {legal} def /Statement {statement} def /Executive {executive} def /A3 {a3} def /A4 {a4} def /A4Small {a4small} def /B4 {b4} def /B5 {b5} def /unknown {unknown} def papersizedict dup papername known {papername} {/unknown} ifelse get end stopped } def /desperatepapersize { statusdict /setpageparams known { paperwidth paperheight 0 1 statusdict begin {setpageparams} stopped pop end } if } def /savematrix { orgmatrix currentmatrix pop } bind def /restorematrix { orgmatrix setmatrix } bind def /dmatrix matrix def /dpi 72 0 dmatrix defaultmatrix dtransform dup mul exch dup mul add sqrt def /freq dpi 18.75 div 8 div round dup 0 eq {pop 1} if 8 mul dpi exch div def /sangle 1 0 dmatrix defaultmatrix dtransform exch atan def /DiacriticEncoding [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quotesingle /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /grave /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef /Adieresis /Aring /Ccedilla /Eacute /Ntilde /Odieresis /Udieresis /aacute /agrave /acircumflex /adieresis /atilde /aring /ccedilla /eacute /egrave /ecircumflex /edieresis /iacute /igrave /icircumflex /idieresis /ntilde /oacute /ograve /ocircumflex /odieresis /otilde /uacute /ugrave /ucircumflex /udieresis /dagger /.notdef /cent /sterling /section /bullet /paragraph /germandbls /registered /copyright /trademark /acute /dieresis /.notdef /AE /Oslash /.notdef /.notdef /.notdef /.notdef /yen /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /ordfeminine /ordmasculine /.notdef /ae /oslash /questiondown /exclamdown /logicalnot /.notdef /florin /.notdef /.notdef /guillemotleft /guillemotright /ellipsis /.notdef /Agrave /Atilde /Otilde /OE /oe /endash /emdash /quotedblleft /quotedblright /quoteleft /quoteright /.notdef /.notdef /ydieresis /Ydieresis /fraction /currency /guilsinglleft /guilsinglright /fi /fl /daggerdbl /periodcentered /quotesinglbase /quotedblbase /perthousand /Acircumflex /Ecircumflex /Aacute /Edieresis /Egrave /Iacute /Icircumflex /Idieresis /Igrave /Oacute /Ocircumflex /.notdef /Ograve /Uacute /Ucircumflex /Ugrave /dotlessi /circumflex /tilde /macron /breve /dotaccent /ring /cedilla /hungarumlaut /ogonek /caron ] def /ReEncode { dup length dict begin { 1 index /FID ne {def} {pop pop} ifelse } forall 0 eq {/Encoding DiacriticEncoding def} if currentdict end } bind def /graymode true def /bwidth FMLOCAL /bpside FMLOCAL /bstring FMLOCAL /onbits FMLOCAL /offbits FMLOCAL /xindex FMLOCAL /yindex FMLOCAL /x FMLOCAL /y FMLOCAL /setpattern { /bwidth exch def /bpside exch def /bstring exch def /onbits 0 def /offbits 0 def freq sangle landscape {90 add} if {/y exch def /x exch def /xindex x 1 add 2 div bpside mul cvi def /yindex y 1 add 2 div bpside mul cvi def bstring yindex bwidth mul xindex 8 idiv add get 1 7 xindex 8 mod sub bitshift and 0 ne {/onbits onbits 1 add def 1} {/offbits offbits 1 add def 0} ifelse } setscreen {} settransfer offbits offbits onbits add div FMsetgray /graymode false def } bind def /grayness { FMsetgray graymode not { /graymode true def orgxfer cvx settransfer orgfreq organgle orgproc cvx setscreen } if } bind def /HUE FMLOCAL /SAT FMLOCAL /BRIGHT FMLOCAL /Colors FMLOCAL FMPrintInColor { /HUE 0 def /SAT 0 def /BRIGHT 0 def % array of arrays Hue and Sat values for the separations [HUE BRIGHT] /Colors [[0 0 ] % black [0 0 ] % white [0.00 1.0] % red [0.37 1.0] % green [0.60 1.0] % blue [0.50 1.0] % cyan [0.83 1.0] % magenta [0.16 1.0] % comment / yellow ] def /BEGINBITMAPCOLOR { BITMAPCOLOR} def /BEGINBITMAPCOLORc { BITMAPCOLORc} def /BEGINBITMAPTRUECOLOR { BITMAPTRUECOLOR } def /BEGINBITMAPTRUECOLORc { BITMAPTRUECOLORc } def /K { Colors exch get dup 0 get /HUE exch store 1 get /BRIGHT exch store HUE 0 eq BRIGHT 0 eq and {1.0 SAT sub setgray} {HUE SAT BRIGHT sethsbcolor} ifelse } def /FMsetgray { /SAT exch 1.0 exch sub store HUE 0 eq BRIGHT 0 eq and {1.0 SAT sub setgray} {HUE SAT BRIGHT sethsbcolor} ifelse } bind def } { /BEGINBITMAPCOLOR { BITMAPGRAY} def /BEGINBITMAPCOLORc { BITMAPGRAYc} def /BEGINBITMAPTRUECOLOR { BITMAPTRUEGRAY } def /BEGINBITMAPTRUECOLORc { BITMAPTRUEGRAYc } def /FMsetgray {setgray} bind def /K { pop } def } ifelse /normalize { transform round exch round exch itransform } bind def /dnormalize { dtransform round exch round exch idtransform } bind def /lnormalize { 0 dtransform exch cvi 2 idiv 2 mul 1 add exch idtransform pop } bind def /H { lnormalize setlinewidth } bind def /Z { setlinecap } bind def /fillvals FMLOCAL /X { fillvals exch get dup type /stringtype eq {8 1 setpattern} {grayness} ifelse } bind def /V { gsave eofill grestore } bind def /N { stroke } bind def /M {newpath moveto} bind def /E {lineto} bind def /D {curveto} bind def /O {closepath} bind def /n FMLOCAL /L { /n exch def newpath normalize moveto 2 1 n {pop normalize lineto} for } bind def /Y { L closepath } bind def /x1 FMLOCAL /x2 FMLOCAL /y1 FMLOCAL /y2 FMLOCAL /rad FMLOCAL /R { /y2 exch def /x2 exch def /y1 exch def /x1 exch def x1 y1 x2 y1 x2 y2 x1 y2 4 Y } bind def % The following commented out code did not work for tangent lines of zero % length. The code following it was provided by Frame to patch this error. % %/RR { % /rad exch def % normalize % /y2 exch def % /x2 exch def % normalize % /y1 exch def % /x1 exch def % newpath % x1 y1 rad add moveto % x1 y2 x2 y2 rad arcto % x2 y2 x2 y1 rad arcto % x2 y1 x1 y1 rad arcto % x1 y1 x1 y2 rad arcto % closepath % 16 {pop} repeat % } bind def /rarc {rad {arcto} stopped } bind def /RR { /rad exch def normalize /y2 exch def /x2 exch def normalize /y1 exch def /x1 exch def mark newpath x1 y1 rad add moveto x1 y2 x2 y2 rarc x2 y2 x2 y1 rarc x2 y1 x1 y1 rarc % x2 y1 x1 y1 rarc x1 y1 x1 y2 rarc closepath cleartomark } bind def /C { grestore gsave R clip } bind def /FMpointsize FMLOCAL /F { FMfonts exch get FMpointsize scalefont setfont } bind def /Q { /FMpointsize exch def F } bind def /T { moveto show } bind def /RF { rotate 0 ne {-1 1 scale} if } bind def /TF { gsave moveto RF show grestore } bind def /P { moveto 0 32 3 2 roll widthshow } bind def /PF { gsave moveto RF 0 32 3 2 roll widthshow grestore } bind def /S { moveto 0 exch ashow } bind def /SF { gsave moveto RF 0 exch ashow grestore } bind def /B { moveto 0 32 4 2 roll 0 exch awidthshow } bind def /BF { gsave moveto RF 0 32 4 2 roll 0 exch awidthshow grestore } bind def /G { gsave newpath normalize translate 0.0 0.0 moveto dnormalize scale 0.0 0.0 1.0 5 3 roll arc closepath fill grestore } bind def /A { gsave savematrix newpath 2 index 2 div add exch 3 index 2 div sub exch normalize 2 index 2 div sub exch 3 index 2 div add exch translate scale 0.0 0.0 1.0 5 3 roll arc restorematrix stroke grestore } bind def /x FMLOCAL /y FMLOCAL /w FMLOCAL /h FMLOCAL /xx FMLOCAL /yy FMLOCAL /ww FMLOCAL /hh FMLOCAL /FMsaveobject FMLOCAL /FMoptop FMLOCAL /FMdicttop FMLOCAL /BEGINPRINTCODE { /FMdicttop countdictstack 1 add def /FMoptop count 4 sub def /FMsaveobject save def userdict begin /showpage {} def FMNORMALIZEGRAPHICS 3 index neg 3 index neg translate } bind def /ENDPRINTCODE { count -1 FMoptop {pop pop} for countdictstack -1 FMdicttop {pop end} for FMsaveobject restore } bind def /gn { 0 { 46 mul cf read pop 32 sub dup 46 lt {exit} if 46 sub add } loop add } bind def /str FMLOCAL /cfs { /str sl string def 0 1 sl 1 sub {str exch val put} for str def } bind def /ic [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0223 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0223 0 {0 hx} {1 hx} {2 hx} {3 hx} {4 hx} {5 hx} {6 hx} {7 hx} {8 hx} {9 hx} {10 hx} {11 hx} {12 hx} {13 hx} {14 hx} {15 hx} {16 hx} {17 hx} {18 hx} {19 hx} {gn hx} {0} {1} {2} {3} {4} {5} {6} {7} {8} {9} {10} {11} {12} {13} {14} {15} {16} {17} {18} {19} {gn} {0 wh} {1 wh} {2 wh} {3 wh} {4 wh} {5 wh} {6 wh} {7 wh} {8 wh} {9 wh} {10 wh} {11 wh} {12 wh} {13 wh} {14 wh} {gn wh} {0 bl} {1 bl} {2 bl} {3 bl} {4 bl} {5 bl} {6 bl} {7 bl} {8 bl} {9 bl} {10 bl} {11 bl} {12 bl} {13 bl} {14 bl} {gn bl} {0 fl} {1 fl} {2 fl} {3 fl} {4 fl} {5 fl} {6 fl} {7 fl} {8 fl} {9 fl} {10 fl} {11 fl} {12 fl} {13 fl} {14 fl} {gn fl} ] def /sl FMLOCAL /val FMLOCAL /ws FMLOCAL /im FMLOCAL /bs FMLOCAL /cs FMLOCAL /len FMLOCAL /pos FMLOCAL /ms { /sl exch def /val 255 def /ws cfs /im cfs /val 0 def /bs cfs /cs cfs } bind def 400 ms /cip { is 0 cf cs readline pop { ic exch get exec add } forall pop /tot w 1 sub def 0 1 tot { /indx exch def /indxa is indx get def /placer nredt indxa get def /placeg ngreent indxa get def /placeb nbluet indxa get def cris indx placer 255 mul cvi put cgis indx placeg 255 mul cvi put cbis indx placeb 255 mul cvi put } for pop cris } bind def /ip { is 0 cf cs readline pop { ic exch get exec add } forall pop } bind def /wh { /len exch def /pos exch def ws 0 len getinterval im pos len getinterval copy pop pos len } bind def /bl { /len exch def /pos exch def bs 0 len getinterval im pos len getinterval copy pop pos len } bind def /s1 1 string def /fl { /len exch def /pos exch def /val cf s1 readhexstring pop 0 get def pos 1 pos len add 1 sub {im exch val put} for pos len } bind def /hx { 3 copy getinterval cf exch readhexstring pop pop } bind def /h FMLOCAL /w FMLOCAL /d FMLOCAL /lb FMLOCAL /bitmapsave FMLOCAL /is FMLOCAL /cf FMLOCAL /wbytes { dup 8 eq {pop} {1 eq {7 add 8 idiv} {3 add 4 idiv} ifelse} ifelse } bind def /BEGINBITMAPBWc { 1 {} COMMONBITMAPc } bind def /BEGINBITMAPGRAYc { 8 {} COMMONBITMAPc } bind def /BEGINBITMAP2BITc { 2 {} COMMONBITMAPc } bind def /COMMONBITMAPc { /r exch def /d exch def gsave translate rotate scale /h exch def /w exch def /lb w d wbytes def sl lb lt {lb ms} if /bitmapsave save def r /is im 0 lb getinterval def ws 0 lb getinterval is copy pop /cf currentfile def w h d [w 0 0 h neg 0 h] {ip} image bitmapsave restore grestore } bind def /BEGINBITMAPBW { 1 {} COMMONBITMAP } bind def /BEGINBITMAPGRAY { 8 {} COMMONBITMAP } bind def /BEGINBITMAP2BIT { 2 {} COMMONBITMAP } bind def /COMMONBITMAP { /r exch def /d exch def gsave translate rotate scale /h exch def /w exch def /bitmapsave save def r /is w d wbytes string def /cf currentfile def w h d [w 0 0 h neg 0 h] {cf is readhexstring pop} image bitmapsave restore grestore } bind def /proc1 FMLOCAL /proc2 FMLOCAL /newproc FMLOCAL /Fmcc { /proc2 exch cvlit def /proc1 exch cvlit def /newproc proc1 length proc2 length add array def newproc 0 proc1 putinterval newproc proc1 length proc2 putinterval newproc cvx } bind def /ngrayt 256 array def /nredt 256 array def /nbluet 256 array def /ngreent 256 array def /gryt FMLOCAL /blut FMLOCAL /grnt FMLOCAL /redt FMLOCAL /indx FMLOCAL /cynu FMLOCAL /magu FMLOCAL /yelu FMLOCAL /k FMLOCAL /u FMLOCAL /colorsetup { currentcolortransfer /gryt exch def /blut exch def /grnt exch def /redt exch def 0 1 255 { /indx exch def /cynu 1 red indx get 255 div sub def /magu 1 green indx get 255 div sub def /yelu 1 blue indx get 255 div sub def /k cynu magu min yelu min def nredt indx 1 0 cynu max sub redt exec put ngreent indx 1 0 magu max sub grnt exec put nbluet indx 1 0 yelu max sub blut exec put ngrayt indx 1 k sub gryt exec put } for } bind def /tran FMLOCAL /fakecolorsetup { /tran 256 string def 0 1 255 {/indx exch def tran indx red indx get 77 mul green indx get 151 mul blue indx get 28 mul add add 256 idiv put} for currenttransfer {255 mul cvi tran exch get 255.0 div} exch Fmcc settransfer } bind def /BITMAPCOLOR { /d 8 def gsave translate rotate scale /h exch def /w exch def /bitmapsave save def colorsetup /is w d wbytes string def /ris w d wbytes string def /gis w d wbytes string def /bis w d wbytes string def /cf currentfile def w h d [w 0 0 h neg 0 h] {cf is readhexstring pop /tot w 1 sub def 0 1 tot { /indx exch def /indxa is indx get def /placer nredt indxa get def /placeg ngreent indxa get def /placeb nbluet indxa get def ris indx placer 255 mul cvi put gis indx placeg 255 mul cvi put bis indx placeb 255 mul cvi put } for pop ris} {gis} {bis} true 3 colorimage bitmapsave restore grestore } bind def /BITMAPCOLORc { /d 8 def gsave translate rotate scale /h exch def /w exch def /lb w d wbytes def sl lb lt {lb ms} if /bitmapsave save def colorsetup /is im 0 lb getinterval def /cris lb string def /cgis lb string def /cbis lb string def ws 0 lb getinterval is copy pop /cf currentfile def w h d [w 0 0 h neg 0 h] {cip} {cgis} {cbis} true 3 colorimage bitmapsave restore grestore } bind def /BITMAPTRUECOLORc { gsave translate rotate scale /h exch def /w exch def /bitmapsave save def /is w string def ws 0 w getinterval is copy pop /cf currentfile def w h 8 [w 0 0 h neg 0 h] {ip} {gip} {bip} true 3 colorimage bitmapsave restore grestore } bind def /BITMAPTRUECOLOR { gsave translate rotate scale /h exch def /w exch def /bitmapsave save def /is w string def /gis w string def /bis w string def /cf currentfile def w h 8 [w 0 0 h neg 0 h] { cf is readhexstring pop } { cf gis readhexstring pop } { cf bis readhexstring pop } true 3 colorimage bitmapsave restore grestore } bind def /BITMAPTRUEGRAYc { gsave translate rotate scale /h exch def /w exch def /bitmapsave save def /is w string def ws 0 w getinterval is copy pop /cf currentfile def w h 8 [w 0 0 h neg 0 h] {ip gip bip w gray} image bitmapsave restore grestore } bind def /ww FMLOCAL /r FMLOCAL /g FMLOCAL /b FMLOCAL /i FMLOCAL /gray { /ww exch def /b exch def /g exch def /r exch def 0 1 ww 1 sub { /i exch def r i get .299 mul g i get .587 mul b i get .114 mul add add r i 3 -1 roll floor cvi put } for r } bind def /BITMAPTRUEGRAY { gsave translate rotate scale /h exch def /w exch def /bitmapsave save def /is w string def /gis w string def /bis w string def /cf currentfile def w h 8 [w 0 0 h neg 0 h] { cf is readhexstring pop cf gis readhexstring pop cf bis readhexstring pop w gray} image bitmapsave restore grestore } bind def /BITMAPGRAY { 8 {fakecolorsetup} COMMONBITMAP } bind def /BITMAPGRAYc { 8 {fakecolorsetup} COMMONBITMAPc } bind def /ENDBITMAP { } bind def end /ALDsave FMLOCAL /ALDmatrix matrix def ALDmatrix currentmatrix pop /StartALD { /ALDsave save def savematrix ALDmatrix setmatrix } bind def /InALD { restorematrix } bind def /DoneALD { ALDsave restore } bind def %%EndProlog %%BeginSetup (3.0) FMVERSION 1 1 612 792 0 1 10 FMDOCUMENT 0 0 /Palatino-Roman FMFONTDEFINE 1 0 /Times-Roman FMFONTDEFINE 2 0 /Times-Bold FMFONTDEFINE 3 0 /Times-Italic FMFONTDEFINE 4 0 /Courier FMFONTDEFINE 5 0 /Courier-Bold FMFONTDEFINE 32 FMFILLS 0 0 FMFILL 1 0.1 FMFILL 2 0.3 FMFILL 3 0.5 FMFILL 4 0.7 FMFILL 5 0.9 FMFILL 6 0.97 FMFILL 7 1 FMFILL 8 <0f1e3c78f0e1c387> FMFILL 9 <0f87c3e1f0783c1e> FMFILL 10 FMFILL 11 FMFILL 12 <8142241818244281> FMFILL 13 <03060c183060c081> FMFILL 14 <8040201008040201> FMFILL 16 1 FMFILL 17 0.9 FMFILL 18 0.7 FMFILL 19 0.5 FMFILL 20 0.3 FMFILL 21 0.1 FMFILL 22 0.03 FMFILL 23 0 FMFILL 24 FMFILL 25 FMFILL 26 <3333333333333333> FMFILL 27 <0000ffff0000ffff> FMFILL 28 <7ebddbe7e7dbbd7e> FMFILL 29 FMFILL 30 <7fbfdfeff7fbfdfe> FMFILL %%EndSetup %%Page: "1" 1 %%BeginPaperSize: Letter %%EndPaperSize 612 792 0 FMBEGINPAGE 0 8 Q 0 X 0 K (Silicon Graphics Pr) 72 750.67 T (oprietary) 139.57 750.67 T 72 54 540 54 2 L 0.25 H 2 Z N (Diskless Ar) 72 42.62 T (chitectur) 112.52 42.62 T (e) 143.48 42.62 T (Febr) 258.9 42.62 T (uary 8, 1994) 274.69 42.62 T (1) 500 42.62 T 1 24 Q (Diskless Architecture) 202.41 704 T 2 16 Q (1.0 Intr) 72 655.33 T (oduction) 127.23 655.33 T 1 12 Q -0.14 (A couple of factors necessitated a modi\336ed diskless architecture. The major change was the adop-) 72 628 P (tion of SVR4 directory hierarchies. Get a copy of) 72 614 T 3 F (\322Dir) 311.82 614 T (ectory Structur) 334.7 614 T (e Re-or) 406.54 614 T (ganization in IRIX) 441.73 614 T (5.x) 72 600 T 1 F (\323 if you are unfamiliar with SVR4 hierarchies. A postscript copy is stored in the RCS tree as) 86.32 600 T -0.29 (\322.../irix/cmd/diskless/dir) 72 586 P -0.29 (-reor) 188.04 586 P -0.29 (g.ps\323. A good familiarity with the IRIX directory structure change is) 211.12 586 P -0.28 (pertinent to understanding this architecture document. A second factor was the need to allow shar-) 72 572 P (ing across architectural boundaries and make our implementation look similar to other vendors.) 72 558 T -0.16 (It is not the intent of this document to describe the installation process in detail. Instead, pertinent) 72 532 P -0.14 (details required to understand the af) 72 518 P -0.14 (fects on pre-ops, post-ops, & exit-ops are given. A discussion) 243.28 518 P (of developer concerns is at the end of the document.) 72 504 T 2 16 Q (2.0 Diskless operation) 72 463.33 T 1 12 Q (W) 72 436 T (ithout discussing speci\336cs about installation, this section will detail the bootup sequence. This) 82.84 436 T (information is important to know before installation speci\336cs are explained.) 72 422 T 2 14 Q (2.1 Pr) 72 388.67 T (eliminary details) 111 388.67 T 1 12 Q (A few general items must be satis\336ed before booting can commence.) 72 362 T 2 F (2.1.1 client) 72 330 T 1 F -0.3 (While at the prom prompt, some prom variables must be set before the client can behave as a disk-) 72 304 P (less client. All platforms \050R3k & R4k\051 must set the) 72 290 T 2 F (diskless) 319.53 290 T 1 F ( variable to 1. R3k systems must set) 358.86 290 T (the additional variable boot\336le to re\337ect where to pick up the kernel. An example might be:) 72 276 T 4 9 Q (setenv bootf) 90 258 T (ile bootp\050\051foo:/var/boot/bar/unix) 154.71 258 T 1 12 Q (where) 72 234 T 2 F (foo) 104.3 234 T 1 F ( is the diskless server and) 120.29 234 T 2 F (bar) 245.53 234 T 1 F ( is the diskless client.) 263.52 234 T (R4k machines \050except Crimson\051 must set two analogous variables,) 72 208 T 2 F (SystemPartition) 394.45 208 T 1 F ( &) 477.07 208 T 2 F (OSLoader) 72 194 T 1 F (.) 124.65 194 T 2 F (2.1.2 server) 72 162 T 1 F (Diskless client software must be installed onto the diskless server) 72 136 T (. Details will be given later) 385.47 136 T (.) 514.72 136 T FMENDPAGE %%EndPage: "1" 2 %%Page: "2" 2 612 792 0 FMBEGINPAGE 0 8 Q 0 X 0 K (Silicon Graphics Pr) 72 750.67 T (oprietary) 139.57 750.67 T 72 54 540 54 2 L 0.25 H 2 Z N (Diskless Ar) 72 42.62 T (chitectur) 112.52 42.62 T (e) 143.48 42.62 T (Febr) 258.9 42.62 T (uary 8, 1994) 274.69 42.62 T (2) 500 42.62 T 2 14 Q (2.2 bootp & tftp pr) 72 710.67 T (otocols) 188.35 710.67 T 1 12 Q (The bootp protocol is used to \336nd the unix image sitting on the diskless server) 72 684 T (. A client worksta-) 446.46 684 T (tion\325) 72 670 T (s prom parses the) 94 670 T 2 F (boot\336le) 180.6 670 T 1 F ( variable and treats bootp as a pseudo-device driver) 218.58 670 T (. It passes the) 464.39 670 T (name of the server and the \336lename to the bootp protocol code which is burned into the prom.) 72 656 T -0.35 (Once the server is found, the tftp protocol is used to download the kernel to the client. This is only) 72 642 P (loading the kernel image) 72 628 T (across the network; no execution has occurred.) 193.91 628 T 2 14 Q (2.3 bootparam pr) 72 594.67 T (otocol) 179.8 594.67 T 1 12 Q (Once the kernel is loaded, it starts running. At this point, there is no root \336lesystem and no init) 72 568 T -0.13 (process. The running client kernel decides it is running diskless due to the) 72 554 P 2 F -0.13 (diskless) 428.11 554 P 1 F -0.13 ( prom variable) 467.44 554 P (which was set earlier) 72 540 T (. The bootparam protocol is used to query the diskless server about the cli-) 172.25 540 T (ent\325) 72 526 T (s partitions to mount.) 89.99 526 T (Three variables or partitions are gathered with this protocol: root, /sbin, & /swap. The root parti-) 72 500 T (tion is private; only the client will write to it. The /sbin partition is a read-only partition which) 72 486 T (contains those \336les which are shareable across architectures but needed to bring a machine up to) 72 472 T (single user mode. The /swap partition is just space for swapping.) 72 458 T 2 14 Q (2.4 \336nish booting) 72 424.67 T 1 12 Q (After all three bootparam partitions are NFS mounted, the client continues booting just as a nor-) 72 398 T (mal diskfull machine boots. Along the way) 72 384 T (, it reads the local /etc/fstab \336le to \336nd out where its) 278.1 384 T (/etc partition is located. /usr is mounted read-only; it holds \336les which are shareable across all) 72 370 T (architectures but not needed until after single-user mode.) 72 356 T 2 16 Q (3.0 Installation synopsis) 72 315.33 T 1 12 Q (Installation requires running two shell scripts,) 72 288 T 3 F (client_inst) 294.86 288 T 1 F ( and) 344.84 288 T 3 F (shar) 368.15 288 T (e_inst) 389.03 288 T 1 F (. They are both available) 417.69 288 T (in the) 72 274 T 2 F (nfs.sw) 101.98 274 T (.diskless_server) 132.97 274 T 1 F ( subsystem. After both scripts complete, a client\325) 213.26 274 T (s system software) 447.44 274 T -0.17 (will be installed on the server in three trees: the client tree, the share tree, and the swap tree. For a) 72 260 P (detailed discussion of diskless installation, see \322) 72 246 T 3 F (Diskless W) 302.86 246 T (orkstation Administration Guide) 354.72 246 T 1 F (\323) 510.65 246 T (\050document # 007-0855-030\051.) 72 232 T 3 F (shar) 72 206 T (e_inst) 92.88 206 T 1 F ( gets executed \336rst; and at some point, the familiar) 121.53 206 T 3 F (inst) 367.04 206 T 1 F ( menu appears. Subsystems are) 384.37 206 T (chosen as during a diskfull install. However) 72 192 T (, one additional subsystem must be installed to com-) 282.38 192 T (plete the diskless environment,) 72 178 T 2 F (nfs.sw) 223.57 178 T (.diskless_client) 254.56 178 T 1 F (. This subsystem is only available during) 330.87 178 T (diskless installations. Client tree installations, using) 72 164 T 3 F (client_inst) 323.21 164 T 1 F (, are performed against speci\336c) 373.19 164 T -0.23 (share trees. As such, the subsystems available for installation into a client tree are restricted to the) 72 150 P (subset installed in the share tree. Swap trees only contain swap partitions and are built as a side) 72 136 T (ef) 72 122 T (fect to running) 81.1 122 T 3 F (client_inst) 154.72 122 T 1 F (.) 204.7 122 T FMENDPAGE %%EndPage: "2" 3 %%Page: "3" 3 612 792 0 FMBEGINPAGE 0 8 Q 0 X 0 K (Silicon Graphics Pr) 72 750.67 T (oprietary) 139.57 750.67 T 72 54 540 54 2 L 0.25 H 2 Z N (Diskless Ar) 72 42.62 T (chitectur) 112.52 42.62 T (e) 143.48 42.62 T (Febr) 258.9 42.62 T (uary 8, 1994) 274.69 42.62 T (3) 500 42.62 T 2 14 Q (3.1 Shar) 72 710.67 T (e T) 125 710.67 T (r) 143.01 710.67 T (ees) 148.97 710.67 T 1 12 Q (The share tree contains those \336les which are shareable across architectures. Man pages, binaries,) 72 684 T (libraries \050while everything is MIPS1\051, and data \336les are good examples. Because objects are) 72 670 T (shareable, they are exported from the server in read-only \336lesystems. In a diskless setup, there) 72 656 T (should be one share tree per release. For example, if one Indigo R3k and one Indigo R4k want to) 72 642 T -0.09 (use IRIX 5.0, they would both use one share tree. If three Indies wanted to run IRIX 5.1.1.1, they) 72 628 P (would use a dif) 72 614 T (ferent share tree.) 145.4 614 T 2 F (3.1.1 Speci\336cs of a shar) 72 582 T (e tr) 193.38 582 T (ee) 210.81 582 T 1 F (Everything under the following directories is shareable.) 72 556 T 5 F (\245) 72 536 T 1 F (/usr) 85.75 536 T 5 F (\245) 72 516 T 1 F (/sbin) 85.75 516 T 5 F (\245) 72 496 T 1 F (/lib) 85.75 496 T 5 F (\245) 72 476 T 1 F (/stand) 85.75 476 T (Therefore, a share tree looks like:) 72 450 T (Although the share tree contains all the binaries on a running system, it is not a complete root.) 72 307 T (Therefore, using \322chroot\323 in a pre-op, post-op, or exit-op is) 72 293 T 2 F (not) 359.45 293 T 1 F ( guaranteed to operate properly) 376.11 293 T -0.19 (since there are only four directories in the share tree root. Even so, some pre/post/exit-ops are per-) 72 279 P (formed against the share tree. A /dev directory with a few \336les has been created in the share tree) 72 265 T (\050not shown above\051; so well-known, often executed chroots succeed. It was needed because rld) 72 251 T (must open /dev/zero on start-up. In summary) 72 237 T (, the commands performed in the operation will) 286.74 237 T (determine the success of the pre-op, post-op, or exit-op.) 72 223 T 2 F (3.1.2 About \322shar) 72 191 T (e_inst\323) 165.4 191 T 3 F (shar) 72 165 T (e_inst) 92.88 165 T 1 F ( is a shell script which calls) 121.53 165 T 3 F (inst) 256.45 165 T 1 F ( with extra options. It \336rst creates a /dev directory and) 273.78 165 T (\336lls it with required devices like /dev/zero. A symlink is created from \322lib -> sbin/lib\323. Rather) 72 151 T (than create another directory analogous to /sbin, this forces) 72 137 T 3 F (inst) 358.45 137 T 1 F ( to install /lib library \336les into the) 375.78 137 T (directory /sbin. Architecture speci\336c binaries located under /stand are placed under /sbin/stand) 72 123 T (and given architecture independent names. When) 72 109 T 3 F (client_inst) 311.47 109 T 1 F ( runs, it installs architecture speci\336c) 361.45 109 T -0.05 (symlinks from /stand to this directory) 72 95 P -0.05 (. As stated previously) 251.2 95 P -0.05 (, /sbin is a directory for shareable \336les) 354.21 95 P (required to boot to single-user) 72 81 T (. It takes on additional objects in the diskless environment.) 215.91 81 T 72 63 540 720 C 128.81 329 483.19 420 C 1 12 Q 0 X 0 K (share tree root directory) 245.81 402.82 T 299.81 393 173.81 357 2 L 1 H 2 Z N 299.81 393 254.81 357 2 L N 299.81 393 335.81 357 2 L N 299.81 393 425.81 357 2 L N (usr) 164.81 341.6 T (sbin) 245.81 341.6 T (lib) 332.15 341.6 T (stand) 416.81 341.6 T 72 63 540 720 C 0 0 612 792 C FMENDPAGE %%EndPage: "3" 4 %%Page: "4" 4 612 792 0 FMBEGINPAGE 0 8 Q 0 X 0 K (Silicon Graphics Pr) 72 750.67 T (oprietary) 139.57 750.67 T 72 54 540 54 2 L 0.25 H 2 Z N (Diskless Ar) 72 42.62 T (chitectur) 112.52 42.62 T (e) 143.48 42.62 T (Febr) 258.9 42.62 T (uary 8, 1994) 274.69 42.62 T (4) 500 42.62 T 3 12 Q (inst) 72 712 T 1 F ( is called as such:) 89.33 712 T 4 9 Q (inst -r$SHARE -s -C -d usr -d sbin -d lib) 90 694 T 4 12 Q (\322-s\323) 85.75 667 T 1 F ( tells) 114.53 667 T 3 F (inst) 140.52 667 T 1 F ( that this is a share tree) 157.85 667 T 4 F (\322-C\323) 85.75 649 T 1 F ( tells) 114.53 649 T 3 F (inst) 140.52 649 T 1 F ( to read) 157.85 649 T 2 F (/var/boot/.dl_classes) 196.82 649 T 1 F ( which contains valid diskless architectures) 299.77 649 T 4 F (\322-d usr\323) 85.75 631 T 1 F ( tells) 143.31 631 T 3 F (inst) 169.3 631 T 1 F ( to install \336les beginning with /usr into the share tree.) 186.63 631 T 4 F (\322-r $SHARE\323) 85.75 613 T 1 F ( tells) 164.9 613 T 3 F (inst) 190.89 613 T 1 F ( where the root of the share tree is located.) 208.22 613 T (Therefore, if an exit-op is attached to a \336le which begins with /usr and that speci\336c sub-system) 72 587 T (gets installed, it will get run when) 72 573 T 3 F (inst) 237.9 573 T 1 F ( exits during a share tree install. The operation will not get) 255.24 573 T (run during a client tree install.) 72 559 T (Lastly) 72 533 T (,) 101.2 533 T 3 F (shar) 107.2 533 T (e_inst) 128.08 533 T 1 F ( NFS exports /sbin and /usr) 156.73 533 T (.) 287.01 533 T 2 14 Q (3.2 Client T) 72 499.67 T (r) 144.82 499.67 T (ees) 150.78 499.67 T 1 12 Q (The client tree contains everything which is not in the share tree. Files beginning with names) 72 473 T -0.02 (other than those listed in the share tree \050see) 72 459 P -0.02 (3.1.1\051 are placed in each client tree. The relationship) 285.02 459 P (between client trees and share trees is many to one.) 72 445 T 2 F (3.2.1 Speci\336cs about client tr) 72 276 T (ees) 221.37 276 T 1 F (A client tree might look like:) 72 250 T -0.36 (There is no way a client tree can be made into a viable root \336lesystem. There are no binaries in the) 72 102 P -0.17 (tree, not even a shell. In the above picture, there is no /bin directory! Therefore, any pre-ops, post-) 72 88 P 72 63 540 720 C 185.62 304 426.37 415 C 282.75 378.5 330.87 408.25 R 1 H 2 Z 0 X 0 K N 1 12 Q (share) 295.94 398.45 T (tree) 298.65 384.2 T 219.5 323 267.62 352.75 R N (client) 232.69 342.95 T (tree) 235.4 328.7 T 345 323.12 393.12 352.87 R N (client) 358.19 343.07 T (tree) 360.9 328.82 T 294.4 370.34 306.24 372.25 297.21 364.35 295.8 367.35 4 Y V 270 355.37 295.81 367.35 2 L N 315.45 365.17 306.25 372.87 318.13 371.21 316.79 368.19 4 Y V 343.13 356.62 316.79 368.19 2 L N 72 63 540 720 C 0 0 612 792 C 72 63 540 720 C 109.69 124 502.31 220 C 1 12 Q 0 X 0 K (client tree root) 271.69 202 T 307.69 193 154.69 139 2 L 1 H 2 Z N 307.69 193 460.69 139 2 L N 307.69 193 208.69 139 2 L N 307.69 193 415.69 139 2 L N (var) 148.37 130.82 T (etc) 203.7 130.82 T (dev) 406.69 130.82 T (tmp) 451.69 130.82 T 307.69 193 244.69 139 2 L N (debug) 233.38 130.82 T 307.69 193 361.69 139 2 L N (opt) 352.69 130.82 T 307.69 193 307.69 139 2 L N (unix) 295.36 130.82 T 72 63 540 720 C 0 0 612 792 C FMENDPAGE %%EndPage: "4" 5 %%Page: "5" 5 612 792 0 FMBEGINPAGE 0 8 Q 0 X 0 K (Silicon Graphics Pr) 72 750.67 T (oprietary) 139.57 750.67 T 72 54 540 54 2 L 0.25 H 2 Z N (Diskless Ar) 72 42.62 T (chitectur) 112.52 42.62 T (e) 143.48 42.62 T (Febr) 258.9 42.62 T (uary 8, 1994) 274.69 42.62 T (5) 500 42.62 T 1 12 Q (ops, or exit-ops using \322chroot\323 will fail. Shell scripts should be re-written to use full pathnames) 72 712 T (from the miniroot root.) 72 698 T 2 F (3.2.2 About \322client_inst\323) 72 666 T 3 F -0.4 (client_inst) 72 640 P 1 F -0.4 ( is a shell script which invokes) 121.98 640 P 3 F -0.4 (inst) 269.45 640 P 1 F -0.4 (. It creates the client\325) 286.79 640 P -0.4 (s /etc/fstab \336le, NFS exports the) 385.46 640 P -0.03 (client\325) 72 626 P -0.03 (s root and swap partitions, and enters a line into the server) 101.98 626 P -0.03 (\325) 381.22 626 P -0.03 (s /etc/bootparams \336le. The boot-) 384.56 626 P (param entry contains the client\325) 72 612 T (s root, sbin, and swap partitions which are mounted when the ker-) 223.23 612 T (nel starts.) 72 598 T (The script then calls) 72 572 T 3 F (inst) 171.93 572 T 1 F ( as such:) 189.26 572 T 4 9 Q (inst -r$CL_ROOT -S $SHARE -m$MACH ...) 90 554 T 4 12 Q -0.43 (\322-S $SHARE\323) 72 530 P 1 F -0.18 ( tells) 150.73 530 P 3 F -0.18 (inst) 176.36 530 P 1 F -0.18 ( that this is a client tree install and to install only those \336les not installed) 193.69 530 P -0.41 (in the share tree rooted at) 72 516 P 4 F -0.98 ( $SHARE) 191.52 516 P 1 F -0.41 (.) 240.91 516 P 4 F -0.98 (\322-m$MACH\323) 246.5 516 P 1 F -0.41 ( are mach tags for this client. Other tags include) 311.26 516 P 4 F (GFXBOARD) 72 502 T 1 F (,) 129.57 502 T 4 F (CPUARCH) 135.57 502 T 1 F (,) 185.94 502 T 4 F (CPUBOARD) 191.93 502 T 1 F (, &) 249.5 502 T 4 F (VIDEO) 267.83 502 T 1 F (.) 303.81 502 T (Following installation of idb \336les,) 72 476 T 3 F (client_inst) 237.93 476 T 1 F (cobbles up a local /etc/hosts \336le; chkcon\336gs nfs,) 290.9 476 T (network, verbose, & timed; lboots a unix kernel for the client; creates a /var/yp/ypdomain \336le;) 72 462 T -0.02 (makes necessary symlinks like /lib -> sbin/lib and /stand -> sbin/stand; and creates an /etc/sys_id) 72 448 P (\336le.) 72 434 T 2 14 Q (3.3 Swap T) 72 400.67 T (r) 140.94 400.67 T (ee) 146.9 400.67 T 1 12 Q -0.3 (This has not changed from the past implementation. A swap \336le for each machine is placed in this) 72 374 P (tree. The size of the swap \336le determines the size of the swap partition on the client.) 72 360 T FMENDPAGE %%EndPage: "5" 6 %%Page: "6" 6 612 792 0 FMBEGINPAGE 0 8 Q 0 X 0 K (Silicon Graphics Pr) 72 750.67 T (oprietary) 139.57 750.67 T 72 54 540 54 2 L 0.25 H 2 Z N (Diskless Ar) 72 42.62 T (chitectur) 112.52 42.62 T (e) 143.48 42.62 T (Febr) 258.9 42.62 T (uary 8, 1994) 274.69 42.62 T (6) 500 42.62 T 2 14 Q (3.4 Mapping of client dir) 72 710.67 T (ectories to diskless server dir) 223.34 710.67 T (ectories) 395.63 710.67 T 1 12 Q (The above \336gure shows the mapping of client directories to directories on the server machine.) 72 453 T (Explicit mounts are:) 72 439 T 4 9 Q (/) 108 421 T (->) 144 421 T (server:/diskless/client/foo) 180 421 T (/sbin) 108 410 T (->) 144 410 T (server:/diskless/share/sbin) 180 410 T (/swap) 108 399 T (->) 144 399 T (server:/diskless/swap/foo) 180 399 T (/usr) 108 388 T (->) 144 388 T (server:/diskless/share/usr) 180 388 T 1 12 Q -0.26 (As stated previously) 72 364 P -0.26 (, the \336rst three mounts are performed when the kernel \336rst starts running. /usr) 168.63 364 P (is mounted when /etc/bcheckrc is run. Note that the client tree shows symlinks from) 72 350 T 4 9 Q (/stand) 180 332 T (-> sbin/stand) 216 332 T (/lib) 180 321 T (-> sbin/lib) 216 321 T 1 12 Q -0.11 (From the picture above, it should be clear that the /var and /etc directories reside on the root parti-) 72 297 P (tion of the client. They are not separate mount points,) 72 283 T (and /var does not point to usr/var as on a) 331.83 283 T (diskfull machine.) 72 269 T 2 14 Q (3.5 Important facts to r) 72 235.67 T (emember) 214.75 235.67 T 1 12 Q (Con\336guration \336les belong in /etc or /var) 72 209 T (. In general, con\336guration \336les have been moved to /etc) 263.89 209 T (with lar) 72 195 T (ge \336les or directories being placed in /var) 108.76 195 T (. On a diskless workstation both directories are) 306.95 195 T (on the root partition. Remember that in a diskless environment, we are not concerned about the) 72 181 T (size of the root partition as much as maximizing sharing of non-root objects. On diskfull) 72 167 T (machines, however) 72 153 T (, the space allocated to root is important. This is why /var is a symlink to usr/-) 164.11 153 T -0.31 (var on diskfull machines. By placing lar) 72 139 P -0.31 (ge con\336guration \336les or directories in /var) 262.12 139 P -0.31 (, we move them) 461.63 139 P (of) 72 125 T (f the root partition.) 81.78 125 T (Given the split of \336les among two dif) 72 99 T (ferent trees, pre-ops, post-ops, and exit-ops must operate) 251.35 99 T (only on those \336les in that particular tree. For example, coding a post-op for the \336le /usr/lib/foo) 72 85 T -0.41 (which needs to look at /etc/passwd will not work. Even if the \336le /etc/passwd were made available) 72 71 P 72 63 540 720 C 85.89 475 526.11 680 C 496.25 565.37 M 475 576.65 445.69 563.13 442.41 537.87 D 438.46 507.39 484.92 509.54 503.13 515.71 D 518.09 520.77 531.31 545.67 512.5 553.53 D 506.5 556.04 501.78 560.61 496.88 564.75 D 4 X 0 K V 0.5 H 2 Z 0 X N 298.53 635.18 M 293.14 644.18 274.49 645.55 273.23 632.68 D 271.46 614.68 278.7 594 300.4 591.74 D 317.16 590 319.89 612.14 310.69 622.05 D 307.45 625.54 305.5 633.22 298.53 634.55 D 14 X V 0 X N 14 X 90 450 18 18 355.89 563 G 0 X 90 450 18 18 355.89 563 A 436.89 500 M 453.33 517.17 427.26 530.5 418.23 544.62 D 412.27 553.96 388.44 557.06 387.92 540.25 D 387.39 523.45 373.6 492.99 401.25 493.81 D 413.14 494.17 429.96 486.58 437.5 499.62 D 5 X V 0 X N 246.88 639.62 M 223.54 651.73 187.55 640.82 194.9 609 D 198.41 593.81 205.9 575.37 220.63 574.89 D 242.41 574.19 281.31 547.16 282.79 571.5 D 284.26 595.78 280.97 642.3 248.13 640.87 D 5 X V 0 X N 6 X 90 450 18 18 373.89 536 G 0 X 90 450 18 18 373.89 536 A 192.5 622.12 M 184.99 629.57 169.97 626.84 173.76 614 D 186.18 571.95 153.9 565.36 123.13 550.57 D 114.92 546.63 111.22 526.79 126.88 522.93 D 170.93 512.09 243.66 502.28 261.45 535.87 D 280.77 572.34 237.53 561.3 215.63 565.14 D 189.22 569.77 191.51 599.04 192.5 619.62 D 6 X V 0 X N 178.75 654.62 M 151.71 650.03 107.02 658.29 96.87 627.75 D 82.31 583.95 115.22 558.6 155.63 569.73 D 176.09 575.37 164.41 600.97 166.87 613.37 D 169.88 628.56 193.01 638.9 179.38 655.25 D 4 X V 0 X N 1 12 Q (/) 172.55 641.42 T 103.89 631.6 265.89 631.6 2 L N 103.89 631.6 103.89 622.6 2 L N (etc) 98.9 614.42 T 130.89 631.6 130.89 622.6 2 L N 157.89 631.6 157.89 622.6 2 L N 184.89 631.6 184.89 622.6 2 L N 211.89 631.6 211.89 622.6 2 L N 238.89 631.6 238.89 622.6 2 L N 265.89 631.6 265.89 622.6 2 L N 175.89 631.6 175.89 640.6 2 L N (var) 124.57 614.42 T (unix) 148.89 614.42 T (usr) 175.89 614.42 T (sbin) 200.89 614.42 T (stand) 229.89 614.42 T (lib) 262.22 614.42 T (client workstation - foo) 139.89 662 T 130.89 608 130.89 599 2 L N 103.89 599 148.89 599 2 L N 103.89 599 103.89 590 2 L N 148.89 599 148.89 590 2 L N (yp) 100.89 581.82 T (sysgen) 134.24 581.82 T 211.89 608 211.89 590 2 L N 211.89 590 265.89 590 2 L N 265.89 590 265.89 581 2 L N 238.89 590 238.89 581 2 L N (stand) 231.57 572.82 T (lib) 265.89 572.82 T 184.89 608 184.89 554 2 L N 139.89 554 247.89 554 2 L N 139.89 554 139.89 545 2 L N 166.89 554 166.89 545 2 L N 193.89 554 193.89 545 2 L N 220.89 554 220.89 545 2 L N 247.89 554 247.89 545 2 L N (cpu) 130.89 536.82 T (bin) 160.56 536.82 T (share) 184.89 536.82 T (gfx) 211.89 536.82 T (sbin) 238.89 536.82 T 265.26 631.25 292.26 631.25 2 L N 292.01 631.1 292.01 622.1 2 L N (swap) 280.63 614 T 241.75 598.57 238.75 593.37 235.75 598.57 238.75 598.57 4 Y V 238.75 611.5 238.75 598.57 2 L N 268.63 599.19 265.63 594 262.63 599.19 265.63 599.19 4 Y V 265.63 610.87 265.63 599.19 2 L N (diskless server) 399.38 662.12 T (/) 426.64 637.7 T 427.89 635 427.89 626 2 L N 400.89 626 463.89 626 2 L N 400.89 626 400.89 617 2 L N (diskless) 382.89 608.82 T 400.89 608 400.89 599 2 L N 373.89 599 445.89 599 2 L N 373.89 599 373.89 590 2 L N 409.89 599 409.89 590 2 L N 445.89 599 445.89 590 2 L N (swap) 358.24 581.82 T (share) 400.89 581.82 T (client) 436.89 581.82 T 373.89 581 373.89 572 2 L N (foo) 346.89 554.82 T 409.89 581 409.89 545 2 L N 445.89 581 445.89 572 2 L N 436.89 572 472.89 572 2 L N 436.89 572 436.89 563 2 L N 472.89 572 472.89 563 2 L N (foo1) 429.9 554.82 T (foo) 463.89 554.82 T 373.89 545 409.89 545 2 L N 391.89 572 355.89 572 2 L N 391.89 572 391.89 563 2 L N (foo1) 378.9 554.82 T 355.89 572 355.89 563 2 L N 373.89 545 373.89 536 2 L N 400.89 545 400.89 536 2 L N (usr) 368.23 527.82 T (sbin) 391.89 527.82 T 400.89 527 400.89 518 2 L N 391.89 518 418.89 518 2 L N 391.89 518 391.89 509 2 L N 418.89 518 418.89 509 2 L N (lib) 388.22 500.82 T (stand) 409.89 500 T 463.89 626 463.89 617 2 L N 472.89 554 472.89 545 2 L N 454.89 545 499.89 545 2 L N 454.89 545 454.89 536 2 L N 499.89 545 499.89 536 2 L N (var) 445.89 529.6 T (etc) 493.57 527.82 T 72 63 540 720 C 0 0 612 792 C FMENDPAGE %%EndPage: "6" 7 %%Page: "7" 7 612 792 0 FMBEGINPAGE 0 8 Q 0 X 0 K (Silicon Graphics Pr) 72 750.67 T (oprietary) 139.57 750.67 T 72 54 540 54 2 L 0.25 H 2 Z N (Diskless Ar) 72 42.62 T (chitectur) 112.52 42.62 T (e) 143.48 42.62 T (Febr) 258.9 42.62 T (uary 8, 1994) 274.69 42.62 T (7) 500 42.62 T 1 12 Q -0.05 (to the share tree, it would be only one /etc/passwd. Remember) 72 712 P -0.05 (, there will be multiple /etc/passwd) 369.43 712 P (\336les in each client tree for one /usr/lib/foo \336le in the share tree. Running a post-op just once will) 72 698 T (not buy much.) 72 684 T 3 F (inst) 72 658 T 1 F ( now has an environment variable called) 89.33 658 T 2 F (diskless) 286.18 658 T 1 F (which has three values, depending on the) 328.5 658 T (type of installation. pre/post/exit-ops can query this variable and perform installation speci\336c) 72 644 T (actions.) 72 630 T 4 9 Q (diskless=share|client|none) 144 612 T 1 12 Q -0.31 (There is currently no easy-to-use mechanism to install patches or software which come in formats) 72 588 P (other than the) 72 574 T 3 F (inst) 140.95 574 T 1 F ( format. Until an automated mechanism exists, packages can be unpacked on a) 158.28 574 T (diskless client which has mounted /usr read/write after the diskless server exports /usr read/) 72 560 T (write.) 510.68 560 T (In general, please do not change pre/post/exit-ops to be no-ops when diskless installs are happen-) 72 534 T (ing. If you have a problem, consult with someone more familiar with the diskless architecture.) 72 520 T 2 16 Q (4.0 Other information) 72 479.33 T 1 12 Q (This \336le is available in the RCS tree as \322.../irix/cmd/diskless/diskless-arch.ps\323.) 72 452 T 2 14 Q (4.1 Revision history) 72 418.67 T 1 12 Q (Originally written by Michael Nishimoto \050December) 72 392 T (, 1993\051) 325.01 392 T 2 14 Q (4.2 Other documents) 72 358.67 T 1 12 Q (Diskless W) 72 332 T (orkstation Administration Guide \050document number: 007-0855-030\051) 126.01 332 T (\322Directory Structure Re-or) 72 306 T (ganization in IRIX 5.x\323 available in the RCS tree as \322.../irix/cmd/disk-) 200.34 306 T (less/dir) 72 292 T (-reor) 106.41 292 T (g.fm\323) 129.5 292 T FMENDPAGE %%EndPage: "7" 8 %%Trailer %%BoundingBox: 0 0 612 792 %%Pages: 7 1 %%DocumentFonts: Palatino-Roman %%+ Times-Roman %%+ Times-Bold %%+ Times-Italic %%+ Courier %%+ Courier-Bold