| Chapter 1: Foundations of Kali Linux

2 | Chapter 1: Foundations of Kali Linux
As you will see later, one of the advantages of the Unix design—
using small, simple programs that do one thing, but allow you to
feed the output of one into the input of another—is the power that
comes with chaining. One common use of this function is to get a
process list by using one utility and feed the output into another
utility that will then process that output, either searching specifi‐
cally for one entry or manipulating the output to strip away some
of it to make it easier to understand.
About Linux
As Unix spread, the simplicity of its design and its focus on being a programming
environment led to it being taught in computer science programs around the world.
A number of books about operating system design were written in the 1980s based on
the design of Unix. One of these implementations was written by Andrew Tannen‐
baum for his book
Operating Systems: Design and Implementation
(Prentice Hall,
1987). This implementation, called
Minix
, was the basis for Linus Torvalds’ develop‐
ment of Linux. What Torvalds developed was the Linux kernel, which some consider
the operating system. Without the kernel, nothing works. What he needed was a set
of userland programs to sit on top of his operating system as an operating environ‐
ment for users to do useful things.
The GNU Project, started in the late 1970s by Richard Stallman, had a collection of
programs that either were duplicates of the standard Unix utilities or were function‐
ally the same with different names. The GNU Project wrote programs primarily in C,
which meant they could be ported easily. As a result, Torvalds, and later other devel‐
opers, bundled the GNU Project’s utilities with his kernel to create a complete distri‐
bution of software that anyone could develop and install to their computer system.
Linux inherited the majority of Unix design ideals, primarily because it was begun as
something functionally identical to the standard Unix that had been developed by
AT&T and was reimplemented by a small group at the University of California at
Berkeley as the Berkeley Systems Distribution (BSD). This meant that anyone famil‐
iar with how Unix or even BSD worked could start using Linux and be immediately
productive. Over the decades since Torvalds first released Linux, many projects have
started up to increase the functionality and user-friendliness of Linux. This includes
several desktop environments, all of which sit on top of the X/Windows system,
which was first developed by MIT (which, again, was involved in the development of
Multics).
The development of Linux itself, meaning the kernel, has changed the way developers
work. As an example, Torvalds was dissatisfied with the capabilities of software repos‐
itory systems that allowed concurrent developers to work on the same files at the
same time. As a result, Torvalds led the development of
git
, a version-control system
About Linux | 3
that has largely supplanted other version-control systems for open source develop‐
ment. If you want to grab the current version of source code from most open source
projects these days, you will likely be offered access via git. Additionally, there are
now public repositories for projects to store their code that support the use of git, a
source code manager, to access the code.
|