Peter's Solaris Zone

Minimalized Installation

For many purposes you want a server to have an absolutely minimal setup - as little as possible should be installed. I've been doing a bit of testing on a B100s blade server.

Solaris has a SUNWCreq metacluster. So I started with a jumpstart profile that looks like:

cluster         SUNWCreq
cluster		SUNWCnfss	delete
cluster		SUNWCbs		delete
cluster		SUNWCmd		delete
cluster		SUNWCaudd	delete
package		SUNWftpr	delete
package		SUNWftpu	delete

Which means I want to cut the installation down even further - I don't want an NFS server, audio support, boot servers, a volume manager (this is a single-disk system) or any ftp.

Yikes! OK, it installs pretty quickly now - less than 200 meg, but there are 129 packages installed. That's not quite as minimalist as I had hoped. Here's the list:

system      SUNWadmap                    System administration applications
system      SUNWadmlib-sysid             System and Network identification libraries
system      SUNWadmr                     System & Network Administration Root
system      SUNWatfsr                    AutoFS, (Root)
system      SUNWatfsu                    AutoFS, (Usr)
system      SUNWbip                      Basic IP commands (Usr)
system      SUNWbipr                     Basic IP commands (Root)
system      SUNWbzip                     The bzip compression utility
system      SUNWcakr                     Core Solaris Kernel Architecture (Root)system      SUNWcar                      Core Architecture, (Root)
system      SUNWced                      Sun GigaSwift Ethernet Adapter Driver
system      SUNWcfcl                     Common Fibre Channel HBA API Library (Usr)
system      SUNWcfclr                    Common Fibre Channel HBA API Library (Root)
system      SUNWcfpl                     fp cfgadm plug-in library
system      SUNWcfplr                    fp cfgadm plug-in library (root)
system      SUNWckr                      Core Solaris Kernel (Root)
system      SUNWcnetr                    Core Solaris Network Infrastructure (Root)
system      SUNWcnsr                     Common Network Services (Root): time, daytime, echo, discard, chargen
system      SUNWcnsu                     Common Network Services (Usr): time, daytime, echo, discard, chargen
system      SUNWcpp                      Solaris cpp
system      SUNWcsd                      Core Solaris Devices
system      SUNWcsl                      Core Solaris, (Shared Libs)
system      SUNWcslr                     Core Solaris Libraries (Root)
system      SUNWcsr                      Core Solaris, (Root)
system      SUNWcsu                      Core Solaris, (Usr)
system      SUNWdtcor                    Solaris Desktop /usr/dt filesystem anchor
system      SUNWdtrc                     DTrace Clients
system      SUNWdtrp                     DTrace Providers
system      SUNWerid                     Sun RIO 10/100 Mb Ethernet Drivers
system      SUNWesu                      Extended System Utilities
system      SUNWfchba                    Sun Fibre Channel Host Bus Adapter Library
system      SUNWfchbar                   Sun Fibre Channel Host Bus Adapter Library (root)
system      SUNWfcip                     Sun FCIP IP/ARP over FibreChannel Device Driver
system      SUNWfcmdb                    Fibre Channel adb macros
system      SUNWfcp                      Sun FCP SCSI Device Driver
system      SUNWfcsm                     FCSM driver
system      SUNWfctl                     Sun Fibre Channel Transport layer
system      SUNWflexruntime              Flex Lexer (Runtime Libraries)
system      SUNWfmd                      Fault Management Daemon and Utilities
system      SUNWged                      Sun Gigabit Ethernet Adapter Driver
system      SUNWgss                      GSSAPI V2
system      SUNWgssc                     GSSAPI CONFIG V2
system      SUNWhmd                      SunSwift Adapter Drivers
system      SUNWib                       Sun InfiniBand Framework
system      SUNWidnl                     Internationalized Domain Name Support Library Files
system      SUNWinamd                    Internet Domain Name Server
system      SUNWinstall-patch-utils-root Install and Patch Utilities (root)
system      SUNWipfr                     IP Filter utilities, (Root)
system      SUNWipfu                     IP Filter utilities, (Usr)
system      SUNWipmi                     ipmitool, (usr)
system      SUNWipoib                    Sun IP over InfiniBand
system      SUNWiscsir                   Sun iSCSI Device Driver (root)
system      SUNWiscsiu                   Sun iSCSI Management Utilities (usr)
system      SUNWjfca                     JNI Fibre Channel Adapter (FCA) Driver
system      SUNWjfcau                    JNI Fibre Channel Adapter (FCA) (usr)
system      SUNWjss                      Network Security Services for Java (JSS)
system      SUNWkey                      Keyboard configuration tables
system      SUNWkrbr                     Kerberos version 5 support (Root)
system      SUNWkrbu                     Kerberos version 5 support (Usr)
system      SUNWkvm                      Core Architecture, (Kvm)
system      SUNWlexpt                    libexpat - XML parser library
system      SUNWlibC                     Sun Workshop Compilers Bundled libC
system      SUNWlibms                    Math & Microtasking Libraries (Usr)
system      SUNWlibmsr                   Math & Microtasking Libraries (Root)
system      SUNWlibsasl                  SASL v2
system      SUNWlldap                    LDAP Libraries
system      SUNWloc                      System Localization
system      SUNWluxop                    Sun Enterprise Network Array firmware and utilities
system      SUNWluxopr                   Sun Enterprise Network Array libraries
system      SUNWlxml                     The XML library
system      SUNWmdb                      Modular Debugger
system      SUNWnfsckr                   Network File System (NFS) client kernel support (Root)
system      SUNWnfscr                    Network File System (NFS) client support (Root)
system      SUNWnfscu                    Network File System (NFS) client support (Usr)
system      SUNWnisr                     Network Information System, (Root)
system      SUNWnisu                     Network Information System, (Usr)
system      SUNWopenssl-libraries        OpenSSL Libraries (Usr)
system      SUNWpd                       PCI Drivers
system      SUNWperl584core              Perl 5.8.4 (core)
system      SUNWperl584usr               Perl 5.8.4 (non-core)
system      SUNWpiclr                    PICL Framework (Root)
system      SUNWpiclu                    PICL Libraries, and Plugin Modules (Usr)
system      SUNWpkgcmdsr                 SVr4 package commands (root)
system      SUNWpkgcmdsu                 SVr4 packaging commands (usr)
system      SUNWpr                       Netscape Portable Runtime
system      SUNWproduct-registry-root    Solaris Product Registry runtime support (root)
system      SUNWqfed                     Sun Quad FastEthernet Adapter Driver
system      SUNWqlc                      Qlogic ISP 2200/2202 Fibre Channel Device Driver
system      SUNWqus                      QLogic Ultra3 Scsi, (Root)
system      SUNWqusu                     QLogic Ultra3 Scsi, (Usr)
system      SUNWrcmdc                    Remote Network Client Commands
system      SUNWrcmdr                    Remote Network Server Commands (Root)
system      SUNWrcmds                    Remote Network Server Commands (Usr)
system      SUNWrmodu                    Realmode Modules, (Usr)
system      SUNWroute                    Network Routing daemons/commands (Usr)
system      SUNWrpcib                    InfiniBand plugin to RPC over RDMA
system      SUNWses                      SCSI Enclosure Services Device Driver
system      SUNWsndmr                    Sendmail (root)
system      SUNWsndmu                    Sendmail (/usr)
system      SUNWsolnm                    Solaris Naming Enabler
system      SUNWssad                     SPARCstorage Array Drivers
system      SUNWswmt                     Install and Patch Utilities
system      SUNWtavor                    Sun Tavor HCA driver
system      SUNWtavorm                   Sun Tavor ADB Macros
system      SUNWtecla                    Tecla command-line editing library
system      SUNWtftp                     Trivial File Transfer Server
system      SUNWtftpr                    Trivial File Transfer Server (Root)
system      SUNWtls                      Network Security Services
system      SUNWtnamd                    Trivial Name Server (Usr)
system      SUNWtnamr                    Trivial Name Server (Root)
system      SUNWtnetc                    Telnet Command (client)
system      SUNWtnetd                    Telnet Server Daemon (Usr)
system      SUNWtnetr                    Telnet Server Daemon (Root)
system      SUNWudaplr                   Sun User Direct Access Programming Library (Root)
system      SUNWudapltr                  Sun uDAPL for Tavor (Root)
system      SUNWudapltu                  Sun uDAPL for Tavor (User)
system      SUNWudaplu                   Sun User Direct Access Programming Library (User)
system      SUNWudf                      Universal Disk Format 1.50, (Usr)
system      SUNWudfr                     Universal Disk Format 1.50
system      SUNWuedg                     USB Digi Edgeport serial driver
system      SUNWugen                     USB Generic Driver
system      SUNWusb                      USB Device Drivers
system      SUNWusbs                     USB generic serial module
system      SUNWwbsup                    WAN boot support
system      SUNWwsr2                     Solaris Product Registry & Web Start runtime support
system      SUNWxge                      Xframe 10GE NIC Driver
system      SUNWxwdv                     X Windows System Window Drivers
system      SUNWxwmod                    X Window System kernel modules
system      SUNWzlib                     The Zip compression library

There's still a whole lot of fat that can be cut here. (Although I first added tcsh so I could log in.) I can get rid of the udf stuff, usb, infiniband, iscsi, fiber channel, and a bunch of network drivers that I know have no possible relevance to a blade. And I add ntp and ssh (why on earth does a minimal cluster have all the antiquated insecure services but not ssh?).

Unfortunately, the Solaris installer comes up with numerous warnings of the following form:

WARNING: Cannot deselect required cluster (SUNWCib)

and installs the damn packages anyway.

Further tweaking

What I then decided to do was to install a sytem and then use pkgadd/pkgrm to refine matters. Specifically, manually pkgrm all the unnecessary packages identified above, and add in ssh, ntp, the /usr/ucb commands, the freeware shells and compression utilities (we require these; they wouldn't always be necessary in all environments), and system accounting (some of our diagnostics require sar).

So I can get down to 90 packages (and under 200meg disk used) pretty easily. The biggest piece of software at this point is actually perl.

What is interesting is that most stuff still works at this point. OK, so I have /usr/local/ and /usr/X11R6 with a lot of software NFS mounted, but most of the command line utilities work. Graphics is another matter - no java, no openwin, no Motif, no gtk, no gnome. But if all I wanted to do was run something like a nameserver, this would work great.

Limitations

Unfortunately, trying to cut things down to the bare minimum turns out to be very difficult, simply because there are so many dependencies inherent in various utilities. And some of them are not at all obvious. For example, cron depends on libxml2, and complains bitterly about the lack of libnspr4.so.

I also stumbled across boot dependecies hard-wired into smf that prevented the system from booting cleanly.

In fact, for most purposes we need to build our compute nodes so that they need to support java, and pobably X11 with it, and also fully equipped for accounting and capable of software development. So I've gone back to slashing at SUNWCall.

It was an interesting experiment anyway!


Peter's Home | Zone Home