Key Users
  Product Detail
  Automated Brochure
  Automated Demos
  Press Releases
  Newsletter
  Brochure
  Testimonials
  Customers
  Analyst Reviews
  Live Demo Request
  ROI

 


 
Join Our Mailing List
Email:
 
    > Newsletter > Current Issue > Spotlight on Solaris: Solaris x86
 
   
 

Spotlight On Solaris: Solaris x86
by Bill Calkins

I continue to receive questions about Solaris x86, the version of Solaris used on x86/x64-based systems. For those of you that don't know, there are two versions of Solaris - one for SPARC-based systems and another for x86/64-based systems. For the benefit of everyone, I'll use this opportunity to address some of the questions I've been receiving.

I assume the reason that these Solaris x86 questions keep coming up is that although many system administrators have experience on the SPARC and Ultra-SPARC hardware platforms, many do not have experience running Solaris on x86/x64-based systems. All of the Sun servers and desktops found in the industry typically run Sun Microsystems' SPARC-based Solaris and many businesses simply don't use the x86/x64 version. Many system administrators taking the Solaris 10 exam have been "blind-sided" and failed the exam because they were not prepared to answer questions pertaining to Solaris x86. While some of you don't really care to know about x86/x64-based Solaris, it is now a requirement on the Solaris 10 certification exams. You need to understand both versions of Solaris- SPARC and x86/x64 if you want to become certified.

Back in the September 2006 issue, I addressed the following questions about Solaris on x86/x64-based systems:

  1. Do the exams cover new x86 features in Solaris 10 1/06 such as GNU GRand Unified Bootloader - GRUB (the new bootloader)?
  2. Explain how Solaris x86 device names are different than device names on a Sun system.
  3. The x86 memory requirements have changed in the Solaris 10 1/06 release. When asked to select the correct requirements for installing Solaris 10 on the x86 platform - which do I choose? The old (pre 1/06) requirements, or the most current requirements?

I have received so many Solaris x86/x64 questions that it will take a few articles to cover them all. In this article, I'll cover the following questions which pertain to topics that you must know for the Solaris certification exam:

What are the functions of the BIOS on an x86/x64-based system?
BIOS is the boot firmware program on a PC, and it controls the computer from the time you start it up until the operating system takes over. The BIOS initializes the CPU, memory, and platform hardware. The BIOS loads the initial bootstrap software (that is, the bootloader) from the configured boot device and hands control over to the bootloader. The Solaris 10 3/05 OS and earlier releases use a Sun-developed bootloader that includes an interactive shell and a menu-driven device configuration assistant based on real-mode drivers.

NOTE: This procedure does not apply to Solaris 10 1/06 or later releases, where the boot process is now based on GNU GRUB and no longer requires real-mode drivers, and thus also does not use the Device Configuration Assistant. As of this writing, the Solaris 10 certification exam covers the old method and does not cover GRUB. This is expected to change soon, however.

The BIOS manages data flow between the computer's operating system and attached devices such as the hard disk, video card, keyboard, mouse, and printer. The BIOS controls installed peripheral devices and provides I/O services through software interrupts.

The BIOS stores the date, the time, and your system configuration information in a battery-powered, non-volatile memory chip, called a CMOS (Complementary Metal Oxide Semiconductor).

On modern systems, BIOS resides on memory chips such as flash chips or EEPROM (Electrically Erasable Programmable Read-Only Memory), so that you can update the BIOS yourself if necessary. You'll enter the BIOS by pressing a special function key soon after powering on the system and before the operating system loads. Watch the screen after the system starts up, it will display the keystroke required to enter Setup. Common keystrokes to enter the BIOS Setup are F1, F2, F10, and Del.

On some systems, such as some Gateway or Compaq computers, graphics appear during the POST, and the BIOS information is hidden. You must press Esc to make these graphics disappear. Your monitor will then display the correct keystroke to enter.

Note: If you press the key too early or too often, the BIOS may display an error message. To avoid this, wait about five seconds after turning the power on, and then press the key once or twice.

One thing that you may need to setup in the BIOS is the boot order, so that the system boots to the CD-ROM first before booting to the hard drive. Then, you can insert and boot from the Solaris 10 Software Media- CDROM #1 and start the software installation process. Here's an example on a Dell 4600. The main setup screen appears after pressing F2:
 

First, to verify the disk drives and CDROM are present and visible to the system, I select "Drive Configuration", which displays drive configurations when <Enter> is pressed.

After verifying the disk drives and CD-ROM, I use the arrow keys to highlight the Boot Sequence menu option and press <Enter> to access the pop-up menu.

Note: It's a good idea to write down your current boot sequence in case you want to restore it.

  1. Press the up and down arrow keys to move through the list of devices.
  2. Press the spacebar to enable or disable a device (enabled devices have a checkmark).
  3. Press plus (+) or minus (-) to move a selected device up or down the list.

Back to Top ^^

What is the Device Configuration Assistant (DCA)?
The DCA was required on early versions of Solaris 10, but is no longer needed when using GRUB (see next section). The basic functional requirements of the Device Configuration Assistant are to:

  • • Safely and automatically probe and construct a definitive devinfo tree (like the one provided by the OpenBoot Firmware on SPARC systems) containing descriptions of all boot-time devices and all devices that are not on self-identifying buses.
  • • Allocate I/O resources (I/O space addresses, interrupt request levels, and DMA arbitration levels) to all devices that need them.
  • • Make available a set of boot-time device drivers that are adequate to enable a system to be loaded from any possible boot device.
  • • Provide a means for (automatically or manually) selecting a boot device from among the many possible boot devices.

When booted from the hard disk, the DCA performs its job automatically, but when booted from a diskette, it throws up a menu of options and waits for the user to interact with the configuration process. This is referred to as the Device Configuration diskette.

Under normal circumstances, the DCA diskette is not required when the OS is installed. It is intended and expected that the Device Configuration Assistant will be able to properly and automatically identify all of the devices on most machines and the user never needs to interact with the DCA. There are, however, situations where this may fail. Here are a few reasons:

  • • An unsupported ISA device may have allocated resources (for example, I/O ports) that will not be found by the bus enumeration and automated probing.
  • • An almost-compatible device may not be recongnized by a probing module.
  • • A BIOS or configuration utility bug may misreport a device's identity or resources.

To deal with such situations, the Configuration Assistant includes a manual Configuration Assistant that permits the user to manually review and (if necessary) update the information that was gathered in the probing process. You'll see this configuration assistant early in the boot process. After the bus enumerations and device probes have been completed, the user will be presented with a list of all devices that have been discovered. The default action is to accept this list as correct, but you can also choose device-specific tasks, which include:

  • • (Re)scanning for specific devices
  • • Viewing the detailed configuration information associated with a particular device
  • • Deleting a device from the configuration
  • • Adding a new device (with manually entered resources) to the configuration
  • • Changing the configured keyboard language
  • • Selecting a serial console (as opposed to the default keyboard and display)
  • • Saving the configuration into a file on the boot device
  • • Deleting a saved configuration file from the boot device

The latter two functions are intended for use on platform-specific install diskettes. If all platforms will be the same, a standard configuration can be saved on the boot diskette, and the system will automatically come up using the saved configuration description on the diskette during the OS installation process. This completely eliminates the need for user interaction with the Configuration Assistant during each install, and enables a simpler installation experience.

Sometimes you may need to interact with the DCA during the boot process, especially when encountering one of the following circumstances:

  • • You installed Solaris onto a disk other than the primary boot disk.
  • • You didn't remove your DCA boot diskette or if you didn't remove your installation CD-ROM if it's in a bootable CD-ROM drive.
  • • File /boot/solaris/bootenv.rc is corrupt or truncated, usually after a hard reboot or reset. This file is setup and used by DCA. It should contain several lines.

Back to Top ^^

Booting the Solaris OS with GRUB
As described in the previous section, the Solaris 10 3/05 OS and earlier releases use a Sun-developed bootloader that includes an interactive shell and a menu-driven Device Configuration Assistant based on real-mode drivers. Prior to the Solaris 10 1/06 OS, real-mode drivers were run as part of the boot process, however, now with GRUB, real-mode drivers are no longer part of the boot process.

Starting with the Solaris 10 1/06 release, the open source GRUB or GNU GRand Unified Bootloader has been adopted as the default boot loader in the Solaris OS. GRUB eliminates the menu-driven Device Configuration Assistant.

The "bootloader" is the first software program that runs when a computer starts. It is responsible for loading and transferring control to the operating system kernel software. Once loading is complete, GRUB hands control over to the multiboot program. GRUB itself then becomes inactive, and its memory is reclaimed.

Bootloaders can contain several ways to boot the OS kernel and also contain commands for debugging and/or modifying the kernel environment. The Solaris kernel is fully compliant with the Multiboot Specification and can be booted via any bootloader implementing the Multiboot Specification.

As a bootloader GRUB gains control of the boot process and displays a menu on the console to perform the following:

  • • Select an entry to boot your system
  • • Modify a boot entry by using the built-in GRUB edit menu
  • • Manually load an OS kernel from the command line
  • • A configurable timeout is available to boot the default OS entry. Pressing any key aborts the default OS entry boot.

In the following example, the GRUB main menu shows the Solaris and Microsoft Windows operating systems. A Solaris Live Upgrade boot environment is also listed that is named second_disk. See the following for descriptions of each menu item.

GNU GRUB version 0.95 (616K lower / 4127168K upper memory)
+---------------------------------------------------+
|Solaris                                                            
|Solaris failsafe                                               
|second_disk                                                   
|second_disk failsafe                                      
|Windows                                                       
+---------------------------------------------------+
Use the ^ and v keys to select which entry is highlighted. Press
enter to boot the selected OS, 'e' to edit the commands before
booting, or 'c' for a command-line.

When you install the Solaris OS, two GRUB menu entries are installed on the system by default. The first entry is the Solaris OS entry. The second entry is the failsafe boot archive, which is to be used for system recovery. The third entry, second_disk, specifies a Solaris Live Upgrade boot environment. The fourth entry, Windows , specifies the Microsoft Windows OS. GRUB detects these partitions but does not verify that the OS can be booted.

During a standard Solaris OS installation, GRUB is installed on the Solaris fdisk partition without modifying the system BIOS setting. If the OS is not on the BIOS boot disk, you need to do one of the following:

  • • Modify the BIOS setting
  • • Use a boot manager to bootstrap to the Solaris partition

The preferred method is to install the Solaris OS on the boot disk. If multiple operating systems are installed on the machine, you can add entries to the menu.lst file. These entries are then displayed in the GRUB menu the next time you boot the system.

A couple of points about the GRUB menu:

  • • If you install or upgrade the Solaris OS, the GRUB menu is automatically updated. The Solaris OS is then displayed as a new boot entry.
  • • If you install an OS other than the Solaris OS, you must modify the menu.lst configuration file to include the new OS instance. Adding the new OS instance enables the new boot entry to appear in the GRUB menu the next time that you boot the system.

Starting with the Solaris 10 1/06 release, the GRUB menu can be updated. For example, you might want to change the default time for how fast the default OS is booted. Or, you might want to add another OS to the GRUB menu.

Typically, the active GRUB menu's menu.lst file is located at /boot/grub/menu.lst and only the active GRUB menu.lst file is used to boot the system. In order to modify the GRUB menu that is displayed when you boot the system, the active GRUB menu.lst file must be modified. To determine the location of the active GRUB menu.lst file, use the bootadm command. The bootadm command manages the boot archive and GRUB menu. The list-menu subcommand displays the location of the active GRUB menu.

Once the kernel gains control, it will initialize CPU, memory, and I/O devices, and it will mount the root file system on the device as specified by the bootpath property with a file system type as specified by the property fstype. Properties can be set in /boot/solaris/bootenv.rc via the eeprom command or in the GRUB command line via the GRUB menu or shell. If the properties are not specified, the root file system defaults to UFS on /devices/ramdisk:a, which is the case when booting the install miniroot.

Back to Top ^^

What is PXE?
PXE network boot is a "direct" network boot. No boot media is required on the client system. With PXE, you can install an x86 based client over the network by using DHCP.

Installing the Solaris OS over the network requires placing the Solaris OS images in a centralized location. Any machine connected to the network may boot and install the OS with little or no interaction required. The installation process can even be done in a hands-off manner via Solaris JumpStart software.

Booting from the network requires a DHCP server configured for PXE clients and a file server providing tftp service. The DHCP server is responsible for supplying the information necessary for the client to configure its network interface. The DHCP response also contains the IP address of the file server and the boot file name (pxegrub). The file server is responsible for serving the pxegrub binary, the GRUB menu, the multiboot program, and a boot archive.

Booting the Solaris OS using PXE works as follows:

  • • User configures BIOS to boot from a network interface.
  • • BIOS sends a DHCP request
  • • DHCP server replies with server address and the name of the boot file
  • • BIOS downloads pxegrub from server via tftp and executes pxegrub.
  • • System downloads a GRUB menu file via tftp and shows menu entries.
  • • User selects menu entry and starts loading the Solaris OS.

PXE network boot is available only for devices that implement the Intel Preboot Execution Environment specification. To determine if your system supports PXE network boot, see your hardware manufacturer's documentation.

In the Solaris 10 3/05 and earlier releases, the Solaris boot diskette is still available for systems that do not support PXE. The boot diskette image is available on the Solaris 10 Software for x86 Platforms - 2 CD. The Solaris boot diskette is not available in the Solaris 10 2/06 release.

To boot over the network by using PXE, you need the following systems:

  • • An install server
  • • A DHCP server
  • • An x86 client that supports PXE

When you are preoaring to use PXE to install a client over the network, follow these guidelines:

  • • Set up only one DHCP server on the subnet that includes the client system that you want to install. The PXE network boot does not work properly over subnets that include multiple DHCP servers.
  • • Some early versions of PXE firmware have a variety of shortcomings. If you experience difficulty with a particular PXE adapter, obtain firmware upgrade information from the adapter manufacturer's web site. The elxl and iprb man pages provide information on Ethernet device drivers.

Back to Top ^^

What can you do if your x86/x64-based system won't boot and the CDROM is not bootable in the drive's BIOS?
If you have a CDROM drive, but it simply is not a bootable device, your only other option is to boot from the floppy. There is a diskette image on CDs 2, 3, and 4, and on the DVD. These images are all the same. The path to the image is:
Solaris_10/Tools/d1_image
This file should be written to a formatted floppy diskette using the 'dd' command.

NOTE: This procedure does not apply to Solaris 10 1/06 or later releases, where the boot process is now based on GNU GRUB and no longer requires real-mode drivers, and thus also does not use the Device Configuration Assistant. As of this writing, the Solaris 10 certification exam covers the old DCA method and does not yet cover GRUB.

Without a CD or DVD drive your next best option is a network installation (see PXE Network Boot described earlier). For this there are two methods:

  • • Use a network device for which Solaris has a real-mode driver it can use for booting from a network image server.
  • • Use a network device that supports PXE booting that Solaris can use for booting from a network image server

As you can see these are both pretty similar options. It will require that you have an existing network install server on your local subnet. The install server needs to be a Solaris system, but can be either SPARC or X86.

Back to Top ^^

What is the Solaris Installation Check Tool?
Solaris Operating System for x86 Installation Check Tool reports whether Solaris drivers are available for the devices you have in your x86 system. The tool performs two functions:

  • • Reports whether your x86 system can install the Solaris 10 11/06 OS. The Installation Check Tool loads the Solaris 10 11/06 kernel and looks for a hard disk on your system.
  • • Reports whether Solaris drivers are available for the devices the tool detects on your x86 system. This information helps you to determine whether the Solaris 10 11/06 OS is likely to run on your system

Download the free tool from sun.com. The file is an ISO file, approx 58MB and is burned to a CD. Therefore, you'll need a bootable CDROM to use this tool. Use the CD that you burned with the install_check.1.2.iso file to boot the x86 system that you want to check. Installation Check Tool first loads the Solaris 10 11/06 kernel and produces a table that shows whether a Solaris driver is available for each device the tool detects. The table tells you whether the driver is built in to the Solaris OS or whether a third party driver is available. The following is an example of the text information that is displayed on your monitor:

Generating reports...

Vendor      Device: Type  Name                    Solaris Driver: 32BIT 64BIT
-----------------------------------------------------------------------------
nVidia Corpora...    V   NV43 [Geforce Go 6600TE/6200TE]             Y    Y
Marvell Techno...    N   88E8053 PCI-E Gigabit Ethernet Contro...    T-1  N
Intel Corporation    U   82801FB/FBM/FR/FW/FRW (ICH6 Family) U...    Y    Y
Intel Corporation    U   82801FB/FBM/FR/FW/FRW (ICH6 Family) U...    Y    Y
Intel Corporation    U   82801FB/FBM/FR/FW/FRW (ICH6 Family) U...    Y    Y
Intel Corporation    U   82801FB/FBM/FR/FW/FRW (ICH6 Family) U...    Y    Y
Intel Corporation    U   82801FB/FBM/FR/FW/FRW (ICH6 Family) U...    Y    Y
Intel Corporation    N   PRO/Wireless 2200BG                         N    N
Texas Instruments    O   PCIxx21/x515 Cardbus Controller             Y    Y
Texas Instruments    F   OHCI Compliant IEEE 1394 Host Controller    Y    Y
Intel Corporation    M   82801FB/FBM/FR/FW/FRW (ICH6 Family) A...    N    N
Intel Corporation    O   82801FB/FBM/FR/FW/FRW (ICH6 Family) A...    N    N
Intel Corporation    S   82801FBM (ICH6M) SATA Controller            Y    Y

Driver Notes:
Y - Solaris Driver Found;  T - Third Party Driver;  N - No Solaris Driver
Device Types:
V - Video; N - Network; S - Storage; M - Multimedia; U - USB; F - Firewire; 
O - Other;

Third Party Driver Legend:
T-1     yukonx         http://www.marvell.com

Back to Top ^^

Next month I'll continue on the topic of Solaris x86, addressing more of the questions that I've received. If you have more x86/x64-based questions that you would like me to address, please email them to me.