Simplifying the second copying of the kernel headers.

git-svn-id: http://svn.linuxfromscratch.org/LFS/trunk/BOOK@3229 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689
This commit is contained in:
Alex Gronenwoud 2004-02-05 22:17:48 +00:00
parent 2309b72d44
commit 2081905c43
6 changed files with 147 additions and 174 deletions

View File

@ -296,7 +296,7 @@ file records the bad login attempts.</para>
&c6-makedev;
&c6-kernel;
&c6-kernel-headers;
&c6-manpages;
&c6-glibc;

View File

@ -1,7 +1,37 @@
<sect1 id="ch-system-kernel-headers">
<title>Installing Linux-&kernel-version; headers</title>
<?dbhtml filename="kernelheaders.html" dir="chapter06"?>
<screen>&buildtime; &kernel-time-headers;
&diskspace; &kernel-compsize-headers;</screen>
<sect2><title>&nbsp;</title><para>&nbsp;</para></sect2>
<sect2>
<title>Why we copy the kernel headers and don't symlink them</title>
<title>Installation of the kernel headers</title>
<para>We won't be compiling a new kernel yet -- we'll do that when we have
finished the installation of all the packages. But the libraries installed in
the next section need to refer to the kernel header files in order to know how
to interface with the kernel. Instead of unpacking the kernel sources again,
making the version file and the symlinks and so on, we will simply copy the
headers from the temporary tools directory in one swoop:</para>
<screen><userinput>cp -a /tools/include/{asm,asm-generic,linux} /usr/include</userinput></screen>
<para>A few kernel header files refer to the <filename>autoconf.h</filename>
header file. Since we have not yet configured the kernel, we need to create
this file ourselves in order to avoid a compilation failure of Sysklogd.
Create an empty <filename>autoconf.h</filename> file with:</para>
<screen><userinput>touch /usr/include/linux/autoconf.h</userinput></screen>
</sect2>
<sect2><title>&nbsp;</title><para>&nbsp;</para></sect2>
<sect2>
<title>Why we copy the kernel headers</title>
<para>In the past it was common practice to symlink the
<filename class="directory">/usr/include/{linux,asm}</filename> directories
@ -40,3 +70,5 @@ symlinks.</para>
</sect2>
</sect1>

View File

@ -1,70 +0,0 @@
<sect1 id="ch-system-kernel-headers">
<title>Installing Linux-&kernel-version; headers</title>
<?dbhtml filename="kernel.html" dir="chapter06"?>
<screen>&buildtime; &kernel-time-headers;
&diskspace; &kernel-compsize-headers;</screen>
<sect2><title>&nbsp;</title><para>&nbsp;</para></sect2>
<sect2>
<title>Installation of the kernel headers</title>
<para>We won't be compiling a new kernel yet -- we'll do that when we have
finished the installation of all the packages. But as some packages need the
kernel header files, we're going to unpack the kernel archive now, set it up
and copy the header files so they can be found by these packages.</para>
<para>It is important to note that the files in the kernel source directory
are not owned by <emphasis>root</emphasis>. Whenever you unpack a package as
user <emphasis>root</emphasis> (like we do here inside chroot), the files end
up having the user and group IDs of whatever they were on the packager's
computer. This is usually not a
problem for any other package you install because you remove the source
tree after the installation. But the Linux kernel source tree is often kept
around for a long time, so there's a chance that whatever user ID the packager
used will be assigned to somebody on your machine and then that person would
have write access to the kernel source.</para>
<para>In light of this, you might want to run <userinput>chown -R 0:0</userinput>
on the <filename>linux-&kernel-version;</filename> directory
to ensure all files are owned by user <emphasis>root</emphasis>.</para>
<para>Prepare for header installation:</para>
<screen><userinput>make mrproper</userinput></screen>
<para>This ensures that the kernel tree is absolutely clean. The kernel team
recommends that this command be issued prior to <emphasis>each</emphasis> kernel
compilation. You shouldn't rely on the source tree being clean after
untarring.</para>
<para>Create the <filename>include/linux/version.h</filename> file:</para>
<screen><userinput>make include/linux/version.h</userinput></screen>
<para>Create the platform-specific <filename>include/asm</filename>
symlink:</para>
<screen><userinput>make symlinks</userinput></screen>
<para>Install the platform specific-header files:</para>
<screen><userinput>cp -HR include/asm /usr/include
cp -R include/asm-generic /usr/include</userinput></screen>
<para>Install the cross-platform kernel header files:</para>
<screen><userinput>cp -R include/linux /usr/include</userinput></screen>
<para>There are a few kernel header files which make use of the
<filename>autoconf.h</filename> header file. Since we do not yet configure the
kernel, we need to create this file ourselves in order to avoid compilation
failures. Create an empty <filename>autoconf.h</filename> file:</para>
<screen><userinput>touch /usr/include/linux/autoconf.h</userinput></screen>
</sect2>
&c6-kernel-exp-headers;
</sect1>

View File

@ -1,97 +0,0 @@
<sect2><title>&nbsp;</title><para>&nbsp;</para></sect2>
<sect2>
<title>Installation of the kernel</title>
<para>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 <filename>README</filename>
file in the kernel source tree for alternative methods.</para>
<para>Prepare for compilation by running the following command:</para>
<screen><userinput>make mrproper</userinput></screen>
<para>This ensures that the kernel tree is absolutely clean. The kernel
team recommends that this command be issued prior to
<emphasis>each</emphasis> kernel compilation. You shouldn't rely
on the source tree being clean after untarring.</para>
<para>Configure the kernel via a menu-driven interface:</para>
<screen><userinput>make menuconfig</userinput></screen>
<para><userinput>make oldconfig</userinput> may be more appropriate
in some situations. See the <filename>README</filename> file for
more information.</para>
<para>If you wish, you may skip kernel configuration by simply copying the
kernel config file, <filename>.config</filename>, from your host system
(assuming it is available) to the unpacked
<filename class="directory">linux-&kernel-version;</filename> 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.</para>
<para>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.</para>
<para>Verify dependencies and create dependency information files:</para>
<screen><userinput>make CC=/opt/gcc-2.95.3/bin/gcc dep</userinput></screen>
<para>Compile the kernel image:</para>
<screen><userinput>make CC=/opt/gcc-2.95.3/bin/gcc bzImage</userinput></screen>
<para>Compile the drivers which have been configured as modules:</para>
<screen><userinput>make CC=/opt/gcc-2.95.3/bin/gcc modules</userinput></screen>
<para>If you intend to use kernel modules, you will need an
<filename>/etc/modules.conf</filename> file. Information pertaining
to modules and to kernel configuration in general may be found in the
kernel documentation, which is found in the
<filename>linux-&kernel-version;/Documentation</filename> directory. The
modules.conf man page and the kernel HOWTO at
<ulink url="&tldp-root;HOWTO/Kernel-HOWTO.html"/> may also be of
interest to you.</para>
<para>Install the modules:</para>
<screen><userinput>make CC=/opt/gcc-2.95.3/bin/gcc modules_install</userinput></screen>
<para>As nothing is complete without documentation, build the manual pages
that come with the kernel:</para>
<screen><userinput>make mandocs</userinput></screen>
<para>And install these pages:</para>
<screen><userinput>cp -a Documentation/man /usr/share/man/man9</userinput></screen>
<para>Kernel compilation has finished but more steps are required to complete
the installation. Some files need to be copied to the <filename>/boot</filename>
directory.</para>
<para>The path to the kernel image may vary depending on the platform
you're using. Issue the following command to install the kernel:</para>
<screen><userinput>cp arch/i386/boot/bzImage /boot/lfskernel</userinput></screen>
<para><filename>System.map</filename> 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:</para>
<screen><userinput>cp System.map /boot</userinput></screen>
<para><filename>.config</filename> is the kernel configuration file that was
produced by the <command>make menuconfig</command> 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:</para>
<screen><userinput>cp .config /boot/config-lfskernel</userinput></screen>
</sect2>

View File

@ -10,7 +10,118 @@ Estimated required disk space: &kernel-compsize;</screen>
&aa-kernel-down;
&aa-kernel-dep;
&c8-kernel-inst;
<sect2><title>&nbsp;</title><para>&nbsp;</para></sect2>
<sect2>
<title>Installation of the kernel</title>
<para>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 <filename>README</filename> file in the kernel source tree for alternative
methods.</para>
<para>Prepare for compilation by running the following command:</para>
<screen><userinput>make mrproper</userinput></screen>
<para>This ensures that the kernel tree is absolutely clean. The kernel team
recommends that this command be issued prior to <emphasis>each</emphasis>
kernel compilation. You shouldn't rely on the source tree being clean after
untarring.</para>
<para>Configure the kernel via a menu-driven interface:</para>
<screen><userinput>make menuconfig</userinput></screen>
<para><userinput>make oldconfig</userinput> may be more appropriate in some
situations. See the <filename>README</filename> file for more
information.</para>
<para>If you wish, you may skip kernel configuration by simply copying the
kernel config file, <filename>.config</filename>, from your host system
(assuming it is available) to the unpacked <filename
class="directory">linux-&kernel-version;</filename> 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.</para>
<para>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.</para>
<para>Verify dependencies and create dependency information files:</para>
<screen><userinput>make CC=/opt/gcc-2.95.3/bin/gcc dep</userinput></screen>
<para>Compile the kernel image:</para>
<screen><userinput>make CC=/opt/gcc-2.95.3/bin/gcc bzImage</userinput></screen>
<para>Compile the drivers which have been configured as modules:</para>
<screen><userinput>make CC=/opt/gcc-2.95.3/bin/gcc modules</userinput></screen>
<para>If you intend to use kernel modules, you will need an
<filename>/etc/modules.conf</filename> file. Information pertaining
to modules and to kernel configuration in general may be found in the
kernel documentation, which is found in the
<filename>linux-&kernel-version;/Documentation</filename> directory. The
modules.conf man page and the kernel HOWTO at
<ulink url="&tldp-root;HOWTO/Kernel-HOWTO.html"/> may also be of
interest to you.</para>
<para>Install the modules:</para>
<screen><userinput>make CC=/opt/gcc-2.95.3/bin/gcc modules_install</userinput></screen>
<para>As nothing is complete without documentation, build the manual pages
that come with the kernel:</para>
<screen><userinput>make mandocs</userinput></screen>
<para>And install these pages:</para>
<screen><userinput>cp -a Documentation/man /usr/share/man/man9</userinput></screen>
<para>Kernel compilation has finished but more steps are required to complete
the installation. Some files need to be copied to the <filename>/boot</filename>
directory.</para>
<para>The path to the kernel image may vary depending on the platform you're
using. Issue the following command to install the kernel:</para>
<screen><userinput>cp arch/i386/boot/bzImage /boot/lfskernel</userinput></screen>
<para><filename>System.map</filename> 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:</para>
<screen><userinput>cp System.map /boot</userinput></screen>
<para><filename>.config</filename> is the kernel configuration file that was
produced by the <command>make menuconfig</command> 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:</para>
<screen><userinput>cp .config /boot/config-lfskernel</userinput></screen>
<para>It is important to note that the files in the kernel source directory are
not owned by <emphasis>root</emphasis>. Whenever you unpack a package as user
<emphasis>root</emphasis> (like we did here inside chroot), the files end up
having the user and group IDs of whatever they were on the packager's computer.
This is usually not a problem for any other package you install because you
remove the source tree after the installation. But the Linux source tree is
often kept around for a long time, so there's a chance that whatever user ID
the packager used will be assigned to somebody on your machine and then that
person would have write access to the kernel source.</para>
<para>If you are going to keep the kernel source tree around, you may want to
run <userinput>chown -R 0:0</userinput> on the
<filename>linux-&kernel-version;</filename> directory to ensure all files are
owned by user <emphasis>root</emphasis>.</para>
</sect2>
&aa-kernel-shortdesc;
&aa-kernel-desc;

View File

@ -1,12 +1,9 @@
<!ENTITY c5-kernelheaders SYSTEM "../chapter05/kernelheaders.xml">
<!ENTITY c5-kernelheaders-inst SYSTEM "../chapter05/kernelheaders-inst.xml">
<!ENTITY c6-kernel SYSTEM "../chapter06/kernel.xml">
<!ENTITY c6-kernel-inst SYSTEM "../chapter06/kernel-inst.xml">
<!ENTITY c6-kernel-exp-headers SYSTEM "../chapter06/kernel-exp-headers.xml">
<!ENTITY c6-kernel-headers SYSTEM "../chapter06/kernel-headers.xml">
<!ENTITY c8-kernel SYSTEM "../chapter08/kernel.xml">
<!ENTITY c8-kernel-inst SYSTEM "../chapter08/kernel-inst.xml">
<!ENTITY aa-kernel-shortdesc SYSTEM "../appendixa/kernel-shortdesc.xml">
<!ENTITY aa-kernel-desc SYSTEM "../appendixa/kernel-desc.xml">