Ignore:
Timestamp:
02/19/2005 10:16:42 PM (19 years ago)
Author:
Gerard Beekmans <gerard@…>
Branches:
10.0, 10.0-rc1, 10.1, 10.1-rc1, 11.0, 11.0-rc1, 11.0-rc2, 11.0-rc3, 11.1, 11.1-rc1, 11.2, 11.2-rc1, 11.3, 11.3-rc1, 12.0, 12.0-rc1, 12.1, 12.1-rc1, 6.1, 6.1.1, 6.3, 6.4, 6.5, 6.6, 6.7, 6.8, 7.0, 7.1, 7.2, 7.3, 7.4, 7.5, 7.5-systemd, 7.6, 7.6-systemd, 7.7, 7.7-systemd, 7.8, 7.8-systemd, 7.9, 7.9-systemd, 8.0, 8.1, 8.2, 8.3, 8.4, 9.0, 9.1, arm, bdubbs/gcc13, ml-11.0, multilib, renodr/libudev-from-systemd, s6-init, trunk, xry111/arm64, xry111/arm64-12.0, xry111/clfs-ng, xry111/lfs-next, xry111/loongarch, xry111/loongarch-12.0, xry111/loongarch-12.1, xry111/mips64el, xry111/pip3, xry111/rust-wip-20221008, xry111/update-glibc
Children:
3d31fc4
Parents:
2f9131f
Message:

Trunk is now identical to Testing

git-svn-id: http://svn.linuxfromscratch.org/LFS/trunk/BOOK@4648 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689

File:
1 edited

Legend:

Unmodified
Added
Removed
  • chapter08/kernel.xml

    r2f9131f r81fd230  
    44  %general-entities;
    55]>
    6 <sect1 id="ch-bootable-kernel" xreflabel="Linux" role="wrap">
     6<sect1 id="ch-bootable-kernel" role="wrap">
    77<title>Linux-&linux-version;</title>
    88<?dbhtml filename="kernel.html"?>
     
    1111
    1212<sect2 role="package"><title/>
     13<para>The Linux package contains the kernel and the header files.</para>
    1314
    1415<segmentedlist>
    1516<segtitle>&buildtime;</segtitle>
    1617<segtitle>&diskspace;</segtitle>
    17 <seglistitem><seg>All default options: 4.20 SBU</seg>
    18 <seg>All default options: 181 MB</seg></seglistitem>
     18<seglistitem><seg>4.20 SBU</seg>
     19<seg>181 MB</seg></seglistitem>
    1920</segmentedlist>
    2021
     22<segmentedlist>
     23<segtitle>Linux installation depends on</segtitle>
     24<seglistitem><seg>Bash, Binutils, Coreutils, Findutils,
     25GCC, Glibc, Grep, Gzip, Make, Modutils, Perl, and Sed</seg></seglistitem>
     26</segmentedlist>
    2127</sect2>
    2228
    2329<sect2 role="installation">
    2430<title>Installation of the kernel</title>
     31
     32<para>Building the kernel involves a few steps&mdash;configuration,
     33compilation, and installation. Read the <filename>README</filename>
     34file in the kernel source tree for alternate methods to the way this
     35book configures the kernel.</para>
    2536
    2637<para>Kernel version 2.6.10 has a security vulnerability that will allow user
     
    3445<screen><userinput>make mrproper</userinput></screen>
    3546
    36 <!--NEW: the sed command has been removed-->
    37 
    38 <para>If, in <xref linkend="ch-scripts-console"/>, you decided you want
    39 to compile the keymap into the kernel, issue the command below:</para>
     47<para>This ensures that the kernel tree is absolutely clean. The
     48kernel team recommends that this command be issued prior to each
     49kernel compilation. Do not rely on the source tree being clean after
     50un-tarring.</para>
     51
     52<para>If, in <xref linkend="ch-scripts-console" role=","/> it was decided to
     53compile the keymap into the kernel, issue the command below:</para>
    4054
    4155<screen><userinput>loadkeys -m /usr/share/kbd/keymaps/<replaceable>[path to  keymap]</replaceable> &gt; \
    4256    drivers/char/defkeymap.c</userinput></screen>
    4357
    44 <para>Configure the kernel via a menu-driven interface.  BLFS has some
    45 information regarding particular kernel configuration requirements of
    46 packages outside of LFS at
    47 <ulink url="&blfs-root;view/svn/longindex.html#kernel-config-index"/>.</para>
     58<para>For example, if using a Dutch keyboard, use
     59<phrase
     60condition="html"><filename>/usr/share/kbd/keymaps/i386/qwerty/nl.map.gz</filename></phrase><phrase
     61condition="pdf"><filename>/usr/share/kbd/keymaps/i386/
     62qwerty/nl.map.gz</filename></phrase>.</para>
     63
     64<para>Configure the kernel via a menu-driven interface:</para>
    4865
    4966<screen><userinput>make menuconfig</userinput></screen>
    5067
     68<para>Alternatively, <command>make oldconfig</command> may be more appropriate in some
     69situations. See the <filename>README</filename> file for more
     70information.</para>
     71
     72<note><para>When configuring the kernel, be sure to enable the
     73<quote>Support for hot-pluggable devices</quote> option under the
     74<quote>General Setup</quote> menu. This enables hotplug events that
     75are used by <command>udev</command> to populate the <filename
     76class="directory">/dev</filename> directory with device
     77nodes.</para></note>
     78
     79<para>If desired, skip kernel configuration by copying the kernel
     80config file, <filename>.config</filename>, from the host system
     81(assuming it is available) to the unpacked <filename
     82class="directory">linux-&linux-version;</filename> directory. However,
     83we do not recommend this option. It is often better to explore all the
     84configuration menus and create the kernel configuration from
     85scratch.</para>
     86
     87<para>For POSIX-shared memory support, ensure that the kernel config
     88option <quote>Virtual memory file system support</quote> is enabled.
     89It resides within the <quote>File systems</quote> menu and is normally
     90enabled by default.</para>
     91
     92<para>LFS bootscripts make the assumption that either both
     93<quote>Support for Host-side USB</quote> and <quote>USB device
     94filesystem</quote> have been compiled directly into the kernel, or
     95that neither is compiled at all.  Bootscripts will not work properly
     96if it is a module (usbcore.ko).</para>
     97
     98<note><para>NPTL requires the kernel to be compiled with GCC 3.x, in
     99this case &gcc-version;. Compiling with 2.95.x is known to cause failures in
     100the glibc test suite, so it is not recommended to compile the kernel
     101with gcc 2.95.x.</para></note>
     102
    51103<para>Compile the kernel image and modules:</para>
    52104
    53105<screen><userinput>make</userinput></screen>
    54106
    55 <para>Install the modules, if your kernel configuration uses them:</para>
     107<para>If using kernel modules, an
     108<filename>/etc/modprobe.conf</filename> file may be needed.
     109Information pertaining to modules and kernel configuration is
     110located in the kernel documentation in the <filename
     111class="directory">linux-&linux-version;/Documentation</filename>
     112directory. The <emphasis>modprobe.conf</emphasis> man page may also be
     113of interest.</para>
     114
     115<para>Be very careful when reading other documentation because it
     116usually applies to 2.4.x kernels only. As far as we know, kernel
     117configuration issues specific to Hotplug and Udev are not documented.
     118The problem is that Udev will create a device node only if Hotplug or
     119a user-written script inserts the corresponding module into the
     120kernel, and not all modules are detectable by Hotplug. Note that
     121statements like the one below in the
     122<filename>/etc/modprobe.conf</filename> file do not work with
     123Udev:</para>
     124
     125<para><screen>alias char-major-XXX some-module</screen></para>
     126
     127<para>Because of the complications with Hotplug, Udev, and modules, we
     128strongly recommend starting with a completely non-modular kernel
     129configuration, especially if this is the first time using Udev.</para>
     130
     131<para>Install the modules, if the kernel configuration uses them:</para>
    56132
    57133<screen><userinput>make modules_install</userinput></screen>
    58134
    59 <para>The path to the kernel image may vary depending on the platform you're
    60 using. Issue the following command to install the kernel:</para>
     135<para>If there are many modules and very little space, consider
     136stripping and compressing the modules. For most users, such
     137compression is not worth the time, but if the system is pressed for
     138space, see <ulink
     139url="http://www.linux-mips.org/archives/linux-mips/2002-04/msg00031.html"/>.</para>
     140
     141<para>After kernel compilation is complete, additional steps are
     142required to complete the installation. Some files need to be copied to
     143the <filename class="directory">/boot</filename> directory.</para>
     144
     145<para>The path to the kernel image may vary depending on the platform
     146being used. Issue the following command to install the kernel:</para>
    61147
    62148<screen><userinput>cp arch/i386/boot/bzImage /boot/lfskernel-&linux-version;</userinput></screen>
    63149
     150<para><filename>System.map</filename> is a symbol file for the kernel.
     151It maps the function entry points of every function in the kernel API,
     152as well as the addresses of the kernel data structures for the running
     153kernel. Issue the following command to install the map file:</para>
     154
    64155<screen><userinput>cp System.map /boot/System.map-&linux-version;</userinput></screen>
    65156
     157<para>The kernel configuration file <filename>.config</filename>
     158produced by the <command>make menuconfig</command> step
     159above contains all the configuration selections for the kernel
     160that was just compiled. It is a good idea to keep this file for future
     161reference:</para>
     162
    66163<screen><userinput>cp .config /boot/config-&linux-version;</userinput></screen>
    67164
    68 <para>If you are going to keep the kernel source tree around, you may want to
    69 run <command>chown -R 0:0</command> on the
    70 <filename class="directory">linux-&linux-version;</filename> directory to ensure all files are
    71 owned by user <emphasis>root</emphasis>.</para>
     165<para>It is important to note that the files in the kernel source
     166directory are not owned by <emphasis>root</emphasis>. Whenever a
     167package is unpacked as user <emphasis>root</emphasis> (like we did
     168inside chroot), the files have the user and group IDs of whatever
     169they were on the packager's computer. This is usually not a problem
     170for any other package to be installed because the source tree is
     171removed after the installation. However, the Linux source tree is
     172often retained for a long time.  Because of this, there is a chance
     173that whatever user ID the packager used will be assigned to somebody
     174on the machine. That person would then have write access to the kernel
     175source.</para>
     176
     177<para>If the kernel source tree is going to be retained, run
     178<command>chown -R 0:0</command> on the <filename
     179class="directory">linux-&linux-version;</filename> directory to ensure
     180all files are owned by user <emphasis>root</emphasis>.</para>
     181
     182<warning><para>Some kernel documentation recommends creating a symlink from
     183<filename class="symlink">/usr/src/linux</filename> pointing to the kernel
     184source directory.  This is specific to kernels prior to the 2.6 series and
     185<emphasis>must not</emphasis> be created on an LFS system as it can cause
     186problems for packages you may wish to build once your base LFS system is
     187complete.</para></warning>
    72188
    73189</sect2>
     
    76192<sect2 id="contents-kernel" role="content"><title>Contents of Linux</title>
    77193
    78 <para>See testing</para>
     194<segmentedlist>
     195<segtitle>Installed files</segtitle>
     196<seglistitem><seg>kernel, kernel headers,
     197and System.map</seg></seglistitem>
     198</segmentedlist>
     199
     200<variablelist><bridgehead renderas="sect3">Short Descriptions</bridgehead>
     201<?dbfo list-presentation="list"?>
     202
     203<varlistentry id="kernel">
     204<term><filename>kernel</filename></term>
     205<listitem>
     206<para>The engine of the Linux system. When turning on the computer,
     207the kernel is the first part of the operating system that gets loaded.
     208It detects and initializes all components of the computer's hardware,
     209then makes these components available as a tree of files to the
     210software and turns a single CPU into a multitasking machine capable
     211of running scores of programs seemingly at the same time.</para>
     212<indexterm zone="ch-bootable-kernel kernel"><primary sortas="b-kernel">kernel</primary></indexterm>
     213</listitem>
     214</varlistentry>
     215
     216<varlistentry id="kernel-headers">
     217<term><filename>kernel headers</filename></term>
     218<listitem>
     219<para>Defines the interface to the services that the kernel provides.
     220The headers in the system's <filename
     221class="directory">include</filename> directory should
     222<emphasis>always</emphasis> be the ones against which Glibc was
     223compiled and therefore, should <emphasis>not</emphasis> be replaced
     224when upgrading the kernel.</para>
     225<indexterm zone="ch-bootable-kernel kernel-headers"><primary sortas="e-kernel-headers">kernel headers</primary></indexterm>
     226</listitem>
     227</varlistentry>
     228
     229<varlistentry id="System.map">
     230<term><filename>System.map</filename></term>
     231<listitem>
     232<para>A list of addresses and symbols; it maps the entry points and
     233addresses of all the functions and data structures in the
     234kernel</para>
     235<indexterm zone="ch-bootable-kernel System.map"><primary sortas="e-/boot/System.map">/boot/System.map</primary></indexterm>
     236</listitem>
     237</varlistentry>
     238</variablelist>
    79239
    80240</sect2>
    81241
    82242</sect1>
     243
Note: See TracChangeset for help on using the changeset viewer.