An Introduction to GNU/Linux
An Introduction to GNU/Linux is a 2-session course I gave in April 2006 at the Alexandria University of Egypt. The course was organized by the ACM Chapter of the university. The attendees were students of the Computer Engineering department and it was interended as an introduction to open source in general and GNU/Linux in particular to audience mostly unfamiliar with the said subject.
Below is the summary of the sessions.
Day 1: Introduction to GNU/Linux
- The Free Software Foundation
Richard M. Stallman founded The Free Software Foundation in ‘85 to spread and promote the users’ rights to use, study, copy, modify, and redistribute computer programs. He founded it to support the GNU Project, for which he had the goal of creating a replacement of the then-popular UNIX operating system.
- The Linux Kernel
After Stallman finished work on the important programs required for an operating system, like a compiler, debugger, text editor, and so forth, he started work on the Kernel, the part of the operating system that abstracts the hardware from the user programs. However, his choice of a difficult design led to the process taking longer than expected.In the meantime, Linus Torvalds released the Linux kernel after announcing it in a post in Usenet, and the computer hobbyist community used it with the GNU programs to put together what is later called the GNU/Linux operating system.
- The Tanenbaum-Torvalds Debate
Torvalds wrote the Linux kernel as a monolithic design, design that was the most popular approach at its time, although the future was suggested to be microkernel designs. At that time, a well-known computer researcher and professor, Andrew Tanenbaum, had written a Unix-like operating system called Minix, which used a microkernel.Not long after the release of Linux, Tanenbaum entered into a very harsh debate with Torvalds on his choice of a monolithic design. The debate is one of the classic readings in computer science, if you can bear the ugly words thrown in.
- Files and the File System
More technical information about the Linux file systems in Chapter 3 of the Introduction to Linux book. The layout of the files in Linux (for example, that /boot and not other directory contains files required for booting the operating system) follows a standard known as the Filesystem Hierarchy Standard.
- BASH, C Shell, Korn Shell, …
A shell is a program you can use to interface with the operating system. It is the link that allows you, as a user, to access the services provided by an operating system. There are two types of shells: command line shells provide a Command Line Interface and graphical shells provide a Graphical User Interface.The Unix command line shells provide two important features to the user, they provide both a language to use to issue commands to the operating system, and a scripting programming language.Of the command line shells used with Unix operating systems back in the old days, Bourne shell, the C shell, and the Korn shell were the most popular. These shells differed primarily in their command syntax. For example, the C shell borrows much of its syntax from the C programming language, while the Korn shell supported features like associative arrays and built-in floating point arithmetic.Later on, The Free Software Foundation created Bash, a Unix shell written for the GNU Project. Currently, Bash is the default shell on most Linux systems, and it can be run on most Unix-like operating systems.
Day 2: The Internals of GNU/Linux
- Downloads:Session Notes / Presentation.
- “Hi” on the MBR: Here is the source code of the presented MBR “Hi” program. If you want to try it out yourself, you can use this floppy disk image. To use the image, write it to a floppy disk using a program like WinImage, or mount it in Virtual PC or VMWare.
Posted September 4th, 2006. Filed under: Articles.
Leave a Comment
You must be logged in to post a comment.
Trackback this post | Subscribe to the comments via RSS Feed