This chapter provides information and procedures for creating your own custom rule and probe keywords.
The name of this product is Solaris 8, but code and path or package path names might appear as Solaris_2.8 or SunOS_5.8. Always follow the code or path as it is written.
To understand what a probe keyword is, you first need to recall what a rule keyword is: a predefined lexical unit or word that describes a general system attribute, such as host name (hostname) or memory size (memsize). Rule keywords and their associated values enable you to match a system that has the same attribute to a profile, which defines how the Solaris software is to be installed on each system in the group.
Custom JumpStart environment variables, which you use in begin and finish scripts, are set on demand. For example, information about which operating system is already installed on a system is only available (in SI_INSTALLED) after the installed rule keyword is used.
In some situations, however, you might need to extract this same information in a begin or finish script for a purpose other than to match a system and run a profile. Probe keywords provide the solution. They extract this same attribute information without your having to set up a matching condition and run a profile.
Table 8-1 describes each rule keyword and its equivalent probe keyword.
Always place probe keywords at or near the beginning of the rules file.
Rule Keyword |
Equivalent Probe Keyword |
Description of Probe Keyword |
---|---|---|
None |
|
|
Determines the kernel architecture (i386 or SPARC) and sets SI_ARCH. |
||
Returns the size of a system's disks (in Mbytes) in kernel probe order (c0t3d0s0, c0t3d0s1, c0t4d0s0) and sets SI_DISKLIST, SI_DISKSIZES, SI_NUMDISKS, and SI_TOTALDISK. |
||
Returns a system's NIS or NIS+ domain name or (if none) blank and sets SI_DOMAINNAME (this keyword actually returns the output of domainname(1M)). |
||
Returns a system's IP address (the first address listed in the output of ifconfig(1M) -a that is not lo0) and sets SI_HOSTADDRESS. |
||
Returns a system's host name (output from uname(1) -n) and sets SI_HOSTNAME. |
||
Returns the version name, Solaris_2.x or Solaris_x, of the Solaris operating environment that is installed on a system and sets SI_ROOTDISK and SI_INSTALLED. If JumpStart finds a Solaris release but is unable to determine the version, the version returned is SystemV. |
||
Returns a system's platform group (i86pc, sun4m, and sun4u, for example) and sets SI_KARCH. Appendix A, Platform Names and Groups contains a list of platform names. |
||
Returns the size of physical memory on a system (in Mbytes) and sets SI_MEMSIZE. |
||
Returns a system's platform name and sets SI_MODEL. Appendix A, Platform Names and Groups contains a list of platform names. |
||
Returns a system's network number, which JumpStart determines by performing a logical AND between the system's IP address and the subnet mask (which are extracted from the first address listed in the output of ifconfig(1M) -a that is not lo0); also sets SI_NETWORK. |
||
Returns the version and operating system name, Solaris_2.x or Solaris_x, of the Solaris operating environment that is found on a CD and sets SI_OSNAME. If JumpStart finds a Solaris release but is unable to determine the version, the version returned is SystemV. |
||
|
Returns the name and size (in Mbytes) of a system's root disk and sets SI_ROOTDISK. |
|
Returns the total disk space on a system (in Mbytes) and sets SI_TOTALDISK. The total disk space includes all the operational disks attached to a system. |
If the rule and probe keywords described in Table 6-3 and Table 8-1 are not enough for your needs, you can define your own custom rule or probe keywords by creating a custom_probes file.
The custom_probes file, which must be located in the same JumpStart directory as the rules file, is a Bourne shell script that contains two types of functions.
Table 8-2 Types of Functions You Define in custom_probes
Type of Function |
Description |
---|---|
Probe |
Gathers the information you want or does the actual work and sets a corresponding SI_ environment variable you define. Probe functions become probe keywords. |
Comparison |
Calls a corresponding probe function, compares the output of the probe function, and returns 0 if the keyword matches or 1 if the keyword doesn't match. Comparison functions become rule keywords. |
The custom_probes file can contain any valid Bourne shell command, variable, or algorithm.
You can define probe and comparison functions that require a single argument in the custom_probes file. When you subsequently use the corresponding custom probe keyword in the rules file, the argument after the keyword is interpreted (as $1).
When you subsequently use the corresponding custom rule keyword in the rules file, the argument is interpreted starting after the keyword and ending before the next && or begin script, whichever comes first.
Be owned by root
Be executable (have its permissions set to 755)
Contain at least one probe function and one corresponding comparison function
To improve clarity and organization, define all probe functions first, at the top of the file, followed by all comparison functions.
The name of a probe function must begin with probe_. The name of a comparison function must begin with cmp_.
Functions that begin with probe_ define new probe keywords (the function probe_tcx defines the new probe keyword tcx, for example). Functions that begin with cmp_ define new rule keywords (cmp_tcx defines the new rule keyword tcx, for example).
This custom_probes file contains a probe and comparison function that tests for the presence of a TCX graphics card.
You can find additional examples of probe and comparison functions in:
/usr/sbin/install.d/chkprobe on a system that has Solaris installed
/Solaris_8/Tools/Boot/usr/sbin/install.d/chkprobe on the CD labeled Solaris 8 Software 1 of 2 SPARC Platform Edition or Solaris 8 Software 1 of 2 Intel Platform Edition
#!/bin/sh # # custom_probe script to test for the presence of a TCX graphics card. # # # PROBE FUNCTIONS # probe_tcx() { SI_TCX=`modinfo | grep tcx | nawk '{print $6}'` export SI_TCX } # # COMPARISON FUNCTIONS # cmp_tcx() { probe_tcx if [ "X${SI_TCX}" = "X${1}" ]; then return 0 else return 1 fi } |
This example rules file shows the use of the probe keyword defined in the preceding example (tcx). If a TCX graphics card is installed and found in a system, profile_tcx is run. Otherwise, profile is run.
Always place probe keywords at or near the beginning of the rules file to ensure that they are read and run before other rule keywords (that may rely on them).
probe tcx tcx tcx - profile_tcx - any any - profile - |
Using a text editor of your choice, create a Bourne shell script text file named custom_probes.
In the custom_probes text file, define the probe and comparison functions you want.
You can define probe and comparison functions that require arguments in the custom_probes file. When you subsequently use the corresponding custom probe keyword in the rules file, the arguments after the keyword are interpreted in sequence (as $1, $2, and so on).
When you subsequently use the corresponding custom rule keyword in the rules file, the arguments are interpreted in sequence starting after the keyword and ending before the next && or begin script, whichever comes first.
Save the custom_probes file in the JumpStart directory (next to the rules file).
Ensure that root owns the rules file and that its permissions are set to 644.
Before you can use a profile, rules, and custom_probes file, you must run the check script to validate that these files are set up correctly. If all profiles, rules, and probe and comparison functions are correctly set up, the rules.ok and custom_probes.ok files are created. Table 8-3 describes what the check script does.
Table 8-3 What Happens When You Use check
Ensure that root owns the custom_probes.ok file and that its permissions are set to 755.
This is the syntax of the check script you use to test a custom_probes file:
$ ./check [[-p path -r file_name]] |
Argument |
Description |
---|---|
Validates the custom_probes file by using the check script from the Solaris 8 Software 1 of 2 CD image for your platform, instead of the check script from the system you are using. path is the image on a local disk or a mounted Solaris 8 Software 1 of 2 CD. Use this option to run the most recent version of check if your system is running a previous version of Solaris. |
|
Specifies a file name other than the one named custom_probes. Using this option, you can test the validity of a set of functions before integrating it into the custom_probes file. |
Make sure the check script is located in the JumpStart directory.
The check script is in the Solaris_8/Misc/jumpstart_sample directory on the Solaris 8 Software 1 of 2 SPARC Platform Edition and Solaris 8 Software 1 of 2 Intel Platform Edition CD.
Run the check script to validate the rules and custom_probes files.
$ ./check [[-p path -r file_name]] |
As the check script runs, it reports the validity of the rules and custom_probes files and each profile. If no errors are encountered, it reports: "The custom JumpStart configuration is ok" and creates the rules.ok and custom_probes.ok files in the JumpStart directory.
Is the custom_probes.ok file executable?
If yes, stop, you're done.
If no, type the command:
chmod +x custom_probes