Note, I will provide you with everything you need to learn and succeed and if you put the time and effort in, everyone should have full credit for both the Linux Labs and Final Project.
Required Reading
Please read this entire Web page + the Chapter 1 Introduction (page 7 – page 16) in GNU/Linux Basic Operating System + the Introduction (page xvi -> page xx) in The Linux Command Line by William Shotts. Please note we will not be installing Linux on our machines or creating a Live CD as we will be using the HVCC AcadNX Ubuntu server.
When you open the links above you have access to the entire book (in PDF form). You may want to save them by printing them to PDF files so that you always have access without re-downloading them.
Critically Important Note: As introduced in LM1, most students do not catch the precise discrete terminology and its meaning and this understanding is critical to success. Also similar to the CISS 100 textbook content, you should be looking up any terms you do not understand.
Preparation
Please read and reread this content as I cannot stress this preparation enough as students often plunge in without a proper foundational understanding (Prof Hurd calls it combat programming). To succeed, most students not only have to read the required reading and the ciss100.com content several times but they have to research terms they do not understand, continually return to previous readings, and work with the reading material at their side. Without this approach students invariably end up having problems because they lack the proper foundational understanding and faculty will identify this very quickly. Let me ask you this, would you just open your car’s hood and start to fix things without getting the manuals and reading the manuals first… especially if you had never seen a car before? For some reason, this is what people do with computing as they just jump in and ask questions later when proper Information Systems Analysis and Design requires we research first. What makes this even worse is that students often read over terms they assume they know the meaning (recall Comp Sci uses familiar words but their discrete precise meaning not in conventional common English conversations) and without this preparatory research/understanding, people can’t even formulate proper questions because they lack the necessary foundational understanding and terminology and therefore it becomes impossible to provide assistance.
Linux OS Elements
There are 2 main parts of an OS, the kernel and the system programs.
The Kernel is the fundamental core of the OS and allocates and manages resources. System programs and applications interact with the Kernel through system calls (this is the protection system).
The system’s programs include device drivers, libraries, utility programs, shells (command interpreters) and various other application programs that perform system housekeeping (e.g. client/server relationships). Now, I recommend you read what Wikipedia has to say on the Operating System Kernel (or OS Kernel) as it is spot-on: http://en.wikipedia.org/wiki/Kernel_(computing)
There are numerous System Programs in the form of utility commands and we will work with these extensively in the Linux Labs as they will teach us about the OS components and their functionality. A good list of Linux utilities is here: http://en.wikipedia.org/wiki/List_of_Unix_utilities
The Shell or Terminal Command Line Interface (CLI)
Some authors state the CLI or Shell or Terminal is a 3rd part of the OS and to this extent, I include Prof Stonebank’s presentation on the topic below (with permission under the Open Commons License).
“The shell acts as an interface between the user and the kernel. When a user logs in, the login program checks the username and password, and then starts another program called the shell. The shell is a command-line interpreter (CLI). It interprets the commands the user types in and arranges for them to be carried out. The commands are themselves programs: when they terminate, the shell gives the user another prompt ($ for our Ubuntu Linux OS, however, note that our prompt will have additional information before the $ set by the .profile or .login or another startup file). The adept user can customize his/her own shell, and users can use different shells on the same machine. The default Ubuntu Shell is bash.
Note we will be working with Linux using the Terminal through either a Web Browser Plugin, PuTTy if on Windows or via the built-in Mac OS Terminal: (http://www.ee.surrey.ac.uk/Teaching/Unix/).
Linux OS History and Perspective
The Linux kernel was developed by Linus Torvalds and he made the source code available to the world resulting in a free operating system. Linux is now distributed under the GNU General Public License (GPL). This GPL means that software can be distributed freely (i.e. free to share). If and when you redistribute Linux and its source code, you must also distribute the same license providing the same democratic freedom to subsequent users and developers so that they may study and modify the program as they see fit. As a result, the Linux source code and its GPL are inseparable.
In contrast to MS Windows and Mac OSX, Linux was designed to be a portable operating system and interface (IEEE POSIX compliant interface) at the outset. When an OS or application is portable it can be run on many different platforms (e.g. computers, refrigerators, cars, mobile devices). Linux is mainly written in the C programming language (portable machine-independent language) and it is this basis that allows it to be adapted to many different architectures serving a plethora of applications and devices that include network-attached storage (NAS), cell phones running Android OS and the explosion of Internet of Things (IoT) applications. To illustrate Linux’s present status consider that the Android OS uses a Linux Kernel.
So what are some of Linux’s attractive attributes?
-
-
-
- Multiuser OS
- Multitasking OS
- Network OS (Mac OSX is also a Network OS whereas MS Windows is not)
- Secure hierarchical file system based on directories
- Allows links to files or directories permitting 2 or more names similar to Windows shortcuts
- Shell is a command interpreter as well as facilitating a programming language (Shell scripts are a collection of shell commands in a file for subsequent execution, Windows called these batch files
- Shell facilitates file name generation and wildcards where the asterisk (*) can replace several letters and the question mark (?) can replace a single letter
- Device-independent input and output where devices appear as files and support redirection
- Priority-based job control
- Inter-process communication (IPC) pipes and filters
-
-
Now while we focus on Ubuntu, there are many other distributions or “distros” and it is important as IT professionals to recognize them: http://www.eweek.com/c/a/Linux-and-Open-Source/10-Linux-Distros-Every-IT-Manager-Should-Know-574208/?kc=EWKNLEDP11082011A
A complete listing of all the Linux distributions can be found at www.distrowatch.com.
For a more in-depth read on the origins of Linux history and relevance please see here: Wikipedia Linux entry & Linux Turns 20
For LL1 there is nothing to submit but please do not shortchange yourself by skipping or skimming through the reading and research. The reading and research is the important component but in education, we must assess learning hence the subsequent assignment submissions.
Linus Torvalds’ Ted Talks
Optional reading and resources:
Here are some great resources & tutorials for the Linux environment and commands and I recommend you bookmark them for future reference:
Linux Shell: http://linuxcommand.org/lc3_learning_the_shell.php
Linux Documentation Project: http://tldp.org
Comprehensive list of Linux commands: https://ss64.com/bash/
Another list of commands: https://fossbytes.com/a-z-list-linux-command-line-reference/
Thank you,
Prof Looby