The Bootstrap Program System Startup

The two major UNIX platforms BSD and System V have different startup and shutdown procedures, with, of course, the main differences occurring in startup. Among existing commercial UNIX flavors, the System V approach is more common; it provides more flexibility and some other administrative advantages. However, the BSD approach is some−what easier to understand, and we will start our discussion with the BSD startupshutdown procedure. Once the startupshutdown concept is well understood, it will be easy to continue with the System V procedure.

4.2 System Startup

The system startup procedure is a continuous process that a UNIX system goes through, from its initial hardware−determined stage until the final production−ready stage. However, this unique system journey passes through several distinct phases, and each of these phases has its specific characteristics. The startup phases, listed in the order they occur, are: Bootstrap program execution • Kernel execution • rc system initialization • Terminal line initialization • It is easier to understand the system startup procedure when the whole process is divided into several phases and each of the phases is analyzed separately, so this is the approach we will take. Although each of the listed phases is equally important for successful system startup, the system initialization phase requires the most administrative attention, so most of the following discussion will address this phase. In each of the startup phases, the system learns enough to execute the next phase. Each phase contributes a bit to the overall system startup. At the very beginning, the system does not know very much; at the very end, the system is ready for multi−user operations.

4.2.1 The Bootstrap Program

The origin of the word boot as in, to boot the system is bootstrapping, which is the process of bringing a computer system to life and ready for use. Bootstrapping is actually the nerd word for starting up a computer. The computer system itself is only a collection of hardware resources registers, arithmeticlogical unit, program counter, memories, etc. capable of executing a sequence of instructions that make a program. The program, stored in the computers memory any kind of memory: ROM, RAM, external magnetic memory, etc., defines the systems activity at every moment, including its first steps during the system startup. An initial program, the bootstrap program, must be stored in the fast nonvolatile memory directly accessible by a processor, or CPU CPU stands for central processing unit and is another term for a processor. This portion of the computer memory is known as internal read−only memory ROM. The execution of the bootstrap program is always automatically initiated when the system is powered−on or when a system hardware reset is applied. It is also initiated when the system is rebooted from the system console. Only the initial part of the bootstrap program, the part sufficient 88 The system has to learn enough from the ROM to be able to access a disk to continue the bootstrap program, but it still assumes a simple flat data structure on the disk. A complex disk data organization such as the UNIX filesystem data structure is still too complicated for the system at this stage; more learning is needed to deal with a filesystem. That is why the rest of the bootstrap program is stored in a special part of the disk known as the boot partition sometimes also known as the boot segment. The main characteristic of the boot partition is its easy access and flat data structure, so the system is able to continue with the bootstrap program execution, and further learning. The ratio of the percentage of the bootstrap program stored in the ROM versus the disk boot partition varied through time. In the early days of UNIX when only low capacity, expensive ROM was available, the first part of the bootstrap program was reduced to the bare minimum size. Today, systems include high−density ROM sufficient to store quite sophisticated bootstrap programs; this makes boot partitions less important, although they are still a part of every system startup. Once the bootstrap program is completely executed, the system is knowledgeable enough to continue with the kernel execution. Traditionally UNIX presents the only OS running on underlying hardware; and traditionally this is a proprietary hardware for that UNIX flavor. This fact makes a booting process unique and quite straightforward. However, once PC hardware also became common in the UNIX arena, a more flexible booting, with UNIX as one of several choices, emerged as a preferable system characteristic. Linux is an example. On the Linux platform, the three most common booting mechanisms are: To boot Linux from the floppy, and leave hard drive for other OSs • To use the Linux loader LILO, the most common case • To run Loadlin, an MS−DOS program that boots Linux from within DOS • What is exceptional with LILO is the possibility of configuring this loader in different ways to match different needs; multiple−choice booting, including a non−UNIX startup, is also possible. The configured loader should then be installed in the boot sector of the first disk, known as MBR master boot record. When the system is started, the PC BIOS transfers control to MBR and triggers a corresponding LILO booting. Linux provides an easy LILO configuration through its etclilo.conf configuration file, and the command lilo for its installation as MBR.

4.2.2 The Kernel Execution