In September 1991, a finish student sent an email to a Internet Users group. There, he offered the source code of a really basic operating system to everyone interested. The code was named Linux, a combination of the student's name, Linus Torvalds, and the Minix operating system, which he initially based his work on. More than two decades later, the evolution of that code has become in a complete operating system which is present in sectors like consumer electronics, data centers, telecommunications, control systems, domotics, robotics, cloud computing and supercomputers. Indeed, Linux is the flagship of one of the most important revolutions in the technology world: the Open Source software movement.
There are some confusion about what the word Linux really means or what it references to. Most of the people take Linux as the full system, this is the operating system code (kernel) along with all the basic tools which turns the kernel in a useful thing: the shell or command interpreter, code libraries and basic Unix programs, including the tools used for code development, compiler, linker, assembler, ..., etc. However, for the purists it is necessary to separate the kernel from the environment and to give the credit to those deserving it, naming Linux to the kernel alone, and GNU Linux to the full system. As the GNU project was previous to the Linux kernel and, indeed, Linus Torvalds made use of those tools for his work (and he still does), it seems logical to preserve its historical contribution.

Leaving apart innecessary controversies, this chapter covers both, the Linux kernel and the environment for basic execution. We will start with a brief commentary about the genesis and evolution of Linux and the development model. Next we will give some insights about the system architecture paying special attention to the two execution levels: user and kernel. Then we will cover some concepts about the kernel innerworkings, and finally, we will study the execution environment.
The chapter's goal is to introduce the basic concepts allowing to start working with the system for the training purposes. The concepts are not covered in great detail but this is enough as a starting point. Some of them are so important that they will be constantly reminded through the training, and some concepts are also covered in other chapters or related courses.