Linux From Scratch: Version 5.1-pre1
Prev | Chapter 8. Making the LFS system bootable | Next

# Installing Linux-2.4.24

The Linux package contains the kernel and the header files.

    Estimated build time:           All default options: 4.20 SBU
    Estimated required disk space:  All default options: 181 MB

Official download location for Linux (2.4.24):
ftp://ftp.kernel.org/pub/linux/kernel/

For its installation Linux depends on: Bash, Binutils, Coreutils, Findutils, GCC, Glibc, Grep, Gzip, Make, Modutils, Perl, Sed.

##

## Installation of the kernel

Building the kernel involves a few steps: configuration, compilation, and installation. If you don't like the way this book configures the kernel, view the `README` file in the kernel source tree for alternative methods.

Prepare for compilation by running the following command:

    make mrproper

This ensures that the kernel tree is absolutely clean. The kernel team recommends that this command be issued prior to each kernel compilation. You shouldn't rely on the source tree being clean after untarring.

Configure the kernel via a menu-driven interface:

    make menuconfig

`make oldconfig` may be more appropriate in some situations. See the `README` file for more information.

If you wish, you may skip kernel configuration by simply copying the kernel config file, `.config`, from your host system (assuming it is available) to the unpacked `linux-2.4.24` directory. However, we don't recommend this option. You're much better off exploring all the configuration menus and creating your own kernel configuration from scratch.

For POSIX shared memory support, ensure that the kernel config option "Virtual memory file system support" is enabled. It resides within the "File systems" menu and is normally enabled by default.

Verify dependencies and create dependency information files:

    make CC=/opt/gcc-2.95.3/bin/gcc dep

Compile the kernel image:

    make CC=/opt/gcc-2.95.3/bin/gcc bzImage

Compile the drivers which have been configured as modules:

    make CC=/opt/gcc-2.95.3/bin/gcc modules

If you intend to use kernel modules, you will need an `/etc/modules.conf` file. Information pertaining to modules and to kernel configuration in general may be found in the kernel documentation, which is found in the `linux-2.4.24/Documentation` directory. The modules.conf man page and the kernel HOWTO at http://www.tldp.org/HOWTO/Kernel-HOWTO.html may also be of interest to you.

Install the modules:

    make CC=/opt/gcc-2.95.3/bin/gcc modules_install

As nothing is complete without documentation, build the manual pages that come with the kernel:

    make mandocs

And install these pages:

    cp -a Documentation/man /usr/share/man/man9

Kernel compilation has finished but more steps are required to complete the installation. Some files need to be copied to the `/boot` directory.

The path to the kernel image may vary depending on the platform you're using. Issue the following command to install the kernel:

    cp arch/i386/boot/bzImage /boot/lfskernel

`System.map` is a symbol file for the kernel. It maps the function entrypoints of every function in the kernel API, as well as the addresses of the kernel data structures for the running kernel. Issue the following command to install the map file:

    cp System.map /boot

`.config` is the kernel configuration file that was produced by the make menuconfig step above. It contains all the config selections for the kernel that was just compiled. It's a good idea to keep this file for future reference:

    cp .config /boot/config-lfskernel

##

## Contents of Linux

Installed files: the kernel, the kernel headers, and the System.map

## Short descriptions

The kernel is the engine of your GNU/Linux system. When switching on your box, the kernel is the first part of your operating system that gets loaded. It detects and initializes all the components of your computer's hardware, then makes these components available as a tree of files to the software, and turns a single CPU into a multi-tasking machine capable of running scores of programs seemingly at the same time.

The kernel headers define the interface to the services that the kernel provides. The headers in your system's `include` directory should always be the ones against which Glibc was compiled and should therefore not be replaced when upgrading the kernel.

The `System.map` file is a list of addresses and symbols. It maps the entry points and addresses of all the functions and data structures in the kernel.

Prev | Home | Next
Creating the /etc/fstab file | Up | Making the LFS system bootable