Build a (Very) Inexpensive Solaris 10 Workstation
Christian Joaquin Cruz
Solaris is the dominant UNIX (Linux is a Unix clone/work-a-like, not officially UNIX) and is almost synonymous in business and government with large servers and server farms. In particular, Solaris 10 is Sun Microsystems’ latest release of their venerable Unix and their first open-source OS. In addition to inheriting Solaris’ solid reputation for stability and reliability, this latest version has many notable new security features like “Trusted Extensions” and virtualization features like “Containers” which when used properly can not only enhance the system’s functionality, but preserve/enhance the level of data confidentiality and integrity, as well. As Sun Microsystems notes :
The new Solaris Containers functionality in the Solaris 10 Operating System improves system utilization by enabling you to securely run multiple, software-isolated applications on a single system, allowing you to easily consolidate your servers. The Predictive Self Healing, Process Rights Management, and Dynamic Tracing (DTrace) capabilities of Solaris 10 also help you achieve higher utilization rates without compromising service levels, privacy, or security.
As with Linux, Solaris can either be a very demanding operating system or work very well on relatively lightweight hardware, depending on its configuration and the user needs. Today, we take a look at building a very low cost workstation based on Solaris 10. Continued…
As an IT professional working in an environment where we’re migrating over from older versions of Solaris, it was of keen interest for me to have my own home version of a server running on inexpensive commodity hardware. Like many home users/hobbyists, my few and much used servers/workstations were the result of lots of trial and error, careful configuration, upgrades, patches and software installations that I didn’t want to just “blow-away” and have to go through the pain of restoring, so I had no readily available “sacrificial lamb” hardware upon which to experiment.
In this regard there were only two acceptable choices—attempt to create a dual-boot system from one of my lesser used servers or build an inexpensive “test box”. Dual booting is not only possible, it is quite feasible with the many bootloaders available, but there is always a possibility of making an error and corrupting your working system’s original install. This prompted me to investigate how to build a low-priced and modestly performing testbed for this and other possible exploratory installs. The result is the completed testbed node and this article which is a general review of all the procedures, software, drivers, and hardware involved and not a detailed step-by-step instruction.
Aside from my needs in this build project, Sun’s Solaris bundle offers a usable suite of software not just for web serving, but for typical computing uses. Here’s some of what’s included according to Sun’s Solaris page:
A familiar desktop look and feel based on the open source GNOME desktop
Office productivity through the StarOffice 8 Office Suite, which provides integrated word processing, spreadsheet, presentation, drawing, and database capabilities
Additional desktop tools, including the Mozilla Web browser, instant messaging, and fully integrated Evolution e-mail and calendar software
And as for Webdev stuff:
Apache, Tomcat, and Zebra software for network and Web services
Bison, GCC, Perl, and Python tools for software development
IP Filter, TCP Wrappers, and Secure Shell utilities for security
GNOME, Mozilla, and Evolution software for desktop usability
PostgreSQL and MySQL databases
You can find plenty more apps at download sites like AllWorldSoft.com .
Considerations and Concerns
Price, not performance was the most important consideration in this project. External peripherals like the keyboard, mouse, monitor and speakers would be recycled from other systems to reduce costs. The system motherboard would have built-in video, sound, and Ethernet devices if possible. Solaris 10 hardware compatibly was the second most important consideration. If it had been first I would have spent my time looking for used Sun equipment, but this box also will serve as a testbed beyond this Solaris project, so commodity x86 hardware was the equipment of choice.
Another concern, though of lesser importance, was the ready availability of components from store shelves, as I did not want to mail-order anything if possible.
The component of most concern in terms of compatibility was the motherboard. Sun maintains a Solaris hardware compatibility list (HCL) on their website (and I searched it for a feasible one. At the time there were only 44 compatible motherboards listed and I deemed none of them suitable for this project because of their age, availability, features, or cost.
Based on extensive research I took a gamble on Intel’s D201GLY “Little Valley” Mini-ITX mainboard with a soldered on 1.33 GHz Celeron 215 processor and heatsink/fan. With a suggested retail price of about $70, this all-in-one munchkin has built in VGA, Ethernet, sound, and USB 2.0 support. The deal-clincher (besides the store’s generous return policy) was the availability of free downloadable drivers for sound and Ethernet. The only other major components of concern for compatibility were the hard-drive and CD ROM/DVD reader/burner drive. At the store, I found a Sun HCL listed 7200rpm Maxtor 300GB PATA 16mb-buffer drive for about $60, and a Sony optical drive (DRU-170C) for about $40. Experience has told me Sony drives are usually compatible with Unix/Linux variants. Continued…
Intel refers to the D201GLY as a “micro ATX board”, although it’s actually a cut down version that’s compatible with miniITX. This little board has got a lot going for it. It’s compact, cheap, and consumes a miserly 27W. Here’s a brief rundown of the specs:
SiS 662 chipset with a 533 MHz front side bus
Celeron 215 with 512KB Level 2 cache and heatsink
Analog Devices AD1888 audio codec
SiS Mirage 1 integrated graphics hardware
One PCI Slot
One serial port
One parallel port
One 240-pin DDR2 SDRAM Dual Inline Memory Module (DIMM) socket
Support for DDR2 533 MHz and DDR2 400 MHz DIMMs
Support for up to 1 GB of system memory
It’s nothing fancy, but with a relatively fast bus and decent sized L2 cache, the system should have very low latency for small web-based tasks. The entire bill of materials for this project weighed in at well under $300. Continued…
Component Brand/Model Price
Motherboard Intel D201GLY “Little Valley” Mini-ITX $70
Hard drive Maxtor 300GB PATA 16mb-buffer drive $60
Memory DDR 1GB pc6400 single-module 800MHz $50
Optical drive Sony DRU-170C $40
Case CoolerMaster Elite 340 mATX Case $35
Power supply RaidMaster 380w Power Supply $20
Case fan LD 80mm $4
Total (without tax) $279
We’ll assume that you have a certain minimal amount of experience in computer assembly. This should include reasonable familiarity with computer components, hardware settings (jumpers), and antistatic precautions. The best precaution is familiarity with the mounting instructions included with each component.
Mount the drives. Open the case sides and carefully remove the front panel (take care with the wiring) by pinching the retaining plastic tabs from the inside of the case. Remove the appropriate knock-out sheet-metal covering the bays for the hard drive and CD/DVD reader/burner. Insert and screw in the Sony optical drive and Maxtor hard drive into their appropriate bays. Remove the corresponding front-panel drive-bay cover and snap the front cover back into place (again, take care with the wiring).
Mount the power supply. Screw in the RaidMaster power supply unit with the larger screws supplied with the case. Do not connect the power cord to the wall outlet until construction is almost finished (step 6).
Mount the motherboard. Locate the appropriate screw holes in the case which allow the motherboard’s peripheral interfaces to align with the case’s peripheral interface opening. Screw the standoffs supplied with the case to said screw holes. Cover the case’s peripheral interface opening with the peripheral interface cover supplied with the motherboard. Taking appropriate antistatic precautions, place the motherboard on standoffs and use longer screws to hold it in place. Mount the 80mm fan with the air-flow orientation pointing out of the case to the back of the case with supplied screws and hook its power cable to the motherboard’s fan power socket as per the included instructions.
Install the RAM. Snap the DDR 1GB PC6400 single-module into the DIMM socket.
Connect jumpers and cables. Follow the instructions that came with the motherboard to connect the case cables for the front panel lights, USB sockets, reset and power buttons, and then set the on-board jumpers. Connect the Sony drive (jumpered as the IDE slave) and the Maxtor drive (jumpered as the IDE master) with the included ribbon cable to the motherboard’s IDE socket. Connect appropriate power cables to the motherboard and drives.
Power up test. Connect power cable, keyboard, mouse, and monitor. Power up system to BIOS level by hitting F2 at the Intel splash screen. Check motherboard light sequence as per motherboard instructions, front-panel LEDs, drive LEDs for proper powerup function. Power down and troubleshoot as many times as necessary to ensure correct connections, function, and BIOS settings, and then close the case sides. We suggest you select the Sony optical drive in the BIOS as the primary boot device for the purposes of this installation. Continued…
Next, we assume you’ve had some minimal experience installing Unix or Linux. This should include a reasonable familiarity with Unix/Linux text based installs, disk-formatting tools and BSD style partitions. The onscreen instructions/questions displayed in each phase of the installation should be quite sufficient to work with for someone with a reasonable amount of Unix experience. If this is a first time install, the best precaution is asking for the assistance of someone who has familiarity with Unix installs or with one of the more text-based Linux Distros.
Power up the node to the BIOS level by hitting F2 during the Intel splash screen. While at the BIOS level, insert the Solaris 10 x86 installation disk in the optical drive and then exit the BIOS to allow the system to boot from the DVD. The install under an X11 GUI turned out to be problematic with this hardware, so let the installation proceed by itself with the “Solaris Interactive (Default)” until you are prompted to enter a language (0 selects English). This forces the install to proceed in text mode.
After answering a few preliminary questions, the next major step is partitioning the disk. Create one adequately large partition for Solaris—I chose the entire disk, the installer will add the boot partition/sector/block automatically later. Typically Solaris will be installed in the first partition, c0d0p0. You can choose to manually create the slices in the Solaris partition or you can let the installer do an automatic layout. I chose to do it manually in this fashion:
Slice Mount point Size
c0d0s0 / 20 GB
c0d0s1 swap 2 GB
c0d0s2 overlap Entire partition (305GB)
c0c0s3 /var 20 GB
c0c0s4 /usr 20 GB
c0c0s5 /tmp 10 GB
c0c0s6 /export/home 100 GB
c0c0s7 /opt rest of partition (133GB)
Although one all-encompassing slice can be chosen for all the file systems, the main advantage of this layout is that the /var and /tmp directories are in separate slices from the / (root) filesystem. This will prevent the var and tmp directories from consuming space in the root slice when they fill up with log files, patch back-out scripts, temporary files and the like. Filling up the root slice is a good way to severely cripple performance and even crash your system.
The installer will now ask you some final questions about configuring the system as well as packet selection before beginning the installation. Be sure to take the DVD out after the install and during the reboot of the system or the installation will commence again. Continued…
Solaris 10 comes packaged with the Xorg environment which has pretty good support for a broad selection of video card and chipsets, should the user wish to install a video card in the PCI slot (and set the BIOS accordingly). For more details about supported cards, refer to the manual pages in /usr/X11/man. These manual pages are not included in the default MANPATH environment variable, so use the command “man -M /usr/X11/man ” to access it. Of course, you can also add it permanently to your MANPATH variable with your local .profile, .bashrc, or .cshrc files.
The system came up by default in a resolution of 1280×1024 at 24-bit color. This resolution setting, as well as 1024×768 had much display noise/snow. This release of the Xorg SiS video driver (included with solaris 10 11/06) supports the SiS661 chipset, but the motherboard has the SiS662 chipset. The driver worked quite well at a resolution 800×600, however. For the purposes I had in mind for this testbed system, this was satisfactory. The setting was easy enough to set from the preferences menu under GNOME after logging in. For the systemwide resolution I ran /usr/X11/bin/xorgconfig utility and chose resolutions settings of 800×600 and 640×480 at 24-bit color with 24-bit color as the default display setting. As mentioned in the preceding paragraph, there is a PCI slot for a video card should the user want higher resolution.
AC97 Audio Controller Driver
This release of Solaris does not natively support the D201GLY’s onboard ADI AD1888 (AC97) Audio controller. Download the audio-1.9beta-i86pc.pkg.bz2 package from Solaris free drivers site . This package provides several drivers; you only need two, each one installed separately: TOOLSahlp Audio Driver Framework, and TOOLSi810 Audio Driver for Intel ICH audio controller.
To install the package (as root), type:
pkgadd -d audio-1.9beta-i86pc.pkg
From the command line menu select the “Audio Driver Framework” (selection 1). When the installation is complete, type the same pkgadd command again and this time select “Audio Driver for Intel ICH audio controller” (selection 4). When the second installation is complete, simply reboot (sound can be subsequently enabled from the desktop preference menu under GNOME).
Like the audio portion, this release of Solaris does not natively support the D201GLY’s onboard SiS900 chipset networking. As with the audio drivers, you’ll need to download the sfe-2.4.1.tar.gz package .
To install the package (as root) type:
gunzip -cd sfe-2.4.1.tar.gz | tar xvf –
mv sfe-2.4.1/obe/sfe /kernel/drv/
devfsadm -i sfe
The next steps are strictly Solaris networking configuration. Create the file /etc/hostname/sfe0 (ending in zero, not o) with your node’s IP address. Enter the node’s IP address, name, and fully qualified name in /etc/hosts. Enter the appropriate subnet and netmask in /etc/netmask. Then reboot. Continued…
The project was very successful within the terms of cost and functionality that were laid out in the planning stage. The system came in under $300 and was easy to assemble quickly. The onboard features, preset jumpers, pre-attached CPU and heatsink/fan combination made the installation of the Intel D201GLY motherboard a breeze, requiring only four standoffs/screws and the addition of the DDR single-module RAM. The diminutive size of the mini-ITX motherboard afforded ample working room inside the otherwise small microATX case. As a result, all the connections to the power, drives and front panel were relatively painless.
The installation of Solaris 10 was the only portion that required a modicum of expertise. The graphical installation feature failed, and the system defaulted to a text-mode menu style of installation. This was not a problem for an experienced Unix administrator/hobbyist, but it could have been daunting for a novice, especially the drive partitioning section. It’s well advised to get some experienced help here. Also, the installation of the sound and network drivers required the use of Unix/Solaris shell commands (tar, bunzip2, mv, pkgadd, etc), but the instructions included with the drivers were not something that couldn’t be followed cookbook fashion with good results.
Read Linux articles on ExtremeTech.
Another hiccup was the Xorg’s SiS video driver. Resolutions higher than 800×600 were usable but displayed annoying noise, or snow. If anything could improve this setup (besides a PCI video card selected from Sun’s HCL), it would be updated Xorg drivers that would better handle the SiS662 Mirage Graphics output at higher resolutions. However, as seen from Figures 4 and 5, the desktop was quite usable at 800×600.
In addition, the Sony CD/DVD reader/burner worked flawlessly, though I had to use the commands mkisofs and cdrw to burn a disk. Apparently a good disk-burning GUI tool is not included with the Solaris 10 desktop as of yet.
The node, after installation of all the drivers, networking and apache configuration, was very functional and able to serve up webpages on my local network quite well. Secure Shell connections worked staight out-of-the-box, as did hot-plug-in detection of USB thumbdrives. The CD/DVD reader/burner was compatible with Solaris, but Sun has omitted the inclusion of a graphical CD/DVD burner application. The upshot of this is that you have to use the commands mkisofs and cdrw to use this functionality (or download a compatible GUI based application).
In most respects I am quite pleased at the results. It’s quite a cool box for the very low amount of time and money invested. The next phase for this testbed is to harden it with Sun’s JASS hardening tool and then to test the unit’s functionality versus vulnerability using penetration/probing tools like Nessus and Retina.
Copyright © 2007 Ziff Davis Media Inc. All Rights Reserved. Originally appearing in ExtremeTech.