Linux history

What is Linux?

  • Linux is an open source based operating system
  • To be more precise, Linux is the kernel of the operating system on top of which the actual Linux distribution is built (Ubuntu, Debian, CentOS etc.)
  • Linux is widely used in other devices than computers
    • Embedded systems, phones (Android, Sailfish), routers, gaming consoles, cameras etc.
  • Like other operating systems, Linux has both graphical (GUI) and commandline (CLI) interface
  • Linux is distributed for several different architectures (x86, x64, ARM etc.)

Linux history

  • Linus Torvalds explored Unix operating system at the beginning of 90s in the University of Helsinki
  • In the year 1991 Linus bought his first PC, which was shipped with DOS operating system
  • Linus wanted a Minix operating system, which had to be ordered abroad
  • Linus was not satisfied with Minix emulator and started to develop it further
  • Linus was now able to connect to university computer as well as write and read emails
  • Terminal program was increasing in size and Linus started to consider his project as operating system kernel, which was meant only for personal use
  • University provided storage space from the server for this project
  • In the fall 1991 Linus sent a message to the comp.os.minix news group asking for volunteers for testing and comment his operating system
  • Linus published Linux source code under the GPL license written by Stallman
  • Many programmers and Unix users were excited about freely distributed free operating system and joined for the development
  • They sent their own propositions and fixes for Linux
  • Linus released the first official Linux kernel (version 1.0) in the year 1994
    • Since then there has been thousands of kernel developers
    • This version included graphical user interface (GUI) as well as working networking feature

GNU GPL License

  • Linux is free software, which means that it is
    • free and
    • is based on GNU GPL license (General Public License) meaning that software can be used freely used in all useful purposes (including commercial use)
The source code of freely distributed programs can be downloaded, edited, fixed and used in any possible ways.

Linux distributions

  • Like mentioned earlier Linux itself is just the kernel, which has libraries and programs installed on top of it creating the actual operating system
  • Nowadays third parties can build Linux distributions to serve some particular use
  • Examples:
    • Education → Edubuntu, OpenSUSE, Skolelinux
    • Servers → Debian, Ubuntu server, CentOS
    • Legacy devices → Puppy Linux, Elementary, Linux Lite
  • In order to get a better overall view of the amount of Linux distribution, open the following Linux distribution timeline:

Reasons for choosing the appropriate Linux distribution

  • Consider these factors when choosing a Linux distribution:
    • Purpose (desktop, servers etc.)
    • The need for support (Is support included in the distribution: email, www, phone?)
    • Features
    • Former experience (Is this distribution familiar to me?)
    • Supported programs
    • Usability
    • Reliability
    • Upgrades (How frequently does the distribution receive updates and is it still in development?)

Linux distribution versions

  • One distribution has usually different versions for different purposes:
    • Server
    • Desktop
    • Mobile
    • Embedded
    • Live CD (used for testing the distribution before installing it)
  • Usually all previously listed versions have also distributions for different processor architectures:
    • x86
    • x64
    • ARM

Kernel

  • Kernel acts as an interface between hardware and software
  • The most essential functions of kernel are:

    • The management of file system and I/O services
    • Memory management (free and allocate memory)
    • Multitasking where processor time is shared for running programs
  • The following diagram illustrates the different functionalities of the kernel

Linux kernel functionalities


Linux architecture

  • The memory space of Linux can be divided into two parts:
    • User space
      • space where user processes and programs will run
    • Kernel space
      • space where kernel code is stored and run
  • User space has limited access for computer's memory whereas kernel has access to the whole memory

Linux kernel architecture