It’s always good to remember that there are more OSes in the world than just Windows and Linux. Solaris is a robust and coherent operating system that makes an excellent platform on which to run (for example) Oracle’s database. So here’s how I got Solaris 11.1 working (in a KVM-on-Fedora virtual machine, just for the record!)
2. Obtaining the Software
Since Solaris is now owned by Oracle, the OS is downloadable from the OTN website. Immediately you view that linked page, you’ll have to make a choice as to the flavour of Solaris 11.1 you want to install.
If you want the full-on Gnome 2 desktop experience, for example, you would download the Oracle Solaris 11.1 Live Media for x86 option (all 966MB of it). It’s a nice desktop as these things go, and on the whole a very ‘familiar’ one to anyone that’s used a Gnome-based Linux. However, this article is about building a Solaris 11 server, and servers don’t need fancy desktop environments, no matter how familiar they might be.
Therefore, I downloaded the purely text-based option, referred to on the download page as Download for x86 – Text Install. It’s a significantly smaller download than the desktop version, too: a mere 585MB -and it’s what the rest of this article assumes you will use.
I should note in passing that all flavours of Solaris 11 are purely 64-bit. This is a good thing! But the use of “x86″ in the download links might confuse some people who are used to spotting the difference between an “x86″ and an “x64″ Linux distro, for example. In this case, Oracle uses “x86″ merely to distinguish the Intel-based version of its O/S from the SPARC-based version: its use doesn’t imply anything about whether the software is 32- or 64-bit, because there simply isn’t a 32-bit version of Solaris 11.
With your Solaris ISO safely downloaded, you can burn it to CD or DVD, and proceed to boot your PC with it. In my case, I can boot my virtual machine directly from the ISO, so no physical CDs are necessary. Either way, this is what you’ll first see once the initial POST tests have completed:
Here, you are to select a keyboard layout. The default option (27 – US English) applies in Australia, so I can just press [Enter]. You make whatever selection is appropriate for your circumstances, of course.
Now, for the most part, the rest of the installation consists of similarly pressing [Enter] to accept a default suggestion, or [F2] to move on between interactive screens. I won’t bore you with screenshots of every screen you’ll see, but these are the important ones:
It always strikes me that there aren’t a lot of installation languages to choose from here, but if you speak English, pressing [Enter] will do just fine! After that, you’ll finally get to choose what it is that you’re hoping to do:
Pretty obviously, I hope, we want to do an installation, so Option 1 needs to be selected here, before pressing [Enter] once more. At this point you’ll transition to the ‘white graphical’ part of the installation:
That’s just a welcome screen, full of text you can pretty much ignore. Notice, though, that the ‘moving on’ button has now become the [F2] key. Press that now to move on to something more interesting. First, you choose how to discover your hard disks:
This is new to Solaris 11.1 (it wasn’t there in the original Solaris 11) …and is almost certainly irrelevant to anyone doing this at home in virtual machines. The default selection for ‘local disks’ will probably be fine, so just press [F2] to move on:
At this point, you can choose between your discovered disks for an appropriate installation candidate. In my case, life is easy because I only have one (virtual) hard disk that could ever be the candidate drive for installation. If you have more than one disk, use the up and down arrows to navigate to the one you want to be the target for the ‘main install’, then press [F2].
You can do all sorts of fancy stuff here, but I’m going to recommend that you simply allocate the entire hard disk to the Solaris installation. It keeps things simple, anyway. Again, use the arrow keys to highlight the correct option, then press [F2] to move on.
Your new server will need a unique name. This name doesn’t include the domain component (you get to specify that later). All my servers are named after famous physicists, so that’s why you see what you see here. Once you’ve typed that name, press the down-arrow key to select the “Manually” option: this is controlling how your new server’s IP address will be assigned. Servers shouldn’t use DHCP, so the ‘automatically’ option is not really appropriate here. And a server that has no network connection at all is a bit of a waste of time… so the ‘None’ option is just silly! Press [F2] once the ‘manually’ option has been selected.
The details you see here happen to be right for my home network. You substitute in whatever is appropriate for your own circumstances, of course. The machine needs a unique IP address and (because it will later download additional software from the Internet) needs to know which machine is providing gateway access. What Solaris calls “router” a lot of other OSes call “default gateway”, meaning “the machine that has and provides access to the Internet”.
Once you press [F2], you’ll be asked whether you want to configure DNS: select the option to do so and then press [F2] once more:
Here, you need to specify the IP address of the servers providing DNS capabilities to your network. In my case, it happens that the same machine which acts as the default gateway is also providing DNS lookup capability, but you type in whatever IP addresses are appropriate for you. Press [F2] yet again to move on when you’re ready:
Here you get to specify the name of the domain of which the new server will be a member. Press [F2] to continue, and then press it again, because you’ll be asked whether you’re using LDAP or NIS for name service resolution (to which the answer is almost certainly ‘no’, which happens to be the default).
After that, you’ll be asked to pick a time zone for the new server. This may involve making a couple of ever more detailed selections on different screens, pressing [F2] to advance through them, until you eventually end up selecting the specific time zone that applies to you:
With the time zone selected, you’ll then be asked to specify the actual clock time. Usually, you can just press [F2] to accept the suggestions automatically made. After that, you’ll have to set up root and non-root accounts, as follows:
Obviously, you those details with whatever applies to you. The real point is, though, that your Solaris server will be created with the ability to perform both root and non-root access from the start. Once you press [F2] to move on, you’ll see a new screen that asks you for email contact details:
I’ve blanked the email address out: I’m not interested in linking my Solaris servers with Oracle’s on-going support and marketing efforts. Pressing [F2] with an empty email address causes this error to appear:
As you can see, pressing [F2] again will let you move on regardless -and, in fact, allow the installation process to begin:
That now chugs along for a few minutes (it’s a pleasure to discover how little time the installation of this O/S actually to takes, to be honest!), and then you’ll see this:
As the screen tells you, press [F8] at this point to initiate a reboot. For a while, you’ll see one of the previous screens showing a menu with options 1 – 5. You’ll be tempted to select option 5 there to confirm a reboot… but actually it’s not necessary. Just hold tight and be patient, and the reboot will take place all on its own. Finally, you’ll see something like this:
…and that’s the Solaris 11.1 O/S installation completed (we’ll deal with those error messages that have appeared there in just a moment). You can log on at this point -but not as root. If you try logging on as root, you’ll be told that ‘roles cannot login directly’. This is a good thing! Instead, you log on as the non-root user you created during the installation and issue the command
su - root
…to become the root user indirectly. You should do that now, because much of what follows requires root privileges to complete!
4. Post Installation Issues
If you’re running Solaris 11 in a KVM virtual machine, you will probably see lots of error messages that read: “No SOF interrupts have been received..USB UHCI is unusable“. Therefore, having become root, issue this command:
That removes the USB driver which the Solaris/KVM combination has trouble virtualizing, and after one more reboot, you shouldn’t see those errors any more. (Note that this error doesn’t appear to happen if you’re using Solaris 11.1 in a KVM, but definitely happened with Solaris 11.0… I’ve left the instructions here in case you encounter the problem when experimenting with earlier releases of the OS).
Apart from that KVM-specific issue, you’ll need to alter a couple of hostname-related issues. First, check whether you have a proper domain name component set with this command:
Chances are, that command will return nothing at all -indicating that no domain component for your hostname is set, despite what you may have specified during the O/S installation process! To fix that, just issue the same command again with an added domain component. In my case, as root, I type this:
Additionally, you should edit your /etc/hosts file so that your real IP address appears at the top of the file together with both a long-form and short-form hostname. For example, immediately after a fresh Solaris 11 installation, my hosts file looked like this:
# # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # Internet host table # ::1 localhost 127.0.0.1 localhost loghost 192.168.0.53 kelvin
To knock things into shape, therefore, I re-arranged things slightly to end up with this:
# # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # Internet host table # 192.168.0.53 kelvin.dizwell.home kelvin ::1 localhost 127.0.0.1 localhost loghost
The entire 192.168… line appears before any other. You should finish up by ensuring you can resolve both forms of your hostname, using commands such as:
ping kelvin ping kelvin.dizwell.home nslookup kelvin nslookup kelvin.dizwell.home
Bear in mind that the nslookup command will only return a correct result if you’ve configured your local DNS server correctly.
5. Installing Additional Software
I have one primary goal for my new Solaris box: running Oracle 11g. Installing Oracle without an X server, however, is tricky at best! Additionally, there are a couple of other software packages which, if they are not present, will cause the Oracle installer to fail. Therefore, as root, issue the following command to achieve a Solaris system that is at least ready to have Oracle’s database installed on it:
pkg install SUNWmfrun pkg:/x11/library/libxp xauth xclock xterm x11/diagnostic/x11-info-clients SUNWhea SUNWi1cs SUNWi15cs SUNWscp
That’s ten additional packages, amounting to about 29MB in all -and, obviously, the command assumes that your Solaris box is connected to the Internet. (There’s a way of setting up a Solaris package repository that enables internal-network-only software installations, but that’s outside of scope for this article).
6. Configuring Remote Graphical Access
Once the X software and other packages have been installed, you’ll now need to connect from a remote graphical system of some kind to ensure that X applications can run properly and display themselves on your “client PC”. There are different ways of doing this, depending on whether you’re running Windows or Linux as your main desktop O/S.
6.1 Remote Connections to Solaris from Windows
In previous versions of this article, I suggested the use of Xming as a simple way of getting the Solaris box to display on a Windows PC -and you can still use that if you like. However, one of the regulars mentioned in the comments that MobaXtermis a lot simpler to use… and after due consideration, I agree completely. So, thanks to Ales for the tip! You’ll want to download the free personal edition and then install it as you would any Windows program.
When you then run it, you’ll see something like this:
As you can see, it’s quite a “busy” interface …but you just treat it as a Unix terminal and invoke ssh with a connection string. My new Solaris server was given IP address 192.168.0.53 and I’m connecting to it as the user “hjr”, which is the non-root account I created during the O/S installation. (Note that root cannot log in via remote connections unless ssh is re-configured, but it’s really not necessary and not being allowed root connections is the secure and sensible option, of course!)
Once you’re connected, you can test that the Solaris box can display running applications on your PC simply by launching one of them. For example:
…which I included in the earlier list of extra software packages to install. Type that, and you should see something like this appear on your Windows desktop:
Admittedly, it isn’t much -but that’s a proper Solaris X application running on a Windows desktop. As you can see from that screenshot, the Solaris box might complain about “fontset conversions”, but these are common and can almost always be ignored. My xclock is displaying just fine, anyway!
Of course, the real point here is that it needn’t just be something simple, like xclock: it could just as well be the Oracle Universal Installer, or the Database Configuration Assistant running on your new Solaris server but displaying its output on your desktop. So long as one X application can display on your PC’s desktop, all of them can.
6.2 Remote Connections to Solaris from Linux
Linux users have an easier time doing this sort of remote desktop work, because the necessary tools (an X server and ssh) are almost certainly already running on their desktops already, without the need for any additional software installations. I use Fedora 17 as my main PC’s desktop OS these days, anyway, and that is certainly true. So all I have to do is open a terminal (on my PC, not the Solaris server) and type the following:
ssh -X firstname.lastname@example.org
You’ll be prompted for user hjr’s password, but then you’ll be running a terminal remotely and your prompt will be for that of the Solaris box:
[hjr@dirac ~]$ ssh -X email@example.com Password: Last login: Fri Oct 26 05:36:32 2012 from 192.168.0.100 Oracle Corporation SunOS 5.11 11.0 November 2011 hjr@kelvin:~$
The “-X” bit in that command does ‘X forwarding’ over the ssh connection, meaning that X applications on the Solaris box know to display their graphical components on your Linux PC’s desktop. Now all you’ve got to do is launch a graphical application : xclock is, once again, a good test for these sorts of things. So in your Linux terminal session, type the command
…and watch what happens. You should discover that your PC’s desktop suddenly has a new application being drawn on it by the Solaris box:
Once again, the principle is simply to get a terminal session connected to the remote box: from there, you can launch any graphical application and have its output re-directed to your own desktop.
Such an arrangement makes for a very lean server: it’s only running the bare minimum of X server stuff, not a giant GUI desktop environment, like Gnome or KDE, yet it’s capable of being accessed in GUI mode should you need to (which you will for an Oracle installation, at least!). But performing that Oracle installation is a story best left for another article, since this one has gone on for so long already!