A bit of Sun's history that still lingers on in Illumos
The uname
command (and system call)
exist to give you various information about the machine you're on.
For example, what Unix it runs, which is handy if you have scripts
(or programs) that are run on multiple Unixes where you want to do
different things.
(This is our situation with our two concurrent sets of fileservers, the OmniOS ones and the Linux ones.)
The result from 'uname -s
', the name of the operating system, is
pretty straightforward (unlike some of the other uname options; go
ahead, try to guess what 'uname -i
' is going to give you on a
random Unix). On FreeBSD you get FreeBSD
, on OpenBSD you get
OpenBSD
, on Linux you get Linux
or, if you insist with 'uname
-o
', GNU/Linux
. On OmniOS and in fact any Illumos system, well:
$ uname -s SunOS
Wait, what?
Once upon a time there was Sun Microsystems, who made some of the first Unix workstations. Their Unix was a version of BSD Unix, and like basically every early Unix company they couldn't actually call it 'Unix' for various reasons. So they called it SunOS, and it had a storied history that is too long to cover here (especially SunOS 3.x and 4.x). It of course identified itself as 'SunOS' in various things, because that was its name.
In the early 1990s, Sun changed the name of their Unix from SunOS
to Solaris at the same time as they replaced the code base with one
based on System V Release 4 (which they had
had a hand in creating). Okay, officially 'SunOS 5' was there as a
component of this Solaris thing, but good luck finding much mention
of that or very many people who considered 'SunOS 5' to be a
continuation of SunOS. However, 'uname -s
' (still) reported
'SunOS
', possibly because of that marketing decision.
(I'm not sure if SunOS 3 or SunOS 4 had a uname
command, since
it came from System V. By the way, this history of 'SunOS 5' being
the base component of Solaris is probably why 'uname -r
' reports
the release of Illumos as '5.11
' instead of '11
'.)
Once the early versions of Solaris reported themselves to be
'SunOS
', Sun was stuck with it in the name of backward compatibility.
Scripts and programs that wanted to check for Solaris knew to check
for a OS name of SunOS
and then a 'uname -r
' of 5.* (and
as SunOS 4 faded away people stopped bothering with the second
check); changing the reported operating system name would break
them all. No one was going to do that, especially not Sun.
When OpenSolaris spawned from Solaris, of course the 'uname -s
'
output had to stay the same. When OpenSolaris became Illumos, the
same thing was true. And so today, our OmniOS machines cheerfully
tell us that they're running SunOS, an operating system name that
is now more than 30 years old. It's a last lingering trace of a
company that changed the world.
(In Illumos, this is hard-coded in uts/common/os/vers.c.)
(I was reminded of all of this recently as I was changing one of
our fileserver management scripts so that it would refuse to run
on anything except our OmniOS fileservers. Checking 'uname -s
'
is really the correct way to do this, which caused me to actually
run it on our OmniOS machines for the first time in a while.)
Comments on this page:
|
|