Next Previous Contents

1. Introduction

I find it frustrating that many things happen inside my Linux machine that I do not understand. If, like me, you want to really understand your system rather than just knowing how to use it, this document should be a good place to start. This kind of background knowledge is also needed if you want to be a top notch Linux problem solver.

I assume that you have a working Linux box, and understand some basic things about Unix and PC hardware. If not, an excellent place to start learning is Eric S. Raymond's The Unix and Internet Fundamentals HOWTO It is short, very readable and covers all the basics.

The main thread in this document is how Linux starts itself up. But it also tries to be a more comprehensive learning resource. I have included exercises in each section. If you actually do some of these, you will learn much more than you could by just reading. There are also links to source code downloads. The reason for this is that I hope some readers will undertake the best Linux learning exercise that I know of, which is building a system from source code, or ``rolling your own''. Giambattista Vico, an Italian philosopher (1668-1744) said ``verum ipsum factum'', understanding arises through making. Thanks to Alex (see acknowledge ) for this quote.

Packages are presented in the order in which they appear in the system startup process. This means that if you install the packages in this order you can reboot after each installation, and see the system get a little closer to giving you a bash prompt each time. There is a reassuring sense of progress in this.

There are choices to make when putting together a Linux system. These are the same choices that the likes of Red Hat and Debian must make when creating a distribution. There are often several free packages available to do the same job. What I describe here are the components that are part of the major Linux distributions. I choose GNU software if it is available because it is better documented, and causes less headaches. It would be possible to get a bash prompt without installing everything I mention here. However I want to describe a base system that can be built on easily, without nasty kludges. For example, one of the init scripts uses awk. (Don't worry if you don't know what awk is) Rather than hack this out of the script, I just install awk.

I recommend that you first read the main text of each section, skipping the exercises and references. Then decide how deep an understanding you want to develop, and how much effort you are prepared to put in. Then start at the beginning again, doing the exercises and additional reading as you go.


Next Previous Contents