Skip to main content

Week 0: Exploring Linux

Linux History 

Today, Linux powers more than half of the servers on the Internet, the majority of smartphones (via the Android system, which is built on top of Linux), more than 90 percent of the public cloud workload, and all of the world’s most powerful supercomputers.

Linus Torvalds was a student in Helsinki, Finland, in 1991, when he started a project: writing his own operating system kernel.

In 1992, Linux was re-licensed using the General Public License (GPL) by GNU (a project of the Free Software Foundation or FSF, which promotes freely available software), which made it possible to build a worldwide community of developers. 

By combining the kernel with other system components from the GNU project, numerous other developers created complete systems called Linux distributions in the mid-90s.

In 1998, major companies like IBM and Oracle announced their support for the Linux platform and began significant development efforts.

You can also watch these descriptive videos:

https://youtu.be/yVpbFMhOAwE

https://youtu.be/5ocq6_3-nEw

https://youtu.be/XMm0HsmOTFI


Linux Philosophy

Linux borrows heavily from the well-established UNIX operating system.

Files are stored in a hierarchical filesystem, with the top node of the system being the root or simply "/".

Whenever possible, Linux makes its components available via files or objects that look like files.

Linux is a fully multitasking, multiuser operating system, with built-in networking and service processes known as daemons in the UNIX world.

Linux uses many small tools that do small tasks efficiently and interact with each other to serve users' purposes.

You can also watch this descriptive video:

https://youtu.be/jowCUo_UGts


Linux Distributions

The Red Hat Family

Red Hat Enterprise Linux (RHEL) heads the family that includes CentOS, CentOS Stream, Fedora and Oracle Linux.


The SUSE Family

Including SUSE Linux Enterprise Server (SLES) and openSUSE.


The Debian Family

The Debian distribution is upstream for several other distributions,including Ubuntu. In turn, Ubuntu is upstream for Linux Mint and a number of other distributions. It is commonly used on both servers and desktop computers.

Debian is a pure open source community project (not owned by any corporation) and has a strong focus on stability.

Debian provides by far the largest and most complete software repository to its users of any Linux distribution.

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 stable branch, it also has access to a very large software repository.


Services Associated with Distributions

CentOS and CentOS Stream are popular free (as in no cost) alternatives to Red Hat Enterprise Linux (RHEL) and are often used by organizations that are comfortable operating without paid technical support.

Ubuntu and Fedora are widely used by developers and are also popular in the educational realm.

Scientific Linux is favored by the scientific research community for its compatibility with scientific and mathematical software packages.

Note that CentOS is planned to disappear at the end of 2021 in favor of CentOS Stream.

Many commercial distributors, including Red Hat, Ubuntu, SUSE, and Oracle, provide long-term fee-based support for their distributions, as well as hardware and software certification.


Choosing a Linux Distribution

The figure shows some, but not all choices. Note that many embedded Linux systems use custom crafted contents, rather than Android or Yocto.

Questions to Ask When Choosing a Distribution

Some questions worth thinking about before deciding on a distribution include:

*    What is the main function of the system (server or desktop)?


*    What types of packages are important to the organization? For example, web server, word processing, etc.


*    How much hard disk space is required and how much is available? For example, when installing Linux on an embedded device, space is usually constrained.


*    How often are packages updated?


*    How long is the support cycle for each release? For example, LTS releases have long-term support.


*    Do you need kernel customization from the vendor or a third party?


*    What hardware are you running on? For example, it might be X86, ARM, PPC, etc.


*    Do you need long-term stability? Can you accept (or need) a more volatile cutting edge system running the latest software?



Now let's try out this lab:

Make a folder called Scratch-Linux and inside it make another folder called week0 in which you will write and upload your lab file.

$ mkdir Scratch-Linux  # To make the directory

$ ls  # To list the contents of the present working directory

$ cd Scratch-Linux  # To move into the new subdirectory

$ mkdir week0  

$ ls  

$ cd week0  


In the terminal move into week0 directory and write your first command 

$ echo "Hello, Linux!"

echo is a terminal command that prints out a string that receives as an argument or a redirect from another tool.


The general form for any terminal command is 

$ <command> <-options or --options> <arguments>

You can differentiate between options and arguments easily because options are prefixed by a dash symbol (-) or double dashes symbol(--)


After you run the above command on the terminal, save the command line without the ($) symbol in a file called greeting.sh

To make sure you saved this correctly run this command in the terminal

$ bash greeting.sh   

You should see "Hello, Linux!" in the terminal.


By the way, bash is a tool responsible for running commands in the terminal, and we will explore it more deeply in the next chapter.

<

Check your solution using Check50:

$ check50 kobros-tech/scratch-linux/2023/labs/greeting


Submit your file using Submit50:

$ submit50 kobros-tech/scratch-linux/2023/labs/greeting