source: chapter08/kernel.xml@ 287ea55

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 12.2 12.2-rc1 6.0 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 v5_1 v5_1_1 xry111/arm64 xry111/arm64-12.0 xry111/clfs-ng xry111/lfs-next xry111/loongarch xry111/loongarch-12.0 xry111/loongarch-12.1 xry111/loongarch-12.2 xry111/mips64el xry111/multilib xry111/pip3 xry111/rust-wip-20221008 xry111/update-glibc
Last change on this file since 287ea55 was b157558, checked in by Alex Gronenwoud <alex@…>, 21 years ago

Moving the final strip from the last chapter to the end of chapter 6.

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

  • Property mode set to 100644
File size: 5.6 KB
Line 
1<sect1 id="ch-bootable-kernel" xreflabel="Linux">
2<title>Installing Linux-&kernel-version;</title>
3<?dbhtml filename="kernel.html" dir="chapter08"?>
4
5<para>The Linux package contains the kernel and the header files.</para>
6
7<screen>Estimated build time: &kernel-time;
8Estimated required disk space: &kernel-compsize;</screen>
9
10&aa-kernel-down;
11&aa-kernel-dep;
12
13<sect2><title>&nbsp;</title><para>&nbsp;</para></sect2>
14
15<sect2>
16<title>Installation of the kernel</title>
17
18<para>Building the kernel involves a few steps: configuration, compilation, and
19installation. If you don't like the way this book configures the kernel, view
20the <filename>README</filename> file in the kernel source tree for alternative
21methods.</para>
22
23<para>Prepare for compilation by running the following command:</para>
24
25<screen><userinput>make mrproper</userinput></screen>
26
27<para>This ensures that the kernel tree is absolutely clean. The kernel team
28recommends that this command be issued prior to <emphasis>each</emphasis>
29kernel compilation. You shouldn't rely on the source tree being clean after
30untarring.</para>
31
32<para>Configure the kernel via a menu-driven interface:</para>
33
34<screen><userinput>make menuconfig</userinput></screen>
35
36<para><userinput>make oldconfig</userinput> may be more appropriate in some
37situations. See the <filename>README</filename> file for more
38information.</para>
39
40<para>If you wish, you may skip kernel configuration by simply copying the
41kernel config file, <filename>.config</filename>, from your host system
42(assuming it is available) to the unpacked <filename
43class="directory">linux-&kernel-version;</filename> directory. However, we
44don't recommend this option. You're much better off exploring all the
45configuration menus and creating your own kernel configuration from
46scratch.</para>
47
48<para>For POSIX shared memory support, ensure that the kernel config option
49"Virtual memory file system support" is enabled. It resides within the
50"File systems" menu and is normally enabled by default.</para>
51
52<para>Verify dependencies and create dependency information files:</para>
53
54<screen><userinput>make CC=/opt/gcc-2.95.3/bin/gcc dep</userinput></screen>
55
56<para>Compile the kernel image:</para>
57
58<screen><userinput>make CC=/opt/gcc-2.95.3/bin/gcc bzImage</userinput></screen>
59
60<para>Compile the drivers which have been configured as modules:</para>
61
62<screen><userinput>make CC=/opt/gcc-2.95.3/bin/gcc modules</userinput></screen>
63
64<para>If you intend to use kernel modules, you will need an
65<filename>/etc/modules.conf</filename> file. Information pertaining
66to modules and to kernel configuration in general may be found in the
67kernel documentation, which is found in the
68<filename>linux-&kernel-version;/Documentation</filename> directory. The
69modules.conf man page and the kernel HOWTO at
70<ulink url="&tldp-root;HOWTO/Kernel-HOWTO.html"/> may also be of
71interest to you.</para>
72
73<para>Install the modules:</para>
74
75<screen><userinput>make CC=/opt/gcc-2.95.3/bin/gcc modules_install</userinput></screen>
76
77<para>If you have a lot of modules and very little space, you may want to
78consider stripping and compressing the modules. For most people such compression
79isn't worth the trouble, but if you're really pressed for space, then have a look at
80<ulink url="http://www.linux-mips.org/archives/linux-mips/2002-04/msg00031.html"/>.</para>
81
82<para>As nothing is complete without documentation, build the manual pages
83that come with the kernel:</para>
84
85<screen><userinput>make mandocs</userinput></screen>
86
87<para>And install these pages:</para>
88
89<screen><userinput>cp -a Documentation/man /usr/share/man/man9</userinput></screen>
90
91<para>Kernel compilation has finished but more steps are required to complete
92the installation. Some files need to be copied to the <filename>/boot</filename>
93directory.</para>
94
95<para>The path to the kernel image may vary depending on the platform you're
96using. Issue the following command to install the kernel:</para>
97
98<screen><userinput>cp arch/i386/boot/bzImage /boot/lfskernel</userinput></screen>
99
100<para><filename>System.map</filename> is a symbol file for the kernel. It maps
101the function entrypoints of every function in the kernel API, as well as the
102addresses of the kernel data structures for the running kernel. Issue the
103following command to install the map file:</para>
104
105<screen><userinput>cp System.map /boot</userinput></screen>
106
107<para><filename>.config</filename> is the kernel configuration file that was
108produced by the <command>make menuconfig</command> step above. It contains all
109the config selections for the kernel that was just compiled. It's a good idea
110to keep this file for future reference:</para>
111
112<screen><userinput>cp .config /boot/config-lfskernel</userinput></screen>
113
114<para>It is important to note that the files in the kernel source directory are
115not owned by <emphasis>root</emphasis>. Whenever you unpack a package as user
116<emphasis>root</emphasis> (like we did here inside chroot), the files end up
117having the user and group IDs of whatever they were on the packager's computer.
118This is usually not a problem for any other package you install because you
119remove the source tree after the installation. But the Linux source tree is
120often kept around for a long time, so there's a chance that whatever user ID
121the packager used will be assigned to somebody on your machine and then that
122person would have write access to the kernel source.</para>
123
124<para>If you are going to keep the kernel source tree around, you may want to
125run <userinput>chown -R 0:0</userinput> on the
126<filename>linux-&kernel-version;</filename> directory to ensure all files are
127owned by user <emphasis>root</emphasis>.</para>
128
129</sect2>
130
131&aa-kernel-shortdesc;
132&aa-kernel-desc;
133
134</sect1>
Note: See TracBrowser for help on using the repository browser.