How RH Linux Boots :: Fundamental Kernel Initialization
The fundamental kernel initialization is boring in that it is largely
invariant: there is (almost) nothing you can do to change its actions.
This is possible because each CPU type requires its own kernel and in turn
the kernel restricts its attention to a small, well understood hardware
core.
Incidentally, kernels are typically compressed and prepended with a
decompression routine.
Kernel initialization highlights include:
-
initialize CPU components, eg, MMU
-
ensure multi-processor synch
-
print compiler time info banner
-
initialize memory, including interrupt table
-
initialize the scheduler
-
parse boot time options
-
test for known CPU bugs and enable workarounds
-
mount the root filesystem (ooooh, so many questions here ...)
-
fork off the init process (PID 1)
The kernel now reclaims certain RAM areas used only during boot-time
kernel initialization. It does this with some sneaky compiler tricks
and a funny restart, after which, it resumes life as the Idle Task/Scheduler.
In essence, kernel initialization does two things: start the core system
of shared resource managers (RAM, processor and mass storage); and start
a single process, /sbin/init.
boot_partition
index
init_&_inittab