Ignore:
Timestamp:
12/18/2005 01:44:24 PM (18 years ago)
Author:
Manuel Canales Esparcia <manuel@…>
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.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:
d781ffb
Parents:
7686ca6
Message:

Chapter08 indentation.

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • chapter08/kernel.xml

    r7686ca6 rb78c747  
    11<?xml version="1.0" encoding="ISO-8859-1"?>
    2 <!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
     2<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
     3  "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
    34  <!ENTITY % general-entities SYSTEM "../general.ent">
    45  %general-entities;
    56]>
     7
    68<sect1 id="ch-bootable-kernel" role="wrap">
    7 <title>Linux-&linux-version;</title>
    8 <?dbhtml filename="kernel.html"?>
    9 
    10 <indexterm zone="ch-bootable-kernel"><primary sortas="a-Linux">Linux</primary></indexterm>
    11 
    12 <sect2 role="package"><title/>
    13 <para>The Linux package contains the Linux kernel.</para>
    14 
    15 <segmentedlist>
    16 <segtitle>&buildtime;</segtitle>
    17 <segtitle>&diskspace;</segtitle>
    18 <seglistitem><seg>4.20 SBU</seg>
    19 <seg>181 MB</seg></seglistitem>
    20 </segmentedlist>
    21 
    22 <segmentedlist>
    23 <segtitle>&dependencies;</segtitle>
    24 <seglistitem><seg>Bash, Binutils, Coreutils, Findutils,
    25 GCC, Glibc, Grep, Gzip, Make, Modutils, Perl, and Sed</seg></seglistitem>
    26 </segmentedlist>
    27 </sect2>
    28 
    29 <sect2 role="installation">
    30 <title>Installation of the kernel</title>
    31 
    32 <para>Building the kernel involves a few steps&mdash;configuration, compilation,
    33 and installation. Read the <filename>README</filename> file in the kernel source
    34 tree for alternative methods to the way this book configures the kernel.</para>
    35 
    36 <para>Prepare for compilation by running the following command:</para>
     9  <?dbhtml filename="kernel.html"?>
     10
     11  <title>Linux-&linux-version;</title>
     12
     13  <indexterm zone="ch-bootable-kernel">
     14    <primary sortas="a-Linux">Linux</primary>
     15  </indexterm>
     16
     17  <sect2 role="package">
     18    <title/>
     19
     20    <para>The Linux package contains the Linux kernel.</para>
     21
     22    <segmentedlist>
     23      <segtitle>&buildtime;</segtitle>
     24      <segtitle>&diskspace;</segtitle>
     25
     26      <seglistitem>
     27        <seg>4.20 SBU</seg>
     28        <seg>181 MB</seg>
     29      </seglistitem>
     30    </segmentedlist>
     31
     32    <segmentedlist>
     33      <segtitle>&dependencies;</segtitle>
     34
     35      <seglistitem>
     36        <seg>Bash, Binutils, Coreutils, Findutils, GCC, Glibc, Grep, Gzip,
     37        Make, Modutils, Perl, and Sed</seg>
     38      </seglistitem>
     39    </segmentedlist>
     40
     41  </sect2>
     42
     43  <sect2 role="installation">
     44    <title>Installation of the kernel</title>
     45
     46    <para>Building the kernel involves a few steps&mdash;configuration,
     47    compilation, and installation. Read the <filename>README</filename> file
     48    in the kernel source tree for alternative methods to the way this book
     49    configures the kernel.</para>
     50
     51    <para>Prepare for compilation by running the following command:</para>
    3752
    3853<screen><userinput>make mrproper</userinput></screen>
    3954
    40 <para>This ensures that the kernel tree is absolutely clean. The
    41 kernel team recommends that this command be issued prior to each
    42 kernel compilation. Do not rely on the source tree being clean after
    43 un-tarring.</para>
    44 
    45 <para>If, in <xref linkend="ch-scripts-console" role=","/> it was decided to
    46 compile the keymap into the kernel, issue the command below:</para>
     55    <para>This ensures that the kernel tree is absolutely clean. The
     56    kernel team recommends that this command be issued prior to each
     57    kernel compilation. Do not rely on the source tree being clean after
     58    un-tarring.</para>
     59
     60    <para>If, in <xref linkend="ch-scripts-console" role=","/> it was decided to
     61    compile the keymap into the kernel, issue the command below:</para>
    4762
    4863<screen role="nodump"><userinput>loadkeys -m /usr/share/kbd/keymaps/<replaceable>[path to  keymap]</replaceable> &gt; \
    4964    drivers/char/defkeymap.c</userinput></screen>
    5065
    51 <para>For example, if using a Dutch keyboard, use
    52 <filename>/usr/share/kbd/keymaps/i386/qwerty/nl.map.gz</filename>.</para>
    53 
    54 <para>Configure the kernel via a menu-driven interface. BLFS has some
    55 information regarding particular kernel configuration requirements of
    56 packages outside of LFS at <ulink
    57 url="&blfs-root;view/svn/longindex.html#kernel-config-index"/>:</para>
     66    <para>For example, if using a Dutch keyboard, use
     67    <filename>/usr/share/kbd/keymaps/i386/qwerty/nl.map.gz</filename>.</para>
     68
     69    <para>Configure the kernel via a menu-driven interface. BLFS has some
     70    information regarding particular kernel configuration requirements of
     71    packages outside of LFS at <ulink
     72    url="&blfs-root;view/svn/longindex.html#kernel-config-index"/>:</para>
    5873
    5974<screen role="nodump"><userinput>make menuconfig</userinput></screen>
    6075
    61 <para>Alternatively, <command>make oldconfig</command> may be more appropriate in some
    62 situations. See the <filename>README</filename> file for more
    63 information.</para>
    64 
    65 <para>If desired, skip kernel configuration by copying the kernel
    66 config file, <filename>.config</filename>, from the host system
    67 (assuming it is available) to the unpacked <filename
    68 class="directory">linux-&linux-version;</filename> directory. However,
    69 we do not recommend this option. It is often better to explore all the
    70 configuration menus and create the kernel configuration from
    71 scratch.</para>
    72 
    73 <note><para>NPTL requires the kernel to be compiled with GCC-3.x or later, in this case
    74 &gcc-version;. It is not recommended to compile the kernel with GCC-2.95.x, as
    75 this causes failures in the Glibc test suite. Normally, this wouldn't be
    76 mentioned as LFS doesn't build GCC-2.95.x. Unfortunately, the kernel
    77 documentation is outdated and still claims GCC-2.95.3 is the recommended
    78 compiler.</para></note>
    79 
    80 <para>Compile the kernel image and modules:</para>
     76    <para>Alternatively, <command>make oldconfig</command> may be more
     77    appropriate in some situations. See the <filename>README</filename>
     78    file for more information.</para>
     79
     80    <para>If desired, skip kernel configuration by copying the kernel
     81    config file, <filename>.config</filename>, from the host system
     82    (assuming it is available) to the unpacked <filename
     83    class="directory">linux-&linux-version;</filename> directory. However,
     84    we do not recommend this option. It is often better to explore all the
     85    configuration menus and create the kernel configuration from
     86    scratch.</para>
     87
     88    <note>
     89      <para>NPTL requires the kernel to be compiled with GCC-3.x or later, in
     90      this case &gcc-version;. It is not recommended to compile the kernel with
     91      GCC-2.95.x, as this causes failures in the Glibc test suite. Normally,
     92      this wouldn't be mentioned as LFS doesn't build GCC-2.95.x. Unfortunately,
     93      the kernel documentation is outdated and still claims GCC-2.95.3 is the
     94      recommended compiler.</para>
     95    </note>
     96
     97    <para>Compile the kernel image and modules:</para>
    8198
    8299<screen><userinput>make</userinput></screen>
    83100
    84 <para>If using kernel modules, an <filename>/etc/modprobe.conf</filename> file
    85 may be needed. Information pertaining to modules and kernel configuration is
    86 located in the kernel documentation in the <filename
    87 class="directory">linux-&linux-version;/Documentation</filename> directory.
    88 Also, <filename>modprobe.conf(5)</filename> may be of interest.</para>
    89 
    90 <para>Be very careful when reading other documentation relating to kernel
    91 modules because it usually applies to 2.4.x kernels only. As far as we know,
    92 kernel configuration issues specific to Hotplug and Udev are not documented.
    93 The problem is that Udev will create a device node only if Hotplug or a
    94 user-written script inserts the corresponding module into the kernel, and not
    95 all modules are detectable by Hotplug. Note that statements like the one below
    96 in the <filename>/etc/modprobe.conf</filename> file do not work with
    97 Udev:</para>
    98 
    99 <para><screen>alias char-major-XXX some-module</screen></para>
    100 
    101 <para>Because of the complications with Hotplug, Udev, and modules, we
    102 strongly recommend starting with a completely non-modular kernel
    103 configuration, especially if this is the first time using Udev.</para>
    104 
    105 <para>Install the modules, if the kernel configuration uses them:</para>
     101    <para>If using kernel modules, an <filename>/etc/modprobe.conf</filename> file
     102    may be needed. Information pertaining to modules and kernel configuration is
     103    located in the kernel documentation in the <filename
     104    class="directory">linux-&linux-version;/Documentation</filename> directory.
     105    Also, <filename>modprobe.conf(5)</filename> may be of interest.</para>
     106
     107    <para>Be very careful when reading other documentation relating to kernel
     108    modules because it usually applies to 2.4.x kernels only. As far as we know,
     109    kernel configuration issues specific to Hotplug and Udev are not documented.
     110    The problem is that Udev will create a device node only if Hotplug or a
     111    user-written script inserts the corresponding module into the kernel, and not
     112    all modules are detectable by Hotplug. Note that statements like the one below
     113    in the <filename>/etc/modprobe.conf</filename> file do not work with
     114    Udev:</para>
     115
     116<screen><literal>alias char-major-XXX some-module</literal></screen>
     117
     118    <para>Because of the complications with Hotplug, Udev, and modules, we
     119    strongly recommend starting with a completely non-modular kernel
     120    configuration, especially if this is the first time using Udev.</para>
     121
     122    <para>Install the modules, if the kernel configuration uses them:</para>
    106123
    107124<screen><userinput>make modules_install</userinput></screen>
    108125
    109 <para>After kernel compilation is complete, additional steps are
    110 required to complete the installation. Some files need to be copied to
    111 the <filename class="directory">/boot</filename> directory.</para>
    112 
    113 <para>The path to the kernel image may vary depending on the platform
    114 being used. The following command assumes an x86 architecture:</para>
     126    <para>After kernel compilation is complete, additional steps are
     127    required to complete the installation. Some files need to be copied to
     128    the <filename class="directory">/boot</filename> directory.</para>
     129
     130    <para>The path to the kernel image may vary depending on the platform
     131    being used. The following command assumes an x86 architecture:</para>
    115132
    116133<screen><userinput>cp -v arch/i386/boot/bzImage /boot/lfskernel-&linux-version;</userinput></screen>
    117134
    118 <para><filename>System.map</filename> is a symbol file for the kernel.
    119 It maps the function entry points of every function in the kernel API,
    120 as well as the addresses of the kernel data structures for the running
    121 kernel. Issue the following command to install the map file:</para>
     135    <para><filename>System.map</filename> is a symbol file for the kernel.
     136    It maps the function entry points of every function in the kernel API,
     137    as well as the addresses of the kernel data structures for the running
     138    kernel. Issue the following command to install the map file:</para>
    122139
    123140<screen><userinput>cp -v System.map /boot/System.map-&linux-version;</userinput></screen>
    124141
    125 <para>The kernel configuration file <filename>.config</filename>
    126 produced by the <command>make menuconfig</command> step
    127 above contains all the configuration selections for the kernel
    128 that was just compiled. It is a good idea to keep this file for future
    129 reference:</para>
     142    <para>The kernel configuration file <filename>.config</filename>
     143    produced by the <command>make menuconfig</command> step
     144    above contains all the configuration selections for the kernel
     145    that was just compiled. It is a good idea to keep this file for future
     146    reference:</para>
    130147
    131148<screen><userinput>cp -v .config /boot/config-&linux-version;</userinput></screen>
    132149
    133 <para>It is important to note that the files in the kernel source
    134 directory are not owned by <emphasis>root</emphasis>. Whenever a
    135 package is unpacked as user <emphasis>root</emphasis> (like we did
    136 inside chroot), the files have the user and group IDs of whatever
    137 they were on the packager's computer. This is usually not a problem
    138 for any other package to be installed because the source tree is
    139 removed after the installation. However, the Linux source tree is
    140 often retained for a long time.  Because of this, there is a chance
    141 that whatever user ID the packager used will be assigned to somebody
    142 on the machine. That person would then have write access to the kernel
    143 source.</para>
    144 
    145 <para>If the kernel source tree is going to be retained, run
    146 <command>chown -R 0:0</command> on the <filename
    147 class="directory">linux-&linux-version;</filename> directory to ensure
    148 all files are owned by user <emphasis>root</emphasis>.</para>
    149 
    150 <warning><para>Some kernel documentation recommends creating a symlink from
    151 <filename class="symlink">/usr/src/linux</filename> pointing to the kernel
    152 source directory.  This is specific to kernels prior to the 2.6 series and
    153 <emphasis>must not</emphasis> be created on an LFS system as it can cause
    154 problems for packages you may wish to build once your base LFS system is
    155 complete.</para>
    156 
    157 <para>Also, the headers in the system's
    158 <filename class="directory">include</filename> directory should
    159 <emphasis>always</emphasis> be the ones against which Glibc was compiled,
    160 that is, the ones from the Linux-Libc-Headers package, and therefore, should
    161 <emphasis>never</emphasis> be replaced by the kernel headers.</para></warning>
    162 
    163 </sect2>
    164 
    165 
    166 <sect2 id="contents-kernel" role="content"><title>Contents of Linux</title>
    167 
    168 <segmentedlist>
    169 <segtitle>Installed files</segtitle>
    170 <seglistitem><seg>config-&linux-version;, lfskernel-&linux-version;,
    171 and System.map-&linux-version;</seg></seglistitem>
    172 </segmentedlist>
    173 
    174 <variablelist><bridgehead renderas="sect3">Short Descriptions</bridgehead>
    175 <?dbfo list-presentation="list"?>
    176 <?dbhtml list-presentation="table"?>
    177 
    178 <varlistentry id="config">
    179 <term><filename>config-&linux-version;</filename></term>
    180 <listitem>
    181 <para>Contains all the configuration selections for the kernel</para>
    182 <indexterm zone="ch-bootable-kernel config"><primary sortas="e-/boot/config">/boot/config-&linux-version;</primary></indexterm>
    183 </listitem>
    184 </varlistentry>
    185 
    186 <varlistentry id="lfskernel">
    187 <term><filename>lfskernel-&linux-version;</filename></term>
    188 <listitem>
    189 <para>The engine of the Linux system. When turning on the computer,
    190 the kernel is the first part of the operating system that gets loaded.
    191 It detects and initializes all components of the computer's hardware,
    192 then makes these components available as a tree of files to the
    193 software and turns a single CPU into a multitasking machine capable
    194 of running scores of programs seemingly at the same time</para>
    195 <indexterm zone="ch-bootable-kernel lfskernel"><primary sortas="b-lfskernel">lfskernel-&linux-version;</primary></indexterm>
    196 </listitem>
    197 </varlistentry>
    198 
    199 <varlistentry id="System.map">
    200 <term><filename>System.map-&linux-version;</filename></term>
    201 <listitem>
    202 <para>A list of addresses and symbols; it maps the entry points and
    203 addresses of all the functions and data structures in the
    204 kernel</para>
    205 <indexterm zone="ch-bootable-kernel System.map"><primary sortas="e-/boot/System.map">/boot/System.map-&linux-version;</primary></indexterm>
    206 </listitem>
    207 </varlistentry>
    208 </variablelist>
    209 
    210 </sect2>
     150    <para>It is important to note that the files in the kernel source
     151    directory are not owned by <emphasis>root</emphasis>. Whenever a
     152    package is unpacked as user <emphasis>root</emphasis> (like we did
     153    inside chroot), the files have the user and group IDs of whatever
     154    they were on the packager's computer. This is usually not a problem
     155    for any other package to be installed because the source tree is
     156    removed after the installation. However, the Linux source tree is
     157    often retained for a long time.  Because of this, there is a chance
     158    that whatever user ID the packager used will be assigned to somebody
     159    on the machine. That person would then have write access to the kernel
     160    source.</para>
     161
     162    <para>If the kernel source tree is going to be retained, run
     163    <command>chown -R 0:0</command> on the <filename
     164    class="directory">linux-&linux-version;</filename> directory to ensure
     165    all files are owned by user <emphasis>root</emphasis>.</para>
     166
     167    <warning>
     168      <para>Some kernel documentation recommends creating a symlink from
     169      <filename class="symlink">/usr/src/linux</filename> pointing to the kernel
     170      source directory.  This is specific to kernels prior to the 2.6 series and
     171      <emphasis>must not</emphasis> be created on an LFS system as it can cause
     172      problems for packages you may wish to build once your base LFS system is
     173      complete.</para>
     174
     175      <para>Also, the headers in the system's
     176      <filename class="directory">include</filename> directory should
     177      <emphasis>always</emphasis> be the ones against which Glibc was compiled,
     178      that is, the ones from the Linux-Libc-Headers package, and therefore, should
     179      <emphasis>never</emphasis> be replaced by the kernel headers.</para>
     180    </warning>
     181
     182  </sect2>
     183
     184
     185  <sect2 id="contents-kernel" role="content">
     186    <title>Contents of Linux</title>
     187
     188    <segmentedlist>
     189      <segtitle>Installed files</segtitle>
     190
     191      <seglistitem>
     192        <seg>config-&linux-version;, lfskernel-&linux-version;, and
     193        System.map-&linux-version;</seg>
     194      </seglistitem>
     195    </segmentedlist>
     196
     197    <variablelist>
     198      <bridgehead renderas="sect3">Short Descriptions</bridgehead>
     199      <?dbfo list-presentation="list"?>
     200      <?dbhtml list-presentation="table"?>
     201
     202      <varlistentry id="config">
     203        <term><filename>config-&linux-version;</filename></term>
     204        <listitem>
     205          <para>Contains all the configuration selections for the kernel</para>
     206          <indexterm zone="ch-bootable-kernel config">
     207            <primary sortas="e-/boot/config">/boot/config-&linux-version;</primary>
     208          </indexterm>
     209        </listitem>
     210      </varlistentry>
     211
     212      <varlistentry id="lfskernel">
     213        <term><filename>lfskernel-&linux-version;</filename></term>
     214        <listitem>
     215          <para>The engine of the Linux system. When turning on the computer,
     216          the kernel is the first part of the operating system that gets loaded.
     217          It detects and initializes all components of the computer's hardware,
     218          then makes these components available as a tree of files to the
     219          software and turns a single CPU into a multitasking machine capable
     220          of running scores of programs seemingly at the same time</para>
     221          <indexterm zone="ch-bootable-kernel lfskernel">
     222            <primary sortas="b-lfskernel">lfskernel-&linux-version;</primary>
     223          </indexterm>
     224        </listitem>
     225      </varlistentry>
     226
     227      <varlistentry id="System.map">
     228        <term><filename>System.map-&linux-version;</filename></term>
     229        <listitem>
     230          <para>A list of addresses and symbols; it maps the entry points and
     231          addresses of all the functions and data structures in the
     232          kernel</para>
     233          <indexterm zone="ch-bootable-kernel System.map">
     234            <primary sortas="e-/boot/System.map">/boot/System.map-&linux-version;</primary>
     235          </indexterm>
     236        </listitem>
     237      </varlistentry>
     238
     239    </variablelist>
     240
     241  </sect2>
    211242
    212243</sect1>
Note: See TracChangeset for help on using the changeset viewer.