Introduction to Linux
{LANG_NAVORIGIN} Operating System Linux
Colin Sauze
05/27/2005
In this article we look at an overview of Linux and the concepts associated with it.
What is Linux?
Linux is an Open Source Operating System kernel, this means it contains a core set of functions needed by most programs. The kernel is the base of the operating system. Everything communicates with the kernel, and the kernel is responsible for passing that information between the application layer and the hardware. Linux is often thought as being an entire operating system complete with a wide range of applications, it isn't. This is what’s known as a Linux Distribution. The Linux kernel is compliant with a standard known as POSIX.
Linux was originally written entirely by Linus Torvalds, a Finish Computer Science student in 1991. Torvalds wrote Linux to run on his 386 PC because he wanted an alternative to Minix a commercial Unix like Operating System for PCs. After completing the initial version of Linux he placed a copy on the internet and posted a now famous message on a news net discussion board. He referred to it as being a hobby and that it wouldn't be big and professional like GNU, how wrong he was!
At first Linux was not released under the GPL, but Torvalds decided to change this in 1992. Since then thousands of people and companies have contributed to it and it has become one of the most popular open source products ever and is used by millions world wide.
One common source of disagreement is how to pronounce Linux, according to Linus Torvalds its “Lee-nux”, there is a sound file available with Linux pronouncing Linux, a link to this is available at the end of this article. Linux has adopted a penguin known affectionately as “Tux” as its mascot, Tux has proven himself as a very successful mascot and makes Linux products very identifiable.
The Linux Kernel
The Kernel is the core of an operating system, it deals directly with the hardware and then presents the other programs on the system with a common way to access the hardware regardless of underlying details. It also performs a lot of co-ordination roles such as allowing multiple processes to share the computers resources as well as managing file systems, networking and security. The Linux Kernel is a huge piece of software and is growing in size at a phenomenal rate. People often talk about Linux as if its an operating system, its not, its only the kernel one part of an operating system. You may sometimes here Linux referred to as GNU/Linux, this is because Linux is usually bundled with all the major components from the GNU project which aimed to make a completely open source operating system but the Linux kernel appeared before the project was completed (its still not completed).
Kernel Versions
The Linux Kernel has a somewhat unusual version numbering system. Each release is numbered with 3 numbers, we shall refer to these as X, Y and Z from now on. The numbers are always shown in the format X.Y.Z. The latest kernel at time of writing is 2.6.7 (so X=2, Y=6, Z=7). Version 2 (X=2) has been around since about 1996 and you are unlikely to find a system today not running some kind of version 2 kernel. Version 2.6 was released in late 2003, changes to the Y version seem to occur about every 2 years and this tends to involve major changes to the kernel as well as a host of new features being introduced. Z versions tend to change every month or so and it can be very difficult to keep up with the latest change to the Z version, for example the current latest kernel is 2.6.7 but I am still using 2.6.3 on my PC which I only reinstalled 2 months ago with a brand new Linux distribution. The changes tend to be minor and introduce minor bug (error) fixes and introduce minor features, there are typically about 25 Z version changes before the Y version changes.
Building your own kernel
The kernel like most computer software must be “compiled” or changed from a high level code understandable by humans (in this case the C programming language) to a low level code understandable by the computer known as machine code. Many people, especially advanced users recompile their Linux kernels to fine tune them or add extra functionality to them. There are literally hundreds of configuration options for the kernel. If you download the kernel and compile it you will find many of its features are disabled and there will be some which are enabled but of no use to you. By tweaking these options extra features can be enabled and unwanted ones disabled, this helps people to get the kernel doing what they want and makes it smaller and faster by removing unneeded options. There are several different types of kernel options, some govern whether a particular piece of hardware (for instance a type of network card or webcam) will be supported, others determine if features within the kernel such as extra security or advanced management of internet traffic are enabled.
Most people will never need to compile their own kernel as the kernels shipped in Linux distributions are usually sufficient, these kernels tend to turn on every option possible and may not be fully optimised for your system, they may also lack the very latest additions to the kernel. On the other hand they sometimes include additional changes which dramatically improve the kernel and they are better tested (and hopefully more stable) than the official kernels. Many Linux HOW-TO documents tell you to make sure certain options are set in your kernel configuration, if you are using the default kernel that ships with one of the popular distributions you will find that in about 95% of cases the required options are already enabled and these steps can be skipped over.
Linux Distributions
As was previously said, Linux is just the operating system kernel and does very little on its own. To obtain a use-able system you need to get what is usually called a Linux Distribution. This is a Linux Kernel bundled with lots of other software which hopefully lets you do something useful. Most of the software shipped in most Linux distributions is like the kernel open source software and much of it was actually created for the GNU project. Because this software is open source Linux distribution makers often copy each others distributions, make minor changes and then re-release them under a new name.
What does a distribution actually contain?
This depends on what its meant to do. Some Linux distributions focus on very specific tasks such as running a print server or pretending to be a wireless access point while others are for general desktop users and try to offer them the kitchen sink. A typical distribution for desktop users will include office software, photo editors, web browsers, various server packages, a few games, video and audio players, cd burning software, instant messengers and the X Windows system which allows you to have a graphical environment similar to Microsoft Windows.
X-Windows, KDE and Gnome.
A typical desktop distribution will include the X-Windows system, this is a graphical environment a bit like Microsoft Windows in that it provides the user with the ability to have movable Windows with menus and buttons/icons and to have different programs place their output in different Windows. However unlike Microsoft Windows, X-Windows (often known as X) r does is to allow other programs to access the graphics display and draw what they want. In order to make X useful you must have a piece of software called a Window Manager which actually decides on the look and feel of each window and may provide extra features like a Desktop, task switching, file management etc. This approach means that you can change window managers and completely alter the look and feel of your system. There are many, many different Window Managers in existence, some are very simplistic and difficult to use while others are much easier and give the user an environment much closer to that of Microsoft Windows.
Despite the immense numbers of window managers available most people have settled on 1 of 2 common ones. These are KDE or the K Desktop Environment and GNOME or the GNU Network Object Model Environment. Both of these provide many features similar to Microsoft Windows although they are generally more customisable and flexible. GNOME is usually regarded as taking less memory although KDE is often considered to be easier to use. There is nothing to stop you installing and trying out both and thats probably the best way to decide which to use, most distributions ship with both to allow this.
Another major difference between Microsoft Windows and X is that under X each program must use something called a widget to determine how it will look, whereas in Windows there is basically only 1 common widget which all programs will use. This can lead to some applications appearing very different to others. Both KDE and GNOME include their own widgets which all their built in applications (as well as many other applications) use, these are known as QT (KDE's one) and GTK (GNOME's one). The result of this is that you often have applications with a GNOME style appearance on your desktop while running KDE and vice-versa. This can cause an inconsistent look and feel across the desktop but it also allows developers more choice in how their applications will appear. It should also be noted that just because you installed KDE and not GNOME (or vice versa) that GNOME applications will still run and still appear as they normally would.
One of X Windows greatest strong points is that it is designed to work over networks. X works by running a program called an X Server on each machine which is to display anything, this “server” then takes connections from clients who want to send their output to the display. X clients include the Widgets, the Window Managers and any programs the user themselves has run (e.g. A wordproccessor or web browser). These clients can either be running on the local machine or a remote machine. For more information on running X applications from another machine see the link to the Remote-X-Apps howto in the links section. Because of this ability many people use very low powered computers (perhaps an old 486) and connect several of them to a more powerful computer. They have each low powered computer run an X Server and the powerful computer actually run the applications, this means several users can share one powerful computer between them. This is known as thin clienting and is becoming a very popular use of X Windows as it greatly reduces the cost of computers however its not really suited to environments where everyone is watching videos or playing games but for word processing and web browsing it works fine.
It is also possible to turn a Windows machine into an X Server and run applications from your Linux machine but have the output appear on a Windows machine, see the references section for some links about how to do this.
More Linux tutorials and guides
E-Mail Link
Your IP address will be sent with this e-mail