How to configure a Solaris server for PXE-Boot
Installation
Contents:
• Introduction
• Network PXE-Boot Installation
• Setting Up a JumpStart PXE Boot Server
• Setting Up a DHP Server !or PXE Boot
• "dding #ore Drivers
• D$D%D-&'# #edia Installation
• Using D$D%D-&'# #edia
• Using D$D%D IS' (iles
• &esources
Abstract: )*is engineering re!erence e+plains *ow to add new device driver ,inaries to
an install image !or t*e Solaris 'perating S-stem .'S/ so t*at a s-stem wit* a new device
will ,e a,le to install and support t*is device during0 and a!ter0 t*e installation process1
)*is document is intended !or s-stems administrators and developers wit* a working
,ackground in UNIX1 )*e target operating s-stem is t*e Solaris 23 32$34 release !or +54
plat!orms .also known as Update 2/ wit* t*e new ,oot arc*itecture and also 'penSolaris
.also known as Nevada/1 )*is *ow-to is not applica,le to prior versions o! t*e Solaris 23
'S !or +54 plat!orms .6" release 37$38/ or an- versions o! t*e Solaris 'S !or SP"&
plat!orms1
Introduction
"s more users *ave ,egun adopting t*e Solaris 23 'S !or +54 and +49 plat!orms0 t*ere
*as also ,een an increase in driver development and testing1 Some drivers can ,e added
post-install usage ,- means o! a !lopp- disk or USB mass storage device1 )*is is true o!
most network drivers1 I! t*e s-stem *as an optical drive0 -ou can install t*e Solaris 'S
!irst0 t*en add t*e new driver later a!ter t*e s-stem ,ootstraps itsel! up1
However0 as users *ave tried t*e Solaris 'S on more s-stems0 some wit* no optical drive
or !lopp- or USB port0 or s-stems t*at *ave a new t-pe o! storage controller0 a pro,lem
arises: How do -ou install t*e Solaris 'S onto a s-stem t*at re;uires a device t*at does
not *ave a driver ,inar- alread- in t*e Solaris installation media< In t*e case o! a storage
controller0 unless t*e installer media *as t*e driver a priori0 t*ere will ,e no wa- to persist
t*e installation packages to disk storage1 "nd in t*e case o! a ,lade-t-pe computer wit*
primaril- a network inter!ace and little ot*er I$'0 it ,ecomes impossi,le to per!orm a
network install o! t*e Solaris 'S onto t*at s-stem i! t*e initial Solaris instance t*at ,oots
t*e s-stem over t*e network does not *ave a driver !or t*e network inter!ace1
)*is *ow-to document t*ere!ore provides a concise set o! directions to insert new device
driver ,inaries into t*e installation media1 It covers two primar- installation met*ods:
o Network installation using PXE ,oot$DHP
o reating -our own ,oota,le IS' install Ds and D%Ds
)*e document applies onl- to t*e Solaris 23 2$34 .also known as Update 2/ and
'penSolaris .Nevada/ versions t*at use t*e new Solaris ,oot arc*itecture1 .See &esources
section !or more in!ormation1/
Network PXE-Boot Installation
Per*aps t*e !astest and most convenient wa- to install t*e Solaris 'S *as ,een over t*e
network !rom a Solaris JumpStart server1 #an- administrators w*o use t*e Solaris
Enterprise S-stem ma- alread- know a,out JumpStart tec*nolog- !or Sun servers and
workstations ,ased on SP"& tec*nolog-0 w*ic* *ave network-aware 'pen Boot P&'#
!irmware1 Sun populari=ed t*is install met*odolog- nearl- two decades ago1 )*e ,asic
process !ollows t*ese simple steps:
21 )*e netinstall client is con!igured to ,oot over t*e network1
>1 Just a!ter powering up0 t*e client uses B'')P to ,roadcast !or network in!ormation1
71 )*e B'')P server replies wit* network0 ,ootstrap0 and installation in!ormation1
91 )*e client con!igures its network and retrieves ,ootstrap and installation !iles1
In recent -ears0 t*e Et*ernet inter!ace *as also ,ecome a standard on virtuall- all Ps0
and man- come ena,led wit* Intel?s Pre-,oot E+ecution Environment .PXE/ !irmware
t*at e+tends t*e P BI'S wit* a similar a,ilit- to per!orm network ,ootstraps and
installations1 )*e process !or Ps is essentiall- identical0 t*e onl- di!!erence ,eing t*at
PXE ,oot leverages DHP to retrieve network0 ,ootstrap0 and installation in!ormation in
steps .>/ and .7/1 @*at man- Solaris s-stem administrators ma- not know0 *owever0 is
t*at Solaris JumpStart servers can also ,oot Ps wit* t*e addition o! DHP server
support !or t*e PXE ,oot clients1 "ll t*e re;uired server so!tware components come
,undled into t*e Solaris 'S alread- and t*is is Aust a matter o! con!iguration1
Setting Up a JumpStart PXE Boot Server
)*e Solaris install media usuall- includes a utilit- to install t*e ,asic JumpStart server1
Inserting optical media into a running Solaris s-stem will usuall- prompt t*e volume
manager to mount t*e media at /cdrom1 @*en -ou c*ange t*e director- to t*e !ollowing
-ou s*ould see t*e JumpStart installation script setup_install_server(1m)1
# cd /cdrom/sol_10_106_x86/Solaris_10/Tools
Usage is straig*t!orward1 Just speci!- t*e command and a target installation director-:
# ./setup_install_server /export/install
)*e user can c*ange t*e target director-0 /export/install0 to anot*er location as needed1
&unning t*is command re;uires a,out 7 or more 6,-tes o! disk space on t*e slice t*at
*olds t*e target director-1 )*e command ma- also take an *our or more as all t*e
components are copied to t*e target director- !rom optical media1 )*e time depends on
t*e speed o! t*e optical drive0 and t*e speed o! t*e main s-stem1
Users w*o onl- *ave a D-&'# drive and no support !or D%Ds will ,e installing !rom
multiple disks1 )*e initial installation is t*e same !or D2 as !or t*e D%D1 "!ter t*e
initial setup_install_server0 -ou can e+it out o! t*e current director- ,ack to t*e /root
director-0 and t*en eAect t*e !irst D !rom t*e !ile manager window0 and t*en insert
additional Ds1 'n eac* D0 c*ange directories ,ack into t*e
/cdrom/sol_10_106_*/Solaris10/Tools/ director- and run t*e add_to_install_server.2#/
command wit* t*e same target director- -ou started wit*1
@*en t*e install server setup completes0 it is important to e+port t*e installation !ile
s-stem to t*e network1 )o do t*is0 edit t*e /etc/dfs/dfstab !ile and insert a line t*at looks
like t*e !ollowing:
share -F nfs -o ro,anon=0 -d "jumpstart dir" /export/install
Bou can edit /export/install to w*erever -ou unpacked t*e install server1 "!ter saving
and e+iting t*e editor0 -ou s*ould t*en ena,le or restart t*e N(S server ,- running t*e
!ollowing:
# svcadm enable svc:/network/nfs/server ; shareall
(or completeness0 -ou can create a director-:
# mkdir /export/install/jumpstart
)*en cop- t*e sample jumpstart_sample !iles to t*at director-:
# cp -r /export/install/Solaris_10/Misc/jumpstart_sample/* \
/export/install/jumpstart
Setting Up a !CP Server "or PXE Boot
In t*e previous section0 -ou completed most o! t*e tasks re;uired to trans!er JumpStart
installation packages to t*e server0 and make t*ese packages accessi,le over t*e network
t*roug* N(S1 However0 ,e!ore a P ,oot client can access t*ose packages0 it must ,oot
over t*e network and o,tain initial network and ,oot !iles to ,egin t*e installation1 (or
most network install environments0 t*e same JumpStart *ost also runs DHP and PXE
,oot server processes !or t*e ,oot clients1
@*en a PXE ,oot client starts0 it ,roadcasts !or network in!ormation and ,oot !iles1 )*e
network in!ormation is provided t*roug* DHP1 )*en t*e Solaris network ,oot program
.n,p/ and ot*er initiali=ation !iles suc* as t*e Solaris +541miniroot are trans!erred using
)()P0 and !inall-0 once t*e Solaris installer *as started0 t*e JumpStart installation
packages are trans!erred t*roug* N(S1
on!iguring t*e Solaris DHP re;uires t*e !ollowing:
o )*e DHP server s*ould ,e con!igured to recogni=e and respond to t*e PXE ,oot
client1
o "ll PXE ,oot directories s*ould ,e created0 and appropriate !iles t*at will ,e needed
,- t*e client during ,ootup s*ould ,e copied or linked1
I! a DHP server is alread- con!igured0 -ou can uncon!igure it using t*e dhcpconfig.2#/
command wit* t*e uncon!igure !lag0 !or e+ample:
# dhcpconfig -Ux
)*e server -ou con!igure *ere will answer promiscuousl- !or all PXE ,oot re;uests !or
t*e Solaris 'S on +54 plat!orms and works well on an isolated su,net w*ere it is t*e onl-
install service1 However0 i! t*is DHP service must coe+ist wit* ot*ers0 or re;uires
speci!ic con!igurations0 customi=ations are availa,le to answer re;uests onl- !rom
speci!ic #" addresses or !or speci!ic networks1 Please see t*e Solaris DHP
"dministration 6uide !or more in!ormation1
)*e !ollowing is a script t*at s*ould simpli!- most generic DHP con!igurations !or
PXE:
#!/bin/sh
dhcpconfig -D -r SUNWbinfiles -p /var/dhcp
dhcpconfig -N net!or"# -m netmas"# -t routerip#
dhtadm -$ -s Sroot%pt -d &'endor(SUNW)i*+pc,-,$S.//,-,0&
dhtadm -$ -s Sroot/12 -d &'endor(SUNW)i*+pc,3,/1,-,-&
dhtadm -$ -s SrootN4 -d &'endor(SUNW)i*+pc,5,$S.//,-,0&
dhtadm -$ -s Sroot167 -d &'endor(SUNW)i*+pc,2,$S.//,-,0&
dhtadm -$ -s Ss!ap/12 -d &'endor(SUNW)i*+pc,8,/1,-,0&
dhtadm -$ -s Ss!ap167 -d &'endor(SUNW)i*+pc,+,$S.//,-,0&
dhtadm -$ -s Sboot9/: -d &'endor(SUNW)i*+pc,;,$S.//,-,0&
dhtadm -$ -s St< -d &'endor(SUNW)i*+pc,*,$S.//,-,0&
dhtadm -$ -s Sboot=S -d &'endor(SUNW)i*+pc,>,NU4?@=,3,-&
dhtadm -$ -s Sinst/12 -d &'endor(SUNW)i*+pc,-0,/1,-,-&
dhtadm -$ -s SinstN4 -d &'endor(SUNW)i*+pc,--,$S.//,-,0&
dhtadm -$ -s Sinst167 -d &'endor(SUNW)i*+pc,-3,$S.//,-,0&
dhtadm -$ -s SsAsid.9 -d &'endor(SUNW)i*+pc,-5,$S.//,-,0&
dhtadm -$ -s SBumps.9 -d &'endor(SUNW)i*+pc,-2,$S.//,-,0&
dhtadm -$ -s Sterm -d &'endor(SUNW)i*+pc,-8,$S.//,-,0&
dhtadm -$ -s SbootU=/ -d &'endor(SUNW)i*+pc,-+,$S.//,-,0&
dhtadm -$ -m
[email protected]$rchD00000DUND/D00300- -d
&D?oot9ile(Enbp)SUNW)i*+pcED?ootSrv$(serverip#D&
dhtadm -$ -m SUNW)i*+pc -d F
&DSinstN4(Eserver#EDSinst/12(serverip#DF
Sinst167(E/export/installEDSrootN4(Eserver#EDF
Sroot/12(serverip#DF
Sroot167(E/export/install/Solaris_-0/6ools/?ootEDF
SBumps.9(Eserver#D/export/install/BumpstartEDF
SsAsid.9(Eserver#D/export/install/BumpstartED&
Near t*e top0 net!or"# s*ould ,e replaced wit* t*e network address !or -our su,net .!or
e+ample0 192.168.100.0/1 )*e <netmask> is -our netmask .!or e+ample0 255.255.255.0/0 and
t*e <routerip> is t*e IP address o! -our router .!or e+ample0 192.168.100.1/1 'n t*e last
line o! t*e script0 replace <server> wit* t*e *ost name o! t*e install server0 w*ic* also is
t*e name o! t*e dhtadm macro -ou name on t*e last line previousl-0 and also replace
<serverip> wit* t*e IP address o! t*e install server1 ut and paste t*e script into a !ile and
run it as t*e super-user1
"lso0 edit t*e /etc/hosts !ile and add one or more client entries wit* an IP address1 (or
two clients0 do t*e !ollowing:
192.168.100.101 pxeclient1
192.168.100.102 pxeclient2
Now add t*ose to t*e DHP server client ta,le using t*e pntadm.2#/ command:
# pntadm -A 192.168.100.101 -m <server> -h pxeclient1 <network>
# pntadm -A 192.168.100.102 -m <server> -h pxeclient2 <network>
Note t*at <server> and <network> *ave t*e same meaning !or t*e server and network
macros speci!ied ,- t*e last line o! t*e PXE con!iguration script a,ove1 )*en send a -HUP
signal to t*e in.dhcp process ,- issuing t*e !ollowing command:
# pkill -HUP in.dhcpd
)*is signal will !orce t*e DHP server to reread its con!iguration !iles1 )*is s*ould take
care o! t*e !irst step o! DHP server con!iguration1
)o con!igure t*e ,oot !iles !or )()P0 t*e Solaris 'S provides a command to simpli!- t*e
creation and cop-ing o! all t*e !iles to t*e /tftpboot director-1 Simpl- run t*e command
!rom t*e /export/install/images/Solaris_10/Tools director-:
# ./add_install_client -d SUNW.i86pc i86pc
Bou s*ould now ,e a,le to test -our P client and ,oot PXE on t*e Solaris 'S1
#dding $ore rivers
)*ere are two steps to adding drivers !or PXE ,oot clients1 #ost critical to add are
usuall- t*e storage controller and network inter!ace drivers as e+plained previousl-1 )*e
!irst step is to insert t*ese drivers into t*e +541miniroot t*at loads t*roug* )()P1
)*e !ile0 i! -ou !ollow t*e a!orementioned directions0 would ,e located at t*e !ollowing:
/export/install/boot/x86.miniroot
But t*e !ile could ,e located at /export/<solaris_root_install_dir>/boot/x86.miniroot 0
w*ere <solaris_root_install_dir> is t*e top-level director- name under /export w*ere
-ou unpacked t*e install media1 )o do t*e !irst step0 unpacking t*e miniroot0 -ou can run
t*e root_archive.2#/ command on t*e install server1 )*is is onl- availa,le on t*e Solaris
23 2$34 release !or +54 plat!orms and later1 *ange directories to t*e
/export/install/boot or w*erever t*e install server setup put t*e packages0 and t*en
unpack t*e miniroot using t*e !ollowing command:
# /boot/solaris/bin/root_archive unpack ./x86.miniroot ./unpacked
'nce t*e miniroot is unpacked0 cop- t*e 7>-,it driver ,inar- and driver.conf !ile to t*e
/unpacked/kernel/drv director-0 and t*en run t*e /usr/sbin/add_drv command wit* t*e
rig*t PI IDs and t*e rig*t permissions against t*e unpacked miniroot director-1 (or
e+ample:
# add_drv -b <fullpath-to-unpacked> -n -v -m '* 0600 root sys' -i "<device ids>"
<mydrivername>
Note t*at <mydrivername> is t*e name o! t*e ,inar- Aust copied to t*e
./unpacked/kernel/drv director-0 and t*e <device ids> is a string list o! PI device IDs
t*at mig*t look like t*e !ollowing:
'"pci1a44,9043" "pci1a44,9065" "pci1a44,9106" "pci1a44,9053"'
"lso0 t*e -b !lag allows -ou to set t*e root pat* w*ere -ou appl- t*e driver add operation0
w*ic* is pointing to t*e unpacked miniroot1 Note t*at +541miniroot is 7>-,it and onl-
supports 7>-,it drivers1
)*e last step is to repack t*e miniroot using t*e same command0 ,ut speci!-ing pack as
t*e ke-word1 Be!ore -ou do t*at0 -ou can0 and pro,a,l- s*ould0 make a cop- o! t*e
original +541miniroot in t*e same ,oot director-1 (or e+ample:
# cp ./x86.miniroot ./x86.miniroot.orig
)*en run t*e root_archive.2#/ command:
# /boot/solaris/bin/root_archive pack ./x86.miniroot ./unpacked
I! t*e PXE ,oot server was working ,e!ore0 t*e client s*ould ,e a,le to ,oot and load t*e
+541miniroot and complete a normal installation o! t*e Solaris 23 2$34 release !or +54
plat!orms1 )*e installation will ,ring up a menu o! install c*oicesC t*e de!ault is to
per!orm an interactive install1 @*en doing an interactive install0 t*e installer o!!ers a
c*oice o! auto-re,oot or manual re,oot1 *oose t*e manual re,oot0 ,ecause w*ile t*e
previous steps get t*e driver into t*e miniroot0 t*e- do not do an-t*ing to install t*e
missing network driver onto t*e !inal client s-stem1 Select manual re,oot so -ou *ave a
c*ance to cop- over t*e drivers and run t*e add_drv command on t*e !inal client disk
image ,e!ore re,ooting1 't*erwise0 t*e newl- installed s-stem still will not *ave a
network driver1
Now w*ere do -ou put t*e driver ,inaries so t*e install client can cop- t*em over<
Bou could cop- t*e one !rom t*e miniroot?s /"ernel/drv t*at is alread- t*ere1 )*is works
i! t*e s-stem is onl- 7>-,it and will onl- run in t*is mode1 However0 i! t*e s-stem is +49
capa,le0 -ou did not cop- t*e 49-,it driver ,inar- into t*e miniroot?s /kernel/drv/amd64
director- and t*at is ,ecause t*e miniroot is onl- 7>-,it and does not *ave a
./kernel/drv/amd64 director-1 Bou could *ave created t*at director- in earlier steps0 ,ut
t*at is not necessar-1 During t*e Solaris PXE ,oot installation0 t*e client mounts t*e
install server directories t*roug* N(S1 )*us it is eas- enoug*0 ,e!ore re,ooting0 to simpl-
put t*e driver !iles in t*e install server?s e+ported PXE ,oot director-0 especiall- inside
t*e jumpstart director- w*ere t*e client alread- mounts t*em during t*e install1 Bou can
Aust put a ./jumpstart/drv su,director- inside t*e server?s e+ported directories1 )*is will
,e usuall- mounted on t*e install client as /tmp/install_config1 I! -ou cannot !ind it0 use
t*e df.2#/ command to see a list o! !ile s-stems and t*eir mount points1
C%&-'($ $edia Installation
#aking ,oota,le D or D%D install media wit* additional drivers is similar in process to
altering t*e +541miniroot !or network installation1 #ost o! t*e additional work is in
mounting t*e D or D%D0 cop-ing over t*e entire disk image contents to anot*er
director-0 per!orming t*e same driver insertion operations on t*e cop- o! t*e install
image0 and t*en repackaging t*e !iles and creating a ,oota,le IS' image t*at can ,e
,urned onto D or D%D media1
Using C%&-'($ $edia
I! D%D or D-&'# media are present alread-0 t*en it s*ould ,e straig*t!orward to cop-
t*e !iles over1 Simpl- insert t*e disk into t*e drive0 and t*en at t*e command line do t*e
!ollowing:
# cd /cdrom/sol_10_106/x86; find . -depth -print|cpio -vpdm <targetdir>
Note t*at t*e <targetdir> is t*e !ull pat* to t*e target-working director-1 'nce copied
over0 t*e miniroot is usuall- located in <targetdir>/boot/x86.miniroot1 &epeat t*e
previous steps in t*e section titled D"dding #ore Drivers1D
@*en done0 use t*e mkisofs(8) command to repackage t*e !iles into a ,oota,le IS'
image to ,e ,urned1 Speci!icall-:
# mkisofs -o <outfilename.iso> -b boot/grub/stage2_eltorito \
-c .catalog -no-emul-boot -boot-load-size 4 \
-boot-info-table -relaxed-filenames -N -L -l -r -J \
-d -D -V <volname> <targetdir>
&eplace t*e <outfilename.iso> wit* t*e !ile name -ou want output0 and <volname> wit* a
volume name .!or e+ample0 MYS10VOL/1 <targetdir> is t*e same as !rom w*ere t*e original
!iles were copied1
Using C%& IS( )iles
I! -ou do not *ave media0 ,ut *ave downloaded an IS' !ile0 -ou do not need to ,urn t*e
media !irst and t*en mount it1 )*e Solaris 'S o!!ers a loop,ack !ile s-stem mounting
command0 lofiadm.2#/0 t*at allows users to mount IS' images1 Simpl- use t*e !ollowing
command:
# /usr/sbin/lofiadm -a isoimagepath#
Note t*at isoimagepath# is t*e !ull pat* to t*e downloaded installation IS' image1 '!ten0
t*e lofiadm.2#/ command will return t*e ,lock device location as /dev/lofi/1 or
/dev/lofi/2 or /dev/lofi/ depending on t*e num,er o! loop,ack !ile s-stems alread-
mounted1 )o mount t*is as a reada,le !ile s-stem0 use t*e mount.2#/ command:
# mount -F hsfs /dev/lofi/1 /mnt
)*e !iles are now availa,le Aust as in t*e section titled DUsing D$D%D-&'# #edia0D
e+cept at t*e /mnt mount point1 &epeat t*e same process !or inserting drivers into t*e
install image as in D"dding #ore DriversD and repackage as a ,urna,le and ,oota,le IS'
image using t*e same command in t*e section titled DUsing D$D%D-&'# #edia1D
@*en complete wit* t*e loop,ack !ile s-stem mount0 simpl- run t*e umount.2#/ and
lofiadm.2#/ commands to umount:
# umount /mnt; lofiadm -d /dev/lofi/1
&eplace t*e /mnt and /dev/lofi/1 wit* -our mount points in t*e previous command1
'esources
(or more in!ormation0 *ere are a num,er o! use!ul links:
o Solaris DHP "dministration 6uide
o Setting up PXE net,oot !or +54 clients .Dan #ick?s PXE Boot 6uide/
o Jan SetAe-Eilers? @e,log
o 6&UB and t*e Solaris 23 2$34 'S: )*e New Bootloader !or +54 Plat!orms .a primer
,- S*udong E*u and Jan SetAe-Eilers/
Source
*ttp:$$www1sun1com$,igadmin$!eatures$articles$deviceFdriverFinstall1Asp
#dditional *elp on t*e topic:
*ttp:$$osdir1com$ml$solaris1solaris+54$>338-3>$msg327291*tml