Linux Operating System: Linux Philosophy and System Overview
What is Linux?
Linux is a free, open-source kernel used by wizards and geeks, published under the GNU General Public License. It is free for use and its code readily available for contribution. The Linux kernel is what allows GNU shell utilities and other free application softwares to communicate with the hardware components of your system and make up the Linux Operating System.
Some may group the term "Linux" as an umbrella term that covers all Operating Systems that use it, but in reality, the term only refers to the kernel. Here, we'll reference the Linux Operating System as the system that contains the Linux kernel with free GNU software utilities.
History of Linux
In 1964, Bell Labs developed an OS called MULTICS (multiplexed information and computing system). This was a multi-user, multi-tasking system that could network with the Internet. The main developer on the job was Ken Thompson, who wrote this on his PDP-7 computer, an assembler and other utilities. This platform was later dropped to give room for UNIX, which inherited many of its features.
Adoption and spread of UNIX
As soon as UNIX was rewritten in C, it gained popularity, as it was compatible with a variety of platforms. With this, UNIX dominated universities with students and professors at adopting to the platform for classroom use. This allowed for more features to be developed and added onto UNIX.
GNU's not UNIX (GNU)
In 1983, Richard Stallman began work on the GNU Project. The goal was to make a UNIX-like operating system, but have it completely open-source and free of charge. Stallman and his team were able to create a full operating system, but development in their main kernel (Hurd) was lacking, preventing the system from being complete.
In 1991, a student named Linus Torvalds thought he could do better than MINIX, another UNIX-like operating system for academic use. What started out as a fun project eventually led to the development of a kernel which would eventually be named Linux. This was later incorporating into Richard Stallman's UNIX-like operating system, which is now called Linux OS.
When we say Linux is free, we mean free as in free beer, and having the freedom to customize each piece of the system. All code is open-source, meaning that you are able to view the source code and edit it. The only restriction is that if you add any features or fixes on any bugs, you make the changes available to everyone else, free of charge.
This approach to software building has encouraged collaborative effort. Especially with the inception of the Internet, we now see a decentralized, not-for-profit model of production that promotes universal access and a push towards creating the best software.
There are some other open-source licensing types out there that you may come across. Take a quick read-through of them and their description.
- FSF (Free Software Foundation) is a nonprofit organization whose mission is to promote the freedom of computer users and to defend the rights of all free software users. This group envisions a world where any user can study the source code, modify it and share the program with anyone. FSF supports the GNU project and its family of operating systems.
- The Open Source Initiative's purpose is to protect and promote Open Source software.
- GNU's General Public License claims that one may alter the code to a particular code, but any derived must be made freely available under the same license.
- BSD (Berkeley Software Distribution) covers a family of permissive free software licenses that has minimal restrictions levels on the redistribution of softwares.
- The Creative Commons License allows users more freedom that regular copyright laws would allow. By claiming a work as CCL, authors are giving people the right to share, use and edit the work they have made.
- Free/libre Open Source Software is software that is not only free in terms of no cost, but also are free to do whatever you want with it. Volunteers and users are encouraged to build upon the works and share it.
You may think that free and open-source software would contain many security vulnerabilities, since the code is available to everyone and no one's getting paid to fix anything. However, this is not the case. Each bug and vulnerability is constantly being fixed and patched by one of the many community members, making the software more secure and stable. One of the hallmarks of open-source software is encouraging and empowering the users to not just report the bugs, but fix them as well.
Business models with open-source software
So how does one make money developing open-source software? We may still see viable business models for an open-souce software. Developers can be consultants for a certain company that uses the software, or they develop additional features and charge for these proprietary add-ons.
Who uses Linux?
Even without directly using Linux as an operating system, you have most likely enjoyed its implementation. Over 95% of servers worldwide operate on Linux, meaning that whenever you surf the web, check your email or download a file, a database that is powered through the Linux server is serving you content.
Other common uses of Linux include Android, which is based on Linux. Furthermore, Linux is used in embedded consumer electronics systems such as smart TV's and vehicle entertainment systems that are based on the Linux Kernel.
Linux in Industry: Virtualization
As mentioned above, Linux is used in servers to provide data and allows for cloud computing. Industry is able to provide this through virtualization, which is the technology that allows for multiple operating systems and applications to run simultaneously on a single device. With multiple Linux systems on one computer, users are able to make the most of their hardware components, increasing efficiency and flexibility.
What is a Linux distro?
If you've hung around Linux geeks, you've most likely come across the term distros (short for distribution). A distro the set of precompiled, packaged set of software utilities, themes, terminal interfaces, and management commands that come wrapped with the Linux kernel. There are tens of different distros to choose from, each with its unique benefits and tailored to a niche of Linux users.
Of course, if you're not happy with one particular piece of your distro, you can tweak it or install a new software to your liking. Additionally, you could grab all the softwares you like and individually compile them, creating your very own distro! This would, however, take a lot of time and effort, especially configuring everything to run smoothly with each other.
Comparison with Microsoft
The concept of a distro may seem rather strange, especially when you come from a Window's world, where every new software version (Windows 2000, XP, 7, 8, 10) is bundled up into a single package, and set up in retail stores for $129.95. Instead, Linux allows you to choose from a variety of distributions, each bundled up with softwares that target a specified audience. Freedom of choice, and free of charge!
Let's look at just some of the distros available on Linux, and how they differ from each other. These distros come with user-friendly configurations straight out-of-the-box.
Ubuntu comes from the Southern African philosophy meaning human-ness, translating to "humanity towards others" or "the belief in a universal bond of sharing that connects all humanity." In short, it's an easy-to-use graphical Linux desktop that is accessible without the need for a command line. This is one of the most popular distros for beginning Linux users, as it comes with many common applications - Firefox for web browsing, OpenLibre for word processing, and much more. Additionally, most settings can be configured through a graphical user interface, so command line knowledge line is not necessary.
There is a similar distro to Ubuntu for Hanna Montana fans. If you love the Disney channel star, give it a try.
Linux Mint was built for users who love watching movies, listening to music and playing games. It is very similar to Ubuntu, but with extra drivers included out of the box, and is a good alternative for those distrusting of Canoical, the company that backs Ubuntu.
Debian is known as the most stable Linux distribution, built for servers, laptops among other devices. There is no company backing behind Debian, but a good amount of developers with a Debian Project Leader who is elected every two years. Three branches of Debian exist: stable, testing and unstable. Every release is named after characters in Toy Story.
Red Hat is a commercial company that puts in a lot of money and effort to develop the best Linux Operating System with customer support. Their main product is Red Hat Enterprise Linux (RHEL), which comes with a fee, but there is a free version called Fedora.
Companies that implement mission critical tasks and require support contacts often buy Red Hat Enterprise edition, as it comes supported with excellent support, up to 7 years after its each version's release date.
Short for Community Enterprise Operating System, CentOS is a distro that attempts to provide a quality community-supported platform that competes with Red Hat Enterprise Linux.
Scientific Linux is another distro that tried to emulate Red Hat Enterprise Linux for scientists working in the research field. This gives researchers consistency in their analyses work, as their platforms are all the same.
OpenSUSE is a popular Linux distro marketed towards consumers, desktop, workstations and business developers. It is said to be the community version of SuSE, a German Linux distribution, much like Red Hat.
Arch Linux's design approach is based on the KISS principle - "Keep It Simple, Stupid." It attempts to focus on elegance, minimalism and simplicity. Many students use Arch Linux to learn about the inner workings of Linux, as its manual installation teaches about how all the components of the system work together. It comes with a great community, and one of the best wikis around.
Gentoo comes with a slew of features that puts the user back in control of his machine. In order to optimize your system, you can set up this distro with only what you want, and make it do only what you tell it to do.
Slackware first released in 1993, aiming to be the most UNIX-like distro out there. This system can be tricky since the package manager doesn't track any dependencies, so you'll have to use a non-standard one that is developed by the community.
Installing Linux through VirtualBox
Once you're done selecting your distro, you'll need to install Linux. There are several ways you can go about getting Linux on your computer.
If you're new to Linux, and want to test the waters before committing, we recommend you download VirtualBox. Essentially, this allows you to run another OS within your main OS.
Advantages & Disadvantages
The advantages of installing through VirtualBox include:
- No need to reboot to get to other OS.
- You don't need to install various device drivers or worry about networking connections, as VirtualBox will provide you with its own.
- For debugging purposes, or if you have any problems with your OS, you can just use your main OS.
- No need to commit - if something goes wrong or you don't like the particular distro, just delete the virtual box image and install a new one.
The disadvantages are as follows:
- If you do decide to full-commit, you'll have to partition your hard drive and install it again.
- VirtualBox images only use a subset of your system's resources, which may result in system lag and suboptimal performance.
Setup on Virtualbox
Once you're in the VirtualBox, click on New button.
If you're more committed to using Linux, then you could partition your current hard drive and install Linux that way. This method involves using a USB device to copy a Linux distro and booting your computer through the USB.
If you've already committed and are interested in installing Linux directly to your hard drive, do a quick Google search on how to do so. Otherwise, we'll cover it later on when we learn about Partitions.
Linux System Overview
The Linux Operating System contains a slew of pieces: hardware connections, partition space, boot loaders, processes, terminals, window management system...phew! It can be overwhelming to think about all these bits and pieces; let's try breaking it down to three main components.
The first piece to creating any computer is assemblying its hardware. Here are just some of the components that go into a computer:
- Physically holds the components together. A special firmware called the BIOS controls all connections.
- The Central Processing Unit acts as the main "brains" of the computer. It executes all mathematically-related tasks.
- Stands for Random Access Memory, but also known as main memory or just memory. This is the space that currently running processes are loaded on; the bigger the RAM, the more processes are able to run simultaneously.
- Buses and ports
- Connects devices and sends/retrieves information to and from hardware.
The kernel is the software residing in memory that takes user commands and passes them onto the hardware for execution. This is often referred to the core of the OS, as it connects hardware to the user interface and processes. We'll learn more about the kernel and its functions on the next page.
The interpreter that allows us to communicate with the kernel through commands is known as the shell. This is the lowest-level interface that a user can utilize to communicate with the computer.
There are several types of shells that you can choose from. They differ mainly in syntax and have operational features. The most common is bash which serves as the default on most machines.
A list of shells are stored in your /etc/shells file.
$ cat /etc/shells
/bin/bash /bin/csh /bin/ksh /bin/sh /bin/tcsh /bin/zsh
- bourne again shell
- c shell
- korn shell
The shell also provides you with a list of commands and syntax that allow you to write shell scripts. Shell scripts are reuseable lines of codes a accomplish some task. Shell scripts are a good way to create programs that are portable to another Linux machines.
3) Processes, Applications and Programs
Lastly, we have processes (aka applications or programs), which give the kernel tasks to perform. After the user assigns or opens several processes, the kernel decides how to delegate the hardware resources to simultaneously run the programs. It is these processes and applications working in conjunction with a kernel that make up UNIX and UNIX-like Operating Systems.
At the very top-level abstraction in this system are users - entities that may own files and run processes. Each user has a username and a user id, the latter of which is used by the kernel. Groups contain sets of users.
The root user (aka superuser) is in control of the system - they are able to shut down any user processes and access any file on the system. Some adminstrative commands may only be used by the root user. To switch to root, use the
User and Kernel Spaces
RAM (Random Access Memory) can be separated into two distinct regions - the user space and the kernel space. The main difference between the two is their privileges on operating system functions and restrictions on user applications.
The processes run by ordinary users (aka user processes) are stored in the user space. The user space is the memory that is allocated by the kernel for user processes. The separated of the user and kernel space guarantees that no user-created process steps out of bounds, which could cause system crashes or memory overflow.
The area in which processes and normal programs are run in is known as the user space. The user space is more limited to what it can access, with restrictions on memory and CPU-safe operations. A broader term encompassing this is known as sand-boxing, which restricts user programs such that they don't mess parts of memory owned by other processes. This is a good thing, as it prevents the system from crashing in case something goes haywire.
The kernel has its own special privileges that allow it access to all pieces of the CPU and memory. This area of control is known as the kernel space, which is where the kernel delegates all its tasks.
Note that the separation between user and kernel spaces allow for the computer to run smoothly and avoid any malfunctions. Additionally, anything that goes haywire in the user space can easily be fixed by the kernel.