This is the current version of the Linux from Scratch guide from SVN

This commit is contained in:
tgeek77 2016-01-24 14:40:31 +01:00
parent 446725e775
commit c4ce83ee87
2091 changed files with 594717 additions and 0 deletions

View File

@ -0,0 +1,47 @@
LFS Book Conversion Tools Installation Instructions
After downloading the SVN source, there are some things that need to be set up
on your computer if you want to convert the XML source into something easier to
read (e.g. HTML, TXT, or PDF). If you are interested in this, then keep
reading. If you are only interested in editing the XML source for re-
submission to the lfs-book or lfs-dev mailing lists, then you do not need this
document. Instead, you need to read the LFS Editor's Manual. See the LFS
website at http://www.linuxfromscratch.org for more information.
-------------------------------------------------------------------------------
If you want to convert the XML to HTML, install the following:
* libxml2
- http://www.linuxfromscratch.org/blfs/view/svn/general/libxml2.html
* libxslt
- http://www.linuxfromscratch.org/blfs/view/svn/general/libxslt.html
* DocBook DTD
- http://www.linuxfromscratch.org/blfs/view/svn/pst/xml.html
* DocBook XSL Stylesheets
- http://www.linuxfromscratch.org/blfs/view/svn/pst/docbook-xsl.html
* HTMLTidy
- http://www.linuxfromscratch.org/blfs/view/svn/general/tidy.html
-------------------------------------------------------------------------------
If you want to convert the XML to TXT, install the above items, and then install
the following:
* lynx
- http://www.linuxfromscratch.org/blfs/view/svn/basicnet/lynx.html
-------------------------------------------------------------------------------
If you want to convert the XML to PDF, install the items listed above (except
lynx) and then install the following:
* JDK
- http://www.linuxfromscratch.org/blfs/view/svn/general/openjdk.html
* FOP and JAI
- http://www.linuxfromscratch.org/blfs/view/svn/pst/fop.html

View File

@ -0,0 +1,121 @@
BASEDIR = ~/lfs-book
DUMPDIR = ~/lfs-commands
RENDERTMP = $(HOME)/tmp
CHUNK_QUIET = 1
ROOT_ID =
PDF_OUTPUT = LFS-BOOK.pdf
NOCHUNKS_OUTPUT = LFS-BOOK.html
SHELL = /bin/bash
ifdef V
Q =
else
Q = @
endif
lfs: validate profile-html
@echo "Generating chunked XHTML files..."
$(Q)xsltproc --nonet -stringparam chunk.quietly $(CHUNK_QUIET) \
-stringparam rootid "$(ROOT_ID)" -stringparam base.dir $(BASEDIR)/ \
stylesheets/lfs-chunked.xsl $(RENDERTMP)/lfs-html.xml
@echo "Copying CSS code and images..."
$(Q)if [ ! -e $(BASEDIR)/stylesheets ]; then \
mkdir -p $(BASEDIR)/stylesheets; \
fi;
$(Q)cp stylesheets/lfs-xsl/*.css $(BASEDIR)/stylesheets
$(Q)if [ ! -e $(BASEDIR)/images ]; then \
mkdir -p $(BASEDIR)/images; \
fi;
$(Q)cp images/*.png $(BASEDIR)/images
# $(Q)cd $(BASEDIR)/; sed -i -e "s@../stylesheets@stylesheets@g" *.html
# $(Q)cd $(BASEDIR)/; sed -i -e "s@../images@images@g" *.html
@echo "Running Tidy and obfuscate.sh..."
$(Q)for filename in `find $(BASEDIR) -name "*.html"`; do \
tidy -config tidy.conf $$filename; \
true; \
/bin/bash obfuscate.sh $$filename; \
sed -i -e "s@text/html@application/xhtml+xml@g" $$filename; \
done;
$(Q)$(MAKE) $(BASEDIR)/wget-list $(BASEDIR)/md5sums
pdf: validate
@echo "Generating profiled XML for PDF..."
$(Q)xsltproc --nonet --stringparam profile.condition pdf \
--output $(RENDERTMP)/lfs-pdf.xml stylesheets/lfs-xsl/profile.xsl \
$(RENDERTMP)/lfs-full.xml
@echo "Generating FO file..."
$(Q)xsltproc --nonet -stringparam rootid "$(ROOT_ID)" \
--output $(RENDERTMP)/lfs-pdf.fo stylesheets/lfs-pdf.xsl \
$(RENDERTMP)/lfs-pdf.xml
$(Q)sed -i -e 's/span="inherit"/span="all"/' $(RENDERTMP)/lfs-pdf.fo
$(Q)bash pdf-fixups.sh $(RENDERTMP)/lfs-pdf.fo
@echo "Generating PDF file..."
$(Q)if [ ! -e $(BASEDIR) ]; then \
mkdir -p $(BASEDIR); \
fi;
$(Q)fop -q $(RENDERTMP)/lfs-pdf.fo $(BASEDIR)/$(PDF_OUTPUT) 2>fop.log
@echo "$(BASEDIR)/$(PDF_OUTPUT) created"
@echo "fop.log created"
nochunks: validate profile-html
@echo "Generating non chunked XHTML file..."
$(Q)xsltproc --nonet -stringparam rootid "$(ROOT_ID)" \
--output $(BASEDIR)/$(NOCHUNKS_OUTPUT) \
stylesheets/lfs-nochunks.xsl $(RENDERTMP)/lfs-html.xml
@echo "Running Tidy..."
$(Q)tidy -config tidy.conf $(BASEDIR)/$(NOCHUNKS_OUTPUT) || true
@echo "Running obfuscate.sh..."
$(Q)bash obfuscate.sh $(BASEDIR)/$(NOCHUNKS_OUTPUT)
$(Q)sed -i -e "s@text/html@application/xhtml+xml@g" $(BASEDIR)/$(NOCHUNKS_OUTPUT)
$(Q)sed -i -e "s@../wget-list@wget-list@" $(BASEDIR)/$(NOCHUNKS_OUTPUT)
$(Q)sed -i -e "s@../md5sums@md5sums@" $(BASEDIR)/$(NOCHUNKS_OUTPUT)
$(Q)$(MAKE) $(BASEDIR)/wget-list $(BASEDIR)/md5sums
tmpdir:
@echo "Creating and cleaning $(RENDERTMP)"
$(Q)[ -d $(RENDERTMP) ] || mkdir -p $(RENDERTMP)
$(Q)rm -f $(RENDERTMP)/lfs-{full,html,pdf}.xml
$(Q)rm -f $(RENDERTMP)/lfs-pdf.fo
validate: tmpdir
@echo "Validating the book..."
$(Q)xmllint --nonet --noent --xinclude --postvalid \
-o $(RENDERTMP)/lfs-full.xml index.xml
@echo "Validation complete."
profile-html: validate
@echo "Generating profiled XML for XHTML..."
$(Q)xsltproc --nonet --stringparam profile.condition html \
--output $(RENDERTMP)/lfs-html.xml stylesheets/lfs-xsl/profile.xsl \
$(RENDERTMP)/lfs-full.xml
wget-list: $(BASEDIR)/wget-list
$(BASEDIR)/wget-list: stylesheets/wget-list.xsl chapter03/chapter03.xml packages.ent patches.ent
@echo "Generating wget list..."
$(Q)mkdir -p $(BASEDIR)
$(Q)xsltproc --xinclude --nonet --output $(BASEDIR)/wget-list \
stylesheets/wget-list.xsl chapter03/chapter03.xml
md5sums: $(BASEDIR)/md5sums
$(BASEDIR)/md5sums: stylesheets/wget-list.xsl chapter03/chapter03.xml packages.ent patches.ent
@echo "Generating md5sum file..."
$(Q)mkdir -p $(BASEDIR)
$(Q)xsltproc --xinclude --nonet --output $(BASEDIR)/md5sums \
stylesheets/md5sum.xsl chapter03/chapter03.xml
dump-commands: validate
@echo "Dumping book commands..."
$(Q)xsltproc --output $(DUMPDIR)/ \
stylesheets/dump-commands.xsl $(RENDERTMP)/lfs-full.xml
all: lfs nochunks pdf dump-commands
.PHONY : all dump-commands lfs nochunks pdf profile-html tmpdir validate

View File

@ -0,0 +1,30 @@
LFS Book README
This document is meant to instruct the user on how to convert the book's XML
source to other formats (e.g. HTML, PDF, PS and TXT). First, if you have not
already done so, please read the INSTALL file for instructions on how to install
the required software. If you have already completed the steps outlined in the
INSTALL file, then continue reading for examples how to convert these files into
various other formats.
XML to XHTML:
-------------
make BASEDIR=/path/to/output/location
XML to single file XHTML (nochunks):
------------------------------------
make BASEDIR=/path/to/output/location nochunks
XML to TXT
----------
Follow the instructions for nochunks and then run:
lynx -dump /path/to/nochunks >/path/to/output
XML to PDF:
-----------
make BASEDIR=/path/to/output/location pdf

View File

@ -0,0 +1,437 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<appendix id="appendixb" xreflabel="Appendix B">
<?dbhtml dir="appendices"?>
<?dbhtml filename="acknowledgments.html"?>
<title>Acknowledgments</title>
<para>We would like to thank the following people and organizations
for their contributions to the Linux From Scratch Project.</para>
<itemizedlist>
<listitem>
<para><ulink url="mailto:gerard@linuxfromscratch.org">Gerard
Beekmans</ulink> &lt;gerard@linuxfromscratch.org&gt; &ndash;
LFS Creator, LFS Project Leader</para>
</listitem>
<listitem>
<para><ulink url="mailto:matthew@linuxfromscratch.org">Matthew
Burgess</ulink> &lt;matthew@linuxfromscratch.org&gt; &ndash;
LFS Project Leader, LFS Technical Writer/Editor</para>
</listitem>
<listitem>
<para><ulink url="mailto:bdubbs@linuxfromscratch.org">Bruce
Dubbs</ulink> &lt;bdubbs@linuxfromscratch.org&gt; &ndash; LFS Release
Manager, LFS Technical Writer/Editor</para>
</listitem>
<listitem>
<para><ulink url="mailto:jim@linuxfromscratch.org">Jim
Gifford</ulink> &lt;jim@linuxfromscratch.org&gt; &ndash; CLFS Project
Co-Leader</para>
</listitem>
<listitem>
<para><ulink url="mailto:bryan@linuxfromscratch.org">Bryan
Kadzban</ulink> &lt;bryan@linuxfromscratch.org&gt; &ndash; LFS
Technical Writer</para>
</listitem>
<listitem>
<para><ulink url="mailto:randy@linuxfromscratch.org">Randy
McMurchy</ulink> &lt;randy@linuxfromscratch.org&gt; &ndash; BLFS
Project Leader, LFS Editor</para>
</listitem>
<listitem>
<para><ulink url="mailto:dj@linuxfromscratch.org">DJ Lucas</ulink>
&lt;dj@linuxfromscratch.org&gt; &ndash; LFS and BLFS Editor</para>
</listitem>
<listitem>
<para><ulink url="mailto:ken@linuxfromscratch.org">Ken Moffat</ulink>
&lt;ken@linuxfromscratch.org&gt; &ndash; LFS and CLFS Editor</para>
</listitem>
<listitem>
<para><ulink url="mailto:ryan@linuxfromscratch.org">Ryan
Oliver</ulink> &lt;ryan@linuxfromscratch.org&gt; &ndash; CLFS Project
Co-Leader</para>
</listitem>
<listitem>
<para>Countless other people on the various LFS and BLFS mailing lists
who helped make this book possible by giving their suggestions, testing
the book, and submitting bug reports, instructions, and their
experiences with installing various packages.</para>
</listitem>
</itemizedlist>
<bridgehead renderas="sect2">Translators</bridgehead>
<itemizedlist>
<listitem>
<para><ulink url="mailto:macana@macana-es.com">Manuel Canales
Esparcia</ulink> &lt;macana@macana-es.com&gt; &ndash; Spanish
LFS translation project</para>
</listitem>
<listitem>
<para><ulink url="mailto:johan@linuxfromscratch.org">Johan
Lenglet</ulink> &lt;johan@linuxfromscratch.org&gt; &ndash; French LFS
translation project until 2008</para>
</listitem>
<listitem>
<para><ulink url="mailto:jmengual@linuxfromscratch.org">Jean-Philippe
Mengual </ulink> &lt;jmengual@linuxfromscratch.org&gt; &ndash; French LFS
translation project 2008-present</para>
</listitem>
<listitem>
<para><ulink url="mailto:lizardo@linuxfromscratch.org">Anderson
Lizardo</ulink> &lt;lizardo@linuxfromscratch.org&gt; &ndash;
Portuguese LFS translation project</para>
</listitem>
<listitem>
<para><ulink url="mailto:tr@erdfunkstelle.de">Thomas
Reitelbach </ulink> &lt;tr@erdfunkstelle.de&gt; &ndash; German LFS
translation project</para>
</listitem>
</itemizedlist>
<bridgehead renderas="sect2">Mirror Maintainers</bridgehead>
<bridgehead renderas="sect3">North American Mirrors</bridgehead>
<itemizedlist>
<listitem>
<para><ulink url="mailto:scott@osuosl.org">Scott Kveton</ulink>
&lt;scott@osuosl.org&gt; &ndash; lfs.oregonstate.edu mirror</para>
</listitem>
<listitem>
<para><ulink url="mailto:lost@l-w.net">William Astle</ulink>
&lt;lost@l-w.net&gt; &ndash; ca.linuxfromscratch.org mirror</para>
</listitem>
<listitem>
<para><ulink url="mailto:eujon.sellers@gmail.com">Eujon Sellers</ulink>
&lt;jpolen@rackspace.com&gt; &ndash; lfs.introspeed.com mirror</para>
</listitem>
<listitem>
<para><ulink url="mailto:justin@knierim.org">Justin Knierim</ulink>
&lt;tim@idge.net&gt; &ndash; lfs-matrix.net mirror</para>
</listitem>
</itemizedlist>
<bridgehead renderas="sect3">South American Mirrors</bridgehead>
<itemizedlist>
<listitem>
<para><ulink url="mailto:manuel@linuxfromscratch.org">Manuel
Canales Esparcia</ulink> &lt;manuel@linuxfromscratch.org&gt; &ndash;
lfsmirror.lfs-es.info mirror</para>
</listitem>
<listitem>
<para><ulink url="mailto:lfalcon@thymbra.com">Luis Falcon</ulink>
&lt;Luis Falcon&gt; &ndash; torredehanoi.org mirror</para>
</listitem>
</itemizedlist>
<bridgehead renderas="sect3">European Mirrors</bridgehead>
<itemizedlist>
<listitem>
<para><ulink url="mailto:guido@primerelay.net">Guido Passet</ulink>
&lt;guido@primerelay.net&gt; &ndash; nl.linuxfromscratch.org mirror</para>
</listitem>
<listitem>
<para><ulink url="mailto:baafie@planet.nl">Bastiaan Jacques</ulink>
&lt;baafie@planet.nl&gt; &ndash; lfs.pagefault.net mirror</para>
</listitem>
<listitem>
<para><ulink url="mailto:sven.cranshoff@lineo.be">Sven Cranshoff</ulink>
&lt;sven.cranshoff@lineo.be&gt; &ndash; lfs.lineo.be mirror</para>
</listitem>
<listitem>
<para>Scarlet Belgium &ndash; lfs.scarlet.be mirror</para>
</listitem>
<listitem>
<para><ulink url="mailto:info@aliensoft.org">Sebastian Faulborn</ulink>
&lt;info@aliensoft.org&gt; &ndash; lfs.aliensoft.org mirror</para>
</listitem>
<listitem>
<para><ulink url="mailto:stuart@dontuse.ms">Stuart Fox</ulink>
&lt;stuart@dontuse.ms&gt; &ndash; lfs.dontuse.ms mirror</para>
</listitem>
<listitem>
<para><ulink url="mailto:admin@realhost.de">Ralf Uhlemann</ulink>
&lt;admin@realhost.de&gt; &ndash; lfs.oss-mirror.org mirror</para>
</listitem>
<listitem>
<para><ulink url="mailto:Antonin.Sprinzl@tuwien.ac.at">Antonin
Sprinzl</ulink> &lt;Antonin.Sprinzl@tuwien.ac.at&gt; &ndash;
at.linuxfromscratch.org mirror</para>
</listitem>
<listitem>
<para><ulink url="mailto:fredan-lfs@fredan.org">Fredrik
Danerklint</ulink> &lt;fredan-lfs@fredan.org&gt; &ndash;
se.linuxfromscratch.org mirror</para>
</listitem>
<listitem>
<para><ulink url="mailto:franck@linuxpourtous.com">Franck</ulink>
&lt;franck@linuxpourtous.com&gt; &ndash; lfs.linuxpourtous.com mirror</para>
</listitem>
<listitem>
<para><ulink url="mailto:baque@cict.fr">Philippe Baqu&eacute;</ulink>
&lt;baque@cict.fr&gt; &ndash; lfs.cict.fr mirror</para>
</listitem>
<listitem>
<para><ulink url="mailto:gyouja@pilgrims.ru">Vitaly Chekasin</ulink>
&lt;gyouja@pilgrims.ru&gt; &ndash; lfs.pilgrims.ru mirror</para>
</listitem>
<listitem>
<para><ulink url="mailto:kontakt@wankoo.org">Benjamin Heil</ulink>
&lt;kontakt@wankoo.org&gt; &ndash; lfs.wankoo.org mirror</para>
</listitem>
</itemizedlist>
<bridgehead renderas="sect3">Asian Mirrors</bridgehead>
<itemizedlist>
<listitem>
<para><ulink url="mailto:satit@wbac.ac.th">Satit Phermsawang</ulink>
&lt;satit@wbac.ac.th&gt; &ndash; lfs.phayoune.org mirror</para>
</listitem>
<listitem>
<para><ulink url="mailto:info@shizu-net.jp">Shizunet Co.,Ltd.</ulink>
&lt;info@shizu-net.jp&gt; &ndash; lfs.mirror.shizu-net.jp mirror</para>
</listitem>
<listitem>
<para><ulink url="http://www.initworld.com/">Init World</ulink>
&lt;http://www.initworld.com/&gt; &ndash; lfs.initworld.com mirror</para>
</listitem>
</itemizedlist>
<bridgehead renderas="sect3">Australian Mirrors</bridgehead>
<itemizedlist>
<listitem>
<para><ulink url="mailto:jason@dstc.edu.au">Jason Andrade</ulink>
&lt;jason@dstc.edu.au&gt; &ndash; au.linuxfromscratch.org mirror</para>
</listitem>
</itemizedlist>
<bridgehead renderas="sect2">Former Project Team Members</bridgehead>
<itemizedlist>
<listitem>
<para><ulink url="mailto:theladyskye@linuxfromscratch.org">Christine
Barczak</ulink> &lt;theladyskye@linuxfromscratch.org&gt; &ndash; LFS
Book Editor</para>
</listitem>
<listitem>
<para>Archaic
&lt;archaic@linuxfromscratch.org&gt; &ndash; LFS Technical Writer/Editor,
HLFS Project Leader, BLFS Editor, Hints and Patches Project
Maintainer</para>
</listitem>
<listitem>
<para><ulink url="mailto:nathan@linuxfromscratch.org">Nathan
Coulson</ulink> &lt;nathan@linuxfromscratch.org&gt; &ndash;
LFS-Bootscripts Maintainer</para>
</listitem>
<listitem>
<para>Timothy Bauscher</para>
</listitem>
<listitem>
<para>Robert Briggs</para>
</listitem>
<listitem>
<para>Ian Chilton</para>
</listitem>
<listitem>
<para><ulink url="mailto:jeroen@linuxfromscratch.org">Jeroen
Coumans</ulink> &lt;jeroen@linuxfromscratch.org&gt; &ndash; Website
Developer, FAQ Maintainer</para>
</listitem>
<listitem>
<para><ulink url="mailto:manuel@linuxfromscratch.org">Manuel
Canales Esparcia</ulink> &lt;manuel@linuxfromscratch.org&gt; &ndash;
LFS/BLFS/HLFS XML and XSL Maintainer</para>
</listitem>
<listitem>
<para>Alex Groenewoud &ndash; LFS Technical Writer</para>
</listitem>
<listitem>
<para>Marc Heerdink</para>
</listitem>
<listitem>
<para><ulink url="mailto:jhuntwork@linuxfromscratch.org">Jeremy
Huntwork</ulink> &lt;jhuntwork@linuxfromscratch.org&gt; &ndash; LFS
Technical Writer, LFS LiveCD Maintainer</para>
</listitem>
<listitem>
<para>Mark Hymers</para>
</listitem>
<listitem><para>Seth W. Klein &ndash; FAQ maintainer</para></listitem>
<listitem>
<para><ulink url="mailto:nicholas@linuxfromscratch.org">Nicholas
Leippe</ulink> &lt;nicholas@linuxfromscratch.org&gt; &ndash; Wiki
Maintainer</para>
</listitem>
<listitem>
<para><ulink url="mailto:lizardo@linuxfromscratch.org">Anderson
Lizardo</ulink> &lt;lizardo@linuxfromscratch.org&gt; &ndash; Website
Backend-Scripts Maintainer</para>
</listitem>
<listitem>
<para><ulink url="mailto:dnicholson@linuxfromscratch.org">Dan
Nicholson</ulink> &lt;dnicholson@linuxfromscratch.org&gt; &ndash; LFS and
BLFS Editor</para>
</listitem>
<listitem>
<para><ulink url="mailto:alexander@linuxfromscratch.org">Alexander
E. Patrakov</ulink> &lt;alexander@linuxfromscratch.org&gt; &ndash; LFS
Technical Writer, LFS Internationalization Editor,
LFS Live CD Maintainer</para>
</listitem>
<listitem>
<para>Simon Perreault</para>
</listitem>
<listitem>
<para><ulink url="mailto:scot@linuxfromscratch.org">Scot Mc
Pherson</ulink> &lt;scot@linuxfromscratch.org&gt; &ndash; LFS NNTP
Gateway Maintainer</para>
</listitem>
<listitem>
<para><ulink url="mailto:gschafer@zip.com.au">Greg Schafer</ulink>
&lt;gschafer@zip.com.au&gt; &ndash; LFS Technical Writer and
Architect of the Next Generation 64-bit-enabling Build Method</para>
</listitem>
<listitem>
<para>Jesse Tie-Ten-Quee &ndash; LFS Technical Writer</para>
</listitem>
<listitem>
<para><ulink url="mailto:jwrober@linuxfromscratch.org">James
Robertson</ulink> &lt;jwrober@linuxfromscratch.org&gt; &ndash; Bugzilla
Maintainer</para>
</listitem>
<listitem>
<para><ulink url="mailto:tushar@linuxfromscratch.org">Tushar
Teredesai</ulink> &lt;tushar@linuxfromscratch.org&gt; &ndash; BLFS Book
Editor, Hints and Patches Project Leader</para>
</listitem>
<listitem>
<para><ulink url="mailto:jeremy@linuxfromscratch.org">Jeremy
Utley</ulink> &lt;jeremy@linuxfromscratch.org&gt; &ndash; LFS Technical
Writer, Bugzilla Maintainer, LFS-Bootscripts Maintainer</para>
</listitem>
<listitem>
<para><ulink url="mailto:zwinkles@gmail.com">Zack Winkles</ulink>
&lt;zwinkles@gmail.com&gt; &ndash; LFS Technical Writer</para>
</listitem>
</itemizedlist>
<!--
<bridgehead renderas="sect2">A very special thank you to our
donators</bridgehead>
<itemizedlist>
<listitem>
<para><ulink url="mailto:dean@vipersoft.co.uk">Dean Benson</ulink>
&lt;dean@vipersoft.co.uk&gt; for several monetary contributions</para>
</listitem>
<listitem>
<para><ulink url="mailto:hrx@hrxnet.de">Hagen Herrschaft</ulink>
&lt;hrx@hrxnet.de&gt; for donating a 2.2 GHz P4 system, now running
under the name of Lorien</para>
</listitem>
<listitem>
<para><ulink url="http://www.seocompany.ca/">SEO Company Canada</ulink>
supports Open Source projects and different Linux distributions</para>
</listitem>
<listitem>
<para><ulink url="http://www.vasoftware.com">VA Software</ulink> who,
on behalf of <ulink url="http://www.linux.com">Linux.com</ulink>,
donated a VA Linux 420 (former StartX SP2) workstation</para>
</listitem>
<listitem>
<para>Mark Stone for donating Belgarath, the first linuxfromscratch.org
server</para>
</listitem>
</itemizedlist>
-->
</appendix>

View File

@ -0,0 +1,538 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<appendix id="appendixa" xreflabel="Appendix A">
<?dbhtml dir="appendices"?>
<?dbhtml filename="acronymlist.html"?>
<title>Acronyms and Terms</title>
<variablelist>
<?dbfo list-presentation="list"?>
<?dbhtml list-presentation="table"?>
<varlistentry>
<term><emphasis role="bold">ABI</emphasis></term>
<listitem>
<para>Application Binary Interface</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">ALFS</emphasis></term>
<listitem>
<para>Automated Linux From Scratch</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">API</emphasis></term>
<listitem>
<para>Application Programming Interface</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">ASCII</emphasis></term>
<listitem>
<para>American Standard Code for Information Interchange</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">BIOS</emphasis></term>
<listitem>
<para>Basic Input/Output System</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">BLFS</emphasis></term>
<listitem>
<para>Beyond Linux From Scratch</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">BSD</emphasis></term>
<listitem>
<para>Berkeley Software Distribution</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">chroot</emphasis></term>
<listitem>
<para>change root</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">CMOS</emphasis></term>
<listitem>
<para>Complementary Metal Oxide Semiconductor</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">COS</emphasis></term>
<listitem>
<para>Class Of Service</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">CPU</emphasis></term>
<listitem>
<para>Central Processing Unit</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">CRC</emphasis></term>
<listitem>
<para>Cyclic Redundancy Check</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">CVS</emphasis></term>
<listitem>
<para>Concurrent Versions System</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">DHCP</emphasis></term>
<listitem>
<para>Dynamic Host Configuration Protocol</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">DNS</emphasis></term>
<listitem>
<para>Domain Name Service</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">EGA</emphasis></term>
<listitem>
<para>Enhanced Graphics Adapter</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">ELF</emphasis></term>
<listitem>
<para>Executable and Linkable Format</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">EOF</emphasis></term>
<listitem>
<para>End of File</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">EQN</emphasis></term>
<listitem>
<para>equation</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">ext2</emphasis></term>
<listitem>
<para>second extended file system</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">ext3</emphasis></term>
<listitem>
<para>third extended file system</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">ext4</emphasis></term>
<listitem>
<para>fourth extended file system</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">FAQ</emphasis></term>
<listitem>
<para>Frequently Asked Questions</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">FHS</emphasis></term>
<listitem>
<para>Filesystem Hierarchy Standard</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">FIFO</emphasis></term>
<listitem>
<para>First-In, First Out</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">FQDN</emphasis></term>
<listitem>
<para>Fully Qualified Domain Name</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">FTP</emphasis></term>
<listitem>
<para>File Transfer Protocol</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">GB</emphasis></term>
<listitem>
<para>Gigabytes</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">GCC</emphasis></term>
<listitem>
<para>GNU Compiler Collection</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">GID</emphasis></term>
<listitem>
<para>Group Identifier</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">GMT</emphasis></term>
<listitem>
<para>Greenwich Mean Time</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">HTML</emphasis></term>
<listitem>
<para>Hypertext Markup Language</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">IDE</emphasis></term>
<listitem>
<para>Integrated Drive Electronics</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">IEEE</emphasis></term>
<listitem>
<para>Institute of Electrical and Electronic Engineers</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">IO</emphasis></term>
<listitem>
<para>Input/Output</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">IP</emphasis></term>
<listitem>
<para>Internet Protocol</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">IPC</emphasis></term>
<listitem>
<para>Inter-Process Communication</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">IRC</emphasis></term>
<listitem>
<para>Internet Relay Chat</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">ISO</emphasis></term>
<listitem>
<para>International Organization for Standardization</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">ISP</emphasis></term>
<listitem>
<para>Internet Service Provider</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">KB</emphasis></term>
<listitem>
<para>Kilobytes</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">LED</emphasis></term>
<listitem>
<para>Light Emitting Diode</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">LFS</emphasis></term>
<listitem>
<para>Linux From Scratch</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">LSB</emphasis></term>
<listitem>
<para>Linux Standard Base</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">MB</emphasis></term>
<listitem>
<para>Megabytes</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">MBR</emphasis></term>
<listitem>
<para>Master Boot Record</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">MD5</emphasis></term>
<listitem>
<para>Message Digest 5</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">NIC</emphasis></term>
<listitem>
<para>Network Interface Card</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">NLS</emphasis></term>
<listitem>
<para>Native Language Support</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">NNTP</emphasis></term>
<listitem>
<para>Network News Transport Protocol</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">NPTL</emphasis></term>
<listitem>
<para>Native POSIX Threading Library</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">OSS</emphasis></term>
<listitem>
<para>Open Sound System</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">PCH</emphasis></term>
<listitem>
<para>Pre-Compiled Headers</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">PCRE</emphasis></term>
<listitem>
<para>Perl Compatible Regular Expression</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">PID</emphasis></term>
<listitem>
<para>Process Identifier</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">PTY</emphasis></term>
<listitem>
<para>pseudo terminal</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">QOS</emphasis></term>
<listitem>
<para>Quality Of Service</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">RAM</emphasis></term>
<listitem>
<para>Random Access Memory</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">RPC</emphasis></term>
<listitem>
<para>Remote Procedure Call</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">RTC</emphasis></term>
<listitem>
<para>Real Time Clock</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">SBU</emphasis></term>
<listitem>
<para>Standard Build Unit</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">SCO</emphasis></term>
<listitem>
<para>The Santa Cruz Operation</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">SHA1</emphasis></term>
<listitem>
<para>Secure-Hash Algorithm 1</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">TLDP</emphasis></term>
<listitem>
<para>The Linux Documentation Project</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">TFTP</emphasis></term>
<listitem>
<para>Trivial File Transfer Protocol</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">TLS</emphasis></term>
<listitem>
<para>Thread-Local Storage</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">UID</emphasis></term>
<listitem>
<para>User Identifier</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">umask</emphasis></term>
<listitem>
<para>user file-creation mask</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">USB</emphasis></term>
<listitem>
<para>Universal Serial Bus</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">UTC</emphasis></term>
<listitem>
<para>Coordinated Universal Time</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">UUID</emphasis></term>
<listitem>
<para>Universally Unique Identifier</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">VC</emphasis></term>
<listitem>
<para>Virtual Console</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">VGA</emphasis></term>
<listitem>
<para>Video Graphics Array</para>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">VT</emphasis></term>
<listitem>
<para>Virtual Terminal</para>
</listitem>
</varlistentry>
</variablelist>
</appendix>

View File

@ -0,0 +1,403 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="CC" xreflabel="Creative Commons License">
<?dbhtml filename="creat-comm.html"?>
<title>Creative Commons License</title>
<para role='title'>Creative Commons Legal Code</para>
<para role='title'>Attribution-NonCommercial-ShareAlike 2.0</para>
<important>
<para>CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT
PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN
ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN
"AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE INFORMATION
PROVIDED, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM ITS
USE.</para>
</important>
<para role='title'>License</para>
<para>THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE
COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY
COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS
AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.</para>
<para>BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE
BOUND BY THE TERMS OF THIS LICENSE. THE LICENSOR GRANTS YOU THE RIGHTS
CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND
CONDITIONS.</para>
<orderedlist>
<?dbfo label-width="1.5em"?>
<listitem>
<para>Definitions</para>
<orderedlist>
<listitem>
<para>"Collective Work" means a work, such as a periodical issue, anthology or
encyclopedia, in which the Work in its entirety in unmodified form, along
with a number of other contributions, constituting separate and independent
works in themselves, are assembled into a collective whole. A work that
constitutes a Collective Work will not be considered a Derivative Work (as
defined below) for the purposes of this License.</para>
</listitem>
<listitem>
<para>"Derivative Work" means a work based upon the Work or upon
the Work and other pre-existing works, such as a translation, musical
arrangement, dramatization, fictionalization, motion picture version, sound
recording, art reproduction, abridgment, condensation, or any other form in
which the Work may be recast, transformed, or adapted, except that a work
that constitutes a Collective Work will not be considered a Derivative Work
for the purpose of this License. For the avoidance of doubt, where the Work
is a musical composition or sound recording, the synchronization of the Work
in timed-relation with a moving image ("synching") will be considered a
Derivative Work for the purpose of this License.</para>
</listitem>
<listitem>
<para>"Licensor" means the individual or entity that offers the
Work under the terms of this License.</para>
</listitem>
<listitem>
<para>"Original Author" means the individual or entity who created
the Work.</para>
</listitem>
<listitem>
<para>"Work" means the copyrightable work of authorship offered
under the terms of this License.</para>
</listitem>
<listitem>
<para>"You" means an individual or entity exercising rights under
this License who has not previously violated the terms of this License with
respect to the Work, or who has received express permission from the
Licensor to exercise rights under this License despite a previous
violation.</para>
</listitem>
<listitem>
<para>"License Elements" means the following high-level license
attributes as selected by Licensor and indicated in the title of this
License: Attribution, Noncommercial, ShareAlike.</para>
</listitem>
</orderedlist>
</listitem>
<listitem>
<para>Fair Use Rights. Nothing in this license is intended to reduce,
limit, or restrict any rights arising from fair use, first sale or other
limitations on the exclusive rights of the copyright owner under copyright law
or other applicable laws.</para>
</listitem>
<listitem>
<para>License Grant. Subject to the terms and conditions of this
License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive,
perpetual (for the duration of the applicable copyright) license to exercise
the rights in the Work as stated below:</para>
<orderedlist>
<listitem>
<para>to reproduce the Work, to incorporate the Work into one or
more Collective Works, and to reproduce the Work as incorporated in the
Collective Works;</para>
</listitem>
<listitem>
<para>to create and reproduce Derivative Works;</para>
</listitem>
<listitem>
<para>to distribute copies or phonorecords of, display publicly,
perform publicly, and perform publicly by means of a digital audio
transmission the Work including as incorporated in Collective
Works;</para>
</listitem>
<listitem>
<para>to distribute copies or phonorecords of, display publicly,
perform publicly, and perform publicly by means of a digital audio
transmission Derivative Works;</para>
</listitem>
</orderedlist>
<para>The above rights may be exercised in all media and formats whether now
known or hereafter devised. The above rights include the right to make such
modifications as are technically necessary to exercise the rights in other
media and formats. All rights not expressly granted by Licensor are hereby
reserved, including but not limited to the rights set forth in Sections 4(e)
and 4(f).</para>
</listitem>
<listitem>
<para>Restrictions.The license granted in Section 3 above is
expressly made subject to and limited by the following
restrictions:</para>
<orderedlist>
<listitem>
<para>You may distribute, publicly display, publicly perform, or
publicly digitally perform the Work only under the terms of this License, and
You must include a copy of, or the Uniform Resource Identifier for, this
License with every copy or phonorecord of the Work You distribute, publicly
display, publicly perform, or publicly digitally perform. You may not offer
or impose any terms on the Work that alter or restrict the terms of this
License or the recipients' exercise of the rights granted hereunder. You may
not sublicense the Work. You must keep intact all notices that refer to this
License and to the disclaimer of warranties. You may not distribute, publicly
display, publicly perform, or publicly digitally perform the Work with any
technological measures that control access or use of the Work in a manner
inconsistent with the terms of this License Agreement. The above applies to
the Work as incorporated in a Collective Work, but this does not require the
Collective Work apart from the Work itself to be made subject to the terms of
this License. If You create a Collective Work, upon notice from any Licensor
You must, to the extent practicable, remove from the Collective Work any
reference to such Licensor or the Original Author, as requested. If You
create a Derivative Work, upon notice from any Licensor You must, to the
extent practicable, remove from the Derivative Work any reference to such
Licensor or the Original Author, as requested.</para>
</listitem>
<listitem>
<para>You may distribute, publicly display, publicly perform, or
publicly digitally perform a Derivative Work only under the terms of this
License, a later version of this License with the same License Elements as
this License, or a Creative Commons iCommons license that contains the same
License Elements as this License (e.g. Attribution-NonCommercial-ShareAlike
2.0 Japan). You must include a copy of, or the Uniform Resource Identifier
for, this License or other license specified in the previous sentence with
every copy or phonorecord of each Derivative Work You distribute, publicly
display, publicly perform, or publicly digitally perform. You may not offer
or impose any terms on the Derivative Works that alter or restrict the terms
of this License or the recipients' exercise of the rights granted hereunder,
and You must keep intact all notices that refer to this License and to the
disclaimer of warranties. You may not distribute, publicly display, publicly
perform, or publicly digitally perform the Derivative Work with any
technological measures that control access or use of the Work in a manner
inconsistent with the terms of this License Agreement. The above applies to
the Derivative Work as incorporated in a Collective Work, but this does not
require the Collective Work apart from the Derivative Work itself to be made
subject to the terms of this License.</para>
</listitem>
<listitem>
<para>You may not exercise any of the rights granted to You in
Section 3 above in any manner that is primarily intended for or directed
toward commercial advantage or private monetary compensation. The exchange of
the Work for other copyrighted works by means of digital file-sharing or
otherwise shall not be considered to be intended for or directed toward
commercial advantage or private monetary compensation, provided there is no
payment of any monetary compensation in connection with the exchange of
copyrighted works.</para>
</listitem>
<listitem>
<para>If you distribute, publicly display, publicly perform, or
publicly digitally perform the Work or any Derivative Works or Collective
Works, You must keep intact all copyright notices for the Work and give the
Original Author credit reasonable to the medium or means You are utilizing by
conveying the name (or pseudonym if applicable) of the Original Author if
supplied; the title of the Work if supplied; to the extent reasonably
practicable, the Uniform Resource Identifier, if any, that Licensor specifies
to be associated with the Work, unless such URI does not refer to the
copyright notice or licensing information for the Work; and in the case of a
Derivative Work, a credit identifying the use of the Work in the Derivative
Work (e.g., "French translation of the Work by Original Author," or
"Screenplay based on original Work by Original Author"). Such credit may be
implemented in any reasonable manner; provided, however, that in the case of
a Derivative Work or Collective Work, at a minimum such credit will appear
where any other comparable authorship credit appears and in a manner at least
as prominent as such other comparable authorship credit.</para>
</listitem>
<listitem>
<para>For the avoidance of doubt, where the Work is a musical
composition:</para>
<orderedlist>
<listitem>
<para>Performance Royalties Under Blanket Licenses. Licensor
reserves the exclusive right to collect, whether individually or via a
performance rights society (e.g. ASCAP, BMI, SESAC), royalties for the
public performance or public digital performance (e.g. webcast) of the
Work if that performance is primarily intended for or directed toward
commercial advantage or private monetary compensation.</para>
</listitem>
<listitem>
<para>Mechanical Rights and Statutory Royalties. Licensor
reserves the exclusive right to collect, whether individually or via a
music rights agency or designated agent (e.g. Harry Fox Agency),
royalties for any phonorecord You create from the Work ("cover
version") and distribute, subject to the compulsory license created
by 17 USC Section 115 of the US Copyright Act (or the equivalent in
other jurisdictions), if Your distribution of such cover version is primarily
intended for or directed toward commercial advantage or private monetary
compensation. 6. Webcasting Rights and Statutory Royalties. For the
avoidance of doubt, where the Work is a sound recording, Licensor
reserves the exclusive right to collect, whether individually or via a
performance-rights society (e.g. SoundExchange), royalties for the public
digital performance (e.g. webcast) of the Work, subject to the compulsory
license created by 17 USC Section 114 of the US Copyright Act (or the
equivalent in other jurisdictions), if Your public digital performance is
primarily intended for or directed toward commercial advantage or private
monetary compensation.</para>
</listitem>
</orderedlist>
</listitem>
<listitem>
<para>Webcasting Rights and Statutory Royalties. For the
avoidance of doubt, where the Work is a sound recording, Licensor reserves
the exclusive right to collect, whether individually or via a
performance-rights society (e.g. SoundExchange), royalties for the public
digital performance (e.g. webcast) of the Work, subject to the compulsory
license created by 17 USC Section 114 of the US Copyright Act (or the
equivalent in other jurisdictions), if Your public digital performance is
primarily intended for or directed toward commercial advantage or private
monetary compensation.</para>
</listitem>
</orderedlist>
</listitem>
<listitem>
<para>Representations, Warranties and Disclaimer</para>
<para>UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR
OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND
CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING,
WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A
PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS,
ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE.
SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH
EXCLUSION MAY NOT APPLY TO YOU.</para>
</listitem>
<listitem>
<para>Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY
APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY
FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES
ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN
ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</para>
</listitem>
<listitem>
<para>Termination</para>
<orderedlist>
<listitem>
<para>This License and the rights granted hereunder will terminate
automatically upon any breach by You of the terms of this License.
Individuals or entities who have received Derivative Works or Collective
Works from You under this License, however, will not have their licenses
terminated provided such individuals or entities remain in full compliance
with those licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any
termination of this License.</para>
</listitem>
<listitem>
<para>Subject to the above terms and conditions, the license
granted here is perpetual (for the duration of the applicable copyright in
the Work). Notwithstanding the above, Licensor reserves the right to release
the Work under different license terms or to stop distributing the Work at
any time; provided, however that any such election will not serve to withdraw
this License (or any other license that has been, or is required to be,
granted under the terms of this License), and this License will continue in
full force and effect unless terminated as stated above.</para>
</listitem>
</orderedlist>
</listitem>
<listitem>
<para>Miscellaneous</para>
<orderedlist>
<listitem>
<para>Each time You distribute or publicly digitally perform the
Work or a Collective Work, the Licensor offers to the recipient a license to
the Work on the same terms and conditions as the license granted to You under
this License.</para>
</listitem>
<listitem>
<para>Each time You distribute or publicly digitally perform a
Derivative Work, Licensor offers to the recipient a license to the original
Work on the same terms and conditions as the license granted to You under
this License.</para>
</listitem>
<listitem>
<para>If any provision of this License is invalid or unenforceable
under applicable law, it shall not affect the validity or enforceability of
the remainder of the terms of this License, and without further action by the
parties to this agreement, such provision shall be reformed to the minimum
extent necessary to make such provision valid and
enforceable.</para>
</listitem>
<listitem>
<para>No term or provision of this License shall be deemed waived
and no breach consented to unless such waiver or consent shall be in writing
and signed by the party to be charged with such waiver or
consent.</para>
</listitem>
<listitem>
<para>This License constitutes the entire agreement between the
parties with respect to the Work licensed here. There are no understandings,
agreements or representations with respect to the Work not specified here.
Licensor shall not be bound by any additional provisions that may appear in
any communication from You. This License may not be modified without the
mutual written agreement of the Licensor and You.</para>
</listitem>
</orderedlist>
</listitem>
</orderedlist>
<important>
<para>Creative Commons is not a party to this License, and makes no warranty
whatsoever in connection with the Work. Creative Commons will not be liable to
You or any party on any legal theory for any damages whatsoever, including
without limitation any general, special, incidental or consequential damages
arising in connection to this license. Notwithstanding the foregoing two (2)
sentences, if Creative Commons has expressly identified itself as the Licensor
hereunder, it shall have all rights and obligations of Licensor.</para>
<para>Except for the limited purpose of indicating to the public that the Work is
licensed under the CCPL, neither party will use the trademark "Creative
Commons" or any related trademark or logo of Creative Commons without the prior
written consent of Creative Commons. Any permitted use will be in compliance
with Creative Commons' then-current trademark usage guidelines, as may be
published on its website or otherwise made available upon request from time to
time.</para>
<para>Creative Commons may be contacted at <ulink url='http://creativecommons.org/' />.</para>
</important>
</sect1>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<appendix id="Licenses" xreflabel="Appendix E">
<?dbhtml dir="appendices"?>
<?dbhtml filename="licenses.html"?>
<title>LFS Licenses</title>
<para>This book is licensed under the Creative Commons
Attribution-NonCommercial-ShareAlike 2.0 License.</para>
<para>Computer instructions may be extracted from the book under the MIT
License.</para>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="creat-comm.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="mit-lic.xml"/>
</appendix>

View File

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="MIT" xreflabel="MIT License">
<?dbhtml filename="mit.html" ?>
<title>The MIT License</title>
<para>Copyright &copy; &copyrightdate; Gerard Beekmans</para>
<para>Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:</para>
<para>The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.</para>
<para>THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.</para>
</sect1>

View File

@ -0,0 +1,129 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-intro-askforhelp">
<?dbhtml filename="askforhelp.html"?>
<title>Help</title>
<para>If an issue or a question is encountered while working through
this book, please check the FAQ page at <ulink url="&faq-root;#generalfaq"/>.
Questions are often already answered there. If your question is not
answered on this page, try to find the source of the problem. The
following hint will give you some guidance for troubleshooting:
<ulink url="&hints-root;errors.txt"/>.</para>
<para>If you cannot find your problem listed in the FAQ, search the mailing
lists at <ulink url="&lfs-root;search.html"/>.</para>
<para>We also have a wonderful LFS community that is willing to offer
assistance through the mailing lists and IRC (see the <xref
linkend="ch-intro-resources"/> section of this book). However,
we get several support questions every day and many of them can be easily
answered by going to the FAQ and by searching the mailing lists first.
So, for us to offer the best assistance possible, you need to do some
research on your own first. That allows us to focus on the more unusual
support needs. If your searches do not produce a solution, please include
all relevant information (mentioned below) in your request for help.</para>
<sect2>
<title>Things to Mention</title>
<para>Apart from a brief explanation of the problem being experienced,
the essential things to include in any request for help are:</para>
<itemizedlist>
<listitem>
<para>The version of the book being used (in this case &version;)</para>
</listitem>
<listitem>
<para>The host distribution and version being used to create LFS</para>
</listitem>
<listitem>
<para>The output from the <xref linkend='version-check'/> script</para>
</listitem>
<listitem>
<para>The package or section the problem was encountered in</para>
</listitem>
<listitem>
<para>The exact error message or symptom being received</para>
</listitem>
<listitem>
<para>Note whether you have deviated from the book at all </para>
</listitem>
</itemizedlist>
<note>
<para>Deviating from this book does <emphasis>not</emphasis> mean that
we will not help you. After all, LFS is about personal preference.
Being upfront about any changes to the established procedure helps us
evaluate and determine possible causes of your problem.</para>
</note>
</sect2>
<sect2>
<title>Configure Script Problems</title>
<para>If something goes wrong while running the <command>configure</command>
script, review the <filename>config.log</filename> file. This file may
contain errors encountered during <command>configure</command> which were
not printed to the screen. Include the <emphasis>relevant</emphasis> lines
if you need to ask for help.</para>
</sect2>
<sect2>
<title>Compilation Problems</title>
<para>Both the screen output and the contents of various files are useful
in determining the cause of compilation problems. The screen output from
the <command>configure</command> script and the <command>make</command>
run can be helpful. It is not necessary to include the entire output, but
do include enough of the relevant information. Below is an example of the
type of information to include from the screen output from
<command>make</command>:</para>
<screen><computeroutput>gcc -DALIASPATH=\"/mnt/lfs/usr/share/locale:.\"
-DLOCALEDIR=\"/mnt/lfs/usr/share/locale\"
-DLIBDIR=\"/mnt/lfs/usr/lib\"
-DINCLUDEDIR=\"/mnt/lfs/usr/include\" -DHAVE_CONFIG_H -I. -I.
-g -O2 -c getopt1.c
gcc -g -O2 -static -o make ar.o arscan.o commands.o dir.o
expand.o file.o function.o getopt.o implicit.o job.o main.o
misc.o read.o remake.o rule.o signame.o variable.o vpath.o
default.o remote-stub.o version.o opt1.o
-lutil job.o: In function `load_too_high':
/lfs/tmp/make-3.79.1/job.c:1565: undefined reference
to `getloadavg'
collect2: ld returned 1 exit status
make[2]: *** [make] Error 1
make[2]: Leaving directory `/lfs/tmp/make-3.79.1'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/lfs/tmp/make-3.79.1'
make: *** [all-recursive-am] Error 2</computeroutput></screen>
<para>In this case, many people would just include the bottom
section:</para>
<screen><computeroutput>make [2]: *** [make] Error 1</computeroutput></screen>
<para>This is not enough information to properly diagnose the problem
because it only notes that something went wrong, not
<emphasis>what</emphasis> went wrong. The entire section, as in the
example above, is what should be saved because it includes the command
that was executed and the associated error message(s).</para>
<para>An excellent article about asking for help on the Internet is
available online at <ulink
url="http://catb.org/~esr/faqs/smart-questions.html"/>. Read and
follow the hints in this document to increase the likelihood of getting
the help you need.</para>
</sect2>
</sect1>

View File

@ -0,0 +1,725 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-scatter-changelog">
<?dbhtml filename="changelog.html"?>
<title>Changelog</title>
<para>This is version &version; of the Linux From Scratch book, dated
&releasedate;. If this book is more than six months old, a newer and better
version is probably already available. To find out, please check one of the
mirrors via <ulink url="&lfs-root;mirrors.html"/>.</para>
<para>Below is a list of changes made since the previous release of the
book.</para>
<itemizedlist>
<title>Changelog Entries:</title>
<!-- Changelog template
<listitem>
<para>Date</para>
<itemizedlist>
<listitem>
<para>[name] - New changelog entry.</para>
</listitem>
<listitem>
<para>[name] - Previous changelog entry.</para>
</listitem>
</itemizedlist>
</listitem>
-->
<listitem>
<para>2016-01-17</para>
<itemizedlist>
<listitem>
<para>[dj] - Sync to LFS r10986.</para>
</listitem>
<listitem>
<para>[dj] - Update to linux-4.4 - Merged from trunk.</para>
</listitem>
<listitem>
<para>[dj] - Update to iproute2-4.4.0 - Merged from trunk.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>2016-01-02</para>
<itemizedlist>
<listitem>
<para>[dj] - Fix build of systemd with libblkid and libmount in
/tools/lib and move util-linux to its previous build order to
solve reciprocal dependency.</para>
</listitem>
<listitem>
<para>[dj] - Removed /etc/resolv.conf symlink in network
configuration as it is created automatically if needed.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>2016-01-01</para>
<itemizedlist>
<listitem>
<para>[dj] - Fix broken build order - move xz, kmod, gettext, and
util-linux before systemd.</para>
</listitem>
<listitem>
<para>[dj] - Update to man-pages-4.04 - Merged from trunk.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>2015-12-31</para>
<itemizedlist>
<listitem>
<para>[dj] - Use 'ipv4" instead of "yes" for DCHP configuration in
systemd-networkd configuration.</para>
</listitem>
<listitem>
<para>[dj] - Modify text in network configuration page to more
accurately reflect current version of systemd.</para>
</listitem>
<listitem>
<para>[dj] - Change build order for gperf before expat.</para>
</listitem>
<listitem>
<para>[dj] - Change build order for systemd before procps-ng.</para>
</listitem>
<listitem>
<para>[dj] - Add --with-systemd to procps-ng configuration.</para>
</listitem>
<listitem>
<para>[dj] - Update to systemd-228.</para>
</listitem>
<listitem>
<para>[dj] - Update to DBus-1.10.6.</para>
</listitem>
<listitem>
<para>[dj] - Sync to LFS r10981.</para>
</listitem>
<listitem>
<para>[dj] - Add OpenSSL as optional kernel dependency - Merged
from trunk.</para>
</listitem>
<listitem>
<para>[dj] - Update to findutils-4.6.0 - Merged from trunk.</para>
</listitem>
<listitem>
<para>[dj] - Update to gettext-0.19.7 - Merged from trunk.</para>
</listitem>
<listitem>
<para>[dj] - Update to linux-4.3.3 - Merged from trunk.</para>
</listitem>
<listitem>
<para>[dj] - Reword FHS Compliance Note - Merged from trunk.</para>
</listitem>
<listitem>
<para>[dj] - Update to perl-5.22.1 - Merged from trunk.</para>
</listitem>
<listitem>
<para>[dj] - Update to perl-5.22.1 - Merged from trunk.</para>
</listitem>
<listitem>
<para>[dj] - Update to man-pages-4.03 - Merged from trunk.</para>
</listitem>
<listitem>
<para>[dj] - Fix xz problem identified upstream - Merged from
trunk.</para>
</listitem>
<listitem>
<para>[dj] - Update to gcc-5.3.0 - Merged from trunk.</para>
</listitem>
<listitem>
<para>[dj] - Update to gmp-6.1.0 - Merged from trunk.</para>
</listitem>
<listitem>
<para>[dj] - Update host requirements to require GCC-4.7 or
later - Merged from trunk.</para>
</listitem>
<listitem>
<para>[dj] - Clarify that setting and using the LFS variable
assumes the bash shell - Merged from trunk.</para>
</listitem>
<listitem>
<para>[dj] - Update to flex-2.6.0 - Merged from trunk.</para>
</listitem>
<listitem>
<para>[dj] - Update to man-db-2.7.5 - Merged from trunk.</para>
</listitem>
<listitem>
<para>[dj] - Update to kmod-22 - Merged from trunk.</para>
</listitem>
<listitem>
<para>[dj] - Add glibc-2.22-largefile-1.patch.</para>
</listitem>
<listitem>
<para>[dj] - Update to linux-4.3 - Merged from trunk.</para>
</listitem>
<listitem>
<para>[dj] - Update to iproute2-4.3.0 - Merged from trunk.</para>
</listitem>
<listitem>
<para>[dj] - Update to grep-2.22 - Merged from trunk.</para>
</listitem>
<listitem>
<para>[dj] - Update to util-linux-2.27.1 - Merged from trunk.</para>
</listitem>
<listitem>
<para>[dj] - Revise version-check.sh to flag bad /bin/sh
symlinks - Merged from trunk.</para>
</listitem>
<listitem>
<para>[dj] - Update to less-481 - Merged from trunk.</para>
</listitem>
<listitem>
<para>[dj] - Update to man-db-2.7.4 - Merged from trunk.</para>
</listitem>
<listitem>
<para>[dj] - Update to tzdata2015g - Merged from trunk.</para>
</listitem>
<listitem>
<para>[dj] - Many updates to installed files and directories. Huge
thanks to Fernando - Merged from trunk.</para>
</listitem>
<listitem>
<para>[dj] - Reset location of anduin hosted files - Merged from
trunk.</para>
</listitem>
<listitem>
<para>[dj] - Change references to ncursesw5 to
ncursesw6. Thanks to Pierre Labastie for the patch - Merged from
trunk.</para>
</listitem>
<listitem>
<para>[dj] - Update to gettext-0.19.6 - Merged from trunk.</para>
</listitem>
<listitem>
<para>[dj] - Update to file-5.25 - Merged from trunk.</para>
</listitem>
<listitem>
<para>[dj] - Update to pkg-config-0.29 - Merged from trunk.</para>
</listitem>
<listitem>
<para>[dj] - Update to xz-5.2.2 - Merged from trunk.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>2015-09-28</para>
<itemizedlist>
<listitem>
<para>[renodr] - Fix a warning when doing the GCC compile tests.</para>
</listitem>
<listitem>
<para>[renodr] - Add additional discussion about copying LFS systems
from one machine to another machine.</para>
</listitem>
<listitem>
<para>[renodr] - Provide ncurses non-wide-character libraries that
are compliant with version 5 of ncurses.</para>
</listitem>
<listitem>
<para>[renodr] - Remove unnecessary sed in e2fsprogs.</para>
</listitem>
<listitem>
<para>[renodr] - Update to util-linux-2.27.</para>
</listitem>
<listitem>
<para>[renodr] - Update to linux-4.2.</para>
</listitem>
<listitem>
<para>[renodr] - Update to iproute2-4.2.0.</para>
</listitem>
<listitem>
<para>[renodr] - Refresh build sizes and SBU values.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>2015-08-25</para>
<itemizedlist>
<listitem>
<para>[renodr] - Add an upstream patch for MPFR.</para>
</listitem>
<listitem>
<para>[renodr] - Update to libpipeline-1.4.1.</para>
</listitem>
<listitem>
<para>[renodr] - Update to linux-4.1.6.</para>
</listitem>
<listitem>
<para>[renodr] - Update to man-db-2.7.2.</para>
</listitem>
<listitem>
<para>[renodr] - Add a patch to allow glibc to build properly on i386 systems.</para>
</listitem>
<listitem>
<para>[renodr] - Remove obsolete r* programs from inetutils.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>2015-08-19</para>
<itemizedlist>
<listitem>
<para>[bdubbs] - Add a workaround to ncurses in
Chapter 5 for hosts that have mawk installed.</para>
</listitem>
<listitem>
<para>[renodr] - Update to binutils-2.25.1.</para>
</listitem>
<listitem>
<para>[renodr] - Update to check-0.10.0.</para>
</listitem>
<listitem>
<para>[renodr] - Update to procps-ng-3.3.11.</para>
</listitem>
<listitem>
<para>[renodr] - Update to man-pages-4.02.</para>
</listitem>
<listitem>
<para>[renodr] - Update to glibc-2.22.</para>
</listitem>
<listitem>
<para>[renodr] - Update to linux-4.1.5.</para>
</listitem>
<listitem>
<para>[renodr] - Update to tzdata2015f.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>2015-07-23</para>
<itemizedlist>
<listitem>
<para>[krejzi] - Fixed a warning in the intltool-update
perl script caused by perl-5.22.</para>
</listitem>
<listitem>
<para>[krejzi] - Updated to dbus-1.8.20.</para>
</listitem>
<listitem>
<para>[krejzi] - Updated to systemd-222.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>2015-07-16</para>
<itemizedlist>
<listitem>
<para>[bdubbs] - Update to gcc-5.2.0. Fixes
<ulink url="&lfs-ticket-root;3819">*3819</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to gettext-0.19.5.1. Fixes
<ulink url="&lfs-ticket-root;3818">*3818</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to kbd-2.0.3. Fixes
<ulink url="&lfs-ticket-root;3815">#3815</ulink>.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>2015-07-12</para>
<itemizedlist>
<listitem>
<para>[bdubbs] - Update to iproute2-4.1.1. Fixes
<ulink url="&lfs-ticket-root;3811">*3811</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to file-5.24. Fixes
<ulink url="&lfs-ticket-root;3812">*3812</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to linux-4.1.2. Fixes
<ulink url="&lfs-ticket-root;3814">#3814</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to gettext-0.19.5. Fixes
<ulink url="&lfs-ticket-root;3813">#3813</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Fix a warning in the installed automake
perl script.
<ulink url="&lfs-ticket-root;3809">#3809</ulink>.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>2015-07-04</para>
<itemizedlist>
<listitem>
<para>[bdubbs] - Update to iproute2-4.1.0. Fixes
<ulink url="&lfs-ticket-root;3802">*3802</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to texinfo-6.0. Fixes
<ulink url="&lfs-ticket-root;3803">*3803</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to linux-4.1.1. Fixes
<ulink url="&lfs-ticket-root;3805">#3805</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to coreutils-8.24. Fixes
<ulink url="&lfs-ticket-root;3806">#3806</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update perl installed files. Fixes
<ulink url="&lfs-ticket-root;3804">#3804</ulink>.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>2015-06-28</para>
<itemizedlist>
<listitem>
<para>[krejzi] - Updated to systemd-221.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>2015-06-23</para>
<itemizedlist>
<listitem>
<para>[bdubbs] - Update to tzdata-2015e. Fixes
<ulink url="&lfs-ticket-root;3798">*3798</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to mpfr-3.1.3. Fixes
<ulink url="&lfs-ticket-root;3800">#3800</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to linux-4.1. Fixes
<ulink url="&lfs-ticket-root;3801">#3801</ulink>.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>2015-06-13</para>
<itemizedlist>
<listitem>
<para>[bdubbs] - Simplify gcc-pass1 instructions. Thanks to
Pierre Labastie for the patch. Fixes
<ulink url="&lfs-ticket-root;3797">#3797</ulink>.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>2015-06-10</para>
<itemizedlist>
<listitem>
<para>[bdubbs] - Update standards discussion for FHS 3.0
and LSB-5.0.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to inetutils-1.9.4. Fixes
<ulink url="&lfs-ticket-root;3796">#3796</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to file-5.23. Fixes
<ulink url="&lfs-ticket-root;3795">#3795</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to kmod-21. Fixes
<ulink url="&lfs-ticket-root;3794">#3794</ulink>.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>2015-06-07</para>
<itemizedlist>
<listitem>
<para>[bdubbs] - Update to linux-4.0.5. Fixes
<ulink url="&lfs-ticket-root;3793">#3793</ulink>.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>2015-06-05</para>
<itemizedlist>
<listitem>
<para>[bdubbs] - Update to perl-5.22.0. Fixes
<ulink url="&lfs-ticket-root;3791">#3791</ulink>.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>2015-05-25</para>
<itemizedlist>
<listitem>
<para>[bdubbs] - Update to bash-4.3.30-upstream_fixes-2.patch.
Fixes <ulink url="&lfs-ticket-root;3789">#3789</ulink>.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>2015-05-23</para>
<itemizedlist>
<listitem>
<para>[bdubbs] - Update to linux-4.0.4. Fixes
<ulink url="&lfs-ticket-root;3786">#3786</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to e2fsprogs-1.42.13. Fixes
<ulink url="&lfs-ticket-root;3787">#3787</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to gawk-4.1.3. Fixes
<ulink url="&lfs-ticket-root;3788">#3788</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Added a new patch for gcc to fix inline
issues and some libgomp problems.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>2015-05-15</para>
<itemizedlist>
<listitem>
<para>[bdubbs] - Add a patch from upstream to fix
some libgomp (gcc) problems.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>2015-05-14</para>
<itemizedlist>
<listitem>
<para>[bdubbs] - Update to gawk-4.1.2. Fixes
<ulink url="&lfs-ticket-root;3781">#3781</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to linux-4.0.3. Fixes
<ulink url="&lfs-ticket-root;3782">#3782</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to util-linux-2.26.2. Fixes
<ulink url="&lfs-ticket-root;3783">#3783</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to man-pages-4.00. Fixes
<ulink url="&lfs-ticket-root;3784">#3784</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to inetutils-1.9.3. Fixes
<ulink url="&lfs-ticket-root;3785">#3785</ulink>.</para>
</listitem>
<listitem>
<para>[krejzi] - Updated to dbus-1.8.18.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>2015-04-26</para>
<itemizedlist>
<listitem>
<para>[bdubbs] - Updated to tzdata-2015d. Fixes
<ulink url="&lfs-ticket-root;3780">#3780</ulink>.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>2015-04-24</para>
<itemizedlist>
<listitem>
<para>[krejzi] - Added a fix for security issue
in Glibc (CVE-2015-1781). Thanks to Ken Moffat
for identifying the problem and the fix.</para>
</listitem>
<listitem>
<para>[krejzi] - Fixed Ncurses and Perl build
with GCC 5. Thanks to Ken Moffat and Douglas
R. Reno for providing the patches.</para>
</listitem>
<listitem>
<para>[krejzi] - Updated to GCC-5.1.0. Fixes
<ulink url="&lfs-ticket-root;3779">#3779</ulink>.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>2015-04-21</para>
<itemizedlist>
<listitem>
<para>[bdubbs] - Update to man-pages-3.8.3. Fixes
<ulink url="&lfs-ticket-root;3778">#3778</ulink>.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>2015-04-16</para>
<itemizedlist>
<listitem>
<para>[bdubbs] - Update to linux-4.0. Fixes
<ulink url="&lfs-ticket-root;3775">#3775</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to tzdata-2015c. Fixes
<ulink url="&lfs-ticket-root;3776">#3776</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to iproute2-4.0.0. Fixes
<ulink url="&lfs-ticket-root;3777">#3777</ulink>.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>2015-03-31</para>
<itemizedlist>
<listitem>
<para>[bdubbs] - Adjust discussion of LFS envronment variable to be
before first use.</para>
</listitem>
<listitem>
<para>[bdubbs] - Use --with-glibc-version=2.11 in gcc-pass1.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to dejagnu-1.5.3. Fixes
<ulink url="&lfs-ticket-root;3773">#3773</ulink>.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>2015-03-28</para>
<itemizedlist>
<listitem>
<para>[bdubbs] - Update to linux-3.19.3. Fixes
<ulink url="&lfs-ticket-root;3772">#3772</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to tzdata2015b. Fixes
<ulink url="&lfs-ticket-root;3770">#3770</ulink>.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>2015-03-20</para>
<itemizedlist>
<listitem>
<para>[bdubbs] - Update to linux-3.19.2. Fixes
<ulink url="&lfs-ticket-root;3768">#3768</ulink>.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>2015-03-15</para>
<itemizedlist>
<listitem>
<para>[bdubbs] - Update to tcl-core-8.6.4. Fixes
<ulink url="&lfs-ticket-root;3766">#3766</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to util-linux-2.26.1. Fixes
<ulink url="&lfs-ticket-root;3767">#3767</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Remove non-essential static libraries
from the installation. Added a new section in Chapter 6
Introduction, suppressed many static libraries in different
packages, and removed the remaining in the Cleaning Up section.
Fixes
<ulink url="&lfs-ticket-root;3751">#3751</ulink>.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>2015-03-11</para>
<itemizedlist>
<listitem>
<para>[bdubbs] - Update to intltool-0.51.0. Fixes
<ulink url="&lfs-ticket-root;3764">#3764</ulink>.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>2015-03-08</para>
<itemizedlist>
<listitem>
<para>[bdubbs] - Update to linux-3.19.1. Fixes
<ulink url="&lfs-ticket-root;3763">#3763</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to patch-2.7.5. Fixes
<ulink url="&lfs-ticket-root;3762">#3762</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Change tcl to minimal tcl-core package. Fixes
<ulink url="&lfs-ticket-root;3752">#3752</ulink>.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>2015-03-07</para>
<itemizedlist>
<listitem>
<para>[bdubbs] - Update to mpc-1.0.3. Fixes
<ulink url="&lfs-ticket-root;3753">#3753</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to man-pages-3.8.1. Fixes
<ulink url="&lfs-ticket-root;3754">#3754</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to xz-5.2.1. Fixes
<ulink url="&lfs-ticket-root;3757">#3757</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to kmod-20. Fixes
<ulink url="&lfs-ticket-root;3758">#3758</ulink>.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>2015-03-06</para>
<itemizedlist>
<listitem>
<para>[krejzi] - LFS-7.7-systemd released.</para>
</listitem>
</itemizedlist>
</listitem>
</itemizedlist>
</sect1>

View File

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<chapter id="chapter-intro" xreflabel="Chapter 1">
<?dbhtml dir="chapter01"?>
<?dbhtml filename="chapter01.html"?>
<title>Introduction</title>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="how.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="whatsnew.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="changelog.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="resources.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="askforhelp.xml"/>
<!--<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="livecd.xml"/>-->
</chapter>

View File

@ -0,0 +1,96 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-intro-how">
<?dbhtml filename="how.html"?>
<title>How to Build an LFS System</title>
<para>The LFS system will be built by using an already installed
Linux distribution (such as Debian, OpenMandriva, Fedora, or openSUSE). This
existing Linux system (the host) will be used as a starting point to
provide necessary programs, including a compiler, linker, and shell,
to build the new system. Select the <quote>development</quote> option
during the distribution installation to be able to access these
tools.</para>
<para>As an alternative to installing a separate distribution onto your
machine, you may wish to use <!-- the Linux From Scratch LiveCD or --> a LiveCD from a
commercial distribution. <!-- The LFS LiveCD works well as a host system,
providing all the tools you need to successfully follow the instructions in
this book. The LiveCD version is behind the current book, but is still useful
as a host for building the current book. The <quote>-nosrc</quote> or
<quote>-min</quote> editions of the LiveCD are the most appropriate for
building a current LFS system. For more information about the LFS LiveCD or
to download a copy, visit <ulink url="&livecd-root;"/>. --></para>
<!--
<note>
<para>The LFS LiveCD might not work on newer hardware configurations,
failing to boot or failing to detect some devices such as some SATA hard
drives.</para>
</note> -->
<para><xref linkend="chapter-partitioning"/> of this book describes how
to create a new Linux native partition and file system. This is the place
where the new LFS system will be compiled and installed. <xref
linkend="chapter-getting-materials"/> explains which packages and
patches need to be downloaded to build an LFS system and how to store
them on the new file system. <xref linkend="chapter-final-preps"/>
discusses the setup of an appropriate working environment. Please read
<xref linkend="chapter-final-preps"/> carefully as it explains several
important issues you need be aware of before beginning to
work your way through <xref linkend="chapter-temporary-tools"/> and beyond.</para>
<para><xref linkend="chapter-temporary-tools"/> explains the
installation of a number of packages that will form the basic
development suite (or toolchain) which is used to build the actual
system in <xref linkend="chapter-building-system"/>. Some of these
packages are needed to resolve circular dependencies&mdash;for example,
to compile a compiler, you need a compiler.</para>
<para><xref linkend="chapter-temporary-tools"/> also shows you how to
build a first pass of the toolchain, including Binutils and GCC (first pass
basically means these two core packages will be reinstalled).
The next step is to build Glibc, the C library. Glibc will be compiled by
the toolchain programs built in the first pass. Then, a second pass of the
toolchain will be built. This time, the toolchain will be dynamically linked
against the newly built Glibc. The remaining <xref
linkend="chapter-temporary-tools"/> packages are built using this second
pass toolchain. When this is done, the LFS installation process will no
longer depend on the host distribution, with the exception of the running
kernel. </para>
<para>This effort to isolate the new system from the host distribution may
seem excessive. A full technical explanation as to why this is done is provided in
<xref linkend="ch-tools-toolchaintechnotes"/>.</para>
<para>In <xref linkend="chapter-building-system"/>, the full LFS system is
built. The <command>chroot</command> (change root) program is used to enter
a virtual environment and start a new shell whose root directory will be
set to the LFS partition. This is very similar to rebooting and instructing
the kernel to mount the LFS partition as the root partition. The system
does not actually reboot, but instead uses <command>chroot</command> because
creating a bootable system requires additional work which is not necessary
just yet. The major advantage is that <quote>chrooting</quote> allows you
to continue using the host system while LFS is being built. While waiting
for package compilations to complete, you can continue using your computer as
normal.</para>
<para>To finish the installation, the basic system configuration is set up in
<xref linkend="chapter-bootscripts"/>, and the kernel and boot loader are set
up in <xref linkend="chapter-bootable"/>. <xref linkend="chapter-finalizing"/>
contains information on continuing the LFS experience beyond this book.
After the steps in this book have been implemented, the computer will be
ready to reboot into the new LFS system.</para>
<para>This is the process in a nutshell. Detailed information on each
step is discussed in the following chapters and package descriptions.
Items that may seem complicated will be clarified, and everything will
fall into place as you embark on the LFS adventure.</para>
</sect1>

View File

@ -0,0 +1,106 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-intro-livecd">
<?dbhtml filename="livecd.html"?>
<title>About the Included CD</title>
<para>For your convenience, we have included a CD with this book that
contains the source packages needed for creating a Linux From Scratch
system. The CD is bootable and provides a stable working environment
for building LFS. This book refers to this system as the
<quote>host system.</quote> The CD images are actively maintained and
updated versions can be found at
<ulink url="ftp://ftp.lfs-matrix.net/pub/lfs-livecd/"/></para>
<para>In addition to the tools required to build LFS, the host system
on the CD has a number of other helpful tools installed:</para>
<itemizedlist>
<listitem>
<para>An HTML version of this book</para>
</listitem>
<listitem>
<para>The X Window System Environment</para>
</listitem>
<listitem>
<para>Web Tools</para>
<itemizedlist>
<listitem>
<para>Wget (command line file retriever)</para>
</listitem>
<listitem>
<para>Lynx (text web browser)</para>
</listitem>
<listitem>
<para>Irssi (console IRC client)</para>
</listitem>
<listitem>
<para>Firefox (graphical web browser)</para>
</listitem>
<listitem>
<para>Xchat (X-based IRC client)</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>Text Editors</para>
<itemizedlist>
<listitem>
<para>Vim</para>
</listitem>
<listitem>
<para>Nano</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>Network Tools</para>
<itemizedlist>
<listitem>
<para>SSH Server and Client</para>
</listitem>
<listitem>
<para>NFS Server and Client</para>
</listitem>
<listitem>
<para>Smbmount (mount.cifs) for Windows shares</para>
</listitem>
<listitem>
<para>Subversion</para>
</listitem>
<listitem>
<para>Dhcpcd (DHCP client)</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>Filesystem Programs</para>
<itemizedlist>
<listitem>
<para>Reiserfsprogs</para>
</listitem>
<listitem>
<para>Xfsprogs</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>nALFS - A tool for automating LFS builds</para>
</listitem>
</itemizedlist>
</sect1>

View File

@ -0,0 +1,92 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-intro-resources">
<?dbhtml filename="resources.html"?>
<title>Resources</title>
<sect2 id="ch-intro-faq">
<title>FAQ</title>
<para>If during the building of the LFS system you encounter any
errors, have any questions, or think there is a typo in the book,
please start by consulting the Frequently Asked Questions (FAQ)
that is located at <ulink url="&faq-root;"/>.</para>
</sect2>
<sect2 id="ch-intro-maillists" xreflabel="Chapter 1 - Mailing Lists">
<title>Mailing Lists</title>
<para>The <uri>linuxfromscratch.org</uri> server hosts a number of mailing
lists used for the development of the LFS project. These lists include the
main development and support lists, among others. If the FAQ does not solve
the problem you are having, the next step would be to search the mailing
lists at <ulink url="&lfs-root;search.html"/>.</para>
<para>For information on the different lists, how to subscribe, archive
locations, and additional information, visit
<ulink url="&lfs-root;mail.html"/>.</para>
</sect2>
<!-- FIXME: Remove until such time as we have our own News Server, JH 20060105
<sect2 id="ch-intro-newsserver">
<title>News Server</title>
<para>The mailing lists hosted at <uri>linuxfromscratch.org</uri> are
also accessible via the Network News Transfer Protocol (NNTP) server.
All messages posted to a mailing list are copied to the corresponding
newsgroup, and vice versa.</para>
<para>The news server is located at
<uri>news.linuxfromscratch.org</uri>.</para>
</sect2> -->
<sect2 id="ch-intro-irc">
<title>IRC</title>
<para>Several members of the LFS community offer assistance on Internet
Relay Chat (IRC). Before using this support, please make sure that your
question is not already answered in the LFS FAQ or the mailing list
archives. You can find the IRC network at <uri>irc.freenode.net</uri>.
The support channel is named #LFS-support.</para>
</sect2>
<!-- Commentted out until the target link is updated
<sect2 id="ch-intro-references">
<title>References</title>
<para>For additional information on the packages, useful tips are
available in the LFS Package Reference page located at <ulink
url="http://www.linuxfromscratch.org/~matthew/LFS-references.html"/>.</para>
</sect2> -->
<sect2 id="ch-intro-mirrors" xreflabel="Chapter 1 - Mirror sites">
<title>Mirror Sites</title>
<para>The LFS project has a number of world-wide mirrors to make accessing
the website and downloading the required packages more convenient. Please
visit the LFS website at <ulink url="&lfs-root;mirrors.html"/> for a list
of current mirrors.</para>
</sect2>
<sect2 id="ch-intro-contactinfo">
<title>Contact Information</title>
<para>Please direct all your questions and comments to one of the LFS
mailing lists (see above).</para>
</sect2>
</sect1>

View File

@ -0,0 +1,277 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-intro-whatsnew">
<?dbhtml filename="whatsnew.html"?>
<title>What's new since the last release</title>
<para>Below is a list of package updates made since the previous
release of the book.</para>
<!--
Every package in the book is listed in the "Upgraded to:" section.
Comment/uncomment as needed. DO NOT delete any of these lines unless that
package is removed from the book entirely.
-->
<itemizedlist>
<title>Upgraded to:</title>
<listitem><para></para></listitem> <!-- satisfy build -->
<!--<listitem>
<para>None</para>
</listitem>-->
<!--<listitem>
<para>Acl-&acl-version;</para>
</listitem>-->
<!--<listitem>
<para>Attr-&attr-version;</para>
</listitem>-->
<!--<listitem>
<para>Autoconf &autoconf-version;</para>
</listitem>-->
<!--<listitem>
<para>Automake &automake-version;</para>
</listitem>-->
<!--<listitem>
<para>Bash &bash-version;</para>
</listitem>-->
<!--<listitem>
<para>Binutils &binutils-version;</para>
</listitem>-->
<!--<listitem>
<para>Bison &bison-version;</para>
</listitem>-->
<!--<listitem>
<para>Bzip2 &bzip2-version;</para>
</listitem>-->
<!--<listitem>
<para>Check &check-version;</para>
</listitem>-->
<!--<listitem>
<para>Coreutils &coreutils-version;</para>
</listitem>-->
<listitem>
<para>D-Bus-&dbus-version;</para>
</listitem>
<!--<listitem>
<para>DejaGNU &dejagnu-version;</para>
</listitem>-->
<!--<listitem>
<para>Diffutils &diffutils-version;</para>
</listitem>-->
<listitem>
<para>E2fsprogs &e2fsprogs-version;</para>
</listitem>
<!--<listitem>
<para>Expat-&expat-version;</para>
</listitem>-->
<!--<listitem>
<para>Expect &expect-version;</para>
</listitem>-->
<listitem>
<para>File &file-version;</para>
</listitem>
<listitem>
<para>Findutils &findutils-version;</para>
</listitem>
<listitem>
<para>Flex &flex-version;</para>
</listitem>
<!--<listitem>
<para>Gawk &gawk-version;</para>
</listitem>-->
<listitem>
<para>GCC &gcc-version;</para>
</listitem>
<!--<listitem>
<para>GDBM &gdbm-version;</para>
</listitem>-->
<listitem>
<para>Gettext &gettext-version;</para>
</listitem>
<!--<listitem>
<para>Glibc &glibc-version;</para>
</listitem>-->
<listitem>
<para>GMP &gmp-version;</para>
</listitem>
<!--<listitem>
<para>Gperf-&gperf-version;</para>
</listitem>-->
<listitem>
<para>Grep &grep-version;</para>
</listitem>
<!--<listitem>
<para>Groff &groff-version;</para>
</listitem>-->
<!--<listitem>
<para>GRUB &grub-version;</para>
</listitem>-->
<!--<listitem>
<para>Gzip &gzip-version;</para>
</listitem>-->
<!--<listitem>
<para>IANA-Etc &iana-etc-version;</para>
</listitem>-->
<!--<listitem>
<para>Inetutils &inetutils-version;</para>
</listitem>-->
<!--<listitem>
<para>Intltool-&intltool-version;</para>
</listitem>-->
<listitem>
<para>IPRoute2 &iproute2-version;</para>
</listitem>
<!--<listitem>
<para>Kbd &kbd-version;</para>
</listitem>-->
<listitem>
<para>Kmod &kmod-version;</para>
</listitem>
<listitem>
<para>Less &less-version;</para>
</listitem>
<!--<listitem>
<para>Libcap-&libcap-version;</para>
</listitem>-->
<!--<listitem>
<para>Libpipeline &libpipeline-version;</para>
</listitem>-->
<!--<listitem>
<para>Libtool &libtool-version;</para>
</listitem>-->
<listitem>
<para>Linux &linux-version;</para>
</listitem>
<!--<listitem>
<para>M4 &m4-version;</para>
</listitem>-->
<!--<listitem>
<para>Make &make-version;</para>
</listitem>-->
<listitem>
<para>Man-DB &man-db-version;</para>
</listitem>
<listitem>
<para>Man-pages &man-pages-version;</para>
</listitem>
<!--<listitem>
<para>MPC &mpc-version;</para>
</listitem>-->
<!--<listitem>
<para>MPFR &mpfr-version;</para>
</listitem>-->
<!--<listitem>
<para>Ncurses &ncurses-version;</para>
</listitem>-->
<!--<listitem>
<para>Patch &patch-version;</para>
</listitem>-->
<listitem>
<para>Perl &perl-version;</para>
</listitem>
<listitem>
<para>Pkg-config &pkgconfig-version;</para>
</listitem>
<!--<listitem>
<para>Procps-ng &procps-ng-version;</para>
</listitem>-->
<!--<listitem>
<para>Psmisc &psmisc-version;</para>
</listitem>-->
<!--<listitem>
<para>Readline &readline-version;</para>
</listitem>-->
<!--<listitem>
<para>Sed &sed-version;</para>
</listitem>-->
<!--<listitem>
<para>Shadow &shadow-version;</para>
</listitem>-->
<listitem>
<para>Systemd &systemd-version;</para>
</listitem>
<!--<listitem>
<para>Tar &tar-version;</para>
</listitem>-->
<!--<listitem>
<para>Tcl-core-&tcl-version;</para>
</listitem>-->
<!--<listitem>
<para>Texinfo &texinfo-version;</para>
</listitem>-->
<listitem>
<para>Tzdata &tzdata-version;</para>
</listitem>
<listitem>
<para>Util-Linux &util-linux-version;</para>
</listitem>
<!--<listitem>
<para>Vim &vim-version;</para>
</listitem>-->
<!--<listitem>
<para>XML-Parser-&xml-parser-version;</para>
</listitem>-->
<listitem>
<para>XZ-Utils &xz-version;</para>
</listitem>
<!--<listitem>
<para>Zlib &zlib-version;</para>
</listitem>-->
</itemizedlist>
<!--<itemizedlist>
<title>Downgraded to:</title>
<listitem>
<para>PLACEHOLDER</para>
</listitem>
</itemizedlist>-->
<itemizedlist>
<title>Added:</title>
<listitem><para></para></listitem> <!-- satisfy build -->
<listitem>
<para>&glibc-largefile-patch;</para>
</listitem>
<!--<listitem>
<para>&glibc-upstream-patch;</para>
</listitem>-->
<!--<listitem>
<para>&mpfr-upstream-patch;</para>
</listitem>-->
<!--<listitem>
<para>Tcl-core-&tcl-version;</para>
</listitem>-->
</itemizedlist>
<itemizedlist>
<title>Removed:</title>
<listitem><para></para></listitem> <!-- satisfy build -->
<!--<listitem>
<para>bash-4.3.30-upstream_fixes-1.patch</para>
</listitem>-->
<!--<listitem>
<para>mpfr-3.1.2-upstream_fixes-3.patch</para>
</listitem>-->
<!--<listitem>
<para>Tcl-8.6.3</para>
</listitem>-->
</itemizedlist>
</sect1>

View File

@ -0,0 +1,56 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-partitioning-aboutlfs">
<?dbhtml filename="aboutlfs.html"?>
<title>Setting The $LFS Variable</title>
<para>Throughout this book, the environment variable <envar>LFS</envar> will
be used several times. You should ensure that this variable is always defined
throughout the LFS build process. It should be set to the name of the
directory where you will be building your LFS system - we will use
<filename class="directory">/mnt/lfs</filename> as an example, but the
directory choice is up to you. If you are building LFS on a separate
partition, this directory will be the mount point for the partition.
Choose a directory location and set the variable with the
following command:</para>
<screen role="nodump"><userinput>export LFS=<replaceable>/mnt/lfs</replaceable></userinput></screen>
<para>Having this variable set is beneficial in that commands such as
<command>mkdir -v $LFS/tools</command> can be typed literally. The shell
will automatically replace <quote>$LFS</quote> with
<quote>/mnt/lfs</quote> (or whatever the variable was set to) when it
processes the command line.</para>
<caution>
<para>Do not forget to check that <envar>LFS</envar> is set whenever
you leave and reenter the current working environment (such as when doing a
<command>su</command> to <systemitem class="username">root</systemitem> or
another user). Check that the <envar>LFS</envar> variable is set up
properly with:</para>
</caution>
<screen role="nodump"><userinput>echo $LFS</userinput></screen>
<para>Make sure the output shows the path to your LFS system's build
location, which is <filename class="directory">/mnt/lfs</filename> if the
provided example was followed. If the output is incorrect, use the command
given earlier on this page to set <envar>$LFS</envar> to the correct
directory name.</para>
<note><para>One way to ensure that the <envar>LFS</envar> variable is always
set is to edit the <filename>.bash_profile</filename> file in both your
personal home directory and in <filename>/root/.bash_profile</filename> and
enter the export command above. In addition, the shell specified in the
<filename>/etc/passwd</filename> file for all users that need the
<envar>LFS</envar> variable needs to be bash to ensure that the
<filename>/root/.bash_profile</filename> file is incorporated as a part of
the login process.</para></note>
</sect1>

View File

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<chapter id="chapter-partitioning" xreflabel="Chapter 2">
<?dbhtml dir="chapter02"?>
<?dbhtml filename="chapter02.html"?>
<title>Preparing a New Partition</title>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="introduction.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="creatingpartition.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="creatingfilesystem.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="aboutlfs.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="mounting.xml"/>
</chapter>

View File

@ -0,0 +1,101 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="space-creatingfilesystem">
<?dbhtml filename="creatingfilesystem.html"?>
<title>Creating a File System on the Partition</title>
<para>Now that a blank partition has been set up, the file system can be
created. LFS can use any file system recognized by the Linux kernel, but the
most common types are ext3 and ext4. The choice of file system can be
complex and depends on the characteristics of the files and the size of
the partition. For example:</para>
<variablelist>
<varlistentry>
<term>ext2</term>
<listitem><para>is suitable for small partitions that are updated infrequently
such as /boot.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>ext3</term>
<listitem><para>is an upgrade to ext2 that includes a journal
to help recover the partition's status in the case of an unclean
shutdown. It is commonly used as a general purpose file system.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>ext4</term>
<listitem><para>is the latest version of the ext file system family of
partition types. It provides several new capabilities including
nano-second timestamps, creation and use of very large files (16 TB), and
speed improvements.</para>
</listitem>
</varlistentry>
</variablelist>
<para>Other file systems, including FAT32, NTFS, ReiserFS, JFS, and XFS are
useful for specialized purposes. More information about these file systems
can be found at <ulink
url="http://en.wikipedia.org/wiki/Comparison_of_file_systems"/>.</para>
<para>LFS assumes that the root file system (/) is of type ext4. To create
an <systemitem class="filesystem">ext4</systemitem> file system on the LFS
partition, run the following:</para>
<screen role="nodump"><userinput>mkfs -v -t ext4 /dev/<replaceable>&lt;xxx&gt;</replaceable></userinput></screen>
<!--
<para>Replace <replaceable>&lt;xxx&gt;</replaceable> with the name of the LFS
partition (<filename class="devicefile">sda5</filename> in our previous
example).</para>
<note>
<para>Some host distributions use custom features in their filesystem
creation tools (E2fsprogs). This can cause problems when booting into your new
LFS in Chapter 9, as those features will not be supported by the LFS-installed
E2fsprogs; you will get an error similar to <quote>unsupported filesystem
features, upgrade your e2fsprogs</quote>. To check if your host system
uses custom enhancements, run the following command:</para>
<screen role="nodump"><userinput>debugfs -R feature /dev/<replaceable>&lt;xxx&gt;</replaceable></userinput></screen>
<para>If the output contains features other than
<option>has_journal</option>, <option>ext_attr</option>,
<option>resize_inode</option>, <option>dir_index</option>,
<option>filetype</option>, <option>sparse_super</option>,
<option>large_file</option> or <option>needs_recovery</option>, then your
host system may have custom enhancements. In that case, to avoid later
problems, you should compile the stock E2fsprogs package and use the
resulting binaries to re-create the filesystem on your LFS partition:</para>
<screen role="nodump"><userinput>cd /tmp
tar -xzvf /path/to/sources/e2fsprogs-&e2fsprogs-version;.tar.gz
cd e2fsprogs-&e2fsprogs-version;
mkdir -v build
cd build
../configure
make #note that we intentionally don't 'make install' here!
./misc/mke2fs -jv /dev/<replaceable>&lt;xxx&gt;</replaceable>
cd /tmp
rm -rfv e2fsprogs-&e2fsprogs-version;</userinput></screen>
</note>
-->
<para>If you are using an existing <systemitem class="filesystem">swap
</systemitem> partition, there is no need to format it. If a new
<systemitem class="filesystem"> swap</systemitem> partition was created,
it will need to be initialized with this command:</para>
<screen role="nodump"><userinput>mkswap /dev/<replaceable>&lt;yyy&gt;</replaceable></userinput></screen>
<para>Replace <replaceable>&lt;yyy&gt;</replaceable> with the name of the
<systemitem class="filesystem">swap</systemitem> partition.</para>
</sect1>

View File

@ -0,0 +1,161 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="space-creatingpartition">
<?dbhtml filename="creatingpartition.html"?>
<title>Creating a New Partition</title>
<para>Like most other operating systems, LFS is usually installed on a
dedicated partition. The recommended approach to building an LFS system
is to use an available empty partition or, if you have enough unpartitioned
space, to create one.</para>
<!--
<para>It is possible to install an LFS system (in fact even multiple LFS
systems) on a partition already occupied by another
operating system and the different systems will co-exist peacefully. The
document <ulink url="&hints-root;lfs_next_to_existing_systems.txt"/>
contains notes on how to implement this. This document was last updated
in 2004. It has not been updated since and it has not been tested with
recent versions of this LFS book. The document is more than likely not
usable as-is and you will need to account for changes made to the LFS
procedures since it was written. This is only recommended for expert LFS
users.</para>
-->
<para>A minimal system requires a partition of around 4 gigabytes (GB).
This is enough to store all the source tarballs and compile the packages.
However, if the LFS system is intended to be the primary Linux system,
additional software will probably be installed which will require additional
space. A 10 GB partition is a reasonable size to provide for growth. The LFS
system itself will not take up this much room. A large portion of this
requirement is to provide sufficient free temporary storage. Compiling
packages can require a lot of disk space which will be reclaimed after the
package is installed.</para>
<para>Because there is not always enough Random Access Memory (RAM) available
for compilation processes, it is a good idea to use a small disk partition as
<systemitem class="filesystem">swap</systemitem> space. This is used by the
kernel to store seldom-used data and leave more memory available for active
processes. The <systemitem class="filesystem">swap</systemitem> partition for
an LFS system can be the same as the one used by the host system, in which
case it is not necessary to create another one.</para>
<para>Start a disk partitioning program such as <command>cfdisk</command>
or <command>fdisk</command> with a command line option naming the hard
disk on which the new partition will be created&mdash;for example
<filename class="devicefile">/dev/sda</filename> for the primary Integrated
Drive Electronics (IDE) disk. Create a Linux native partition and a
<systemitem class="filesystem">swap</systemitem> partition, if needed. Please
refer to <filename>cfdisk(8)</filename> or <filename>fdisk(8)</filename> if
you do not yet know how to use the programs.</para>
<note><para>For experienced users, other partitioning schemes are possible.
The new LFS system can be on a software <ulink
url="&blfs-book;postlfs/raid.html">RAID</ulink> array or an <ulink
url="&blfs-book;postlfs/aboutlvm.html">LVM</ulink> logical volume.
However, some of these options require an <ulink
url="&blfs-book;postlfs/initramfs.html">initramfs</ulink>, which is
an advanced topic. These partitioning methodologies are not recommended for
first time LFS users.</para></note>
<para>Remember the designation of the new partition (e.g., <filename
class="devicefile">sda5</filename>). This book will refer to this as
the LFS partition. Also remember the designation of the <systemitem
class="filesystem">swap</systemitem> partition. These names will be
needed later for the <filename>/etc/fstab</filename> file.</para>
<sect2>
<title>Other Partition Issues</title>
<para>Requests for advice on system partitioning are often posted on the LFS mailing
lists. This is a highly subjective topic. The default for most distributions
is to use the entire drive with the exception of one small swap partition. This
is not optimal for LFS for several reasons. It reduces flexibility, makes
sharing of data across multiple distributions or LFS builds more difficult, makes
backups more time consuming, and can waste disk space through inefficient
allocation of file system structures.</para>
<sect3>
<title>The Root Partition</title>
<para>A root LFS partition (not to be confused with the
<filename class="directory">/root</filename> directory) of
ten gigabytes is a good compromise for most systems. It provides enough
space to build LFS and most of BLFS, but is small enough so that multiple
partitions can be easily created for experimentation.</para> </sect3>
<sect3>
<title>The Swap Partition</title>
<para>Most distributions automatically create a swap partition. Generally
the recommended size of the swap partition is about twice the amount of
physical RAM, however this is rarely needed. If disk space is limited,
hold the swap partition to two gigabytes and monitor the amount of disk
swapping.</para>
<para>Swapping is never good. Generally you can tell if a system is
swapping by just listening to disk activity and observing how the system
reacts to commands. The first reaction to swapping should be to check for
an unreasonable command such as trying to edit a five gigabyte file. If
swapping becomes a normal occurrence, the best solution is to purchase more
RAM for your system.</para> </sect3>
<sect3>
<title>Convenience Partitions</title>
<para>There are several other partitions that are not required, but should
be considered when designing a disk layout. The following list
is not comprehensive, but is meant as a guide.</para>
<itemizedlist>
<listitem><para>/boot &ndash; Highly recommended. Use this partition to
store kernels and other booting information. To minimize potential boot
problems with larger disks, make this the first physical partition on
your first disk drive. A partition size of 100 megabytes is quite
adequate.</para></listitem>
<listitem><para>/home &ndash; Highly recommended. Share your home
directory and user customization across multiple distributions or LFS
builds. The size is generally fairly large and depends on available disk
space.</para></listitem>
<listitem><para>/usr &ndash; A separate /usr partition is generally used
if providing a server for a thin client or diskless workstation. It is
normally not needed for LFS. A size of five gigabytes will handle most
installations.</para></listitem>
<listitem><para>/opt &ndash; This directory is most useful for
BLFS where multiple installations of large packages like Gnome or KDE can
be installed without embedding the files in the /usr hierarchy. If
used, 5 to 10 gigabytes is generally adequate.</para>
</listitem>
<listitem><para>/tmp &ndash; A separate /tmp directory is rare, but
useful if configuring a thin client. This partition, if used, will
usually not need to exceed a couple of gigabytes.</para></listitem>
<listitem><para>/usr/src &ndash; This partition is very
useful for providing a location to store BLFS source files and
share them across LFS builds. It can also be used as a location
for building BLFS packages. A reasonably large partition of 30-50
gigabytes allows plenty of room.</para></listitem>
</itemizedlist>
<para>Any separate partition that you want automatically mounted upon boot
needs to be specified in the <filename>/etc/fstab</filename>. Details
about how to specify partitions will be discussed in <xref
linkend="ch-bootable-fstab"/>. </para>
</sect3>
</sect2>
</sect1>

View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="space-introduction">
<?dbhtml filename="introduction.html"?>
<title>Introduction</title>
<para>In this chapter, the partition which will host the LFS system is
prepared. We will create the partition itself, create a file system
on it, and mount it.</para>
</sect1>

View File

@ -0,0 +1,61 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="space-mounting">
<?dbhtml filename="mounting.html"?>
<title>Mounting the New Partition</title>
<para>Now that a file system has been created, the partition needs to
be made accessible. In order to do this, the partition needs to be
mounted at a chosen mount point. For the purposes of this book, it is
assumed that the file system is mounted under the directory specified by the
<envar>LFS</envar> envronment variable as described in the previous section.
</para>
<para>Create the mount point and mount the LFS file system by running:</para>
<screen role="nodump"><userinput>mkdir -pv $LFS
mount -v -t ext4 /dev/<replaceable>&lt;xxx&gt;</replaceable> $LFS</userinput></screen>
<para>Replace <replaceable>&lt;xxx&gt;</replaceable> with the designation of the LFS
partition.</para>
<para>If using multiple partitions for LFS (e.g., one for <filename
class="directory">/</filename> and another for <filename
class="directory">/usr</filename>), mount them using:</para>
<screen role="nodump"><userinput>mkdir -pv $LFS
mount -v -t ext4 /dev/<replaceable>&lt;xxx&gt;</replaceable> $LFS
mkdir -v $LFS/usr
mount -v -t ext4 /dev/<replaceable>&lt;yyy&gt;</replaceable> $LFS/usr</userinput></screen>
<para>Replace <replaceable>&lt;xxx&gt;</replaceable> and
<replaceable>&lt;yyy&gt;</replaceable> with the appropriate partition
names.</para>
<para>Ensure that this new partition is not mounted with permissions that are
too restrictive (such as the <option>nosuid</option> or
<option>nodev</option> options). Run the <command>mount</command> command
without any parameters to see what options are set for the mounted LFS
partition. If <option>nosuid</option> and/or <option>nodev</option> are set,
the partition will need to be remounted.</para>
<para>If you are using a <systemitem
class="filesystem">swap</systemitem> partition, ensure that it is enabled
using the <command>swapon</command> command:</para>
<screen role="nodump"><userinput>/sbin/swapon -v /dev/<replaceable>&lt;zzz&gt;</replaceable></userinput></screen>
<para>Replace <replaceable>&lt;zzz&gt;</replaceable> with the name of the
<systemitem class="filesystem">swap</systemitem> partition.</para>
<para>Now that there is an established place to work, it is time to
download the packages.</para>
</sect1>

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<chapter id="chapter-getting-materials" xreflabel="Chapter 3">
<?dbhtml dir="chapter03"?>
<?dbhtml filename="chapter03.html"?>
<title>Packages and Patches</title>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="introduction.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="packages.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="patches.xml"/>
</chapter>

View File

@ -0,0 +1,67 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="materials-introduction">
<?dbhtml filename="introduction.html"?>
<title>Introduction</title>
<para>This chapter includes a list of packages that need to be downloaded in
order to build a basic Linux system. The listed version numbers correspond to
versions of the software that are known to work, and this book is based on
their use. We highly recommend against using newer versions because the build
commands for one version may not work with a newer version. The newest package
versions may also have problems that require work-arounds. These work-arounds
will be developed and stabilized in the development version of the
book.</para>
<para>Download locations may not always be accessible. If a download
location has changed since this book was published, Google (<ulink
url="http://www.google.com/"/>) provides a useful search engine for
most packages. If this search is unsuccessful, try one of the
alternative means of downloading discussed at <ulink
url="&lfs-root;lfs/packages.html#packages"/>. </para>
<para>Downloaded packages and patches will need to be stored somewhere
that is conveniently available throughout the entire build. A working
directory is also required to unpack the sources and build them.
<filename class="directory">$LFS/sources</filename> can be used both
as the place to store the tarballs and patches and as a working
directory. By using this directory, the required elements will be
located on the LFS partition and will be available during all stages
of the building process.</para>
<para>To create this directory, execute the following command, as user
<systemitem class="username">root</systemitem>, before starting the download
session:</para>
<screen role="nodump"><userinput>mkdir -v $LFS/sources</userinput></screen>
<para>Make this directory writable and sticky. <quote>Sticky</quote>
means that even if multiple users have write permission on a
directory, only the owner of a file can delete the file within a
sticky directory. The following command will enable the write and
sticky modes:</para>
<screen role="nodump"><userinput>chmod -v a+wt $LFS/sources</userinput></screen>
<para>An easy way to download all of the packages and patches is by using
<ulink url="../wget-list">wget-list</ulink> as an input to
<command>wget</command>. For example:</para>
<screen role="nodump"><userinput>wget --input-file=wget-list --continue --directory-prefix=$LFS/sources</userinput></screen>
<para>Additionally, starting with LFS-7.0, there is a separate file,
<ulink url="../md5sums">md5sums</ulink>, which can be used to verify that all
the correct packages are available before proceeding. Place that file in
<filename class="directory">$LFS/sources</filename> and run:</para>
<screen role="nodump"><userinput>pushd $LFS/sources
md5sum -c md5sums
popd</userinput></screen>
</sect1>

View File

@ -0,0 +1,666 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="materials-packages">
<?dbhtml filename="packages.html"?>
<title>All Packages</title>
<para>Download or otherwise obtain the following packages:</para>
<variablelist role="materials">
<varlistentry>
<term>Acl (&acl-version;) - <token>&acl-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&acl-home;"/></para>
<para>Download: <ulink url="&acl-url;"/></para>
<para>MD5 sum: <literal>&acl-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Attr (&attr-version;) - <token>&attr-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&attr-home;"/></para>
<para>Download: <ulink url="&attr-url;"/></para>
<para>MD5 sum: <literal>&attr-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Autoconf (&autoconf-version;) - <token>&autoconf-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&autoconf-home;"/></para>
<para>Download: <ulink url="&autoconf-url;"/></para>
<para>MD5 sum: <literal>&autoconf-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Automake (&automake-version;) - <token>&automake-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&automake-home;"/></para>
<para>Download: <ulink url="&automake-url;"/></para>
<para>MD5 sum: <literal>&automake-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Bash (&bash-version;) - <token>&bash-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&bash-home;"/></para>
<para>Download: <ulink url="&bash-url;"/></para>
<para>MD5 sum: <literal>&bash-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Bc (&bc-version;) - <token>&bc-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&bc-home;"/></para>
<para>Download: <ulink url="&bc-url;"/></para>
<para>MD5 sum: <literal>&bc-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Binutils (&binutils-version;) - <token>&binutils-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&binutils-home;"/></para>
<para>Download: <ulink url="&binutils-url;"/></para>
<para>MD5 sum: <literal>&binutils-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Bison (&bison-version;) - <token>&bison-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&bison-home;"/></para>
<para>Download: <ulink url="&bison-url;"/></para>
<para>MD5 sum: <literal>&bison-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Bzip2 (&bzip2-version;) - <token>&bzip2-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&bzip2-home;"/></para>
<para>Download: <ulink url="&bzip2-url;"/></para>
<para>MD5 sum: <literal>&bzip2-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Check (&check-version;) - <token>&check-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&check-home;"/></para>
<para>Download: <ulink url="&check-url;"/></para>
<para>MD5 sum: <literal>&check-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Coreutils (&coreutils-version;) - <token>&coreutils-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&coreutils-home;"/></para>
<para>Download: <ulink url="&coreutils-url;"/></para>
<para>MD5 sum: <literal>&coreutils-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>D-Bus (&dbus-version;) - <token>&dbus-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&dbus-home;"/></para>
<para>Download: <ulink url="&dbus-url;"/></para>
<para>MD5 sum: <literal>&dbus-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>DejaGNU (&dejagnu-version;) - <token>&dejagnu-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&dejagnu-home;"/></para>
<para>Download: <ulink url="&dejagnu-url;"/></para>
<para>MD5 sum: <literal>&dejagnu-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Diffutils (&diffutils-version;) - <token>&diffutils-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&diffutils-home;"/></para>
<para>Download: <ulink url="&diffutils-url;"/></para>
<para>MD5 sum: <literal>&diffutils-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>E2fsprogs (&e2fsprogs-version;) - <token>&e2fsprogs-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&e2fsprogs-home;"/></para>
<para>Download: <ulink url="&e2fsprogs-url;"/></para>
<para>MD5 sum: <literal>&e2fsprogs-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Expat (&expat-version;) - <token>&expat-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&expat-home;"/></para>
<para>Download: <ulink url="&expat-url;"/></para>
<para>MD5 sum: <literal>&expat-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Expect (&expect-version;) - <token>&expect-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&expect-home;"/></para>
<para>Download: <ulink url="&expect-url;"/></para>
<para>MD5 sum: <literal>&expect-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>File (&file-version;) - <token>&file-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&file-home;"/></para>
<para>Download: <ulink url="&file-url;"/></para>
<para>MD5 sum: <literal>&file-md5;</literal></para>
<note>
<para>File (&file-version;) may no longer be available at the
listed location. The site administrators of the master download
location occasionally remove older versions when new ones are
released. An alternative download location that may have the correct
version available can also be found at: <ulink
url="http://www.linuxfromscratch.org/lfs/download.html#ftp"/>.</para>
</note>
</listitem>
</varlistentry>
<varlistentry>
<term>Findutils (&findutils-version;) - <token>&findutils-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&findutils-home;"/></para>
<para>Download: <ulink url="&findutils-url;"/></para>
<para>MD5 sum: <literal>&findutils-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Flex (&flex-version;) - <token>&flex-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&flex-home;"/></para>
<para>Download: <ulink url="&flex-url;"/></para>
<para>MD5 sum: <literal>&flex-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Gawk (&gawk-version;) - <token>&gawk-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&gawk-home;"/></para>
<para>Download: <ulink url="&gawk-url;"/></para>
<para>MD5 sum: <literal>&gawk-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>GCC (&gcc-version;) - <token>&gcc-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&gcc-home;"/></para>
<para>Download: <ulink url="&gcc-url;"/></para>
<para>MD5 sum: <literal>&gcc-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>GDBM (&gdbm-version;) - <token>&gdbm-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&gdbm-home;"/></para>
<para>Download: <ulink url="&gdbm-url;"/></para>
<para>MD5 sum: <literal>&gdbm-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Gettext (&gettext-version;) - <token>&gettext-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&gettext-home;"/></para>
<para>Download: <ulink url="&gettext-url;"/></para>
<para>MD5 sum: <literal>&gettext-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Glibc (&glibc-version;) - <token>&glibc-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&glibc-home;"/></para>
<para>Download: <ulink url="&glibc-url;"/></para>
<para>MD5 sum: <literal>&glibc-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>GMP (&gmp-version;) - <token>&gmp-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&gmp-home;"/></para>
<para>Download: <ulink url="&gmp-url;"/></para>
<para>MD5 sum: <literal>&gmp-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Gperf (&gperf-version;) - <token>&gperf-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&gperf-home;"/></para>
<para>Download: <ulink url="&gperf-url;"/></para>
<para>MD5 sum: <literal>&gperf-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Grep (&grep-version;) - <token>&grep-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&grep-home;"/></para>
<para>Download: <ulink url="&grep-url;"/></para>
<para>MD5 sum: <literal>&grep-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Groff (&groff-version;) - <token>&groff-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&groff-home;"/></para>
<para>Download: <ulink url="&groff-url;"/></para>
<para>MD5 sum: <literal>&groff-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>GRUB (&grub-version;) - <token>&grub-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&grub-home;"/></para>
<para>Download: <ulink url="&grub-url;"/></para>
<para>MD5 sum: <literal>&grub-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Gzip (&gzip-version;) - <token>&gzip-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&gzip-home;"/></para>
<para>Download: <ulink url="&gzip-url;"/></para>
<para>MD5 sum: <literal>&gzip-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Iana-Etc (&iana-etc-version;) - <token>&iana-etc-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&iana-etc-home;"/></para>
<para>Download: <ulink url="&iana-etc-url;"/></para>
<para>MD5 sum: <literal>&iana-etc-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Inetutils (&inetutils-version;) - <token>&inetutils-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&inetutils-home;"/></para>
<para>Download: <ulink url="&inetutils-url;"/></para>
<para>MD5 sum: <literal>&inetutils-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Intltool (&intltool-version;) - <token>&intltool-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&intltool-home;"/></para>
<para>Download: <ulink url="&intltool-url;"/></para>
<para>MD5 sum: <literal>&intltool-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>IPRoute2 (&iproute2-version;) - <token>&iproute2-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&iproute2-home;"/></para>
<para>Download: <ulink url="&iproute2-url;"/></para>
<para>MD5 sum: <literal>&iproute2-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Kbd (&kbd-version;) - <token>&kbd-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&kbd-home;"/></para>
<para>Download: <ulink url="&kbd-url;"/></para>
<para>MD5 sum: <literal>&kbd-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Kmod (&kmod-version;) - <token>&kmod-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&kmod-home;"/></para>
<para>Download: <ulink url="&kmod-url;"/></para>
<para>MD5 sum: <literal>&kmod-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Less (&less-version;) - <token>&less-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&less-home;"/></para>
<para>Download: <ulink url="&less-url;"/></para>
<para>MD5 sum: <literal>&less-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Libcap (&libcap-version;) - <token>&libcap-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&libcap-home;"/></para>
<para>Download: <ulink url="&libcap-url;"/></para>
<para>MD5 sum: <literal>&libcap-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Libpipeline (&libpipeline-version;) - <token>&libpipeline-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&libpipeline-home;"/></para>
<para>Download: <ulink url="&libpipeline-url;"/></para>
<para>MD5 sum: <literal>&libpipeline-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Libtool (&libtool-version;) - <token>&libtool-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&libtool-home;"/></para>
<para>Download: <ulink url="&libtool-url;"/></para>
<para>MD5 sum: <literal>&libtool-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Linux (&linux-version;) - <token>&linux-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&linux-home;"/></para>
<para>Download: <ulink url="&linux-url;"/></para>
<para>MD5 sum: <literal>&linux-md5;</literal></para>
<note>
<para>The Linux kernel is updated relatively often, many times due to
discoveries of security vulnerabilities. The latest available
&linux-major-version;.&linux-minor-version;.x kernel version should be
used, unless the errata page says otherwise.</para>
<para>For users with limited speed or expensive bandwidth who wish to
update the Linux kernel, a baseline version of the package and
patches can be downloaded separately. This may save some time or
cost for a subsequent patch level upgrade within a minor release.
</para>
</note>
</listitem>
</varlistentry>
<varlistentry>
<term>M4 (&m4-version;) - <token>&m4-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&m4-home;"/></para>
<para>Download: <ulink url="&m4-url;"/></para>
<para>MD5 sum: <literal>&m4-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Make (&make-version;) - <token>&make-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&make-home;"/></para>
<para>Download: <ulink url="&make-url;"/></para>
<para>MD5 sum: <literal>&make-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Man-DB (&man-db-version;) - <token>&man-db-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&man-db-home;"/></para>
<para>Download: <ulink url="&man-db-url;"/></para>
<para>MD5 sum: <literal>&man-db-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Man-pages (&man-pages-version;) - <token>&man-pages-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&man-pages-home;"/></para>
<para>Download: <ulink url="&man-pages-url;"/></para>
<para>MD5 sum: <literal>&man-pages-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>MPC (&mpc-version;) - <token>&mpc-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&mpc-home;"/></para>
<para>Download: <ulink url="&mpc-url;"/></para>
<para>MD5 sum: <literal>&mpc-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>MPFR (&mpfr-version;) - <token>&mpfr-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&mpfr-home;"/></para>
<para>Download: <ulink url="&mpfr-url;"/></para>
<para>MD5 sum: <literal>&mpfr-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Ncurses (&ncurses-version;) - <token>&ncurses-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&ncurses-home;"/></para>
<para>Download: <ulink url="&ncurses-url;"/></para>
<para>MD5 sum: <literal>&ncurses-md5;</literal></para>
</listitem>
</varlistentry>
<!-- FIXME:
<varlistentry>
<term>Ncurses Rollup Patch (&ncurses-date;) - 328 KB:</term>
<listitem>
<para><ulink url="ftp://invisible-island.net/ncurses/&ncurses-version;/"/></para>
<note>
<para>Ncurses Rollup Patch (&ncurses-date;) may no longer be available
at the listed location. The site administrators of the master download
location occasionally remove older versions when new ones are released.
There is no alternative download location yet.</para>
</note>
</listitem>
</varlistentry>
-->
<varlistentry>
<term>Patch (&patch-version;) - <token>&patch-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&patch-home;"/></para>
<para>Download: <ulink url="&patch-url;"/></para>
<para>MD5 sum: <literal>&patch-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Perl (&perl-version;) - <token>&perl-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&perl-home;"/></para>
<para>Download: <ulink url="&perl-url;"/></para>
<para>MD5 sum: <literal>&perl-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Pkg-config (&pkgconfig-version;) - <token>&pkgconfig-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&pkgconfig-home;"/></para>
<para>Download: <ulink url="&pkgconfig-url;"/></para>
<para>MD5 sum: <literal>&pkgconfig-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Procps (&procps-ng-version;) - <token>&procps-ng-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&procps-ng-home;"/></para>
<para>Download: <ulink url="&procps-ng-url;"/></para>
<para>MD5 sum: <literal>&procps-ng-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Psmisc (&psmisc-version;) - <token>&psmisc-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&psmisc-home;"/></para>
<para>Download: <ulink url="&psmisc-url;"/></para>
<para>MD5 sum: <literal>&psmisc-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Readline (&readline-version;) - <token>&readline-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&readline-home;"/></para>
<para>Download: <ulink url="&readline-url;"/></para>
<para>MD5 sum: <literal>&readline-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Sed (&sed-version;) - <token>&sed-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&sed-home;"/></para>
<para>Download: <ulink url="&sed-url;"/></para>
<para>MD5 sum: <literal>&sed-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Shadow (&shadow-version;) - <token>&shadow-size;</token>:</term>
<listitem>
<!-- <para>Home page: <ulink url="&shadow-home;"/></para> -->
<para>Download: <ulink url="&shadow-url;"/></para>
<para>MD5 sum: <literal>&shadow-md5;</literal></para>
<!-- Using http://cdn.debian.net/debian/pool/main/s/shadow/
for now since alioth has not reconstituted shadow -->
</listitem>
</varlistentry>
<varlistentry>
<term>Systemd (&systemd-version;) - <token>&systemd-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&systemd-home;"/></para>
<para>Download: <ulink url="&systemd-url;"/></para>
<para>MD5 sum: <literal>&systemd-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Tar (&tar-version;) - <token>&tar-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&tar-home;"/></para>
<para>Download: <ulink url="&tar-url;"/></para>
<para>MD5 sum: <literal>&tar-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Tcl (&tcl-version;) - <token>&tcl-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&tcl-home;"/></para>
<para>Download: <ulink url="&tcl-url;"/></para>
<para>MD5 sum: <literal>&tcl-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Texinfo (&texinfo-version;) - <token>&texinfo-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&texinfo-home;"/></para>
<para>Download: <ulink url="&texinfo-url;"/></para>
<para>MD5 sum: <literal>&texinfo-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Time Zone Data (&tzdata-version;) - <token>&tzdata-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&tzdata-home;"/></para>
<para>Download: <ulink url="&tzdata-url;"/></para>
<para>MD5 sum: <literal>&tzdata-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Util-linux (&util-linux-version;) - <token>&util-linux-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&util-linux-home;"/></para>
<para>Download: <ulink url="&util-linux-url;"/></para>
<para>MD5 sum: <literal>&util-linux-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Vim (&vim-version;) - <token>&vim-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&vim-home;"/></para>
<para>Download: <ulink url="&vim-url;"/></para>
<para>MD5 sum: <literal>&vim-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>XML::Parser (&xml-parser-version;) - <token>&xml-parser-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&xml-parser-home;"/></para>
<para>Download: <ulink url="&xml-parser-url;"/></para>
<para>MD5 sum: <literal>&xml-parser-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Xz Utils (&xz-version;) - <token>&xz-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&xz-home;"/></para>
<para>Download: <ulink url="&xz-url;"/></para>
<para>MD5 sum: <literal>&xz-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Zlib (&zlib-version;) - <token>&zlib-size;</token>:</term>
<listitem>
<para>Home page: <ulink url="&zlib-home;"/></para>
<para>Download: <ulink url="&zlib-url;"/></para>
<para>MD5 sum: <literal>&zlib-md5;</literal></para>
</listitem>
</varlistentry>
</variablelist>
<para>Total size of these packages: about <returnvalue/></para>
</sect1>

View File

@ -0,0 +1,118 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="materials-patches">
<?dbhtml filename="patches.html"?>
<title>Needed Patches</title>
<para>In addition to the packages, several patches are also required.
These patches correct any mistakes in the packages that should be
fixed by the maintainer. The patches also make small modifications to
make the packages easier to work with. The following patches will be
needed to build an LFS system:</para>
<variablelist role="materials">
<varlistentry>
<term>Bash Upstream Fixes Patch - <token>&bash-fixes-patch-size;</token>:</term>
<listitem>
<para>Download: <ulink url="&patches-root;&bash-fixes-patch;"/></para>
<para>MD5 sum: <literal>&bash-fixes-patch-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Bc Memory Leak Patch - <token>&bc-memory-leak-patch-size;</token>:</term>
<listitem>
<para>Download: <ulink url="&patches-root;&bc-memory-leak-patch;"/></para>
<para>MD5 sum: <literal>&bc-memory-leak-patch-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Bzip2 Documentation Patch - <token>&bzip2-docs-patch-size;</token>:</term>
<listitem>
<para>Download: <ulink url="&patches-root;&bzip2-docs-patch;"/></para>
<para>MD5 sum: <literal>&bzip2-docs-patch-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Coreutils Internationalization Fixes Patch - <token>&coreutils-i18n-patch-size;</token>:</term>
<listitem>
<para>Download: <ulink url="&patches-root;&coreutils-i18n-patch;"/></para>
<para>MD5 sum: <literal>&coreutils-i18n-patch-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Glibc FHS Patch - <token>&glibc-fhs-patch-size;</token>:</term>
<listitem>
<para>Download: <ulink url="&patches-root;&glibc-fhs-patch;"/></para>
<para>MD5 sum: <literal>&glibc-fhs-patch-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Glibc i386 Patch - <token>&glibc-upstream-patch-size;</token>:</term>
<listitem>
<para>Download: <ulink url="&patches-root;&glibc-upstream-patch;"/></para>
<para>MD5 sum: <literal>&glibc-upstream-patch-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Glibc Largefile Patch - <token>&glibc-largefile-patch-size;</token>:</term>
<listitem>
<para>Download: <ulink url="&patches-root;&glibc-largefile-patch;"/></para>
<para>MD5 sum: <literal>&glibc-largefile-patch-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Kbd Backspace/Delete Fix Patch - <token>&kbd-backspace-patch-size;</token>:</term>
<listitem>
<para>Download: <ulink url="&patches-root;&kbd-backspace-patch;"/></para>
<para>MD5 sum: <literal>&kbd-backspace-patch-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>MPFR Upstream Fixes Patch - <token>&mpfr-upstream-patch-size;</token>:</term>
<listitem>
<para>Download: <ulink url="&patches-root;&mpfr-upstream-patch;"/></para>
<para>MD5 sum: <literal>&mpfr-upstream-patch-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Readline Upstream Fixes Patch - <token>&readline-fixes-patch-size;</token>:</term>
<listitem>
<para>Download: <ulink url="&patches-root;&readline-fixes-patch;"/></para>
<para>MD5 sum: <literal>&readline-fixes-patch-md5;</literal></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Systemd Compat Patch - <token>&systemd-compat-patch-size;</token>:</term>
<listitem>
<para>Download: <ulink url="&patches-root;&systemd-compat-patch;"/></para>
<para>MD5 sum: <literal>&systemd-compat-patch-md5;</literal></para>
</listitem>
</varlistentry>
</variablelist>
<para>Total size of these patches: about <returnvalue/></para>
<para>In addition to the above required patches, there exist a number of
optional patches created by the LFS community. These optional patches
solve minor problems or enable functionality that is not enabled by
default. Feel free to peruse the patches database located at
<ulink url="&lfs-root;patches/downloads/"/> and acquire any additional
patches to suit your system needs.</para>
</sect1>

View File

@ -0,0 +1,39 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="prepare-aboutlfs">
<?dbhtml filename="aboutlfs.html"?>
<title>About $LFS</title>
<para>Throughout this book, the environment variable <envar>LFS</envar> will
be used. It is paramount that this variable is always defined.
It should be set to the mount point chosen for the LFS partition.
Check that the <envar>LFS</envar> variable is set up properly with:</para>
<screen role="nodump"><userinput>echo $LFS</userinput></screen>
<para>Make sure the output shows the path to the LFS partition's mount
point, which is <filename class="directory">/mnt/lfs</filename> if the
provided example was followed. If the output is incorrect, the
variable can be set with:</para>
<screen role="nodump"><userinput>export LFS=/mnt/lfs</userinput></screen>
<para>Having this variable set is beneficial in that commands such as
<command>mkdir $LFS/tools</command> can be typed literally. The shell
will automatically replace <quote>$LFS</quote> with
<quote>/mnt/lfs</quote> (or whatever the variable was set to) when it
processes the command line.</para>
<para>Do not forget to check that <envar>$LFS</envar> is set whenever
you leave and reenter the current working environment (as when doing a
<command>su</command> to <systemitem class="username">root</systemitem>
or another user).</para>
</sect1>

View File

@ -0,0 +1,61 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="prepare-aboutsbus">
<?dbhtml filename="aboutsbus.html"?>
<title>About SBUs</title>
<para>Many people would like to know beforehand approximately how long
it takes to compile and install each package. Because Linux From
Scratch can be built on many different systems, it is impossible to
provide accurate time estimates. The biggest package (Glibc) will
take approximately 20 minutes on the fastest systems, but could take
up to three days on slower systems! Instead of providing actual times,
the Standard Build Unit (SBU) measure will be
used instead.</para>
<para>The SBU measure works as follows. The first package to be compiled
from this book is Binutils in <xref linkend="chapter-temporary-tools"/>. The
time it takes to compile this package is what will be referred to as the
Standard Build Unit or SBU. All other compile times will be expressed relative
to this time.</para>
<para>For example, consider a package whose compilation time is 4.5
SBUs. This means that if a system took 10 minutes to compile and
install the first pass of Binutils, it will take
<emphasis>approximately</emphasis> 45 minutes to build this example package.
Fortunately, most build times are shorter than the one for Binutils.</para>
<para>In general, SBUs are not entirely accurate because they depend on many
factors, including the host system's version of GCC. They are provided here
to give an estimate of how long it might take to install a package, but the
numbers can vary by as much as dozens of minutes in some cases.</para>
<note>
<para>For many modern systems with multiple processors (or cores) the
compilation time for a package can be reduced by performing a "parallel
make" by either setting an environment variable or telling the
<command>make</command> program how many processors are available. For
instance, a Core2Duo can support two simultaneous processes with:</para>
<screen><userinput>export MAKEFLAGS='-j 2'</userinput></screen>
<para>or just building with:</para>
<screen><userinput>make -j2</userinput></screen>
<para>When multiple processors are used in this way, the SBU units in the
book will vary even more than they normally would. In some cases, the make
step will simply fail. Analyzing the output of the build process will also
be more difficult because the lines of different processes will be
interleaved. If you run into a problem with a build step, revert back to a
single processor build to properly analyze the error messages.</para>
</note>
</sect1>

View File

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="prepare-abouttestsuites">
<?dbhtml filename="abouttestsuites.html"?>
<title>About the Test Suites</title>
<para>Most packages provide a test suite. Running the test suite for a
newly built package is a good idea because it can provide a <quote>sanity
check</quote> indicating that everything compiled correctly. A test suite
that passes its set of checks usually proves that the package is
functioning 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&mdash;GCC, Binutils, and
Glibc&mdash;are of the utmost importance due to their central role in a
properly functioning system. The test suites for GCC and Glibc can
take a very long time to complete, especially on slower hardware, but
are strongly recommended.</para>
<note>
<para>Experience has shown that there is little to be gained from running
the test suites in <xref linkend="chapter-temporary-tools"/>. There can be
no escaping the fact that the host system always exerts some influence on
the tests in that chapter, often causing inexplicable failures. Because
the tools built in <xref linkend="chapter-temporary-tools"/> are temporary
and eventually discarded, we do not recommend running the test suites in
<xref linkend="chapter-temporary-tools"/> for the average reader. The
instructions for running those test suites are provided for the benefit of
testers and developers, but they are strictly optional.</para>
</note>
<para>A common issue with running the test suites for Binutils and GCC
is running out of pseudo terminals (PTYs). This can result in a high
number of failing tests. This may happen for several reasons, but the
most likely cause is that the host system does not have the
<systemitem class="filesystem">devpts</systemitem> file system set up
correctly. This issue is discussed in greater detail at
<ulink url="&lfs-root;lfs/faq.html#no-ptys"/>.</para>
<para>Sometimes package test suites will fail, but for reasons which the
developers are aware of and have deemed non-critical. Consult the logs located
at <ulink url="&test-results;"/> to verify whether or not these failures are
expected. This site is valid for all tests throughout this book.</para>
</sect1>

View File

@ -0,0 +1,102 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-tools-addinguser">
<?dbhtml filename="addinguser.html"?>
<title>Adding the LFS User</title>
<para>When logged in as user <systemitem class="username">root</systemitem>,
making a single mistake can damage or destroy a system. Therefore, we
recommend building the packages in this chapter as an unprivileged user.
You could use your own user name, but to make it easier to set up a clean
working environment, create a new user called <systemitem
class="username">lfs</systemitem> as a member of a new group (also named
<systemitem class="groupname">lfs</systemitem>) and use this user during
the installation process. As <systemitem class="username">root</systemitem>,
issue the following commands to add the new user:</para>
<screen><userinput>groupadd lfs
useradd -s /bin/bash -g lfs -m -k /dev/null lfs</userinput></screen>
<variablelist>
<title>The meaning of the command line options:</title>
<varlistentry>
<term><parameter>-s /bin/bash</parameter></term>
<listitem>
<para>This makes <command>bash</command> the default shell for user
<systemitem class="username">lfs</systemitem>.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>-g lfs</parameter></term>
<listitem>
<para>This option adds user <systemitem class="username">lfs</systemitem>
to group <systemitem class="groupname">lfs</systemitem>.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>-m</parameter></term>
<listitem>
<para>This creates a home directory for <systemitem
class="username">lfs</systemitem>.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>-k /dev/null</parameter></term>
<listitem>
<para>This parameter prevents possible copying of files from a skeleton
directory (default is <filename class="directory">/etc/skel</filename>)
by changing the input location to the special null device.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>lfs</parameter></term>
<listitem>
<para>This is the actual name for the created group and user.</para>
</listitem>
</varlistentry>
</variablelist>
<para>To log in as <systemitem class="username">lfs</systemitem> (as opposed
to switching to user <systemitem class="username">lfs</systemitem> when logged
in as <systemitem class="username">root</systemitem>, which does not require
the <systemitem class="username">lfs</systemitem> user to have a password),
give <systemitem class="username">lfs</systemitem> a password:</para>
<screen role="nodump"><userinput>passwd lfs</userinput></screen>
<para>Grant <systemitem class="username">lfs</systemitem> full access to
<filename class="directory">$LFS/tools</filename> by making
<systemitem class="username">lfs</systemitem> the directory owner:</para>
<screen><userinput>chown -v lfs $LFS/tools</userinput></screen>
<para>If a separate working directory was created as suggested, give
user <systemitem class="username">lfs</systemitem> ownership of this
directory:</para>
<screen><userinput>chown -v lfs $LFS/sources</userinput></screen>
<para>Next, login as user <systemitem class="username">lfs</systemitem>.
This can be done via a virtual console, through a display manager, or with
the following substitute user command:</para>
<screen role="nodump"><userinput>su - lfs</userinput></screen>
<para>The <quote><parameter>-</parameter></quote> instructs
<command>su</command> to start a login shell as opposed to a non-login shell.
The difference between these two types of shells can be found in detail in
<filename>bash(1)</filename> and <command>info bash</command>.</para>
</sect1>

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<chapter id="chapter-final-preps" xreflabel="Chapter 4">
<?dbhtml dir="chapter04"?>
<?dbhtml filename="chapter04.html"?>
<title>Final Preparations</title>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="introduction.xml"/>
<!--<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="aboutlfs.xml"/>-->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="creatingtoolsdir.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="addinguser.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="settingenviron.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="aboutsbus.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="abouttestsuites.xml"/>
</chapter>

View File

@ -0,0 +1,48 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-tools-creatingtoolsdir">
<?dbhtml filename="creatingtoolsdir.html"?>
<title>Creating the $LFS/tools Directory</title>
<para>All programs compiled in <xref linkend="chapter-temporary-tools"/>
will be installed under <filename class="directory">$LFS/tools</filename>
to keep them separate from the programs compiled in <xref
linkend="chapter-building-system"/>. The programs compiled here are
temporary tools and will not be a part of the final LFS system. By keeping
these programs in a separate directory, they can easily be discarded later
after their use. This also prevents these programs from ending up in the
host production directories (easy to do by accident in <xref
linkend="chapter-temporary-tools"/>).</para>
<para>Create the required directory by running the following as
<systemitem class="username">root</systemitem>:</para>
<screen><userinput>mkdir -v $LFS/tools</userinput></screen>
<para>The next step is to create a <filename class="symlink">/tools</filename>
symlink on the host system. This will point to the newly-created directory on
the LFS partition. Run this command as <systemitem
class="username">root</systemitem> as well:</para>
<screen><userinput>ln -sv $LFS/tools /</userinput></screen>
<note>
<para>The above command is correct. The <command>ln</command> command
has a few syntactic variations, so be sure to check
<command>info coreutils ln</command> and <filename>ln(1)</filename>
before reporting what you may think is an error.</para>
</note>
<para>The created symlink enables the toolchain to be compiled so that it
always refers to <filename class="directory">/tools</filename>, meaning
that the compiler, assembler, and linker will work both in Chapter 5
(when we are still using some tools from the host) and in the next (when
we are <quote>chrooted</quote> to the LFS partition).</para>
</sect1>

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="prepare-introduction">
<?dbhtml filename="introduction.html"?>
<title>Introduction</title>
<para>In this chapter, we will perform a few additional tasks to prepare
for building the temporary system. We will create a directory in
<filename class="directory">$LFS</filename> for the installation of the
temporary tools, add an unprivileged user to reduce risk,
and create an appropriate build environment for that user. We will also
explain the unit of time we use to measure how long LFS packages take to
build, or <quote>SBUs</quote>, and give some information about package
test suites.</para>
</sect1>

View File

@ -0,0 +1,94 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-tools-settingenviron">
<?dbhtml filename="settingenvironment.html"?>
<title>Setting Up the Environment</title>
<para>Set up a good working environment by creating two new startup files
for the <command>bash</command> shell. While logged in as user
<systemitem class="username">lfs</systemitem>, issue the following command
to create a new <filename>.bash_profile</filename>:</para>
<screen><userinput>cat &gt; ~/.bash_profile &lt;&lt; "EOF"
<literal>exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash</literal>
EOF</userinput></screen>
<para>When logged on as user <systemitem class="username">lfs</systemitem>,
the initial shell is usually a <emphasis>login</emphasis> shell which reads
the <filename>/etc/profile</filename> of the host (probably containing some
settings and environment variables) and then <filename>.bash_profile</filename>.
The <command>exec env -i.../bin/bash</command> command in the
<filename>.bash_profile</filename> file replaces the running shell with a new
one with a completely empty environment, except for the <envar>HOME</envar>,
<envar>TERM</envar>, and <envar>PS1</envar> variables. This ensures that no
unwanted and potentially hazardous environment variables from the host system
leak into the build environment. The technique used here achieves the goal of
ensuring a clean environment.</para>
<para>The new instance of the shell is a <emphasis>non-login</emphasis>
shell, which does not read the <filename>/etc/profile</filename> or
<filename>.bash_profile</filename> files, but rather reads the
<filename>.bashrc</filename> file instead. Create the
<filename>.bashrc</filename> file now:</para>
<screen><userinput>cat &gt; ~/.bashrc &lt;&lt; "EOF"
<literal>set +h
umask 022
LFS=/mnt/lfs
LC_ALL=POSIX
LFS_TGT=$(uname -m)-lfs-linux-gnu
PATH=/tools/bin:/bin:/usr/bin
export LFS LC_ALL LFS_TGT PATH</literal>
EOF</userinput></screen>
<para>The <command>set +h</command> command turns off
<command>bash</command>'s hash function. Hashing is ordinarily a useful
feature&mdash;<command>bash</command> uses a hash table to remember the
full path of executable files to avoid searching the <envar>PATH</envar>
time and again to find the same executable. However, the new tools should
be used as soon as they are installed. By switching off the hash function,
the shell will always search the <envar>PATH</envar> when a program is to
be run. As such, the shell will find the newly compiled tools in
<filename class="directory">$LFS/tools</filename> as soon as they are
available without remembering a previous version of the same program in a
different location.</para>
<para>Setting the user file-creation mask (umask) to 022 ensures that newly
created files and directories are only writable by their owner, but are
readable and executable by anyone (assuming default modes are used by the
<function>open(2)</function> system call, new files will end up with permission
mode 644 and directories with mode 755).</para>
<para>The <envar>LFS</envar> variable should be set to the chosen mount
point.</para>
<para>The <envar>LC_ALL</envar> variable controls the localization of certain
programs, making their messages follow the conventions of a specified country.
Setting <envar>LC_ALL</envar> to <quote>POSIX</quote> or <quote>C</quote>
(the two are equivalent) ensures that everything will work as expected in
the chroot environment.</para>
<para>The <envar>LFS_TGT</envar> variable sets a non-default, but compatible machine
description for use when building our cross compiler and linker and when cross
compiling our temporary toolchain. More information is contained in
<xref linkend="ch-tools-toolchaintechnotes" role=""/>.</para>
<para>By putting <filename class="directory">/tools/bin</filename> ahead of the
standard <envar>PATH</envar>, all the programs installed in <xref
linkend="chapter-temporary-tools"/> are picked up by the shell immediately after
their installation. This, combined with turning off hashing, limits the risk
that old programs are used from the host when the same programs are available in
the chapter 5 environment.</para>
<para>Finally, to have the environment fully prepared for building the
temporary tools, source the just-created user profile:</para>
<screen><userinput>source ~/.bash_profile</userinput></screen>
</sect1>

View File

@ -0,0 +1,79 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-tools-adjusting">
<?dbhtml filename="adjusting.html"?>
<title>Adjusting the Toolchain</title>
<para>Now that the temporary C libraries have been installed, all
tools compiled in the rest of this chapter should be linked against
these libraries. In order to accomplish this, the cross-compiler's
specs file needs to be adjusted to point to the new dynamic linker
in <filename class="directory">/tools</filename>.</para>
<para>This is done by dumping the compiler's <quote>specs</quote> file to a
location where it will look for it by default.
A simple <command>sed</command> substitution then alters the
dynamic linker that GCC will use. The principle here is to find all references
to the dynamic linker file in <filename class="directory">/lib</filename>
or possibly <filename class="directory">/lib64</filename> if the host system
is 64-bit capable, and adjust them to point to the new location in
<filename class="directory">/tools</filename>.</para>
<para>For the sake of accuracy, it is recommended to use a copy-and-paste
method when issuing the following command. Be sure to visually inspect the
specs file to verify that it has properly adjusted all references to the
dynamic linker location. Refer to <xref
linkend="ch-tools-toolchaintechnotes" role=","/> for the default name
of the dynamic linker, if necessary.</para>
<!-- Ampersands are needed to allow copy and paste -->
<screen><userinput>SPECS=`dirname $($LFS_TGT-gcc -print-libgcc-file-name)`/specs
$LFS_TGT-gcc -dumpspecs | sed \
-e 's@/lib\(64\)\?/ld@/tools&amp;@g' \
-e "/^\*cpp:$/{n;s,$, -isystem /tools/include,}" &gt; $SPECS
echo "New specs file is: $SPECS"
unset SPECS</userinput></screen>
<caution>
<para>At this point, it is imperative to stop and ensure that the basic
functions (compiling and linking) of the new toolchain are working as
expected. To perform a sanity check, run the following commands:</para>
<screen><userinput>echo 'int main(){}' &gt; dummy.c
$LFS_TGT-gcc -B/tools/lib dummy.c
readelf -l a.out | grep ': /tools'</userinput></screen>
<para>If everything is working correctly, there should be no errors,
and the output of the last command will be of the form:</para>
<screen><computeroutput>[Requesting program interpreter: /tools/lib/ld-linux.so.2]</computeroutput></screen>
<para>Note that <filename class="directory">/tools/lib</filename>, or
<filename class="directory">/tools/lib64</filename> for 64-bit machines
appears as the prefix of the dynamic linker.</para>
<para>If the output is not shown as above or there was no output at all,
then something is wrong. Investigate and retrace the steps to find out
where the problem is and correct it. This issue must be resolved before
continuing on. Something may have gone wrong with the
specs file amendment above. In this case, redo the specs file amendment,
being careful to copy-and-paste the commands.</para>
<para>Once all is well, clean up the test files:</para>
<screen><userinput>rm -v dummy.c a.out</userinput></screen>
</caution>
<note><para>Building Binutils in the next section will serve as an additional check that
the toolchain has been built properly. If Binutils fails to build, it is an
indication that something has gone wrong with the previous Binutils, GCC, or Glibc
installations.</para></note>
</sect1>

View File

@ -0,0 +1,101 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-tools-bash" role="wrap">
<?dbhtml filename="bash.html"?>
<sect1info condition="script">
<productname>bash</productname>
<productnumber>&bash-version;</productnumber>
<address>&bash-url;</address>
</sect1info>
<title>Bash-&bash-version;</title>
<indexterm zone="ch-tools-bash">
<primary sortas="a-Bash">Bash</primary>
<secondary>tools</secondary>
</indexterm>
<sect2 role="package">
<title/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="../chapter06/bash.xml"
xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
<segtitle>&diskspace;</segtitle>
<seglistitem>
<seg>&bash-ch5-sbu;</seg>
<seg>&bash-ch5-du;</seg>
</seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of Bash</title>
<!--
<para>First, apply the following patch to fix various bugs that have been
addressed upstream:</para>
<screen><userinput remap="pre">patch -Np1 -i ../&bash-fixes-patch;</userinput></screen>
-->
<para>Prepare Bash for compilation:</para>
<screen><userinput remap="configure">./configure --prefix=/tools --without-bash-malloc</userinput></screen>
<variablelist>
<title>The meaning of the configure options:</title>
<varlistentry>
<term><parameter>--without-bash-malloc</parameter></term>
<listitem>
<para>This option turns off the use of Bash's memory allocation
(<function>malloc</function>) function which is known to cause
segmentation faults. By turning this option off, Bash will use
the <function>malloc</function> functions from Glibc which are
more stable.</para>
</listitem>
</varlistentry>
</variablelist>
<para>Compile the package:</para>
<screen><userinput remap="make">make</userinput></screen>
<para>Compilation is now complete. As discussed earlier, running the test
suite is not mandatory for the temporary tools here in this chapter. To run
the Bash test suite anyway, issue the following command:</para>
<screen><userinput remap="test">make tests</userinput></screen>
<para>Install the package:</para>
<screen><userinput remap="install">make install</userinput></screen>
<para>Make a link for the programs that use <command>sh</command> for
a shell:</para>
<screen><userinput remap="install">ln -sv bash /tools/bin/sh</userinput></screen>
</sect2>
<sect2 role="content">
<title/>
<para>Details on this package are located in
<xref linkend="contents-bash" role="."/></para>
</sect2>
</sect1>

View File

@ -0,0 +1,171 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-tools-binutils-pass1" role="wrap">
<?dbhtml filename="binutils-pass1.html"?>
<sect1info condition="script">
<productname>binutils</productname>
<productnumber>&binutils-version;</productnumber>
<address>&binutils-url;</address>
</sect1info>
<title>Binutils-&binutils-version; - Pass 1</title>
<indexterm zone="ch-tools-binutils-pass1">
<primary sortas="a-Binutils">Binutils</primary>
<secondary>tools, pass 1</secondary>
</indexterm>
<sect2 role="package">
<title/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="../chapter06/binutils.xml"
xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
<segtitle>&diskspace;</segtitle>
<seglistitem>
<seg>&binutils-ch5p1-sbu;</seg>
<seg>&binutils-ch5p1-du;</seg>
</seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of Cross Binutils</title>
<note><para>Go back and re-read the notes in the previous section.
Understanding the notes labeled important will save you a lot
of problems later.</para></note>
<para>It is important that Binutils be the first package 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>
<para>The Binutils documentation recommends building Binutils outside of the
source directory in a dedicated build directory:</para>
<screen><userinput remap="pre">mkdir -v ../binutils-build
cd ../binutils-build</userinput></screen>
<note>
<para>In order for the SBU values listed in the rest of the book
to be of any use, measure the time it takes to build this package from
the configuration, up to and including the first install. To achieve
this easily, wrap the commands in a <command>time</command>
command like this: <userinput>time { ./configure ... &amp;&amp; ...
&amp;&amp; make install; }</userinput>.</para>
</note>
<note><para>The approximate build SBU values and required disk space
in Chapter 5 does not include test suite data.</para></note>
<para>Now prepare Binutils for compilation:</para>
<screen><userinput remap="configure">../binutils-&binutils-version;/configure \
--prefix=/tools \
--with-sysroot=$LFS \
--with-lib-path=/tools/lib \
--target=$LFS_TGT \
--disable-nls \
--disable-werror</userinput></screen>
<variablelist>
<title>The meaning of the configure options:</title>
<varlistentry>
<term><parameter>--prefix=/tools</parameter></term>
<listitem>
<para>This tells the configure script to prepare to install the
Binutils programs in the <filename class="directory">/tools</filename>
directory.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>--with-sysroot=$LFS</parameter></term>
<listitem>
<para>For cross compilation, this tells the build system to look in
$LFS for the target system libraries as needed.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>--with-lib-path=/tools/lib</parameter></term>
<listitem>
<para>This specifies which library path the linker should be
configured to use.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><envar>--target=$LFS_TGT</envar></term>
<listitem>
<para>Because the machine description in the <envar>LFS_TGT</envar>
variable is slightly different than the value returned by the
<command>config.guess</command> script, this switch will tell the
<command>configure</command> script to adjust Binutil's build system
for building a cross linker. </para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>--disable-nls</parameter></term>
<listitem>
<para>This disables internationalization as i18n is not needed for the
temporary tools.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>--disable-werror</parameter></term>
<listitem>
<para>This prevents the build from stopping in the event that there
are warnings from the host's compiler.</para>
</listitem>
</varlistentry>
</variablelist>
<para>Continue with compiling the package:</para>
<screen><userinput remap="make">make</userinput></screen>
<para>Compilation is now complete. Ordinarily we would now run the
test suite, but at this early stage the test suite framework (Tcl,
Expect, and DejaGNU) is not yet in place. The benefits of running the
tests at this point are minimal since the programs from this
first pass will soon be replaced by those from the second.</para>
<para>If building on x86_64, create a symlink to ensure the sanity of
the toolchain:</para>
<screen><userinput remap="install">case $(uname -m) in
x86_64) mkdir -v /tools/lib &amp;&amp; ln -sv lib /tools/lib64 ;;
esac</userinput></screen>
<para>Install the package:</para>
<screen><userinput remap="install">make install</userinput></screen>
</sect2>
<sect2 role="content">
<title/>
<para>Details on this package are located in
<xref linkend="contents-binutils" role="."/></para>
</sect2>
</sect1>

View File

@ -0,0 +1,150 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-tools-binutils-pass2" role="wrap">
<?dbhtml filename="binutils-pass2.html"?>
<sect1info condition="script">
<productname>binutils</productname>
<productnumber>&binutils-version;</productnumber>
<address>&binutils-url;</address>
</sect1info>
<title>Binutils-&binutils-version; - Pass 2</title>
<indexterm zone="ch-tools-binutils-pass2">
<primary sortas="a-Binutils">Binutils</primary>
<secondary>tools, pass 2</secondary>
</indexterm>
<sect2 role="package">
<title/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="../chapter06/binutils.xml"
xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
<segtitle>&diskspace;</segtitle>
<seglistitem>
<seg>&binutils-ch5p2-sbu;</seg>
<seg>&binutils-ch5p2-du;</seg>
</seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of Binutils</title>
<para>Create a separate build directory again:</para>
<screen><userinput remap="pre">mkdir -v ../binutils-build
cd ../binutils-build</userinput></screen>
<para>Prepare Binutils for compilation:</para>
<screen><userinput remap="configure">CC=$LFS_TGT-gcc \
AR=$LFS_TGT-ar \
RANLIB=$LFS_TGT-ranlib \
../binutils-&binutils-version;/configure \
--prefix=/tools \
--disable-nls \
--disable-werror \
--with-lib-path=/tools/lib \
--with-sysroot</userinput></screen>
<variablelist>
<title>The meaning of the new configure options:</title>
<varlistentry>
<term><parameter>CC=$LFS_TGT-gcc AR=$LFS_TGT-ar RANLIB=$LFS_TGT-ranlib</parameter></term>
<listitem>
<para>Because this is really a native build of Binutils, setting these
variables ensures that the build system uses the cross-compiler and
associated tools instead of the ones on the host system.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>--with-lib-path=/tools/lib</parameter></term>
<listitem>
<para>This tells the configure script to specify the library
search path during the compilation of Binutils, resulting in
<filename class="directory">/tools/lib</filename> being passed
to the linker. This prevents the linker from searching through
library directories on the host.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>--with-sysroot</parameter></term>
<listitem>
<para>The sysroot feature enables the linker to find shared objects
which are required by other shared objects explicitly included on the
linker's command line. Without this, some packages may not build
successfully on some hosts.</para>
</listitem>
</varlistentry>
</variablelist>
<para>Compile the package:</para>
<screen><userinput remap="make">make</userinput></screen>
<para>Install the package:</para>
<screen><userinput remap="install">make install</userinput></screen>
<para>Now prepare the linker for the <quote>Re-adjusting</quote> phase in
the next chapter:</para>
<screen><userinput remap="adjust">make -C ld clean
make -C ld LIB_PATH=/usr/lib:/lib
cp -v ld/ld-new /tools/bin</userinput></screen>
<variablelist>
<title>The meaning of the make parameters:</title>
<varlistentry>
<term><parameter>-C ld clean</parameter></term>
<listitem>
<para>This tells the make program to remove all compiled
files in the <filename class="directory">ld</filename>
subdirectory.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>-C ld LIB_PATH=/usr/lib:/lib</parameter></term>
<listitem>
<para>This option rebuilds everything in the <filename
class="directory">ld</filename> subdirectory. Specifying the
<envar>LIB_PATH</envar> Makefile variable on the command line
allows us to override the default value of the temporary tools
and point it to the proper final path. The value of this variable
specifies the linker's default library search path. This
preparation is used in the next chapter.</para>
</listitem>
</varlistentry>
</variablelist>
</sect2>
<sect2 role="content">
<title/>
<para>Details on this package are located in
<xref linkend="contents-binutils" role="."/></para>
</sect2>
</sect1>

View File

@ -0,0 +1,72 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-tools-bison" role="wrap">
<?dbhtml filename="bison.html"?>
<sect1info condition="script">
<productname>bison</productname>
<productnumber>&bison-version;</productnumber>
<address>&bison-url;</address>
</sect1info>
<title>Bison-&bison-version;</title>
<indexterm zone="ch-tools-bison">
<primary sortas="a-Bison">Bison</primary>
<secondary>tools</secondary>
</indexterm>
<sect2 role="package">
<title/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="../chapter06/bison.xml"
xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
<segtitle>&diskspace;</segtitle>
<seglistitem>
<seg>&bison-ch5-sbu;</seg>
<seg>&bison-ch5-du;</seg>
</seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of Bison</title>
<para>Prepare Bison for compilation:</para>
<screen><userinput remap="configure">./configure --prefix=/tools</userinput></screen>
<para>Compile the package:</para>
<screen><userinput remap="make">make</userinput></screen>
<para>To test the results, issue:</para>
<screen><userinput remap="test">make check</userinput></screen>
<para>Install the package:</para>
<screen><userinput remap="install">make install</userinput></screen>
</sect2>
<sect2 role="content">
<title/>
<para>Details on this package are located in
<xref linkend="contents-bison" role="."/></para>
</sect2>
</sect1>

View File

@ -0,0 +1,65 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-tools-bzip2" role="wrap">
<?dbhtml filename="bzip2.html"?>
<sect1info condition="script">
<productname>bzip2</productname>
<productnumber>&bzip2-version;</productnumber>
<address>&bzip2-url;</address>
</sect1info>
<title>Bzip2-&bzip2-version;</title>
<indexterm zone="ch-tools-bzip2">
<primary sortas="a-Bzip2">Bzip2</primary>
<secondary>tools</secondary>
</indexterm>
<sect2 role="package">
<title/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="../chapter06/bzip2.xml"
xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
<segtitle>&diskspace;</segtitle>
<seglistitem>
<seg>&bzip2-ch5-sbu;</seg>
<seg>&bzip2-ch5-du;</seg>
</seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of Bzip2</title>
<para>The Bzip2 package does not contain a <command>configure</command>
script. Compile and test it with:</para>
<screen><userinput remap="make">make</userinput></screen>
<para>Install the package:</para>
<screen><userinput remap="install">make PREFIX=/tools install</userinput></screen>
</sect2>
<sect2 role="content">
<title/>
<para>Details on this package are located in
<xref linkend="contents-bzip2" role="."/></para>
</sect2>
</sect1>

View File

@ -0,0 +1,53 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-tools-changingowner">
<?dbhtml filename="changingowner.html"?>
<title>Changing Ownership</title>
<note>
<para>The commands in the remainder of this book must be performed while
logged in as user <systemitem class="username">root</systemitem> and no
longer as user <systemitem class="username">lfs</systemitem>. Also, double
check that <envar>$LFS</envar> is set in <systemitem
class="username">root</systemitem>'s environment.</para>
</note>
<para>Currently, the <filename class="directory">$LFS/tools</filename> directory
is owned by the user <systemitem class="username">lfs</systemitem>, a user
that exists only on the host system. If the <filename
class="directory">$LFS/tools</filename> directory is kept as is, the files are
owned by a user ID without a corresponding account. This is dangerous because
a user account created later could get this same user ID and would own the
<filename class="directory">$LFS/tools</filename> directory and all the files
therein, thus exposing these files to possible malicious manipulation.</para>
<para>To avoid this issue, you could add the <systemitem
class="username">lfs</systemitem> user to the new LFS system later when
creating the <filename>/etc/passwd</filename> file, taking care to assign it
the same user and group IDs as on the host system. Better yet, change the
ownership of the <filename class="directory">$LFS/tools</filename> directory to
user <systemitem class="username">root</systemitem> by running the following
command:</para>
<screen><userinput>chown -R root:root $LFS/tools</userinput></screen>
<para>Although the <filename class="directory">$LFS/tools</filename> directory
can be deleted once the LFS system has been finished, it can be retained to build
additional LFS systems <emphasis>of the same book version</emphasis>. How best
to backup <filename class="directory">$LFS/tools</filename> is a matter of
personal preference.</para>
<caution>
<para>If you intend to keep the temporary tools for use in building future LFS
systems, <emphasis>now</emphasis> is the time to back them up. Subsequent
commands in chapter 6 will alter the tools currently in place, rendering them
useless for future builds.</para>
</caution>
</sect1>

View File

@ -0,0 +1,51 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<chapter id="chapter-temporary-tools" xreflabel="Chapter 5">
<?dbhtml dir="chapter05"?>
<?dbhtml filename="chapter05.html"?>
<title>Constructing a Temporary System</title>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="introduction.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="toolchaintechnotes.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="generalinstructions.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="binutils-pass1.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="gcc-pass1.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="linux-headers.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="glibc.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="libstdc++.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="binutils-pass2.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="gcc-pass2.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="tcl.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="expect.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="dejagnu.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="check.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="ncurses.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="bash.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="bzip2.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="coreutils.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="diffutils.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="file.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="findutils.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="gawk.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="gettext.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="grep.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="gzip.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="m4.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="make.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="patch.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="perl.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="sed.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="tar.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="texinfo.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="util-linux.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="xz.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="stripping.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="changingowner.xml"/>
</chapter>

View File

@ -0,0 +1,124 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-tools-check" role="wrap">
<?dbhtml filename="check.html"?>
<sect1info condition="script">
<productname>check</productname>
<productnumber>&check-version;</productnumber>
<address>&check-url;</address>
</sect1info>
<title>Check-&check-version;</title>
<indexterm zone="ch-tools-check">
<primary sortas="a-Check">Check</primary>
</indexterm>
<sect2 role="package">
<title/>
<para>Check is a unit testing framework for C.</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
<segtitle>&diskspace;</segtitle>
<seglistitem>
<seg>&check-ch5-sbu;</seg>
<seg>&check-ch5-du;</seg>
</seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of Check</title>
<para>Prepare Check for compilation:</para>
<screen><userinput remap="configure">PKG_CONFIG= ./configure --prefix=/tools</userinput></screen>
<variablelist>
<title>The meaning of the configure parameter:</title>
<varlistentry>
<term><parameter>PKG_CONFIG=</parameter></term>
<listitem>
<para>This tells the configure script to ignore any
pkg-config options that may cause the system to try to link
with libraries not in the <filename class="directory">/tools</filename>
directory.</para>
</listitem>
</varlistentry>
</variablelist>
<para>Build the package:</para>
<screen><userinput remap="make">make</userinput></screen>
<para>Compilation is now complete. As discussed earlier, running the test
suite is not mandatory for the temporary tools here in this chapter. To run
the Check test suite anyway, issue the following command:</para>
<screen><userinput remap="test">make check</userinput></screen>
<para>Note that the Check test suite may take a relatively long
(up to 4 SBU) time.</para>
<para>Install the package:</para>
<screen><userinput remap="install">make install</userinput></screen>
</sect2>
<sect2 id="contents-check" role="content">
<title>Contents of Check</title>
<segmentedlist>
<segtitle>Installed program</segtitle>
<segtitle>Installed library</segtitle>
<seglistitem>
<seg>checkmk</seg>
<seg>libcheck.{a,so}</seg>
</seglistitem>
</segmentedlist>
<variablelist>
<bridgehead renderas="sect3">Short Descriptions</bridgehead>
<?dbfo list-presentation="list"?>
<?dbhtml list-presentation="table"?>
<varlistentry id="checkmk">
<term><command>checkmk</command></term>
<listitem>
<para>Awk script for generating C unit tests for use with the Check
unit testing framework</para>
<indexterm zone="ch-tools-check checkmk">
<primary sortas="b-checmk">checkmk</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="libcheck">
<term><filename class="libraryfile">libcheck.{a,so}</filename></term>
<listitem>
<para>Contains functions that allow Check to be called from a test
program</para>
<indexterm zone="ch-tools-check libcheck">
<primary sortas="c-libcheck">libcheck</primary>
</indexterm>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>

View File

@ -0,0 +1,99 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-tools-coreutils" role="wrap">
<?dbhtml filename="coreutils.html"?>
<sect1info condition="script">
<productname>coreutils</productname>
<productnumber>&coreutils-version;</productnumber>
<address>&coreutils-url;</address>
</sect1info>
<title>Coreutils-&coreutils-version;</title>
<indexterm zone="ch-tools-coreutils">
<primary sortas="a-Coreutils">Coreutils</primary>
<secondary>tools</secondary>
</indexterm>
<sect2 role="package">
<title/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="../chapter06/coreutils.xml"
xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
<segtitle>&diskspace;</segtitle>
<seglistitem>
<seg>&coreutils-ch5-sbu;</seg>
<seg>&coreutils-ch5-du;</seg>
</seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of Coreutils</title>
<para>Prepare Coreutils for compilation:</para>
<screen><userinput remap="configure">./configure --prefix=/tools --enable-install-program=hostname</userinput></screen>
<variablelist>
<title>The meaning of the configure options:</title>
<varlistentry>
<term><envar>--enable-install-program=hostname</envar></term>
<listitem>
<para>This enables the <command>hostname</command> binary to be built
and installed &ndash; it is disabled by default but is required by the
Perl test suite.</para>
</listitem>
</varlistentry>
</variablelist>
<para>Compile the package:</para>
<screen><userinput remap="make">make</userinput></screen>
<para>Compilation is now complete. As discussed earlier, running the test
suite is not mandatory for the temporary tools here in this chapter. To run
the Coreutils test suite anyway, issue the following command:</para>
<screen><userinput remap="test">make RUN_EXPENSIVE_TESTS=yes check</userinput></screen>
<para>The <parameter>RUN_EXPENSIVE_TESTS=yes</parameter> parameter tells the
test suite to run several additional tests that are considered
relatively expensive (in terms of CPU power and memory usage) on some
platforms, but generally are not a problem on Linux.</para>
<para>Install the package:</para>
<screen><userinput remap="install">make install</userinput></screen>
<!--
<para>The above command refuses to install <filename>su</filename>
because the program cannot be installed setuid root as a non-privileged
user. By manually installing it, we can use it for running tests in the
final system as a non-privileged user. Install it with:</para>
<screen><userinput remap="install">cp -v src/su /tools/bin</userinput></screen>
-->
</sect2>
<sect2 role="content">
<title/>
<para>Details on this package are located in
<xref linkend="contents-coreutils" role="."/></para>
</sect2>
</sect1>

View File

@ -0,0 +1,90 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-tools-dejagnu" role="wrap">
<?dbhtml filename="dejagnu.html"?>
<sect1info condition="script">
<productname>dejagnu</productname>
<productnumber>&dejagnu-version;</productnumber>
<address>&dejagnu-url;</address>
</sect1info>
<title>DejaGNU-&dejagnu-version;</title>
<indexterm zone="ch-tools-dejagnu">
<primary sortas="a-DejaGNU">DejaGNU</primary>
</indexterm>
<sect2 role="package">
<title/>
<para>The DejaGNU package contains a framework for testing other
programs.</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
<segtitle>&diskspace;</segtitle>
<seglistitem>
<seg>&dejagnu-ch5-sbu;</seg>
<seg>&dejagnu-ch5-du;</seg>
</seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of DejaGNU</title>
<para>Prepare DejaGNU for compilation:</para>
<screen><userinput remap="configure">./configure --prefix=/tools</userinput></screen>
<para>Build and install the package:</para>
<screen><userinput remap="install">make install</userinput></screen>
<para>To test the results, issue:</para>
<screen><userinput remap="test">make check</userinput></screen>
</sect2>
<sect2 id="contents-dejagnu" role="content">
<title>Contents of DejaGNU</title>
<segmentedlist>
<segtitle>Installed program</segtitle>
<seglistitem>
<seg>runtest</seg>
</seglistitem>
</segmentedlist>
<variablelist>
<bridgehead renderas="sect3">Short Descriptions</bridgehead>
<?dbfo list-presentation="list"?>
<?dbhtml list-presentation="table"?>
<varlistentry id="runtest">
<term><command>runtest</command></term>
<listitem>
<para>A wrapper script that locates the proper
<command>expect</command> shell and then runs DejaGNU</para>
<indexterm zone="ch-tools-dejagnu runtest">
<primary sortas="b-runtest">runtest</primary>
</indexterm>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>

View File

@ -0,0 +1,74 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-tools-diffutils" role="wrap">
<?dbhtml filename="diffutils.html"?>
<sect1info condition="script">
<productname>diffutils</productname>
<productnumber>&diffutils-version;</productnumber>
<address>&diffutils-url;</address>
</sect1info>
<title>Diffutils-&diffutils-version;</title>
<indexterm zone="ch-tools-diffutils">
<primary sortas="a-Diffutils">Diffutils</primary>
<secondary>tools</secondary>
</indexterm>
<sect2 role="package">
<title/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="../chapter06/diffutils.xml"
xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
<segtitle>&diskspace;</segtitle>
<seglistitem>
<seg>&diffutils-ch5-sbu;</seg>
<seg>&diffutils-ch5-du;</seg>
</seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of Diffutils</title>
<para>Prepare Diffutils for compilation:</para>
<screen><userinput remap="configure">./configure --prefix=/tools</userinput></screen>
<para>Compile the package:</para>
<screen><userinput remap="make">make</userinput></screen>
<para>Compilation is now complete. As discussed earlier, running the test
suite is not mandatory for the temporary tools here in this chapter. To run
the Diffutils test suite anyway, issue the following command:</para>
<screen><userinput remap="test">make check</userinput></screen>
<para>Install the package:</para>
<screen><userinput remap="install">make install</userinput></screen>
</sect2>
<sect2 role="content">
<title/>
<para>Details on this package are located in
<xref linkend="contents-diffutils" role="."/></para>
</sect2>
</sect1>

View File

@ -0,0 +1,98 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-tools-e2fsprogs" role="wrap">
<?dbhtml filename="e2fsprogs.html"?>
<sect1info condition="script">
<productname>e2fsprogs</productname>
<productnumber>&e2fsprogs-version;</productnumber>
<address>&e2fsprogs-url;</address>
</sect1info>
<title>E2fsprogs-&e2fsprogs-version;</title>
<indexterm zone="ch-tools-e2fsprogs">
<primary sortas="a-E2fsprogs">E2fsprogs</primary>
</indexterm>
<sect2 role="package">
<title/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="../chapter06/e2fsprogs.xml"
xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
<segtitle>&diskspace;</segtitle>
<seglistitem>
<seg>&e2fsprogs-ch5-sbu;</seg>
<seg>&e2fsprogs-ch5-du;</seg>
</seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of E2fsprogs</title>
<para>The E2fsprogs documentation recommends that the package be built in
a subdirectory of the source tree: </para>
<screen><userinput remap="pre">mkdir -v build
cd build</userinput></screen>
<para>Prepare E2fsprogs for compilation:</para>
<screen><userinput remap="configure">../configure --prefix=/tools --disable-libblkid --disable-libuuid</userinput></screen>
<variablelist>
<title>The meaning of the new configure option:</title>
<varlistentry>
<term><parameter>--disable-libblkid</parameter></term>
<listitem>
<para>This prevents E2fsprogs from building its own copy of the
libblkid library, which Util-Linux-NG provides.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>--disable-libuuid</parameter></term>
<listitem>
<para>This prevents E2fsprogs from building its own copy of the
libuuid library, which Util-Linux-NG provides.</para>
</listitem>
</varlistentry>
</variablelist>
<para>Compile the package:</para>
<screen><userinput remap="make">make</userinput></screen>
<para>Install the static libraries and headers required by Util-linux:</para>
<screen><userinput remap="install">make install-libs</userinput></screen>
<para>Make the installed static libraries writable so debugging symbols can
be removed later:</para>
<screen><userinput remap="install">chmod -v u+w \
/tools/lib/{libcom_err,libe2p,libext2fs,libss}.a</userinput></screen>
</sect2>
<sect2 role="content">
<title/>
<para>Details on this package are located in
<xref linkend="contents-e2fsprogs" role="."/></para>
</sect2>
</sect1>

View File

@ -0,0 +1,160 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-tools-expect" role="wrap">
<?dbhtml filename="expect.html"?>
<sect1info condition="script">
<productname>expect</productname>
<productnumber>&expect-version;</productnumber>
<address>&expect-url;</address>
</sect1info>
<title>Expect-&expect-version;</title>
<indexterm zone="ch-tools-expect">
<primary sortas="a-Expect">Expect</primary>
</indexterm>
<sect2 role="package">
<title/>
<para>The Expect package contains a program for carrying out scripted
dialogues with other interactive programs.</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
<segtitle>&diskspace;</segtitle>
<seglistitem>
<seg>&expect-ch5-sbu;</seg>
<seg>&expect-ch5-du;</seg>
</seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of Expect</title>
<para>First, force Expect's configure script to use <filename>/bin/stty</filename>
instead of a <filename>/usr/local/bin/stty</filename> it may find on the host system.
This will ensure that our test suite tools remain sane for the final builds of our
toolchain:</para>
<screen><userinput remap="pre">cp -v configure{,.orig}
sed 's:/usr/local/bin:/bin:' configure.orig &gt; configure</userinput></screen>
<para>Now prepare Expect for compilation:</para>
<screen><userinput remap="configure">./configure --prefix=/tools \
--with-tcl=/tools/lib \
--with-tclinclude=/tools/include</userinput></screen>
<variablelist>
<title>The meaning of the configure options:</title>
<varlistentry>
<term><parameter>--with-tcl=/tools/lib</parameter></term>
<listitem>
<para>This ensures that the configure script finds the Tcl
installation in the temporary tools location instead of possibly
locating an existing one on the host system.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>--with-tclinclude=/tools/include</parameter></term>
<listitem>
<para>This explicitly tells Expect where to find Tcl's internal
headers. Using this option avoids conditions where
<command>configure</command> fails because it cannot automatically
discover the location of Tcl's headers.</para>
</listitem>
</varlistentry>
</variablelist>
<para>Build the package:</para>
<screen><userinput remap="make">make</userinput></screen>
<para>Compilation is now complete. As discussed earlier, running the test
suite is not mandatory for the temporary tools here in this chapter. To run
the Expect test suite anyway, issue the following command:</para>
<screen><userinput remap="test">make test</userinput></screen>
<para>Note that the Expect test suite is known to experience failures under
certain host conditions that are not within our control. Therefore,
test suite failures here are not surprising and are not considered
critical.</para>
<para>Install the package:</para>
<screen><userinput remap="install">make SCRIPTS="" install</userinput></screen>
<variablelist>
<title>The meaning of the make parameter:</title>
<varlistentry>
<term><parameter>SCRIPTS=""</parameter></term>
<listitem>
<para>This prevents installation of the supplementary Expect
scripts, which are not needed.</para>
</listitem>
</varlistentry>
</variablelist>
</sect2>
<sect2 id="contents-expect" role="content">
<title>Contents of Expect</title>
<segmentedlist>
<segtitle>Installed program</segtitle>
<segtitle>Installed library</segtitle>
<seglistitem>
<seg>expect</seg>
<seg>libexpect-&expect-lib-version;.so</seg>
</seglistitem>
</segmentedlist>
<variablelist>
<bridgehead renderas="sect3">Short Descriptions</bridgehead>
<?dbfo list-presentation="list"?>
<?dbhtml list-presentation="table"?>
<varlistentry id="expect">
<term><command>expect</command></term>
<listitem>
<para>Communicates with other interactive programs according
to a script</para>
<indexterm zone="ch-tools-expect expect">
<primary sortas="b-expect">expect</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="libexpect">
<term><filename class="libraryfile">libexpect-&expect-lib-version;.so</filename></term>
<listitem>
<para>Contains functions that allow Expect to be used as a Tcl
extension or to be used directly from C or C++ (without Tcl)</para>
<indexterm zone="ch-tools-expect libexpect">
<primary sortas="c-libexpect-&expect-lib-version;">libexpect-&expect-lib-version;</primary>
</indexterm>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>

View File

@ -0,0 +1,74 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-tools-file" role="wrap">
<?dbhtml filename="file.html"?>
<sect1info condition="script">
<productname>file</productname>
<productnumber>&file-version;</productnumber>
<address>&file-url;</address>
</sect1info>
<title>File-&file-version;</title>
<indexterm zone="ch-tools-file">
<primary sortas="a-File">File</primary>
<secondary>tools</secondary>
</indexterm>
<sect2 role="package">
<title/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="../chapter06/file.xml"
xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
<segtitle>&diskspace;</segtitle>
<seglistitem>
<seg>&file-ch5-sbu;</seg>
<seg>&file-ch5-du;</seg>
</seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of File</title>
<para>Prepare File for compilation:</para>
<screen><userinput remap="configure">./configure --prefix=/tools</userinput></screen>
<para>Compile the package:</para>
<screen><userinput remap="make">make</userinput></screen>
<para>Compilation is now complete. As discussed earlier, running the test
suite is not mandatory for the temporary tools here in this chapter. To run
the File test suite anyway, issue the following command:</para>
<screen><userinput remap="test">make check</userinput></screen>
<para>Install the package:</para>
<screen><userinput remap="install">make install</userinput></screen>
</sect2>
<sect2 role="content">
<title/>
<para>Details on this package are located in
<xref linkend="contents-file" role="."/></para>
</sect2>
</sect1>

View File

@ -0,0 +1,74 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-tools-findutils" role="wrap">
<?dbhtml filename="findutils.html"?>
<sect1info condition="script">
<productname>findutils</productname>
<productnumber>&findutils-version;</productnumber>
<address>&findutils-url;</address>
</sect1info>
<title>Findutils-&findutils-version;</title>
<indexterm zone="ch-tools-findutils">
<primary sortas="a-Findutils">Findutils</primary>
<secondary>tools</secondary>
</indexterm>
<sect2 role="package">
<title/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="../chapter06/findutils.xml"
xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
<segtitle>&diskspace;</segtitle>
<seglistitem>
<seg>&findutils-ch5-sbu;</seg>
<seg>&findutils-ch5-du;</seg>
</seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of Findutils</title>
<para>Prepare Findutils for compilation:</para>
<screen><userinput remap="configure">./configure --prefix=/tools</userinput></screen>
<para>Compile the package:</para>
<screen><userinput remap="make">make</userinput></screen>
<para>Compilation is now complete. As discussed earlier, running the test
suite is not mandatory for the temporary tools here in this chapter. To run
the Findutils test suite anyway, issue the following command:</para>
<screen><userinput remap="test">make check</userinput></screen>
<para>Install the package:</para>
<screen><userinput remap="install">make install</userinput></screen>
</sect2>
<sect2 role="content">
<title/>
<para>Details on this package are located in
<xref linkend="contents-findutils" role="."/></para>
</sect2>
</sect1>

View File

@ -0,0 +1,84 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-tools-flex" role="wrap">
<?dbhtml filename="flex.html"?>
<sect1info condition="script">
<productname>flex</productname>
<productnumber>&flex-version;</productnumber>
<address>&flex-url;</address>
</sect1info>
<title>Flex-&flex-version;</title>
<indexterm zone="ch-tools-flex">
<primary sortas="a-Flex">Flex</primary>
<secondary>tools</secondary>
</indexterm>
<sect2 role="package">
<title/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="../chapter06/flex.xml"
xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
<segtitle>&diskspace;</segtitle>
<seglistitem>
<seg>&flex-ch5-sbu;</seg>
<seg>&flex-ch5-du;</seg>
</seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of Flex</title>
<para>Flex contains several known bugs. These can be fixed with the
following patch:</para>
<screen><userinput remap="pre">patch -Np1 -i ../&flex-fixes-patch;</userinput></screen>
<para>The GNU autotools will detect that the Flex source code has been
modified by the previous patch and tries to update the man page
accordingly. This does not work on many systems, and the default page is
fine, so make sure it does not get regenerated:</para>
<screen><userinput remap="pre">touch doc/flex.1</userinput></screen>
<para>Now prepare Flex for compilation:</para>
<screen><userinput remap="configure">./configure --prefix=/tools</userinput></screen>
<para>Compile the package:</para>
<screen><userinput remap="make">make</userinput></screen>
<para>To test the results, issue:</para>
<screen><userinput remap="test">make check</userinput></screen>
<para>Install the package:</para>
<screen><userinput remap="install">make install</userinput></screen>
</sect2>
<sect2 role="content">
<title/>
<para>Details on this package are located in
<xref linkend="contents-flex" role="."/></para>
</sect2>
</sect1>

View File

@ -0,0 +1,74 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-tools-gawk" role="wrap">
<?dbhtml filename="gawk.html"?>
<sect1info condition="script">
<productname>gawk</productname>
<productnumber>&gawk-version;</productnumber>
<address>&gawk-url;</address>
</sect1info>
<title>Gawk-&gawk-version;</title>
<indexterm zone="ch-tools-gawk">
<primary sortas="a-Gawk">Gawk</primary>
<secondary>tools</secondary>
</indexterm>
<sect2 role="package">
<title/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="../chapter06/gawk.xml"
xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
<segtitle>&diskspace;</segtitle>
<seglistitem>
<seg>&gawk-ch5-sbu;</seg>
<seg>&gawk-ch5-du;</seg>
</seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of Gawk</title>
<para>Prepare Gawk for compilation:</para>
<screen><userinput remap="configure">./configure --prefix=/tools</userinput></screen>
<para>Compile the package:</para>
<screen><userinput remap="make">make</userinput></screen>
<para>Compilation is now complete. As discussed earlier, running the test
suite is not mandatory for the temporary tools here in this chapter. To run
the Gawk test suite anyway, issue the following command:</para>
<screen><userinput remap="test">make check</userinput></screen>
<para>Install the package:</para>
<screen><userinput remap="install">make install</userinput></screen>
</sect2>
<sect2 role="content">
<title/>
<para>Details on this package are located in
<xref linkend="contents-gawk" role="."/></para>
</sect2>
</sect1>

View File

@ -0,0 +1,261 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-tools-gcc-pass1" role="wrap">
<?dbhtml filename="gcc-pass1.html"?>
<sect1info condition="script">
<productname>gcc</productname>
<productnumber>&gcc-version;</productnumber>
<address>&gcc-url;</address>
</sect1info>
<title>GCC-&gcc-version; - Pass 1</title>
<indexterm zone="ch-tools-gcc-pass1">
<primary sortas="a-GCC">GCC</primary>
<secondary>tools, pass 1</secondary>
</indexterm>
<sect2 role="package">
<title/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="../chapter06/gcc.xml"
xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
<segtitle>&diskspace;</segtitle>
<seglistitem>
<seg>&gcc-ch5p1-sbu;</seg>
<seg>&gcc-ch5p1-du;</seg>
</seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of Cross GCC</title>
<para>GCC now requires the GMP, MPFR and MPC packages. As these packages may
not be included in your host distribution, they will be built with
GCC. Unpack each package into the GCC source directory and rename the
resulting directories so the GCC build procedures will automatically
use them:</para>
<note><para>There are frequent misunderstandings about this chapter. The
procedures are the same as every other chapter as explained earlier (<xref
linkend='buildinstr'/>). First extract the gcc tarball from the sources
directory and then change to the directory created. Only then should you
proceed with the instructions below.</para></note>
<screen><userinput remap="pre">tar -xf ../mpfr-&mpfr-version;.tar.xz
mv -v mpfr-&mpfr-version; mpfr
tar -xf ../gmp-&gmp-version;.tar.xz
mv -v gmp-&gmp-extracted-version; gmp
tar -xf ../mpc-&mpc-version;.tar.gz
mv -v mpc-&mpc-version; mpc</userinput></screen>
<para>The following command will change the location of GCC's default
dynamic linker to use the one installed in <filename
class="directory">/tools</filename>. It also removes <filename
class="directory">/usr/include</filename> from GCC's include search path.
Issue:</para>
<screen><userinput remap="pre">for file in \
$(find gcc/config -name linux64.h -o -name linux.h -o -name sysv4.h)
do
cp -uv $file{,.orig}
sed -e 's@/lib\(64\)\?\(32\)\?/ld@/tools&amp;@g' \
-e 's@/usr@/tools@g' $file.orig &gt; $file
echo '
#undef STANDARD_STARTFILE_PREFIX_1
#undef STANDARD_STARTFILE_PREFIX_2
#define STANDARD_STARTFILE_PREFIX_1 "/tools/lib/"
#define STANDARD_STARTFILE_PREFIX_2 ""' &gt;&gt; $file
touch $file.orig
done</userinput></screen>
<para>In case the above seems hard to follow, let's break it down a bit.
First we find all the files under the <filename
class="directory">gcc/config</filename> directory that are named either
<filename>linux.h</filename>, <filename>linux64.h</filename> or
<filename>sysv4.h</filename>. For each file found, we copy it to a file of
the same name but with an added suffix of <quote>.orig</quote>. Then the
first sed expression prepends <quote>/tools</quote> to every instance of
<quote>/lib/ld</quote>, <quote>/lib64/ld</quote> or
<quote>/lib32/ld</quote>, while the second one replaces hard-coded
instances of <quote>/usr</quote>. Next, we add our define statements which
alter the default startfile prefix to the end of the file. Note that the
trailing <quote>/</quote> in <quote>/tools/lib/</quote> is required.
Finally, we use <command>touch</command> to update the timestamp on the
copied files. When used in conjunction with <command>cp -u</command>, this
prevents unexpected changes to the original files in case the commands are
inadvertently run twice. </para>
<!--
<para>GCC doesn't detect stack protection correctly, which causes problems
for the build of Glibc-&glibc-version;, so fix that by issuing the following
command:</para>
<screen><userinput remap="pre">sed -i '/k prot/agcc_cv_libc_provides_ssp=yes' gcc/configure</userinput></screen>
-->
<!--
<para>Also fix a problem identified upstream:</para>
<screen><userinput remap="pre">sed -i 's/if \((code.*))\)/if (\1 \&amp;\&amp; \!DEBUG_INSN_P (insn))/' gcc/sched-deps.c</userinput></screen>
-->
<para>The GCC documentation recommends building GCC outside of the
source directory in a dedicated build directory:</para>
<screen><userinput remap="pre">mkdir -v ../gcc-build
cd ../gcc-build</userinput></screen>
<para>Prepare GCC for compilation:</para>
<screen><userinput remap="configure">../gcc-&gcc-version;/configure \
--target=$LFS_TGT \
--prefix=/tools \
--with-glibc-version=2.11 \
--with-sysroot=$LFS \
--with-newlib \
--without-headers \
--with-local-prefix=/tools \
--with-native-system-header-dir=/tools/include \
--disable-nls \
--disable-shared \
--disable-multilib \
--disable-decimal-float \
--disable-threads \
--disable-libatomic \
--disable-libgomp \
--disable-libquadmath \
--disable-libssp \
--disable-libvtv \
--disable-libstdcxx \
--enable-languages=c,c++</userinput></screen>
<variablelist>
<title>The meaning of the configure options:</title>
<varlistentry>
<term><parameter>--with-newlib</parameter></term>
<listitem>
<para>Since a working C library is not yet available, this ensures
that the inhibit_libc constant is defined when building libgcc. This prevents
the compiling of any code that requires libc support.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>--without-headers</parameter></term>
<listitem>
<para>When creating a complete cross-compiler, GCC requires
standard headers compatible with the target system. For our
purposes these headers will not be needed. This switch prevents
GCC from looking for them.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>--with-local-prefix=/tools</parameter></term>
<listitem>
<para>The local prefix is the location in the system that GCC will search
for locally installed include files. The default is <filename>/usr/local</filename>.
Setting this to <filename>/tools</filename> helps keep the host location of
<filename>/usr/local</filename> out of this GCC's search path.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>--with-native-system-header-dir=/tools/include</parameter></term>
<listitem>
<para>By default GCC searches <filename>/usr/include</filename> for system
headers. In conjunction with the sysroot switch, this would translate normally
to <filename>$LFS/usr/include</filename>. However the headers that will be installed
in the next two sections will go to <filename>$LFS/tools/include</filename>. This
switch ensures that gcc will find them correctly. In the second pass of GCC, this
same switch will ensure that no headers from the host system are found.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>--disable-shared</parameter></term>
<listitem>
<para>This switch forces GCC to link its internal libraries
statically. We do this to avoid possible issues with the host
system.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>--disable-decimal-float, --disable-threads,
--disable-libatomic, --disable-libgomp, --disable-libquadmath,
--disable-libssp, --disable-libvtv, --disable-libstdcxx</parameter></term>
<listitem>
<para>These switches disable support for the decimal floating point
extension, threading, libatomic, libgomp, libquadmath, libssp,
libvtv, and the C++ standard library respectively. These features
will fail to compile when building a cross-compiler and are not
necessary for the task of cross-compiling the temporary libc.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>--disable-multilib</parameter></term>
<listitem>
<para>On x86_64, LFS does not yet support a multilib configuration.
This switch is harmless for x86.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>--enable-languages=c,c++</parameter></term>
<listitem>
<para>This option ensures that only the C and C++ compilers are built.
These are the only languages needed now.</para>
</listitem>
</varlistentry>
</variablelist>
<para>Compile GCC by running:</para>
<screen><userinput remap="make">make</userinput></screen>
<para>Compilation is now complete. At this point, the test suite would
normally be run, but, as mentioned before, the test suite framework is
not in place yet. The benefits of running the tests at this point
are minimal since the programs from this first pass will soon be
replaced.</para>
<para>Install the package:</para>
<screen><userinput remap="install">make install</userinput></screen>
<!--
<para>Using <parameter>- -disable-shared</parameter> means that the
<filename>libgcc_eh.a</filename> file isn't created and installed. The
Glibc package depends on this library as it uses
<parameter>-lgcc_eh</parameter> within its build system. This dependency
can be satisfied by creating a symlink to <filename>libgcc.a</filename>,
since that file will end up containing the objects normally contained in
<filename>libgcc_eh.a</filename>:</para>
<screen><userinput remap="install">ln -sv libgcc.a `$LFS_TGT-gcc -print-libgcc-file-name | sed 's/libgcc/&amp;_eh/'`</userinput></screen>
-->
</sect2>
<sect2 role="content">
<title/>
<para>Details on this package are located in
<xref linkend="contents-gcc" role="."/></para>
</sect2>
</sect1>

View File

@ -0,0 +1,228 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-tools-gcc-pass2" role="wrap">
<?dbhtml filename="gcc-pass2.html"?>
<sect1info condition="script">
<productname>gcc</productname>
<productnumber>&gcc-version;</productnumber>
<address>&gcc-url;</address>
</sect1info>
<title>GCC-&gcc-version; - Pass 2</title>
<indexterm zone="ch-tools-gcc-pass2">
<primary sortas="a-GCC">GCC</primary>
<secondary>tools, pass 2</secondary>
</indexterm>
<sect2 role="package">
<title/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="../chapter06/gcc.xml"
xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
<segtitle>&diskspace;</segtitle>
<seglistitem>
<seg>&gcc-ch5p2-sbu;</seg>
<seg>&gcc-ch5p2-du;</seg>
</seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of GCC</title>
<para>Our first build of GCC has installed a couple of internal system
headers. Normally one of them, <filename>limits.h</filename>, will in turn
include the corresponding system <filename>limits.h</filename> header, in
this case, <filename>/tools/include/limits.h</filename>. However, at the
time of the first build of gcc <filename>/tools/include/limits.h</filename>
did not exist, so the internal header that GCC installed is a partial,
self-contained file and does not include the extended features of the
system header. This was adequate for building the temporary libc, but this
build of GCC now requires the full internal header. Create a full version
of the internal header using a command that is identical to what the GCC
build system does in normal circumstances:</para>
<screen><userinput remap="pre">cat gcc/limitx.h gcc/glimits.h gcc/limity.h &gt; \
`dirname $($LFS_TGT-gcc -print-libgcc-file-name)`/include-fixed/limits.h</userinput></screen>
<!--
<para>For x86 machines, the limited number of registers is a bottleneck
for the system. Free one up by not using a frame pointer that is not
needed:</para>
<screen><userinput remap="pre">case `uname -m` in
i?86) sed -i 's/^T_CFLAGS =$/&amp; -fomit-frame-pointer/' gcc/Makefile.in ;;
esac</userinput></screen>
-->
<para>Once again, change the location of GCC's default dynamic linker to
use the one installed in <filename
class="directory">/tools</filename>.</para>
<screen><userinput remap="pre">for file in \
$(find gcc/config -name linux64.h -o -name linux.h -o -name sysv4.h)
do
cp -uv $file{,.orig}
sed -e 's@/lib\(64\)\?\(32\)\?/ld@/tools&amp;@g' \
-e 's@/usr@/tools@g' $file.orig &gt; $file
echo '
#undef STANDARD_STARTFILE_PREFIX_1
#undef STANDARD_STARTFILE_PREFIX_2
#define STANDARD_STARTFILE_PREFIX_1 "/tools/lib/"
#define STANDARD_STARTFILE_PREFIX_2 ""' &gt;&gt; $file
touch $file.orig
done</userinput></screen>
<para>As in the first build of GCC it requires the GMP, MPFR and MPC
packages. Unpack the tarballs and move them into the required directory
names:</para>
<screen><userinput remap="pre">tar -xf ../mpfr-&mpfr-version;.tar.xz
mv -v mpfr-&mpfr-version; mpfr
tar -xf ../gmp-&gmp-version;.tar.xz
mv -v gmp-&gmp-extracted-version; gmp
tar -xf ../mpc-&mpc-version;.tar.gz
mv -v mpc-&mpc-version; mpc</userinput></screen>
<!--
<para>As in the first build of GCC, fix a problem identified upstream:</para>
<screen><userinput remap="pre">sed -i 's/if \((code.*))\)/if (\1 \&amp;\&amp; \!DEBUG_INSN_P (insn))/' gcc/sched-deps.c</userinput></screen>
-->
<para>Create a separate build directory again:</para>
<screen><userinput remap="pre">mkdir -v ../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 remap="configure">CC=$LFS_TGT-gcc \
CXX=$LFS_TGT-g++ \
AR=$LFS_TGT-ar \
RANLIB=$LFS_TGT-ranlib \
../gcc-&gcc-version;/configure \
--prefix=/tools \
--with-local-prefix=/tools \
--with-native-system-header-dir=/tools/include \
--enable-languages=c,c++ \
--disable-libstdcxx-pch \
--disable-multilib \
--disable-bootstrap \
--disable-libgomp</userinput></screen>
<variablelist>
<title>The meaning of the new configure options:</title>
<varlistentry>
<term><parameter>--enable-languages=c,c++</parameter></term>
<listitem>
<para>This option ensures that both the C and C++ compilers are
built.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>--disable-libstdcxx-pch</parameter></term>
<listitem>
<para>Do not build the pre-compiled header (PCH) for
<filename class="libraryfile">libstdc++</filename>. It takes up a
lot of space, and we have no use for it.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>--disable-bootstrap</parameter></term>
<listitem>
<para>For native builds of GCC, the default is to do a "bootstrap"
build. This does not 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. The second and third
iterations are compared to make sure it can reproduce itself
flawlessly. This also implies that it was compiled correctly.
However, the LFS build method should provide a solid compiler
without the need to bootstrap each time.</para>
</listitem>
</varlistentry>
</variablelist>
<para>Compile the package:</para>
<screen><userinput remap="make">make</userinput></screen>
<para>Install the package:</para>
<screen><userinput remap="install">make install</userinput></screen>
<para>As a finishing touch, create a symlink. Many programs and scripts
run <command>cc</command> instead of <command>gcc</command>, which is
used to keep programs generic and therefore usable on all kinds of UNIX
systems where the GNU C compiler is not always installed. Running
<command>cc</command> leaves the system administrator free to decide
which C compiler to install:</para>
<screen><userinput remap="install">ln -sv gcc /tools/bin/cc</userinput></screen>
<caution>
<para>At this point, it is imperative to stop and ensure that the basic
functions (compiling and linking) of the new toolchain are working as
expected. To perform a sanity check, run the following commands:</para>
<screen><userinput>echo 'int main(){}' &gt; dummy.c
cc dummy.c
readelf -l a.out | grep ': /tools'</userinput></screen>
<para>If everything is working correctly, there should be no errors,
and the output of the last command will be of the form:</para>
<screen><computeroutput>[Requesting program interpreter: /tools/lib/ld-linux.so.2]</computeroutput></screen>
<para>Note that <filename class="directory">/tools/lib</filename>, or
<filename class="directory">/tools/lib64</filename> for 64-bit machines
appears as the prefix of the dynamic linker.</para>
<para>If the output is not shown as above or there was no output at all,
then something is wrong. Investigate and retrace the steps to find out
where the problem is and correct it. This issue must be resolved before
continuing on. First, perform the sanity check again, using
<command>gcc</command> instead of <command>cc</command>. If this works,
then the <filename class="symlink">/tools/bin/cc</filename> symlink is
missing. Install the symlink as per above.
Next, ensure that the <envar>PATH</envar> is correct. This
can be checked by running <command>echo $PATH</command> and verifying that
<filename class="directory">/tools/bin</filename> is at the head of the
list. If the <envar>PATH</envar> is wrong it could mean that you are not
logged in as user <systemitem class="username">lfs</systemitem> or that
something went wrong back in <xref linkend="ch-tools-settingenviron"
role="."/></para>
<para>Once all is well, clean up the test files:</para>
<screen><userinput>rm -v dummy.c a.out</userinput></screen>
</caution>
</sect2>
<sect2 role="content">
<title/>
<para>Details on this package are located in
<xref linkend="contents-gcc" role="."/></para>
</sect2>
</sect1>

View File

@ -0,0 +1,122 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-tools-generalinstructions">
<?dbhtml filename="generalinstructions.html"?>
<title>General Compilation Instructions</title>
<para>When building packages there are several assumptions made within
the instructions:</para>
<itemizedlist>
<listitem>
<para>Several of the packages are patched before compilation, but only when
the patch is needed to circumvent a problem. A patch is often needed in
both this and the next chapter, but sometimes in only one or the other.
Therefore, do not be concerned if instructions for a downloaded patch seem
to be missing. Warning messages about <emphasis>offset</emphasis> or
<emphasis>fuzz</emphasis> may also be encountered when applying a patch. Do
not worry about these warnings, as the patch was still successfully
applied.</para>
</listitem>
<listitem>
<para>During the compilation of most packages, there will be several
warnings that scroll by on the screen. These are normal and can safely be
ignored. These warnings are as they appear&mdash;warnings about
deprecated, but not invalid, use of the C or C++ syntax. C standards change
fairly often, and some packages still use the older standard. This is not a
problem, but does prompt the warning.</para>
</listitem>
<listitem>
<para>Check one last time that the <envar>LFS</envar> environment variable
is set up properly:</para>
<screen role="nodump"><userinput>echo $LFS</userinput></screen>
<para>Make sure the output shows the path to the LFS partition's mount
point, which is <filename class="directory">/mnt/lfs</filename>, using our
example.</para>
</listitem>
<listitem>
<para>Finally, two last important items must be emphasized:</para>
<important>
<para>The build instructions assume that the <xref
linkend='pre-hostreqs'/>, including symbolic links, have been set
properly:</para>
<itemizedlist role='important'>
<listitem override='bullet'><para><command>bash</command> is the shell
in use.</para></listitem>
<listitem override='bullet'><para><command>sh</command> is a symbolic
link to <command>bash</command>.</para></listitem>
<listitem override='bullet'><para><command>/usr/bin/awk</command> is a
symbolic link to <command>gawk</command>.</para></listitem>
<listitem override='bullet'><para><command>/usr/bin/yacc</command> is a
symbolic link to <command>bison</command> or a small script that
executes bison.</para></listitem>
</itemizedlist>
</important>
<important>
<para>To re-emphasize the build process:</para>
<orderedlist numeration="arabic" spacing="compact">
<listitem>
<para>Place all the sources and patches in a directory that will be
accessible from the chroot environment such as
<filename class="directory">/mnt/lfs/sources/</filename>. Do
<emphasis>not</emphasis> put sources in
<filename class="directory">/mnt/lfs/tools/</filename>.</para>
</listitem>
<listitem>
<para>Change to the sources directory.</para>
</listitem>
<listitem id='buildinstr' xreflabel='Package build instructions'>
<para>For each package:</para>
<orderedlist numeration="loweralpha" spacing="compact">
<listitem>
<para>Using the <command>tar</command> program, extract the package
to be built. In Chapter 5, ensure you are the <emphasis>lfs</emphasis>
user when extracting the package.</para>
</listitem>
<listitem>
<para>Change to the directory created when the package was
extracted.</para>
</listitem>
<listitem>
<para>Follow the book's instructions for building the package.</para>
</listitem>
<listitem>
<para>Change back to the sources directory.</para>
</listitem>
<listitem>
<para>Delete the extracted source directory and any
<filename class="directory"><replaceable>&lt;package&gt;</replaceable>-build</filename>
directories that were created in the build process unless instructed otherwise.</para>
</listitem>
</orderedlist>
</listitem>
</orderedlist>
</important>
</listitem>
</itemizedlist>
</sect1>

View File

@ -0,0 +1,104 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-tools-gettext" role="wrap">
<?dbhtml filename="gettext.html"?>
<sect1info condition="script">
<productname>gettext</productname>
<productnumber>&gettext-version;</productnumber>
<address>&gettext-url;</address>
</sect1info>
<title>Gettext-&gettext-version;</title>
<indexterm zone="ch-tools-gettext">
<primary sortas="a-Gettext">Gettext</primary>
<secondary>tools</secondary>
</indexterm>
<sect2 role="package">
<title/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="../chapter06/gettext.xml"
xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
<segtitle>&diskspace;</segtitle>
<seglistitem>
<seg>&gettext-ch5-sbu;</seg>
<seg>&gettext-ch5-du;</seg>
</seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of Gettext</title>
<para>For our temporary set of tools, we only need to build and install
three programs from Gettext.</para>
<para>Prepare Gettext for compilation:</para>
<screen><userinput remap="configure">cd gettext-tools
EMACS="no" ./configure --prefix=/tools --disable-shared</userinput></screen>
<variablelist>
<title>The meaning of the configure option:</title>
<varlistentry>
<term><parameter>EMACS="no"</parameter></term>
<listitem>
<para>This prevents the configure script from determining where to
install Emacs Lisp files as the test is known to hang on some hosts.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>--disable-shared</parameter></term>
<listitem>
<para>We do not need to install any of the shared Gettext libraries at
this time, therefore there is no need to build them.</para>
</listitem>
</varlistentry>
</variablelist>
<para>Compile the package:</para>
<screen><userinput remap="make">make -C gnulib-lib
make -C intl pluralx.c
make -C src msgfmt
make -C src msgmerge
make -C src xgettext</userinput></screen>
<para>As only three programs have been compiled, it is not possible to run the
test suite without compiling additional support libraries from the Gettext
package. It is therefore not recommended to attempt to run the test suite at
this stage.</para>
<para>Install the <command>msgfmt</command>, <command>msgmerge</command> and
<command>xgettext</command> programs:</para>
<screen><userinput remap="install">cp -v src/{msgfmt,msgmerge,xgettext} /tools/bin</userinput></screen>
</sect2>
<sect2 role="content">
<title/>
<para>Details on this package are located in
<xref linkend="contents-gettext" role="."/></para>
</sect2>
</sect1>

View File

@ -0,0 +1,232 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-tools-glibc" role="wrap">
<?dbhtml filename="glibc.html"?>
<sect1info condition="script">
<productname>glibc</productname>
<productnumber>&glibc-version;</productnumber>
<address>&glibc-url;</address>
</sect1info>
<title>Glibc-&glibc-version;</title>
<indexterm zone="ch-tools-glibc">
<primary sortas="a-Glibc">Glibc</primary>
<secondary>tools</secondary>
</indexterm>
<sect2 role="package">
<title/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="../chapter06/glibc.xml"
xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
<segtitle>&diskspace;</segtitle>
<seglistitem>
<seg>&glibc-ch5-sbu;</seg>
<seg>&glibc-ch5-du;</seg>
</seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of Glibc</title>
<para>First, fix a build problem that affects i386 systems:</para>
<screen><userinput remap="pre">patch -Np1 -i ../&glibc-upstream-patch;</userinput></screen>
<para>The Glibc documentation recommends building Glibc outside of the source
directory in a dedicated build directory:</para>
<screen><userinput remap="pre">mkdir -v ../glibc-build
cd ../glibc-build</userinput></screen>
<para>Next, prepare Glibc for compilation:</para>
<screen><userinput remap="configure">../glibc-&glibc-version;/configure \
--prefix=/tools \
--host=$LFS_TGT \
--build=$(../glibc-&glibc-version;/scripts/config.guess) \
--disable-profile \
--enable-kernel=&min-kernel; \
--enable-obsolete-rpc \
--with-headers=/tools/include \
libc_cv_forced_unwind=yes \
libc_cv_ctors_header=yes \
libc_cv_c_cleanup=yes</userinput></screen>
<variablelist>
<title>The meaning of the configure options:</title>
<varlistentry>
<term><parameter>--host=$LFS_TGT, --build=$(../glibc-&glibc-version;/scripts/config.guess)</parameter></term>
<listitem>
<para>The combined effect of these switches is that Glibc's build system
configures itself to cross-compile, using the cross-linker and
cross-compiler in <filename class="directory">/tools</filename>.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>--disable-profile</parameter></term>
<listitem>
<para>This builds the libraries without profiling information. Omit
this option if profiling on the temporary tools is necessary.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>--enable-kernel=&min-kernel;</parameter></term>
<listitem>
<para>This tells Glibc to compile the library with support
for &min-kernel; and later Linux kernels. Workarounds for older
kernels are not enabled.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>--enable-obsolete-rpc</parameter></term>
<listitem>
<para>This installs NIS and RPC related headers that are not
installed by default. They are required to build GCC and by
several BLFS packages.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>--with-headers=/tools/include</parameter></term>
<listitem>
<para>This tells Glibc to compile itself against the headers recently
installed to the tools directory, so that it knows exactly what
features the kernel has and can optimize itself accordingly.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>libc_cv_forced_unwind=yes</parameter></term>
<listitem>
<para>The linker installed during
<xref linkend="ch-tools-binutils-pass1"/> was cross-compiled and as
such cannot be used until Glibc has been installed. This means that
the configure test for force-unwind support will fail, as it relies on
a working linker. The libc_cv_forced_unwind=yes variable is passed in
order to inform <command>configure</command> that force-unwind
support is available without it having to run the test.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>libc_cv_c_cleanup=yes</parameter></term>
<listitem>
<para>Similarly, we pass libc_cv_c_cleanup=yes through to the
<command>configure</command> script so that the test is skipped and C
cleanup handling support is configured.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>libc_cv_ctors_header=yes</parameter></term>
<listitem>
<para>Similarly, we pass libc_cv_ctors_header=yes through to the
<command>configure</command> script so that the test is skipped and
gcc constructor support is configured.</para>
</listitem>
</varlistentry>
</variablelist>
<para>During this stage the following warning might appear:</para>
<blockquote>
<screen><computeroutput>configure: WARNING:
*** These auxiliary programs are missing or
*** incompatible versions: msgfmt
*** some features will be disabled.
*** Check the INSTALL file for required versions.</computeroutput></screen>
</blockquote>
<para>The missing or incompatible <command>msgfmt</command> program is
generally harmless. This <command>msgfmt</command> program is part of the
Gettext package which the host distribution should provide.</para>
<note><para>There have been reports that this package may fail when
building as a "parallel make". If this occurs, rerun the make command
with a "-j1" option.</para></note>
<para>Compile the package:</para>
<screen><userinput remap="make">make</userinput></screen>
<!--
<para>This package does come with a test suite, however, it cannot be
run at this time because we do not have a C++ compiler yet.</para>
<note>
<para>The test suite also requires locale data to be installed in order to run
successfully. Locale data provides information to the system regarding
such things as the date, time, and currency formats accepted and output by
system utilities. If the test suites are not being run in this chapter
(as per the recommendation), there is no need to install the locales now.
The appropriate locales will be installed in the next chapter. To install
the Glibc locales anyway, use instructions from <xref
linkend="ch-system-glibc" role="."/></para>
</note>
-->
<para>Install the package:</para>
<screen><userinput remap="install">make install</userinput></screen>
<caution>
<para>At this point, it is imperative to stop and ensure that the basic
functions (compiling and linking) of the new toolchain are working as
expected. To perform a sanity check, run the following commands:</para>
<screen><userinput>echo 'int main(){}' &gt; dummy.c
$LFS_TGT-gcc dummy.c
readelf -l a.out | grep ': /tools'</userinput></screen>
<para>If everything is working correctly, there should be no errors,
and the output of the last command will be of the form:</para>
<screen><computeroutput>[Requesting program interpreter: /tools/lib/ld-linux.so.2]</computeroutput></screen>
<para>Note that for 64-bit machines, the interpreter name will be
<filename>/tools/lib64/ld-linux-x86-64.so.2</filename>.</para>
<para>If the output is not shown as above or there was no output at all,
then something is wrong. Investigate and retrace the steps to find out
where the problem is and correct it. This issue must be resolved before
continuing on.</para>
<para>Once all is well, clean up the test files:</para>
<screen><userinput>rm -v dummy.c a.out</userinput></screen>
</caution>
<note><para>Building Binutils in the section after next will serve as an
additional check that the toolchain has been built properly. If Binutils
fails to build, it is an indication that something has gone wrong with the
previous Binutils, GCC, or Glibc installations.</para></note>
</sect2>
<sect2 role="content">
<title/>
<para>Details on this package are located in
<xref linkend="contents-glibc" role="."/></para>
</sect2>
</sect1>

View File

@ -0,0 +1,84 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-tools-gmp" role="wrap">
<?dbhtml filename="gmp.html"?>
<sect1info condition="script">
<productname>gmp</productname>
<productnumber>&gmp-version;</productnumber>
<address>&gmp-url;</address>
</sect1info>
<title>GMP-&gmp-version;</title>
<indexterm zone="ch-tools-gmp">
<primary sortas="a-GMP">GMP</primary>
<secondary>tools</secondary>
</indexterm>
<sect2 role="package">
<title/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="../chapter06/gmp.xml"
xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
<segtitle>&diskspace;</segtitle>
<seglistitem>
<seg>&gmp-ch5-sbu;</seg>
<seg>&gmp-ch5-du;</seg>
</seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of GMP</title>
<para>Prepare GMP for compilation:</para>
<screen><userinput remap="configure">./configure --prefix=/tools --enable-mpbsd</userinput></screen>
<variablelist>
<title>The meaning of the configure option:</title>
<varlistentry>
<term><parameter>--enable-mpbsd</parameter></term>
<listitem>
<para>This builds the Berkeley MP compatibility library</para>
</listitem>
</varlistentry>
</variablelist>
<para>Compile the package:</para>
<screen><userinput remap="make">make</userinput></screen>
<para>To test the results, issue:</para>
<screen><userinput remap="test">make check</userinput></screen>
<para>Install the package:</para>
<screen><userinput remap="install">make install</userinput></screen>
</sect2>
<sect2 role="content">
<title/>
<para>Details on this package are located in
<xref linkend="contents-gmp" role="."/></para>
</sect2>
</sect1>

View File

@ -0,0 +1,74 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-tools-grep" role="wrap">
<?dbhtml filename="grep.html"?>
<sect1info condition="script">
<productname>grep</productname>
<productnumber>&grep-version;</productnumber>
<address>&grep-url;</address>
</sect1info>
<title>Grep-&grep-version;</title>
<indexterm zone="ch-tools-grep">
<primary sortas="a-Grep">Grep</primary>
<secondary>tools</secondary>
</indexterm>
<sect2 role="package">
<title/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="../chapter06/grep.xml"
xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
<segtitle>&diskspace;</segtitle>
<seglistitem>
<seg>&grep-ch5-sbu;</seg>
<seg>&grep-ch5-du;</seg>
</seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of Grep</title>
<para>Prepare Grep for compilation:</para>
<screen><userinput remap="configure">./configure --prefix=/tools</userinput></screen>
<para>Compile the package:</para>
<screen><userinput remap="make">make</userinput></screen>
<para>Compilation is now complete. As discussed earlier, running the test
suite is not mandatory for the temporary tools here in this chapter. To run
the Grep test suite anyway, issue the following command:</para>
<screen><userinput remap="test">make check</userinput></screen>
<para>Install the package:</para>
<screen><userinput remap="install">make install</userinput></screen>
</sect2>
<sect2 role="content">
<title/>
<para>Details on this package are located in
<xref linkend="contents-grep" role="."/></para>
</sect2>
</sect1>

View File

@ -0,0 +1,74 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-tools-gzip" role="wrap">
<?dbhtml filename="gzip.html"?>
<sect1info condition="script">
<productname>gzip</productname>
<productnumber>&gzip-version;</productnumber>
<address>&gzip-url;</address>
</sect1info>
<title>Gzip-&gzip-version;</title>
<indexterm zone="ch-tools-gzip">
<primary sortas="a-Gzip">Gzip</primary>
<secondary>tools</secondary>
</indexterm>
<sect2 role="package">
<title/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="../chapter06/gzip.xml"
xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
<segtitle>&diskspace;</segtitle>
<seglistitem>
<seg>&gzip-ch5-sbu;</seg>
<seg>&gzip-ch5-du;</seg>
</seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of Gzip</title>
<para>Prepare Gzip for compilation:</para>
<screen><userinput remap="configure">./configure --prefix=/tools</userinput></screen>
<para>Compile the package:</para>
<screen><userinput remap="make">make</userinput></screen>
<para>Compilation is now complete. As discussed earlier, running the test
suite is not mandatory for the temporary tools here in this chapter. To run
the Gzip test suite anyway, issue the following command:</para>
<screen><userinput remap="test">make check</userinput></screen>
<para>Install the package:</para>
<screen><userinput remap="install">make install</userinput></screen>
</sect2>
<sect2 role="content">
<title/>
<para>Details on this package are located in
<xref linkend="contents-gzip" role="."/></para>
</sect2>
</sect1>

View File

@ -0,0 +1,29 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-tools-introduction">
<?dbhtml filename="introduction.html"?>
<title>Introduction</title>
<para>This chapter shows how to build a minimal Linux system.
This system will contain just enough tools to start constructing the final
LFS system in <xref linkend="chapter-building-system"/> and allow a working
environment with more user convenience than a minimum environment would.</para>
<para>There are two steps in building this minimal system. The first step
is to build a new and host-independent toolchain (compiler, assembler,
linker, libraries, and a few useful utilities). The second step uses this
toolchain to build the other essential tools.</para>
<para>The files compiled in this chapter will be installed under the
<filename class="directory">$LFS/tools</filename> directory to keep them
separate from the files installed in the next chapter and the host
production directories. Since the packages compiled here are temporary,
we do not want them to pollute the soon-to-be LFS system.</para>
</sect1>

View File

@ -0,0 +1,125 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-tools-libstdcpp" role="wrap">
<?dbhtml filename="gcc-libstdc++.html"?>
<sect1info condition="script">
<productname>libstdc++</productname>
<productnumber>&gcc-version;</productnumber>
<address>&gcc-url;</address>
</sect1info>
<title>Libstdc++-&gcc-version;</title>
<indexterm zone="ch-tools-libstdcpp">
<primary sortas="a-GCC">GCC</primary>
<secondary>tools, libstdc++</secondary>
</indexterm>
<sect2 role="package">
<title/>
<para>Libstdc++ is the standard C++ library. It is needed for the correct
operation of the g++ compiler.</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
<segtitle>&diskspace;</segtitle>
<seglistitem>
<seg>&libstdcpp-ch5-sbu;</seg>
<seg>&libstdcpp-ch5-du;</seg>
</seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of Target Libstdc++</title>
<note>
<para><application>Libstdc++</application> is part of the GCC sources.
You should first unpack the GCC tarball and change to the
<filename>gcc-&gcc-version;</filename> directory.</para>
</note>
<para>Create a directory for Libstdc++ and enter it:</para>
<screen><userinput remap="pre">mkdir -v ../gcc-build
cd ../gcc-build</userinput></screen>
<para>Prepare Libstdc++ for compilation:</para>
<screen><userinput remap="configure">../gcc-&gcc-version;/libstdc++-v3/configure \
--host=$LFS_TGT \
--prefix=/tools \
--disable-multilib \
--disable-nls \
--disable-libstdcxx-threads \
--disable-libstdcxx-pch \
--with-gxx-include-dir=/tools/$LFS_TGT/include/c++/&gcc-version;</userinput></screen>
<variablelist>
<title>The meaning of the configure options:</title>
<varlistentry>
<term><parameter>--host=...</parameter></term>
<listitem>
<para>Indicates to use the cross compiler we have just built
instead of the one in <filename>/usr/bin</filename>.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>--disable-libstdcxx-threads</parameter></term>
<listitem>
<para>Since we have not yet built the C threads library, the C++
one cannot be built either.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>--disable-libstdcxx-pch</parameter></term>
<listitem>
<para>This switch prevents the installation of precompiled
include files, which are not needed at this stage.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>--with-gxx-include-dir=/tools/$LFS_TGT/include/c++/&gcc-version;</parameter></term>
<listitem>
<para>This is the location where the standard include files are
searched by the C++ compiler. In a normal build, this information
is automatically passed to the Libstdc++ <command>configure</command>
options from the top level directory. In our case, this information
must be explicitly given.</para>
</listitem>
</varlistentry>
</variablelist>
<para>Compile libstdc++ by running:</para>
<screen><userinput remap="make">make</userinput></screen>
<para>Install the library:</para>
<screen><userinput remap="install">make install</userinput></screen>
</sect2>
<sect2 role="content">
<title/>
<para>Details on this package are located in
<xref linkend="contents-gcc" role="."/></para>
</sect2>
</sect1>

View File

@ -0,0 +1,73 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-tools-linux-headers" role="wrap">
<?dbhtml filename="linux-headers.html"?>
<sect1info condition="script">
<productname>linux</productname>
<productnumber>&linux-version;</productnumber>
<address>&linux-url;</address>
</sect1info>
<title>Linux-&linux-version; API Headers</title>
<indexterm zone="ch-tools-linux-headers">
<primary sortas="a-Linux">Linux</primary>
<secondary>tools, API headers</secondary>
</indexterm>
<sect2 role="package">
<title/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="../chapter06/linux-headers.xml"
xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
<segtitle>&diskspace;</segtitle>
<seglistitem>
<seg>&linux-headers-ch5-sbu;</seg>
<seg>&linux-headers-ch5-du;</seg>
</seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of Linux API Headers</title>
<para>The Linux kernel needs to expose an Application Programming Interface
(API) for the system's C library (Glibc in LFS) to use. This is done
by way of sanitizing various C header files that are shipped in the Linux
kernel source tarball.</para>
<para>Make sure there are no stale files embedded in the package:</para>
<screen><userinput remap="pre">make mrproper</userinput></screen>
<para>Now extract the user-visible kernel headers from the source.
They are placed in an intermediate local directory and copied to the needed
location because the extraction process removes any existing files in
the target directory.</para>
<screen><userinput remap="make">make INSTALL_HDR_PATH=dest headers_install
</userinput><userinput remap="install">cp -rv dest/include/* /tools/include</userinput></screen>
</sect2>
<sect2 role="content">
<title/>
<para>Details on this package are located in
<xref linkend="contents-linux-headers" role="."/></para>
</sect2>
</sect1>

View File

@ -0,0 +1,74 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-tools-m4" role="wrap">
<?dbhtml filename="m4.html"?>
<sect1info condition="script">
<productname>m4</productname>
<productnumber>&m4-version;</productnumber>
<address>&m4-url;</address>
</sect1info>
<title>M4-&m4-version;</title>
<indexterm zone="ch-tools-m4">
<primary sortas="a-M4">M4</primary>
<secondary>tools</secondary>
</indexterm>
<sect2 role="package">
<title/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="../chapter06/m4.xml"
xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
<segtitle>&diskspace;</segtitle>
<seglistitem>
<seg>&m4-ch5-sbu;</seg>
<seg>&m4-ch5-du;</seg>
</seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of M4</title>
<para>Prepare M4 for compilation:</para>
<screen><userinput remap="configure">./configure --prefix=/tools</userinput></screen>
<para>Compile the package:</para>
<screen><userinput remap="make">make</userinput></screen>
<para>Compilation is now complete. As discussed earlier, running the test
suite is not mandatory for the temporary tools here in this chapter. To run
the M4 test suite anyway, issue the following command:</para>
<screen><userinput remap="test">make check</userinput></screen>
<para>Install the package:</para>
<screen><userinput remap="install">make install</userinput></screen>
</sect2>
<sect2 role="content">
<title/>
<para>Details on this package are located in
<xref linkend="contents-m4" role="."/></para>
</sect2>
</sect1>

View File

@ -0,0 +1,86 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-tools-make" role="wrap">
<?dbhtml filename="make.html"?>
<sect1info condition="script">
<productname>make</productname>
<productnumber>&make-version;</productnumber>
<address>&make-url;</address>
</sect1info>
<title>Make-&make-version;</title>
<indexterm zone="ch-tools-make">
<primary sortas="a-Make">Make</primary>
<secondary>tools</secondary>
</indexterm>
<sect2 role="package">
<title/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="../chapter06/make.xml"
xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
<segtitle>&diskspace;</segtitle>
<seglistitem>
<seg>&make-ch5-sbu;</seg>
<seg>&make-ch5-du;</seg>
</seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of Make</title>
<para>Prepare Make for compilation:</para>
<screen><userinput remap="configure">./configure --prefix=/tools --without-guile</userinput></screen>
<variablelist>
<title>The meaning of the configure option:</title>
<varlistentry>
<term><parameter>--without-guile</parameter></term>
<listitem>
<para>This ensures that Make-&make-version; won't link against Guile libraries, which
may be present on the host system, but won't be available within the
<command>chroot</command> environment in the next chapter.</para>
</listitem>
</varlistentry>
</variablelist>
<para>Compile the package:</para>
<screen><userinput remap="make">make</userinput></screen>
<para>Compilation is now complete. As discussed earlier, running the test
suite is not mandatory for the temporary tools here in this chapter. To run
the Make test suite anyway, issue the following command:</para>
<screen><userinput remap="test">make check</userinput></screen>
<para>Install the package:</para>
<screen><userinput remap="install">make install</userinput></screen>
</sect2>
<sect2 role="content">
<title/>
<para>Details on this package are located in
<xref linkend="contents-make" role="."/></para>
</sect2>
</sect1>

View File

@ -0,0 +1,72 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-tools-mpfr" role="wrap">
<?dbhtml filename="mpfr.html"?>
<sect1info condition="script">
<productname>mpfr</productname>
<productnumber>&mpfr-version;</productnumber>
<address>&mpfr-url;</address>
</sect1info>
<title>MPFR-&mpfr-version;</title>
<indexterm zone="ch-tools-mpfr">
<primary sortas="a-MPFR">MPFR</primary>
<secondary>tools</secondary>
</indexterm>
<sect2 role="package">
<title/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="../chapter06/mpfr.xml"
xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
<segtitle>&diskspace;</segtitle>
<seglistitem>
<seg>&mpfr-ch5-sbu;</seg>
<seg>&mpfr-ch5-du;</seg>
</seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of MPFR</title>
<para>Prepare MPFR for compilation:</para>
<screen><userinput remap="configure">./configure --prefix=/tools --enable-thread-safe</userinput></screen>
<para>Compile the package:</para>
<screen><userinput remap="make">make</userinput></screen>
<para>To test the results, issue:</para>
<screen><userinput remap="test">make check</userinput></screen>
<para>Install the package:</para>
<screen><userinput remap="install">make install</userinput></screen>
</sect2>
<sect2 role="content">
<title/>
<para>Details on this package are located in
<xref linkend="contents-mpfr" role="."/></para>
</sect2>
</sect1>

View File

@ -0,0 +1,122 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-tools-ncurses" role="wrap">
<?dbhtml filename="ncurses.html"?>
<sect1info condition="script">
<productname>ncurses</productname>
<productnumber>&ncurses-version;</productnumber>
<address>&ncurses-url;</address>
</sect1info>
<title>Ncurses-&ncurses-version;</title>
<indexterm zone="ch-tools-ncurses">
<primary sortas="a-Ncurses">Ncurses</primary>
<secondary>tools</secondary>
</indexterm>
<sect2 role="package">
<title/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="../chapter06/ncurses.xml"
xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
<segtitle>&diskspace;</segtitle>
<seglistitem>
<seg>&ncurses-ch5-sbu;</seg>
<seg>&ncurses-ch5-du;</seg>
</seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of Ncurses</title>
<para>First, ensure that gawk is found first during configuration:</para>
<screen><userinput remap="pre">sed -i s/mawk// configure</userinput></screen>
<para>Prepare Ncurses for compilation:</para>
<screen><userinput remap="configure">./configure --prefix=/tools \
--with-shared \
--without-debug \
--without-ada \
--enable-widec \
--enable-overwrite</userinput></screen>
<variablelist>
<title>The meaning of the configure options:</title>
<varlistentry>
<term><parameter>--without-ada</parameter></term>
<listitem>
<para>This ensures that Ncurses does not build support for the Ada
compiler which may be present on the host but will not be available
once we enter the <command>chroot</command> environment.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>--enable-overwrite</parameter></term>
<listitem>
<para>This tells Ncurses to install its header files into
<filename class="directory">/tools/include</filename>, instead of
<filename class="directory">/tools/include/ncurses</filename>, to
ensure that other packages can find the Ncurses headers
successfully.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>--enable-widec</parameter></term>
<listitem>
<para>This switch causes wide-character libraries (e.g., <filename
class="libraryfile">libncursesw.so.&ncurses-version;</filename>)
to be built instead of normal ones (e.g., <filename
class="libraryfile">libncurses.so.&ncurses-version;</filename>).
These wide-character libraries are usable in both multibyte and
traditional 8-bit locales, while normal libraries work properly
only in 8-bit locales. Wide-character and normal libraries are
source-compatible, but not binary-compatible.</para>
</listitem>
</varlistentry>
</variablelist>
<para>Compile the package:</para>
<screen><userinput remap="make">make</userinput></screen>
<para>This package has a test suite, but it can only be run after the
package has been installed. The tests reside in the
<filename class="directory">test/</filename> directory. See the
<filename>README</filename> file in that directory for further details.
</para>
<para>Install the package:</para>
<screen><userinput remap="install">make install</userinput></screen>
</sect2>
<sect2 role="content">
<title/>
<para>Details on this package are located in
<xref linkend="contents-ncurses" role="."/></para>
</sect2>
</sect1>

View File

@ -0,0 +1,74 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-tools-patch" role="wrap">
<?dbhtml filename="patch.html"?>
<sect1info condition="script">
<productname>patch</productname>
<productnumber>&patch-version;</productnumber>
<address>&patch-url;</address>
</sect1info>
<title>Patch-&patch-version;</title>
<indexterm zone="ch-tools-patch">
<primary sortas="a-Patch">Patch</primary>
<secondary>tools</secondary>
</indexterm>
<sect2 role="package">
<title/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="../chapter06/patch.xml"
xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
<segtitle>&diskspace;</segtitle>
<seglistitem>
<seg>&patch-ch5-sbu;</seg>
<seg>&patch-ch5-du;</seg>
</seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of Patch</title>
<para>Prepare Patch for compilation:</para>
<screen><userinput remap="configure">./configure --prefix=/tools</userinput></screen>
<para>Compile the package:</para>
<screen><userinput remap="make">make</userinput></screen>
<para>Compilation is now complete. As discussed earlier, running the test
suite is not mandatory for the temporary tools here in this chapter. To run
the Patch test suite anyway, issue the following command:</para>
<screen><userinput remap="test">make check</userinput></screen>
<para>Install the package:</para>
<screen><userinput remap="install">make install</userinput></screen>
</sect2>
<sect2 role="content">
<title/>
<para>Details on this package are located in
<xref linkend="contents-patch" role="."/></para>
</sect2>
</sect1>

View File

@ -0,0 +1,81 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-tools-perl" role="wrap">
<?dbhtml filename="perl.html"?>
<sect1info condition="script">
<productname>perl</productname>
<productnumber>&perl-version;</productnumber>
<address>&perl-url;</address>
</sect1info>
<title>Perl-&perl-version;</title>
<indexterm zone="ch-tools-perl">
<primary sortas="a-Perl">Perl</primary>
<secondary>tools</secondary>
</indexterm>
<sect2 role="package">
<title/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="../chapter06/perl.xml"
xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
<segtitle>&diskspace;</segtitle>
<seglistitem>
<seg>&perl-ch5-sbu;</seg>
<seg>&perl-ch5-du;</seg>
</seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of Perl</title>
<!--
<para>First apply the following patch to adapt some hard-wired paths to the
C library:</para>
<screen><userinput remap="pre">patch -Np1 -i ../&perl-libc-patch;</userinput></screen>
Note: -Dlibs=-lm below avoids looking for gdbm and db libraries causing failure
-->
<para>Prepare Perl for compilation:</para>
<screen><userinput remap="configure">sh Configure -des -Dprefix=/tools -Dlibs=-lm</userinput></screen>
<para>Build the package:</para>
<screen><userinput remap="make">make</userinput></screen>
<para>Although Perl comes with a test suite, it would be better to wait
until it is installed in the next chapter.</para>
<para>Only a few of the utilities and libraries need to be installed at this
time:</para>
<screen><userinput remap="install">cp -v perl cpan/podlators/pod2man /tools/bin
mkdir -pv /tools/lib/perl5/&perl-version;
cp -Rv lib/* /tools/lib/perl5/&perl-version;</userinput></screen>
</sect2>
<sect2 role="content">
<title/>
<para>Details on this package are located in
<xref linkend="contents-perl" role="."/></para>
</sect2>
</sect1>

View File

@ -0,0 +1,74 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-tools-sed" role="wrap">
<?dbhtml filename="sed.html"?>
<sect1info condition="script">
<productname>sed</productname>
<productnumber>&sed-version;</productnumber>
<address>&sed-url;</address>
</sect1info>
<title>Sed-&sed-version;</title>
<indexterm zone="ch-tools-sed">
<primary sortas="a-Sed">Sed</primary>
<secondary>tools</secondary>
</indexterm>
<sect2 role="package">
<title/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="../chapter06/sed.xml"
xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
<segtitle>&diskspace;</segtitle>
<seglistitem>
<seg>&sed-ch5-sbu;</seg>
<seg>&sed-ch5-du;</seg>
</seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of Sed</title>
<para>Prepare Sed for compilation:</para>
<screen><userinput remap="configure">./configure --prefix=/tools</userinput></screen>
<para>Compile the package:</para>
<screen><userinput remap="make">make</userinput></screen>
<para>Compilation is now complete. As discussed earlier, running the test
suite is not mandatory for the temporary tools here in this chapter. To run
the Sed test suite anyway, issue the following command:</para>
<screen><userinput remap="test">make check</userinput></screen>
<para>Install the package:</para>
<screen><userinput remap="install">make install</userinput></screen>
</sect2>
<sect2 role="content">
<title/>
<para>Details on this package are located in
<xref linkend="contents-sed" role="."/></para>
</sect2>
</sect1>

View File

@ -0,0 +1,39 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-tools-stripping">
<?dbhtml filename="stripping.html"?>
<title>Stripping</title>
<para>The steps in this section are optional, but if the LFS partition is
rather small, it is beneficial to learn that unnecessary items can be removed.
The executables and libraries built so far contain about 70 MB of unneeded
debugging symbols. Remove those symbols with:</para>
<screen><userinput>strip --strip-debug /tools/lib/*
/usr/bin/strip --strip-unneeded /tools/{,s}bin/*</userinput></screen>
<para>These commands will skip a number of files, reporting that it does not
recognize their file format. Most of these are scripts instead of binaries.
Also use the system strip command to include the strip binary in /tools.</para>
<para>Take care <emphasis>not</emphasis> to use
<parameter>--strip-unneeded</parameter> on the libraries. The static
ones would be destroyed and the toolchain packages would need to be
built all over again.</para>
<para>To save more, remove the documentation:</para>
<screen><userinput>rm -rf /tools/{,share}/{info,man,doc}</userinput></screen>
<para>At this point, you should have at least 3 GB of free space in
<envar>$LFS</envar> that can be used to build and install Glibc and Gcc in
the next phase. If you can build and install Glibc, you can build and install
the rest too.</para>
</sect1>

View File

@ -0,0 +1,74 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-tools-tar" role="wrap">
<?dbhtml filename="tar.html"?>
<sect1info condition="script">
<productname>tar</productname>
<productnumber>&tar-version;</productnumber>
<address>&tar-url;</address>
</sect1info>
<title>Tar-&tar-version;</title>
<indexterm zone="ch-tools-tar">
<primary sortas="a-Tar">Tar</primary>
<secondary>tools</secondary>
</indexterm>
<sect2 role="package">
<title/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="../chapter06/tar.xml"
xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
<segtitle>&diskspace;</segtitle>
<seglistitem>
<seg>&tar-ch5-sbu;</seg>
<seg>&tar-ch5-du;</seg>
</seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of Tar</title>
<para>Prepare Tar for compilation:</para>
<screen><userinput remap="configure">./configure --prefix=/tools</userinput></screen>
<para>Compile the package:</para>
<screen><userinput remap="make">make</userinput></screen>
<para>Compilation is now complete. As discussed earlier, running the test
suite is not mandatory for the temporary tools here in this chapter. To run
the Tar test suite anyway, issue the following command:</para>
<screen><userinput remap="test">make check</userinput></screen>
<para>Install the package:</para>
<screen><userinput remap="install">make install</userinput></screen>
</sect2>
<sect2 role="content">
<title/>
<para>Details on this package are located in
<xref linkend="contents-tar" role="."/></para>
</sect2>
</sect1>

View File

@ -0,0 +1,161 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-tools-tcl" role="wrap">
<?dbhtml filename="tcl.html"?>
<sect1info condition="script">
<productname>tcl-core</productname>
<productnumber>&tcl-version;</productnumber>
<address>&tcl-url;</address>
</sect1info>
<title>Tcl-core-&tcl-version;</title>
<indexterm zone="ch-tools-tcl">
<primary sortas="a-Tcl">Tcl-core</primary>
</indexterm>
<sect2 role="package">
<title/>
<para>The Tcl package contains the Tool Command Language.</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
<segtitle>&diskspace;</segtitle>
<seglistitem>
<seg>&tcl-ch5-sbu;</seg>
<seg>&tcl-ch5-du;</seg>
</seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of Tcl-core</title>
<para>This package and the next three (Expect, DejaGNU, and Check) are
installed to support running the test suites for GCC and Binutils and other
packages. Installing four packages for testing purposes may seem
excessive, but it is very reassuring, if not essential, to know that the
most important tools are working properly. Even if the test suites are not
run in this chapter (they are not mandatory), these packages are required
to run the test suites in <xref linkend="chapter-building-system"/>.</para>
<para>Note that the Tcl package used here is a minimal version needed
to run the LFS tests. For the full package, see the
<ulink url='&blfs-book;general/tcl.html'>BLFS Tcl procedures</ulink>.</para>
<para>Prepare Tcl for compilation:</para>
<screen><userinput remap="configure">cd unix
./configure --prefix=/tools</userinput></screen>
<para>Build the package:</para>
<screen><userinput remap="make">make</userinput></screen>
<para>Compilation is now complete. As discussed earlier, running the test
suite is not mandatory for the temporary tools here in this chapter. To run
the Tcl test suite anyway, issue the following command:</para>
<screen><userinput remap="test">TZ=UTC make test</userinput></screen>
<para>The Tcl test suite may experience failures under certain host
conditions that are not fully understood. Therefore, test suite failures
here are not surprising, and are not considered critical. The
<parameter>TZ=UTC</parameter> parameter sets the time zone to Coordinated
Universal Time (UTC), but only
for the duration of the test suite run. This ensures that the clock tests
are exercised correctly. Details on the <envar>TZ</envar> environment
variable are provided in <xref linkend="chapter-bootscripts"/>.</para>
<para>Install the package:</para>
<screen><userinput remap="install">make install</userinput></screen>
<para>Make the installed library writable so debugging symbols can
be removed later:</para>
<screen><userinput remap="install">chmod -v u+w /tools/lib/libtcl&tcl-major-version;.so</userinput></screen>
<para>Install Tcl's headers. The next package, Expect, requires them
to build.</para>
<screen><userinput remap="install">make install-private-headers</userinput></screen>
<para>Now make a necessary symbolic link:</para>
<screen><userinput remap="install">ln -sv tclsh&tcl-major-version; /tools/bin/tclsh</userinput></screen>
</sect2>
<sect2 id="contents-tcl" role="content">
<title>Contents of Tcl-core</title>
<segmentedlist>
<segtitle>Installed programs</segtitle>
<segtitle>Installed library</segtitle>
<seglistitem>
<seg>tclsh (link to tclsh&tcl-major-version;) and tclsh&tcl-major-version;</seg>
<seg>libtcl&tcl-major-version;.so, libtclstub&tcl-major-version;.a</seg>
</seglistitem>
</segmentedlist>
<variablelist>
<bridgehead renderas="sect3">Short Descriptions</bridgehead>
<?dbfo list-presentation="list"?>
<?dbhtml list-presentation="table"?>
<varlistentry id="tclsh&tcl-major-version;">
<term><command>tclsh&tcl-major-version;</command></term>
<listitem>
<para>The Tcl command shell</para>
<indexterm zone="ch-tools-tcl tclsh&tcl-major-version;">
<primary sortas="b-tclsh&tcl-major-version;">tclsh&tcl-major-version;</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="tclsh">
<term><command>tclsh</command></term>
<listitem>
<para>A link to tclsh&tcl-major-version;</para>
<indexterm zone="ch-tools-tcl tclsh">
<primary sortas="b-tclsh">tclsh</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="libtcl&tcl-major-version;.so">
<term><filename class="libraryfile">libtcl&tcl-major-version;.so</filename></term>
<listitem>
<para>The Tcl library</para>
<indexterm zone="ch-tools-tcl libtcl&tcl-major-version;.so">
<primary sortas="c-libtcl&tcl-major-version;.so">libtcl&tcl-major-version;.so</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="libtclstub&tcl-major-version;.a">
<term><filename class="libraryfile">libtclstub&tcl-major-version;.a</filename></term>
<listitem>
<para>The Tcl Stub library</para>
<indexterm zone="ch-tools-tcl libtclstub&tcl-major-version;.a">
<primary sortas="c-libtclstub&tcl-major-version;.a">libtclstub&tcl-major-version;.a</primary>
</indexterm>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>

View File

@ -0,0 +1,74 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-tools-texinfo" role="wrap">
<?dbhtml filename="texinfo.html"?>
<sect1info condition="script">
<productname>texinfo</productname>
<productnumber>&texinfo-version;</productnumber>
<address>&texinfo-url;</address>
</sect1info>
<title>Texinfo-&texinfo-version;</title>
<indexterm zone="ch-tools-texinfo">
<primary sortas="a-Texinfo">Texinfo</primary>
<secondary>tools</secondary>
</indexterm>
<sect2 role="package">
<title/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="../chapter06/texinfo.xml"
xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
<segtitle>&diskspace;</segtitle>
<seglistitem>
<seg>&texinfo-ch5-sbu;</seg>
<seg>&texinfo-ch5-du;</seg>
</seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of Texinfo</title>
<para>Prepare Texinfo for compilation:</para>
<screen><userinput remap="configure">./configure --prefix=/tools</userinput></screen>
<para>Compile the package:</para>
<screen><userinput remap="make">make</userinput></screen>
<para>Compilation is now complete. As discussed earlier, running the test
suite is not mandatory for the temporary tools here in this chapter. To run
the Texinfo test suite anyway, issue the following command:</para>
<screen><userinput remap="test">make check</userinput></screen>
<para>Install the package:</para>
<screen><userinput remap="install">make install</userinput></screen>
</sect2>
<sect2 role="content">
<title/>
<para>Details on this package are located in
<xref linkend="contents-texinfo" role="."/></para>
</sect2>
</sect1>

View File

@ -0,0 +1,164 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-tools-toolchaintechnotes">
<?dbhtml filename="toolchaintechnotes.html"?>
<title>Toolchain Technical Notes</title>
<para>This section explains some of the rationale and technical details
behind the overall build method. It is not essential to immediately
understand everything in this section. Most of this information will be
clearer after performing an actual build. This section can be referred
to at any time during the process.</para>
<para>The overall goal of <xref linkend="chapter-temporary-tools"/> is to
produce a temporary area that contains a known-good set of tools that can be
isolated from the host system. By using <command>chroot</command>, the
commands in the remaining chapters will be contained within that environment,
ensuring a clean, trouble-free build of the target LFS system. The build
process has been designed to minimize the risks for new readers and to provide
the most educational value at the same time.</para>
<note>
<para>Before continuing, be aware of the name of the working platform,
often referred to as the target triplet. A simple way to determine the
name of the target triplet is to run the <command>config.guess</command>
script that comes with the source for many packages. Unpack the Binutils
sources and run the script: <userinput>./config.guess</userinput> and note
the output. For example, for a modern 32-bit Intel processor the
output will likely be <emphasis>i686-pc-linux-gnu</emphasis>.</para>
<para>Also be aware of the name of the platform's dynamic linker, often
referred to as the dynamic loader (not to be confused with the standard
linker <command>ld</command> that is part of Binutils). The dynamic linker
provided by Glibc finds and loads the shared libraries needed by a program,
prepares the program to run, and then runs it. The name of the dynamic
linker for a 32-bit Intel machine will be
<filename class="libraryfile">ld-linux.so.2</filename>.
A sure-fire way to determine the name of the dynamic linker is to
inspect a random binary from the host system by running:
<userinput>readelf -l &lt;name of binary&gt; | grep interpreter</userinput>
and noting the output. The authoritative reference covering all platforms
is in the <filename>shlib-versions</filename> file in the root of the Glibc
source tree.</para>
</note>
<para>Some key technical points of how the <xref
linkend="chapter-temporary-tools"/> build method works:</para>
<itemizedlist>
<listitem>
<para>Slightly adjusting the name of the working platform, by changing the
&quot;vendor&quot; field target triplet by way of the
<envar>LFS_TGT</envar> variable, ensures that the first build of Binutils
and GCC produces a compatible cross-linker and cross-compiler. Instead of
producing binaries for another architecture, the cross-linker and
cross-compiler will produce binaries compatible with the current
hardware.</para>
</listitem>
<listitem>
<para> The temporary libraries are cross-compiled. Because a
cross-compiler by its nature cannot rely on anything from its host
system, this method removes potential contamination of the target
system by lessening the chance of headers or libraries from the host
being incorporated into the new tools. Cross-compilation also allows for
the possibility of building both 32-bit and 64-bit libraries on 64-bit
capable hardware.</para>
</listitem>
<listitem>
<para>Careful manipulation of the GCC source tells the compiler which target
dynamic linker will be used.</para>
</listitem>
</itemizedlist>
<para>Binutils is installed first because the <command>configure</command>
runs of both GCC and Glibc perform various feature tests on the assembler
and linker to determine which software features to enable or disable. This
is more important than one might first realize. An incorrectly configured
GCC or Glibc can result in a subtly broken toolchain, where the impact of
such breakage might not show up until near the end of the build of an
entire distribution. A test suite failure will usually highlight this error
before too much additional work is performed.</para>
<para>Binutils installs its assembler and linker in two locations,
<filename class="directory">/tools/bin</filename> and <filename
class="directory">/tools/$LFS_TGT/bin</filename>. The tools in one
location are hard linked to the other. An important facet of the linker is
its library search order. Detailed information can be obtained from
<command>ld</command> by passing it the <parameter>--verbose</parameter>
flag. For example, an <userinput>ld --verbose | grep SEARCH</userinput>
will illustrate the current search paths and their order. It shows which
files are linked by <command>ld</command> by compiling a dummy program and
passing the <parameter>--verbose</parameter> switch to the linker. For example,
<userinput>gcc dummy.c -Wl,--verbose 2&gt;&amp;1 | grep succeeded</userinput>
will show all the files successfully opened during the linking.</para>
<para>The next package installed is GCC. An example of what can be
seen during its run of <command>configure</command> is:</para>
<screen><computeroutput>checking what assembler to use... /tools/i686-lfs-linux-gnu/bin/as
checking what linker to use... /tools/i686-lfs-linux-gnu/bin/ld</computeroutput></screen>
<para>This is important for the reasons mentioned above. It also demonstrates
that GCC's configure script does not search the PATH directories to find which
tools to use. However, during the actual operation of <command>gcc</command>
itself, the same search paths are not necessarily used. To find out which
standard linker <command>gcc</command> will use, run:
<userinput>gcc -print-prog-name=ld</userinput>.</para>
<para>Detailed information can be obtained from <command>gcc</command> by
passing it the <parameter>-v</parameter> command line option while compiling
a dummy program. For example, <userinput>gcc -v dummy.c</userinput> will show
detailed information about the preprocessor, compilation, and assembly stages,
including <command>gcc</command>'s included search paths and their order.</para>
<para>Next installed are sanitized Linux API headers. These allow the standard
C library (Glibc) to interface with features that the Linux kernel will
provide.</para>
<para>The next package installed is Glibc. The most important considerations
for building Glibc are the compiler, binary tools, and kernel headers. The
compiler is generally not an issue since Glibc will always use the compiler
relating to the <parameter>--host</parameter> parameter passed to its
configure script, e.g. in our case,
<command>i686-lfs-linux-gnu-gcc</command>. The binary tools and kernel
headers can be a bit more complicated. Therefore, take no risks and use the
available configure switches to enforce the correct selections. After the run
of <command>configure</command>, check the contents of the
<filename>config.make</filename> file in the <filename
class="directory">glibc-build</filename> directory for all important details.
Note the use of <parameter>CC="i686-lfs-gnu-gcc"</parameter> to control which
binary tools are used and the use of the <parameter>-nostdinc</parameter> and
<parameter>-isystem</parameter> flags to control the compiler's include
search path. These items highlight an important aspect of the Glibc
package&mdash;it is very self-sufficient in terms of its build machinery and
generally does not rely on toolchain defaults.</para>
<para>During the second pass of Binutils, we are able to utilize the
<parameter>--with-lib-path</parameter> configure switch to control
<command>ld</command>'s library search path.</para>
<para>For the second pass of GCC, its sources also need to be modified to
tell GCC to use the new dynamic linker. Failure to do so will result in the
GCC programs themselves having the name of the dynamic linker from the host
system's <filename class="directory">/lib</filename> directory embedded into
them, which would defeat the goal of getting away from the host. From this
point onwards, the core toolchain is self-contained and self-hosted. The
remainder of the <xref linkend="chapter-temporary-tools"/> packages all build
against the new Glibc in <filename
class="directory">/tools</filename>.</para>
<para>Upon entering the chroot environment in <xref
linkend="chapter-building-system"/>, the first major package to be
installed is Glibc, due to its self-sufficient nature mentioned above.
Once this Glibc is installed into <filename
class="directory">/usr</filename>, we will perform a quick changeover of the
toolchain defaults, and then proceed in building the rest of the target
LFS system.</para>
</sect1>

View File

@ -0,0 +1,106 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-tools-util-linux" role="wrap">
<?dbhtml filename="util-linux.html"?>
<sect1info condition="script">
<productname>util-linux</productname>
<productnumber>&util-linux-version;</productnumber>
<address>&util-linux-url;</address>
</sect1info>
<title>Util-linux-&util-linux-version;</title>
<indexterm zone="ch-tools-util-linux">
<primary sortas="a-Util-linux">Util-linux</primary>
<secondary>tools</secondary>
</indexterm>
<sect2 role="package">
<title/>
<para>The Util-linux package contains miscellaneous utility programs.</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
<segtitle>&diskspace;</segtitle>
<seglistitem>
<seg>&util-linux-ch5-sbu;</seg>
<seg>&util-linux-ch5-du;</seg>
</seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of Util-linux</title>
<para>Prepare Util-linux for compilation:</para>
<screen><userinput remap="configure">./configure --prefix=/tools \
--without-python \
--disable-makeinstall-chown \
--without-systemdsystemunitdir \
PKG_CONFIG=""</userinput></screen>
<variablelist>
<title>The meaning of the configure option:</title>
<varlistentry>
<term><parameter>--without-python</parameter></term>
<listitem>
<para>This switch disables using <application>Python</application>
if it is installed on the host system. It avoids trying to build
unneeded bindings.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>--disable-makeinstall-chown</parameter></term>
<listitem>
<para>This switch disables using the <command>chown</command> command
during installation. This is not needed when installing into the
/tools directory and avoids the necessity of installing as
root.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>--without-systemdsystemunitdir</parameter></term>
<listitem>
<para>On systems that use systemd, the package tries to install
a systemd specific file to a non-existent directory in /tools.
This switch disables the unnecessary action.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><envar>PKG_CONFIG=""</envar></term>
<listitem>
<para>Setting this envronment variable prevents adding unneeded
features that may be available on the host. Note that the location
shown for setting this environment variable is different from other
LFS sections where variables are set preceding the command. This
location is shown to demonstrate an alternative way of setting an
environment variable when using configure.</para>
</listitem>
</varlistentry>
</variablelist>
<para>Compile the package:</para>
<screen><userinput remap="make">make</userinput></screen>
<para>Install the package:</para>
<screen><userinput remap="install">make install</userinput></screen>
</sect2>
</sect1>

View File

@ -0,0 +1,74 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-tools-xz" role="wrap">
<?dbhtml filename="xz.html"?>
<sect1info condition="script">
<productname>xz</productname>
<productnumber>&xz-version;</productnumber>
<address>&xz-url;</address>
</sect1info>
<title>Xz-&xz-version;</title>
<indexterm zone="ch-tools-xz">
<primary sortas="a-xz">Xz</primary>
<secondary>tools</secondary>
</indexterm>
<sect2 role="package">
<title/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="../chapter06/xz.xml"
xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
<segtitle>&diskspace;</segtitle>
<seglistitem>
<seg>&xz-ch5-sbu;</seg>
<seg>&xz-ch5-du;</seg>
</seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of Xz</title>
<para>Prepare Xz for compilation:</para>
<screen><userinput remap="configure">./configure --prefix=/tools</userinput></screen>
<para>Compile the package:</para>
<screen><userinput remap="make">make</userinput></screen>
<para>Compilation is now complete. As discussed earlier, running the test
suite is not mandatory for the temporary tools here in this chapter. To run
the Xz test suite anyway, issue the following command:</para>
<screen><userinput remap="test">make check</userinput></screen>
<para>Install the package:</para>
<screen><userinput remap="install">make install</userinput></screen>
</sect2>
<sect2 role="content">
<title/>
<para>Details on this package are located in
<xref linkend="contents-xz" role="."/></para>
</sect2>
</sect1>

View File

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-aboutdebug">
<?dbhtml filename="aboutdebug.html"?>
<title>About Debugging Symbols</title>
<para>Most programs and libraries are, by default, compiled with
debugging symbols included (with <command>gcc</command>'s
<parameter>-g</parameter> option). This means that when debugging a
program or library that was compiled with debugging information
included, the debugger can provide not only memory addresses, but also
the names of the routines and variables.</para>
<para>However, the inclusion of these debugging symbols enlarges a
program or library significantly. The following is an example of the
amount of space these symbols occupy:</para>
<itemizedlist>
<listitem>
<para>A <command>bash</command> binary with debugging symbols:
1200 KB</para>
</listitem>
<listitem>
<para>A <command>bash</command> binary without debugging symbols:
480 KB</para>
</listitem>
<listitem>
<para>Glibc and GCC files (<filename class="directory">/lib</filename>
and <filename class="directory">/usr/lib</filename>) with debugging
symbols: 87 MB</para>
</listitem>
<listitem>
<para>Glibc and GCC files without debugging symbols: 16 MB</para>
</listitem>
</itemizedlist>
<para>Sizes may vary depending on which compiler and C library were used,
but when comparing programs with and without debugging symbols, the
difference will usually be a factor between two and five.</para>
<para>Because most users will never use a debugger on their system software,
a lot of disk space can be regained by removing these symbols. The next
section shows how to strip all debugging symbols from the programs and
libraries.</para>
</sect1>

View File

@ -0,0 +1,156 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-acl" role="wrap">
<?dbhtml filename="acl.html"?>
<sect1info condition="script">
<productname>acl</productname>
<productnumber>&acl-version;</productnumber>
<address>&acl-url;</address>
</sect1info>
<title>Acl-&acl-version;</title>
<indexterm zone="ch-system-acl">
<primary sortas="a-Acl">Acl</primary>
</indexterm>
<sect2 role="package">
<title/>
<para>The Acl package contains utilities to administer Access Control Lists,
which are used to define more fine-grained discretionary access rights for
files and directories.</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
<segtitle>&diskspace;</segtitle>
<seglistitem>
<seg>&acl-ch6-sbu;</seg>
<seg>&acl-ch6-du;</seg>
</seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of Acl</title>
<para>Modify the documentation directory so that it is a versioned
directory:</para>
<screen><userinput remap="pre">sed -i -e 's|/@pkg_name@|&amp;-@pkg_version@|' include/builddefs.in</userinput></screen>
<para>Fix some broken tests:</para>
<screen><userinput remap="pre">sed -i "s:| sed.*::g" test/{sbits-restore,cp,misc}.test</userinput></screen>
<para>Additionally, fix a bug that causes <command>getfacl -e</command>
to segfault on overly long group name:</para>
<screen><userinput remap="pre">sed -i -e "/TABS-1;/a if (x > (TABS-1)) x = (TABS-1);" \
libacl/__acl_to_any_text.c</userinput></screen>
<para>Prepare Acl for compilation:</para>
<screen><userinput remap="configure">./configure --prefix=/usr \
--disable-static \
--libexecdir=/usr/lib</userinput></screen>
<para>Compile the package:</para>
<screen><userinput remap="make">make</userinput></screen>
<para>The Acl tests need to be run on a filesystem that supports access
controls after <application>Coreutils</application> has been built with the
Acl libraries. If desired, return to this package and run <command>make -j1
tests</command> after <application>Coreutils</application> has been built
later in this chapter.</para>
<para>Install the package:</para>
<screen><userinput remap="install">make install install-dev install-lib
chmod -v 755 /usr/lib/libacl.so</userinput></screen>
<para>The shared library needs to be moved to
<filename class="directory">/lib</filename>, and as a result the
<filename class="extension">.so</filename> file in
<filename class="directory">/usr/lib</filename> will need to be recreated:</para>
<screen><userinput remap="install">mv -v /usr/lib/libacl.so.* /lib
ln -sfv ../../lib/$(readlink /usr/lib/libacl.so) /usr/lib/libacl.so</userinput></screen>
</sect2>
<sect2 id="contents-acl" role="content">
<title>Contents of Acl</title>
<segmentedlist>
<segtitle>Installed programs</segtitle>
<segtitle>Installed library</segtitle>
<segtitle>Installed directories</segtitle>
<seglistitem>
<seg>chacl, getfacl, and setacl</seg>
<seg>libacl.so</seg>
<seg>/usr/include/acl and /usr/share/doc/acl-&acl-version;</seg>
</seglistitem>
</segmentedlist>
<variablelist>
<bridgehead renderas="sect3">Short Descriptions</bridgehead>
<?dbfo list-presentation="list"?>
<?dbhtml list-presentation="table"?>
<varlistentry id="chacl">
<term><command>chacl</command></term>
<listitem>
<para>Changes the access control list of a file
or directory</para>
<indexterm zone="ch-system-acl chacl">
<primary sortas="b-chacl">chacl</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="getfacl">
<term><command>getfacl</command></term>
<listitem>
<para>Gets file access control lists</para>
<indexterm zone="ch-system-acl getfacl">
<primary sortas="b-getfacl">getfacl</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="setacl">
<term><command>setacl</command></term>
<listitem>
<para>Sets file access control lists</para>
<indexterm zone="ch-system-acl setacl">
<primary sortas="b-setacl">setacl</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="libacl">
<term><filename class="libraryfile">libacl</filename></term>
<listitem>
<para>Contains the library functions for manipulating Access Control Lists</para>
<indexterm zone="ch-system-acl libacl">
<primary sortas="c-libacl">libacl</primary>
</indexterm>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>

View File

@ -0,0 +1,117 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-adjusting">
<?dbhtml filename="adjusting.html"?>
<title>Adjusting the Toolchain</title>
<para>Now that the final C libraries have been installed, it is time to adjust
the toolchain so that it will link any
newly compiled program against these new libraries.</para>
<para>First, backup the <filename class="directory">/tools</filename> linker,
and replace it with the adjusted linker we made in chapter 5. We'll also create
a link to its counterpart in <filename class="directory">/tools/$(gcc
-dumpmachine)/bin</filename>:</para>
<screen><userinput>mv -v /tools/bin/{ld,ld-old}
mv -v /tools/$(gcc -dumpmachine)/bin/{ld,ld-old}
mv -v /tools/bin/{ld-new,ld}
ln -sv /tools/bin/ld /tools/$(gcc -dumpmachine)/bin/ld</userinput></screen>
<para>Next, amend the GCC specs file so that it points to the new
dynamic linker. Simply deleting all instances of <quote>/tools</quote> should
leave us with the correct path to the dynamic linker. Also adjust the specs file
so that GCC knows where to find the correct headers and Glibc start files.
A <command>sed</command> command accomplishes this:</para>
<screen><userinput>gcc -dumpspecs | sed -e 's@/tools@@g' \
-e '/\*startfile_prefix_spec:/{n;s@.*@/usr/lib/ @}' \
-e '/\*cpp:/{n;s@$@ -isystem /usr/include@}' &gt; \
`dirname $(gcc --print-libgcc-file-name)`/specs</userinput></screen>
<para>It is a good idea to visually inspect the specs file to verify the
intended change was actually made.</para>
<para>It is imperative at this point to ensure that the basic
functions (compiling and linking) of the adjusted toolchain are working
as expected. To do this, perform the following sanity checks:</para>
<screen os="a"><userinput>echo 'int main(){}' &gt; dummy.c
cc dummy.c -v -Wl,--verbose &amp;&gt; dummy.log
readelf -l a.out | grep ': /lib'</userinput></screen>
<para os="b">There should be no errors,
and the output of the last command will be (allowing for
platform-specific differences in dynamic linker name):</para>
<screen os="c"><computeroutput>[Requesting program interpreter: /lib/ld-linux.so.2]</computeroutput></screen>
<para>Note that <filename class="directory">/lib</filename> is now
the prefix of our dynamic linker.</para>
<para os="d">Now make sure that we're setup to use the correct start files:</para>
<screen os="e"><userinput>grep -o '/usr/lib.*/crt[1in].*succeeded' dummy.log</userinput></screen>
<para os="f">The output of the last command should be:</para>
<screen><computeroutput>/usr/lib/crt1.o succeeded
/usr/lib/crti.o succeeded
/usr/lib/crtn.o succeeded</computeroutput></screen>
<para os="g">Verify that the compiler is searching for the correct header
files:</para>
<screen><userinput>grep -B1 '^ /usr/include' dummy.log</userinput></screen>
<para os="h">This command should return the following output:</para>
<screen><computeroutput>#include &lt;...&gt; search starts here:
/usr/include</computeroutput></screen>
<para os="i">Next, verify that the new linker is being used with the correct search paths:</para>
<screen os="j"><userinput>grep 'SEARCH.*/usr/lib' dummy.log |sed 's|; |\n|g'</userinput></screen>
<para os="k">References to paths that have components with '-linux-gnu' should
be ignored, but otherwise the output of the last command should be:</para>
<screen><computeroutput>SEARCH_DIR("/usr/lib")
SEARCH_DIR("/lib");</computeroutput></screen>
<para os="l">Next make sure that we're using the correct libc:</para>
<screen os="m"><userinput>grep "/lib.*/libc.so.6 " dummy.log</userinput></screen>
<para os="n">The output of the last command (allowing for a lib64 directory
on 64-bit hosts) should be:</para>
<screen os="o"><computeroutput>attempt to open /lib/libc.so.6 succeeded</computeroutput></screen>
<para os="p">Lastly, make sure GCC is using the correct dynamic linker:</para>
<screen os="q"><userinput>grep found dummy.log</userinput></screen>
<para os="r"> The output of the last command should be (allowing for
platform-specific differences in dynamic linker name and a lib64 directory on
64-bit hosts):</para>
<screen os="s"><computeroutput>found ld-linux.so.2 at /lib/ld-linux.so.2</computeroutput></screen>
<para os="t">If the output does not appear as shown above or is not received
at all, then something is seriously wrong. Investigate and retrace the
steps to find out where the problem is and correct it. The most likely
reason is that something went wrong with the specs file adjustment. Any
issues will need to be resolved before continuing on with the process.</para>
<para os="u">Once everything is working correctly, clean up the test files:</para>
<screen os="v"><userinput>rm -v dummy.c a.out dummy.log</userinput></screen>
</sect1>

View File

@ -0,0 +1,148 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-attr" role="wrap">
<?dbhtml filename="attr.html"?>
<sect1info condition="script">
<productname>attr</productname>
<productnumber>&attr-version;</productnumber>
<address>&attr-url;</address>
</sect1info>
<title>Attr-&attr-version;</title>
<indexterm zone="ch-system-attr">
<primary sortas="a-Attr">Attr</primary>
</indexterm>
<sect2 role="package">
<title/>
<para>The attr package contains utilities to administer the extended
attributes on filesystem objects.</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
<segtitle>&diskspace;</segtitle>
<seglistitem>
<seg>&attr-ch6-sbu;</seg>
<seg>&attr-ch6-du;</seg>
</seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of Attr</title>
<para>Modify the documentation directory so that it is a versioned
directory:</para>
<screen><userinput remap="pre">sed -i -e 's|/@pkg_name@|&amp;-@pkg_version@|' include/builddefs.in</userinput></screen>
<para>Prevent installation of manual pages that were already installed by
the <xref linkend="man-pages"/> package:</para>
<screen><userinput remap="pre">sed -i -e "/SUBDIRS/s|man2||" man/Makefile</userinput></screen>
<para>Prepare Attr for compilation:</para>
<screen><userinput remap="configure">./configure --prefix=/usr --disable-static</userinput></screen>
<para>Compile the package:</para>
<screen><userinput remap="make">make</userinput></screen>
<para>The tests need to be run on a filesystem that supports extended
attributes such as the ext2, ext3, or ext4 filesystems. The tests are also
known to fail if running multiple simultaneous tests (-j option greater than
1). To test the results, issue:</para>
<screen><userinput remap="test">make -j1 tests root-tests</userinput></screen>
<para>Install the package:</para>
<screen><userinput remap="install">make install install-dev install-lib
chmod -v 755 /usr/lib/libattr.so</userinput></screen>
<para>The shared library needs to be moved to
<filename class="directory">/lib</filename>, and as a result the
<filename class="extension">.so</filename> file in
<filename class="directory">/usr/lib</filename> will need to be recreated:</para>
<screen><userinput remap="install">mv -v /usr/lib/libattr.so.* /lib
ln -sfv ../../lib/$(readlink /usr/lib/libattr.so) /usr/lib/libattr.so</userinput></screen>
</sect2>
<sect2 id="contents-attr" role="content">
<title>Contents of Attr</title>
<segmentedlist>
<segtitle>Installed programs</segtitle>
<segtitle>Installed library</segtitle>
<segtitle>Installed directories</segtitle>
<seglistitem>
<seg>attr, getfattr, and setattr</seg>
<seg>libattr.so</seg>
<seg>/usr/include/attr and /usr/share/doc/attr-&attr-version;</seg>
</seglistitem>
</segmentedlist>
<variablelist>
<bridgehead renderas="sect3">Short Descriptions</bridgehead>
<?dbfo list-presentation="list"?>
<?dbhtml list-presentation="table"?>
<varlistentry id="attr">
<term><command>attr</command></term>
<listitem>
<para>Extends attributes on filesystem objects</para>
<indexterm zone="ch-system-attr attr">
<primary sortas="b-attr">attr</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="getfattr">
<term><command>getfattr</command></term>
<listitem>
<para>Gets the extended attributes of filesystem objects</para>
<indexterm zone="ch-system-attr getfattr">
<primary sortas="b-getfattr">getfattr</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="setattr">
<term><command>setattr</command></term>
<listitem>
<para>Sets the extended attributes of filesystem objects</para>
<indexterm zone="ch-system-attr setattr">
<primary sortas="b-setattr">setattr</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="libattr">
<term><filename class="libraryfile">libattr</filename></term>
<listitem>
<para>Contains the libbrary functions for manipulating extended attributes</para>
<indexterm zone="ch-system-attr libattr">
<primary sortas="c-libattr">libattr</primary>
</indexterm>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>

View File

@ -0,0 +1,182 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-autoconf" role="wrap">
<?dbhtml filename="autoconf.html"?>
<sect1info condition="script">
<productname>autoconf</productname>
<productnumber>&autoconf-version;</productnumber>
<address>&autoconf-url;</address>
</sect1info>
<title>Autoconf-&autoconf-version;</title>
<indexterm zone="ch-system-autoconf">
<primary sortas="a-Autoconf">Autoconf</primary>
</indexterm>
<sect2 role="package">
<title/>
<para>The Autoconf package contains programs for producing shell scripts that
can automatically configure source code.</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
<segtitle>&diskspace;</segtitle>
<seglistitem>
<seg>&autoconf-ch6-sbu;</seg>
<seg>&autoconf-ch6-du;</seg>
</seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of Autoconf</title>
<para>Prepare Autoconf for compilation:</para>
<screen><userinput remap="configure">./configure --prefix=/usr</userinput></screen>
<para>Compile the package:</para>
<screen><userinput remap="make">make</userinput></screen>
<para>To test the results, issue:</para>
<screen><userinput remap="test">make check</userinput></screen>
<para>This takes a long time, about 4.7 SBUs. In addition, 6 tests are skipped
that use Automake. For full test coverage, Autoconf can be re-tested
after Automake has been installed. In addition, two tests fail due to
changes in libtool-2.4.3 and later.</para>
<para>Install the package:</para>
<screen><userinput remap="install">make install</userinput></screen>
</sect2>
<sect2 id="contents-autoconf" role="content">
<title>Contents of Autoconf</title>
<segmentedlist>
<segtitle>Installed programs</segtitle>
<segtitle>Installed directory</segtitle>
<seglistitem>
<seg>autoconf, autoheader, autom4te, autoreconf, autoscan, autoupdate,
and ifnames</seg>
<seg>/usr/share/autoconf</seg>
</seglistitem>
</segmentedlist>
<variablelist>
<bridgehead renderas="sect3">Short Descriptions</bridgehead>
<?dbfo list-presentation="list"?>
<?dbhtml list-presentation="table"?>
<varlistentry id="autoconf">
<term><command>autoconf</command></term>
<listitem>
<para>Produces shell scripts that automatically configure software
source code packages to adapt to many kinds of Unix-like systems;
the configuration scripts it produces are independent&mdash;running
them does not require the <command>autoconf</command> program</para>
<indexterm zone="ch-system-autoconf autoconf">
<primary sortas="b-autoconf">autoconf</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="autoheader">
<term><command>autoheader</command> </term>
<listitem>
<para>A tool for creating template files of C
<emphasis>#define</emphasis> statements for configure to use</para>
<indexterm zone="ch-system-autoconf autoheader">
<primary sortas="b-autoheader">autoheader</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="autom4te">
<term><command>autom4te</command></term>
<listitem>
<para>A wrapper for the M4 macro processor</para>
<indexterm zone="ch-system-autoconf autom4te">
<primary sortas="b-autom4te">autom4te</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="autoreconf">
<term><command>autoreconf</command></term>
<listitem>
<para>Automatically runs <command>autoconf</command>,
<command>autoheader</command>, <command>aclocal</command>,
<command>automake</command>, <command>gettextize</command>, and
<command>libtoolize</command> in the correct order to save time
when changes are made to <command>autoconf</command> and
<command>automake</command> template files</para>
<indexterm zone="ch-system-autoconf autoreconf">
<primary sortas="b-autoreconf">autoreconf</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="autoscan">
<term><command>autoscan</command> </term>
<listitem>
<para>Helps to create a <filename>configure.in</filename> file for a
software package; it examines the source files in a directory tree,
searching them for common portability issues, and creates a
<filename>configure.scan</filename> file that serves as as a
preliminary <filename>configure.in</filename> file for the
package</para>
<indexterm zone="ch-system-autoconf autoscan">
<primary sortas="b-autoscan">autoscan</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="autoupdate">
<term><command>autoupdate</command></term>
<listitem>
<para>Modifies a <filename>configure.in</filename> file that still
calls <command>autoconf</command> macros by their old names to use the
current macro names</para>
<indexterm zone="ch-system-autoconf autoupdate">
<primary sortas="b-autoupdate">autoupdate</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="ifnames">
<term><command>ifnames</command> </term>
<listitem>
<para>Helps when writing <filename>configure.in</filename> files
for a software package; it prints the identifiers that the package
uses in C preprocessor conditionals [If a package has already been set
up to have some portability, this program can help determine what
<command>configure</command> needs to check for. It can also fill in
gaps in a <filename>configure.in</filename> file generated by
<command>autoscan</command>.]</para>
<indexterm zone="ch-system-autoconf ifnames">
<primary sortas="b-ifnames">ifnames</primary>
</indexterm>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>

View File

@ -0,0 +1,144 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-automake" role="wrap">
<?dbhtml filename="automake.html"?>
<sect1info condition="script">
<productname>automake</productname>
<productnumber>&automake-version;</productnumber>
<address>&automake-url;</address>
</sect1info>
<title>Automake-&automake-version;</title>
<indexterm zone="ch-system-automake">
<primary sortas="a-Automake">Automake</primary>
</indexterm>
<sect2 role="package">
<title/>
<para>The Automake package contains programs for generating Makefiles for use
with Autoconf.</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
<segtitle>&diskspace;</segtitle>
<seglistitem>
<seg>&automake-ch6-sbu;</seg>
<seg>&automake-ch6-du;</seg>
</seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of Automake</title>
<para>First fix a warning that is caused by perl-5.22 and later:</para>
<screen><userinput remap="pre">sed -i 's:/\\\${:/\\\$\\{:' bin/automake.in</userinput></screen>
<para>Prepare Automake for compilation:</para>
<screen><userinput remap="configure">./configure --prefix=/usr --docdir=/usr/share/doc/automake-&automake-version;</userinput></screen>
<para>Compile the package:</para>
<screen><userinput remap="make">make</userinput></screen>
<para>There are a couple of tests that incorrectly link to the
wrong version of the flex library, so we temporarily work around
the problem. Also, using the -j4 make option speeds up the tests, even on
systems with only one processor, due to internal delays in individual
tests. To test the results, issue:</para>
<screen><userinput remap="test">sed -i "s:./configure:LEXLIB=/usr/lib/libfl.a &amp;:" t/lex-{clean,depend}-cxx.sh
make -j4 check</userinput></screen>
<para>Install the package:</para>
<screen><userinput remap="install">make install</userinput></screen>
</sect2>
<sect2 id="contents-automake" role="content">
<title>Contents of Automake</title>
<segmentedlist>
<segtitle>Installed programs</segtitle>
<segtitle>Installed directories</segtitle>
<seglistitem>
<seg>aclocal, aclocal-&am-minor-version; (hard linked with aclocal), automake, and
automake-&am-minor-version; (hard linked with automake) </seg>
<seg>/usr/share/aclocal-&am-minor-version;, /usr/share/automake-&am-minor-version;, and
/usr/share/doc/automake-&automake-version;</seg>
</seglistitem>
</segmentedlist>
<variablelist>
<bridgehead renderas="sect3">Short Descriptions</bridgehead>
<?dbfo list-presentation="list"?>
<?dbhtml list-presentation="table"?>
<varlistentry id="aclocal">
<term><command>aclocal</command></term>
<listitem>
<para>Generates <filename>aclocal.m4</filename> files based on the
contents of <filename>configure.in</filename> files</para>
<indexterm zone="ch-system-automake aclocal">
<primary sortas="b-aclocal">aclocal</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="aclocalversion">
<term><command>aclocal-&am-minor-version;</command></term>
<listitem>
<para>A hard link to <command>aclocal</command></para>
<indexterm zone="ch-system-automake aclocalversion">
<primary sortas="b-aclocal-&am-minor-version;">aclocal-&am-minor-version;</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="automake">
<term><command>automake</command></term>
<listitem>
<para>A tool for automatically generating
<filename>Makefile.in</filename> files from
<filename>Makefile.am</filename> files [To create all the
<filename>Makefile.in</filename> files for a package, run this program
in the top-level directory. By scanning the
<filename>configure.in</filename> file, it automatically finds each
appropriate <filename>Makefile.am</filename> file and generates the
corresponding <filename>Makefile.in</filename> file.]</para>
<indexterm zone="ch-system-automake automake">
<primary sortas="b-automake">automake</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="automake-version">
<term><command>automake-&am-minor-version;</command></term>
<listitem>
<para>A hard link to <command>automake</command></para>
<indexterm zone="ch-system-automake automake-version">
<primary sortas="b-automake-&am-minor-version;">automake-&am-minor-version;</primary>
</indexterm>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>

View File

@ -0,0 +1,163 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-bash" role="wrap">
<?dbhtml filename="bash.html"?>
<sect1info condition="script">
<productname>bash</productname>
<productnumber>&bash-version;</productnumber>
<address>&bash-url;</address>
</sect1info>
<title>Bash-&bash-version;</title>
<indexterm zone="ch-system-bash">
<primary sortas="a-Bash">Bash</primary>
</indexterm>
<sect2 role="package">
<title/>
<para>The Bash package contains the Bourne-Again SHell.</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
<segtitle>&diskspace;</segtitle>
<seglistitem>
<seg>&bash-ch6-sbu;</seg>
<seg>&bash-ch6-du;</seg>
</seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of Bash</title>
<para>First, apply the following patch to fix various bugs that have been
addressed upstream:</para>
<screen><userinput remap="pre">patch -Np1 -i ../&bash-fixes-patch;</userinput></screen>
<para>Prepare Bash for compilation:</para>
<screen><userinput remap="configure">./configure --prefix=/usr \
--bindir=/bin \
--docdir=/usr/share/doc/bash-&bash-version; \
--without-bash-malloc \
--with-installed-readline</userinput></screen>
<variablelist>
<title>The meaning of the new configure option:</title>
<varlistentry>
<term><parameter>--with-installed-readline</parameter></term>
<listitem>
<para>This option tells Bash to use the <filename
class="libraryfile">readline</filename> library that is already
installed on the system rather than using its own readline
version.</para>
</listitem>
</varlistentry>
</variablelist>
<para>Compile the package:</para>
<screen><userinput remap="make">make</userinput></screen>
<para>Skip down to <quote>Install the
package</quote> if not running the test suite.</para>
<para>To prepare the tests, ensure that the <systemitem class="username">nobody</systemitem> user can write to the sources tree:</para>
<screen><userinput remap="test">chown -Rv nobody .</userinput></screen>
<para>Now, run the tests as the <systemitem
class="username">nobody</systemitem> user:</para>
<screen><userinput remap="test">su nobody -s /bin/bash -c "PATH=$PATH make tests"</userinput></screen>
<para>Install the package:</para>
<screen><userinput remap="install">make install</userinput></screen>
<para>Run the newly compiled <command>bash</command> program (replacing the one that is
currently being executed):</para>
<screen role="nodump"><userinput>exec /bin/bash --login +h</userinput></screen>
<note>
<para>The parameters used make the <command>bash</command>
process an interactive login shell and continue to disable hashing so
that new programs are found as they become available.</para>
</note>
</sect2>
<sect2 id="contents-bash" role="content">
<title>Contents of Bash</title>
<segmentedlist>
<segtitle>Installed programs</segtitle>
<segtitle>Installed directory</segtitle>
<seglistitem>
<seg>bash, bashbug, and sh (link to bash)</seg>
<seg>/usr/share/doc/bash-&bash-version;</seg>
</seglistitem>
</segmentedlist>
<variablelist>
<bridgehead renderas="sect3">Short Descriptions</bridgehead>
<?dbfo list-presentation="list"?>
<?dbhtml list-presentation="table"?>
<varlistentry id="bash">
<term><command>bash</command></term>
<listitem>
<para>A widely-used command interpreter; it performs many types of
expansions and substitutions on a given command line before executing
it, thus making this interpreter a powerful tool</para>
<indexterm zone="ch-system-bash bash">
<primary sortas="b-bash">bash</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="bashbug">
<term><command>bashbug</command></term>
<listitem>
<para>A shell script to help the user compose and mail standard
formatted bug reports concerning <command>bash</command></para>
<indexterm zone="ch-system-bash bashbug">
<primary sortas="b-bashbug">bashbug</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="sh">
<term><command>sh</command></term>
<listitem>
<para>A symlink to the <command>bash</command> program; when invoked
as <command>sh</command>, <command>bash</command> tries to mimic the
startup behavior of historical versions of <command>sh</command> as
closely as possible, while conforming to the POSIX standard as
well</para>
<indexterm zone="ch-system-bash sh">
<primary sortas="b-sh">sh</primary>
</indexterm>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>

View File

@ -0,0 +1,127 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-bc" role="wrap">
<?dbhtml filename="bc.html"?>
<sect1info condition="script">
<productname>bc</productname>
<productnumber>&bc-version;</productnumber>
<address>&bc-url;</address>
</sect1info>
<title>Bc-&bc-version;</title>
<indexterm zone="ch-system-bc">
<primary sortas="a-Bc">Bc</primary>
</indexterm>
<sect2 role="package">
<title/>
<para>The Bc package contains an arbitrary precision numeric processing
language.</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
<segtitle>&diskspace;</segtitle>
<seglistitem>
<seg>&bc-ch6-sbu;</seg>
<seg>&bc-ch6-du;</seg>
</seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of Bc</title>
<para>First, fix some minor memory leaks in the code:</para>
<screen><userinput remap="pre">patch -Np1 -i ../&bc-memory-leak-patch;</userinput></screen>
<para>Prepare Bc for compilation:</para>
<screen><userinput remap="configure">./configure --prefix=/usr \
--with-readline \
--mandir=/usr/share/man \
--infodir=/usr/share/info</userinput></screen>
<variablelist>
<title>The meaning of the configure options:</title>
<varlistentry>
<term><parameter>--with-readline</parameter></term>
<listitem>
<para>This option tells Bc to use the <filename
class="libraryfile">readline</filename> library that is already
installed on the system rather than using its own readline
version.</para>
</listitem>
</varlistentry>
</variablelist>
<para>Compile the package:</para>
<screen><userinput remap="make">make</userinput></screen>
<para>To test bc, run the commands below. There is quite a bit of output,
so you may want to redirect it to a file. There are a very small percentage
of tests (10 of 12,144) that will indicate a round off error at the last
digit.</para>
<screen><userinput remap="test">echo "quit" | ./bc/bc -l Test/checklib.b</userinput></screen>
<para>Install the package:</para>
<screen><userinput remap="install">make install</userinput></screen>
</sect2>
<sect2 id="contents-bc" role="content">
<title>Contents of Bc</title>
<segmentedlist>
<segtitle>Installed programs</segtitle>
<seglistitem>
<seg>bc and dc</seg>
</seglistitem>
</segmentedlist>
<variablelist>
<bridgehead renderas="sect3">Short Descriptions</bridgehead>
<?dbfo list-presentation="list"?>
<?dbhtml list-presentation="table"?>
<varlistentry id="bc">
<term><command>bc</command></term>
<listitem>
<para>is a command line calculator</para>
<indexterm zone="ch-system-bc bc">
<primary sortas="b-bc">bc</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="dc">
<term><command>dc</command></term>
<listitem>
<para>is a reverse-polish command line calculator</para>
<indexterm zone="ch-system-bc dc">
<primary sortas="b-dc">dc</primary>
</indexterm>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>

View File

@ -0,0 +1,346 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-binutils" role="wrap">
<?dbhtml filename="binutils.html"?>
<sect1info condition="script">
<productname>binutils</productname>
<productnumber>&binutils-version;</productnumber>
<address>&binutils-url;</address>
</sect1info>
<title>Binutils-&binutils-version;</title>
<indexterm zone="ch-system-binutils">
<primary sortas="a-Binutils">Binutils</primary>
</indexterm>
<sect2 role="package">
<title/>
<para>The Binutils package contains a linker, an assembler, and other
tools for handling object files.</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
<segtitle>&diskspace;</segtitle>
<seglistitem>
<seg>&binutils-ch6-sbu;</seg>
<seg>&binutils-ch6-du;</seg>
</seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of Binutils</title>
<para>Verify that the PTYs are working properly inside the chroot
environment by performing a simple test:</para>
<screen><userinput remap="test">expect -c "spawn ls"</userinput></screen>
<para>This command should output the following:</para>
<screen><computeroutput>spawn ls</computeroutput></screen>
<para>If, instead, the output includes the message below, then the environment
is not set up for proper PTY operation. This issue needs to be resolved before
running the test suites for Binutils and GCC:</para>
<screen><computeroutput>The system has no more ptys.
Ask your system administrator to create more.</computeroutput></screen>
<!--
<para>Fix some LTO tests in the test suite:</para>
<screen><userinput remap="pre">patch -Np1 -i ../&binutils-lto-testsuite-patch;</userinput></screen>
<para>Enable binutils to recognize multiple plugins:</para>
<screen><userinput remap="pre">patch -Np1 -i ../&binutils-multiple-plugins-patch;</userinput></screen>
-->
<para>The Binutils documentation recommends building Binutils outside of the
source directory in a dedicated build directory:</para>
<screen><userinput remap="pre">mkdir -v ../binutils-build
cd ../binutils-build</userinput></screen>
<para>Prepare Binutils for compilation:</para>
<screen><userinput remap="configure">../binutils-&binutils-version;/configure --prefix=/usr \
--enable-shared \
--disable-werror</userinput></screen>
<para>Compile the package:</para>
<screen><userinput remap="make">make tooldir=/usr</userinput></screen>
<variablelist>
<title>The meaning of the make parameter:</title>
<varlistentry>
<term><parameter>tooldir=/usr</parameter></term>
<listitem>
<para>Normally, the tooldir (the directory where the executables will
ultimately be located) is set to <filename
class="directory">$(exec_prefix)/$(target_alias)</filename>. For
example, x86_64 machines would expand that to <filename
class="directory">/usr/x86_64-unknown-linux-gnu</filename>. Because this is
a custom system, this target-specific directory in <filename
class="directory">/usr</filename> is not required. <filename
class="directory">$(exec_prefix)/$(target_alias)</filename> would be
used if the system was used to cross-compile (for example, compiling a
package on an Intel machine that generates code that can be executed
on PowerPC machines).</para>
</listitem>
</varlistentry>
</variablelist>
<important>
<para>The test suite for Binutils in this section is considered critical.
Do not skip it under any circumstances.</para>
</important>
<para>Test the results:</para>
<screen><userinput remap="test">make check</userinput></screen>
<para>Install the package:</para>
<screen><userinput remap="install">make tooldir=/usr install</userinput></screen>
</sect2>
<sect2 id="contents-binutils" role="content">
<title>Contents of Binutils</title>
<segmentedlist>
<segtitle>Installed programs</segtitle>
<segtitle>Installed libraries</segtitle>
<segtitle>Installed directory</segtitle>
<seglistitem>
<seg>addr2line, ar, as, c++filt, elfedit, gprof, ld, ld.bfd, nm,
objcopy, objdump, ranlib, readelf, size, strings, and strip</seg>
<seg>libbfd.{a,so} and libopcodes.{a,so}</seg>
<seg>/usr/lib/ldscripts</seg>
</seglistitem>
</segmentedlist>
<variablelist>
<bridgehead renderas="sect3">Short Descriptions</bridgehead>
<?dbfo list-presentation="list"?>
<?dbhtml list-presentation="table"?>
<varlistentry id="addr2line">
<term><command>addr2line</command></term>
<listitem>
<para>Translates program addresses to file names and line numbers;
given an address and the name of an executable, it uses the debugging
information in the executable to determine which source file and line
number are associated with the address</para>
<indexterm zone="ch-system-binutils addr2line">
<primary sortas="b-addr2line">addr2line</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="ar">
<term><command>ar</command></term>
<listitem>
<para>Creates, modifies, and extracts from archives</para>
<indexterm zone="ch-system-binutils ar">
<primary sortas="b-ar">ar</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="as">
<term><command>as</command></term>
<listitem>
<para>An assembler that assembles the output of <command>gcc</command>
into object files</para>
<indexterm zone="ch-system-binutils as">
<primary sortas="b-as">as</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="c-filt">
<term><command>c++filt</command></term>
<listitem>
<para>Used by the linker to de-mangle C++ and Java symbols and to keep
overloaded functions from clashing</para>
<indexterm zone="ch-system-binutils c-filt">
<primary sortas="b-c++filt">c++filt</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="elfedit">
<term><command>elfedit</command></term>
<listitem>
<para>Updates the ELF header of ELF files</para>
<indexterm zone="ch-system-binutils elfedit">
<primary sortas="b-elfedit">elfedit</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="gprof">
<term><command>gprof</command></term>
<listitem>
<para>Displays call graph profile data</para>
<indexterm zone="ch-system-binutils gprof">
<primary sortas="b-gprof">gprof</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="ld">
<term><command>ld</command></term>
<listitem>
<para>A linker that combines a number of object and archive files
into a single file, relocating their data and tying up symbol
references</para>
<indexterm zone="ch-system-binutils ld">
<primary sortas="b-ld">ld</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="ld.bfd">
<term><command>ld.bfd</command></term>
<listitem>
<para>Hard link to <command>ld</command></para>
<indexterm zone="ch-system-binutils ld.bfd">
<primary sortas="b-ld.bfd">ld.bfd</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="nm">
<term><command>nm</command></term>
<listitem>
<para>Lists the symbols occurring in a given object file</para>
<indexterm zone="ch-system-binutils nm">
<primary sortas="b-nm">nm</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="objcopy">
<term><command>objcopy</command></term>
<listitem>
<para>Translates one type of object file into another</para>
<indexterm zone="ch-system-binutils objcopy">
<primary sortas="b-objcopy">objcopy</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="objdump">
<term><command>objdump</command></term>
<listitem>
<para>Displays information about the given object file, with options
controlling the particular information to display; the information
shown is useful to programmers who are working on the compilation
tools</para>
<indexterm zone="ch-system-binutils objdump">
<primary sortas="b-objdump">objdump</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="ranlib">
<term><command>ranlib</command></term>
<listitem>
<para>Generates an index of the contents of an archive and stores it
in the archive; the index lists all of the symbols defined by archive
members that are relocatable object files</para>
<indexterm zone="ch-system-binutils ranlib">
<primary sortas="b-ranlib">ranlib</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="readelf">
<term><command>readelf</command></term>
<listitem>
<para>Displays information about ELF type binaries</para>
<indexterm zone="ch-system-binutils readelf">
<primary sortas="b-readelf">readelf</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="size">
<term><command>size</command></term>
<listitem>
<para>Lists the section sizes and the total size for the given
object files</para>
<indexterm zone="ch-system-binutils size">
<primary sortas="b-size">size</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="strings">
<term><command>strings</command></term>
<listitem>
<para>Outputs, for each given file, the sequences of printable
characters that are of at least the specified length (defaulting to
four); for object files, it prints, by default, only the strings from
the initializing and loading sections while for other types of files, it
scans the entire file</para>
<indexterm zone="ch-system-binutils strings">
<primary sortas="b-strings">strings</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="strip">
<term><command>strip</command></term>
<listitem>
<para>Discards symbols from object files</para>
<indexterm zone="ch-system-binutils strip">
<primary sortas="b-strip">strip</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="libbfd">
<term><filename class="libraryfile">libbfd</filename></term>
<listitem>
<para>The Binary File Descriptor library</para>
<indexterm zone="ch-system-binutils libbfd">
<primary sortas="c-libbfd">libbfd</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="libopcodes">
<term><filename class="libraryfile">libopcodes</filename></term>
<listitem>
<para>A library for dealing with opcodes&mdash;the <quote>readable
text</quote> versions of instructions for the processor;
it is used for building utilities like
<command>objdump</command></para>
<indexterm zone="ch-system-binutils libopcodes">
<primary sortas="c-libopcodes">libopcodes</primary>
</indexterm>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>

View File

@ -0,0 +1,131 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-bison" role="wrap">
<?dbhtml filename="bison.html"?>
<sect1info condition="script">
<productname>bison</productname>
<productnumber>&bison-version;</productnumber>
<address>&bison-url;</address>
</sect1info>
<title>Bison-&bison-version;</title>
<indexterm zone="ch-system-bison">
<primary sortas="a-Bison">Bison</primary>
</indexterm>
<sect2 role="package">
<title/>
<para>The Bison package contains a parser generator.</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
<segtitle>&diskspace;</segtitle>
<seglistitem>
<seg>&bison-ch6-sbu;</seg>
<seg>&bison-ch6-du;</seg>
</seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of Bison</title>
<!-- bison only installs a static library
<para>Inhibit static library installation:</para>
<screen><userinput remap="pre">sed -i '/lib_LIBRARIES =/d' Makefile.in</userinput></screen>
-->
<para>Prepare Bison for compilation:</para>
<screen><userinput remap="configure">./configure --prefix=/usr --docdir=/usr/share/doc/bison-&bison-version;</userinput></screen>
<para>Compile the package:</para>
<screen><userinput remap="make">make</userinput></screen>
<!--
<para>To test the results (about 2.2 SBU), issue:</para>
<screen><userinput remap="test">make check</userinput></screen>
-->
<para>There is a circular dependency between bison and flex with regard to
the checks. If desired, after installing flex in the next section, the
bison checks can be run with <command>make check</command>.</para>
<para>Install the package:</para>
<screen><userinput remap="install">make install</userinput></screen>
</sect2>
<sect2 id="contents-bison" role="content">
<title>Contents of Bison</title>
<segmentedlist>
<segtitle>Installed programs</segtitle>
<segtitle>Installed library</segtitle>
<segtitle>Installed directory</segtitle>
<seglistitem>
<seg>bison and yacc</seg>
<seg>liby.a</seg>
<seg>/usr/share/bison</seg>
</seglistitem>
</segmentedlist>
<variablelist>
<bridgehead renderas="sect3">Short Descriptions</bridgehead>
<?dbfo list-presentation="list"?>
<?dbhtml list-presentation="table"?>
<varlistentry id="bison">
<term><command>bison</command></term>
<listitem>
<para>Generates, from a series of rules, a program for analyzing the
structure of text files; Bison is a replacement for Yacc (Yet Another
Compiler Compiler)</para>
<indexterm zone="ch-system-bison bison">
<primary sortas="b-bison">bison</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="yacc">
<term><command>yacc</command></term>
<listitem>
<para>A wrapper for <command>bison</command>, meant for programs that
still call <command>yacc</command> instead of <command>bison</command>;
it calls <command>bison</command> with the <parameter>-y</parameter>
option</para>
<indexterm zone="ch-system-bison yacc">
<primary sortas="b-yacc">yacc</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="liby">
<term><filename class="libraryfile">liby</filename></term>
<listitem>
<para>The Yacc library containing implementations of Yacc-compatible
<function>yyerror</function> and <function>main</function> functions;
this library is normally not very useful, but POSIX requires it</para>
<indexterm zone="ch-system-bison liby">
<primary sortas="c-liby">liby</primary>
</indexterm>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>

View File

@ -0,0 +1,250 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-bzip2" role="wrap">
<?dbhtml filename="bzip2.html"?>
<sect1info condition="script">
<productname>bzip2</productname>
<productnumber>&bzip2-version;</productnumber>
<address>&bzip2-url;</address>
</sect1info>
<title>Bzip2-&bzip2-version;</title>
<indexterm zone="ch-system-bzip2">
<primary sortas="a-Bzip2">Bzip2</primary>
</indexterm>
<sect2 role="package">
<title/>
<para>The Bzip2 package contains programs for compressing and decompressing
files. Compressing text files with <command>bzip2</command> yields a much
better compression percentage than with the traditional
<command>gzip</command>.</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
<segtitle>&diskspace;</segtitle>
<seglistitem>
<seg>&bzip2-ch6-sbu;</seg>
<seg>&bzip2-ch6-du;</seg>
</seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of Bzip2</title>
<para>Apply a patch that will install the documentation for this package:</para>
<screen><userinput remap="pre">patch -Np1 -i ../&bzip2-docs-patch;</userinput></screen>
<para>The following command ensures installation of symbolic links are relative:</para>
<screen><userinput remap="pre">sed -i 's@\(ln -s -f \)$(PREFIX)/bin/@\1@' Makefile</userinput></screen>
<para>Ensure the man pages are installed into the correct location:</para>
<screen><userinput remap="pre">sed -i "s@(PREFIX)/man@(PREFIX)/share/man@g" Makefile</userinput></screen>
<para>Prepare Bzip2 for compilation with:</para>
<screen><userinput remap="make">make -f Makefile-libbz2_so
make clean</userinput></screen>
<variablelist>
<title>The meaning of the make parameter:</title>
<varlistentry>
<term><parameter>-f Makefile-libbz2_so</parameter></term>
<listitem>
<para>This will cause Bzip2 to be built using a different
<filename>Makefile</filename> file, in this case the
<filename>Makefile-libbz2_so</filename> file, which creates a dynamic
<filename class="libraryfile">libbz2.so</filename> library and links
the Bzip2 utilities against it.</para>
</listitem>
</varlistentry>
</variablelist>
<para>Compile and test the package:</para>
<screen><userinput remap="make">make</userinput></screen>
<para>Install the programs:</para>
<screen><userinput remap="install">make PREFIX=/usr install</userinput></screen>
<para>Install the shared <command>bzip2</command> binary into the
<filename class="directory">/bin</filename> directory, make
some necessary symbolic links, and clean up:</para>
<screen><userinput remap="install">cp -v bzip2-shared /bin/bzip2
cp -av libbz2.so* /lib
ln -sv ../../lib/libbz2.so.1.0 /usr/lib/libbz2.so
rm -v /usr/bin/{bunzip2,bzcat,bzip2}
ln -sv bzip2 /bin/bunzip2
ln -sv bzip2 /bin/bzcat</userinput></screen>
</sect2>
<sect2 id="contents-bzip2" role="content">
<title>Contents of Bzip2</title>
<segmentedlist>
<segtitle>Installed programs</segtitle>
<segtitle>Installed libraries</segtitle>
<segtitle>Installed directory</segtitle>
<seglistitem>
<seg>bunzip2 (link to bzip2), bzcat (link to bzip2), bzcmp (link to
bzdiff), bzdiff, bzegrep (link to bzgrep), bzfgrep (link to bzgrep),
bzgrep, bzip2, bzip2recover, bzless (link to bzmore), and bzmore</seg>
<seg>libbz2.{a,so}</seg>
<seg>/usr/share/doc/bzip2-&bzip2-version;</seg>
</seglistitem>
</segmentedlist>
<variablelist>
<bridgehead renderas="sect3">Short Descriptions</bridgehead>
<?dbfo list-presentation="list"?>
<?dbhtml list-presentation="table"?>
<varlistentry id="bunzip2">
<term><command>bunzip2</command></term>
<listitem>
<para>Decompresses bzipped files</para>
<indexterm zone="ch-system-bzip2 bunzip2">
<primary sortas="b-bunzip2">bunzip2</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="bzcat">
<term><command>bzcat</command></term>
<listitem>
<para>Decompresses to standard output</para>
<indexterm zone="ch-system-bzip2 bzcat">
<primary sortas="b-bzcat">bzcat</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="bzcmp">
<term><command>bzcmp</command></term>
<listitem>
<para>Runs <command>cmp</command> on bzipped files</para>
<indexterm zone="ch-system-bzip2 bzcmp">
<primary sortas="b-bzcmp">bzcmp</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="bzdiff">
<term><command>bzdiff</command></term>
<listitem>
<para>Runs <command>diff</command> on bzipped files</para>
<indexterm zone="ch-system-bzip2 bzdiff">
<primary sortas="b-bzdiff">bzdiff</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="bzegrep">
<term><command>bzegrep</command></term>
<listitem>
<para>Runs <command>egrep</command> on bzipped files</para>
<indexterm zone="ch-system-bzip2 bzegrep">
<primary sortas="b-bzegrep">bzegrep</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="bzfgrep">
<term><command>bzfgrep</command></term>
<listitem>
<para>Runs <command>fgrep</command> on bzipped files</para>
<indexterm zone="ch-system-bzip2 bzfgrep">
<primary sortas="b-bzfgrep">bzfgrep</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="bzgrep">
<term><command>bzgrep</command></term>
<listitem>
<para>Runs <command>grep</command> on bzipped files</para>
<indexterm zone="ch-system-bzip2 bzgrep">
<primary sortas="b-bzgrep">bzgrep</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="bzip2">
<term><command>bzip2</command></term>
<listitem>
<para>Compresses files using the Burrows-Wheeler block sorting text
compression algorithm with Huffman coding; the compression rate is
better than that achieved by more conventional compressors using
<quote>Lempel-Ziv</quote> algorithms, like <command>gzip</command></para>
<indexterm zone="ch-system-bzip2 bzip2">
<primary sortas="b-bzip2">bzip2</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="bzip2recover">
<term><command>bzip2recover</command></term>
<listitem>
<para>Tries to recover data from damaged bzipped files</para>
<indexterm zone="ch-system-bzip2 bzip2recover">
<primary sortas="b-bzip2recover">bzip2recover</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="bzless">
<term><command>bzless</command></term>
<listitem>
<para>Runs <command>less</command> on bzipped files</para>
<indexterm zone="ch-system-bzip2 bzless">
<primary sortas="b-bzless">bzless</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="bzmore">
<term><command>bzmore</command></term>
<listitem>
<para>Runs <command>more</command> on bzipped files</para>
<indexterm zone="ch-system-bzip2 bzmore">
<primary sortas="b-bzmore">bzmore</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="libbz2">
<term><filename class="libraryfile">libbz2</filename></term>
<listitem>
<para>The library implementing lossless, block-sorting data
compression, using the Burrows-Wheeler algorithm</para>
<indexterm zone="ch-system-bzip2 libbz2">
<primary sortas="c-libbz2">libbz2</primary>
</indexterm>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>

View File

@ -0,0 +1,87 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<chapter id="chapter-building-system" xreflabel="Chapter 6">
<?dbhtml dir="chapter06"?>
<?dbhtml filename="chapter06.html"?>
<title>Installing Basic System Software</title>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="introduction.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="kernfs.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="pkgmgt.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="chroot.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="creatingdirs.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="createfiles.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="linux-headers.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="man-pages.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="glibc.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="adjusting.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="zlib.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="file.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="binutils.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="gmp.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="mpfr.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="mpc.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="gcc.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="bzip2.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="pkgconfig.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="ncurses.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="attr.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="acl.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="libcap.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="sed.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="shadow.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="psmisc.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="iana-etc.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="m4.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="bison.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="flex.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="grep.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="readline.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="bash.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="bc.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="libtool.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="gdbm.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="gperf.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="expat.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="inetutils.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="perl.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="xml-parser.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="intltool.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="autoconf.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="automake.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="xz.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="kmod.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="gettext.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="systemd.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="procps.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="e2fsprogs.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="coreutils.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="diffutils.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="gawk.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="findutils.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="groff.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="grub.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="less.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="gzip.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="iproute2.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="kbd.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="libpipeline.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="make.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="patch.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="dbus.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="util-linux.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="man-db.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="tar.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="texinfo.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="vim.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="aboutdebug.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="strippingagain.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="revisedchroot.xml"/>
</chapter>

View File

@ -0,0 +1,63 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-chroot">
<?dbhtml filename="chroot.html"?>
<title>Entering the Chroot Environment</title>
<para>It is time to enter the chroot environment to begin building and
installing the final LFS system. As user <systemitem
class="username">root</systemitem>, run the following command to enter the
realm that is, at the moment, populated with only the temporary tools:</para>
<screen role="nodump"><userinput>chroot "$LFS" /tools/bin/env -i \
HOME=/root \
TERM="$TERM" \
PS1='\u:\w\$ ' \
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \
/tools/bin/bash --login +h</userinput></screen>
<para>The <parameter>-i</parameter> option given to the <command>env</command>
command will clear all variables of the chroot environment. After that, only
the <envar>HOME</envar>, <envar>TERM</envar>, <envar>PS1</envar>, and
<envar>PATH</envar> variables are set again. The
<parameter>TERM=$TERM</parameter> construct will set the <envar>TERM</envar>
variable inside chroot to the same value as outside chroot. This variable is
needed for programs like <command>vim</command> and <command>less</command>
to operate properly. If other variables are needed, such as
<envar>CFLAGS</envar> or <envar>CXXFLAGS</envar>, this is a good place to set
them again.</para>
<para>From this point on, there is no need to use the
<envar>LFS</envar> variable anymore, because all work will be restricted
to the LFS file system. This is because the Bash shell is told that
<filename class="directory">$LFS</filename> is now the root
(<filename class="directory">/</filename>) directory.</para>
<para>Notice that <filename class="directory">/tools/bin</filename> comes last
in the <envar>PATH</envar>. This means that a temporary tool will no longer be
used once its final version is installed. This occurs when the shell does not
<quote>remember</quote> the locations of executed binaries&mdash;for this
reason, hashing is switched off by passing the <parameter>+h</parameter> option
to <command>bash</command>.</para>
<para>Note that the <command>bash</command> prompt will say
<computeroutput>I have no name!</computeroutput> This is normal because the
<filename>/etc/passwd</filename> file has not been created yet.</para>
<note>
<para>It is important that all the commands throughout the remainder of this
chapter and the following chapters are run from within the chroot
environment. If you leave this environment for any reason (rebooting for
example), ensure that the virtual kernel filesystems are mounted as
explained in <xref linkend="ch-system-bindmount"/> and <xref
linkend="ch-system-kernfsmount"/> and enter chroot again before continuing
with the installation.</para>
</note>
</sect1>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,252 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-createfiles">
<?dbhtml filename="createfiles.html"?>
<title>Creating Essential Files and Symlinks</title>
<indexterm zone="ch-system-createfiles">
<primary sortas="e-/etc/passwd">/etc/passwd</primary>
</indexterm>
<indexterm zone="ch-system-createfiles">
<primary sortas="e-/etc/group">/etc/group</primary>
</indexterm>
<indexterm zone="ch-system-createfiles">
<primary sortas="e-/var/run/utmp">/var/run/utmp</primary>
</indexterm>
<indexterm zone="ch-system-createfiles">
<primary sortas="e-/var/log/btmp">/var/log/btmp</primary>
</indexterm>
<indexterm zone="ch-system-createfiles">
<primary sortas="e-/var/log/lastlog">/var/log/lastlog</primary>
</indexterm>
<indexterm zone="ch-system-createfiles">
<primary sortas="e-/var/log/wtmp">/var/log/wtmp</primary>
</indexterm>
<para>Some programs use hard-wired paths to programs which do not exist yet. In
order to satisfy these programs, create a number of symbolic links which will be
replaced by real files throughout the course of this chapter after the software
has been installed:</para>
<screen><userinput>ln -sv /tools/bin/{bash,cat,echo,pwd,stty} /bin
ln -sv /tools/bin/perl /usr/bin
ln -sv /tools/lib/libgcc_s.so{,.1} /usr/lib
ln -sv /tools/lib/libstdc++.so{,.6} /usr/lib
sed 's/tools/usr/' /tools/lib/libstdc++.la > /usr/lib/libstdc++.la
ln -sv bash /bin/sh</userinput></screen>
<variablelist>
<title>The purpose of each link:</title>
<varlistentry>
<term><parameter><filename>/bin/bash</filename></parameter></term>
<listitem>
<para>Many <command>bash</command> scripts specify
<filename>/bin/bash</filename>.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter><filename>/bin/cat</filename></parameter></term>
<listitem>
<para>This pathname is hard-coded into Glibc's configure script.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter><filename>/bin/echo</filename></parameter></term>
<listitem>
<para>This is to satisfy one of the tests in Glibc's test suite, which
expects <filename>/bin/echo</filename>.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter><filename>/bin/pwd</filename></parameter></term>
<listitem>
<para>Some <command>configure</command> scripts, particularly Glibc's,
have this pathname hard-coded.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter><filename>/bin/stty</filename></parameter></term>
<listitem>
<para>This pathname is hard-coded into Expect, therefore it is needed
for Binutils and GCC test suites to pass.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter><filename>/usr/bin/perl</filename></parameter></term>
<listitem>
<para>Many Perl scripts hard-code this path to the
<command>perl</command> program.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter><filename>/usr/lib/libgcc_s.so{,.1}</filename></parameter></term>
<listitem>
<para>Glibc needs this for the pthreads library to work.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter><filename>/usr/lib/libstdc++{,.6}</filename></parameter></term>
<listitem>
<para>This is needed by several tests in Glibc's test suite, as well as
for C++ support in GMP.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter><filename>/usr/lib/libstdc++.la</filename></parameter></term>
<listitem>
<para>This prevents a <filename class="directory">/tools</filename>
reference that would otherwise be in
<filename>/usr/lib/libstdc++.la</filename> after GCC is installed.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter><filename>/bin/sh</filename></parameter></term>
<listitem>
<para>Many shell scripts hard-code <filename>/bin/sh</filename>.</para>
</listitem>
</varlistentry>
</variablelist>
<para>Historically, Linux maintains a list of the mounted file systems in the
file <filename>/etc/mtab</filename>. Modern kernels maintain this list
internally and exposes it to the user via the <filename
class="directory">/proc</filename> filesystem. To satisfy utilities that
expect the presence of <filename>/etc/mtab</filename>, create the following
symbolic link:</para>
<screen><userinput>ln -sv /proc/self/mounts /etc/mtab</userinput></screen>
<para>In order for user <systemitem class="username">root</systemitem> to be
able to login and for the name <quote>root</quote> to be recognized, there
must be relevant entries in the <filename>/etc/passwd</filename> and
<filename>/etc/group</filename> files.</para>
<para>Create the <filename>/etc/passwd</filename> file by running the following
command:</para>
<screen><userinput>cat &gt; /etc/passwd &lt;&lt; "EOF"
<literal>root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/dev/null:/bin/false
daemon:x:6:6:Daemon User:/dev/null:/bin/false
messagebus:x:18:18:D-Bus Message Daemon User:/var/run/dbus:/bin/false
systemd-bus-proxy:x:72:72:systemd Bus Proxy:/:/bin/false
systemd-journal-gateway:x:73:73:systemd Journal Gateway:/:/bin/false
systemd-journal-remote:x:74:74:systemd Journal Remote:/:/bin/false
systemd-journal-upload:x:75:75:systemd Journal Upload:/:/bin/false
systemd-network:x:76:76:systemd Network Management:/:/bin/false
systemd-resolve:x:77:77:systemd Resolver:/:/bin/false
systemd-timesync:x:78:78:systemd Time Synchronization:/:/bin/false
nobody:x:99:99:Unprivileged User:/dev/null:/bin/false</literal>
EOF</userinput></screen>
<para>The actual password for <systemitem class="username">root</systemitem>
(the <quote>x</quote> used here is just a placeholder) will be set later.</para>
<para>Create the <filename>/etc/group</filename> file by running the following
command:</para>
<screen><userinput>cat &gt; /etc/group &lt;&lt; "EOF"
<literal>root:x:0:
bin:x:1:daemon
sys:x:2:
kmem:x:3:
tape:x:4:
tty:x:5:
daemon:x:6:
floppy:x:7:
disk:x:8:
lp:x:9:
dialout:x:10:
audio:x:11:
video:x:12:
utmp:x:13:
usb:x:14:
cdrom:x:15:
adm:x:16:
messagebus:x:18:
systemd-journal:x:23:
input:x:24:
mail:x:34:
systemd-bus-proxy:x:72:
systemd-journal-gateway:x:73:
systemd-journal-remote:x:74:
systemd-journal-upload:x:75:
systemd-network:x:76:
systemd-resolve:x:77:
systemd-timesync:x:78:
nogroup:x:99:
users:x:999:</literal>
EOF</userinput></screen>
<para>The created groups are not part of any standard&mdash;they are groups
decided on in part by the requirements of the Udev configuration in this
chapter, and in part by common convention employed by a number of existing
Linux distributions. In addition, some test suites rely on specific users
or groups. The Linux Standard Base (LSB, available at <ulink
url="http://www.linuxbase.org"/>) recommends only that, besides the group
<systemitem class="groupname">root</systemitem> with a Group ID (GID) of 0,
a group <systemitem class="groupname">bin</systemitem> with a GID of 1 be
present. All other group names and GIDs can be chosen freely by the system
administrator since well-written programs do not depend on GID numbers, but
rather use the group's name.</para>
<para>To remove the <quote>I have no name!</quote> prompt, start a new
shell. Since a full Glibc was installed in <xref
linkend="chapter-temporary-tools"/> and the
<filename>/etc/passwd</filename> and <filename>/etc/group</filename>
files have been created, user name and group name resolution will now
work:</para>
<screen role="nodump"><userinput>exec /tools/bin/bash --login +h</userinput></screen>
<para>Note the use of the <parameter>+h</parameter> directive. This tells
<command>bash</command> not to use its internal path hashing. Without this
directive, <command>bash</command> would remember the paths to binaries it has
executed. To ensure the use of the newly compiled binaries as soon as they are
installed, the <parameter>+h</parameter> directive will be used for the duration
of this chapter.</para>
<para>The <command>login</command>, <command>agetty</command>, and
<command>init</command> programs (and others) use a number of log
files to record information such as who was logged into the system and
when. However, these programs will not write to the log files if they
do not already exist. Initialize the log files and give them
proper permissions:</para>
<screen><userinput>touch /var/log/{btmp,lastlog,wtmp}
chgrp -v utmp /var/log/lastlog
chmod -v 664 /var/log/lastlog
chmod -v 600 /var/log/btmp</userinput></screen>
<para>The <filename>/var/log/wtmp</filename> file records all logins and
logouts. The <filename>/var/log/lastlog</filename> file records when each
user last logged in. The <filename>/var/log/btmp</filename> file records the
bad login attempts.</para>
<note><para>The <filename>/run/utmp</filename> file records the users that
are currently logged in. This file is created dynamically in the boot
scripts.</para></note>
</sect1>

View File

@ -0,0 +1,65 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-creatingdirs">
<?dbhtml filename="creatingdirs.html"?>
<title>Creating Directories</title>
<para>It is time to create some structure in the LFS file system. Create a
standard directory tree by issuing the following commands:</para>
<screen><userinput>mkdir -pv /{bin,boot,etc/{opt,sysconfig},home,lib/firmware,mnt,opt}
mkdir -pv /{media/{floppy,cdrom},sbin,srv,var}
install -dv -m 0750 /root
install -dv -m 1777 /tmp /var/tmp
mkdir -pv /usr/{,local/}{bin,include,lib,sbin,src}
mkdir -pv /usr/{,local/}share/{color,dict,doc,info,locale,man}
mkdir -v /usr/{,local/}share/{misc,terminfo,zoneinfo}
mkdir -v /usr/libexec
mkdir -pv /usr/{,local/}share/man/man{1..8}
case $(uname -m) in
x86_64) ln -sv lib /lib64
ln -sv lib /usr/lib64
ln -sv lib /usr/local/lib64 ;;
esac
mkdir -v /var/{log,mail,spool}
ln -sv /run /var/run
ln -sv /run/lock /var/lock
mkdir -pv /var/{opt,cache,lib/{color,misc,locate},local}</userinput></screen>
<para>Directories are, by default, created with permission mode 755, but
this is not desirable for all directories. In the commands above, two
changes are made&mdash;one to the home directory of user <systemitem
class="username">root</systemitem>, and another to the directories for
temporary files.</para>
<para>The first mode change ensures that not just anybody can enter
the <filename class="directory">/root</filename> directory&mdash;the
same as a normal user would do with his or her home directory. The
second mode change makes sure that any user can write to the
<filename class="directory">/tmp</filename> and <filename
class="directory">/var/tmp</filename> directories, but cannot remove
another user's files from them. The latter is prohibited by the so-called
<quote>sticky bit,</quote> the highest bit (1) in the 1777 bit mask.</para>
<sect2>
<title>FHS Compliance Note</title>
<para>The directory tree is based on the Filesystem Hierarchy Standard
(FHS) (available at <ulink
url="https://wiki.linuxfoundation.org/en/FHS"/>). The FHS also stipulates
the optional existence some directories such as <filename
class="directory">/usr/local/games</filename> and <filename
class="directory">/usr/share/games</filename>. We create only the
directories that are needed. However, feel free to create these
directories. </para>
</sect2>
</sect1>

View File

@ -0,0 +1,301 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-db" role="wrap">
<?dbhtml filename="db.html"?>
<sect1info condition="script">
<productname>db</productname>
<productnumber>&db-version;</productnumber>
<address>&db-url;</address>
</sect1info>
<title>Berkeley DB-&db-version;</title>
<indexterm zone="ch-system-db">
<primary sortas="a-Berkeley-DB">Berkeley DB</primary>
</indexterm>
<sect2 role="package">
<title/>
<para>The Berkeley DB package contains programs and utilities used by many
other applications for database related functions.</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
<segtitle>&diskspace;</segtitle>
<seglistitem>
<seg>&db-ch6-sbu;</seg>
<seg>&db-ch6-du;</seg>
</seglistitem>
</segmentedlist>
<tip>
<title>Other Installation Possibilities</title>
<para>There are instructions to build this package in the BLFS book if you
need to build the RPC server or additional language bindings. The
additional language bindings will require additional packages to be
installed. See <ulink url="&blfs-book;server/databases.html#db"/>
for suggested installation instructions.</para>
<para>Also, GDBM <emphasis>could</emphasis> be used in place of Berkeley
DB to satisfy Man-DB. However, since Berkeley DB is considered a core part
of the LFS build, it will not be listed as a dependency for any package in
the BLFS book. Likewise, many hours go into testing LFS with Berkeley DB
installed, not with GDBM. If you fully understand the risks versus
benefits of using GDBM and wish to use it anyway, see the BLFS
instructions located at <ulink
url="&blfs-book;general/gdbm.html"/></para>
</tip>
</sect2>
<sect2 role="installation">
<title>Installation of Berkeley DB</title>
<para>Apply an upstream patch so that replication clients can open a
sequence:</para>
<screen><userinput remap="pre">patch -Np1 -i ../&db-fixes-patch;</userinput></screen>
<para>Prepare Berkeley DB for compilation:</para>
<screen><userinput remap="configure">cd build_unix
../dist/configure --prefix=/usr --enable-compat185 --enable-cxx</userinput></screen>
<variablelist>
<title>The meaning of the configure options:</title>
<varlistentry>
<term><parameter>--enable-compat185</parameter></term>
<listitem>
<para>This option enables building Berkeley DB 1.85 compatibility
API.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>--enable-cxx</parameter></term>
<listitem>
<para>This option enables building C++ API libraries.</para>
</listitem>
</varlistentry>
</variablelist>
<para>Compile the package:</para>
<screen><userinput remap="make">make</userinput></screen>
<para>It is not possible to test the package meaningfully, because
that would involve building Tcl bindings. Tcl bindings cannot be
built properly now because Tcl is linked against Glibc in
<filename class="directory">/tools</filename>, not against Glibc in
<filename class="directory">/usr</filename>.</para>
<para>Install the package:</para>
<screen><userinput remap="install">make docdir=/usr/share/doc/db-&db-version; install</userinput></screen>
<variablelist>
<title>The meaning of the make parameter:</title>
<varlistentry>
<term><parameter>docdir=...</parameter></term>
<listitem>
<para>This variable specifies the correct place for the
documentation.</para>
</listitem>
</varlistentry>
</variablelist>
<para>Fix the ownership of the installed documentation:</para>
<screen><userinput remap="install">chown -Rv root:root /usr/share/doc/db-&db-version;</userinput></screen>
</sect2>
<sect2 id="contents-db" role="content">
<title>Contents of Berkeley DB</title>
<segmentedlist>
<segtitle>Installed programs</segtitle>
<segtitle>Installed libraries</segtitle>
<seglistitem>
<seg>db_archive, db_checkpoint, db_codegen, db_deadlock, db_dump,
db_hotbackup, db_load, db_printlog, db_recover, db_stat, db_upgrade, and
db_verify</seg>
<seg>libdb.{a,so}and libdb_cxx.{a,so}</seg>
</seglistitem>
</segmentedlist>
<variablelist>
<bridgehead renderas="sect3">Short Descriptions</bridgehead>
<?dbfo list-presentation="list"?>
<?dbhtml list-presentation="table"?>
<varlistentry id="db_archive">
<term><command>db_archive</command></term>
<listitem>
<para>Prints the pathnames of log files that are no longer in use</para>
<indexterm zone="ch-system-db db_archive">
<primary sortas="b-db_archive">db_archive</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="db_checkpoint">
<term><command>db_checkpoint</command></term>
<listitem>
<para>A daemon used to monitor and checkpoint database logs</para>
<indexterm zone="ch-system-db db_checkpoint">
<primary sortas="b-db_checkpoint">db_checkpoint</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="db_codegen">
<term><command>db_codegen</command></term>
<listitem>
<para>Generates application code to create and configure Berkeley DB
database environments and databases based on a simple description
language, and writes it to one or more output files</para>
<indexterm zone="ch-system-db db_codegen">
<primary sortas="b-db_codegen">db_codegen</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="db_deadlock">
<term><command>db_deadlock</command></term>
<listitem>
<para>A daemon used to abort lock requests when deadlocks are
detected</para>
<indexterm zone="ch-system-db db_deadlock">
<primary sortas="b-db_deadlock">db_deadlock</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="db_dump">
<term><command>db_dump</command></term>
<listitem>
<para>Converts database files to a plain-text file format readable
by <command>db_load</command></para>
<indexterm zone="ch-system-db db_dump">
<primary sortas="b-db_dump">db_dump</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="db_hotbackup">
<term><command>db_hotbackup</command></term>
<listitem>
<para>Creates <quote>hot backup</quote> or <quote>hot failover</quote>
snapshots of Berkeley DB databases</para>
<indexterm zone="ch-system-db db_hotbackup">
<primary sortas="b-db_hotbackup">db_hotbackup</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="db_load">
<term><command>db_load</command></term>
<listitem>
<para>Is used to create database files from plain-text files</para>
<indexterm zone="ch-system-db db_load">
<primary sortas="b-db_load">db_load</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="db_printlog">
<term><command>db_printlog</command></term>
<listitem>
<para>Converts database log files to human readable text</para>
<indexterm zone="ch-system-db db_printlog">
<primary sortas="b-db_printlog">db_printlog</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="db_recover">
<term><command>db_recover</command></term>
<listitem>
<para>Is used to restore a database to a consistent state after a
failure</para>
<indexterm zone="ch-system-db db_recover">
<primary sortas="b-db_recover">db_recover</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="db_stat">
<term><command>db_stat</command></term>
<listitem>
<para>Displays statistics for Berkeley databases</para>
<indexterm zone="ch-system-db db_stat">
<primary sortas="b-db_stat">db_stat</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="db_upgrade">
<term><command>db_upgrade</command></term>
<listitem>
<para>Is used to upgrade database files to a newer version of
Berkeley DB</para>
<indexterm zone="ch-system-db db_upgrade">
<primary sortas="b-db_upgrade">db_upgrade</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="db_verify">
<term><command>db_verify</command></term>
<listitem>
<para>Is used to run consistency checks on database files</para>
<indexterm zone="ch-system-db db_verify">
<primary sortas="b-db_verify">db_verify</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="libdb">
<term><filename class="libraryfile">libdb.{a,so}</filename></term>
<listitem>
<para>Contains functions to manipulate database files from C
programs</para>
<indexterm zone="ch-system-db libdb">
<primary sortas="c-libdb">libdb</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="libdb_cxx">
<term><filename class="libraryfile">libdb_cxx.{a,so}</filename></term>
<listitem>
<para>Contains functions to manipulate database files from C++
programs</para>
<indexterm zone="ch-system-db libdb_cxx">
<primary sortas="c-libdb_cxx">libdb_cxx</primary>
</indexterm>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>

View File

@ -0,0 +1,212 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-dbus" role="wrap">
<?dbhtml filename="dbus.html"?>
<sect1info condition="script">
<productname>dbus</productname>
<productnumber>&dbus-version;</productnumber>
<address>&dbus-url;</address>
</sect1info>
<title>D-Bus-&dbus-version;</title>
<indexterm zone="ch-system-dbus">
<primary sortas="a-dbus">D-Bus</primary>
</indexterm>
<sect2 role="package">
<title/>
<para>D-Bus is a message bus system, a simple way for applications to talk
to one another. D-Bus supplies both a system daemon (for events such as
"new hardware device added" or "printer queue changed") and a
per-user-login-session daemon (for general IPC needs among user
applications). Also, the message bus is built on top of a general one-to-one
message passing framework, which can be used by any two applications to
communicate directly (without going through the message bus daemon).</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
<segtitle>&diskspace;</segtitle>
<seglistitem>
<seg>&dbus-ch6-sbu;</seg>
<seg>&dbus-ch6-du;</seg>
</seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of D-Bus</title>
<para>Prepare D-Bus for compilation:</para>
<screen><userinput remap="configure"> ./configure --prefix=/usr \
--sysconfdir=/etc \
--localstatedir=/var \
--disable-static \
--disable-doxygen-docs \
--disable-xml-docs \
--docdir=/usr/share/doc/dbus-&dbus-version; \
--with-console-auth-dir=/run/console</userinput></screen>
<variablelist>
<title>The meaning of the configure options:</title>
<varlistentry>
<term><parameter>--with-console-auth-dir=/run/console</parameter></term>
<listitem>
<para>This specifies the location of the ConsoleKit auth
directory.</para>
</listitem>
</varlistentry>
</variablelist>
<para>Compile the package:</para>
<screen><userinput remap="make">make</userinput></screen>
<para>This package does come with a test suite, but it requires several
packages that are not included in LFS. Instructions for running the
test suite can be found in the BLFS book at
<ulink url="&blfs-book;general/dbus.html"/>.</para>
<para>Install the package:</para>
<screen><userinput remap="install">make install</userinput></screen>
<para>The shared library needs to be moved to
<filename class="directory">/lib</filename>, and as a result the
<filename class="extension">.so</filename> file in
<filename class="directory">/usr/lib</filename> will need to be recreated:</para>
<screen><userinput remap="install">mv -v /usr/lib/libdbus-1.so.* /lib
ln -sfv ../../lib/$(readlink /usr/lib/libdbus-1.so) /usr/lib/libdbus-1.so</userinput></screen>
<para>Create a symlink, so that D-Bus and systemd can use the same
<filename>machine-id</filename> file:</para>
<screen><userinput remap="install">ln -sfv /etc/machine-id /var/lib/dbus</userinput></screen>
</sect2>
<sect2 id="contents-dbus" role="content">
<title>Contents of D-Bus</title>
<segmentedlist>
<segtitle>Installed programs</segtitle>
<segtitle>Installed libraries</segtitle>
<segtitle>Installed directories</segtitle>
<seglistitem>
<seg>dbus-cleanup-sockets, dbus-daemon, dbus-launch, dbus-monitor,
dbus-run-session, dbus-send, and dbus-uuidgen</seg>
<seg>libdbus-1.{a,so}</seg>
<seg>/etc/dbus-1, /usr/include/dbus-1.0, /usr/lib/dbus-1.0,
/usr/share/dbus-1, /usr/share/doc/dbus-&dbus-version;,
and /var/lib/dbus</seg>
</seglistitem>
</segmentedlist>
<variablelist>
<bridgehead renderas="sect3">Short Descriptions</bridgehead>
<?dbfo list-presentation="list"?>
<?dbhtml list-presentation="table"?>
<varlistentry id="dbus-cleanup-sockets">
<term><command>dbus-cleanup-sockets</command></term>
<listitem>
<para>Used to clean up leftover sockets in a directory</para>
<indexterm zone="ch-system-dbus dbus-cleanup-sockets">
<primary sortas="b-dbus-cleanup-sockets">dbus-cleanup-sockets</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="dbus-daemon">
<term><command>dbus-daemon</command></term>
<listitem>
<para>The D-Bus message bus daemon</para>
<indexterm zone="ch-system-dbus dbus-daemon">
<primary sortas="b-dbus-daemon">dbus-daemon</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="dbus-launch">
<term><command>dbus-launch</command></term>
<listitem>
<para>Starts <command>dbus-daemon</command> from a shell
script</para>
<indexterm zone="ch-system-dbus dbus-launch">
<primary sortas="b-dbus-launch">dbus-launch</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="dbus-monitor">
<term><command>dbus-monitor</command></term>
<listitem>
<para>Monitors messages passing through a D-Bus message bus</para>
<indexterm zone="ch-system-dbus dbus-monitor">
<primary sortas="b-dbus-monitor">dbus-monitor</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="dbus-run-session">
<term><command>dbus-run-session</command></term>
<listitem>
<para>Starts a session bus instance of <command>dbus-daemon</command>
from a shell script and starts a specified program in that
session</para>
<indexterm zone="ch-system-dbus dbus-run-session">
<primary sortas="b-dbus-run-session">dbus-run-session</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="dbus-send">
<term><command>dbus-send</command></term>
<listitem>
<para>Sends a message to a D-Bus message bus</para>
<indexterm zone="ch-system-dbus dbus-send">
<primary sortas="b-dbus-send">dbus-send</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="dbus-uuidgen">
<term><command>dbus-uuidgen</command></term>
<listitem>
<para>Generates a universally unique ID</para>
<indexterm zone="ch-system-dbus dbus-uuidgen">
<primary sortas="b-dbus-uuidgen">dbus-uuidgen</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="libdbus-1">
<term><filename class="libraryfile">libdbus-1</filename></term>
<listitem>
<para>Contains API functions used to communicate with the D-Bus
message bus</para>
<indexterm zone="ch-system-dbus libdbus-1">
<primary sortas="c-libdbus-1">libdbus-1</primary>
</indexterm>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>

View File

@ -0,0 +1,131 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-diffutils" role="wrap">
<?dbhtml filename="diffutils.html"?>
<sect1info condition="script">
<productname>diffutils</productname>
<productnumber>&diffutils-version;</productnumber>
<address>&diffutils-url;</address>
</sect1info>
<title>Diffutils-&diffutils-version;</title>
<indexterm zone="ch-system-diffutils">
<primary sortas="a-Diffutils">Diffutils</primary>
</indexterm>
<sect2 role="package">
<title/>
<para>The Diffutils package contains programs that show the differences
between files or directories.</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
<segtitle>&diskspace;</segtitle>
<seglistitem>
<seg>&diffutils-ch6-sbu;</seg>
<seg>&diffutils-ch6-du;</seg>
</seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of Diffutils</title>
<para>First fix a file so locale files are installed:</para>
<screen><userinput remap="pre">sed -i 's:= @mkdir_p@:= /bin/mkdir -p:' po/Makefile.in.in</userinput></screen>
<para>Prepare Diffutils for compilation:</para>
<screen><userinput remap="configure">./configure --prefix=/usr</userinput></screen>
<para>Compile the package:</para>
<screen><userinput remap="make">make</userinput></screen>
<para>To test the results, issue:</para>
<screen><userinput remap="test">make check</userinput></screen>
<para>The test-update-copyright.sh failure can be safely ignored.</para>
<para>Install the package:</para>
<screen><userinput remap="install">make install</userinput></screen>
</sect2>
<sect2 id="contents-diffutils" role="content">
<title>Contents of Diffutils</title>
<segmentedlist>
<segtitle>Installed programs</segtitle>
<seglistitem>
<seg>cmp, diff, diff3, and sdiff</seg>
</seglistitem>
</segmentedlist>
<variablelist>
<bridgehead renderas="sect3">Short Descriptions</bridgehead>
<?dbfo list-presentation="list"?>
<?dbhtml list-presentation="table"?>
<varlistentry id="cmp">
<term><command>cmp</command></term>
<listitem>
<para>Compares two files and reports whether or in which bytes they
differ</para>
<indexterm zone="ch-system-diffutils cmp">
<primary sortas="b-cmp">cmp</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="diff">
<term><command>diff</command></term>
<listitem>
<para>Compares two files or directories and reports which lines in
the files differ</para>
<indexterm zone="ch-system-diffutils diff">
<primary sortas="b-diff">diff</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="diff3">
<term><command>diff3</command></term>
<listitem>
<para>Compares three files line by line</para>
<indexterm zone="ch-system-diffutils diff3">
<primary sortas="b-diff3">diff3</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="sdiff">
<term><command>sdiff</command></term>
<listitem>
<para>Merges two files and interactively outputs the results</para>
<indexterm zone="ch-system-diffutils sdiff">
<primary sortas="b-sdiff">sdiff</primary>
</indexterm>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>

View File

@ -0,0 +1,550 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-e2fsprogs" role="wrap">
<?dbhtml filename="e2fsprogs.html"?>
<sect1info condition="script">
<productname>e2fsprogs</productname>
<productnumber>&e2fsprogs-version;</productnumber>
<address>&e2fsprogs-url;</address>
</sect1info>
<title>E2fsprogs-&e2fsprogs-version;</title>
<indexterm zone="ch-system-e2fsprogs">
<primary sortas="a-E2fsprogs">E2fsprogs</primary>
</indexterm>
<sect2 role="package">
<title/>
<para>The E2fsprogs package contains the utilities for handling the
<systemitem class="filesystem">ext2</systemitem> file system. It also
supports the <systemitem class="filesystem">ext3</systemitem> and
<systemitem class="filesystem">ext4</systemitem> journaling
file systems.</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
<segtitle>&diskspace;</segtitle>
<seglistitem>
<seg>&e2fsprogs-ch6-sbu;</seg>
<seg>&e2fsprogs-ch6-du;</seg>
</seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of E2fsprogs</title>
<para>The E2fsprogs documentation recommends that the package be built in
a subdirectory of the source tree: </para>
<screen><userinput remap="pre">mkdir -v build
cd build</userinput></screen>
<para>Prepare E2fsprogs for compilation:</para>
<screen><userinput remap="configure">LIBS=-L/tools/lib \
CFLAGS=-I/tools/include \
PKG_CONFIG_PATH=/tools/lib/pkgconfig \
../configure --prefix=/usr \
--bindir=/bin \
--with-root-prefix="" \
--enable-elf-shlibs \
--disable-libblkid \
--disable-libuuid \
--disable-uuidd \
--disable-fsck</userinput></screen>
<variablelist>
<title>The meaning of the environment variable and configure options:</title>
<varlistentry>
<term><parameter>PKG_CONFIG_PATH, LIBS, CFLAGS</parameter></term>
<listitem>
<para>These variables enable e2fsprogs to be built using the
<xref linkend="ch-tools-util-linux"/> package built earlier.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>--with-root-prefix=""</parameter> and
<parameter>--bindir=/bin</parameter></term>
<listitem>
<para>Certain programs (such as the <command>e2fsck</command>
program) are considered essential programs. When, for example,
<filename class="directory">/usr</filename> is not mounted, these
programs still need to be available. They belong in directories
like <filename class="directory">/lib</filename> and <filename
class="directory">/sbin</filename>. If this option is not passed
to E2fsprogs' configure, the programs are installed into the
<filename class="directory">/usr</filename> directory.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>--enable-elf-shlibs</parameter></term>
<listitem>
<para>This creates the shared libraries which some programs
in this package use.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>--disable-*</parameter></term>
<listitem>
<para>This prevents E2fsprogs from building and installing the
<systemitem class="library">libuuid</systemitem> and
<systemitem class="library">libblkid</systemitem> libraries, the
<systemitem class="daemon">uuidd</systemitem> daemon, and the
<command>fsck</command> wrapper, as Util-Linux installs more
recent versions.</para>
</listitem>
</varlistentry>
</variablelist>
<para>Compile the package:</para>
<screen><userinput remap="make">make</userinput></screen>
<para>To set up and run the test suite we need to first link some
libraries from /tools/lib to a location where the test programs look.
To run the tests, issue:</para>
<screen><userinput remap="test">ln -sfv /tools/lib/lib{blk,uu}id.so.1 lib
make LD_LIBRARY_PATH=/tools/lib check</userinput></screen>
<para>One of the E2fsprogs tests will attempt to allocate 256 MB of memory.
If you do not have significantly more RAM than this, be sure to enable
sufficient swap space for the test. See <xref
linkend="space-creatingfilesystem"/> and <xref linkend="space-mounting"/>
for details on creating and enabling swap space.</para>
<para>Install the binaries, documentation, and shared libraries:</para>
<screen><userinput remap="install">make install</userinput></screen>
<para>Install the static libraries and headers:</para>
<screen><userinput remap="install">make install-libs</userinput></screen>
<para>Make the installed static libraries writable so debugging symbols can
be removed later:</para>
<screen><userinput remap="install">chmod -v u+w /usr/lib/{libcom_err,libe2p,libext2fs,libss}.a</userinput></screen>
<para>This package installs a gzipped
<filename class="extension">.info</filename> file but doesn't update the
system-wide <filename>dir</filename> file. Unzip this file and then update
the system <filename>dir</filename> file using the following
commands.</para>
<screen><userinput remap="install">gunzip -v /usr/share/info/libext2fs.info.gz
install-info --dir-file=/usr/share/info/dir /usr/share/info/libext2fs.info</userinput></screen>
<para>If desired, create and install some additional documentation by
issuing the following commands:</para>
<screen><userinput remap="install">makeinfo -o doc/com_err.info ../lib/et/com_err.texinfo
install -v -m644 doc/com_err.info /usr/share/info
install-info --dir-file=/usr/share/info/dir /usr/share/info/com_err.info</userinput></screen>
</sect2>
<sect2 id="contents-e2fsprogs" role="content">
<title>Contents of E2fsprogs</title>
<segmentedlist>
<segtitle>Installed programs</segtitle>
<segtitle>Installed libraries</segtitle>
<segtitle>Installed directories</segtitle>
<seglistitem>
<seg>badblocks, chattr, compile_et, debugfs, dumpe2fs,e2freefrag,
e2fsck, e2image, e2label, e2undo, e4defrag, filefrag, fsck.ext2,
fsck.ext3, fsck.ext4, fsck.ext4dev, logsave, lsattr, mk_cmds, mke2fs,
mkfs.ext2, mkfs.ext3, mkfs.ext4, mkfs.ext4dev, mklost+found,
resize2fs, and tune2fs</seg>
<seg>libcom_err.so, libe2p.so, libext2fs.so, and libss.so</seg>
<seg>/usr/include/e2p, /usr/include/et, /usr/include/ext2fs,
/usr/include/ss, /usr/share/et, and /usr/share/ss</seg>
</seglistitem>
</segmentedlist>
<variablelist>
<bridgehead renderas="sect3">Short Descriptions</bridgehead>
<?dbfo list-presentation="list"?>
<?dbhtml list-presentation="table"?>
<varlistentry id="badblocks">
<term><command>badblocks</command></term>
<listitem>
<para>Searches a device (usually a disk partition) for bad
blocks</para>
<indexterm zone="ch-system-e2fsprogs badblocks">
<primary sortas="b-badblocks">badblocks</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="chattr">
<term><command>chattr</command></term>
<listitem>
<para>Changes the attributes of files on an <systemitem
class="filesystem">ext2</systemitem> file system; it also
changes <systemitem class="filesystem">ext3</systemitem>
file systems, the journaling version of <systemitem
class="filesystem">ext2</systemitem> file systems</para>
<indexterm zone="ch-system-e2fsprogs chattr">
<primary sortas="b-chattr">chattr</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="compile_et">
<term><command>compile_et</command></term>
<listitem>
<para>An error table compiler; it converts a table of error-code
names and messages into a C source file suitable for use with the
<filename class="libraryfile">com_err</filename> library</para>
<indexterm zone="ch-system-e2fsprogs compile_et">
<primary sortas="b-compile_et">compile_et</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="debugfs">
<term><command>debugfs</command></term>
<listitem>
<para>A file system debugger; it can be used to examine and change
the state of an <systemitem class="filesystem">ext2</systemitem>
file system</para>
<indexterm zone="ch-system-e2fsprogs debugfs">
<primary sortas="b-debugfs">debugfs</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="dumpe2fs">
<term><command>dumpe2fs</command></term>
<listitem>
<para>Prints the super block and blocks group information for the
file system present on a given device</para>
<indexterm zone="ch-system-e2fsprogs dumpe2fs">
<primary sortas="b-dumpe2fs">dumpe2fs</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="e2freefrag">
<term><command>e2freefrag</command></term>
<listitem>
<para>Reports free space fragmentation information</para>
<indexterm zone="ch-system-e2fsprogs e2freefrag">
<primary sortas="b-e2freefrag">e2freefrag</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="e2fsck">
<term><command>e2fsck</command></term>
<listitem>
<para>Is used to check, and optionally repair <systemitem
class="filesystem">ext2</systemitem> file systems and <systemitem
class="filesystem">ext3</systemitem> file systems</para>
<indexterm zone="ch-system-e2fsprogs e2fsck">
<primary sortas="b-e2fsck">e2fsck</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="e2image">
<term><command>e2image</command></term>
<listitem>
<para>Is used to save critical <systemitem
class="filesystem">ext2</systemitem> file system data to a file</para>
<indexterm zone="ch-system-e2fsprogs e2image">
<primary sortas="b-e2image">e2image</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="e2label">
<term><command>e2label</command></term>
<listitem>
<para>Displays or changes the file system label on the <systemitem
class="filesystem">ext2</systemitem> file system present on a given
device</para>
<indexterm zone="ch-system-e2fsprogs e2label">
<primary sortas="b-e2label">e2label</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="e2undo">
<term><command>e2undo</command></term>
<listitem>
<para>Replays the undo log undo_log for an ext2/ext3/ext4 filesystem
found on a device [This can be used to undo a failed operation by an
e2fsprogs program.]</para>
<indexterm zone="ch-system-e2fsprogs e2undo">
<primary sortas="b-e2undo">e2undo</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="e4defrag">
<term><command>e4defrag</command></term>
<listitem>
<para>Online defragmenter for ext4 filesystems</para>
<indexterm zone="ch-system-e2fsprogs e4defrag">
<primary sortas="b-e4defrag">e4defrag</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="filefrag">
<term><command>filefrag</command></term>
<listitem>
<para>Reports on how badly fragmented a particular file might be</para>
<indexterm zone="ch-system-e2fsprogs filefrag">
<primary sortas="b-filefrag">filefrag</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="fsck.ext2">
<term><command>fsck.ext2</command></term>
<listitem>
<para>By default checks <systemitem class="filesystem">ext2</systemitem>
file systems and is a hard link to <command>e2fsck</command></para>
<indexterm zone="ch-system-e2fsprogs fsck.ext2">
<primary sortas="b-fsck.ext2">fsck.ext2</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="fsck.ext3">
<term><command>fsck.ext3</command></term>
<listitem>
<para>By default checks <systemitem class="filesystem">ext3</systemitem>
file systems and is a hard link to <command>e2fsck</command></para>
<indexterm zone="ch-system-e2fsprogs fsck.ext3">
<primary sortas="b-fsck.ext3">fsck.ext3</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="fsck.ext4">
<term><command>fsck.ext4</command></term>
<listitem>
<para>By default checks <systemitem class="filesystem">ext4</systemitem>
file systems and is a hard link to <command>e2fsck</command></para>
<indexterm zone="ch-system-e2fsprogs fsck.ext4">
<primary sortas="b-fsck.ext4">fsck.ext4</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="fsck.ext4dev">
<term><command>fsck.ext4dev</command></term>
<listitem>
<para>By default checks <systemitem class="filesystem">ext4</systemitem>
development file systems and is a hard link to
<command>e2fsck</command></para>
<indexterm zone="ch-system-e2fsprogs fsck.ext4dev">
<primary sortas="b-fsck.ext4dev">fsck.ext4dev</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="logsave">
<term><command>logsave</command></term>
<listitem>
<para>Saves the output of a command in a log file</para>
<indexterm zone="ch-system-e2fsprogs logsave">
<primary sortas="b-logsave">logsave</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="lsattr">
<term><command>lsattr</command></term>
<listitem>
<para>Lists the attributes of files on a second extended file
system</para>
<indexterm zone="ch-system-e2fsprogs lsattr">
<primary sortas="b-lsattr">lsattr</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="mk_cmds">
<term><command>mk_cmds</command></term>
<listitem>
<para>Converts a table of command names and help messages into a C
source file suitable for use with the <filename
class="libraryfile">libss</filename> subsystem library</para>
<indexterm zone="ch-system-e2fsprogs mk_cmds">
<primary sortas="b-mk_cmds">mk_cmds</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="mke2fs">
<term><command>mke2fs</command></term>
<listitem>
<para>Creates an <systemitem class="filesystem">ext2</systemitem>
or <systemitem class="filesystem">ext3</systemitem> file system on
the given device</para>
<indexterm zone="ch-system-e2fsprogs mke2fs">
<primary sortas="b-mke2fs">mke2fs</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="mkfs.ext2">
<term><command>mkfs.ext2</command></term>
<listitem>
<para>By default creates <systemitem class="filesystem">ext2</systemitem>
file systems and is a hard link to <command>mke2fs</command></para>
<indexterm zone="ch-system-e2fsprogs mkfs.ext2">
<primary sortas="b-mkfs.ext2">mkfs.ext2</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="mkfs.ext3">
<term><command>mkfs.ext3</command></term>
<listitem>
<para>By default creates <systemitem class="filesystem">ext3</systemitem>
file systems and is a hard link to <command>mke2fs</command></para>
<indexterm zone="ch-system-e2fsprogs mkfs.ext3">
<primary sortas="b-mkfs.ext3">mkfs.ext3</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="mkfs.ext4">
<term><command>mkfs.ext4</command></term>
<listitem>
<para>By default creates <systemitem class="filesystem">ext4</systemitem>
file systems and is a hard link to <command>mke2fs</command></para>
<indexterm zone="ch-system-e2fsprogs mkfs.ext4">
<primary sortas="b-mkfs.ext4">mkfs.ext4</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="mkfs.ext4dev">
<term><command>mkfs.ext4dev</command></term>
<listitem>
<para>By default creates <systemitem class="filesystem">ext4</systemitem>
development file systems and is a hard link to <command>mke2fs</command></para>
<indexterm zone="ch-system-e2fsprogs mkfs.ext4dev">
<primary sortas="b-mkfs.ext4dev">mkfs.ext4dev</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="mklost-found">
<term><command>mklost+found</command></term>
<listitem>
<para>Used to create a <filename class="directory">lost+found</filename>
directory on an <systemitem class="filesystem">ext2</systemitem> file
system; it pre-allocates disk blocks to this directory to lighten the
task of <command>e2fsck</command></para>
<indexterm zone="ch-system-e2fsprogs mklost-found">
<primary sortas="b-mklost+found">mklost+found</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="resize2fs">
<term><command>resize2fs</command></term>
<listitem>
<para>Can be used to enlarge or shrink an <systemitem
class="filesystem">ext2</systemitem> file system</para>
<indexterm zone="ch-system-e2fsprogs resize2fs">
<primary sortas="b-resize2fs">resize2fs</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="tune2fs">
<term><command>tune2fs</command></term>
<listitem>
<para>Adjusts tunable file system parameters on an <systemitem
class="filesystem">ext2</systemitem> file system</para>
<indexterm zone="ch-system-e2fsprogs tune2fs">
<primary sortas="b-tune2fs">tune2fs</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="libcom_err">
<term><filename class="libraryfile">libcom_err</filename></term>
<listitem>
<para>The common error display routine</para>
<indexterm zone="ch-system-e2fsprogs libcom_err">
<primary sortas="c-libcom_err">libcom_err</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="libe2p">
<term><filename class="libraryfile">libe2p</filename></term>
<listitem>
<para>Used by <command>dumpe2fs</command>, <command>chattr</command>,
and <command>lsattr</command></para>
<indexterm zone="ch-system-e2fsprogs libe2p">
<primary sortas="c-libe2p">libe2p</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="libext2fs">
<term><filename class="libraryfile">libext2fs</filename></term>
<listitem>
<para>Contains routines to enable user-level programs to manipulate an
<systemitem class="filesystem">ext2</systemitem> file system</para>
<indexterm zone="ch-system-e2fsprogs libext2fs">
<primary sortas="c-libext2fs">libext2fs</primary>
</indexterm>
</listitem>
</varlistentry>
<!-- <varlistentry id="libquota">
<term><filename class="libraryfile">libquota</filename></term>
<listitem>
<para>Provides an interface for creating and updating quota files
and ext4 superblock fields</para>
<indexterm zone="ch-system-e2fsprogs libquota">
<primary sortas="c-libquota">libquota</primary>
</indexterm>
</listitem>
</varlistentry>
-->
<varlistentry id="libss">
<term><filename class="libraryfile">libss</filename></term>
<listitem>
<para>Used by <command>debugfs</command></para>
<indexterm zone="ch-system-e2fsprogs libss">
<primary sortas="c-libss">libss</primary>
</indexterm>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>

View File

@ -0,0 +1,112 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-expat" role="wrap">
<?dbhtml filename="expat.html"?>
<sect1info condition="script">
<productname>expat</productname>
<productnumber>&expat-version;</productnumber>
<address>&expat-url;</address>
</sect1info>
<title>Expat-&expat-version;</title>
<indexterm zone="ch-system-expat">
<primary sortas="a-Expat">Expat</primary>
</indexterm>
<sect2 role="package">
<title/>
<para>The Expat package contains a stream oriented C library for
parsing XML.</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
<segtitle>&diskspace;</segtitle>
<seglistitem>
<seg>&expat-ch6-sbu;</seg>
<seg>&expat-ch6-du;</seg>
</seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of Expat</title>
<para>Prepare Expat for compilation:</para>
<screen><userinput remap="configure">./configure --prefix=/usr --disable-static</userinput></screen>
<para>Compile the package:</para>
<screen><userinput remap="make">make</userinput></screen>
<para>To test the results, issue:</para>
<screen><userinput remap="test">make check</userinput></screen>
<para>Install the package:</para>
<screen><userinput remap="install">make install</userinput></screen>
<para>If desired, install the documentation:</para>
<screen><userinput remap="install">install -v -dm755 /usr/share/doc/expat-&expat-version;
install -v -m644 doc/*.{html,png,css} /usr/share/doc/expat-&expat-version;</userinput></screen>
</sect2>
<sect2 id="contents-expat" role="content">
<title>Contents of Expat</title>
<segmentedlist>
<segtitle>Installed program</segtitle>
<segtitle>Installed libraries</segtitle>
<segtitle>Installed directory</segtitle>
<seglistitem>
<seg>xmlwf</seg>
<seg>libexpat.so</seg>
<seg>/usr/share/doc/expat-&expat-version;</seg>
</seglistitem>
</segmentedlist>
<variablelist>
<bridgehead renderas="sect3">Short Descriptions</bridgehead>
<?dbfo list-presentation="list"?>
<?dbhtml list-presentation="table"?>
<varlistentry id="xmlwf">
<term><command>xmlwf </command></term>
<listitem>
<para>is a non-validating utility to check whether or not
XML documents are well formed</para>
<indexterm zone="ch-system-expat xmlwf">
<primary sortas="b-xmlwf">xmlwf</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="libexpat">
<term><filename class="libraryfile">libexpat</filename></term>
<listitem>
<para> contains API functions for parsing XML</para>
<indexterm zone="ch-system-expat libexpat">
<primary sortas="c-libexpat">libexpat</primary>
</indexterm>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>

View File

@ -0,0 +1,108 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-file" role="wrap">
<?dbhtml filename="file.html"?>
<sect1info condition="script">
<productname>file</productname>
<productnumber>&file-version;</productnumber>
<address>&file-url;</address>
</sect1info>
<title>File-&file-version;</title>
<indexterm zone="ch-system-file">
<primary sortas="a-File">File</primary>
</indexterm>
<sect2 role="package">
<title/>
<para>The File package contains a utility for determining the type of a given
file or files.</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
<segtitle>&diskspace;</segtitle>
<seglistitem>
<seg>&file-ch6-sbu;</seg>
<seg>&file-ch6-du;</seg>
</seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of File</title>
<para>Prepare File for compilation:</para>
<screen><userinput remap="configure">./configure --prefix=/usr</userinput></screen>
<para>Compile the package:</para>
<screen><userinput remap="make">make</userinput></screen>
<para>To test the results, issue:</para>
<screen><userinput remap="test">make check</userinput></screen>
<para>Install the package:</para>
<screen><userinput remap="install">make install</userinput></screen>
</sect2>
<sect2 id="contents-file" role="content">
<title>Contents of File</title>
<segmentedlist>
<segtitle>Installed programs</segtitle>
<segtitle>Installed library</segtitle>
<seglistitem>
<seg>file</seg>
<seg>libmagic.so</seg>
</seglistitem>
</segmentedlist>
<variablelist>
<bridgehead renderas="sect3">Short Descriptions</bridgehead>
<?dbfo list-presentation="list"?>
<?dbhtml list-presentation="table"?>
<varlistentry id="file">
<term><command>file</command></term>
<listitem>
<para>Tries to classify each given file; it does this by performing
several tests&mdash;file system tests, magic number tests, and language
tests</para>
<indexterm zone="ch-system-file file">
<primary sortas="b-file">file</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="libmagic">
<term><filename class="libraryfile">libmagic</filename></term>
<listitem>
<para>Contains routines for magic number recognition, used by the
<command>file</command> program</para>
<indexterm zone="ch-system-file libmagic">
<primary sortas="c-libmagic">libmagic</primary>
</indexterm>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>

View File

@ -0,0 +1,172 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-findutils" role="wrap">
<?dbhtml filename="findutils.html"?>
<sect1info condition="script">
<productname>findutils</productname>
<productnumber>&findutils-version;</productnumber>
<address>&findutils-url;</address>
</sect1info>
<title>Findutils-&findutils-version;</title>
<indexterm zone="ch-system-findutils">
<primary sortas="a-Findutils">Findutils</primary>
</indexterm>
<sect2 role="package">
<title/>
<para>The Findutils package contains programs to find files. These programs
are provided to recursively search through a directory tree and to
create, maintain, and search a database (often faster than the recursive
find, but unreliable if the database has not been recently updated).</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
<segtitle>&diskspace;</segtitle>
<seglistitem>
<seg>&findutils-ch6-sbu;</seg>
<seg>&findutils-ch6-du;</seg>
</seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of Findutils</title>
<para>Prepare Findutils for compilation:</para>
<screen><userinput remap="configure">./configure --prefix=/usr --localstatedir=/var/lib/locate</userinput></screen>
<variablelist>
<title>The meaning of the configure options:</title>
<varlistentry>
<term><parameter>--localstatedir</parameter></term>
<listitem>
<para>This option changes the location of the <command>locate</command>
database to be in <filename class="directory">/var/lib/locate</filename>,
which is FHS-compliant.</para>
</listitem>
</varlistentry>
</variablelist>
<para>Compile the package:</para>
<screen><userinput remap="make">make</userinput></screen>
<para>To test the results, issue:</para>
<screen><userinput remap="test">make check</userinput></screen>
<para>Install the package:</para>
<screen><userinput remap="install">make install</userinput></screen>
<para>Some packages in BLFS and beyond expect the
<command>find</command> program in <filename
class="directory">/bin</filename>, so make sure
it's placed there:</para>
<screen><userinput remap="install">mv -v /usr/bin/find /bin
sed -i 's|find:=${BINDIR}|find:=/bin|' /usr/bin/updatedb</userinput></screen>
</sect2>
<sect2 id="contents-findutils" role="content">
<title>Contents of Findutils</title>
<segmentedlist>
<segtitle>Installed programs</segtitle>
<seglistitem>
<seg>code, find, locate, oldfind, updatedb, and xargs</seg>
</seglistitem>
</segmentedlist>
<variablelist>
<bridgehead renderas="sect3">Short Descriptions</bridgehead>
<?dbfo list-presentation="list"?>
<?dbhtml list-presentation="table"?>
<varlistentry id="code">
<term><command>code</command></term>
<listitem>
<para>Was formerly used to produce <command>locate</command>
databases; it is the ancestor of <command>frcode</command></para>
<indexterm zone="ch-system-findutils code">
<primary sortas="b-code">code</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="find">
<term><command>find</command></term>
<listitem>
<para>Searches given directory trees for files matching the specified
criteria</para>
<indexterm zone="ch-system-findutils find">
<primary sortas="b-find">find</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="locate">
<term><command>locate</command></term>
<listitem>
<para>Searches through a database of file names and reports the names
that contain a given string or match a given pattern</para>
<indexterm zone="ch-system-findutils locate">
<primary sortas="b-locate">locate</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="oldfind">
<term><command>oldfind</command></term>
<listitem>
<para>Older version of find, using a different algorithm</para>
<indexterm zone="ch-system-findutils oldfind">
<primary sortas="b-oldfind">oldfind</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="updatedb">
<term><command>updatedb</command></term>
<listitem>
<para>Updates the <command>locate</command> database; it scans the
entire file system (including other file systems that are currently
mounted, unless told not to) and puts every file name it finds into
the database</para>
<indexterm zone="ch-system-findutils updatedb">
<primary sortas="b-updatedb">updatedb</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="xargs">
<term><command>xargs</command></term>
<listitem>
<para>Can be used to apply a given command to a list of files</para>
<indexterm zone="ch-system-findutils xargs">
<primary sortas="b-xargs">xargs</primary>
</indexterm>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>

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