Section 1 - Introduction to the GNU/Linux operating system
Diarmuid O'Briain, diarmuid@obriain.com
02-04-2014, version 2.0
Last updated: 10-05-2014 23:19
- Free and Open Source Software (FOSS)
- Making money
- UNIX. A bit of history
- GNU/Linux systems
- The profile of the systems administrator
1. Free and Open Source Software (FOSS)
1.1. What is FOSS
Richard Stallman and the FSF (Free Software Foundation), through its GNU project, had been producing software that could be used for free since 1984.
The combination of the GNU software and the Linux kernel, is what has brought us to today's GNU/Linux systems.
A software product that is considered to be open source implies as its main idea that it is possible to access its source code, and to modify it and redistribute it as deemed appropriate subject to a specific open source license that defines the legal context.
Eric Raymond and Bruce Perens promoted the idea. Eric Raymond was the author of an essay called The Raymond E. (1999). Cathedral and the Bazaar, which discusses software development techniques used by the Linux community.
- Every good work of software starts by scratching a developer's personal itch.
- Good programmers know what to write. Great ones know what to rewrite (and reuse).
- Plan to throw one \[version\] away; you will, anyhow.
- If you have the right attitude, interesting problems will find you.
- When you lose interest in a program, your last duty to it is to hand it off to a competent successor.
- Treating your users as co-developers is your least-hassle route to rapid code improvement and effective debugging.
- Release early, Release often. And listen to your customers.
- Given a large enough beta-tester and co-developer base, almost every problem will be characterized quickly and the fix obvious to someone.
- Smart data structures and dumb code works a lot better than the other way around.
- If you treat your beta-testers as if they're your most valuable resource, they will respond by becoming your most valuable resource.
- The next best thing to having good ideas is recognizing good ideas from your users. Sometimes the latter is better.
- Often, the most striking and innovative solutions come from realizing that your concept of the problem was wrong.
- Perfection (in design) is achieved not when there is nothing more to add, but rather when there is nothing more to take away.
- Any tool should be useful in the expected way, but a truly great tool lends itself to uses you never expected.
- When writing gateway software of any kind, take pains to disturb the data stream as little as possible—and never throw away information unless the recipient forces you to!
- When your language is nowhere near can be your friend.
- A security system is only as secure as its secret. Beware of pseudo-secrets.
- To solve an interesting problem, start by finding a problem that is interesting to you.
- Provided the development coordinator has a communications medium at least as good as the Internet, and knows how to lead without coercion, many heads are inevitably better than one.
Two of the most important communities are the FSF, with its GNU software project, and the Open Source community, with Linux as its major project. GNU/Linux is the outcome of their combined work.
The Free Software Foundation [FSF] is a non-profit corporation founded by Richard Stallman, who believes that we should guarantee that programs are within everyone's reach free of charge, freely accessible and for use as each individual sees fit.
Open Source Initiative (OSI) was registered as a certification brand, to which software products complying with its specifications could adhere. This did not please everybody and there tends to be a certain divide or controversy over the two groups of Open Source and FSF (with GNU), although really they have more things in common than not.
1.1.1. Benefits of using FOSS
- Security
- Reliability/Stability
- Open standards and vendor independence.
- Reduced reliance on imports.
- Developing local software capacity.
- Piracy, Intellectual Property Rights (IPR) and the World Trade Organization (WTO).
- Localisation.
1.1.2. Shortcomings of FOSS
- Lack of business applications.
- Interoperability with proprietary systems.
- Documentation and "polish".
1.2. FSF Freedoms
- Freedom 0: The freedom to run the program, for any purpose.
- Freedom 1: The freedom to study how the program works, and change it so it does your computing as you wish. Access to the source code is a precondition for this.
- Freedom 2: The freedom to redistribute copies so you can help your neighbour.
- Freedom 3: The freedom to distribute copies of your modified versions to others. By doing this you can give the whole community a chance to benefit from your changes. Access to the source code is a precondition for this.
1.3. Open Source Definition
- Free Distribution
- Scource Code
- Derived Works
- Integrity of The Author's Source Code
- No Discrimination Against Persons or Groups
- No Discrimination Against Fields of Endeavour
- Distribution of License
- License Must Not Be Specific to a Product
- License Must Not Restrict Other Software
- License Must Be Technology-Neutral
1.4. Copyleft and licenses
Copyleft is a general method for making a program free software and requiring all modified and extended versions of the program to be free software as well.
1.4.1. GPL (GNU Public License)
The GNU General Public License is a free, copyleft license for software and other kinds of works. Developers that use the GNU GPL protect your rights with two steps:
- assert copyright on the software.
- offer you this License giving you legal permission to copy, distribute and/or modify it.
- GNU Lesser General Public License
- The GNU Lesser General Public License is used by a few (not by any means all) GNU libraries.
1.4.2. GNU Free Documentation License
The GNU Free Documentation License is a form of copyleft intended for use on a manual, textbook or other document to assure everyone the effective freedom to copy and redistribute it, with or without modifications, either commercially or non-commercially.
Open Source Licences
2. Making money
For software developer companies, it poses a problem: how to make money without selling a product.
- Increasing the number of users.
- Obtaining greater development flexibility, the more people who intervene, the more people will be able to detect errors.
- Revenue will mostly come from support, user training and maintenance.
3. UNIX. A bit of history
Linux was conceived as a Minix clone (an academic implementation of UNIX for PC).
UNIX started back in 1969 (we now have almost 40 years of history) in the Bell Telephone Labs (BTL) of AT&T
Ken Thompson and Dennis Ritchie developed as tests (and often in their free time) parts of UNIX, an assembler (of machine code) and the rudimentary kernel of the operating system.
1969, Thompson wrote a file system for the created kernel, in such a way that files could be stored in an ordered form in a system of hierarchical directories.
At that time, the UNIX philosophy started to emerge:
- Write programs that do one thing and do it well.
- Write programs to work together.
- Write programs to handle text streams.
In November 1971 the UNIX Programmer's Manual signed by Thompson and Richie was produced.
At the end of 1973, it was decided to present the results at a conference on operating systems which became USENIX and was first ran in May 1974. AT&T decided to cede UNIX to universities, but did not offer them support or correct errors for them.
In 1975, Ken Thompson in Berkeley with two recently-graduated students, Chuck Haley and Bill Joy developed an editor called EX, until transforming it into VI as well as a Pascal language compiler, which they added to UNIX. Joy started to produce the Berkeley Software Distribution (or UNIX BSD).
In June 1979 UNIX Version 7 became the first portable UNIX.
It included:
- awk
- lint
- make
- uucp
- C compiler
- an improved shell (Bourne shell)
- find
- cpio
- expr
AT&T realised that UNIX was a valuable commercial product, the V7 license prohibited its study in academic institutions in order to protect its commercial secret.
In 1984 Andrew Tanenbaum wrote a new UNIX-compatible operating system without using a single line of AT&T code called Minix.
UNIX system split into several branches, of which the two main ones were AT&T's UNIX or System V, and the University of California's BSD. Most current UNIX systems are based on one or the other, or are a mixture of the two.
3.0.1. Commercial UNIX
- Oracle (Sun Microsystems) - Solaris UNIX
- IBM - AIX
- HP - HPUX
- Silicon Graphics (SGI) - IRIX
- Apple - Darwin (BSD)
- BSD - FreeBSD, OpenBSD, NetBSD and BSD UNIX
- Microsoft (early days) - Xenix
4. GNU/Linux systems
1984 - MINIX (Andrew Tanenbaum).
1990s - FSF - GNU/Hurd, Hurd is the GNU project's replacement for UNIX, a popular operating system kernel.
4.1. GNU/Linux
October 1991 - Linus Torvalds, University of Helsinki. Linux.
Some of the features that distinguished Linux from other operating systems of the time and which continue to be applicable, and others inherited from UNIX could be:
- It is an open source operating system, GPL license.
- Portability - independent from its destination machine and can be carried to practically any architecture with a C compiler such as the GNU gcc.
- Monolith-type kernel: the design of the kernel is joined into a single piece but is conceptually modular in its different tasks.
- Dynamically loadable modules: these make it possible to have parts of the operating system, such as file systems, or device controllers, as external parts that are loaded (or linked) with the kernel at run-time on-demand.
- System developed by an Internet-linked community.
Linus Torvalds managed to join his Linux kernel with the GNU utilities when FSF still didn't have a kernel. It is estimated that in a GNU/Linux distribution there is 28% of GNU code and 3% that corresponds to the Linux kernel code; the remaining percentage corresponds to third parties, whether for applications or utilities.
To highlight GNU's contribution [FSF] to GNU/Linux systems:
- C and C++ compiler (GCC)
- bash shell
- Emacs editor (GNU Emacs)
- postscript interpreter (ghostscript)
- Standard C library (GNU C library, or glibc)
- The debugger (GNU gdb)
- Makefile (GNU make)
- The assembler (GNU assembler or gas)
- The linker (GNU linker or gld)
4.1.1. GNU/Linux Distributions
- Debian
- Red Hat / Fedora
- Mandrake
- SuSe
- Ubuntu
5. The profile of the systems administrator
The systems administrator must be capable of mastering a broad range of technologies in order to adapt to a variety of tasks that can arise within an organisation.
Sub-profiles for a systems administrator
- Database administrator
- Backup copies administrator
- IT security administrator
- Network administrator
- User help administrators etc..
Some important issues covered include the following:
- The fact that the system is very powerful also means that there is a lot of potential for adapting it (configuring it) for the tasks we need to do. We will have to evaluate what possibilities it can offer us and which are appropriate for our final objective.
- A clear example of an open system is GNU/Linux, which will offer us permanent updates, whether to correct system bugs or to incorporate new features. And, obviously, all of this has a considerable direct impact on the maintenance cost of administration tasks.
- Systems can be used for critical cost tasks, or in critical points of the organisation, where important failures that would slow down or impede the functioning of the organisation cannot be allowed.
- Networks are currently an important point (if not the most important), but it is also a very critical problems area, due both to its own distributed nature and to the system's complexity for finding, debugging and resolving problems that can arise.
- In the particular case of UNIX, and our GNU/Linux systems, the abundance of both different versions and distributions, adds more problems to their administration, because it is important to know what problems and differences each version and distribution has.
5.1. System Administrator profile
- Qualification or university degree, preferably in IT, or in a field directly related to the company or organisation.
- Computer science or engineering studies.
- 1 to 3 years of experience as an administrator.
- Familiarity with networks, TCP/IP protocols, ftp, telnet, ssh, http, nfs, nis, ldap services etc..
- Script languages for prototyping tools or rapid task automation.
- Knowledge of the IT market, for both hardware and software.
- Experience with more than one version of UNIX or GNU/Linux systems.
- Experience of non-UNIX operating systems, Microsoft Windows, Apple Mac etc.
- Solid knowledge of UNIX design and implementation, paging mechanisms, exchange, interprocess communication, controllers etc..
- Knowledge and experience in IT security: construction of firewalls, authentication systems, cryptography applications, file system security, security monitoring tools etc..
- Experience with databases, knowledge of SQL etc..
- Installation and repair of hardware and/or network cabling and devices.
5.2. Tasks of the administrator
System administration tasks could be summarised.
- To administer the local system.
- To administer the network.
5.2.1. Local system administration tasks
- Switching the system on and off.
- Users and groups management.
- Management of the system's resources.
- Management of the file system.
- System quotas.
- System Security.
- System backup and restore.
- Automation of routine tasks.
- Printing and queue management.
- System accounting.
- System performance tunning.
- System tailoring.
5.2.2. Network administration tasks
- Network interface and connectivity.
- Data routing.
- Network security.
- Name services.
- NIS (Network Information Service).
- NFS (Network Fylesystems).
- UNIX remote commands.
- Network applications.
- Virtualisation, Virtual Machines and Hypervisor management.
- Remote printing.
- E-mail.
- X Window.
5.3. GNU/Linux distributions
(2014)
- Linux kernel - Version 3.14. vX.Y.Z, X - Main version, Y - Secondary, Z - Build.
- X.Org X-Server - X11R7.7.
- Desktop or windows manager - Gnome 3, KDE 4.9.
- Packaging format:
- Debian based - apt.
- Fedora based - yum.
- Boot scripts (bootloaders)
- GRUB (GNU GRand Unified Bootloader).
- LILO (LInux LOader).
- Versions of the system library.
- libxxx.so.
- GNU C library - glibc version 2.0.
5.3.1. Debian GNU/Linux
The Debian project was founded in 1993 to create the Debian GNU/Linux distribution. Since then it has become fairly popular and even rivals other commercial distributions in terms of use, such as Red Hat or Mandrake. Because it is a community project, the development of this distribution is governed by a series of policies or rules; there are documents known as the Debian Social Contract, which mention the project's overall philosophy and Debian's policies, specifying in detail how to implement its distribution.
Debian Social contract
5.3.2. Fedora Core
Red Hat Linux is the main commercial distribution of Linux, oriented at both the personal desktop and high range server markets. Additionally, Red Hat Inc. is one of the companies that collaborates the most in the development of Linux, since various important members of the community work for it.
Red Hat decided to initiate the project open to the community known as Fedora, with a view to producing a distribution guided by the community (Debian-style, although for different purposes), to be called Fedora Core. In fact, the goal is to create a development laboratory open to the community that makes it possible to test the distribution and at the same time to guide the company's commercial developments in its business distributions.