Sun Java Solaris Communities My SDN Account
 
Downloads

Solaris OS on x86 Platforms: Third-Party Packaging Tools

 

Developing Bootable Device Drivers

Bootable Device Drivers for the Solaris OS on x86 Platforms

New bootable device drivers allow the Solaris OS on x86 platforms to be installed onto and/or from hardware devices that are not supported on the currently released Solaris install media. The Driver Update (DU) diskette format allows bootable device drivers to be provided on diskette, prior to kernel boot, allowing the Solaris installation or upgrade to proceed using the additional device hardware supported by the added driver. The bootable device driver files on the DU diskette overlay the files on the bootable media, extending the capabilities of the Solaris kernel.

IHVs can take advantage of this diskette format to ship unbundled new bootable device drivers to support devices not natively supported by a Solaris release. (Sun Release Engineering also uses the diskette format to provide Solaris patches that augment or repair bundled bootable device drivers on the Solaris install media.)

Bootable device drivers developed for the Solaris OS on x86 platforms typically consist of at least the following components:

  • Realmode bootable device driver
  • Solaris bootable device driver
  • Solaris bootable device driver.conf(4) file
  • Solaris driver(7D) special files man page
The boot subsystem for the Solaris 7 OS on x86 platforms uses realmode drivers, also known as BEFs (BIOS Extension Files) to perform booting tasks prior to mounting the Solaris root (/) file system. These drivers perform identification and configuration tasks, as well as provide kernel boot services for the supported HBA (host bus adapter) or NIC (Network) adapter. The Driver Development Site (DDS) and online Sun technical documentation, docs.sun.com, provide detailed information and sample driver source, which is useful when developing and debugging these realmode boot-time drivers.

After the boot subsystem begins the kernel load, the Solaris bootable device driver, along with its associated driver.conf file, is loaded to provide full featured support for the new device hardware. See the DDS site, which provides detailed guides, white papers, and even software development tools to aid in driver development.

Each device driver installed on a Solaris system should have an accompanying man page. Bootable device drivers, which typically control hardware devices, are listed in the Special Files (7D) section.

Beyond these minimal requirements, bootable device drivers might also have associated configuration utilities, startup scripts, SNMP/DMI agents, and so on. However,  these associated files typically are not required for Solaris install or upgrade, and thus are not covered in this white paper, other than to note they can also be packaged for delivery.

NOTE: The DU diskette format and the third-party driver packaging tools have the value "Evolving" associated with their "Interface Stability" attribute (see the attributes(5) man page for more information). This means that occasional changes in these interfaces might occur, but every effort will be made to provide migration advice, if necessary.

Choosing a Driver Name

It is important to choose a unique name for each Solaris device driver, across all Solaris platforms and releases. The driver.conf(4) man page generally advises using a vendor-unique string to differentiate device driver names from those created by Sun or other device driver developers. To avoid name space collisions between multiple driver vendors, it is best that the name property of the driver should begin with a vendor-unique string.  A reasonably compact and unique choice is the vendor's over-the-counter stock symbol. Because some versions of the boot subsystem for the Solaris OS on x86 platforms limit the name of the device driver to 8 alphanumeric characters, this restriction is suggested for compatibility across all releases of the Solaris OS on x86 platforms. Too, search current Solaris releases and perform a more general web search to ensure the uniqueness of the chosen driver name.

Software Development Tools

The DDS site provides several tools useful for developing bootable device drivers, such as a realmode driver debugger, kernel source-level debugger, TNF tracing tools, and DDI compliance checking tool. To maximize the quality and portability of the software, perform a lint, and DDI compliance static analysis on each driver you develop.

Through the Solaris 7 OS on x86 platforms the recommended version of the 4.2 C compiler for developing bootable device drivers is the latest revision of patch 105026 (see http://sunsolve.sun.com for the latest version).

Installing the SUNWpkgd Tools

The third-party driver packaging tools are provided in the SUNWpkgd package, for downloading from the DDS site. To install the package from the DDS site, follow the steps in the sample installation procedure below. In this example,  ~/tmp is used as the temporary working directory, and SUNWpkgd.tar.Z is the file name of the downloaded package archive.

1. Create a temporary working directory:

% mkdir ~/tmp
2. Copy the downloaded package file into this directory:
% cp /tmp/SUNWpkgd.tar.Z ~/tmp
3. Change directories to the newly created temporary working directory:
% cd ~/tmp
4. Uncompress the downloaded package file:
% uncompress SUNWpkgd.tar.Z
5. Unpack the tar archive:
% tar xf SUNWpkgd.tar
6. Become superuser to install the package:
% su
7. Add the package to your system:
# pkgadd -d ~/tmp
8. Follow the on-screen instructions to complete the installation.

9. Remove the temporary working directory:

#  rm -r ~/tmp
10. Place the /opt/SUNWpkgd/bin directory in your execution PATH:
# PATH=${PATH}:/opt/SUNWpkgd/bin; export PATH
You are now ready to begin the packaging tasks for the bootable device drivers.

[Previous | Contents | Next]

[Return to Driver Tools]

Solaris OS on x86 Platforms: Third-Party Packaging Tools (A White Paper)


Oracle is reviewing the Sun product roadmap and will provide guidance to customers in accordance with Oracle's standard product communication policies. Any resulting features and timing of release of such features as determined by Oracle's review of roadmaps, are at the sole discretion of Oracle. All product roadmap information, whether communicated by Sun Microsystems or by Oracle, does not represent a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. It is intended for information purposes only, and may not be incorporated into any contract.