---

Insight into GNU/Linux boot process

“Abstract:
Booting an operating system has always been considered a
challenging task. In this document we will take a look at the
different aspects of the boot process. Such as the BIOS which is
the first code which runs, the boot loaders that can load different
operating systems, pass arguments to the kernel, load it from
different sources like a hard drive, a flash, and network &
finally the kernel itself. Though loading the kernel & setting
it up to execute is not all that is to be done, we need to bring
the system up with different user specific configurations. We will
look at the scripts, which deal with this. Linux has grown from a
system that used to boot from a floppy providing no luxurious
features to the user, to the current jazzy Linux systems. It is
important to have an insight of the Linux boot procedure. Say for
Linux to serve the purpose on embedded systems, the generic boot
procedure must almost always be modified to meet the needs of the
target application.

“Introduction:
The moment after a computer is powered on, the systems memory is
empty, the processor has no clue as to where it is & what it is
supposed to execute. To see us through this situation a special
hardware circuit raises the logical value of the RESET pin of the
CPU. After RESET is thus asserted, some registers of the processor
are set to fixed values, and the code found at physical address
0xFFFF FFF0, which is system BIOS, is executed. The BIOS does the
POST ,some initialization & loads the boot sector from the boot
device. The code that sits in the MBR is the boot loader; it gives
us the ability to load multiple operating systems. The next in this
process is the kernel itself, but its not as straight as it looks
there are a few critical steps, which we will see in details a bit
later. After the kernel is up and running it needs to mount the
root file system. Say if the file system driver compiled as module
then we won’t be able to directly mount the real root file
system. To get over this we use an initrd images, which has the
modules & a “linuxrc “ which can be a script or a
binary. This will mount the real root file system & run init
process. The init process reads the scripts & starts all the
services according to the configuration. This is the final step in
the boot process, now our system is all set to go..”


Complete Story

Get the Free Newsletter!

Subscribe to Developer Insider for top news, trends, & analysis