Changeset 90e3cb3
- Timestamp:
- 02/01/2004 09:49:10 PM (20 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.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/mips64el, xry111/pip3, xry111/rust-wip-20221008, xry111/update-glibc
- Children:
- 247acde
- Parents:
- c288d97
- Files:
-
- 47 edited
Legend:
- Unmodified
- Added
- Removed
-
appendixa/autoconf-desc.xml
rc288d97 r90e3cb3 31 31 identifiers that the package uses in C preprocessor conditionals. If a package 32 32 has already been set up to have some portability, this program can help to 33 determine what < userinput>configure</userinput> needs to check. It can fill33 determine what <command>configure</command> needs to check. It can fill 34 34 in some gaps in a <filename>configure.in</filename> file generated by 35 35 autoscan.</para> -
appendixa/bzip2-desc.xml
rc288d97 r90e3cb3 14 14 block sorting text compression algorithm with Huffman coding. The compression 15 15 rate is generally considerably better than that achieved by more conventional 16 compressors using LZ77/LZ78, like < userinput>gzip</userinput>.</para>16 compressors using LZ77/LZ78, like <command>gzip</command>.</para> 17 17 18 18 <para><command>bzip2recover</command> tries to recover data from damaged -
appendixa/lfs-utils-desc.xml
rc288d97 r90e3cb3 5 5 6 6 <para><command>tempfile</command> creates temporary files in a less secure 7 manner than < userinput>mktemp</userinput>. It is installed for7 manner than <command>mktemp</command>. It is installed for 8 8 backwards-compatibility.</para> 9 9 10 10 <para>The <command>http-get</command> script takes advantage of a little known 11 feature of < userinput>bash</userinput> called "net redirection". It is used to11 feature of <command>bash</command> called "net redirection". It is used to 12 12 download from websites without using any other programs.</para> 13 13 14 <para><command>iana-net</command> uses the < userinput>http-get</userinput>14 <para><command>iana-net</command> uses the <command>http-get</command> 15 15 script to simplify the process of procuring IANA's services and protocols 16 16 configuration files.</para> -
appendixa/perl-desc.xml
rc288d97 r90e3cb3 35 35 36 36 <para><command>piconv</command> is a Perl version of the character encoding 37 converter < userinput>iconv</userinput>.</para>37 converter <command>iconv</command>.</para> 38 38 39 39 <para><command>pl2pm</command> is a rough tool for converting Perl4 .pl -
chapter03/chapter03.xml
rc288d97 r90e3cb3 40 40 a swap partition.</para> 41 41 42 <para>Start a disk partitioning program such as < userinput>cfdisk</userinput>43 or < userinput>fdisk</userinput> with an argument naming the hard disk upon42 <para>Start a disk partitioning program such as <command>cfdisk</command> 43 or <command>fdisk</command> with an argument naming the hard disk upon 44 44 which the new partition must be created -- for example 45 45 <filename>/dev/hda</filename> for the primary IDE disk. Create a Linux native 46 46 partition and a swap partition, if needed. Please refer to the man pages of 47 < userinput>cfdisk</userinput> or <userinput>fdisk</userinput> if you don't yet47 <command>cfdisk</command> or <command>fdisk</command> if you don't yet 48 48 know how to use the programs.</para> 49 49 … … 123 123 <para>You should also ensure that this new partition is not mounted with 124 124 permissions that are too restrictive (such as the nosuid, nodev or noatime 125 options). You can run the < userinput>mount</userinput> command without any125 options). You can run the <command>mount</command> command without any 126 126 parameters to see with what options the LFS partition is mounted. If 127 127 you see nosuid, nodev or noatime, you will need to remount it.</para> -
chapter04/chapter04.xml
rc288d97 r90e3cb3 50 50 <para>For your convenience the top of the list contains a link to a file 51 51 you can use with the <ulink url="http://wget.sunsite.dk">wget</ulink> 52 program. Using this file and the < userinput>wget</userinput> program will52 program. Using this file and the <command>wget</command> program will 53 53 make it easy to download all the files at once, rather than downloading each 54 54 and every individual file manually.</para> -
chapter05/bash.xml
rc288d97 r90e3cb3 37 37 <screen><userinput>make install</userinput></screen> 38 38 39 <para>And make a link for the programs that use < userinput>sh</userinput>39 <para>And make a link for the programs that use <command>sh</command> 40 40 for a shell:</para> 41 41 -
chapter05/binutils-pass1.xml
rc288d97 r90e3cb3 67 67 <listitem><para><userinput>LDFLAGS="-all-static"</userinput>: This tells the 68 68 linker that all the Binutils programs should be linked statically. However, 69 strictly speaking, < userinput>"-all-static"</userinput> is first passed to the70 < emphasis>libtool</emphasis> program which then passes71 < userinput>"-static"</userinput> on to the linker.</para></listitem>69 strictly speaking, <emphasis>"-all-static"</emphasis> is first passed to the 70 <command>libtool</command> program which then passes 71 <emphasis>"-static"</emphasis> on to the linker.</para></listitem> 72 72 </itemizedlist> 73 73 -
chapter05/bzip2.xml
rc288d97 r90e3cb3 14 14 <title>Installation of Bzip2</title> 15 15 16 <para>The Bzip2 package doesn't contain a < userinput>configure</userinput>16 <para>The Bzip2 package doesn't contain a <command>configure</command> 17 17 script. Compile and install it with a straightforward:</para> 18 18 -
chapter05/chapter05.xml
rc288d97 r90e3cb3 24 24 25 25 <para>The build instructions assume that you are using the 26 < userinput>bash</userinput> shell. It is also expected that you have already26 <command>bash</command> shell. It is also expected that you have already 27 27 unpacked a source package (while logged in as user <emphasis>lfs</emphasis> -- 28 28 explained shortly) and performed a <userinput>cd</userinput> into the source … … 101 101 <filename class="directory">/lib</filename> directory on your host system. A 102 102 surefire way is to inspect a random binary from your host system by running: 103 <userinput> 'readelf -l <name of binary> | grep interpreter'</userinput>103 <userinput>readelf -l <name of binary> | grep interpreter</userinput> 104 104 and noting the output. The authoritative reference covering all platforms is in 105 105 the <filename>shlib-versions</filename> file in the root of the Glibc source … … 119 119 choose.</para></listitem> 120 120 121 <listitem><para>Careful manipulation of < userinput>gcc</userinput>'s121 <listitem><para>Careful manipulation of <command>gcc</command>'s 122 122 <emphasis>specs</emphasis> file to tell the compiler which target dynamic 123 123 linker will be used.</para></listitem> … … 126 126 <para>Binutils is installed first because both GCC and Glibc perform various 127 127 feature tests on the assembler and linker during their respective runs of 128 < userinput>./configure</userinput> to determine which software features to enable128 <command>./configure</command> to determine which software features to enable 129 129 or disable. This is more important than one might first realize. An incorrectly 130 130 configured GCC or Glibc can result in a subtly broken toolchain where the impact … … 138 138 the tools in one location are hard linked to the other. An important facet of 139 139 the linker is its library search order. Detailed information can be obtained 140 from < userinput>ld</userinput> by passing it the <emphasis>--verbose</emphasis>141 flag. For example: < userinput>'ld --verbose | grep SEARCH'</userinput> will140 from <command>ld</command> by passing it the <emphasis>--verbose</emphasis> 141 flag. For example: <command>ld --verbose | grep SEARCH</command> will 142 142 show you the current search paths and their order. You can see what files are 143 actually linked by < userinput>ld</userinput> by compiling a dummy program and144 passing the <emphasis>--verbose</emphasis> switch . For example:145 < userinput>'gcc dummy.c -Wl,--verbose 2>&1 | grep succeeded'</userinput>146 will show you all the files successfully opened during the link .</para>143 actually linked by <command>ld</command> by compiling a dummy program and 144 passing the <emphasis>--verbose</emphasis> switch to the linker. For example: 145 <command>gcc dummy.c -Wl,--verbose 2>&1 | grep succeeded</command> 146 will show you all the files successfully opened during the linking.</para> 147 147 148 148 <para>The next package installed is GCC and during its run of 149 < userinput>./configure</userinput> you'll see, for example:</para>149 <command>./configure</command> you'll see, for example:</para> 150 150 151 151 <blockquote><screen>checking what assembler to use... /tools/i686-pc-linux-gnu/bin/as … … 154 154 <para>This is important for the reasons mentioned above. It also demonstrates 155 155 that GCC's configure script does not search the $PATH directories to find which 156 tools to use. However, during the actual operation of < userinput>gcc</userinput>156 tools to use. However, during the actual operation of <command>gcc</command> 157 157 itself, the same search paths are not necessarily used. You can find out which 158 standard linker < userinput>gcc</userinput> will use by running:159 < userinput>'gcc -print-prog-name=ld'</userinput>.160 Detailed information can be obtained from < userinput>gcc</userinput> by passing158 standard linker <command>gcc</command> will use by running: 159 <command>gcc -print-prog-name=ld</command>. 160 Detailed information can be obtained from <command>gcc</command> by passing 161 161 it the <emphasis>-v</emphasis> flag while compiling a dummy program. For 162 example: < userinput>'gcc -v dummy.c'</userinput> will show you detailed162 example: <command>gcc -v dummy.c</command> will show you detailed 163 163 information about the preprocessor, compilation and assembly stages, including 164 < userinput>gcc</userinput>'s include search paths and their order.</para>164 <command>gcc</command>'s include search paths and their order.</para> 165 165 166 166 <para>The next package installed is Glibc. The most important considerations for 167 167 building Glibc are the compiler, binary tools and kernel headers. The compiler 168 is generally no problem as Glibc will always use the < userinput>gcc</userinput>168 is generally no problem as Glibc will always use the <command>gcc</command> 169 169 found in a $PATH directory. The binary tools and kernel headers can be a little 170 170 more troublesome. Therefore we take no risks and use the available configure 171 171 switches to enforce the correct selections. After the run of 172 < userinput>./configure</userinput> you can check the contents of the172 <command>./configure</command> you can check the contents of the 173 173 <filename>config.make</filename> file in the 174 174 <filename class="directory">glibc-build</filename> directory for all the 175 175 important details. You'll note some interesting items like the use of 176 < userinput>CC="gcc -B/tools/bin/"</userinput> to control which binary tools are176 <emphasis>CC="gcc -B/tools/bin/"</emphasis> to control which binary tools are 177 177 used, and also the use of the <emphasis>-nostdinc</emphasis> and 178 178 <emphasis>-isystem</emphasis> flags to control the compiler's include search … … 183 183 <para>After the Glibc installation, we make some adjustments to ensure that 184 184 searching and linking take place only within our <filename>/tools</filename> 185 prefix. We install an adjusted < userinput>ld</userinput>, which has a hard-wired185 prefix. We install an adjusted <command>ld</command>, which has a hard-wired 186 186 search path limited to <filename class="directory">/tools/lib</filename>. Then 187 we amend < userinput>gcc</userinput>'s specs file to point to our new dynamic187 we amend <command>gcc</command>'s specs file to point to our new dynamic 188 188 linker in <filename class="directory">/tools/lib</filename>. This last step is 189 189 <emphasis>vital</emphasis> to the whole process. As mentioned above, a 190 190 hard-wired path to a dynamic linker is embedded into every ELF shared 191 191 executable. You can inspect this by running: 192 <userinput>'readelf -l <name of binary> | grep interpreter'</userinput>. 193 By amending <userinput>gcc</userinput>'s specs file, we are ensuring that every 194 program compiled from here through the end of <xref linkend="chapter05"/> will 195 use our new dynamic linker in 196 <filename class="directory">/tools/lib</filename>.</para> 192 <command>readelf -l <name of binary> | grep interpreter</command>. 193 By amending <command>gcc</command>'s specs file, we are ensuring that every 194 program compiled from here through the end of this chapter will use our new 195 dynamic linker in <filename class="directory">/tools/lib</filename>.</para> 197 196 198 197 <para>The need to use the new dynamic linker is also the reason why we apply the … … 204 203 <para>During the second pass of Binutils, we are able to utilize the 205 204 <emphasis>--with-lib-path</emphasis> configure switch to control 206 < userinput>ld</userinput>'s library search path. From this point onwards, the205 <command>ld</command>'s library search path. From this point onwards, the 207 206 core toolchain is self-contained and self-hosted. The remainder of the 208 207 <xref linkend="chapter05"/> packages all build against the new Glibc in … … 214 213 <filename class="directory">/usr</filename>, we perform a quick changeover of 215 214 the toolchain defaults, then proceed for real in building the rest of the 216 target <xref linkend="chapter06"/>LFS system.</para>215 target LFS system.</para> 217 216 218 217 <sect2> … … 289 288 <screen><userinput>ln -s $LFS/tools /</userinput></screen> 290 289 291 <note><para>The above command is correct. The < userinput>ln</userinput> command290 <note><para>The above command is correct. The <command>ln</command> command 292 291 has a few syntactic variations, so be sure to check the info page before 293 292 reporting what you may think is an error.</para></note> … … 350 349 <screen><userinput>su - lfs</userinput></screen> 351 350 352 <para>The "< userinput>-</userinput>" instructs <userinput>su</userinput> to353 start a<emphasis>login</emphasis> shell.</para>351 <para>The "<command>-</command>" instructs <command>su</command> to start a 352 <emphasis>login</emphasis> shell.</para> 354 353 355 354 </sect1> … … 361 360 362 361 <para>We're going to set up a good working environment by creating two new 363 startup files for the < userinput>bash</userinput> shell. While logged in as362 startup files for the <command>bash</command> shell. While logged in as 364 363 user <emphasis>lfs</emphasis>, issue the following command to create a new 365 364 <filename>.bash_profile</filename>:</para> … … 373 372 <filename>/etc/profile</filename> of your host (probably containing some 374 373 settings of environment variables) and then <filename>.bash_profile</filename>. 375 The < userinput>exec env -i ... /bin/bash</userinput> command in the latter file374 The <command>exec env -i ... /bin/bash</command> command in the latter file 376 375 replaces the running shell with a new one with a completely empty environment, 377 376 except for the HOME, TERM and PS1 variables. This ensures that no unwanted and … … 394 393 <userinput>EOF</userinput></screen> 395 394 396 <para>The < userinput>set +h</userinput> command turns off397 < userinput>bash</userinput>'s hash function. Normally hashing is a useful398 feature: < userinput>bash</userinput> uses a hash table to remember the395 <para>The <command>set +h</command> command turns off 396 <command>bash</command>'s hash function. Normally hashing is a useful 397 feature: <command>bash</command> uses a hash table to remember the 399 398 full pathnames of executable files to avoid searching the PATH time and time 400 399 again to find the same executable. However, we'd like the new tools to be 401 400 used as soon as they are installed. By switching off the hash function, our 402 "interactive" commands (< userinput>make</userinput>,403 < userinput>patch</userinput>, <userinput>sed</userinput>,404 < userinput>cp</userinput> and so forth) will always use401 "interactive" commands (<command>make</command>, 402 <command>patch</command>, <command>sed</command>, 403 <command>cp</command> and so forth) will always use 405 404 the newest available version during the build process.</para> 406 405 … … 520 519 You will need to investigate and retrace your steps to find out where the 521 520 problem is and correct it. There is no point in continuing until this is done. 522 First, redo the sanity check using < userinput>gcc</userinput> instead of523 < userinput>cc</userinput>. If this works it means the521 First, redo the sanity check using <command>gcc</command> instead of 522 <command>cc</command>. If this works it means the 524 523 <filename class="symlink">/tools/bin/cc</filename> symlink is missing. Revisit 525 524 <xref linkend="ch-tools-gcc-pass1"/> and fix the symlink. Second, ensure your $PATH … … 588 587 589 588 <para>Take care <emphasis>not</emphasis> to use 590 < userinput>--strip-unneeded</userinput> on the libraries -- they would be589 <emphasis>--strip-unneeded</emphasis> on the libraries -- they would be 591 590 destroyed and you would have to build Glibc all over again.</para> 592 591 -
chapter05/gcc-pass1.xml
rc288d97 r90e3cb3 43 43 <listitem><para><userinput>--with-local-prefix=/tools</userinput>: The 44 44 purpose of this switch is to remove <filename>/usr/local/include</filename> 45 from < userinput>gcc</userinput>'s include search path. This is not absolutely45 from <command>gcc</command>'s include search path. This is not absolutely 46 46 essential; however, we want to try to minimize the influence of the host 47 47 system, thus making this a sensible thing to do.</para></listitem> … … 52 52 having <filename>libgcc_eh.a</filename> available ensures that the configure 53 53 script for Glibc (the next package we compile) produces the proper results. 54 Note that the < userinput>gcc</userinput> binaries will still be linked55 statically, as this is controlled by the < userinput>-static</userinput>54 Note that the <command>gcc</command> binaries will still be linked 55 statically, as this is controlled by the <command>-static</command> 56 56 value of BOOT_LDFLAGS further on.</para></listitem> 57 57 … … 93 93 <para>As a finishing touch we'll create the <filename 94 94 class="symlink">/tools/bin/cc</filename> symlink. Many programs and 95 scripts run < userinput>cc</userinput> instead of <userinput>gcc</userinput>,95 scripts run <command>cc</command> instead of <command>gcc</command>, 96 96 a thing meant to keep programs generic and therefore usable on all kinds of 97 97 Unix systems. Not everybody has the GNU C compiler installed. Simply running 98 < userinput>cc</userinput> leaves the system administrator free to decide what98 <command>cc</command> leaves the system administrator free to decide what 99 99 C compiler to install, as long as there's a symlink pointing to it:</para> 100 100 -
chapter05/gcc-pass2.xml
rc288d97 r90e3cb3 113 113 <screen><userinput>make</userinput></screen> 114 114 115 <para>There is no need to use the < userinput>bootstrap</userinput> target now,115 <para>There is no need to use the <emphasis>bootstrap</emphasis> target now, 116 116 as the compiler we're using to compile this GCC was built from the exact same 117 117 version of the GCC sources we used earlier.</para> … … 124 124 <screen><userinput>make -k check</userinput></screen> 125 125 126 <para>The < userinput>-k</userinput> flag is used to make the test suite run126 <para>The <emphasis>-k</emphasis> flag is used to make the test suite run 127 127 through to completion and not stop at the first failure. The GCC test suite is 128 128 very comprehensive and is almost guaranteed to generate a few failures. To get … … 143 143 144 144 <para>The unexpected pass for g++ is due to the use of 145 < userinput>--enable-__cxa_atexit</userinput>. Apparently not all platforms145 <emphasis>--enable-__cxa_atexit</emphasis>. Apparently not all platforms 146 146 supported by GCC have support for "__cxa_atexit" in their C libraries, so this 147 147 test is not always expected to pass.</para> 148 148 149 149 <para>The 24 unexpected passes for libstdc++ are due to the use of 150 < userinput>--enable-clocale=gnu</userinput>, which is the correct choice on150 <emphasis>--enable-clocale=gnu</emphasis>, which is the correct choice on 151 151 Glibc-based systems of versions 2.2.5 and above. The underlying locale support 152 152 in the GNU C library is superior to that of the otherwise selected "generic" -
chapter05/glibc.xml
rc288d97 r90e3cb3 54 54 55 55 <listitem><para><userinput>--without-gd</userinput>: This switch ensures 56 that we don't build the < userinput>memusagestat</userinput> program, which56 that we don't build the <command>memusagestat</command> program, which 57 57 strangely enough insists on linking against the host's libraries (libgd, 58 58 libpng, libz, and so forth).</para></listitem> … … 123 123 could still occur -- the <emphasis>math</emphasis> 124 124 tests for example. When experiencing a failure, make a note of it, then 125 continue by reissuing the < userinput>make check</userinput>. The test suite125 continue by reissuing the <command>make check</command>. The test suite 126 126 should pick up where it left off and continue on. You can circumvent this 127 stop-start sequence by issuing a < userinput>make -k check</userinput>. But if127 stop-start sequence by issuing a <command>make -k check</command>. But if 128 128 you do that, be sure to log the output so that you can later peruse the log 129 129 file and examine the total number of failures.</para> … … 157 157 <para>An alternative to running the previous command is to install only those 158 158 locales which you need or want. This can be achieved by using the 159 < userinput>localedef</userinput> command. Information on this can be found in159 <command>localedef</command> command. Information on this can be found in 160 160 the <filename>INSTALL</filename> file in the Glibc source. However, there are 161 161 a number of locales that are essential for the tests of future packages to -
chapter05/grep.xml
rc288d97 r90e3cb3 23 23 <itemizedlist> 24 24 <listitem><para><userinput>--disable-perl-regexp</userinput>: This makes sure 25 that < userinput>grep</userinput> does not get linked against a PCRE library25 that <command>grep</command> does not get linked against a PCRE library 26 26 that may be present on the host and would not be available once we enter the 27 27 chroot environment.</para></listitem> -
chapter05/kernelheaders.xml
rc288d97 r90e3cb3 13 13 <para>As some packages need to refer to the kernel header files, we're going 14 14 to unpack the kernel archive now, set it up, and copy the required files to a 15 place where < userinput>gcc</userinput> can later find them.</para>15 place where <command>gcc</command> can later find them.</para> 16 16 17 17 <para>Prepare for the header installation with:</para> -
chapter05/patch.xml
rc288d97 r90e3cb3 18 18 <screen><userinput>CPPFLAGS=-D_GNU_SOURCE ./configure --prefix=/tools</userinput></screen> 19 19 20 <para>The preprocessor flag < userinput>-D_GNU_SOURCE</userinput> is only needed20 <para>The preprocessor flag <emphasis>-D_GNU_SOURCE</emphasis> is only needed 21 21 on the PowerPC platform. On other architectures you can leave it out.</para> 22 22 -
chapter06/aboutdebug.xml
rc288d97 r90e3cb3 38 38 39 39 <para>To remove debugging symbols from a binary (which must be an a.out 40 or ELF binary), run < userinput>strip --strip-debug filename</userinput>.40 or ELF binary), run <command>strip --strip-debug filename</command>. 41 41 Wildcards can be used to treat multiple files (use something like 42 42 <userinput>strip --strip-debug $LFS/tools/bin/*</userinput>).</para> -
chapter06/bash.xml
rc288d97 r90e3cb3 40 40 <screen><userinput>make install</userinput></screen> 41 41 42 <para>And reload the newly compiled < userinput>bash</userinput> program:</para>42 <para>And reload the newly compiled <command>bash</command> program:</para> 43 43 44 44 <screen><userinput>exec /bin/bash --login +h</userinput></screen> -
chapter06/bzip2.xml
rc288d97 r90e3cb3 5 5 <para>The Bzip2 package contains programs for compressing and decompressing 6 6 files. On text files they achieve a much better compression than the 7 traditional < userinput>gzip</userinput>.</para>7 traditional <command>gzip</command>.</para> 8 8 9 9 <screen>&buildtime; &bzip2-time; … … 35 35 <para>If you are reinstalling Bzip2, you will now first have to do 36 36 <userinput>rm -f /usr/bin/bz*</userinput>, otherwise the following 37 < userinput>make install</userinput> will fail.</para>37 <command>make install</command> will fail.</para> 38 38 39 39 <para>Install the programs:</para> … … 41 41 <screen><userinput>make install</userinput></screen> 42 42 43 <para>And install the shared < userinput>bzip2</userinput> binary into the43 <para>And install the shared <command>bzip2</command> binary into the 44 44 <filename class="directory">/bin</filename> directory, then make some 45 45 necessary symbolic links, and clean up:</para> -
chapter06/chapter06.xml
rc288d97 r90e3cb3 69 69 the packages we need. Before you can chroot, however, you need to become 70 70 <emphasis>root</emphasis>, since only <emphasis>root</emphasis> 71 can execute the < userinput>chroot</userinput> command.</para>71 can execute the <command>chroot</command> command.</para> 72 72 73 73 <para>Just like earlier, ensure the LFS environment variable is set up properly 74 74 by running <userinput>echo $LFS</userinput> and ensuring it shows the path to 75 75 your LFS partition's mount point, which is 76 <filename class="directory">/mnt/lfs</filename> if you followed our 77 example.</para> 76 <filename class="directory">/mnt/lfs</filename> if you followed our example.</para> 78 77 79 78 <para>Become <emphasis>root</emphasis> and run the following command … … 85 84 /tools/bin/bash --login +h</userinput></screen> 86 85 87 <para>The < userinput>-i</userinput> option given to the88 < userinput>env</userinput> command will clear all variables of the chroot86 <para>The <emphasis>-i</emphasis> option given to the 87 <command>env</command> command will clear all variables of the chroot 89 88 environment. After that, only the HOME, TERM, PS1 and PATH variables are 90 89 set again. The TERM=$TERM construct will set the TERM variable inside chroot 91 90 to the same value as outside chroot; this variable is needed for programs 92 like < userinput>vim</userinput> and <userinput>less</userinput> to operate91 like <command>vim</command> and <command>less</command> to operate 93 92 properly. If you need other variables present, such as CFLAGS or CXXFLAGS, 94 93 this is a good place to set them again.</para> … … 104 103 as soon as its final version is installed. Well, at least when the shell 105 104 doesn't remember the locations of executed binaries -- for this reason hashing 106 is switched off by passing the < userinput>+h</userinput> option to107 < userinput>bash</userinput>.</para>105 is switched off by passing the <emphasis>+h</emphasis> option to 106 <command>bash</command>.</para> 108 107 109 108 <para>You have to make sure all the commands in the rest of this chapter and … … 282 281 <screen><userinput>exec /tools/bin/bash --login +h</userinput></screen> 283 282 284 <para>Note the use of the < userinput>+h</userinput> directive. This tells285 < userinput>bash</userinput> not to use its internal path hashing. Without this286 directive, < userinput>bash</userinput> would remember the paths to binaries it283 <para>Note the use of the <emphasis>+h</emphasis> directive. This tells 284 <command>bash</command> not to use its internal path hashing. Without this 285 directive, <command>bash</command> would remember the paths to binaries it 287 286 has executed. Since we want to use our newly compiled binaries as soon as 288 287 they are installed, we turn off this function for the duration of this 289 288 chapter.</para> 290 289 291 <para>The < userinput>login</userinput>, <userinput>agetty</userinput> and292 < userinput>init</userinput> programs (and some others) use a number of log290 <para>The <command>login</command>, <command>agetty</command> and 291 <command>init</command> programs (and some others) use a number of log 293 292 files to record information such as who was logged into the system and when. 294 293 These programs, however, won't write to the log files if they don't already … … 342 341 against the libraries in <filename>/usr/lib</filename> and 343 342 <filename>/lib</filename>. The extra 344 < userinput>INSTALL=/tools/bin/install</userinput> is needed because the Makefile343 <emphasis>INSTALL=/tools/bin/install</emphasis> is needed because the Makefile 345 344 created during the second pass still contains the reference to 346 345 <filename>/usr/bin/install</filename>, which we obviously haven't installed yet. -
chapter06/config-glibc.xml
rc288d97 r90e3cb3 55 55 56 56 <para>Of course, instead of <emphasis>Canada/Eastern</emphasis>, fill in 57 the name of the time zone that the < userinput>tzselect</userinput> script57 the name of the time zone that the <command>tzselect</command> script 58 58 gave you.</para> 59 59 -
chapter06/config-shadowpwd.xml
rc288d97 r90e3cb3 24 24 <para>Under normal circumstances, you won't have created any passwords yet. 25 25 However, if returning to this section to enable shadowing, you should reset any 26 current user passwords with the < userinput>passwd</userinput> command or any27 group passwords with the < userinput>gpasswd</userinput> command.</para>26 current user passwords with the <command>passwd</command> command or any 27 group passwords with the <command>gpasswd</command> command.</para> 28 28 </sect2> 29 29 -
chapter06/config-vim.xml
rc288d97 r90e3cb3 3 3 <sect2><title>Configuring Vim</title> 4 4 5 <para>By default, < userinput>vim</userinput> runs in vi-compatible mode. Some6 people might like this, but we prefer to run < userinput>vim</userinput> in its5 <para>By default, <command>vim</command> runs in vi-compatible mode. Some 6 people might like this, but we prefer to run <command>vim</command> in its 7 7 own mode (else we wouldn't have included it in this book, but the original 8 < userinput>vi</userinput>). Create a default vim configuration file by running8 <command>vi</command>). Create a default vim configuration file by running 9 9 the following:</para> 10 10 … … 19 19 <userinput>EOF</userinput></screen> 20 20 21 <para>The < userinput>set nocompatible</userinput> will make22 < userinput>vim</userinput> behave in a more useful way than the default23 vi-compatible manner. The < userinput>set backspace=2</userinput> allows21 <para>The <emphasis>set nocompatible</emphasis> will make 22 <command>vim</command> behave in a more useful way than the default 23 vi-compatible manner. The <emphasis>set backspace=2</emphasis> allows 24 24 backspacing over line breaks, autoindent and the start of insert. And the 25 < userinput>syntax on</userinput> switches on <userinput>vim</userinput>'s25 <emphasis>syntax on</emphasis> switches on <command>vim</command>'s 26 26 semantic colouring.</para> 27 27 -
chapter06/coreutils.xml
rc288d97 r90e3cb3 21 21 <screen><userinput>patch -Np1 -i ../&coreutils-posixver-patch;</userinput></screen> 22 22 23 <para>Normally the functionality of < userinput>uname</userinput> is somewhat24 broken, in that the < userinput>-p</userinput> switch always returns "unknown".23 <para>Normally the functionality of <command>uname</command> is somewhat 24 broken, in that the <emphasis>-p</emphasis> switch always returns "unknown". 25 25 The following patch fixes this behaviour for Intel architectures:</para> 26 26 … … 28 28 29 29 <para>We do not want Coreutils to install its version of the 30 < userinput>hostname</userinput> program, because it is inferior to the version30 <command>hostname</command> program, because it is inferior to the version 31 31 provided by Net-tools. Prevent its installation by applying a patch:</para> 32 32 … … 41 41 <screen><userinput>make</userinput></screen> 42 42 43 <para>The < userinput>su</userinput> program from Coreutils wasn't installed in43 <para>The <command>su</command> program from Coreutils wasn't installed in 44 44 Chapter 5 because it needed <emphasis>root</emphasis> privilege to do so. We're 45 45 going to need it in a few moments for the test suite. Therefore we work around -
chapter06/flex.xml
rc288d97 r90e3cb3 40 40 <screen><userinput>ln -s libfl.a /usr/lib/libl.a</userinput></screen> 41 41 42 <para>A few programs don't know about < userinput>flex</userinput> yet and try43 to run its predecessor < userinput>lex</userinput>. To support those programs,42 <para>A few programs don't know about <command>flex</command> yet and try 43 to run its predecessor <command>lex</command>. To support those programs, 44 44 create a shell script named <filename>lex</filename> that calls 45 < userinput>flex</userinput> in Lex emulation mode:</para>45 <command>flex</command> in Lex emulation mode:</para> 46 46 47 47 <screen><userinput>cat > /usr/bin/lex << "EOF"</userinput> -
chapter06/gcc.xml
rc288d97 r90e3cb3 87 87 <screen><userinput>ln -s ../usr/bin/cpp /lib</userinput></screen> 88 88 89 <para>Many packages use the name < userinput>cc</userinput> to call the C89 <para>Many packages use the name <command>cc</command> to call the C 90 90 compiler. To satisfy those packages, create a symlink:</para> 91 91 -
chapter06/glibc.xml
rc288d97 r90e3cb3 92 92 <para>An alternative to running the previous command is to install only those 93 93 locales which you need or want. This can be achieved by using the 94 < userinput>localedef</userinput> command. Information on this can be found in94 <command>localedef</command> command. Information on this can be found in 95 95 the <filename>INSTALL</filename> file in the Glibc source. However, there are 96 96 a number of locales that are essential for the tests of future packages to -
chapter06/groff.xml
rc288d97 r90e3cb3 33 33 <screen><userinput>make install</userinput></screen> 34 34 35 <para>Some documentation programs, such as < userinput>xman</userinput>,35 <para>Some documentation programs, such as <command>xman</command>, 36 36 will not work properly without the following symlinks:</para> 37 37 -
chapter06/gzip.xml
rc288d97 r90e3cb3 21 21 <screen><userinput>./configure --prefix=/usr</userinput></screen> 22 22 23 <para>The < userinput>gzexe</userinput> script has the location of the24 < userinput>gzip</userinput> binary hard-wired into it. Because we later change23 <para>The <command>gzexe</command> script has the location of the 24 <command>gzip</command> binary hard-wired into it. Because we later change 25 25 the location of the binary, the following command assures that the new 26 26 location gets placed into the script:</para> -
chapter06/inetutils.xml
rc288d97 r90e3cb3 62 62 <screen><userinput>make install</userinput></screen> 63 63 64 <para>And move the < userinput>ping</userinput> program to its proper place:</para>64 <para>And move the <command>ping</command> program to its proper place:</para> 65 65 66 66 <screen><userinput>mv /usr/bin/ping /bin</userinput></screen> -
chapter06/kbd.xml
rc288d97 r90e3cb3 16 16 <title>Installation of Kbd</title> 17 17 18 <para>By default some of Kbd's utilities (< userinput>setlogcons</userinput>,19 < userinput>setvesablank</userinput> and <userinput>getunimap</userinput>) are18 <para>By default some of Kbd's utilities (<command>setlogcons</command>, 19 <command>setvesablank</command> and <command>getunimap</command>) are 20 20 not installed. First enable the compilation of these utilities:</para> 21 21 -
chapter06/lfs-utils.xml
rc288d97 r90e3cb3 24 24 <itemizedlist> 25 25 <listitem><para><userinput>--with-libc</userinput>: This causes the 26 < userinput>mktemp</userinput> program to use the <emphasis>mkstemp</emphasis>26 <command>mktemp</command> program to use the <emphasis>mkstemp</emphasis> 27 27 and <emphasis>mkdtemp</emphasis> functions from the system C 28 28 library.</para></listitem> -
chapter06/makedev.xml
rc288d97 r90e3cb3 17 17 18 18 <para>Note that unpacking the <filename>MAKEDEV-&makedev-version;.bz2</filename> 19 file doesn't create a directory for you to < userinput>cd</userinput> into, as19 file doesn't create a directory for you to <command>cd</command> into, as 20 20 the file contains only a shell script.</para> 21 21 22 <para>Install the < userinput>MAKEDEV</userinput> script:</para>22 <para>Install the <command>MAKEDEV</command> script:</para> 23 23 24 24 <screen><userinput>bzcat MAKEDEV-&makedev-version;.bz2 > /dev/MAKEDEV … … 37 37 38 38 <listitem><para><userinput>generic-nopty</userinput>: This instructs 39 < userinput>MAKEDEV</userinput> to create a generic selection of commonly used39 <command>MAKEDEV</command> to create a generic selection of commonly used 40 40 device special files, except for the ptyXX and ttyXX range of files. We don't 41 41 need those files because we are going to use Unix98 PTYs via the … … 45 45 <para>If it turns out that some special device <filename>zzz</filename> that 46 46 you need is missing, try running <userinput>./MAKEDEV -v zzz</userinput>. 47 Alternatively, you may create devices via the < userinput>mknod</userinput>47 Alternatively, you may create devices via the <command>mknod</command> 48 48 program. Please refer to its man and info pages if you need more 49 49 information.</para> -
chapter06/man.xml
rc288d97 r90e3cb3 32 32 <para>The third is also a sed substitution to comment out the "MANPATH 33 33 /usr/man" line in the <filename>man.conf</filename> file to prevent redundant 34 results when using programs such as < userinput>whatis</userinput>:</para>34 results when using programs such as <command>whatis</command>:</para> 35 35 36 36 <screen><userinput>sed -i 's%MANPATH./usr/man%#&%' src/man.conf.in</userinput></screen> … … 51 51 52 52 <listitem><para><userinput>-confdir=/etc</userinput>: This tells the 53 < userinput>man</userinput> program to look for the <filename>man.conf</filename>53 <command>man</command> program to look for the <filename>man.conf</filename> 54 54 configuration file in the <filename>/etc</filename> directory.</para></listitem> 55 55 </itemizedlist> … … 63 63 <screen><userinput>make install</userinput></screen> 64 64 65 <note><para>If you wish to disable SGR escape sequences, you should 66 edit the man.conf file and add the <userinput>-c</userinput> argument 67 to nroff.</para></note>65 <note><para>If you wish to disable SGR escape sequences, you should edit the 66 <filename>man.conf</filename> file and add the <emphasis>-c</emphasis> switch 67 to NROFF.</para></note> 68 68 69 69 <para>You may want to also take a look at the BLFS page at -
chapter06/mountproc.xml
rc288d97 r90e3cb3 45 45 without support for the devpts file system. You can check which file systems 46 46 your kernel supports by peeking into its internals with a command such as 47 < userinput>cat /proc/filesystems</userinput>. If a file system type named47 <command>cat /proc/filesystems</command>. If a file system type named 48 48 <emphasis>devfs</emphasis> is listed there, then we'll be able to work around 49 49 the problem by mounting the host's devfs file system on top of the new -
chapter06/nettools.xml
rc288d97 r90e3cb3 17 17 18 18 <para>If you don't know what to answer to all the questions asked during the 19 < userinput>make config</userinput> phase below, then just accept the defaults.19 <command>make config</command> phase below, then just accept the defaults. 20 20 This will be just fine in the majority of cases. What you're asked here is a 21 21 bunch of questions about which network protocols you've enabled in your … … 36 36 37 37 <para>If you intend to accept the default settings, you may skip the 38 questions generated by < emphasis>make config</emphasis> by running38 questions generated by <command>make config</command> by running 39 39 <userinput>yes "" | make config</userinput> instead.</para> 40 40 -
chapter06/patch.xml
rc288d97 r90e3cb3 20 20 <screen><userinput>CPPFLAGS=-D_GNU_SOURCE ./configure --prefix=/usr</userinput></screen> 21 21 22 <para>Again, the preprocessor flag < userinput>-D_GNU_SOURCE</userinput> is only22 <para>Again, the preprocessor flag <emphasis>-D_GNU_SOURCE</emphasis> is only 23 23 needed on the PowerPC platform. On other architectures you can leave it out.</para> 24 24 -
chapter06/perl.xml
rc288d97 r90e3cb3 23 23 24 24 <para>If you want more control over the way Perl sets itself up to be 25 built, you can run the interactive < userinput>Configure</userinput> script25 built, you can run the interactive <command>Configure</command> script 26 26 instead and modify the way Perl is built. If you think you can live with the 27 27 (sensible) defaults Perl auto-detects, then just use the command listed -
chapter06/psmisc.xml
rc288d97 r90e3cb3 49 49 ln -sf pstree /usr/bin/pstree.x11</userinput></screen> 50 50 51 <para>By default Psmisc's < userinput>pidof</userinput> program isn't installed.51 <para>By default Psmisc's <command>pidof</command> program isn't installed. 52 52 Generally, this isn't a problem because we later install the Sysvinit package, 53 which provides a better < userinput>pidof</userinput> program. But if you're not53 which provides a better <command>pidof</command> program. But if you're not 54 54 going to use Sysvinit, you should complete the installation of Psmisc by 55 55 creating the following symlink:</para> -
chapter06/shadowpwd.xml
rc288d97 r90e3cb3 17 17 <title>Installation of Shadow</title> 18 18 19 <para>Shadow hard-wires the path to the < userinput>passwd</userinput> binary19 <para>Shadow hard-wires the path to the <command>passwd</command> binary 20 20 within the binary itself, but does this the wrong way. If a 21 < userinput>passwd</userinput> binary is not present before installing Shadow,21 <command>passwd</command> binary is not present before installing Shadow, 22 22 the package incorrectly assumes it is going to be located at 23 23 <filename>/bin/passwd</filename>, but then installs it in … … 85 85 <screen><userinput>mkdir /etc/default</userinput></screen> 86 86 87 <para>Coreutils has already installed a better < userinput>groups</userinput>87 <para>Coreutils has already installed a better <command>groups</command> 88 88 program in <filename>/usr/bin</filename>. Remove the one installed by 89 89 Shadow:</para> -
chapter06/utillinux.xml
rc288d97 r90e3cb3 20 20 <para>The FHS recommends that we use <filename>/var/lib/hwclock</filename>, 21 21 instead of the usual <filename>/etc</filename>, as the location for the 22 <filename>adjtime</filename> file. To make the < userinput>hwclock</userinput>22 <filename>adjtime</filename> file. To make the <command>hwclock</command> 23 23 program FHS-compliant, run the following:</para> 24 24 … … 45 45 <itemizedlist> 46 46 <listitem><para><userinput>HAVE_KILL=yes</userinput>: This prevents the 47 < userinput>kill</userinput> program (already installed by Procps) from being47 <command>kill</command> program (already installed by Procps) from being 48 48 built and installed again.</para></listitem> 49 49 50 50 <listitem><para><userinput>HAVE_SLN=yes</userinput>: This prevents the 51 < userinput>sln</userinput> program (a statically linked52 < userinput>ln</userinput>, already installed by Glibc) from being built and51 <command>sln</command> program (a statically linked 52 <command>ln</command>, already installed by Glibc) from being built and 53 53 installed again.</para></listitem> 54 54 </itemizedlist> -
chapter06/vim.xml
rc288d97 r90e3cb3 53 53 <screen><userinput>make install</userinput></screen> 54 54 55 <para>When called as < userinput>vi</userinput>, <userinput>vim</userinput>55 <para>When called as <command>vi</command>, <command>vim</command> 56 56 will run in old-fashioned vi-mode. To allow this, create a symlink:</para> 57 57 -
chapter07/sysklogd.xml
rc288d97 r90e3cb3 4 4 5 5 <para>The <filename>sysklogd</filename> script invokes the 6 < userinput>syslogd</userinput> program with the <emphasis>-m 0</emphasis>7 option. This option turns off the periodic timestamp mark that syslogd 8 writes to the log files every 20 minutes by default. If you want to turn 9 on this periodic timestamp mark, edit the <filename>sysklogd</filename> 10 script and make the changes accordingly. See <userinput>man 11 syslogd</userinput> for more information.</para>6 <command>syslogd</command> program with the <emphasis>-m 0</emphasis> option. 7 This option turns off the periodic timestamp mark that 8 <command>syslogd</command> writes to the log files every 20 minutes by default. 9 If you want to turn on this periodic timestamp mark, edit the 10 <filename>sysklogd</filename> script and make the changes accordingly. See 11 <userinput>man syslogd</userinput> for more information.</para> 12 12 13 13 </sect1> -
chapter07/usage.xml
rc288d97 r90e3cb3 26 26 6: reboot the computer</literallayout> 27 27 28 <para>The command used to change runlevels is <userinput>init 29 <runlevel></userinput> where <runlevel> is 30 the target runlevel. For example, to reboot the computer, a user would issue 31 the init 6 command. The reboot command is just an alias, as is the halt 32 command an alias to init 0.</para> 28 <para>The command used to change runlevels is <command>init 29 <runlevel></command> where <runlevel> is the target runlevel. For 30 example, to reboot the computer, a user would issue the <command>init 31 6</command> command. The <command>reboot</command> command is just an alias for 32 it, as is the <command>halt</command> command an alias for <command>init 33 0</command>.</para> 33 34 34 <para>There are a number of directories under /etc/rc.d that look like 35 like rc?.d where ? is the number of the runlevel and rcsysinit.d which 36 contain a number of symbolic links. Some begin with a K, the others 37 begin with an S, and all of them have two numbers following the initial 38 letter. The K means to stop (kill) a service, and the S means to start a 39 service. The numbers determine the order in which the scripts are run, 40 from 00 to 99; the lower the number the sooner it gets executed. When init 41 switches to another runlevel, the appropriate services get killed and 42 others get started.</para> 35 <para>There are a number of directories under <filename>/etc/rc.d</filename> 36 that look like like rc?.d where ? is the number of the runlevel and rcsysinit.d 37 which contain a number of symbolic links. Some begin with a K, the others begin 38 with an S, and all of them have two numbers following the initial letter. The K 39 means to stop (kill) a service, and the S means to start a service. The numbers 40 determine the order in which the scripts are run, from 00 to 99; the lower the 41 number the sooner it gets executed. When init switches to another runlevel, the 42 appropriate services get killed and others get started.</para> 43 43 44 44 <para>The real scripts are in /etc/rc.d/init.d. They do all the work, and the -
chapter08/fstab.xml
rc288d97 r90e3cb3 26 26 for example <filename>hda2</filename>, <filename>hda5</filename> and 27 27 <filename>reiserfs</filename>. For all the details on the six fields in this 28 table, see < userinput>man 5 fstab</userinput>.</para>28 table, see <command>man 5 fstab</command>.</para> 29 29 30 30 <para>When using a reiserfs partition, the <emphasis>1 1</emphasis> at the -
chapter08/grub.xml
rc288d97 r90e3cb3 117 117 <userinput>EOF</userinput></screen> 118 118 119 <para>If < userinput>info grub</userinput> doesn't tell you all you want to119 <para>If <command>info grub</command> doesn't tell you all you want to 120 120 know, you can find more information regarding Grub on its website, located at: 121 121 <ulink url="http://www.gnu.org/software/grub"/>.</para> -
chapter08/kernel-inst.xml
rc288d97 r90e3cb3 89 89 90 90 <para><filename>.config</filename> is the kernel configuration file that was 91 produced by the < userinput>make menuconfig</userinput> step above. It contains91 produced by the <command>make menuconfig</command> step above. It contains 92 92 all the config selections for the kernel that was just compiled. It's a good 93 93 idea to keep this file for future reference:</para>
Note:
See TracChangeset
for help on using the changeset viewer.