# Project Initiation

## A Brief History of GNU/Linux

In the early 90's GNU/Linux systems consisted of little more than a beta-quality Linux kernel and a small collection of software ported from the GNU project. It was a true hacker's operating system. There were no CD-ROM's or GUI installation tools; everything had to be compiled and configured by the end user. Being a Linux Expert meant knowing your system inside and out.

Toward the middle of the decade several GNU/Linux distributions began appearing. One of the first was Slackware in 1993 and since then there have been many others. Even though there are many "flavors" of Linux today, the main purpose of the distribution remains the same. The distribution automates many of the tasks involved in GNU/Linux installation and configuration taking the burden off of the system administrator. Being a Linux Expert now means knowing which button to click in the GUI administration tool.

Recently there has been a yearn for a return to the "good old days" of Linux when men were men, sysadmins were hardcore geeks and everything was compiled from source code. A notable indication of this movement was the publication of the Linux-From-Scratch-HOWTO version 1.0 by Gerard Beekmans in 1999. Being a Linux Expert once again means knowing how to do it yourself.

For more historical information, see Ragib Hasan's "History of Linux" at http://netfiles.uiuc.edu/rhasan/linux

## The Goal of Pocket Linux

The purpose of Pocket Linux is to support and encourage people who wish to explore Linux by building a GNU/Linux system from nothing but source code. Pocket Linux is not intended to be a full featured system, but rather to give the reader a taste of what is involved in building an operating system from source code. After completing the Pocket Linux system the reader should have enough knowledge to confidently build almost any project using only source code. Given this direction we can put a few constraints on the project.

- The main focus should be learning. The project should not just describe how to do something, it should also describe why it should be done.

- The required time commitment should be minimal and manageable.

- The project should not require any investment in additional hardware or reconfiguration of existing hardware to set up a lab environment.

- Readers should not need to know any programming languages in order to complete the project.

- To remain true to the spirit of GNU/Linux, all software used in the project should be covered under the GNU/GPL or another, similarly liberal, open-source license.

## Working Within The Constraints

The Pocket Linux project gets its name from the fact that the bulk of the project fits onto two diskettes making it possible to carry the entire, working system around in one's pocket. This has the advantage of not requiring any additional hardware since any PC can be booted from the diskettes without disrupting any OS that exists on the hard drive. Using diskettes also partially addresses the aspect of time commitment, because the project size and complexity is necessarily limited by the 1.44 Megabyte size of the installation media.

To further reduce the time commitment, the Pocket Linux project is divided into several phases, each one chapter in length. Each phase builds only a small piece of the overall project, but at the same time the conclusion of each chapter results in a self-contained, working system. This step-by-step approach should allow readers to pace themselves and not feel the need to rush to see results.

Chapters are further subdivided into four sections. The first two sections, analysis and design, focus on the theory of what is to be accomplished in each phase and why. The last two sections, construction and implementation, detail the steps needed to do the actual building. Advanced readers, who may be familiar with the theories laid out in a particular chapter are encouraged to gloss over the analysis and design sections in the interest of time. The separation of theory from hands-on exercises should allow readers of all skill levels to complete the project without feeling either completely lost or mired in too much detail.

Finally, the Pocket Linux project will strive to use GNU/GPL software when possible and other open-source licensed software when there is no GNU/GPL alternative. Also, Pocket Linux will never require any programming more complex than a BASH shell script.