GNU/Linux
Posted on March 5th, 2005 in No Comments »
GNU/Linux consists of two parts: the kernel and the applications. The kernel is the operating system itself. It manages communication with hardware, memory, processes etc. The applications sit on the kernel and start asking the kernel to do things for them that they don’t have access to. That’s a really rough sketch, but it should suffice to make my point. Linux is simply the kernel. It manages all the kernel things. All the applications that are built to work with Linux typically come from independent application builders or programmers.
Hence the name GNU/Linux, though typically we don’t see much about the GNU stuff. What is GNU? GNU (GNU’s Not Unix) is a development effort to create a free operating system for wide-spread use. It is associated with the Free Software Foundation (FSF) which is a group of developers and corporations that believe that software should all be free. Totally free as in free speech, not free as in beer. You may have heard that saying before – it’s quite popular in the geek crowd. Basically they are making the point that software should be free for the user to do whatever they want with it. They can use it, modify it, give it away – they have the freedom to do whatever they want with it. This is a fairly philosophical topic for the FSF, so I’ll point you to their own description of freedom for more information.
So we have a kernel (Linux) and a bunch of programs available for use (GNU). If we were to select a few of the very best programs and package them up with the Linux kernel we would essentially be doing what the Linux distributions do. The distribution is the Linux kernel (or a number of different kernel versions) and a collection of applications. This may not sound like much in terms of differentiating between distributions, but they do a little more than this. If you have ever tried GNU/Linux you will know that there are 50 different applications available to do a single task. Everybody has their favorite text editor, and they have a huge number to choose from. What the distribution does is it decides which programs to include in their various versions, and packages them up for you. The key here is the word package. Everything in Linux-land is available as source code. This is the actual code that the developers edit and modify before creating the program for use. The code by itself is pretty useless, unless you compile it into a nice working program. This process of compiling is not terribly user-friendly, so a number of distributions have created a package system. This system allows for easier installation of programs and libraries.
So the difference between Red Hat and Debian really comes down to two things:
- The programs included by default with their distribution
- The packaging system used to maintain track of what is and what is not installed
Yup, that’s the basic truth. If I run a program on Red Hat then you bet I can get it to run on Suse, or Mandrake, or Slackware. Of course this is a very simple way to look at distributions. The truth is that there are some low-level differences between each one. After all GNU/Linux is designed to be adapted to the user’s needs. Each distribution adapts their own operating system in various ways and sometimes these differences really make it difficult to move applications from one distribution to another.
What do I use? Read on …
