• Linux is only the kernel, and it has a history and its relationship to the Unix operating systems, to which is closely related as a descendant.


  • A full Linux distribution and a computer running it, require many ingredients besides just the Linux kernel.


  • However, the word Linux is often sloppy applied to the entire system. In fact, a more restricted use is just to describe the kernel of the operating system, which is the component that connects the hardware to the software, and manages resources such as memory, CPU, time sharing, etc.


  • You can have a system which runs only a kernel, without all this additional functionality, and that appears sometimes in embedded devices for appliances.


  • In addition to the basic kernel, the operating system has to include important system libraries.


  • Usually, these are shared libraries or dynamic linked libraries that can be used by more than one program at a time without wasting more memory, and the most important one is libc. Almost every application uses libc.


  • Then, there are all sorts of system services or applications that often run in the background waiting for a task to be done. These are often called daemons.


  • Basic system utilities that are used every day by system administrators includes those which let you look at files, view them, edit them, rename them, remove them, that lets you bring network connections up and down, etc.


  • Many of these utilities are used by the services we already discussed. One particularly important program is the command shell program, which is what you are using when you're working at the "command line".


  • The most common one and the default one for Linux is called bash, which stands for Bourne Again Shell.


  • So here's a picture of the main components of the operating system, starting from the hardware, up to the kernel, basic libraries, and device drivers, etc., and then showing on top of that, both the graphical interface and some of the most important applications, such as tools used by applications, such as Apache, etc.


  • Now, most users on a desktop or laptop will be using a graphical user interface or GUI.


  • Traditionally, Linux systems all used the X Windows system, often just called X. It's been around since at least 1984, but that only does the very low-level operations needed to run a graphical interface.


  • On top of that, there has to be a window manager which controls the actual behavior of windows and their appearance, and on top of that even a desktop manager that controls the entire desktop, and that's what the user really feels the most common choices in Linux are GNOME and KDE.


  • However, these days, many systems are starting to move over to what's called a Wayland, instead of X.


  • So, in addition to that, there are many applications that come with the standard installation.


  • They're not strictly part of the operating system, they are added in with the Linux distribution. That includes browsers and many basic utility programs.


  • There's a lot of choice for these components in Linux.


  • They're used in a very modular way and so, even on a given Linux distribution, different users can have a quite different experience, depending on what kind of choices they make.


  • Also, many developer tools are supplied quite easily on any Linux distribution. These include compilers, debuggers, etc. They're not additional software that has to be paid for or installed, they are always available on all Linux distributions.


  • A Linux distribution itself brings all these ingredients together in a coherent way, makes sure all the different parts work together, that if different choices were made, they will still work together, etc.


  • So, even if all the ingredients are sort of the same, they can feel quite different when built together in a Linux distribution, since there are so many choices.


  • Linux is now 27 years old [as of 2018]. It was first announced by Linus Torvalds, then a student in Finland, who was using the Minix operating system, created by Professor Andrew Tanenbaum at the University of Amsterdam.


  • When he became frustrated both by its licensing in its procedures for having changes made. He posted the message which is shown here, to a Usenet newsgroup asking for help.


  • The name Linux was not proposed by Linus himself. He felt it was too egotistical but eventually, it settled down into what was used.


  • The original release of Linux had its own license, but quickly, Linus moved over to the General Public License or GPL, where it has remained ever since.


  • As much as his technical qualities, it is the adoption of a license which made it easy to grow a community of large number to work on Linux that enabled its success.


  • Linux needed many other components in order to constitute a complete operating system, most of which were supplied by the GNU project in an early stage, including compilers, debuggers, et cetera.


  • The first really usable Linux distributions, started around 1992 and they're still in use; in particular, Slackware, Debian, the predecessor of SUSE and Red Hat.


  • In 2000, the OSDL, the Open Source Development Lab, was founded in Portland, Oregon, as an independent organization to promote and optimize Linux.


  • Linus himself became a fellow working for the OSDL. In 2007, there was a major change when it united with another group to form The Linux Foundation, which is now 11 years old [as of 2018] and whose mission is to protect, improve and standardize Linux, with support from many major corporate clients and sponsors as well as a lot of smaller organizations and companies.


  • There was a big push in 2000 when IBM invested over a billion dollars in Linux, and when Oracle first imported its database to Linux, and ever since then, it has grown exponentially.


  • There are many independent developers still contributing to Linux, but the large majority of the people who work on Linux work for either a major Linux distribution or a major software or hardware company, and this is their full time job.


  • While Linux started on the Intel family of computers, PCs, it's grown to handle many many architectures, almost every kind of computer on the planet, and works in everything from very small embedded devices including watches, to the vast majority of the world's super computers.


  • In fact, recently, that number approached 100 percent.


  • Technically, Linux is only the kernel. Everything else that makes up the full operating system comes from a variety of different sources.


  • Linux is not Unix, although is clearly Unix-like, it is generally not certified as being actual Unix.


  • Unix goes back at least as far as 1969. It was at the beginning intended to be the operating system for serious heavy iron enterprise system.


  • It did not begin on the Intel family of CPUs, it began more on mainframe-type computers.


  • By the time Linux was originated in 1991, Unix itself had split into a number of different versions and there was a complicated family tree with two major groupings: System V and BSD.


  • It was not clear at all on those days that Linux would grow to work on other architectures to become anything like what it is today. It was a toy.


  • Now, there were many Unix variants. Most were associated with hardware companies and were shipped with the hardware companies computers, SGI had IRIX, Sun had SunOS and later Solaris, IBM had AIX, Cray had UNICOS, et cetera.


  • Each one of these manufacturers had different varieties running on their own hardware. There were a lot of efforts to achieve standardization, but there were strong self-interests by many vendors in keeping things proprietary and individually constructed for their platform.


  • So, if you wrote an application, you had to keep in mind all the different variants, especially just between System V and BSD, and write code that had different branches on it depending on where it was running.


  • There are many cases where even if the APIs were not that different and so, in theory, the code didn't have to be that different. The actual implementation was quite different, especially where there was any kind of ill-defined or undefined behavior.


  • Also, each platform had its own set of basic utilities for viewing files, compiling programs, et cetera.


  • This is where the Free Software Foundation project, the GNU project, which stands for GNUs Not Unix, came in and made an extremely valuable contribution by making hardware and operating system independent versions of many basic utilities that administrators and developers use everyday, things like tar, ls, grep, et cetera, as well as compilers and libraries.


  • Without the GNU project, you really wouldn't have had Linux, at least nothing like we have today.


  • There are people who insist Linux should really be called GNU/Linux or something similar, but let's stay out of such silly arguments and we'll just call it Linux.


  • Now, Unix and Linux may not be the same thing, but the main developers of Linux had a solid foundation in Unix and they borrowed many basic components, such as inode-based filesystems, the use of device nodes to access hardware, the way scheduling is done, how processes and threads are created and destroyed, these are all derived from basic Unix ideas.


  • Therefore, it hasn't been very hard to take applications written for any of the Unix variants and import them to Linux.


  • Because Linux is very open and accommodates change from all directions, this is actually helping avoid the kind of fracturing that took place in Unix.


  • So, nowadays, most hardware vendors support Linux directly on their hardware, while they still maintain versions of their own operating systems, they do that really for long-term support of their customers and most of their current work goes into just working with Linux.


  • Linus once joked when asked about what his plans were, he said "world domination".


  • It may be the case that at least in terms of Unix-like operating systems, Linux is achieving that goal today.


  • There are many Linux distributions, literally hundreds or even thousands of them, though there's only a small number that are used in large numbers, and they vary by the usage, the hardware, the audience and what kind of support that you have.


  • The distribution packages up all the software you could need in a convenient way that makes it easy to install, upgrade, remove, etc.


  • It makes sure that all the different components of the software work well together.


  • It's a bridge between the upstream developers, the people who actually write the code, and the end users.


  • It makes sure that information flows in both directions.


  • Distributions test the software under far more varied conditions that the upstream developers can do or any particular user can do, and they try to find things that are wrong and also resolve any conflicts between different software packages.


  • Distributions also employ a lot of people to do significant work on the individual components within the distribution, the packages, the software packages, as well as the general functioning of the operating system, and even the Linux kernel itself.


  • Three major families of Linux distribution: Red Hat, which includes CentOS, Scientific Linux, Fedora, and Oracle Linux; Debian, which includes Ubuntu and Linux Mint; and SUSE, which includes openSUSE.


  • Software is installed or removed and controlled through package management systems, and there are two major ones: RPM and Debian.


  • RPM is used in all Red Hat and SUSE-derived systems and Debian in all Debian-derived systems


  • One option is to do your work on a Linux system in the cloud. There are a number of different cloud providers you can use. AWS, Amazon Web Services, has something called a free tier, where you can get an account for up to a year, and one of the small accounts is more than capable of doing anything you need to do for


  • Red Hat/Fedora Family Fedora is the community distribution that forms the basis of Red Hat Enterprise Linux, CentOS, Scientific Linux and Oracle Linux. Fedora contains significantly more software than Red Hat's enterprise version. One reason for this is that a diverse community is involved in building Fedora; it is not just one company.


  • The Fedora community produces new versions every six months or so. For this reason, we decided to standardize the Red Hat/Fedora part of the course material on the latest version of CentOS 7, which provides much longer release cycles. Once installed, CentOS is also virtually identical to Red Hat Enterprise Linux (RHEL), which is the most popular Linux distribution in enterprise environments:


  • SUSE/openSUSE Family The relationship between openSUSE and SUSE Linux Enterprise Server is similar to the one we just described between Fedora and Red Hat Enterprise Linux. In this case, however, we decided to use openSUSE as the reference distribution for the openSUSE family, due to the difficulty of obtaining a free version of SUSE Linux Enterprise Server. The two products are extremely similar and material that covers openSUSE can typically be applied to SUSE Linux Enterprise Server with no problem:


  • Debian Family The Debian distribution is the upstream for several other distributions, including Ubuntu, Linux Mint and others. Debian is a pure open source project, and focuses on a key aspect: stability. It also provides the largest and most complete software repository to its users.


  • Ubuntu aims at providing a good compromise between long term stability and ease of use. Since Ubuntu gets most of its packages from Debian's unstable branch, Ubuntu also has access to a very large software repository. For those reasons, we decided to use Ubuntu as the reference Debian-based distribution for our lab exercises:


/body>