| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 | <sect1 id="ch-bootable-kernel" xreflabel="Linux"><title>Installing Linux-&kernel-version;</title><?dbhtml filename="kernel.html" dir="chapter08"?><para>The Linux package contains the kernel and the header files.</para><screen>Estimated build time:           &kernel-time;Estimated required disk space:  &kernel-compsize;</screen>&aa-kernel-down;&aa-kernel-dep;<sect2><title> </title><para> </para></sect2><sect2><title>Installation of the kernel</title><para>Building the kernel involves a few steps: configuration, compilation, andinstallation. If you don't like the way this book configures the kernel, viewthe <filename>README</filename> file in the kernel source tree for alternativemethods.</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 teamrecommends that this command be issued prior to <emphasis>each</emphasis>kernel compilation. You shouldn't rely on the source tree being clean afteruntarring.</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 somesituations. See the <filename>README</filename> file for moreinformation.</para><para>If you wish, you may skip kernel configuration by simply copying thekernel config file, <filename>.config</filename>, from your host system(assuming it is available) to the unpacked <filenameclass="directory">linux-&kernel-version;</filename> directory. However, wedon't recommend this option. You're much better off exploring all theconfiguration menus and creating your own kernel configuration fromscratch.</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 pertainingto modules and to kernel configuration in general may be found in thekernel documentation, which is found in the<filename>linux-&kernel-version;/Documentation</filename> directory. Themodules.conf man page and the kernel HOWTO at<ulink url="&tldp-root;HOWTO/Kernel-HOWTO.html"/> may also be ofinterest to you.</para><para>Install the modules:</para><screen><userinput>make CC=/opt/gcc-2.95.3/bin/gcc modules_install</userinput></screen><para>If you have a lot of modules and very little space, you may want toconsider stripping and compressing the modules. For most people such compressionisn't worth the trouble, but if you're really pressed for space, then have a look at<ulink url="http://www.linux-mips.org/archives/linux-mips/2002-04/msg00031.html"/>.</para><para>As nothing is complete without documentation, build the manual pagesthat 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 completethe 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'reusing. 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 mapsthe function entrypoints of every function in the kernel API, as well as theaddresses of the kernel data structures for the running kernel. Issue thefollowing 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 wasproduced by the <command>make menuconfig</command> step above. It contains allthe config selections for the kernel that was just compiled. It's a good ideato 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 arenot owned by <emphasis>root</emphasis>. Whenever you unpack a package as user<emphasis>root</emphasis> (like we did here inside chroot), the files end uphaving 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 youremove the source tree after the installation. But the Linux source tree isoften kept around for a long time, so there's a chance that whatever user IDthe packager used will be assigned to somebody on your machine and then thatperson would have write access to the kernel source.</para><para>If you are going to keep the kernel source tree around, you may want torun <userinput>chown -R 0:0</userinput> on the<filename>linux-&kernel-version;</filename> directory to ensure all files areowned by user <emphasis>root</emphasis>.</para></sect2>&aa-kernel-shortdesc;&aa-kernel-desc;</sect1>
 |