*** empty log message ***

This commit is contained in:
gferg 2004-05-25 13:56:52 +00:00
parent 6e6414754a
commit 9c0eb8f8f7
173 changed files with 5066 additions and 0 deletions

View File

@ -0,0 +1,11 @@
<sect2><title>Contents of Autoconf</title>
<!-- <para>(Last checked against version &autoconf-contversion;.)</para> -->
<para>Autoconf produces shell scripts which automatically configure source
code.</para>
<para><emphasis>Installed programs</emphasis>: autoconf, autoheader, autom4te,
autoreconf, autoscan, autoupdate and ifnames</para>
</sect2>

View File

@ -0,0 +1,12 @@
<sect2><title>Contents of Automake</title>
<!-- <para>(Last checked against version &automake-contversion;.)</para> -->
<para>Automake generates Makefile.in files, intended for use with Autoconf.</para>
<para><emphasis>Installed programs</emphasis>: acinstall, aclocal,
aclocal-1.7, automake, automake-1.7, compile, config.guess, config.sub,
depcomp, elisp-comp, install-sh, mdate-sh, missing, mkinstalldirs, py-compile,
ylwrap</para>
</sect2>

View File

@ -0,0 +1,15 @@
<sect2><title>Contents of Bash</title>
<!-- <para>(Last checked against version &bash-contversion;.)</para> -->
<para>bash is the Bourne-Again SHell, which is a widely used command
interpreter on Unix systems. The bash program reads from standard
input (the keyboard). A user types something and the program will evaluate
what he has typed and do something with it, like running a
program.</para>
<para><emphasis>Installed programs</emphasis>: bash, sh (link to bash) and
bashbug</para>
</sect2>

View File

@ -0,0 +1,17 @@
<sect2><title>Contents of Binutils</title>
<!-- <para>(Last checked against version &binutils-contversion;.)</para> -->
<para>Binutils is a collection of software development tools containing a
linker, assembler and other tools to work with object files and
archives.</para>
<para><emphasis>Installed programs</emphasis>: addr2line, ar, as, c++filt,
gprof, ld, nm, objcopy, objdump, ranlib, readelf, size, strings and
strip</para>
<para><emphasis>Installed libraries</emphasis>: libiberty.a, libbfd.[a,so] and
libopcodes.[a,so]</para>
</sect2>

View File

@ -0,0 +1,13 @@
<sect2><title>Contents of Bison</title>
<!-- <para>(Last checked against version &bison-contversion;.)</para> -->
<para>Bison is a parser generator, a replacement for yacc. Bison
generates a program that analyzes the structure of a text file.</para>
<para><emphasis>Installed programs</emphasis>: bison and yacc</para>
<para><emphasis>Installed library</emphasis>: liby.a</para>
</sect2>

View File

@ -0,0 +1,15 @@
<sect2><title>Contents of LFS-bootscripts</title>
<!-- <para>(Last checked against version &bootscripts-contversion;.)</para> -->
<para>The LFS-Bootscripts package contains SysV init style shell
scripts. These scripts do various tasks such as check filesystem
integrity during boot, load keymaps, set up networks and halt
processes at shutdown.</para>
<para><emphasis>Installed scripts</emphasis>: checkfs, cleanfs, functions,
halt, ifdown, ifup, loadkeys, localnet, mountfs, mountproc, network, rc,
reboot, sendsignals, setclock, swap, sysklogd and template</para>
</sect2>

View File

@ -0,0 +1,17 @@
<sect2><title>Contents of Bzip2</title>
<!-- <para>(Last checked against version &bzip2-contversion;.)</para> -->
<para>Bzip2 is a block-sorting file compressor which generally achieves a
better compression than the traditional <userinput>gzip</userinput>
does.</para>
<para><emphasis>Installed programs</emphasis>: bunzip2 (link to bzip2), bzcat
(link to bzip2), bzcmp, bzdiff, bzegrep, bzfgrep, bzgrep, bzip2, bzip2recover,
bzless and bzmore</para>
<para><emphasis>Installed libraries</emphasis>: libbz2.a, libbz2.so (link to
libbz2.so.1.0), libbz2.so.1.0 (link to libbz2.so.1.0.2) and
libbz2.so.1.0.2</para>
</sect2>

View File

@ -0,0 +1,12 @@
<sect2><title>&nbsp;</title><para>&nbsp;</para></sect2>
<sect2>
<title>Coreutils Installation Dependencies</title>
<!-- <para>(Last checked against version &coreutils-depversion;.)</para> -->
<para>Coreutils depends on: Bash, Binutils, Coreutils, Diffutils, GCC,
Gettext, Glibc, Grep, Make, Perl, Sed.</para>
</sect2>

View File

@ -0,0 +1,242 @@
<sect2><title>&nbsp;</title><para>&nbsp;</para></sect2>
<sect2><title>Short descriptions</title>
<para><command>basename</command> strips any path and a given suffix from
the given file name.</para>
<para><command>cat</command> concatenates files to standard output.</para>
<para><command>chgrp</command> changes the group ownership of each given
file to the given group. The group can be either given a a name or a numeric
ID.</para>
<para><command>chmod</command> changes the permissions of each given file
to the given mode. The mode can be either a symbolic representation of the
changes to make, or an octal number representing the new permissions.</para>
<para><command>chown</command> changes the user and/or group ownership of
each given file to the given user:group pair.</para>
<para><command>chroot</command> runs a given command with the specified
directory as the <filename>/</filename> directory. The given command can be an
interactive shell. On most systems only <emphasis>root</emphasis> can do
this.</para>
<para><command>cksum</command> prints the CRC checksum and the byte
counts of each specified file.</para>
<para><command>comm</command> compares two sorted files, outputting in
three columns the lines that are unique, and the lines that are common.</para>
<para><command>cp</command> copies files.</para>
<para><command>csplit</command> splits a given file into several new files,
separating them according to given patterns or line numbers, and outputting
the byte count of each new file.</para>
<para><command>cut</command> prints parts of lines, selecting the parts
according to given fields or positions.</para>
<para><command>date</command> displays the current time in the given
format, or sets the system date.</para>
<para><command>dd</command> copies a file using the given blocksize and
count, while optionally performing conversions on it.</para>
<para><command>df</command> reports the amount of disk space available
(and used) on all mounted filesystems, or only on the filesystems holding the
given files.</para>
<para><command>dir</command> is the same as ls.</para>
<para><command>dircolors</command> outputs commands to set the LS_COLOR
environment variable, to change the color scheme used by ls.</para>
<para><command>dirname</command> strips the non-directory suffix from
a given file name.</para>
<para><command>du</command> reports the amount of disk space used by the
current directory, or by each of the given directories including all their
subdirectories, or by each of the given files.</para>
<para><command>echo</command> displays the given strings.</para>
<para><command>env</command> runs a command in a modified environment.</para>
<para><command>expand</command> converts tabs to spaces.</para>
<para><command>expr</command> evaluates expressions.</para>
<para><command>factor</command> prints the prime factors of all specified
integer numbers.</para>
<para><command>false</command> does nothing, unsuccessfully. It always
exits with a status code indicating failure.</para>
<para><command>fmt</command> reformats the paragraphs in the given files.</para>
<para><command>fold</command> wraps the lines in the given files.</para>
<para><command>groups</command> reports a user's group memberships.</para>
<para><command>head</command> prints the first ten lines (or the given
number of lines) of each given file.</para>
<para><command>hostid</command> reports the numeric identifier
(in hexadecimal) of the host.</para>
<para><command>hostname</command> reports or sets the name of the
host.</para>
<para><command>id</command> reports the effective user ID, group ID, and
group memberships of the current user, or of a given user.</para>
<para><command>install</command> copies files while setting their
permission modes and, if possible, their owner and group.</para>
<para><command>join</command> joins from two files the lines that have
identical join fields.</para>
<para><command>kill</command> terminates the given process.</para>
<para><command>link</command> creates a hard link with the given name
to the given file.</para>
<para><command>ln</command> makes hard links or soft links between files.</para>
<para><command>logname</command> reports the current user's login name.</para>
<para><command>ls</command> lists the contents of each given directory.
By default it orders the files and subdirectories alphabetically.</para>
<para><command>md5sum</command> reports or checks MD5 checksums.</para>
<para><command>mkdir</command> creates directories with the given names.</para>
<para><command>mkfifo</command> creates FIFOs with the given names.</para>
<para><command>mknod</command> creates device nodes with the given names.
A device node is a character special file, or a block special file, or a FIFO.</para>
<para><command>mv</command> moves or renames files or directories.</para>
<para><command>nice</command> runs a program with modified scheduling priority.</para>
<para><command>nl</command> numbers the lines from the given files.</para>
<para><command>nohup</command> runs a command immune to hangups, with
output redirected to a log file.</para>
<para><command>od</command> dumps files in octal and other formats.</para>
<para><command>paste</command> merges the given files, joining
sequentially corresponding lines side by side, separated by TABs.</para>
<para><command>pathchk</command> checks whether file names are valid
or portable.</para>
<para><command>pinky</command> is a lightweight finger. It reports
some information about the given users.</para>
<para><command>pr</command> paginates and columnates files for printing.</para>
<para><command>printenv</command> prints the environment.</para>
<para><command>printf</command> prints the given arguments according to the
given format -- much like the C printf function.</para>
<para><command>ptx</command> produces from the contents of the given files
a permuted index, with each keyword in its context.</para>
<para><command>pwd</command> reports the name of the current directory.</para>
<para><command>readlink</command> reports the value of the given symbolic
link.</para>
<para><command>rm</command> removes files or directories.</para>
<para><command>rmdir</command> removes directories, if they are empty.</para>
<para><command>seq</command> prints a sequence of numbers, within a given
range and with a given increment.</para>
<para><command>sha1sum</command> prints or checks 160-bit SHA1
checksums.</para>
<para><command>shred</command> overwrites the given files repeatedly with
strange patterns, to make it real hard to recover the data.</para>
<para><command>sleep</command> pauses for the given amount of time.</para>
<para><command>sort</command> sorts the lines from the given files.</para>
<para><command>split</command> splits the given file into pieces, by size
or by number of lines.</para>
<para><command>stty</command> sets or reports terminal line settings.</para>
<para><command>su</command> runs a shell with substitute user and group IDs.</para>
<para><command>sum</command> prints checksum and block counts for each
given file.</para>
<para><command>sync</command> flushes filesystem buffers. It forces
changed blocks to disk and updates the super block.</para>
<para><command>tac</command> concatenates the given files in reverse.</para>
<para><command>tail</command> prints the last ten lines (or the given
number of lines) of each given file.</para>
<para><command>tee</command> reads from standard input while writing both
to standard output and to the given files.</para>
<para><command>test</command> compares values and checks file types.</para>
<para><command>touch</command> changes file timestamps, setting the access
and modification times of the given files to the current time. Files that do
not exist are created with zero length.</para>
<para><command>tr</command> translates, squeezes, and deletes the given
characters from standard input.</para>
<para><command>true</command> does nothing, successfully. It always exits
with a status code indicating success.</para>
<para><command>tsort</command> performs a topological sort. It writes a
totally ordered list according to the partial ordering in a given file.</para>
<para><command>tty</command> reports the file name of the terminal
connected to standard input.</para>
<para><command>uname</command> reports system information.</para>
<para><command>unexpand</command> converts spaces to tabs.</para>
<para><command>uniq</command> discards all but one of successive
identical lines.</para>
<para><command>unlink</command> removes the given file.</para>
<para><command>uptime</command> reports how long the system has been
running, how many users are logged on, and the system load averages.</para>
<para><command>users</command> reports the names of the users currently
logged on.</para>
<para><command>vdir</command> is the same as ls -l.</para>
<para><command>wc</command> reports the number of lines, words, and bytes
for each given file, and a total line when more than one file is given.</para>
<para><command>who</command> reports who is logged on.</para>
<para><command>whoami</command> reports the user name associated with the
current effective user ID.</para>
<para><command>yes</command> outputs 'y' or a given string repeatedly,
until killed.</para>
</sect2>

View File

@ -0,0 +1,12 @@
<sect2>
<title>Official Download Location</title>
<literallayout>Coreutils (&coreutils-version;):
<ulink url="ftp://ftp.gnu.org/gnu/coreutils/"/>
Coreutils Hostname Patch:
<ulink url="&patches-root;&coreutils-hostname-patch;"/>
Coreutils Uname Patch:
<ulink url="&patches-root;&coreutils-uname-patch;"/></literallayout>
</sect2>

View File

@ -0,0 +1,18 @@
<sect2><title>Contents of Coreutils</title>
<para>The Coreutils package contains a whole series of basic shell utilities.</para>
<!-- <para>(Last checked against version &coreutils-contversion;.)</para> -->
<para><emphasis>Installed programs</emphasis>: basename, cat, chgrp, chmod,
chown, chroot, cksum, comm, cp, csplit, cut, date, dd, df, dir, dircolors,
dirname, du, echo, env, expand, expr, factor, false, fmt, fold, groups, head,
hostid, hostname, id, install, join, kill, link, ln, logname, ls, md5sum,
mkdir, mkfifo, mknod, mv, nice, nl, nohup, od, paste, pathchk, pinky, pr,
printenv, printf, ptx, pwd, readlink, rm, rmdir, seq, sha1sum, shred, sleep,
sort, split, stat, stty, su, sum, sync, tac, tail, tee, test, touch, tr, true,
tsort, tty, uname, unexpand, uniq, unlink, uptime, users, vdir, wc, who,
whoami and yes</para>
</sect2>

View File

@ -0,0 +1,13 @@
<sect1 id="aa-coreutils" xreflabel="Coreutils">
<title>Coreutils</title>
<?dbhtml filename="coreutils.html" dir="appendixa"?>
<para>For installation instructions see <xref linkend="ch06-coreutils"/>.</para>
&aa-coreutils-down;
&aa-coreutils-shortdesc;
&aa-coreutils-desc;
&aa-coreutils-dep;
</sect1>

View File

@ -0,0 +1,12 @@
<sect2><title>&nbsp;</title><para>&nbsp;</para></sect2>
<sect2>
<title>DejaGnu Installation Dependencies</title>
<!-- <para>(Last checked against version &dejagnu-depversion;.)</para> -->
<para>Dejagnu depends on: Bash, Binutils, Coreutils, Diffutils,
GCC, Glibc, Grep, Make, Sed.</para>
</sect2>

View File

@ -0,0 +1,8 @@
<sect2><title>&nbsp;</title><para>&nbsp;</para></sect2>
<sect2><title>Short description</title>
<para><command>runtest</command> is the wrapper script that finds the proper
expect shell and then runs DejaGnu.</para>
</sect2>

View File

@ -0,0 +1,6 @@
<sect2>
<title>Official Download Location</title>
<literallayout>DejaGnu (&dejagnu-version;):
<ulink url="ftp://ftp.gnu.org/gnu/dejagnu/"/></literallayout>
</sect2>

View File

@ -0,0 +1,10 @@
<sect2><title>Contents of DejaGnu</title>
<!-- <para>(Last checked against version &dejagnu-contversion;.)</para> -->
<para>The DejaGnu package contains a framework for testing other programs.</para>
<para><emphasis>Installed program</emphasis>: runtest</para>
</sect2>

View File

@ -0,0 +1,13 @@
<sect1 id="aa-dejagnu" xreflabel="DejaGnu">
<title>DejaGnu</title>
<?dbhtml filename="dejagnu.html" dir="appendixa"?>
<para>For installation instructions see <xref linkend="ch05-dejagnu"/>.</para>
&aa-dejagnu-down;
&aa-dejagnu-shortdesc;
&aa-dejagnu-desc;
&aa-dejagnu-dep;
</sect1>

View File

@ -0,0 +1,12 @@
<sect2><title>Contents of Diffutils</title>
<!-- <para>(Last checked against version &diffutils-contversion;.)</para> -->
<para>The programs from this package show you the differences between two
files or directories. It's most common use is to create software
patches.</para>
<para><emphasis>Installed programs</emphasis>: cmp, diff, diff3 and sdiff</para>
</sect2>

View File

@ -0,0 +1,19 @@
<sect2><title>Contents of E2fsprogs</title>
<!-- <para>(Last checked against version &e2fsprogs-contversion;.)</para> -->
<para>E2fsprogs provides the filesystem utilities for use with the
ext2 filesystem. It also supports the ext3 filesystem with journaling
support.</para>
<para><emphasis>Installed programs</emphasis>: badblocks, blkid, chattr,
compile_et, debugfs, dumpe2fs, e2fsck, e2image, e2label, findfs, fsck,
fsck.ext2, fsck.ext3, logsave, lsattr, mk_cmds, mke2fs, mkfs.ext2, mkfs.ext3,
mklost+found, resize2fs, tune2fs and uuidgen.</para>
<para><emphasis>Installed libraries</emphasis>: libblkid.[a,so],
libcom_err.[a,so], libe2p.[a,so], libext2fs.[a,so], libss.[a,so] and
libuuid.[a,so]</para>
</sect2>

View File

@ -0,0 +1,10 @@
<sect2><title>Contents of Ed</title>
<!-- <para>(Last checked against version &ed-contversion;.)</para> -->
<para>GNU ed is an 8-bit clean, POSIX-compliant line editor.</para>
<para><emphasis>Installed programs</emphasis>: ed and red (link to ed)</para>
</sect2>

View File

@ -0,0 +1,12 @@
<sect2><title>&nbsp;</title><para>&nbsp;</para></sect2>
<sect2>
<title>Expect Installation Dependencies</title>
<!-- <para>(Last checked against version &expect-depversion;.)</para> -->
<para>Expect depends on: Bash, Binutils, Coreutils, Diffutils,
GCC, Glibc, Grep, Make, Sed, Tcl.</para>
</sect2>

View File

@ -0,0 +1,8 @@
<sect2><title>&nbsp;</title><para>&nbsp;</para></sect2>
<sect2><title>Short description</title>
<para><command>expect</command> "talks" to other interactive programs according
to a script.</para>
</sect2>

View File

@ -0,0 +1,9 @@
<sect2>
<title>Official Download Location</title>
<literallayout>Expect (&expect-version;):
<ulink url="http://expect.nist.gov/src/"/>
Expect Spawn Patch:
<ulink url="&patches-root;&expect-patch;"/></literallayout>
</sect2>

View File

@ -0,0 +1,13 @@
<sect2><title>Contents of Expect</title>
<!-- <para>(Last checked against version &expect-contversion;.)</para> -->
<para>The Expect package provides a program that performs programmed dialogue
with other interactive programs.</para>
<para><emphasis>Installed program</emphasis>: expect</para>
<para><emphasis>Installed library</emphasis>: libexpect5.39.a</para>
</sect2>

View File

@ -0,0 +1,13 @@
<sect1 id="aa-expect" xreflabel="expect">
<title>Expect</title>
<?dbhtml filename="expect.html" dir="appendixa"?>
<para>For installation instructions see <xref linkend="ch05-expect"/>.</para>
&aa-expect-down;
&aa-expect-shortdesc;
&aa-expect-desc;
&aa-expect-dep;
</sect1>

View File

@ -0,0 +1,12 @@
<sect2><title>Contents of File</title>
<!-- <para>(Last checked against version &file-contversion;.)</para> -->
<para>File is a utility used to determine file types.</para>
<para><emphasis>Installed program</emphasis>: file</para>
<para><emphasis>Installed library</emphasis>: libmagic.[a,so]</para>
</sect2>

View File

@ -0,0 +1,14 @@
<sect2><title>Contents of Findutils</title>
<!-- <para>(Last checked against version &findutils-contversion;.)</para> -->
<para>The Findutils package contains programs to find files, either
on-the-fly (by doing a live recursive search through directories and only
showing files that match the specifications) or by searching through a
database.</para>
<para><emphasis>Installed programs</emphasis>: bigram, code, find, frcode,
locate, updatedb and xargs</para>
</sect2>

View File

@ -0,0 +1,14 @@
<sect2><title>Contents of Flex</title>
<!-- <para>(Last checked against version &flex-contversion;.)</para> -->
<para>The Flex package is used to generate programs which recognize
patterns in text.</para>
<para><emphasis>Installed programs</emphasis>: flex, flex++ (link to flex)
and lex</para>
<para><emphasis>Installed library</emphasis>: libfl.a</para>
</sect2>

View File

@ -0,0 +1,11 @@
<sect2><title>Contents of Gawk</title>
<!-- <para>(Last checked against version &gawk-contversion;.)</para> -->
<para>Gawk is an awk implementation that is used to manipulate text
files.</para>
<para><emphasis>Installed programs</emphasis>: awk (link to gawk), gawk,
gawk-&gawk-version;, grcat, igawk, pgawk, pgawk-&gawk-version; and pwcat</para>
</sect2>

View File

@ -0,0 +1,15 @@
<sect2><title>Contents of GCC</title>
<!-- <para>(Last checked against version &gcc-contversion;.)</para> -->
<para>The GCC package contains the GNU compiler collection, including
the C and C++ compilers.</para>
<para><emphasis>Installed programs</emphasis>: c++, cc (link to gcc),
cc1, cc1plus, collect2, cpp, g++, gcc, gccbug, and gcov</para>
<para><emphasis>Installed libraries</emphasis>: libgcc.a, libgcc_eh.a,
libgcc_s.so, libstdc++.[a,so] and libsupc++.a</para>
</sect2>

View File

@ -0,0 +1,19 @@
<sect2><title>Contents of Gettext</title>
<!-- <para>(Last checked against version &gettext-contversion;.)</para> -->
<para>The Gettext package is used for internationalization and
localization. Programs can be compiled with Native Language Support
(NLS) which enable them to output messages in the user's native
language.</para>
<para><emphasis>Installed programs</emphasis>: autopoint, config.charset,
config.rpath, gettext, gettextize, hostname, msgattrib, msgcat, msgcmp,
msgcomm, msgconv, msgen, msgexec, msgfilter, msgfmt, msggrep, msginit,
msgmerge, msgunfmt, msguniq, ngettext, project-id, team-address, trigger,
urlget, user-email and xgettext</para>
<para><emphasis>Installed libraries</emphasis>: libasprintf[a,so],
libgettextlib[a,so], libgettextpo[a,so] and libgettextsrc[a,so]</para>
</sect2>

View File

@ -0,0 +1,23 @@
<sect2><title>Contents of Glibc</title>
<!-- <para>(Last checked against version &glibc-contversion;.)</para> -->
<para>Glibc is the C library that provides the system calls and basic
functions such as open, malloc, printf, etc. The C library is used by all
dynamically linked programs.</para>
<para><emphasis>Installed programs</emphasis>: catchsegv, gencat, getconf,
getent, glibcbug, iconv, iconvconfig, ldconfig, ldd, lddlibc4, locale,
localedef, mtrace, nscd, nscd_nischeck, pcprofiledump, pt_chown, rpcgen,
rpcinfo, sln, sprof, tzselect, xtrace, zdump and zic</para>
<para><emphasis>Installed libraries</emphasis>: ld.so, libBrokenLocale.[a,so],
libSegFault.so, libanl.[a,so], libbsd-compat.a, libc.[a,so], libc_nonshared.a,
libcrypt.[a,so], libdl.[a,so], libg.a, libieee.a, libm.[a,so], libmcheck.a,
libmemusage.so, libnsl.a, libnss_compat.so, libnss_dns.so, libnss_files.so,
libnss_hesiod.so, libnss_nis.so, libnss_nisplus.so, libpcprofile.so,
libpthread.[a,so], libresolv.[a,so], librpcsvc.a, librt.[a,so], libthread_db.so
and libutil.[a,so]</para>
</sect2>

View File

@ -0,0 +1,12 @@
<sect2><title>Contents of Grep</title>
<!-- <para>(Last checked against version &grep-contversion;.)</para> -->
<para>Grep is a program used to print lines from a file matching a
specified pattern.</para>
<para><emphasis>Installed programs</emphasis>: egrep (link to grep), fgrep
(link to grep) and grep</para>
</sect2>

View File

@ -0,0 +1,17 @@
<sect2><title>Contents of Groff</title>
<!-- <para>(Last checked against version &groff-contversion;.)</para> -->
<para>The Groff package includes several text processing programs
for text formatting. Groff translates standard text and special
commands into formatted output, such as what you see in a manual
page.</para>
<para><emphasis>Installed programs</emphasis>: addftinfo, afmtodit, eqn,
eqn2graph, geqn (link to eqn), grn, grodvi, groff, groffer, grog, grolbp,
grolj4, grops, grotty, gtbl (link to tbl), hpftodit, indxbib, lkbib,
lookbib, mmroff, neqn, nroff, pfbtops, pic, pic2graph, post-grohtml,
pre-grohtml, refer, soelim, tbl, tfmtodit, troff and zsoelim (link to
soelim)</para>
</sect2>

View File

@ -0,0 +1,12 @@
<sect2><title>&nbsp;</title><para>&nbsp;</para></sect2>
<sect2>
<title>Grub Installation Dependencies</title>
<!-- <para>(Last checked against version &grub-depversion;.)</para> -->
<para>Grub depends on: Bash, Binutils, Coreutils, Diffutils,
GCC, Glibc, Grep, Make, Ncurses, Sed.</para>
</sect2>

View File

@ -0,0 +1,18 @@
<sect2><title>&nbsp;</title><para>&nbsp;</para></sect2>
<sect2><title>Short descriptions</title>
<para><command>grub</command> is the GRand Unified Bootloader's command
shell.</para>
<para><command>grub-install</command> installs GRUB on the given device.</para>
<para><command>grub-md5-crypt</command> encrypts a password in MD5
format.</para>
<para><command>grub-terminfo</command> generates a terminfo command from a
terminfo name. It can be used if you have an uncommon terminal.</para>
<para><command>mbchk</command> checks the format of a multiboot kernel.</para>
</sect2>

View File

@ -0,0 +1,9 @@
<sect2>
<title>Official Download Location</title>
<literallayout>Grub (&grub-version;):
<ulink url="ftp://alpha.gnu.org/pub/gnu/grub/"/>
Grub Gcc33 Patch:
<ulink url="&patches-root;&grub-patch;"/></literallayout>
</sect2>

View File

@ -0,0 +1,10 @@
<sect2><title>Contents of Grub</title>
<!-- <para>(Last checked against version &grub-contversion;.)</para> -->
<para>The Grub package contains a bootloader.</para>
<para><emphasis>Installed programs</emphasis>: grub, grub-install,
grub-md5-crypt, grub-terminfo and mbchk</para>
</sect2>

View File

@ -0,0 +1,13 @@
<sect1 id="aa-grub" xreflabel="Grub">
<title>Grub</title>
<?dbhtml filename="grub.html" dir="appendixa"?>
<para>For installation instructions see <xref linkend="ch06-grub"/>.</para>
&aa-grub-down;
&aa-grub-shortdesc;
&aa-grub-desc;
&aa-grub-dep;
</sect1>

View File

@ -0,0 +1,12 @@
<sect2><title>Contents of Gzip</title>
<!-- <para>(Last checked against version &gzip-contversion;.)</para> -->
<para>The Gzip package contains programs to compress and decompress files
using the Lempel-Ziv coding (LZ77).</para>
<para><emphasis>Installed programs</emphasis>: gunzip (link to gzip), gzexe,
gzip, uncompress (link to gunzip), zcat (link to gzip), zcmp, zdiff,
zegrep, zfgrep, zforce, zgrep, zless, zmore and znew</para>
</sect2>

View File

@ -0,0 +1,12 @@
<sect2><title>&nbsp;</title><para>&nbsp;</para></sect2>
<sect2>
<title>Inetutils Installation Dependencies</title>
<!-- <para>(Last checked against version &inetutils-depversion;.)</para> -->
<para>Inetutils depends on: Bash, Binutils, Coreutils,
Diffutils, GCC, Glibc, Grep, Make, Ncurses, Sed.</para>
</sect2>

View File

@ -0,0 +1,23 @@
<sect2><title>&nbsp;</title><para>&nbsp;</para></sect2>
<sect2><title>Short descriptions</title>
<para><command>ftp</command> is the ARPANET file transfer program.</para>
<para><command>ping</command> sends echo-request packets and reports how
long the replies take.</para>
<para><command>rcp</command> does remote file copy.</para>
<para><command>rlogin</command> does remote login.</para>
<para><command>rsh</command> runs a remote shell.</para>
<para><command>talk</command> is used to chat up another user.</para>
<para><command>telnet</command> is an interface to the TELNET protocol.</para>
<para><command>tftp</command> is a trivial file transfer program.</para>
</sect2>

View File

@ -0,0 +1,9 @@
<sect2><title>&nbsp;</title><para>&nbsp;</para></sect2>
<sect2>
<title>Official Download Location</title>
<literallayout>Inetutils (&inetutils-version;):
<ulink url="http://freshmeat.net/projects/inetutils/"/></literallayout>
</sect2>

View File

@ -0,0 +1,10 @@
<sect2><title>Contents of Inetutils</title>
<!-- <para>(Last checked against version &inetutils-contversion;.)</para> -->
<para>The Inetutils package contains network clients and servers.</para>
<para><emphasis>Installed programs</emphasis>: ftp, ping, rcp, rlogin, rsh,
talk, telnet and tftp</para>
</sect2>

View File

@ -0,0 +1,12 @@
<sect1 id="aa-inetutils" xreflabel="Inetutils">
<title>Inetutils</title>
<?dbhtml filename="inetutils.html" dir="appendixa"?>
<para>For installation instructions see <xref linkend="ch06-inetutils"/>.</para>
&aa-inetutils-down;
&aa-inetutils-shortdesc;
&aa-inetutils-desc;
&aa-inetutils-dep;
</sect1>

View File

@ -0,0 +1,15 @@
<sect2><title>Contents of Kbd</title>
<!-- <para>(Last checked against version &kbd-contversion;.)</para> -->
<para>Kbd contains keytable files and keyboard utilities.</para>
<para><emphasis>Installed programs</emphasis>: chvt, deallocvt, dumpkeys,
fgconsole, getkeycodes, getunimap, kbd_mode, kbdrate, loadkeys, loadunimap,
mapscrn, openvt, psfaddtable (link to psfxtable), psfgettable (link to
psfxtable), psfstriptable (link to psfxtable), psfxtable, resizecons,
setfont, setkeycodes, setleds, setlogcons, setmetamode, setvesablank,
showconsolefont, showkey, unicode_start and unicode_stop</para>
</sect2>

View File

@ -0,0 +1,16 @@
<sect2><title>Contents of Linux</title>
<!-- <para>(Last checked against version &kernel-contversion;.)</para> -->
<para>The Linux kernel is at the core of every Linux system. It's what makes
Linux tick. When a computer is turned on and boots a Linux system, the
very first piece of Linux software that gets loaded is the kernel. The
kernel initializes the system's hardware components: serial ports, parallel
ports, sound cards, network cards, IDE controllers, SCSI controllers and a
lot more. In a nutshell the kernel makes the hardware available so that the
software can run.</para>
<para><emphasis>Installed files</emphasis>: the kernel and the kernel
headers</para>
</sect2>

View File

@ -0,0 +1,13 @@
<sect2><title>Contents of Less</title>
<!-- <para>(Last checked against version &less-contversion;.)</para> -->
<para>Less is a file pager, or text viewer. It displays the contents
of a file, or stream, and has the ability to scroll. Less has a few
features not included in the <userinput>more</userinput> pager,
such as the ability to scroll backwards.</para>
<para><emphasis>Installed programs</emphasis>: less, lessecho and lesskey</para>
</sect2>

View File

@ -0,0 +1,8 @@
<sect2><title>&nbsp;</title><para>&nbsp;</para></sect2>
<sect2>
<title>Lfs-Utils Installation Dependencies</title>
<literallayout>(No dependencies checked yet.)</literallayout>
</sect2>

View File

@ -0,0 +1,20 @@
<sect2><title>&nbsp;</title><para>&nbsp;</para></sect2>
<sect2><title>Short descriptions</title>
<para><command>mktemp</command> creates temporary files in a secure manner.
It is used in scripts.</para>
<para><command>tempfile</command> creates temporary files in a less secure
manner than <userinput>mktemp</userinput>. It is installed for
backwards-compatibility.</para>
<para>The <command>http-get</command> script takes advantage of a little known
feature of <userinput>bash</userinput> called "net redirection". It is used to
download from websites without using any other programs.</para>
<para><command>iana-net</command> uses the <userinput>http-get</userinput>
script to simplify the process of procuring IANA's services and protocols
configuration files.</para>
</sect2>

View File

@ -0,0 +1,9 @@
<sect2><title>&nbsp;</title><para>&nbsp;</para></sect2>
<sect2>
<title>Official Download Location</title>
<literallayout>Lfs-utils (&lfs-utils-version;):
<ulink url="http://www.linuxfromscratch.org/~winkie/downloads/lfs-utils/"/></literallayout>
</sect2>

View File

@ -0,0 +1,14 @@
<sect2><title>Contents of Lfs-Utils</title>
<!-- <para>(Last checked against version &lfs-utils-contversion;.)</para> -->
<para>The Lfs-Utils package contains some miscellaneous programs used by
various packages, but are not large enough to warrant their own
individual package.</para>
<para><emphasis>Installed programs</emphasis>: mktemp, tempfile, http-get
and iana-net</para>
<para><emphasis>Installed files</emphasis>: protocols, services</para>
</sect2>

View File

@ -0,0 +1,13 @@
<sect1 id="aa-lfs-utils" xreflabel="Lfs-Utils">
<title>Lfs-Utils</title>
<?dbhtml filename="lfs-utils.html" dir="appendixa"?>
<para>For installation instructions see <xref linkend="ch06-lfs-utils"/>.</para>
&aa-lfs-utils-down;
&aa-lfs-utils-shortdesc;
&aa-lfs-utils-desc;
&aa-lfs-utils-dep;
</sect1>

View File

@ -0,0 +1,14 @@
<sect2><title>Contents of Libtool</title>
<!-- <para>(Last checked against version &libtool-contversion;.)</para> -->
<para>GNU libtool is a generic library support script. Libtool hides
the complexity of using shared libraries behind a consistent,
portable interface.</para>
<para><emphasis>Installed programs</emphasis>: libtool and libtoolize</para>
<para><emphasis>Installed libraries</emphasis>: libltdl.[a,so].</para>
</sect2>

View File

@ -0,0 +1,15 @@
<sect2><title>Contents of M4</title>
<!-- <para>(Last checked against version &m4-contversion;.)</para> -->
<para>M4 is a macro processor. It copies input to output, expanding
macros as it goes. Macros are either built-in or user-defined and can
take any number of arguments. Besides just doing macro expansion, m4
has built-in functions for including named files, running Unix
commands, doing integer arithmetic, manipulating text in various ways,
recursion, etc. The m4 program can be used either as a front-end to a
compiler or as a macro processor in its own right.</para>
<para><emphasis>Installed program</emphasis>: m4</para>
</sect2>

View File

@ -0,0 +1,11 @@
<sect2><title>Contents of Make</title>
<!-- <para>(Last checked against version &make-contversion;.)</para> -->
<para>Make determines, automatically, which pieces of a large program need
to be recompiled and issues the commands to recompile them.</para>
<para><emphasis>Installed program</emphasis>: make</para>
</sect2>

View File

@ -0,0 +1,13 @@
<sect2><title>Contents of MAKEDEV</title>
<!-- <para>(Last checked against version &makedev-contversion;.)</para> -->
<para>The MAKEDEV script creates the static device nodes which
usually reside in the <filename class="directory">/dev</filename>
directory. Detailed information about device nodes may be found
in the <filename>Documentation/devices.txt</filename> file under
the Linux kernel source tree.</para>
<para><emphasis>Installed script</emphasis>: MAKEDEV</para>
</sect2>

View File

@ -0,0 +1,11 @@
<sect2><title>Contents of Man</title>
<!-- <para>(Last checked against version &man-contversion;.)</para> -->
<para>Man is a man pager.</para>
<para><emphasis>Installed programs</emphasis>: apropos, makewhatis, man,
man2dvi, man2html and whatis</para>
</sect2>

View File

@ -0,0 +1,13 @@
<sect2><title>Contents of Man-pages</title>
<!-- <para>(Last checked against version &man-pages-contversion;.)</para> -->
<para>The Man-pages package contains over 1200 manual pages. This
documentation details the C and C++ functions, describes a few
important device files and provides documents which would otherwise
be missing from other packages.</para>
<para><emphasis>Installed files</emphasis>: various manual pages</para>
</sect2>

View File

@ -0,0 +1,14 @@
<sect2><title>Contents of Modutils</title>
<!-- <para>(Last checked against version &modutils-contversion;.)</para> -->
<para>The Modutils package contains programs that you can use to work with
kernel modules.</para>
<para><emphasis>Installed programs</emphasis>: depmod, genksyms, insmod,
insmod_ksymoops_clean, kallsyms (link to insmod), kernelversion, ksyms
(link to insmod), lsmod (link to insmod), modinfo, modprobe (link to insmod)
and rmmod (link to insmod)</para>
</sect2>

View File

@ -0,0 +1,16 @@
<sect2><title>Contents of Ncurses</title>
<!-- <para>(Last checked against version &ncurses-contversion;.)</para> -->
<para>The Ncurses package provides character and terminal handling
libraries, including panels and menus.</para>
<para><emphasis>Installed programs</emphasis>: captoinfo (link to tic), clear,
infocmp, infotocap (link to tic), reset (link to tset), tack, tic, toe, tput
and tset</para>
<para><emphasis>Installed libraries</emphasis>: libcurses.[a,so] (link to
libncurses.[a,so]), libform.[a,so], libmenu.[a,so], libncurses++.a,
libncurses.[a,so], libpanel.[a,so]</para>
</sect2>

View File

@ -0,0 +1,14 @@
<sect2><title>Contents of Net-tools</title>
<!-- <para>(Last checked against version &net-tools-contversion;.)</para> -->
<para>The Net-tools package contains a collection of programs
which form the base of Linux networking.</para>
<para><emphasis>Installed programs</emphasis>: arp, dnsdomainname (link to
hostname), domainname (link to hostname), hostname, ifconfig, nameif, netstat,
nisdomainname (link to hostname), plipconfig, rarp, route, slattach and
ypdomainname (link to hostname)</para>
</sect2>

View File

@ -0,0 +1,12 @@
<sect2><title>Contents of Patch</title>
<!-- <para>(Last checked against version &patch-contversion;.)</para> -->
<para>The patch program modifies a file according to a patch file. A patch
file usually is a list, created by the diff program, that contains
instructions on how an original file needs to be modified.</para>
<para><emphasis>Installed program</emphasis>: patch</para>
</sect2>

View File

@ -0,0 +1,17 @@
<sect2><title>Contents of Perl</title>
<!-- <para>(Last checked against version &perl-contversion;.)</para> -->
<para>The Perl package contains perl, the Practical Extraction
and Report Language. Perl combines some of the best features of C,
sed, awk and sh into one powerful language.</para>
<para><emphasis>Installed programs</emphasis>: a2p, c2ph, dprofpp, enc2xs,
find2perl, h2ph, h2xs, libnetcfg, perl, perl&perl-version; (link to perl),
perlbug, perlcc, perldoc, perlivp, piconv, pl2pm, pod2html, pod2latex, pod2man,
pod2text, pod2usage, podchecker, podselect, psed (link to s2p), pstruct (link
to c2ph), s2p, splain and xsubpp</para>
<para><emphasis>Installed libraries</emphasis>: (too many to name)</para>
</sect2>

View File

@ -0,0 +1,13 @@
<sect2><title>Contents of Procinfo</title>
<!-- <para>(Last checked against version &procinfo-contversion;.)</para> -->
<para>The procinfo program gathers system data, such as memory
usage and IRQ numbers, from the <filename>/proc</filename>
directory and formats this data in a meaningful way.</para>
<para><emphasis>Installed programs</emphasis>: lsdev, procinfo and
socklist</para>
</sect2>

View File

@ -0,0 +1,15 @@
<sect2><title>Contents of Procps</title>
<!-- <para>(Last checked against version &procps-contversion;.)</para> -->
<para>The Procps package provides programs to monitor and
halt system processes. Procps gathers information about
processes via the <filename>/proc</filename> directory.</para>
<para><emphasis>Installed programs</emphasis>: free, kill, pgrep, pkill,
pmap, ps, skill, snice, sysctl, tload, top, uptime, vmstat, w and watch</para>
<para><emphasis>Installed library</emphasis>: libproc.so</para>
</sect2>

View File

@ -0,0 +1,11 @@
<sect2><title>Contents of Psmisc</title>
<!-- <para>(Last checked against version &psmisc-contversion;.)</para> -->
<para>The Psmisc package contains three programs which help
manage the <filename>/proc</filename> directory.</para>
<para><emphasis>Installed programs</emphasis>: fuser, killall and pstree</para>
</sect2>

View File

@ -0,0 +1,12 @@
<sect2><title>Contents of Sed</title>
<!-- <para>(Last checked against version &sed-contversion;.)</para> -->
<para>sed is a stream editor. A stream editor is used to perform basic text
transformations on an input stream (a file or input from a
pipeline).</para>
<para><emphasis>Installed program</emphasis>: sed</para>
</sect2>

View File

@ -0,0 +1,14 @@
<sect2><title>Contents of Shadow</title>
<!-- <para>(Last checked against version &shadow-contversion;.)</para> -->
<para>The Shadow package was created to strengthen the security
of system passwords.</para>
<para><emphasis>Installed programs</emphasis>: chage, chfn, chpasswd, chsh,
dpasswd, expiry, faillog, gpasswd, groupadd, groupdel, groupmod, groups, grpck,
grpconv, grpunconv, lastlog, login, logoutd, mkpasswd, newgrp, newusers,
passwd, pwck, pwconv, pwunconv, sg (link to newgrp), useradd, userdel, usermod,
vigr (link to vipw) and vipw</para>
</sect2>

View File

@ -0,0 +1,11 @@
<sect2><title>Contents of Sysklogd</title>
<!-- <para>(Last checked against version &sysklogd-contversion;.)</para> -->
<para>The Sysklogd package contains programs for recording
system log messages, such as those reported by the kernel.</para>
<para><emphasis>Installed programs</emphasis>: klogd and syslogd</para>
</sect2>

View File

@ -0,0 +1,14 @@
<sect2><title>Contents of Sysvinit</title>
<!-- <para>(Last checked against version &sysvinit-contversion;.)</para> -->
<para>The Sysvinit package contains programs to control the
startup, running and shutdown of all other programs.</para>
<para><emphasis>Installed programs</emphasis>: halt, init, killall5, last,
lastb (link to last), mesg, pidof (link to killall5), poweroff (link to halt),
reboot (link to halt), runlevel, shutdown, sulogin, telinit (link to init),
utmpdump and wall</para>
</sect2>

View File

@ -0,0 +1,10 @@
<sect2><title>Contents of Tar</title>
<!-- <para>(Last checked against version &tar-contversion;.)</para> -->
<para>Tar is an archiving program designed to store and extract
files from an archive file known as a tar file.</para>
<para><emphasis>Installed programs</emphasis>: rmt and tar</para>
</sect2>

View File

@ -0,0 +1,12 @@
<sect2><title>&nbsp;</title><para>&nbsp;</para></sect2>
<sect2>
<title>Tcl Installation Dependencies</title>
<!-- <para>(Last checked against version &tcl-depversion;.)</para> -->
<para>Tcl depends on: Bash, Binutils, Coreutils, Diffutils,
GCC, Glibc, Grep, Make, Sed.</para>
</sect2>

View File

@ -0,0 +1,9 @@
<sect2><title>&nbsp;</title><para>&nbsp;</para></sect2>
<sect2><title>Short description</title>
<para><command>tclsh8.4</command> is the Tcl command shell.</para>
<para><command>libtcl8.4.so</command> is the Tcl library.</para>
</sect2>

View File

@ -0,0 +1,7 @@
<sect2>
<title>Official Download Location</title>
<literallayout>Tcl (&tcl-version;):
<ulink url="http://download.sourceforge.net/tcl/"/>
<ulink url="ftp://download.sourceforge.net/pub/sourceforge/tcl/"/></literallayout>
</sect2>

View File

@ -0,0 +1,13 @@
<sect2><title>Contents of Tcl</title>
<!-- <para>(Last checked against version &tcl-contversion;.)</para> -->
<para>The Tcl package contains the Tool Command Language.</para>
<para><emphasis>Installed programs</emphasis>: tclsh (link to tclsh8.4),
tclsh8.4</para>
<para><emphasis>Installed library</emphasis>: libtcl8.4.so</para>
</sect2>

View File

@ -0,0 +1,13 @@
<sect1 id="aa-tcl" xreflabel="Tcl">
<title>Tcl</title>
<?dbhtml filename="tcl.html" dir="appendixa"?>
<para>For installation instructions see <xref linkend="ch05-tcl"/>.</para>
&aa-tcl-down;
&aa-tcl-shortdesc;
&aa-tcl-desc;
&aa-tcl-dep;
</sect1>

View File

@ -0,0 +1,12 @@
<sect2><title>Contents of Texinfo</title>
<!-- <para>(Last checked against version &texinfo-contversion;.)</para> -->
<para>The Texinfo package contains programs used for reading,
writing and converting Info documents, which provide system
documentation.</para>
<para><emphasis>Installed programs</emphasis>: info, infokey, install-info,
makeinfo, texi2dvi and texindex</para>
</sect2>

View File

@ -0,0 +1,20 @@
<sect2><title>Contents of Util-linux</title>
<!-- <para>(Last checked against version &util-linux-contversion;.)</para> -->
<para>The Util-linux package contains a number of miscellaneous
utility programs. Some of the more prominent utilities are used
to mount, unmount, format, partition and manage disk drives,
open tty ports and fetch kernel messages.</para>
<para><emphasis>Installed programs</emphasis>: agetty, arch, blockdev, cal,
cfdisk, chkdupexe, col, colcrt, colrm, column, ctrlaltdel, cytune, ddate,
dmesg, elvtune, fdformat, fdisk, fsck.cramfs, fsck.minix, getopt, hexdump,
hwclock, ipcrm, ipcs, isosize, kill, line, logger, look, losetup, mcookie, mkfs,
mkfs.bfs, mkfs.cramfs, mkfs.minix, mkswap, more, mount, namei, parse.bash,
parse.tcsh, pg, pivot_root, ramsize (link to rdev), raw, rdev, readprofile,
rename, renice, rev, rootflags (link to rdev), script, setfdprm, setsid,
setterm, sfdisk, swapoff (link to swapon), swapon, test.bash, test.tcsh,
tunelp, ul, umount, vidmode (link to rdev), whereis and write</para>
</sect2>

View File

@ -0,0 +1,14 @@
<sect2><title>Contents of Vim</title>
<!-- <para>(Last checked against version &vim-contversion;.)</para> -->
<para>The Vim package contains a configurable text editor built to
enable efficient text editing.</para>
<para><emphasis>Installed programs</emphasis>: efm_filter.pl, efm_perl.pl, ex
(link to vim), less.sh, mve.awk, pltags.pl, ref, rview (link to vim), rvim
(link to vim), shtags.pl, tcltags, vi (link to vim), view (link to vim), vim,
vim132, vim2html.pl, vimdiff (link to vim), vimm, vimspell.sh, vimtutor
and xxd</para>
</sect2>

View File

@ -0,0 +1,11 @@
<sect2><title>Contents of Zlib</title>
<!-- <para>(Last checked against version &zlib-contversion;.)</para> -->
<para>The Zlib package contains the libz library, which is used by some
programs for its compression and uncompression functions.</para>
<para><emphasis>Installed libraries</emphasis>: libz[a,so]</para>
</sect2>

View File

@ -0,0 +1,36 @@
&bookinfo;
<dedication>
<title>Dedication</title>
<para>This book is dedicated to my loving and supportive wife
<emphasis>Beverly Beekmans</emphasis>.</para>
</dedication>
&preface;
<part id="part1">
<title>Part I - Introduction</title>
&chapter01;
&chapter02;
</part>
<part id="part2">
<title>Part II - Preparing for the build</title>
&chapter03;
&chapter04;
&chapter05;
</part>
<part id="part3">
<title>Part III - Building the LFS system</title>
&chapter06;
&chapter07;
&chapter08;
&chapter09;
</part>
<part id="part4">
<title>Part IV - Appendices</title>
&appendixa;
&appendixb;
</part>

View File

@ -0,0 +1,60 @@
<bookinfo>
<title>Linux From Scratch</title>
<subtitle>Version &version;</subtitle>
<authorgroup>
<author><firstname>Gerard</firstname><surname>Beekmans</surname></author>
</authorgroup>
<copyright id="copyright">
<year>1999-2003</year>
<holder>Gerard Beekmans</holder>
</copyright>
<abstract>
<para>This book describes the process of creating a Linux system from
scratch, using nothing but the sources of the required software.</para>
</abstract>
<legalnotice>
<para>Copyright (c) 1999-2003, Gerard Beekmans</para>
<para>All rights reserved.</para>
<para>Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:</para>
<itemizedlist>
<listitem><para>Redistributions in any form must retain the above copyright
notice, this list of conditions and the following disclaimer.</para></listitem>
<listitem><para>Neither the name of "Linux From Scratch" nor the names of
its contributors may be used to endorse or promote products derived from
this material without specific prior written permission.</para></listitem>
<listitem><para>Any material derived from Linux From Scratch must contain
a reference to the "Linux From Scratch" project.</para></listitem>
</itemizedlist>
<para>THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS
IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</para>
</legalnotice>
</bookinfo>

View File

@ -0,0 +1,57 @@
<sect1 id="ch02-aboutdependencies">
<title>About dependencies</title>
<?dbhtml filename="aboutdependencies.html" dir="chapter02"?>
<!-- Leave this file in the repo until we figure out finally what to do with
dependencies -->
<para>There are a few ways to compile a list of a package's installation
dependencies. What we consider the best way is using the
<command>strace</command> program available at <ulink
url="http://www.wi.leidenuniv.nl/~wichert/strace/"/>.</para>
<para><command>strace</command> is a program that provides a trace of all
system calls made by another program. One of the most useful system calls
to trace when figuring out dependencies is the <emphasis>execve(2)</emphasis>
system call, which is used to execute programs (see its man page for
all the details). Whenever you run a program, be it from a shell or via a
configure script or Makefile file, the execve call is made. If you trace
these calls, you will know what programs were executed behind the
scenes.</para>
<para>Here is a line of output from running a configure script:</para>
<screen>19580 execve("/bin/rm", ["rm", "-f", "conf19538", "conf19538.exe", "conf19538.file"], [/* 26 vars */]) = 0</screen>
<para>This line tells us that the <command>/bin/rm</command> program was
run with a PID of 19580, which command line parameters it was given (rm -f
conf195838 conf19538.exe conf19538.file) and its exit value (0).</para>
<para>For dependency purposes all we care about is that
<command>/bin/rm</command> was run during the configure script, so this is
an installation dependency. Without <command>rm</command>, the script
wouldn't be able to run properly.</para>
<para>Unfortunately, this method is not foolproof. Configure scripts check
for the presense of many programs, but not all of them are considered real
dependencies. For instance, configure scripts may check for the presence of
the <command>autoconf</command> program. It will be listed in the strace
output, but it's not a real installation dependency. A package will in most
if not all cases install just fine without that program. There are other
such false positives.</para>
<para>This means automatic dependency gathering is never accurate. You will
always need to validate the list and figure out the false positives. In
some (rare) cases autoconf might be a real dependency, so you
can't simply ignore all autoconf entries. A manual validation really is a
requirement for an accurate list.</para>
<para>This book is not so verbose as to list exactly which program from which
package is required for a successful installation (we used to, but it had
become too much work to maintain it). The book will contain simply the
names of packages you need to have installed. If you need the verbosity
in the form of "package a needs file b and c from package d", have a look
at &lt;enter URL when it's available&gt;.</para>
</sect1>

View File

@ -0,0 +1,32 @@
<sect1 id="ch02-abouttestsuites">
<title>About the test suites</title>
<?dbhtml filename="abouttestsuites.html" dir="chapter02"?>
<para>Most packages provide a test suite. Running the test suite for a newly
built package is generally a good idea as it can provide a nice sanity check
that everything compiled correctly. A test suite that passes its set of
checks usually proves that the package is functioning mostly as the developer
intended. It does not, however, guarantee that the package is totally bug
free.</para>
<para>Some test suites are more important than others. For example, the test
suites for the core toolchain packages -- GCC, Binutils, and Glibc (the C
library) -- are of the utmost importance due to their central role in a
properly functioning system. But be warned, the test suites for GCC and Glibc
can take a very long period of time to complete, especially on slower
hardware.</para>
<para>As you progress through the book and encounter the build commands to
run the various test suites, we'll guide you on the relative importance of
the test suite in question so that you can decide for yourself whether to
run it or not.</para>
<note><para>A common problem when running the test suites for Binutils and GCC
is running out of pseudo terminals (PTYs for short). The symptom is an unusually
high number of failing tests. This can happen for any number of reasons. Most
likely is that the host system doesn't have the <emphasis>devpts</emphasis> file
system set up correctly. We'll discuss this in more detail later on in Chapter
5.</para></note>
</sect1>

View File

@ -0,0 +1,29 @@
<sect1 id="ch03-creatingfs">
<title>Creating a file system on the new partition</title>
<?dbhtml filename="creatingfs.html" dir="chapter03"?>
<para>Now that we have a blank partition, we can create a file system on it.
Most widely used in the Linux world is the second extended file system (ext2),
but with the high-capacity hard disks of today the so-called journaling file
systems are becoming increasingly popular. Here we will create an ext2 file
system, but build instructions for other file systems can be found at <ulink
url="&blfs-root;view/stable/postlfs/filesystems.html"/>.</para>
<para>To create an ext2 file system on the LFS partition run the following:</para>
<screen><userinput>mke2fs /dev/xxx</userinput></screen>
<para>Replace <filename>xxx</filename> with the name of the LFS partition
(something like <filename>hda5</filename>).</para>
<para>If you created a (new) swap partition you need to initialize it as a
swap partition too (also known as formatting, like you did above with
<userinput>mke2fs</userinput>) by running:</para>
<screen><userinput>mkswap /dev/yyy</userinput></screen>
<para>Replace <filename>yyy</filename> with the name of the swap
partition.</para>
</sect1>

View File

@ -0,0 +1,40 @@
<sect1 id="ch03-creatingpart">
<title>Creating a new partition</title>
<?dbhtml filename="creatingpart.html" dir="chapter03"?>
<para>In order to build our new Linux system, we will need some space:
an empty disk partition. If you don't have a free partition, and no room
on any of your hard disks to make one, then you could build LFS on the
same partition as the one on which your current distribution is installed.
This procedure is not recommended for your first LFS install, but if you
are short on disk space, and you feel brave, take a look at the hint at
<ulink url="&hints-root;lfs_next_to_existing_systems.txt"/>.</para>
<para>For a minimal system you will need a partition of around 1.2 GB.
This is enough to store all the source tarballs and compile all the packages.
But if you intend to use the LFS system as your primary Linux system, you
will probably want to install additional software, and will need more space
than this, probably around 2 or 3 GB.</para>
<para>As we almost never have enough RAM in our box, it is a good idea to
use a small disk partition as swap space -- this space is used by the kernel
to store seldom-used data to make room in memory for more urgent stuff.
The swap partition for your LFS system can be the same one as for your host
system, so you won't have to create another if your host system already uses
a swap partition.</para>
<para>Start a disk partitioning program such as <userinput>cfdisk</userinput>
or <userinput>fdisk</userinput> with an argument naming the hard disk upon
which the new partition must be created -- for example
<filename>/dev/hda</filename> for the primary IDE disk. Create a Linux native
partition and a swap partition, if needed. Please refer to the man pages of
<userinput>cfdisk</userinput> or <userinput>fdisk</userinput> if you don't yet
know how to use the programs.</para>
<para>Remember the designation of your new partition -- something like
<filename>hda5</filename>. This book will refer to it as the LFS partition.
If you (now) also have a swap partition, remember its designation too. These
names will later be needed for the <filename>/etc/fstab</filename> file.</para>
</sect1>

View File

@ -0,0 +1,46 @@
<sect1 id="ch03-mounting">
<title>Mounting the new partition</title>
<?dbhtml filename="mounting.html" dir="chapter03"?>
<para>Now that we've created a file system, we want to be able to access
the partition. For that, we need to mount it, and have to choose a mount
point. In this book we assume that the file system is mounted under
<filename>/mnt/lfs</filename>, but it doesn't matter what directory
you choose.</para>
<para>Choose a mount point and assign it to the LFS environment variable
by running:</para>
<screen><userinput>export LFS=/mnt/lfs</userinput></screen>
<para>Now create the mount point and mount the LFS file system by running:</para>
<screen><userinput>mkdir -p $LFS
mount /dev/xxx $LFS</userinput></screen>
<para>Replace <filename>xxx</filename> with the designation of the LFS
partition.</para>
<para>If you have decided to use multiple partitions for LFS (say one for
<filename>/</filename> and another for <filename>/usr</filename>), mount
them like this:</para>
<screen><userinput>mkdir -p $LFS
mount /dev/xxx $LFS
mkdir $LFS/usr
mount /dev/yyy $LFS/usr</userinput></screen>
<para>Of course, replace <filename>xxx</filename> and <filename>yyy</filename>
with the appropriate partition names.</para>
<para>You should also ensure that this new partition is not mounted with
permissions that are too restrictive (such as the nosuid, nodev or noatime
options). You can run the <userinput>mount</userinput> command without any
parameters to see with what options the LFS partition is mounted. If
you see nosuid, nodev or noatime, you will need to remount it.</para>
<para>Now that we've made ourselves a place to work in, we're ready to download
the packages.</para>
</sect1>

View File

@ -0,0 +1,36 @@
<sect1 id="ch05-addinguser">
<title>Adding the user lfs</title>
<?dbhtml filename="addinguser.html" dir="chapter05"?>
<para>When logged in as <emphasis>root</emphasis>, making a single mistake
can damage or even wreck your system. Therefore we recommend that you
build the packages in this chapter as an unprivileged user. You could
of course use your own user name, but to make it easier to set up a clean
work environment we'll create a new user <emphasis>lfs</emphasis> and
use this one during the installation process. As <emphasis>root</emphasis>,
issue the following commands to add the new user:</para>
<screen><userinput>useradd -s /bin/bash -m lfs
passwd lfs</userinput></screen>
<para>Now grant this new user <emphasis>lfs</emphasis> full access to
<filename class="directory">$LFS/tools</filename> by giving it ownership
of the directory:</para>
<screen><userinput>chown lfs $LFS/tools</userinput></screen>
<para>If you made a separate working directory as suggested, give user
<emphasis>lfs</emphasis> ownership of this directory too:</para>
<screen><userinput>chown lfs $LFS/sources</userinput></screen>
<para>Next, login as user <emphasis>lfs</emphasis>. This can be done via a
virtual console, through a display manager, or with the following substitute
user command:</para>
<screen><userinput>su - lfs</userinput></screen>
<para>The "<userinput>-</userinput>" instructs <userinput>su</userinput> to
start a new, clean shell.</para>
</sect1>

View File

@ -0,0 +1,118 @@
<sect1 id="ch05-binutils-pass1">
<title>Installing Binutils-&binutils-version; - Pass 1</title>
<?dbhtml filename="binutils-pass1.html" dir="chapter05"?>
<screen>Estimated build time: &binutils-time-tools-pass1;
Estimated required disk space: &binutils-compsize-tools-pass1;</screen>
&aa-binutils-shortdesc;
&aa-binutils-dep;
<sect2><title>&nbsp;</title><para>&nbsp;</para></sect2>
<sect2>
<title>Installation of Binutils</title>
<para>It is important that Binutils be the first package to get compiled,
because both Glibc and GCC perform various tests on the available linker and
assembler to determine which of their own features to enable.</para>
<note><para>Even though Binutils is an important toolchain package, we are not
going to run the test suite at this early stage. First, the test suite framework
is not yet in place and second, the programs from this first pass will soon be
overwritten by those installed in the second pass.</para></note>
<para>This package is known to behave badly when you have changed its default
optimization flags (including the -march and -mcpu options). Therefore, if
you have defined any environment variables that override default
optimizations, such as CFLAGS and CXXFLAGS, we recommend unsetting or
modifying them when building Binutils.</para>
<para>The Binutils documentation recommends building Binutils outside of the
source directory in a dedicated build directory:</para>
<screen><userinput>mkdir ../binutils-build
cd ../binutils-build</userinput></screen>
<note><para>If you want the SBU values listed in the rest of the book to be of
any use, you will have to measure the time it takes to build this package. To
achieve this easily, you could do something like:
<userinput>time { ./configure ... &amp;&amp; ... &amp;&amp; ... &amp;&amp; make install; }</userinput>.</para></note>
<para>Now prepare Binutils for compilation:</para>
<screen><userinput>../binutils-&binutils-version;/configure \
&nbsp;&nbsp;&nbsp;&nbsp;--prefix=/tools --disable-nls</userinput></screen>
<para>The meaning of the configure options:</para>
<itemizedlist>
<listitem><para><userinput>--prefix=/tools</userinput>: This tells the
configure script to prepare to install the Binutils programs in the
<filename>/tools</filename> directory.</para></listitem>
<listitem><para><userinput>--disable-nls</userinput>: This disables
internationalization (a word often shortened to i18n). We don't need this
for our static programs and <emphasis>nls</emphasis> often causes problems
when linking statically.</para></listitem>
</itemizedlist>
<para>Continue with compiling the package:</para>
<screen><userinput>make configure-host
make LDFLAGS="-all-static"</userinput></screen>
<para>The meaning of the make parameters:</para>
<itemizedlist>
<listitem><para><userinput>configure-host</userinput>: This forces all the
subdirectories to be configured immediately. A statically linked build will
fail without it. We therefore use this option to work around the
problem.</para></listitem>
<listitem><para><userinput>LDFLAGS="-all-static"</userinput>: This tells the
linker that all the Binutils programs should be linked statically. However,
strictly speaking, <userinput>"-all-static"</userinput> is first passed to the
<emphasis>libtool</emphasis> program which then passes
<userinput>"-static"</userinput> on to the linker.</para></listitem>
</itemizedlist>
<para>And install the package:</para>
<screen><userinput>make install</userinput></screen>
<para>Now prepare the linker for the "locking in" of Glibc later on:</para>
<screen><userinput>make -C ld clean
make -C ld LDFLAGS="-all-static" LIB_PATH=/tools/lib</userinput></screen>
<para>The meaning of the make parameters:</para>
<itemizedlist>
<listitem><para><userinput>-C ld clean</userinput>: This tells the make program
to remove all the compiled files, but only in the <filename>ld</filename>
subdirectory.</para></listitem>
<listitem><para><userinput>-C ld LDFLAGS="-all-static" LIB_PATH=/tools/lib</userinput>:
This option rebuilds everything in the <filename>ld</filename> subdirectory.
Specifying the LIB_PATH makefile variable on the command line allows us to
override the default value and have it point to our temporary tools location.
The value of this variable specifies the linker's default library search path.
You'll see how this preparation is used later on in the
chapter.</para></listitem>
</itemizedlist>
<!-- HACK - Force some whitespace to appease tidy -->
<literallayout></literallayout>
<warning><para>Do not yet remove the Binutils build and source directories. You
will need them again in their current state a bit further on in this
chapter.</para></warning>
<!-- HACK - Force some whitespace to appease tidy -->
<literallayout></literallayout>
</sect2>
</sect1>

View File

@ -0,0 +1,78 @@
<sect1 id="ch05-binutils-pass2">
<title>Installing Binutils-&binutils-version; - Pass 2</title>
<?dbhtml filename="binutils-pass2.html" dir="chapter05"?>
<screen>Estimated build time: &binutils-time-tools-pass2;
Estimated required disk space: &binutils-compsize-tools-pass2;</screen>
<sect2><title>&nbsp;</title><para>&nbsp;</para></sect2>
<sect2>
<title>Re-installation of Binutils</title>
<para>Create a separate build directory again:</para>
<screen><userinput>mkdir ../binutils-build
cd ../binutils-build</userinput></screen>
<para>Now prepare Binutils for compilation:</para>
<screen><userinput>../binutils-&binutils-version;/configure --prefix=/tools \
&nbsp;&nbsp;&nbsp;&nbsp;--enable-shared --with-lib-path=/tools/lib</userinput></screen>
<para>The meaning of the new configure option:</para>
<itemizedlist>
<listitem><para><userinput>--with-lib-path=/tools/lib</userinput>: This tells
the configure script to specify the default library search path. We don't want
the library search path to contain library directories from the host
system.</para></listitem>
</itemizedlist>
<para>Before starting to build Binutils, remember to unset any environment
variables that override the default optimization flags.</para>
<para>Compile the package:</para>
<screen><userinput>make </userinput></screen>
<note><para>It's worth pointing out that running the Binutils test suite here
is considered not as important as running it in
<xref linkend="chapter06"/>.</para></note>
<para>Test the results (there should be no unexpected failures here, expected
failures are fine):</para>
<screen><userinput>make check</userinput></screen>
<para>Unfortunately, there is no easy way to view the test results summary like
there was for the previous GCC package. However, if a failure occurs here, it
should be easy to spot. The output shown will contain something like:</para>
<blockquote><screen>make[1]: *** [check-binutils] Error 2</screen></blockquote>
<para>And install the package:</para>
<screen><userinput>make install</userinput></screen>
<para>Now prepare Binutils for the re-adjusting of the toolchain in the next
chapter:</para>
<screen><userinput>make -C ld clean
make -C ld LIB_PATH=/usr/lib:/lib</userinput></screen>
<!-- HACK - Force some whitespace to appease tidy -->
<literallayout></literallayout>
<warning><para>Do not yet remove the Binutils source and build directories.
We'll need these directories again in the next chapter in the state they are in
now.</para></warning>
<!-- HACK - Force some whitespace to appease tidy -->
<literallayout></literallayout>
</sect2>
</sect1>

View File

@ -0,0 +1,46 @@
<sect1 id="ch05-coreutils">
<title>Installing Coreutils-&coreutils-version;</title>
<?dbhtml filename="coreutils.html" dir="chapter05"?>
<screen>Estimated build time: &coreutils-time-tools;
Estimated required disk space: &coreutils-compsize-tools;</screen>
&aa-coreutils-shortdesc;
&aa-coreutils-dep;
<sect2><title>&nbsp;</title><para>&nbsp;</para></sect2>
<sect2>
<title>Installation of Coreutils</title>
<para>Prepare Coreutils for compilation:</para>
<screen><userinput>./configure --prefix=/tools</userinput></screen>
<para>Compile the package:</para>
<screen><userinput>make</userinput></screen>
<para>This package has a test suite available which can perform a number of
checks to ensure it built correctly. Should you choose to run it, the
following command will do so:</para>
<screen><userinput>make RUN_EXPENSIVE_TESTS=yes check</userinput></screen>
<para>The meaning of the make parameter:</para>
<itemizedlist>
<listitem><para><userinput>RUN_EXPENSIVE_TESTS=yes</userinput>: This tells the
test suite to run several additional tests that are considered relatively
expensive on some platforms. However, they are generally not a problem on
Linux.</para></listitem>
</itemizedlist>
<para>And install the package:</para>
<screen><userinput>make install</userinput></screen>
</sect2>
</sect1>

View File

@ -0,0 +1,38 @@
<sect1 id="ch05-creatingtoolsdir">
<title>Creating the $LFS/tools directory</title>
<?dbhtml filename="creatingtoolsdir.html" dir="chapter05"?>
<para>All programs compiled in this chapter will be installed under <filename
class="directory">$LFS/tools</filename> to keep them separate from the
programs compiled in the next chapter. The programs compiled here are only
temporary tools and won't be a part of the final LFS system and by keeping them
in a separate directory, we can later easily throw them away.</para>
<para>If later you wish to search through the binaries of your system to see
what files they make use of or link against, then to make this searching easier
you may want to choose a unique name. Instead of the simple "tools" you could
use something like "tools-for-lfs".</para>
<para>Create the required directory by running the following:</para>
<screen><userinput>mkdir $LFS/tools</userinput></screen>
<para>The next step is to create a <filename>/tools</filename> symlink on
your host system. It will point to the directory we just created on the LFS
partition:</para>
<screen><userinput>ln -s $LFS/tools /</userinput></screen>
<para>This symlink enables us to compile our toolchain so that it always
refers to <filename>/tools</filename>, meaning that the compiler, assembler
and linker will work both in this chapter (when we are still using some tools
from the host) <emphasis>and</emphasis> in the next (when we are chrooted to
the LFS partition).</para>
<note><para>Study the above command closely. It can be confusing at first
glance. The <userinput>ln</userinput> command has several syntax variations,
so be sure to check the ln man page before reporting what you may think is an
error.</para></note>
</sect1>

View File

@ -0,0 +1,27 @@
<sect1 id="ch05-dejagnu">
<title>Installing DejaGnu-&dejagnu-version;</title>
<?dbhtml filename="dejagnu.html" dir="chapter05"?>
<screen>Estimated build time: &dejagnu-time-tools;
Estimated required disk space: &dejagnu-compsize-tools;</screen>
&aa-dejagnu-shortdesc;
&aa-dejagnu-dep;
<sect2><title>&nbsp;</title><para>&nbsp;</para></sect2>
<sect2>
<title>Installation of DejaGnu</title>
<para>Prepare DejaGnu for compilation:</para>
<screen><userinput>./configure --prefix=/tools</userinput></screen>
<para>Build and install the package:</para>
<screen><userinput>make install</userinput></screen>
</sect2>
</sect1>

View File

@ -0,0 +1,69 @@
<sect1 id="ch05-expect">
<title>Installing Expect-&expect-version;</title>
<?dbhtml filename="expect.html" dir="chapter05"?>
<screen>Estimated build time: &expect-time-tools;
Estimated required disk space: &expect-compsize-tools;</screen>
&aa-expect-shortdesc;
&aa-expect-dep;
<sect2><title>&nbsp;</title><para>&nbsp;</para></sect2>
<sect2>
<title>Installation of Expect</title>
<para>First apply a patch:</para>
<screen><userinput>patch -Np1 -i ../&expect-patch;</userinput></screen>
<para>This fixes a bug in Expect that can result in bogus failures during the
GCC test suite run.</para>
<para>Now prepare Expect for compilation:</para>
<screen><userinput>./configure --prefix=/tools --with-tcl=/tools/lib --with-x=no</userinput></screen>
<para>The meaning of the configure options:</para>
<itemizedlist>
<listitem><para><userinput>--with-tcl=/tools/lib</userinput>: This ensures that
the configure script finds the Tcl installation in our temporary tools location.
We don't want it to find an existing one that may possibly reside on the host
system.</para></listitem>
<listitem><para><userinput>--with-x=no</userinput>: This tells the configure
script not to search for Tk (the Tcl GUI component) or the X Window System
libraries, both of which may possibly reside on the host system.</para></listitem>
</itemizedlist>
<para>Build the package:</para>
<screen><userinput>make</userinput></screen>
<para>This package has a test suite available which can perform a number of
checks to ensure it built correctly. However, the Expect test suite here in
Chapter 5 is known to experience failures under certain host conditions that
are not fully understood. Therefore, test suite failures here are not
surprising, but are not considered critical. Should you choose to run the test
suite, the following command will do so:</para>
<screen><userinput>make test</userinput></screen>
<para>And install:</para>
<screen><userinput>make SCRIPTS="" install</userinput></screen>
<para>The meaning of the make parameter:</para>
<itemizedlist>
<listitem><para><userinput>SCRIPTS=""</userinput>: This prevents installation of
the supplementary expect scripts which are not needed.</para></listitem>
</itemizedlist>
<para>You can now remove the source directories of both Tcl and Expect.</para>
</sect2>
</sect1>

View File

@ -0,0 +1,101 @@
<sect1 id="ch05-gcc-pass1">
<title>Installing GCC-&gcc-version; - Pass 1</title>
<?dbhtml filename="gcc-pass1.html" dir="chapter05"?>
<screen>Estimated build time: &gcc-time-tools-pass1;
Estimated required disk space: &gcc-compsize-tools-pass1;</screen>
&aa-gcc-shortdesc;
&aa-gcc-dep;
<sect2><title>&nbsp;</title><para>&nbsp;</para></sect2>
<sect2>
<title>Installation of GCC</title>
<para>Unpack only the GCC-core tarball, as we won't be needing a C++ compiler
for the moment.</para>
<note><para>Even though GCC is an important toolchain package, we are not
going to run the test suite at this early stage. First, the test suite framework
is not yet in place and second, the programs from this first pass will soon be
overwritten by those installed in the second pass.</para></note>
<para>This package is known to behave badly when you have changed its
default optimization flags (including the -march and -mcpu options).
Therefore, if you have defined any environment variables that override
default optimizations, such as CFLAGS and CXXFLAGS, we recommend unsetting
or modifying them when building GCC.</para>
<para>The GCC documentation recommends building GCC outside of the source
directory in a dedicated build directory:</para>
<screen><userinput>mkdir ../gcc-build
cd ../gcc-build</userinput></screen>
<para>Prepare GCC for compilation:</para>
<screen><userinput>../gcc-&gcc-version;/configure --prefix=/tools \
&nbsp;&nbsp;&nbsp;&nbsp;--with-local-prefix=/tools \
&nbsp;&nbsp;&nbsp;&nbsp;--disable-nls --enable-shared \
&nbsp;&nbsp;&nbsp;&nbsp;--enable-languages=c</userinput></screen>
<para>The meaning of the configure options:</para>
<itemizedlist>
<listitem><para><userinput>--with-local-prefix=/tools</userinput>: The
purpose of this switch is to remove <filename>/usr/local/include</filename>
from <userinput>gcc</userinput>'s include search path. This is not absolutely
essential; however, we want to try to minimize the influence of the host
system, thus making this a sensible thing to do.</para></listitem>
<listitem><para><userinput>--enable-shared</userinput>: This switch may
seem counter-intuitive at first. But using it allows the building of
<filename>libgcc_s.so.1</filename> and <filename>libgcc_eh.a</filename>, and
having <filename>libgcc_eh.a</filename> available ensures that the configure
script for Glibc (the next package we compile) produces the proper results.
Note that the <userinput>gcc</userinput> binaries will still be linked
statically, as this is controlled by the <userinput>-static</userinput>
value of BOOT_LDFLAGS further on.</para></listitem>
<listitem><para><userinput>--enable-languages=c</userinput>: This option
ensures that only the C compiler is built. The option is only needed when you
have downloaded and unpacked the full GCC tarball.</para></listitem>
</itemizedlist>
<para>Continue with compiling the package:</para>
<screen><userinput>make BOOT_LDFLAGS="-static" bootstrap</userinput></screen>
<para>The meaning of the make parameters:</para>
<itemizedlist>
<listitem><para><userinput>BOOT_LDFLAGS="-static"</userinput>: This tells
GCC to link its programs statically.</para></listitem>
<listitem><para><userinput>bootstrap</userinput>: This target doesn't just
compile GCC, but compiles it several times. It uses the programs compiled in
a first round to compile itself a second time, and then again a third time.
It then compares these second and third compiles to make sure it can
reproduce itself flawlessly, which most probably means that it was
compiled correctly.</para></listitem>
</itemizedlist>
<para>And install the package:</para>
<screen><userinput>make install</userinput></screen>
<para>As a finishing touch we'll create the <filename
class="symlink">/tools/bin/cc</filename> symlink. Many programs and
scripts run <userinput>cc</userinput> instead of <userinput>gcc</userinput>,
a thing meant to keep programs generic and therefore usable on all kinds of
Unix systems. Not everybody has the GNU C compiler installed. Simply running
<userinput>cc</userinput> leaves the system administrator free to decide what
C compiler to install, as long as there's a symlink pointing to it:</para>
<screen><userinput>ln -sf gcc /tools/bin/cc</userinput></screen>
</sect2>
</sect1>

View File

@ -0,0 +1,174 @@
<sect1 id="ch05-gcc-pass2">
<title>Installing GCC-&gcc-version; - Pass 2</title>
<?dbhtml filename="gcc-pass2.html" dir="chapter05"?>
<screen>Estimated build time: &gcc-time-tools-pass2;
Estimated required disk space: &gcc-compsize-tools-pass2;</screen>
<sect2><title>&nbsp;</title><para>&nbsp;</para></sect2>
<sect2>
<title>Re-installation of GCC</title>
<para>The tools required to test GCC and Binutils are installed now (Tcl, Expect
and DejaGnu). We can continue on rebuilding GCC and Binutils, link them against
the new Glibc, and test them properly. One thing to note, however, is that these
test suites are highly dependent on properly functioning pseudo terminals (PTYs)
which are provided by your host distribution. These days, PTYs are most commonly
implemented via the <emphasis>devpts</emphasis> file system. You can quickly
check if your host system is set up correctly in this regard by performing a
simple test:</para>
<screen><userinput>expect -c "spawn ls"</userinput></screen>
<para>If you receive the message:</para>
<blockquote><screen>The system has no more ptys. Ask your system administrator to create more.</screen></blockquote>
<para>Your host distribution is not set up for proper PTY operation. In this
case there is no point in running the test suites for GCC and Binutils until you
are able to resolve the issue. You can consult the LFS Wiki at
<ulink url="http://wiki.linuxfromscratch.org/"/> for more information on how to
get PTYs working.</para>
<para>Unpack all three GCC tarballs (-core, -g++, and -testsuite) in one and the
same working directory. They will all unfold into a single
<filename>gcc-&gcc-version;/</filename> subdirectory.</para>
<para>First correct one problem and make an essential adjustment:</para>
<screen><userinput>patch -Np1 -i ../&gcc-nofixincludes-patch;
patch -Np1 -i ../&gcc-specs-patch;</userinput></screen>
<para>The first patch disables the GCC "fixincludes" script. We mentioned this
briefly earlier, but a slightly more in-depth explanation of the fixincludes
process is warranted here. Under normal circumstances, the GCC fixincludes
script scans your system for header files that need to be fixed. It might find
that some Glibc header files on your host system need to be fixed, fix them and
put them in the GCC private include directory. Then, later on in
<xref linkend="chapter06"/>, after we've installed the newer Glibc, this
private include directory would be searched before the system include
directory, resulting in GCC finding the fixed headers from the host system,
which would most likely not match the Glibc version actually used for the LFS
system.</para>
<para>The last patch changes GCC's default location of the dynamic linker
(typically <filename>ld-linux.so.2</filename>). It also removes
<filename class="directory">/usr/include</filename> from GCC's include search
path. Patching now rather than adjusting the specs file after installation
ensures that our new dynamic linker gets used during the actual build of GCC.
That is, all the final (and temporary) binaries created during the build will
link against the new Glibc.</para>
<important><para>These patches are <emphasis>critical</emphasis> in ensuring a
successful overall build. Do not forget to apply them.</para></important>
<para>Create a separate build directory again:</para>
<screen><userinput>mkdir ../gcc-build
cd ../gcc-build</userinput></screen>
<para>Before starting to build GCC, remember to unset any environment
variables that override the default optimization flags.</para>
<para>Now prepare GCC for compilation:</para>
<screen><userinput>../gcc-&gcc-version;/configure --prefix=/tools \
&nbsp;&nbsp;&nbsp;&nbsp;--with-local-prefix=/tools \
&nbsp;&nbsp;&nbsp;&nbsp;--enable-clocale=gnu --enable-shared \
&nbsp;&nbsp;&nbsp;&nbsp;--enable-threads=posix --enable-__cxa_atexit \
&nbsp;&nbsp;&nbsp;&nbsp;--enable-languages=c,c++</userinput></screen>
<para>The meaning of the new configure options:</para>
<itemizedlist>
<listitem><para><userinput>--enable-threads=posix</userinput>: This enables
C++ exception handling for multi-threaded code.</para></listitem>
<listitem><para><userinput>--enable-__cxa_atexit</userinput>: This option
allows use of __cxa_atexit, rather than atexit, to register C++ destructors for
local statics and global objects and is essential for fully standards-compliant
handling of destructors. It also affects the C++ ABI and therefore results in
C++ shared libraries and C++ programs that are interoperable with other Linux
distributions.</para></listitem>
<listitem><para><userinput>--enable-clocale=gnu</userinput>: This option ensures
the correct locale model is selected for the C++ libraries under all
circumstances. If the configure script finds the <emphasis>de_DE</emphasis>
locale installed, it will select the correct model of <emphasis>gnu</emphasis>.
However, people who don't install the <emphasis>de_DE</emphasis> locale, run the
risk of building ABI incompatible C++ libraries due to the wrong locale model of
<emphasis>generic</emphasis> being selected.</para></listitem>
<listitem><para><userinput>--enable-languages=c,c++</userinput>: This option is
needed to ensure that both C and C++ compilers are built.</para></listitem>
</itemizedlist>
<para>Compile the package:</para>
<screen><userinput>make</userinput></screen>
<para>There is no need to use the <userinput>bootstrap</userinput> target now,
as the compiler we're using to compile this GCC was built from the exact same
version of the GCC sources we used earlier.</para>
<note><para>It's worth pointing out that running the GCC test suite here
is considered not as important as running it in
<xref linkend="chapter06"/>.</para></note>
<para>Test the results:</para>
<screen><userinput>make -k check</userinput></screen>
<para>The <userinput>-k</userinput> flag is used to make the test suite run
through to completion and not stop at the first failure. The GCC test suite is
very comprehensive and is almost guaranteed to generate a few failures. To get
a summary of the test suite results, run this:</para>
<screen><userinput>../gcc-&gcc-version;/contrib/test_summary | more</userinput></screen>
<para>You can compare your results to those posted to the gcc-testresults
mailing list for similar configurations to your own. For an example of how
current GCC-&gcc-version; should look on i686-pc-linux-gnu, see
<ulink url="http://gcc.gnu.org/ml/gcc-testresults/2003-08/msg01612.html"/>.</para>
<para>Note that the results contain:</para>
<screen>* 1 XPASS (unexpected pass) for g++
* 1 FAIL (unexpected failure) for g++
* 2 FAIL for gcc
* 26 XPASS's for libstdc++</screen>
<para>The unexpected pass for g++ is due to the use of
<userinput>--enable-__cxa_atexit</userinput>. Apparently not all platforms
supported by GCC have support for "__cxa_atexit" in their C libraries, so this
test is not always expected to pass.</para>
<para>The 26 unexpected passes for libstdc++ are due to the use of
<userinput>--enable-clocale=gnu</userinput>, which is the correct choice on
Glibc-based systems of versions 2.2.5 and above. The underlying locale support
in the GNU C library is superior to that of the otherwise selected "generic"
model (which may be applicable if for instance you were using Newlibc, Sun-libc
or whatever libc). The libstdc++ test suite is apparently expecting the
"generic" model, hence those tests are not always expected to pass.</para>
<para>Unexpected failures often cannot be avoided. The GCC developers are
usually aware of them but haven't yet gotten around to fixing them. In short,
unless your results are vastly different from those at the above URL, it is safe
to continue on.</para>
<para>And finally install the package:</para>
<screen><userinput>make install</userinput></screen>
<note><para>At this point it is strongly recommended to repeat the sanity check
we performed earlier in the chapter. Refer back to
<xref linkend="ch05-locking-glibc"/> and repeat the check. If the results are
wrong, then most likely you forgot to apply the above mentioned GCC Specs
patch.</para></note>
</sect2>
</sect1>

View File

@ -0,0 +1,41 @@
<sect1 id="ch05-gettext">
<title>Installing Gettext-&gettext-version;</title>
<?dbhtml filename="gettext.html" dir="chapter05"?>
<screen>Estimated build time: &gettext-time-tools;
Estimated required disk space: &gettext-compsize-tools;</screen>
&aa-gettext-shortdesc;
&aa-gettext-dep;
<sect2><title>&nbsp;</title><para>&nbsp;</para></sect2>
<sect2>
<title>Installation of Gettext</title>
<para>Prepare Gettext for compilation:</para>
<screen><userinput>./configure --prefix=/tools</userinput></screen>
<para>Compile the programs:</para>
<screen><userinput>make</userinput></screen>
<para>This package has a test suite available which can perform a number of
checks to ensure it built correctly. However, the Gettext test suite here in
Chapter 5 is known to experience failures under certain host conditions -- for
example, if it finds a Java compiler on the host. The Gettext test suite takes
a very long time to run and is not considered critical. Therefore, we don't
recommend running it here. Should you choose to run it, the following command
will do so:</para>
<screen><userinput>make check</userinput></screen>
<para>And install the package:</para>
<screen><userinput>make install</userinput></screen>
</sect2>
</sect1>

View File

@ -0,0 +1,181 @@
<sect1 id="ch05-glibc">
<title>Installing Glibc-&glibc-version;</title>
<?dbhtml filename="glibc.html" dir="chapter05"?>
<screen>Estimated build time: &glibc-time-tools;
Estimated required disk space: &glibc-compsize-tools;</screen>
&aa-glibc-shortdesc;
&aa-glibc-dep;
<sect2><title>&nbsp;</title><para>&nbsp;</para></sect2>
<sect2>
<title>Glibc installation</title>
<para>Before starting to install Glibc, you must <userinput>cd</userinput>
into the <filename>glibc-&glibc-version;</filename> directory and unpack
Glibc-linuxthreads in that directory, not in the directory where you usually
unpack all the sources.</para>
<note><para>We are going to run the test suite for Glibc in this chapter.
However, it's worth pointing out that running the Glibc test suite here
is considered not as important as running it in
<xref linkend="chapter06"/>.</para></note>
<para>This package is known to behave badly when you have changed its
default optimization flags (including the -march and -mcpu options).
Therefore, if you have defined any environment variables that override
default optimizations, such as CFLAGS and CXXFLAGS, we recommend unsetting
them when building Glibc.</para>
<para>Basically, compiling Glibc in any other way than the book suggests
is putting the stability of your system at risk.</para>
<para>Though it is a harmless message, the install stage of Glibc will
complain about the absence of <filename>/tools/etc/ld.so.conf</filename>.
Fix this annoying little warning with:</para>
<screen><userinput>mkdir /tools/etc
touch /tools/etc/ld.so.conf</userinput></screen>
<para>Also, Glibc has a subtle problem when compiled with GCC &gcc-version;.
Apply the following patch to fix this:</para>
<screen><userinput>patch -Np1 -i ../&glibc-sscanf-patch;</userinput></screen>
<para>The Glibc documentation recommends building Glibc outside of the source
directory in a dedicated build directory:</para>
<screen><userinput>mkdir ../glibc-build
cd ../glibc-build</userinput></screen>
<para>Next, prepare Glibc for compilation:</para>
<screen><userinput>../glibc-&glibc-version;/configure --prefix=/tools \
&nbsp;&nbsp;&nbsp;&nbsp;--disable-profile --enable-add-ons \
&nbsp;&nbsp;&nbsp;&nbsp;--with-headers=/tools/include \
&nbsp;&nbsp;&nbsp;&nbsp;--with-binutils=/tools/bin \
&nbsp;&nbsp;&nbsp;&nbsp;--without-gd</userinput></screen>
<para>The meaning of the configure options:</para>
<itemizedlist>
<listitem><para><userinput>--disable-profile</userinput>: This disables the
building of the libraries with profiling information. Omit this option if you
plan to do profiling.</para></listitem>
<listitem><para><userinput>--enable-add-ons</userinput>: This enables any
add-ons that were installed with Glibc, in our case Linuxthreads.</para></listitem>
<listitem><para><userinput>--with-binutils=/tools/bin</userinput> and
<userinput>--with-headers=/tools/include</userinput>: Strictly speaking
these switches are not required. But they ensure nothing can go wrong with
regard to what kernel headers and Binutils programs get used during the
Glibc build.</para></listitem>
<listitem><para><userinput> --without-gd</userinput>: This switch ensures
that we don't build the <userinput>memusagestat</userinput> program, which
strangely enough insists on linking against the host's libraries (libgd,
libpng, libz, and so forth).</para></listitem>
</itemizedlist>
<para>During this stage you might see the following warning:</para>
<blockquote><screen>configure: WARNING:
*** These auxiliary programs are missing or incompatible versions: msgfmt
*** some features will be disabled.
*** Check the INSTALL file for required versions.</screen></blockquote>
<para>The missing or incompatible <filename>msgfmt</filename> program is
generally harmless, but it's believed it can sometimes cause problems when
running the test suite.</para>
<para>Compile the package:</para>
<screen><userinput>make</userinput></screen>
<para>Run the test suite:</para>
<screen><userinput>make check</userinput></screen>
<para>The Glibc test suite is highly dependent on certain functions of your host
system, in particular the kernel. Additionally, here in this chapter some tests
can be adversely affected by existing tools or environmental issues on the host
system. Of course, these won't be a problem when we run the Glibc test suite
inside the chroot environment of <xref linkend="chapter06"/>. In general, the
Glibc test suite is always expected to pass. However, as mentioned above, some
failures are unavoidable in certain circumstances. Here is a list of the most
common issues we are aware of:</para>
<itemizedlist>
<listitem><para>The <emphasis>math</emphasis> tests sometimes fail when running
on systems where the CPU is not a relatively new genuine Intel or authentic AMD.
Certain optimization settings are also known to be a factor here.</para></listitem>
<listitem><para>The <emphasis>gettext</emphasis> test sometimes fails due to
host system issues. The exact reasons are not yet clear.</para></listitem>
<listitem><para>The <emphasis>atime</emphasis> test sometimes fails when the
LFS partition is mounted with the <emphasis>noatime</emphasis> option, or due
to other file system quirks.</para></listitem>
<listitem><para>The <emphasis>shm</emphasis> test might fail when the host
system is running the devfs file system but doesn't have the tmpfs file system
mounted at <filename>/dev/shm</filename> due to lack of support for tmpfs in
the kernel.</para></listitem>
<listitem><para>When running on older and slower hardware, some tests might
fail due to test timeouts being exceeded.</para></listitem>
</itemizedlist>
<para>In summary, don't worry too much if you see Glibc test suite failures
here in this chapter. The Glibc in <xref linkend="chapter06"/> is the one we'll
ultimately end up using so that is the one we would really like to see pass.
But please keep in mind, even in <xref linkend="chapter06"/> some failures
could still occur -- the <emphasis>math</emphasis>
tests for example. When experiencing a failure, make a note of it, then
continue by reissuing the <userinput>make check</userinput>. The test suite
should pick up where it left off and continue on. You can circumvent this
stop-start sequence by issuing a <userinput>make -k check</userinput>. But if
you do that, be sure to log the output so that you can later peruse the log
file and examine the total number of failures.</para>
<para>Now install the package:</para>
<screen><userinput>make install</userinput></screen>
<para>Different countries and cultures have varying conventions for how to
communicate. These conventions range from very simple ones, such as the format
for representing dates and times, to very complex ones, such as the language
spoken. The "internationalization" of GNU programs works by means of
<emphasis>locales</emphasis>. We'll install the Glibc locales now:</para>
<screen><userinput>make localedata/install-locales</userinput></screen>
<para>An alternative to running the previous command is to install only
those locales which you need or want. This can be achieved by using the
<userinput>localedef</userinput> command. Information on this can be
found in the <filename>INSTALL</filename> file in the
<filename>glibc-&glibc-version;</filename> source. However, there are a number
of locales that are essential for the tests of future packages to pass, in
particular, the <emphasis>libstdc++</emphasis> tests from GCC. The following
instructions, instead of the install-locales target above, will install
the minimum set of locales necessary for the tests to run successfully:</para>
<screen><userinput>mkdir -p /tools/lib/locale
localedef -i de_DE -f ISO-8859-1 de_DE
localedef -i de_DE@euro -f ISO-8859-15 de_DE@euro
localedef -i en_HK -f ISO-8859-1 en_HK
localedef -i en_PH -f ISO-8859-1 en_PH
localedef -i en_US -f ISO-8859-1 en_US
localedef -i es_MX -f ISO-8859-1 es_MX
localedef -i fr_FR -f ISO-8859-1 fr_FR
localedef -i fr_FR@euro -f ISO-8859-15 fr_FR@euro
localedef -i it_IT -f ISO-8859-1 it_IT
localedef -i ja_JP -f EUC-JP ja_JP</userinput></screen>
</sect2>
</sect1>

View File

@ -0,0 +1,58 @@
<sect1 id="ch05-kernel-headers">
<title>Installing Linux-&kernel-version; headers</title>
<?dbhtml filename="kernel-headers.html" dir="chapter05"?>
<screen>Estimated build time: &kernel-time-headers;
Estimated required disk space: &kernel-compsize-headers;</screen>
&aa-kernel-shortdesc;
&aa-kernel-dep;
<sect2><title>&nbsp;</title><para>&nbsp;</para></sect2>
<sect2>
<title>Installation of the kernel headers</title>
<para>As some packages need to refer to the kernel header files, we're going
to unpack the kernel archive now, set it up, and copy the required files to a
place where <userinput>gcc</userinput> can later find them.</para>
<para>Prepare for the header installation with:</para>
<screen><userinput>make mrproper</userinput></screen>
<para>This ensures that the kernel tree is absolutely clean. The kernel team
recommends that this command be issued prior to <emphasis>each</emphasis> kernel
compilation. You shouldn't rely on the source tree being clean after
untarring.</para>
<para>Create the <filename>include/linux/version.h</filename> file:</para>
<screen><userinput>make include/linux/version.h</userinput></screen>
<para>Create the platform-specific <filename>include/asm</filename>
symlink:</para>
<screen><userinput>make symlinks</userinput></screen>
<para>Install the platform-specific header files:</para>
<screen><userinput>mkdir /tools/include/asm
cp include/asm/* /tools/include/asm
cp -R include/asm-generic /tools/include</userinput></screen>
<para>Install the cross-platform kernel header files:</para>
<screen><userinput>cp -R include/linux /tools/include</userinput></screen>
<para>There are a few kernel header files which make use of the
<filename>autoconf.h</filename> header file. Since we do not yet configure the
kernel, we need to create this file ourselves in order to avoid compilation
failures. Create an empty <filename>autoconf.h</filename> file:</para>
<screen><userinput>touch /tools/include/linux/autoconf.h</userinput></screen>
</sect2>
</sect1>

Some files were not shown because too many files have changed in this diff Show More