|
|
|
|
20.1 The Linux Boot Process
The Linux boot process consists of several stages each represented by
another component. The following list briefly summarizes the boot process
and features all the major components involved.
20.1.1 initramfs
initramfs is a small cpio archive that the kernel can load to a RAM disk. It
provides a minimal Linux environment that enables the execution of programs
before the actual root file system is mounted. This minimal Linux
environment is loaded into memory by BIOS routines and does not have
specific hardware requirements other than sufficient memory. initramfs
must always provide an executable named init that should execute the
actual init program on the root file system for the boot process to
proceed.
Before the root file system can be mounted and the operating
system can be started, the kernel needs the corresponding drivers to access
the device on which the root file system is located. These drivers may
include special drivers for certain kinds of hard drives or even network
drivers to access a network file system. The needed modules for the root
file system may be loaded by init on initramfs. After the modules
are loaded, udev provides the initramfs with the needed devices.
Later in the boot process, after changing the root file system, it
is necessary to regenerate the devices. This is done by init.
If you need to change hardware (hard disks) in an installed system and
this hardware requires different drivers to be present in the kernel at
boot time, you must update initramfs. This is done in the same
way as with its predecessor, initrd—by calling
mkinitrd. Calling mkinitrd without
any argument creates an initramfs. Calling mkinitrd
-R creates an initrd. In
SUSE® Linux Enterprise, the modules to load are specified by the variable
INITRD_MODULES in
/etc/sysconfig/kernel.
After installation, this variable is automatically set to the
correct value.
The modules are loaded in exactly the order in which they appear in
INITRD_MODULES. This is only important if
you rely on the correct setting of the device files
/dev/sd?. However, in current systems you
also may use the device files below
/dev/disk/ that are sorted in several
subdirectories, named
by-id, by-path and
by-uuid, and always represent the same
disk.
IMPORTANT: Updating initramfs or initrd
The boot loader loads initramfs or initrd in the same way as the kernel. It
is not necessary to reinstall GRUB after updating initramfs or initrd,
because GRUB searches the directory for the right file when booting.
20.1.2 init on initramfs
The main purpose of init on initramfs is to prepare the mounting of and
access to the real root file system. Depending on your system
configuration, init is responsible for the following tasks.
- Loading Kernel Modules
-
Depending on your hardware configuration, special drivers may be needed
to access the hardware components of your computer (the most important
component being your hard drive). To access the final
root file system, the kernel needs to load the proper file system
drivers.
- Providing Special Block Files
-
For each loaded module, the kernel generates device events. udev
handles these events and generates the needed device special
files on a RAM file system in /dev. Without
those special files, the file system would not be accessible.
- Managing RAID and LVM Setups
-
If you configured your system to hold the root file system under RAID or
LVM, init sets up LVM or RAID to
enable access to the root file system later. Find information about RAID
in Section 6.2,
Soft RAID Configuration.
Find information about LVM in Section 6.1,
LVM Configuration.
- Managing Network Configuration
-
If you configured your system to use a network-mounted root file system
(mounted via NFS), init must make sure that the proper
network drivers are loaded and that they are set up to allow access to
the root file system.
If the file system resides on a networked block device like
iSCSI or SAN, connection to the storage server
is also set up by the initramfs.
When init is called during the initial boot as part of the installation
process, its tasks differ from those mentioned earlier:
- Finding the Installation Medium
-
As you start the installation process, your machine loads an
installation kernel and a special initrd with the YaST
installer from the installation medium. The YaST installer,
which is run in a RAM file system, needs to have information
about the
location of the installation medium to access it and install the
operating system.
- Initiating Hardware Recognition and Loading Appropriate Kernel
Modules
-
As mentioned in Section 20.1.1,
initramfs, the boot
process starts with a minimum set of drivers that can be used with most
hardware configurations. init starts an initial hardware scanning
process that determines the set of drivers suitable for your hardware
configuration. The names of the modules needed
for the boot process are written to
INITRD_MODULES in
/etc/sysconfig/kernel. These names are
used to generate a custom initramfs that is needed to boot the
system. If the modules are
not needed for boot but for coldplug, the modules are written
to /etc/sysconfig/hardware/hwconfig-*.
All devices that are described with configuration files in this
directory are initialized in the boot process.
- Loading the Installation System or Rescue System
-
As soon as the hardware has been properly recognized, the appropriate
drivers have been loaded, and udev has created the device special
files, init starts the installation
system, which contains the actual YaST installer, or the
rescue system.
- Starting YaST
-
Finally, init starts YaST, which starts package installation and
system configuration.
|
|
|