Ads 468x60px

Linux

Introduction to Linux



History and genesis of Linux


This entirely free operating system is the brainchild of Linus B.Torvalds. At the beginning of the 90s, Torvalds wanted to create his own operating system for his graduate project. Linus Torvalds intended to develop a version of UNIX which could be used on a 80386 type architecture. The first UNIX clone which worked on a PC was Minix, written by Andrew Tanenbaum, a minimal operating system which could be used on a PC. Linus Torvalds then decided to expand the possibilities of Minix by developing what would become Linux. Amused by this initiative, a number of persons contributed to help Linus Torvalds turn this system into reality, and in 1991, a first version of the system was published. In March 1992, the first version containing almost no bug was distributed.

With the growing number of developers working on this system, the system quickly integrated free redevelopments of tools available on commercial UNIX systems. Aftwards, new tools for Linux began to appear at an incredible rate.

The originality of this system resides in the fact that Linux was not developed for commercial purposes. As a matter of fact, not a single line of code has been copied from the original UNIX systems (as a matter of fact, Linux takes its inspiration from numerous commercial versions of UNIX: BSD UNIX, System V.). Therefore, once created, everyone is free to use Linux, but also to improve it.

There are several different ways to pronounce Linux:

    In Anglo-Saxon countries, there are two different pronuncations:
        "linnuks"
        "lynuks"

Although Linux was initially designed to run on the PC platform, it has since been expanded (i.e. adapted) for a number of other platforms such as Macintosh, SPARC stations, DEC Alpha stations, and even platforms such as for personal assistants (PDA), even videogame consoles!
Concepts of kernel and distribution

Linux is structured around a kernel (in English kernel) which is responsible for managing the hardware. The term distribution refers to the assembly of a set of software around a Linux kernel to provide a ready-to-use system. The kernel of a distribution can be updated to make it possible to include recent hardware. However, this step, which involves recompiling the kernel, is delicate since it requires a certain level of knowledge of the system and hardware. Recompiling hte kernel must be reserved for specializts or users that are ready to make their system unusable for learning purposes.

Most distributions also propose their own graphical installation as well as a packet management system which makes it possible to automatically install software by managing dependencies (software under Linux is sometimes linked to external libraries or based on other software).

Each distribution has its advantages and disadvantages: As a matter of fact, some or more suitable for beginners and provide sophisticated graphical interfaces, while others emphasize security and developability. The best known distributions are:

    The RedHat distribution;
    The Debian distribution;
    The SuSe distribution;
    The Knoppix distribution;
    The Slackware distribution;
    The Mandriva distribution.

The GPL license of GNU


The source code of the Linux kernel can be accessed free of charge, as a result of which this system can be compiled on platforms other than PC. To allow the royalty-free distribution of programs, the FSF foundation (Free Software Foundation) has developed a project with the name GNU (a bit of history: GNU is a recursive acronym which stands for "GNU is Not Unix"). The GNU users are bound by the terms of the usage license GPL (General Public License), which describes the legal terms of use, distribution or modification of the source code.
Below, you will find a non-exhaustive list of some aspects of this licence:

    the GPL licence makes it possible to modify the original program and to distribute it (under the GPL licence);
    the GPL licence authorizes the sale of the free software in original or modified form, provided that the seller authorizes the distribution (even free of charge) of such modified software;
    the GPL licence authorizes the use of the software for profit purposes (allowing profits);
    software under the GPL license remains the property of its authors, and nobody is entitled to assume all or part of the copyrights;
    the licence does not involve any form of compensation of the authors.

This licence is sometimes called copyleft, by analogy with copyright, an English word which means "the rights of the author" (the English word right means both direction -for example, "towards the right"- and permission -as in "right of use"- whereas left means both direction -"towards the left"- and the past tense of the verb to leave, i.e. leaving broad rights - in particular of modification - to the future user).
System characteristics

Linux is an operating system similar to UNIX systems that can be run on different hardware platforms: x86 (i.e. platforms based on Intel, AMD, etc. platforms), Sparc, PowerPC, Alpha, ARM, etc. The Linux system therefore also works on personal computers as well as on gaming consoles or personal assistants!

Linux is therefore a multi-platorm system. It is also multi-user (several persons can work on the same computer at the same time), but also multi-task (several applications can be launched at the same time without interference between them) and multi-processor.
Linux is considered a reliable, solid, and powerful system. It is furthermore able to run with very little resources on very low-performance computers.

In particular, the Linux system has the following advantages:

    Supports Internet standards, i.e. TCP/IP protocols, the family of protocols used on the Internet. Linux is a free tool to create local networks, connect to the Internet, and set up a servers.
    Increased security due to the transparency of its source code and the responsiveness of the community as soon as vulnerabilities are announced.
    Separation of the memory and disk spaces in combination with specific management of the rights which allow the management of a large number of users with a minimal level of risk.
    A kernel that is fully configurable depending on the machine hardware on which the system is installed to maximize performance.

System X


X is a graphical interface which was developed at MIT and which makes it possible to create graphical applications which run on different platforms.

X-Window is the graphical interface of UNIX stations. In some way, X-Window is for the Unix systems what Windows is for DOS (make sure not to say X-windows, or you risk to be flamed by a UNIX fan). The most significant advantage of this system is that it uses a graphical interface in addition to certain commands.

Under Linux, there is a free implementation of the X-Window system called XFree86. XFree86 supports a very significant number of video cards, but some video cards are not supported. However, with the free community, the inclusion of new graphic cards is becoming increasingly fast!
The documentation on Linux

Since Linux is a system that can be distributed freely, its documentation is very comprehensive. As a matter of fact, when Linux was developed, a large number of people created small user guides. However, they were generally too complicated to be accessible for the entire Linux community and were mostly written in English and other Languages.


Packages and Package Management


This section covers the basic concepts of packages and package management. You will learn about what a package is, the differences between different types of package and also how package management works on Linux.

 What is a package?


Software is a very broad term, and is generally taken to mean a program which you can run on your computer. However, such programs often need other resources to work. When you install software, thousands of files may be required just to let the program start! When you think that they all have to be put in exactly the right location, and some of those files may need to be changed depending on what type of computer you have, it can all get very complicated. Luckily, Linux can look after this complexity.

Linux uses packages to store everything that a particular program needs to run. A 'package', then, is essentially a collection of files bundled into a single file, which can be handled much more easily. In addition to the files required for the program to run, there will be special files called installation scripts, which copy the files to where they are needed (amongst other things).

Source or Binary?


Normally, when someone makes a package for a program, they put all of the source code for the program into that package. Source code is written by programmers and is essentially a list of instructions to a computer which humans are able to read and write. Computers can only understand this code if it is interpreted for them into a form that they can use directly. One such way of interpreting source code for a computer is by translating or compiling it into binary, which computers can understand.

So why don't the people who make the package (called packagers) just convert it into binary from the start? Well, different computers use different types of binary, so if you make a binary package for one type (like an Intel PC), it won't work on another (like a PowerPC).

Source packages are simply packages which just include source code, and can generally be used on any type of machine if the code is compiled in the right way. (For information on how to compile and install source packages, see CompilingEasyHowTo).
Binary packages are ones which have been made specifically for one type of computer, or architecture. Ubuntu supports the x86 (i386 or i686), AMD64 and PPC architectures. The correct binary packages will be used automatically, so you don't have to worry about picking the right ones. To find out which one you are using, open ApplicationsAccessoriesTerminal, type uname -m then hit the enter key.

Package Dependencies


Programs often use some of the same files as each other. Rather than putting these files into each package, a separate package can be installed to provide them for all of the programs that need them. So, to install a program which needs one of these files, the package containing those files must also be installed. When a package depends on another in this way, it is known as a package dependency. By specifying dependencies, packages can be made smaller and simpler, and duplicates of files and programs are mostly removed.

When you install a program, its dependencies must be installed at the same time. Usually, most of the required dependencies will already be installed, but a few extras may be needed, too. So, when you install a package, don't be surprised if several other packages are installed too - these are just dependencies which are needed for your chosen package to function properly.



For Fedora/Redhat/CentOS



  • Using the GUI to Install/Update Software


If you have graphical access to your desktop, you can use the graphical tools to install software. Go to the System menu, choose "Administration", and then click on "Add/Remove Software".
Fedora will automatically let you know when updates are available for your software.


  • Installing Software From the Command Line


Often people want to use install or update software using the command line. For this you use a program called "yum". First become root( type su - from the command prompt the press enter supply the root credential "password" ) and then you can use the following commands:
  • To see a list of available software:
yum list available
  • To install some software, you type:
yum install packagename
  • To update some software, you type:
yum update packagename
If you leave out "packagename" yum will update all your software.
  • To see what updates are available, you can do:
yum check-update
  • To search for a package, you can do:
yum search word
For more info about yum, see the yum project page. (Thanks to Ron Kuris for this tip.)


  • Installing Local RPMs


To install an RPM file that you downloaded outside of yum, open up a terminal, and as root do:
rpm -Uvh filename.rpm
If you have Internet access, you can also install local files by doing:
yum --nogpgcheck install filename.rpm