Changeset b78c747
- Timestamp:
- 12/18/2005 01:44:24 PM (18 years ago)
- 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
- Location:
- chapter08
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
chapter08/chapter08.xml
r7686ca6 rb78c747 1 1 <?xml version="1.0" encoding="ISO-8859-1"?> 2 <!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [ 2 <!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" 3 "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [ 3 4 <!ENTITY % general-entities SYSTEM "../general.ent"> 4 5 %general-entities; 5 6 ]> 7 6 8 <chapter id="chapter-bootable" xreflabel="Chapter 8"> 7 <?dbhtml dir="chapter08"?> 8 <title>Making the LFS System Bootable</title> 9 <?dbhtml filename="chapter08.html"?> 9 <?dbhtml dir="chapter08"?> 10 <?dbhtml filename="chapter08.html"?> 10 11 11 <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="introduction.xml"/> 12 <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="fstab.xml"/> 13 <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="kernel.xml"/> 14 <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="grub.xml"/> 12 <title>Making the LFS System Bootable</title> 13 14 <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="introduction.xml"/> 15 <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="fstab.xml"/> 16 <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="kernel.xml"/> 17 <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="grub.xml"/> 15 18 16 19 </chapter> -
chapter08/fstab.xml
r7686ca6 rb78c747 1 1 <?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" [ 3 4 <!ENTITY % general-entities SYSTEM "../general.ent"> 4 5 %general-entities; 5 6 ]> 7 6 8 <sect1 id="ch-bootable-fstab"> 7 <title>Creating the /etc/fstab File</title> 8 <?dbhtml filename="fstab.html"?> 9 <?dbhtml filename="fstab.html"?> 9 10 10 <indexterm zone="ch-bootable-fstab"><primary sortas="e-/etc/fstab">/etc/fstab</primary></indexterm>11 <title>Creating the /etc/fstab File</title> 11 12 12 <para>The <filename>/etc/fstab</filename> file is used by some programs to 13 determine where file systems are to be mounted by default, in which order, and 14 which must be checked (for integrity errors) prior to mounting. Create a new 15 file systems table like this:</para> 13 <indexterm zone="ch-bootable-fstab"> 14 <primary sortas="e-/etc/fstab">/etc/fstab</primary> 15 </indexterm> 16 17 <para>The <filename>/etc/fstab</filename> file is used by some programs to 18 determine where file systems are to be mounted by default, in which order, and 19 which must be checked (for integrity errors) prior to mounting. Create a new 20 file systems table like this:</para> 16 21 17 22 <screen><userinput>cat > /etc/fstab << "EOF" … … 30 35 EOF</userinput></screen> 31 36 32 <para>Replace <replaceable>[xxx]</replaceable>,33 <replaceable>[yyy]</replaceable>, and <replaceable>[fff]</replaceable>34 with the values appropriate for the system, for example, <filename35 class="partition">hda2</filename>, <filename36 class="partition">hda5</filename>, and <systemitem37 class="filesystem">ext2</systemitem>. For details on the six38 fields in this file, see <command>man 5 fstab</command>.</para>37 <para>Replace <replaceable>[xxx]</replaceable>, 38 <replaceable>[yyy]</replaceable>, and <replaceable>[fff]</replaceable> 39 with the values appropriate for the system, for example, <filename 40 class="partition">hda2</filename>, <filename 41 class="partition">hda5</filename>, and <systemitem 42 class="filesystem">ext2</systemitem>. For details on the six 43 fields in this file, see <command>man 5 fstab</command>.</para> 39 44 40 <para>The <filename class="directory">/dev/shm</filename> mount point41 for <systemitem class="filesystem">tmpfs</systemitem> is included to42 allow enabling POSIX-shared memory. The kernel must have the required43 support built into it for this to work (more about this is in the next44 section). Please note that very little software currently uses45 POSIX-shared memory. Therefore, consider the <filename46 class="directory">/dev/shm</filename> mount point optional. For more47 information, see48 <filename>Documentation/filesystems/tmpfs.txt</filename> in the kernel49 source tree.</para>45 <para>The <filename class="directory">/dev/shm</filename> mount point 46 for <systemitem class="filesystem">tmpfs</systemitem> is included to 47 allow enabling POSIX-shared memory. The kernel must have the required 48 support built into it for this to work (more about this is in the next 49 section). Please note that very little software currently uses 50 POSIX-shared memory. Therefore, consider the <filename 51 class="directory">/dev/shm</filename> mount point optional. For more 52 information, see 53 <filename>Documentation/filesystems/tmpfs.txt</filename> in the kernel 54 source tree.</para> 50 55 51 <para>There are other lines which may be added to the52 <filename>/etc/fstab</filename> file. One example is a line for USB53 devices:</para>56 <para>There are other lines which may be added to the 57 <filename>/etc/fstab</filename> file. One example is a line for USB 58 devices:</para> 54 59 55 60 <screen>usbfs /proc/bus/usb usbfs devgid=14,devmode=0660 0 0 </screen> 56 61 57 <para>This option will only work if <quote>Support for Host-side USB</quote> and 58 <quote>USB device filesystem</quote> are configured in the kernel. If59 <quote>Support for Host-side USB</quote> is compiled as a module, then60 <filename>usbcore</filename> must be listed in61 <filename>/etc/sysconfig/modules</filename>.</para>62 <para>This option will only work if <quote>Support for Host-side USB</quote> 63 and <quote>USB device filesystem</quote> are configured in the kernel. If 64 <quote>Support for Host-side USB</quote> is compiled as a module, then 65 <filename>usbcore</filename> must be listed in 66 <filename>/etc/sysconfig/modules</filename>.</para> 62 67 63 68 </sect1> 64 -
chapter08/grub.xml
r7686ca6 rb78c747 1 1 <?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" [ 3 4 <!ENTITY % general-entities SYSTEM "../general.ent"> 4 5 %general-entities; 5 6 ]> 7 6 8 <sect1 id="ch-bootable-grub"> 7 <title>Making the LFS System Bootable</title> 8 <?dbhtml filename="grub.html"?> 9 <?dbhtml filename="grub.html"?> 9 10 10 <indexterm zone="ch-bootable-grub"> 11 <primary sortas="a-Grub">GRUB</primary> 12 <secondary>configuring</secondary></indexterm> 11 <title>Making the LFS System Bootable</title> 13 12 14 <para>Your shiny new LFS system is almost complete. One of the last 15 things to do is to ensure that the system can be properly booted. The 16 instructions below apply only to computers of IA-32 architecture, 17 meaning mainstream PCs. Information on <quote>boot loading</quote> for 18 other architectures should be available in the usual resource-specific 19 locations for those architectures.</para> 13 <indexterm zone="ch-bootable-grub"> 14 <primary sortas="a-Grub">GRUB</primary> 15 <secondary>configuring</secondary> 16 </indexterm> 20 17 21 <para>Boot loading can be a complex area, so a few cautionary 22 words are in order. Be familiar with the current boot loader and any other 23 operating systems present on the hard drive(s) that need to be 24 bootable. Make sure that an emergency boot disk is ready to 25 <quote>rescue</quote> the computer if the computer becomes 26 unusable (un-bootable).</para>18 <para>Your shiny new LFS system is almost complete. One of the last 19 things to do is to ensure that the system can be properly booted. The 20 instructions below apply only to computers of IA-32 architecture, 21 meaning mainstream PCs. Information on <quote>boot loading</quote> for 22 other architectures should be available in the usual resource-specific 23 locations for those architectures.</para> 27 24 28 <para>Earlier, we compiled and installed the GRUB boot loader software 29 in preparation for this step. The procedure involves writing some 30 special GRUB files to specific locations on the hard drive. We highly 31 recommend creating a GRUB boot floppy diskette as a backup. Insert a 32 blank floppy diskette and run the following commands:</para> 25 <para>Boot loading can be a complex area, so a few cautionary 26 words are in order. Be familiar with the current boot loader and any other 27 operating systems present on the hard drive(s) that need to be 28 bootable. Make sure that an emergency boot disk is ready to 29 <quote>rescue</quote> the computer if the computer becomes 30 unusable (un-bootable).</para> 31 32 <para>Earlier, we compiled and installed the GRUB boot loader software 33 in preparation for this step. The procedure involves writing some 34 special GRUB files to specific locations on the hard drive. We highly 35 recommend creating a GRUB boot floppy diskette as a backup. Insert a 36 blank floppy diskette and run the following commands:</para> 33 37 34 38 <screen><userinput>dd if=/boot/grub/stage1 of=/dev/fd0 bs=512 count=1 35 39 dd if=/boot/grub/stage2 of=/dev/fd0 bs=512 seek=1</userinput></screen> 36 40 37 <para>Remove the diskette and store it somewhere safe. Now, run the38 <command>grub</command> shell:</para>41 <para>Remove the diskette and store it somewhere safe. Now, run the 42 <command>grub</command> shell:</para> 39 43 40 44 <screen><userinput>grub</userinput></screen> 41 45 42 <para>GRUB uses its own naming structure for drives and partitions in43 the form of <emphasis>(hdn,m)</emphasis>, where <emphasis>n</emphasis>44 is the hard drive number and <emphasis>m</emphasis> is the partition45 number, both starting from zero. For example, partition <filename46 class="partition">hda1</filename> is <emphasis>(hd0,0)</emphasis> to47 GRUB and <filename class="partition">hdb3</filename> is48 <emphasis>(hd1,2)</emphasis>. In contrast to Linux, GRUB does not49 consider CD-ROM drives to be hard drives. For example, if using a CD50 on <filename class="partition">hdb</filename> and a second hard drive51 on <filename class="partition">hdc</filename>, that second hard drive52 would still be <emphasis>(hd1)</emphasis>.</para>46 <para>GRUB uses its own naming structure for drives and partitions in 47 the form of <emphasis>(hdn,m)</emphasis>, where <emphasis>n</emphasis> 48 is the hard drive number and <emphasis>m</emphasis> is the partition 49 number, both starting from zero. For example, partition <filename 50 class="partition">hda1</filename> is <emphasis>(hd0,0)</emphasis> to 51 GRUB and <filename class="partition">hdb3</filename> is 52 <emphasis>(hd1,2)</emphasis>. In contrast to Linux, GRUB does not 53 consider CD-ROM drives to be hard drives. For example, if using a CD 54 on <filename class="partition">hdb</filename> and a second hard drive 55 on <filename class="partition">hdc</filename>, that second hard drive 56 would still be <emphasis>(hd1)</emphasis>.</para> 53 57 54 <para>Using the above information, determine the appropriate55 designator for the root partition (or boot partition, if a separate56 one is used). For the following example, it is assumed that the root57 (or separate boot) partition is <filename58 class="partition">hda4</filename>.</para>58 <para>Using the above information, determine the appropriate 59 designator for the root partition (or boot partition, if a separate 60 one is used). For the following example, it is assumed that the root 61 (or separate boot) partition is <filename 62 class="partition">hda4</filename>.</para> 59 63 60 <para>Tell GRUB where to search for its61 <filename>stage{1,2}</filename> files. The Tab key can be used62 everywhere to make GRUB show the alternatives:</para>64 <para>Tell GRUB where to search for its 65 <filename>stage{1,2}</filename> files. The Tab key can be used 66 everywhere to make GRUB show the alternatives:</para> 63 67 64 68 <screen><userinput>root (hd0,3)</userinput></screen> 65 69 66 <warning><para>The following command will overwrite the current boot 67 loader. Do not run the command if this is not desired, for example, if 68 using a third party boot manager to manage the Master Boot Record 69 (MBR). In this scenario, it would make more sense to install 70 GRUB into the <quote>boot sector</quote> of the LFS partition. In this 71 case, this next command would become <userinput>setup 72 (hd0,3)</userinput>.</para></warning> 70 <warning> 71 <para>The following command will overwrite the current boot loader. Do not 72 run the command if this is not desired, for example, if using a third party 73 boot manager to manage the Master Boot Record (MBR). In this scenario, it 74 would make more sense to install GRUB into the <quote>boot sector</quote> 75 of the LFS partition. In this case, this next command would become 76 <userinput>setup (hd0,3)</userinput>.</para> 77 </warning> 73 78 74 <para>Tell GRUB to install itself into the MBR of75 <filename class="partition">hda</filename>:</para>79 <para>Tell GRUB to install itself into the MBR of 80 <filename class="partition">hda</filename>:</para> 76 81 77 82 <screen><userinput>setup (hd0)</userinput></screen> 78 83 79 <para>If all went well, GRUB will have reported finding its files in80 <filename class="directory">/boot/grub</filename>. That's all there is81 to it. Quit the <command>grub</command> shell:</para>84 <para>If all went well, GRUB will have reported finding its files in 85 <filename class="directory">/boot/grub</filename>. That's all there is 86 to it. Quit the <command>grub</command> shell:</para> 82 87 83 88 <screen><userinput>quit</userinput></screen> 84 89 85 <para>Create a <quote>menu list</quote> file defining GRUB's boot menu:</para>90 <para>Create a <quote>menu list</quote> file defining GRUB's boot menu:</para> 86 91 87 92 <screen><userinput>cat > /boot/grub/menu.lst << "EOF" … … 103 108 EOF</userinput></screen> 104 109 105 <para>Add an entry for the host distribution if desired. It might look106 like this:</para>110 <para>Add an entry for the host distribution if desired. It might look 111 like this:</para> 107 112 108 113 <screen><userinput>cat >> /boot/grub/menu.lst << "EOF" … … 113 118 EOF</userinput></screen> 114 119 115 <para>If dual-booting Windows, the following entry will allow116 booting it:</para>120 <para>If dual-booting Windows, the following entry will allow 121 booting it:</para> 117 122 118 123 <screen><userinput>cat >> /boot/grub/menu.lst << "EOF" … … 122 127 EOF</userinput></screen> 123 128 124 <para>If <command>info grub</command> does not provide all necessary material, additional 125 information regarding GRUB is located on its website at:126 <ulink url="http://www.gnu.org/software/grub/"/>.</para>129 <para>If <command>info grub</command> does not provide all necessary material, 130 additional information regarding GRUB is located on its website at: 131 <ulink url="http://www.gnu.org/software/grub/"/>.</para> 127 132 128 <para>The FHS stipulates that GRUB's <filename>menu.lst</filename> file should be symlinked to 129 <filename class="symlink">/etc/grub/menu.lst</filename>. To satisfy this requirement, issue the 130 following command:</para>133 <para>The FHS stipulates that GRUB's <filename>menu.lst</filename> file should 134 be symlinked to <filename class="symlink">/etc/grub/menu.lst</filename>. To 135 satisfy this requirement, issue the following command:</para> 131 136 132 137 <screen><userinput>mkdir -v /etc/grub && … … 134 139 135 140 </sect1> 136 -
chapter08/introduction.xml
r7686ca6 rb78c747 1 1 <?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" [ 3 4 <!ENTITY % general-entities SYSTEM "../general.ent"> 4 5 %general-entities; 5 6 ]> 7 6 8 <sect1 id="ch-bootable-introduction"> 7 <title>Introduction</title> 8 <?dbhtml filename="introduction.html"?> 9 <?dbhtml filename="introduction.html"?> 9 10 10 <para>It is time to make the LFS system bootable. This chapter 11 discusses creating an <filename>fstab</filename> file, building a 12 kernel for the new LFS system, and installing the GRUB boot loader so 13 that the LFS system can be selected for booting at startup.</para> 11 <title>Introduction</title> 12 13 <para>It is time to make the LFS system bootable. This chapter 14 discusses creating an <filename>fstab</filename> file, building a 15 kernel for the new LFS system, and installing the GRUB boot loader so 16 that the LFS system can be selected for booting at startup.</para> 14 17 15 18 </sect1> 16 -
chapter08/kernel.xml
r7686ca6 rb78c747 1 1 <?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" [ 3 4 <!ENTITY % general-entities SYSTEM "../general.ent"> 4 5 %general-entities; 5 6 ]> 7 6 8 <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—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—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> 37 52 38 53 <screen><userinput>make mrproper</userinput></screen> 39 54 40 <para>This ensures that the kernel tree is absolutely clean. The41 kernel team recommends that this command be issued prior to each42 kernel compilation. Do not rely on the source tree being clean after43 un-tarring.</para>44 45 <para>If, in <xref linkend="ch-scripts-console" role=","/> it was decided to46 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> 47 62 48 63 <screen role="nodump"><userinput>loadkeys -m /usr/share/kbd/keymaps/<replaceable>[path to keymap]</replaceable> > \ 49 64 drivers/char/defkeymap.c</userinput></screen> 50 65 51 <para>For example, if using a Dutch keyboard, use52 <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 some55 information regarding particular kernel configuration requirements of56 packages outside of LFS at <ulink57 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> 58 73 59 74 <screen role="nodump"><userinput>make menuconfig</userinput></screen> 60 75 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> 81 98 82 99 <screen><userinput>make</userinput></screen> 83 100 84 <para>If using kernel modules, an <filename>/etc/modprobe.conf</filename> file85 may be needed. Information pertaining to modules and kernel configuration is86 located in the kernel documentation in the <filename87 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 kernel91 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 a94 user-written script inserts the corresponding module into the kernel, and not95 all modules are detectable by Hotplug. Note that statements like the one below96 in the <filename>/etc/modprobe.conf</filename> file do not work with97 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, we102 strongly recommend starting with a completely non-modular kernel103 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> 106 123 107 124 <screen><userinput>make modules_install</userinput></screen> 108 125 109 <para>After kernel compilation is complete, additional steps are110 required to complete the installation. Some files need to be copied to111 the <filename class="directory">/boot</filename> directory.</para>112 113 <para>The path to the kernel image may vary depending on the platform114 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> 115 132 116 133 <screen><userinput>cp -v arch/i386/boot/bzImage /boot/lfskernel-&linux-version;</userinput></screen> 117 134 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 running121 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> 122 139 123 140 <screen><userinput>cp -v System.map /boot/System.map-&linux-version;</userinput></screen> 124 141 125 <para>The kernel configuration file <filename>.config</filename>126 produced by the <command>make menuconfig</command> step127 above contains all the configuration selections for the kernel128 that was just compiled. It is a good idea to keep this file for future129 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> 130 147 131 148 <screen><userinput>cp -v .config /boot/config-&linux-version;</userinput></screen> 132 149 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> 211 242 212 243 </sect1>
Note:
See TracChangeset
for help on using the changeset viewer.