A look beyond the Linux teacup – Unix-likes

Yes, I know. I said that I’d play with a new version of the DDD when I wrote the previous entry. Well, I did. Actually I made some nice progress on it, too. However there’s one little issue which ruined the whole thing for me: A new version of the tool which I use to build the live-image (ArchISO). The ability to produce isos for just one architecture (i686 in my case) was dropped and now it can only build dual isos – which are of course twice as big! I found a patch but still could not get things working. For that reason I decided to postpone it.

For quite a while I’ve been interested in things that lie just a few meters behind die Linux “border”: Other Unix-like systems. And just recently I made some discoveries – two of which I’ll cover with the next post and a third one which may be the topic to the one thereafter. But first let’s discuss a few basics.

Attractiveness of Linux

We live in very interesting times when it comes to operating systems: The quasi-monopoly of Microsoft’s Windows for home PCs is taking severe blows. No, I don’t want to predict that they are done for. On the opposite: I think that they will manage to hold extremely high market shares for quite a while in the future. And I also don’t want to talk about mistakes of Microsoft (like Vista or 8’s “Metro”/”NewUI”).

What does really shake the monopoly is the fact that Linux is becoming a real alternative. It has been in the server sector for a long time now and for the above-average user in general, too. But now one of the (at least commercially) most important frontiers is crossed: Linux is getting fit for gaming.

That’s why more and more computer users are “giving it a try”. Fortunately there are quite some distros today which require little to no previous Linux knowledge and let you complete the installation without having to know what run levels are or how mount points work. While this can rightly be called a good thing, it does have two sides (like all things do). Linux systems can be extremely convenient these days (just think of the superior package management when combined with some kind of “software center” as Ubuntu has one!). This however bears the risk of a “new generation” of “Linux users” who are content with just having an “easy” and quite stable system.

Unix-likes

It’s those people who didn’t really get that technically the term “Linux” refers to the kernel only (a little more on that in a minute). There’s more than one operating system which works somewhat or even very close to how Unix functions. That’s why people talk of a Unix-like system or *nix. Some systems comply with the entire POSIX standard of Unix and some are even certified to be rightfully called Unix. Especially the later however is more of a commercial thing. If you’re new to all this, you’ll be astounded just how many “true” Unices there are – not even to talk about the Unix-likes!

People often distinguish between a certified Unix, functional Unix (the typical Unix-like which tries to emulate the functions provided by Unix) and a genetic Unix (which derived from the source code of a Unix system).

Just like noted before, there are quite some members of the large family of Unix-likes. Just a few examples:

  • BSD
  • Linux
  • Mac OS X
  • Minix
  • NeXTSTEP
  • Solaris
  • SunOS
  • System V
  • Xenix

Some of these can actually be regarded as sub-categories. For example there are several BSDs which derived from 386BSD:

  • NetBSD
  • FreeBSD
  • OpenBSD
  • DragonFly BSD

Kernel

What’s a kernel? Think of it as the “core” of your OS if you’re not yet familiar with that term. The kernel is what really interacts with the actual hardware. The before-mentioned superficial Linux user may not care (or even know it), but strictly speaking Linux means the kernel only and thus refers to an operating system component rather than an entire OS. Usually “Linux distributions” pack together the Linux kernel and the GNU operating system basis (plus some or even a lot of other applications).

It’s important to know of the two different areas in system memory: Kernel space and user space. Why is that relevant? Simply because without it you won’t understand the difference in kernel design. The kernel is almighty (and has to be) while the applications running in user space can also be run underprivileged (and thus can’t do harm to your system). People typically distinguish between the kernel and the userland (the programs running in user space).

There are different approaches when it comes to classify a kernel. Linux is a so-called monolithic kernel which means that it’s “one big thing”. Most of the important things low-level things are handled by the kernel. Linux is modular, though. It can load and unload kernel modules (like drivers) while running without having to restart the system. Another idea is that of a micro kernel (e.g. Minix). Here the kernel is only doing the most basic stuff and everything else is provided by user space programs.

What’s next?

For people who don’t stop with a just working system and instead like to dig a little deeper there are some other playgrounds besides Linux-based systems. As collected above, there’s a great many of other Unix-like systems which use another kernel and a (sometimes slightly) different userland. The next blog entry will present two of them: BSD and HURD.