Intermec CK1 Programmer's Reference Manual page 316

Intermec ck1: reference guide
Hide thumbs Also See for CK1:
Table of Contents

Advertisement

µ
Appendix A —
Clinux System
292
When the system is turned on, the processor starts to execute the
instructions for getting the hardware ready for the operating system. In a
personal computer these instructions look in the storage like ROM, Flash
memory, or system BIOS ROM. The Basic Input/Output System (BIOS)
contains embedded code that initiates tasks to detect particular system
parameters like the amount of memory, disk devices, and the date and
defines the order in which these disk devices should be checked for
bootable media. The first few bytes of the hard drive are usually turned
into an instruction where to find and load the operating system located in
the machine. These first few sectors are called the Master Boot Record
(MBR), which starts the loading of the operating system. The MBR
usually contains the boot loader, which is invoked to continue to load the
image of an operating system kernel into RAM.
After the BIOS assigns the system to your MBR, the booting process of
your system in a case of Linux continues with Linux bootsector
(arch/i386/boot/bootsect.S), which is a specific bootloader or by letting some
other instance for example loadlin to continue the booting process. From
these the bootloader gives most intelligence to the boot process. It is a
small program installed into the MBR or to the boot sector of the active
partition, which allows to boot to any specified point on your computer,
giving an option to have multiple number of kernels or other operating
systems installed. The Linux distributions to x86 based computers have
two main stream bootloaders: LInux LOader (LILO) and GRand Unified
Bootloader (GRUB). These two and other boot loaders differ in
architectures, but when they have finished their job, the kernel image is
always transferred from long-term storage to the memory. It is done by
copying the boot sector of the corresponding partition into the RAM or
directly copy the kernel image into RAM. The last thing that the
bootloader does is to jump to setup.S where the booting process continues.
The memory space used by the loader after this can be used for other
applications and it is not needed anymore.
By the bootloader, the compressed kernel image is now placed at physical
address 0x100000 or 0x10000 depending on whether the created
compressed kernel image is in zImage or big kernel (bzImage) form. The
execution now continues with the setup.S to get the system data from the
BIOS and places it into the appropriate place in system memory. Although
the BIOS has initialized the hardware devices, Linux reinitializes these
devices with its own manner. After this the setup, in a case of image loaded
into low RAM, moves to physical address 0x10000 and jumps to this
address, which is the head of the compressed kernel. This action sets up
the stack and calls the decompression routine. This action is done so that
the space reserved by the initialization of the hardware can be used as a
temporary buffer following the kernel image in RAM. This process is
invoked through a first startup_32() function. The uncompressed kernel is
placed to the final position from where the execution continues with the
second startup_32() function included in the head.S. This action starts the
high-level environment initialization by creating the first process 0 to set
up the Kernel mode stack setup. The function also initializes the interrupt
CK1 SDK Programmer's Reference Manual

Advertisement

Table of Contents
loading

Table of Contents