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.
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.
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!