Solaris 10 8/07 Installation Guide: Network-Based Installations

Creating DHCP Options and Macros for Solaris Installation Parameters

When you add clients with the add_install_client -d script on the install server, the script reports DHCP configuration information to standard output. This information can be used when you create the options and macros that are needed to pass network installation information to clients.

You can customize the options and macros in your DHCP service to perform the following types of installations.

For more information on setting up clients to use a DHCP server for a network installation, see the following procedures.

DHCP Options and Macro Values

To install DHCP clients from the network, you must create Vendor category options to pass information that is needed to install the Solaris OS. The following tables describe common DHCP options that you can use to install a DHCP client.

For detailed information on DHCP options, see DHCP Option Information in System Administration Guide: IP Services.

Table 3–3 Values for Standard DHCP Options

Option Name 

Code 

Data Type 

Granularity 

Maximum 

Description 

BootFile

N/A 

ASCII 

Path to the client's boot file 

BootSrvA

N/A 

IP address 

IP address of boot server 

DNSdmain

15 

ASCII 

DNS domain name 

DNSserv

IP address 

List of DNS name servers 

NISdmain

40 

ASCII 

NIS domain name 

NISservs

41 

IP address 

IP address of NIS server 

NIS+dom

64 

ASCII 

NIS+ domain name 

NIS+serv

65 

IP address 

IP address of NIS+ server 

Router

IP address 

IP addresses of network routers 

Table 3–4 Values for Creating Vendor Category Options for Solaris Clients

Name 

Code 

Data Type 

Granularity 

Maximum 

Vendor Client Classes * 

Description 

The following Vendor category options are required to enable a DHCP server to support Solaris installation clients. The options are used in the Solaris client's startup scripts.


Note –

Vendor client classes that are listed here are examples only. You should specify client classes that indicate the actual clients in your network that you need to install from the network.


SrootIP4

IP address 

SUNW.Sun-Blade-1000, SUNW.Sun-Fire-880, SUNW.i86pc

IP address of root server 

SrootNM

ASCII text 

SUNW.Sun-Blade-1000, SUNW.Sun-Fire-880, SUNW.i86pc

Host name of root server 

SrootPTH

ASCII text 

SUNW.Sun-Blade-1000, SUNW.Sun-Fire-880, SUNW.i86pc

Path to the client's root directory on the root server 

SinstIP4

10 

IP address 

SUNW.Sun-Blade-1000, SUNW.Sun-Fire-880, SUNW.i86pc

IP address of JumpStart install server 

SinstNM

11 

ASCII text 

SUNW.Sun-Blade-1000, SUNW.Sun-Fire-880, SUNW.i86pc

Host name of install server 

SinstPTH

12 

ASCII text 

SUNW.Sun-Blade-1000, SUNW.Sun-Fire-880, SUNW.i86pc

Path to installation image on install server 

The following options can be used by the client startup scripts, but are not required by the scripts.


Note –

Vendor client classes that are listed here are examples only. You should specify client classes that indicate the actual clients in your network that you need to install from the network.


SrootOpt

ASCII text 

SUNW.Sun-Blade-1000, SUNW.Sun-Fire-880, SUNW.i86pc

NFS mount options for the client's root file system 

SbootFIL

ASCII text 

SUNW.Sun-Blade-1000, SUNW.Sun-Fire-880, SUNW.i86pc

Path to the client's boot file 

SbootRS

NUMBER 

SUNW.Sun-Blade-1000, SUNW.Sun-Fire-880, SUNW.i86pc

NFS read size used by standalone boot program when loading the kernel 

SsysidCF

13 

ASCII text 

SUNW.Sun-Blade-1000, SUNW.Sun-Fire-880, SUNW.i86pc

Path to sysidcfg file, in the format server:/path

SjumpsCF

14 

ASCII text 

SUNW.Sun-Blade-1000, SUNW.Sun-Fire-880, SUNW.i86pc

Path to JumpStart configuration file in the format server:/path

SbootURI

16 

ASCII text 

SUNW.Sun-Blade-1000, SUNW.Sun-Fire-880, SUNW.i86pc

Path to the standalone boot file or path to the WAN boot file. For the standalone boot file, use the following format. 

tftp://inetboot.sun4u

For the WAN boot file, the format is 

http://host.domain/path-to-file

This option can be used to override BootFile and siaddr settings in order to retrieve a standalone boot file. Supported protocols: tftp (inetboot), http (wanboot). For example, use the following format. tftp://inetboot.sun4u

SHTTPproxy

17 

ASCII text 

SUNW.Sun-Blade-1000, SUNW.Sun-Fire-880, SUNW.i86pc

IP address and port number of the proxy server that is used on your network. This option is needed only when a client is booting across a WAN, and the local network uses a proxy server. For example, use the following format: 198.162.10.5:8080

The following options are not currently used by the Solaris client startup scripts. You can use them only if you edit the startup scripts.


Note –

Vendor client classes that are listed here are examples only. You should specify client classes that indicate the actual clients in your network that you need to install from the network.


SswapIP4

IP address 

SUNW.Sun-Blade-1000, SUNW.Sun-Fire-880, SUNW.i86pc

IP address of swap server 

SswapPTH

ASCII text 

SUNW.Sun-Blade-1000, SUNW.Sun-Fire-880, SUNW.i86pc

Path to the client's swap file on the swap server 

Stz

ASCII text 

SUNW.Sun-Blade-1000, SUNW.Sun-Fire-880, SUNW.i86pc

Time zone for client 

Sterm

15 

ASCII text 

SUNW.Sun-Blade-1000, SUNW.Sun-Fire-880, SUNW.i86pc

Terminal type  

When you have created the options, you can create macros that include those options. The following table lists sample macros you can create to support Solaris installation for clients.

Table 3–5 Sample Macros to Support Network Installation Clients

Macro Name 

Contains These Options and Macros 

Solaris

SrootIP4, SrootNM, SinstIP4, SinstNM

sparc

SrootPTH, SinstPTH

sun4u

Solaris and sparc macros

sun4v

Solaris and sparc macros

i86pc

Solaris macro, SrootPTH, SinstPTH, SbootFIL

SUNW.i86pc

i86pc macro


Note –

The SUNW.i86pc vendor client class is only valid for the Solaris 10 3/05 release and compatible versions.


SUNW.Sun-Blade-1000

sun4u macro, SbootFIL

SUNW.Sun-Fire-880

sun4u macro, SbootFIL

PXEClient:Arch:00000:UNDI:002001

BootSrvA, BootFile

xxx.xxx.xxx.xxx network address macros

BootSrvA option could be added to existing network address macros. The value of BootSrvA should indicate the tftboot server.

01client-MAC-address client-specific macros (for example, 010007E9044ABF)

BootSrvA, BootFile

The macro names that are listed in the previous table match the Vendor client classes of the clients that must install from the network. These names are examples of clients you might have on your network. See Working With DHCP Options (Task Map) in System Administration Guide: IP Services for information about determining a client's vendor client class.

You can create these options and macros by using the following methods.

Note that the total size of the vendor options that are provided to a particular client must not exceed 255 bytes, including the option codes and length information. This is a limitation of the current Solaris DHCP protocol implementation. Generally, you should pass the minimum amount of vendor information needed. You should use short path names in options that require path names. If you create symbolic links to long paths, you can use the shorter link names.

Using DHCP Manager to Create Install Options and Macros

You can use DHCP Manager to create the options that are listed in Table 3–4 and the macros that are listed in Table 3–5.

ProcedureHow to Create Options to Support Solaris Installation (DHCP Manager)

Before You Begin

Perform the following tasks before you create DHCP macros for your installation.

  1. Become superuser or assume an equivalent role on the DHCP server system.

  2. Start the DHCP Manager.


    # /usr/sadm/admin/bin/dhcpmgr &
    

    The DHCP Manager window is displayed.

  3. Select the Options tab in DHCP Manager.

  4. Choose Create from the Edit menu.

    The Create Option panel opens.

  5. Type the option name for the first option, then type values appropriate for that option.

    Use the output of the add_install_client command , Table 3–3, and Table 3–4 to check the option names and values for options you must create. Notice that the vendor client classes are only suggested values. You should create classes to indicate the actual client types that need to obtain Solaris installation parameters from the DHCP service. See Working With DHCP Options (Task Map) in System Administration Guide: IP Services for information about how to determine a client's vendor client class.

  6. Click OK when you have entered all the values.

  7. In the Options tab, select the option you just created.

  8. Select Duplicate from the Edit menu.

    The Duplicate Option panel opens.

  9. Type the name of another option, then modify other values appropriately.

    The values for code, data type, granularity, and maximum are most likely to need modification. See Table 3–3 and Table 3–4 for the values.

  10. Repeat Step 7 through Step 9 until you have created all the options.

    You can now create macros to pass the options to network installation clients, as explained in the following procedure.


    Note –

    You do not need to add these options to a Solaris client's /etc/dhcp/inittab file because they are already included in that file.


ProcedureHow to Create Macros to Support Solaris Installation (DHCP Manager)

Before You Begin

Perform the following tasks before you create DHCP macros for your installation.

  1. Select the Macros tab in DHCP Manager.

  2. Choose Create from the Edit menu.

    The Create Macro panel opens.

  3. Type the name of a macro.

    See Table 3–5 for macro names you might use.

  4. Click the Select button.

    The Select Option panel opens.

  5. Select Vendor in the Category list.

    The Vendor options you created are listed.

  6. Select an option you want to add to the macro and click OK.

  7. Type a value for the option.

    See Table 3–3 and Table 3–4 for the option's data type and refer to the information that add_install_client -d reports.

  8. Repeat Step 6 through Step 7 for each option you want to include.

    To include another macro, type Include as the option name and type the macro name as the option value.

  9. Click OK when the macro is complete.

Continuing the Installation

If you plan to use DHCP in an installation over the network, you need to set up an installation server and add the system as an installation client. For more information, see Chapter 4, Installing From the Network (Overview).

If you plan to use DHCP in a WAN boot installation, you need to perform additional tasks. For more information, see Chapter 9, WAN Boot (Overview).

If you plan to use DHCP in a custom JumpStart installation, you need to create a profile and a rules.ok file. For more information, see Chapter 2, Custom JumpStart (Overview), in Solaris 10 8/07 Installation Guide: Custom JumpStart and Advanced Installations.

See Also

For more information about DHCP, see Part III, DHCP, in System Administration Guide: IP Services.

Writing a Script That Uses dhtadm to Create Options and Macros

You can create a Korn shell script by adapting the example in Example 3–1 to create all the options listed in Table 3–3 and Table 3–4 and some useful macros. Be sure to change all IP addresses and values contained in quotes to the correct IP addresses, server names, and paths for your network. You should also edit the Vendor= key to indicate the class of clients you have. Use the information that add_install_client -d reports to obtain the data that you need to adapt the script.


Example 3–1 Sample Script to Support Network Installation

# Load the Solaris vendor specific options. We'll start out supporting 
# the Sun-Blade-1000, Sun-Fire-880, and i86 platforms. Note that the 
# SUNW.i86pc option only applies for the Solaris 10 3/05 release. 
# Changing -A to -M would replace the current values, rather than add them.
dhtadm -A -s SrootOpt -d \
'Vendor=SUNW.Sun-Blade-1000 SUNW.Sun-Fire-880 SUNW.i86pc,1,ASCII,1,0'
dhtadm -A -s SrootIP4 -d \
'Vendor=SUNW.Sun-Blade-1000 SUNW.Sun-Fire-880 SUNW.i86pc,2,IP,1,1'
dhtadm -A -s SrootNM -d \
'Vendor=SUNW.Sun-Blade-1000 SUNW.Sun-Fire-880 SUNW.i86pc,3,ASCII,1,0'
dhtadm -A -s SrootPTH -d \
'Vendor=SUNW.Sun-Blade-1000 SUNW.Sun-Fire-880 SUNW.i86pc,4,ASCII,1,0'
dhtadm -A -s SswapIP4 -d \
'Vendor=SUNW.Sun-Blade-1000 SUNW.Sun-Fire-880 SUNW.i86pc,5,IP,1,0'
dhtadm -A -s SswapPTH -d \
'Vendor=SUNW.Sun-Blade-1000 SUNW.Sun-Fire-880 SUNW.i86pc,6,ASCII,1,0'
dhtadm -A -s SbootFIL -d \
'Vendor=SUNW.Sun-Blade-1000 SUNW.Sun-Fire-880 SUNW.i86pc,7,ASCII,1,0'
dhtadm -A -s Stz -d \
'Vendor=SUNW.Sun-Blade-1000 SUNW.Sun-Fire-880 SUNW.i86pc,8,ASCII,1,0'
dhtadm -A -s SbootRS -d \
'Vendor=SUNW.Sun-Blade-1000 SUNW.Sun-Fire-880 SUNW.i86pc,9,NUMBER,2,1'
dhtadm -A -s SinstIP4 -d \
'Vendor=SUNW.Sun-Blade-1000 SUNW.Sun-Fire-880 SUNW.i86pc,10,IP,1,1'
dhtadm -A -s SinstNM -d \
'Vendor=SUNW.Sun-Blade-1000 SUNW.Sun-Fire-880 SUNW.i86pc,11,ASCII,1,0'
dhtadm -A -s SinstPTH -d \
'Vendor=SUNW.Sun-Blade-1000 SUNW.Sun-Fire-880 SUNW.i86pc,12,ASCII,1,0'
dhtadm -A -s SsysidCF -d \
'Vendor=SUNW.Sun-Blade-1000 SUNW.Sun-Fire-880 SUNW.i86pc,13,ASCII,1,0'
dhtadm -A -s SjumpsCF -d \
'Vendor=SUNW.Sun-Blade-1000 SUNW.Sun-Fire-880 SUNW.i86pc,14,ASCII,1,0'
dhtadm -A -s Sterm -d \
'Vendor=SUNW.Sun-Blade-1000 SUNW.Sun-Fire-880 SUNW.i86pc,15,ASCII,1,0'
dhtadm -A -s SbootURI -d \
'Vendor=SUNW.Sun-Blade-1000 SUNW.Sun-Fire-880 SUNW.i86pc,16,ASCII,1,0'
dhtadm -A -s SHTTPproxy -d \
'Vendor=SUNW.Sun-Blade-1000 SUNW.Sun-Fire-880 SUNW.i86pc,17,ASCII,1,0'
# Load some useful Macro definitions.
# Define all Solaris-generic options under this macro named Solaris.
dhtadm -A -m Solaris -d \
':SrootIP4=10.21.0.2:SrootNM="blue2":SinstIP4=10.21.0.2:SinstNM="red5":'
# Define all sparc-platform specific options under this macro named sparc.
dhtadm -A -m sparc -d \
':SrootPTH="/export/sparc/root":SinstPTH="/export/sparc/install":'
# Define all sun4u architecture-specific options under this macro named sun4u. 
#  (Includes Solaris and sparc macros.)
dhtadm -A -m sun4u -d ':Include=Solaris:Include=sparc:'
# Solaris on IA32-platform-specific parameters are under this macro named i86pc.
# Note that this macro applies only for the Solaris 10 3/05 release.
dhtadm -A -m i86pc -d \
':Include=Solaris:SrootPTH="/export/i86pc/root":SinstPTH="/export/i86pc/install"\
:SbootFIL="/platform/i86pc/kernel/unix":'
# Solaris on IA32 machines are identified by the "SUNW.i86pc" class. All
# clients identifying themselves as members of this class will see these
# parameters in the macro called SUNW.i86pc, which includes the i86pc macro.
# Note that this class only applies for the Solaris 10 3/05 release.
dhtadm -A -m SUNW.i86pc -d ':Include=i86pc:'
# Sun-Blade-1000 platforms identify themselves as part of the 
# "SUNW.Sun-Blade-1000" class.
# All clients identifying themselves as members of this class
#  will see these parameters.
dhtadm -A -m SUNW.Sun-Blade-1000 -d \
':SbootFIL="/platform/sun4u/kernel/sparcv9/unix":\
Include=sun4u:'
# Sun-Fire-880 platforms identify themselves as part of the "SUNW.Sun-Fire-880" class.
# All clients identifying themselves as members of this class will see these parameters.
dhtadm -A -m SUNW.Sun-Fire-880 -d \
':SbootFIL="/platform/sun4u/kernel/sparcv9/unix":Include=sun4u:'
# Add our boot server IP to each of the network macros for our topology served by our
# DHCP server. Our boot server happens to be the same machine running our DHCP server.
dhtadm -M -m 10.20.64.64 -e BootSrvA=10.21.0.2
dhtadm -M -m 10.20.64.0 -e BootSrvA=10.21.0.2
dhtadm -M -m 10.20.64.128 -e BootSrvA=10.21.0.2
dhtadm -M -m 10.21.0.0 -e BootSrvA=10.21.0.2
dhtadm -M -m 10.22.0.0	-e BootSrvA=10.21.0.2
# Make sure we return host names to our clients.
dhtadm -M -m DHCP-servername -e Hostname=_NULL_VALUE_
# Create a macro for PXE clients that want to boot from our boot server.
# Note that this macro applies for the Solaris 10 3/05 release.
dhtadm -A -m PXEClient:Arch:00000:UNDI:002001 -d \
:BootFile=nbp.i86pc:BootSrvA=10.21.0.2:
# Create a macro for PXE clients that want to boot from our boot server.
# Note that this macro applies for the Solaris 10 2/06 release.
dhtadm -A -m PXEClient:Arch:00000:UNDI:002001 -d \
:BootFile=i86pc:BootSrvA=10.21.0.2:
# Create a macro for the x86 based client with the Ethernet address 00:07:e9:04:4a:bf 
# to install from the network by using PXE.
dhtadm -A -m 010007E9044ABF -d :BootFile=010007E9044ABF:BootSrvA=10.21.0.2:
# The client with this MAC address is a diskless client. Override the root settings
# which at the network scope setup for Install with our client's root directory.
dhtadm -A -m 0800201AC25E -d \
':SrootIP4=10.23.128.2:SrootNM="orange-svr-2":SrootPTH="/export/root/10.23.128.12":'

As superuser, execute dhtadm in batch mode. Specify the name of the script to add the options and macros to your dhcptab. For example, if your script is named netinstalloptions, type the following command.


# dhtadm -B netinstalloptions

Clients that have vendor client classes that are listed in the Vendor= string can now use DHCP to install over the network.

For more information about how to use the dhtadm command, see dhtadm(1M). For more information about the dhcptab file, see dhcptab(4).