OpenSolaris 2009.06 x86_64 (AMD64)
This article is a work in progress based on ongoing experiences.
Over a period of time, I have been trialling OpenSolaris 2009.06 as an alternative to Linux for use in storage applications, web service applications and as a potential alternative software development platform for Java / JVM based technologies. An operating system based on one with wide industry acceptance is also of particular interest and the availability of software RAID capability is critical to the safe management of work.
My operating system of choice for Unix applications the past 8 to 10 years has been FreeBSD, principally due to -
- kernel performance;
- kernel stability;
- comprehensive application support; and
- advanced features including the availability of lightweight virtualisation in the form of jails (chroot-like environments)
Whilst I wholly recommend FreeBSD, unfortunately a number of modern applications prevent use of FreeBSD as a software development system for the Java / JVM software. For example, applications such as VirtualBox and Java / JVM are not yet available except in the form of community ports which lag to some extent behind the latest bug fix releases available on other platforms.
Although my first experience with Unix-like operating systems on x86 hardware came through an early version of Linux (circa 1994) and whereas a distribution such as Ubuntu, Fedora or OpenSUSE would seem a natural, more widely accepted, alternative to FreeBSD in almost all past installations of Linux I have found that installation of certain applications such as the AMP components (Apache, MySQL and PHP) from source has been extremely problematic - mostly due to shared library and dependency issues. Furthermore, each Linux distribution has its own file system layout that makes movement between Unix-like operating systems more difficult.
Like most modern Linux distributions, OpenSolaris installs very easily using a graphic-based user interface. By default, OpenSolaris formats the boot disk using ZFS. Without a doubt, ZFS is an impressive file system. In particular, it supports disk mirroring and integrity checking by way of checksums. It also implements a copy-on-write data storage model that facilitates low cost creation and management of individual file system 'snap shots'.
In addition to ZFS, OpenSolaris supports zones (also known as containers in Solaris and jails in FreeBSD) which are light-weight virtual machines.
Problems inherent in simultaneous 32-bit / 64-bit support
Unfortunately, the 32-bit / 64-bit capability of OpenSolaris running on an AMD 64 bit platform appears to create a number of problems when compiling common tools and software in particular, with reference to the so called Application Binary Interface (ABI) and also the compilation of shared libraries with Position Independent Code (PIC).
Installing gcc toolchain
On fresh installation, OpenSolaris 2009.06 is packaged with gcc version 3.4.3. It is inevitable, with the volume of open source software written for Unix-like operating systems, that some open source software will prefer to be compiled with certain versions of the gcc compiler; whether version 3 or 4.
Compiling gcc 4.4.3 on OpenSolaris x86_64 was problematic initially, principally due to the need to compile two libraries: gmp (GNU Multiple Precision library) and mpfr (Multiple Precision Floating-point library with correct Rounding) to provide mathematical arithmetic support. Compiling gmp (and mpfr?) direct from the tarball results in libraries generated using a 64-bit ABI. In contrast, out of the tarball, gcc is compiled as a 32-bit application requiring libraries generated using a 32-bit ABI.
Although gnu binutils can be compiled on OpenSolaris, most documentation I have reviewed suggests that, on Solaris, gnu ld is "buggy" and, accordingly, Solaris' own version of ld should be used.