Current BE-LFS (but w/ GCC 3.3.3) merged -> 6.0 branch

git-svn-id: http://svn.linuxfromscratch.org/LFS/trunk/BOOK@3445 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689
This commit is contained in:
Zack Winkles 2004-05-03 21:28:58 +00:00
parent 411ceb86b8
commit 9dfc02ff38
69 changed files with 826 additions and 1005 deletions

View File

@ -1,4 +1,4 @@
BASEDIR=~/lfs-book BASEDIR=~/belfs-book
lfs: lfs:
xsltproc --xinclude --nonet -stringparam base.dir $(BASEDIR)/ \ xsltproc --xinclude --nonet -stringparam base.dir $(BASEDIR)/ \

View File

@ -21,20 +21,23 @@ first a summary, then a detailed log.</para>
<itemizedlist> <itemizedlist>
<listitem><para>autoconf-2.59</para></listitem> <listitem><para>autoconf-2.59</para></listitem>
<listitem><para>automake-1.8.4</para></listitem> <listitem><para>automake-1.8.4</para></listitem>
<listitem><para>binutils-2.15.90.0.3</para></listitem>
<listitem><para>bison-1.875a</para></listitem>
<listitem><para>coreutils-5.2.1</para></listitem> <listitem><para>coreutils-5.2.1</para></listitem>
<listitem><para>e2fsprogs-1.35</para></listitem> <listitem><para>e2fsprogs-1.35</para></listitem>
<listitem><para>expect-5.41.0</para></listitem> <listitem><para>expect-5.41.0</para></listitem>
<listitem><para>file-4.09</para></listitem> <listitem><para>file-4.09</para></listitem>
<listitem><para>flex-2.5.31</para></listitem>
<listitem><para>gcc-3.3.3</para></listitem> <listitem><para>gcc-3.3.3</para></listitem>
<listitem><para>gettext-0.14.1</para></listitem> <listitem><para>gettext-0.14.1</para></listitem>
<listitem><para>glibc-2.3.4-20040408</para></listitem>
<listitem><para>grub-0.94</para></listitem> <listitem><para>grub-0.94</para></listitem>
<listitem><para>kbd-1.12</para></listitem> <listitem><para>kbd-1.12</para></listitem>
<listitem><para>less-382</para></listitem> <listitem><para>less-382</para></listitem>
<listitem><para>lfs-bootscripts-2.0.4</para></listitem> <listitem><para>lfs-bootscripts-2.0.4</para></listitem>
<listitem><para>libtool-2.5.6</para></listitem> <listitem><para>libtool-2.5.6</para></listitem>
<listitem><para>linux-2.4.26</para></listitem> <listitem><para>linux-2.6.5</para></listitem>
<listitem><para>man-pages-1.66</para></listitem> <listitem><para>man-pages-1.66</para></listitem>
<listitem><para>modutils-2.4.27</para></listitem>
<listitem><para>ncurses-5.4</para></listitem> <listitem><para>ncurses-5.4</para></listitem>
<listitem><para>perl-5.8.4</para></listitem> <listitem><para>perl-5.8.4</para></listitem>
<listitem><para>procps-3.2.1</para></listitem> <listitem><para>procps-3.2.1</para></listitem>
@ -50,29 +53,45 @@ first a summary, then a detailed log.</para>
<listitem><para>Added:</para> <listitem><para>Added:</para>
<itemizedlist> <itemizedlist>
<listitem><para>flex-2.5.31-debian-fixes-2.patch</para></listitem>
<listitem><para>iana-etc-1.00</para></listitem> <listitem><para>iana-etc-1.00</para></listitem>
<listitem><para>inetutils-1.4.2-kernel-headers-1.patch</para></listitem>
<listitem><para>inetutils-1.4.2-no_server_man_pages-1.patch</para></listitem> <listitem><para>inetutils-1.4.2-no_server_man_pages-1.patch</para></listitem>
<listitem><para>make_devices-1.2</para></listitem> <listitem><para>linux-libc-headers-2.6.5.1</para></listitem>
<listitem><para>mktemp-1.5 + mktemp-1.5-add-tempfile.patch</para></listitem> <listitem><para>mktemp-1.5</para></listitem>
<listitem><para>mktemp-1.5-add-tempfile-1.patch</para></listitem>
<listitem><para>module-init-tools-3.0</para></listitem>
<listitem><para>net-tools-1.60-kernel-headers-1.patch</para></listitem>
<listitem><para>sysklogd-1.4.1-kernel-headers-1.patch</para></listitem>
<listitem><para>udev-025</para></listitem>
<listitem><para>udev-025-config-1.patch</para></listitem>
<listitem><para>util-linux-2.12a-kernel-headers-1.patch</para></listitem>
</itemizedlist> </itemizedlist>
</listitem> </listitem>
<listitem><para>Removed:</para> <listitem><para>Removed:</para>
<itemizedlist> <itemizedlist>
<listitem><para>bison-1.875-attribute.patch</para></listitem>
<listitem><para>ed-0.2</para></listitem>
<listitem><para>gcc-2.95.3</para></listitem>
<listitem><para>gcc-3.3.1-suppress-libiberty.patch</para></listitem> <listitem><para>gcc-3.3.1-suppress-libiberty.patch</para></listitem>
<listitem><para>kbd-1.12-more-programs-1.patch</para></listitem>
<listitem><para>lfs-utils-0.5</para></listitem> <listitem><para>lfs-utils-0.5</para></listitem>
<listitem><para>MAKEDEV-1.7</para></listitem> <listitem><para>MAKEDEV-1.7</para></listitem>
<listitem><para>man-1.5m2-manpath.patch</para></listitem> <listitem><para>man-1.5m2-manpath.patch</para></listitem>
<listitem><para>man-1.5m2-pager.patch</para></listitem> <listitem><para>man-1.5m2-pager.patch</para></listitem>
<listitem><para>modutils-2.4.25</para></listitem>
<listitem><para>ncurses-5.3-etip-2.patch</para></listitem> <listitem><para>ncurses-5.3-etip-2.patch</para></listitem>
<listitem><para>ncurses-5.3-vsscanf.patch</para></listitem> <listitem><para>ncurses-5.3-vsscanf.patch</para></listitem>
<listitem><para>perl-5.8.0-libc-3.patch</para></listitem> <listitem><para>procinfo-18</para></listitem>
<listitem><para>procps-3.1.11-locale-fix.patch</para></listitem> <listitem><para>procps-3.1.11-locale-fix.patch</para></listitem>
<listitem><para>shadow-4.0.3-newgrp-fix.patch</para></listitem> <listitem><para>shadow-4.0.3-newgrp-fix.patch</para></listitem>
<listitem><para>zlib-1.1.4-vsnprintf.patch</para></listitem> <listitem><para>zlib-1.1.4-vsnprintf.patch</para></listitem>
</itemizedlist> </itemizedlist>
</listitem> </listitem>
<listitem><para>May 3rd, 2004 [winkie]: Merged BE-LFS content.</para></listitem>
<listitem><para>May 2nd, 2004 [matt]: Quoted chroot commands in chapter 6 (bug <listitem><para>May 2nd, 2004 [matt]: Quoted chroot commands in chapter 6 (bug
#818).</para></listitem> #818).</para></listitem>
<listitem><para>May 2nd, 2004 [matt]: Removed description of the now <listitem><para>May 2nd, 2004 [matt]: Removed description of the now

View File

@ -9,13 +9,8 @@
<?dbhtml filename="chapter01.html"?> <?dbhtml filename="chapter01.html"?>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="how.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="how.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="changelog.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="changelog.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="administrativa.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="administrativa.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="askforhelp.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="askforhelp.xml"/>
</chapter> </chapter>

View File

@ -8,17 +8,9 @@
<title>Preparing a new partition</title> <title>Preparing a new partition</title>
<?dbhtml filename="chapter02.html"?> <?dbhtml filename="chapter02.html"?>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="introduction.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="introduction.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="creatingpartition.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="creatingpartition.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="creatingfilesystem.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="creatingfilesystem.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="mounting.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="mounting.xml"/>
</chapter> </chapter>

View File

@ -8,13 +8,8 @@
<title>The materials: packages and patches</title> <title>The materials: packages and patches</title>
<?dbhtml filename="chapter03.html"?> <?dbhtml filename="chapter03.html"?>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="introduction.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="introduction.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="packages.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="packages.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="patches.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="patches.xml"/>
</chapter> </chapter>

View File

@ -20,10 +20,10 @@ Bash (&bash-version;) - 1,910 KB:
<ulink url="&freshmeat;gnubash/"/> <ulink url="&freshmeat;gnubash/"/>
Binutils (&binutils-version;) - 10,666 KB: Binutils (&binutils-version;) - 10,666 KB:
<ulink url="&freshmeat;binutils/"/> <ulink url="ftp://ftp.kernel.org/pub/linux/devel/binutils/"/>
Bison (&bison-version;) - 796 KB: Bison (&bison-version;) - 796 KB:
<ulink url="&freshmeat;bison/"/> <ulink url="http://ftp.tuniv.szczecin.pl/pub/Linux/alpha-gnu/bison/"/>
Bzip2 (&bzip2-version;) - 650 KB: Bzip2 (&bzip2-version;) - 650 KB:
<ulink url="&freshmeat;bzip2/"/> <ulink url="&freshmeat;bzip2/"/>
@ -40,9 +40,6 @@ Diffutils (&diffutils-version;) - 762 KB:
E2fsprogs (&e2fsprogs-version;) - 3,003 KB: E2fsprogs (&e2fsprogs-version;) - 3,003 KB:
<ulink url="&freshmeat;e2fsprogs/"/> <ulink url="&freshmeat;e2fsprogs/"/>
Ed (&ed-version;) - 182 KB:
<ulink url="&freshmeat;ed/"/>
Expect (&expect-version;) - 510 KB: Expect (&expect-version;) - 510 KB:
<ulink url="&freshmeat;expect/"/> <ulink url="&freshmeat;expect/"/>
@ -53,21 +50,12 @@ Findutils (&findutils-version;) - 760 KB:
<ulink url="&freshmeat;findutils/"/> <ulink url="&freshmeat;findutils/"/>
Flex (&flex-version;) - 372 KB: Flex (&flex-version;) - 372 KB:
<ulink url="ftp://ftp.gnu.org/gnu/non-gnu/flex/"/> <ulink url="&freshmeat;flex/"/>
Gawk (&gawk-version;) - 1,596 KB: Gawk (&gawk-version;) - 1,596 KB:
<ulink url="&freshmeat;gnuawk/"/> <ulink url="&freshmeat;gnuawk/"/>
GCC (&gcc-2953-version;) - 9,618 KB: GCC (&gcc-version;) - ~27,000KB:
<ulink url="&freshmeat;gcc/"/>
GCC-core (&gcc-version;) - 11,283KB:
<ulink url="&freshmeat;gcc/"/>
GCC-g++ (&gcc-version;) - 2,026 KB:
<ulink url="&freshmeat;gcc/"/>
GCC-testsuite (&gcc-version;) - 1,051 KB:
<ulink url="&freshmeat;gcc/"/> <ulink url="&freshmeat;gcc/"/>
Gettext (&gettext-version;) - 6,397 KB: Gettext (&gettext-version;) - 6,397 KB:
@ -101,7 +89,7 @@ Less (&less-version;) - 259 KB:
<ulink url="&freshmeat;less/"/> <ulink url="&freshmeat;less/"/>
LFS-Bootscripts (&bootscripts-version;) - 32 KB: LFS-Bootscripts (&bootscripts-version;) - 32 KB:
<ulink url="&http-down;"/> <ulink url="http://www.linuxfromscratch.org/~nathan/"/>
Libtool (&libtool-version;) - 2,602 KB: Libtool (&libtool-version;) - 2,602 KB:
<ulink url="&freshmeat;libtool/"/> <ulink url="&freshmeat;libtool/"/>
@ -109,15 +97,15 @@ Libtool (&libtool-version;) - 2,602 KB:
Linux (&linux-version;) - 30,051 KB: Linux (&linux-version;) - 30,051 KB:
<ulink url="&freshmeat;linux/"/> <ulink url="&freshmeat;linux/"/>
Linux-Libc-Headers (&linux-libc-headers-version;) - 2,381 KB:
<ulink url="http://ep09.pld-linux.org/~mmazur/linux-libc-headers/"/>
M4 (&m4-version;) - 310 KB: M4 (&m4-version;) - 310 KB:
<ulink url="&freshmeat;gnum4/"/> <ulink url="&freshmeat;gnum4/"/>
Make (&make-version;) - 899 KB: Make (&make-version;) - 899 KB:
<ulink url="&freshmeat;gnumake/"/> <ulink url="&freshmeat;gnumake/"/>
Make_devices (&makedev-version;) - 20 KB:
<ulink url="&lfs-root;~alex/make_devices-1.2.bz2"/>
Man (&man-version;) - 196 KB: Man (&man-version;) - 196 KB:
<ulink url="&freshmeat;man/"/> <ulink url="&freshmeat;man/"/>
@ -127,8 +115,8 @@ Man-pages (&man-pages-version;) - 1,582 KB:
Mktemp (&mktemp-version;) - 69 KB: Mktemp (&mktemp-version;) - 69 KB:
<ulink url="&freshmeat;mktemp/"/> <ulink url="&freshmeat;mktemp/"/>
Modutils (&modutils-version;) - 229 KB: Module-Init-Tools (&module-init-tools-version;) - 118 KB:
<ulink url="&freshmeat;modutils/"/> <ulink url="ftp://ftp.kernel.org/pub/linux/utils/kernel/module-init-tools/"/>
Ncurses (&ncurses-version;) - 2,019 KB: Ncurses (&ncurses-version;) - 2,019 KB:
<ulink url="&freshmeat;ncurses/"/> <ulink url="&freshmeat;ncurses/"/>
@ -142,9 +130,6 @@ Patch (&patch-version;) - 182 KB:
Perl (&perl-version;) - 9,373 KB: Perl (&perl-version;) - 9,373 KB:
<ulink url="&freshmeat;perl/"/> <ulink url="&freshmeat;perl/"/>
Procinfo (&procinfo-version;) - 24 KB:
<ulink url="&freshmeat;procinfo/"/>
Procps (&procps-version;) - 260 KB: Procps (&procps-version;) - 260 KB:
<ulink url="&freshmeat;procps/"/> <ulink url="&freshmeat;procps/"/>
@ -172,6 +157,9 @@ Tcl (&tcl-version;) - 3,363 KB:
Texinfo (&texinfo-version;) - 1,385 KB: Texinfo (&texinfo-version;) - 1,385 KB:
<ulink url="&freshmeat;texinfo/"/> <ulink url="&freshmeat;texinfo/"/>
Udev (&udev-version;) - 327 KB:
<ulink url="ftp://ftp.kernel.org/pub/linux/utils/kernel/hotplug/"/>
Util-linux (&util-linux-version;) - 1,814 KB: Util-linux (&util-linux-version;) - 1,814 KB:
<ulink url="&freshmeat;util-linux/"/> <ulink url="&freshmeat;util-linux/"/>
@ -190,27 +178,19 @@ remove old versions when new ones are released. An alternative download location
that may have older versions available is <ulink that may have older versions available is <ulink
url="ftp://gaosu.rave.org/pub/linux/lfs/"/>.</para></note> url="ftp://gaosu.rave.org/pub/linux/lfs/"/>.</para></note>
<note><para>2) As of this writing, the Glibc maintainers have decided in their <note><para>2) Released packages of Glibc are not new enough for our purposes,
wisdom not to make available new release tarballs for download. The only way to so create a tarball of some known-good CVS with the following commands:</para>
obtain the current Glibc release from pristine upstream sources is to pull it
from the Glibc CVS (Concurrent Versioning System) repository. The following commands will download the current
release and make a tarball from it:</para>
<screen><userinput>cvs -z 9 -d :pserver:anoncvs@sources.redhat.com:/cvs/glibc \ <screen><userinput>cvs -z 3 -d :pserver:anoncvs@sources.redhat.com:/cvs/glibc \
export -d glibc-2.3.3-20031202 -D "2003-12-02 UTC" libc export -d glibc-2.3.4-20040408 -D "18:00:00 2004-04-08 UTC" libc
tar jcvf glibc-2.3.3-20031202.tar.bz2 glibc-2.3.3-20031202</userinput></screen> sed -i -e "s/stable/2004-04-08/" -e "s/2\.3\.3/2.3.4/" \
glibc-2.3.4-20040408/version.h
tar jcvf glibc-2.3.4-20040408.tar.bz2 glibc-2.3.4-20040408</userinput></screen>
<para>Alternatively, we've made our own tarball available which you can <para>Alternatively, we've made our own tarball available which you can download
download courtesy of the generous LFS mirror sites.</para> from the following location:
<ulink url="ftp://belfs.linux-phreak.net/belfs/glibc-2.3.4-20040408.tar.bz2"/>
<literallayout><ulink url="ftp://gaosu.rave.org/pub/linux/lfs/packages/conglomeration/&glibc-version;.tar.bz2"/> </para>
<ulink url="http://lfs.mirror.intermedia.com.sg/packages/glibc/&glibc-version;.tar.bz2"/>
<ulink url="ftp://lfs.mirror.intermedia.com.sg/pub/lfs/glibc/&glibc-version;.tar.bz2"/>
<ulink url="http://dl.lfs.fredan.org/&glibc-version;.tar.bz2"/>
<ulink url="http://packages.lfs-es.org/&glibc-version;.tar.bz2"/>
<ulink url="http://mirror.averse.net/lfs-packages/&glibc-version;.tar.bz2"/>
<ulink url="ftp://mirror.averse.net/pub/lfs-packages/&glibc-version;.tar.bz2"/>
<ulink url="ftp://ftp.lfs-matrix.de/lfs/packages/conglomeration/&glibc-version;.tar.bz2"/></literallayout>
</note> </note>
</sect1> </sect1>

View File

@ -16,42 +16,30 @@ following:</para>
Bash Patch - 7 KB: Bash Patch - 7 KB:
<ulink url="&patches-root;bash-&bash-version;-2.patch"/> <ulink url="&patches-root;bash-&bash-version;-2.patch"/>
Bison Attribute Patch - 2 KB:
<ulink url="&patches-root;bison-&bison-version;-attribute.patch"/>
Coreutils Hostname Patch - 1 KB: Coreutils Hostname Patch - 1 KB:
<ulink url="&patches-root;coreutils-&coreutils-version;-hostname-1.patch"/> <ulink url="&patches-root;coreutils-&coreutils-version;-hostname-1.patch"/>
Coreutils Uname Patch - 1 KB: Coreutils Uname Patch - 1 KB:
<ulink url="&patches-root;coreutils-&coreutils-version;-uname-1.patch"/> <ulink url="&patches-root;coreutils-&coreutils-version;-uname-1.patch"/>
Ed Mkstemp Patch - 1 KB:
<ulink url="&patches-root;ed-&ed-version;-mkstemp.patch"/>
Expect Spawn Patch - 6 KB: Expect Spawn Patch - 6 KB:
<ulink url="&patches-root;expect-&expect-version;-spawn-1.patch"/> <ulink url="&patches-root;expect-&expect-version;-spawn-1.patch"/>
Flex Brokenness Patch - 8 KB:
<ulink url="&patches-root;flex-&flex-version;-debian-fixes-2.patch"/>
GCC No-Fixincludes Patch - 1 KB: GCC No-Fixincludes Patch - 1 KB:
<ulink url="&patches-root;gcc-&gcc-version;-no_fixincludes-1.patch"/> <ulink url="&patches-root;gcc-&gcc-version;-no_fixincludes-1.patch"/>
GCC Specs Patch - 11 KB: GCC Specs Patch - 11 KB:
<ulink url="&patches-root;gcc-&gcc-version;-specs-1.patch"/> <ulink url="&patches-root;gcc-&gcc-version;-specs-1.patch"/>
GCC-2 Patch - 16 KB: Inetutils Kernel Headers Patch - 1 KB:
<ulink url="&patches-root;gcc-&gcc-2953-version;-2.patch"/> <ulink url="&patches-root;inetutils-&inetutils-version;-kernel-2.6-1.patch"/>
GCC-2 No-Fixincludes Patch - 1 KB:
<ulink url="&patches-root;gcc-&gcc-2953-version;-no-fixinc.patch"/>
GCC-2 Return-Type Patch - 1 KB:
<ulink url="&patches-root;gcc-&gcc-2953-version;-returntype-fix.patch"/>
Inetutils No-Server-Man-Pages Patch - 4 KB: Inetutils No-Server-Man-Pages Patch - 4 KB:
<ulink url="&patches-root;inetutils-&inetutils-version;-no_server_man_pages-1.patch"/> <ulink url="&patches-root;inetutils-&inetutils-version;-no_server_man_pages-1.patch"/>
Kbd More-Programs Patch - 1 KB:
<ulink url="&patches-root;kbd-&kbd-version;-more-programs-1.patch"/>
Man 80-Columns Patch - 1 KB: Man 80-Columns Patch - 1 KB:
<ulink url="&patches-root;man-&man-version;-80cols.patch"/> <ulink url="&patches-root;man-&man-version;-80cols.patch"/>
@ -61,8 +49,20 @@ Mktemp Tempfile Patch - 3 KB:
Net-tools Mii-Tool-Gcc33 Patch - 2 KB: Net-tools Mii-Tool-Gcc33 Patch - 2 KB:
<ulink url="&patches-root;net-tools-&net-tools-version;-miitool-gcc33-1.patch"/> <ulink url="&patches-root;net-tools-&net-tools-version;-miitool-gcc33-1.patch"/>
Net-tools Kernel Headers Patch - 1 KB:
<ulink url="&patches-root;net-tools-&net-tools-version;-kernel-2.6-1.patch"/>
Perl Libc Patch - 1 KB: Perl Libc Patch - 1 KB:
<ulink url="&patches-root;perl-&perl-version;-libc-1.patch"/> <ulink url="&patches-root;perl-&perl-version;-libc-1.patch"/>
Sysklogd Kernel Headers Patch - 3 KB:
<ulink url="&patches-root;sysklogd-&sysklogd-version;-kernel_header.patch"/>
Udev Configuration Patch - 6 KB:
<ulink url="&patches-root;udev-&udev-version;-config-1.patch"/>
Util-Linux Kernel Headers Patch - 3 KB:
<ulink url="&patches-root;util-linux-&util-linux-version;-kernel-dj-2.6-1.patch"/>
</literallayout> </literallayout>
<para>In addition to the above required patches, there exist a number of <para>In addition to the above required patches, there exist a number of

View File

@ -8,7 +8,6 @@
<title>Final Preparations</title> <title>Final Preparations</title>
<?dbhtml filename="chapter04.html"?> <?dbhtml filename="chapter04.html"?>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="aboutlfs.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="aboutlfs.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="creatingtoolsdir.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="creatingtoolsdir.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="addinguser.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="addinguser.xml"/>

View File

@ -29,7 +29,7 @@ patch:</para>
<para>Now prepare Bash for compilation:</para> <para>Now prepare Bash for compilation:</para>
<screen><userinput>./configure --prefix=/tools</userinput></screen> <screen><userinput>./configure --prefix=/tools --without-bash-malloc</userinput></screen>
<para>Compile the program:</para> <para>Compile the program:</para>

View File

@ -50,7 +50,16 @@ running the test suites for the temporary tools here in this chapter. If
nevertheless you want to run the Binutils test suite, the following command nevertheless you want to run the Binutils test suite, the following command
will do so:</para> will do so:</para>
<screen><userinput>make check</userinput></screen> <screen><userinput>make -k check</userinput></screen>
<para>Except for a few known failures, the binutils tests should all pass. The
exceptions to this rule are as follows:</para>
<screen>* 5 FAIL (unexpected failure) for visibility
* 1 FAIL for selective4
* 1 FAIL for selective5</screen>
<!--
<para>There should be no unexpected failures here, expected failures are fine. <para>There should be no unexpected failures here, expected failures are fine.
Unfortunately, there is no easy way to view the test results summary like there Unfortunately, there is no easy way to view the test results summary like there
@ -59,6 +68,8 @@ to spot. The output shown will contain something like:</para>
<blockquote><screen>make[1]: *** [check-binutils] Error 2</screen></blockquote> <blockquote><screen>make[1]: *** [check-binutils] Error 2</screen></blockquote>
-->
<para>And install the package:</para> <para>And install the package:</para>
<screen><userinput>make install</userinput></screen> <screen><userinput>make install</userinput></screen>

46
chapter05/bison.xml Normal file
View File

@ -0,0 +1,46 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-tools-bison" xreflabel="Bison">
<title>Bison-&bison-version;</title>
<?dbhtml filename="bison.html"?>
<indexterm zone="ch-tools-bison">
<primary sortas="a-Bison">Bison</primary>
<secondary>tools</secondary></indexterm>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="../chapter06/bison.xml" xpointer="xpointer(/sect1/para[1])"/>
<screen>&buildtime; 0.6 SBU
&diskspace; 10.6 MB</screen>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="../chapter06/bison.xml" xpointer="xpointer(/sect1/para[2])"/>
<sect2>
<title>Installation of Bison</title>
<para>Prepare Bison for compilation:</para>
<screen><userinput>./configure --prefix=/tools</userinput></screen>
<para>Compile the package:</para>
<screen><userinput>make</userinput></screen>
<para>To test the results, issue:
<userinput>make check</userinput>.</para>
<para>Now install the package:</para>
<screen><userinput>make install</userinput></screen>
</sect2>
<sect2><title> </title><para> </para>
<para>The details on this package are found in <xref linkend="contents-bison"/>.</para>
<para> </para></sect2>
</sect1>

View File

@ -23,7 +23,11 @@
<title>Installation of Bzip2</title> <title>Installation of Bzip2</title>
<para>The Bzip2 package doesn't contain a <command>configure</command> <para>The Bzip2 package doesn't contain a <command>configure</command>
script. Compile and install it with a straightforward:</para> script. Compile it with a straightforward:</para>
<screen><userinput>make</userinput></screen>
<para>And install it:</para>
<screen><userinput>make PREFIX=/tools install</userinput></screen> <screen><userinput>make PREFIX=/tools install</userinput></screen>

View File

@ -9,9 +9,11 @@
<?dbhtml filename="chapter05.html"?> <?dbhtml filename="chapter05.html"?>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="introduction.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="introduction.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="hostreqs.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="toolchaintechnotes.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="toolchaintechnotes.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="binutils-pass1.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="binutils-pass1.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="gcc-pass1.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="gcc-pass1.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="linux-libc-headers.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="kernel-headers.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="kernel-headers.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="glibc.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="glibc.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="adjusting.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="adjusting.xml"/>
@ -35,8 +37,12 @@
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="tar.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="tar.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="texinfo.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="texinfo.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="bash.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="bash.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="m4.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="bison.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="flex.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="util-linux.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="util-linux.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="perl.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="perl.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="udev.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="stripping.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="stripping.xml"/>
</chapter> </chapter>

57
chapter05/flex.xml Normal file
View File

@ -0,0 +1,57 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-tools-flex" xreflabel="Flex">
<title>Flex-&flex-version;</title>
<?dbhtml filename="flex.html"?>
<indexterm zone="ch-tools-flex">
<primary sortas="a-Flex">Flex</primary>
<secondary>tools</secondary></indexterm>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="../chapter06/flex.xml" xpointer="xpointer(/sect1/para[1])"/>
<screen>&buildtime; 0.6 SBU
&diskspace; 10.6 MB</screen>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="../chapter06/flex.xml" xpointer="xpointer(/sect1/para[2])"/>
<sect2>
<title>Installation of Bison</title>
<para>Flex contains several known bugs. Fix these with the following patch:</para>
<screen><userinput>patch -Np1 -i ../flex-&flex-version;-debian-fixes-2.patch</userinput></screen>
<para>The GNU autotools detects that the Flex source code has been modified by
the patch, and tries to update the man pages to include those changes, but this
breaks on many systems, and the default pages are fine, so make sure they don't
get renegerated:</para>
<screen><userinput>touch doc/*.1</userinput></screen>
<para>Now prepare Flex for compilation:</para>
<screen><userinput>./configure --prefix=/tools</userinput></screen>
<para>Compile the package:</para>
<screen><userinput>make</userinput></screen>
<para>To test the results, issue:
<userinput>make check</userinput>.</para>
<para>Now install the package:</para>
<screen><userinput>make install</userinput></screen>
</sect2>
<sect2><title> </title><para> </para>
<para>The details on this package are found in <xref linkend="contents-flex"/>.</para>
<para> </para></sect2>
</sect1>

View File

@ -40,9 +40,8 @@ cd ../gcc-build</userinput></screen>
<para>Prepare GCC for compilation:</para> <para>Prepare GCC for compilation:</para>
<screen><userinput>../gcc-&gcc-version;/configure --prefix=/tools \ <screen><userinput>../gcc-&gcc-version;/configure --prefix=/tools \
--with-local-prefix=/tools \ --libexecdir=/tools/lib --with-local-prefix=/tools \
--disable-nls --enable-shared \ --disable-nls --enable-shared --enable-languages=c</userinput></screen>
--enable-languages=c</userinput></screen>
<para>The meaning of the configure options:</para> <para>The meaning of the configure options:</para>

View File

@ -83,10 +83,9 @@ variables that override the default optimization flags.</para>
<para>Now prepare GCC for compilation:</para> <para>Now prepare GCC for compilation:</para>
<screen><userinput>../gcc-&gcc-version;/configure --prefix=/tools \ <screen><userinput>../gcc-&gcc-version;/configure --prefix=/tools \
--with-local-prefix=/tools \ --libexecdir=/tools/lib --with-local-prefix=/tools \
--enable-clocale=gnu --enable-shared \ --enable-clocale=gnu --enable-shared --enable-threads=posix \
--enable-threads=posix --enable-__cxa_atexit \ --enable-__cxa_atexit --enable-languages=c,c++</userinput></screen>
--enable-languages=c,c++</userinput></screen>
<para>The meaning of the new configure options:</para> <para>The meaning of the new configure options:</para>
@ -141,34 +140,12 @@ a summary of the test suite results, run this:</para>
<para>You can compare your results to those posted to the gcc-testresults <para>You can compare your results to those posted to the gcc-testresults
mailing list for similar configurations to your own. For an example of how mailing list for similar configurations to your own. For an example of how
current GCC-&gcc-version; should look on i686-pc-linux-gnu, see current GCC-&gcc-version; should look on i686-pc-linux-gnu, see
<ulink url="http://gcc.gnu.org/ml/gcc-testresults/2004-01/msg00826.html"/>.</para> <ulink url="http://gcc.gnu.org/ml/gcc-testresults/2004-04/msg00414.html"/>.</para>
<para>Note that the results contain:</para>
<screen>* 1 XPASS (unexpected pass) for g++
* 1 FAIL (unexpected failure) for gcc
* 24 XPASS's for libstdc++</screen>
<para>The unexpected pass for g++ is due to the use of
<emphasis>--enable-__cxa_atexit</emphasis>. Apparently not all platforms
supported by GCC have support for <quote>__cxa_atexit</quote> in their C
libraries, so this test is not always expected to pass.</para>
<para>The 24 unexpected passes for libstdc++ are due to the use of
<emphasis>--enable-clocale=gnu</emphasis>. This option, which is the correct
choice on Glibc-based systems of versions 2.2.5 and above, enables in the GNU C
library a locale support that is superior to the otherwise selected
<emphasis>generic</emphasis> model (which may be applicable if for instance you
were using Newlibc, Sun-libc or whatever other libc). The libstdc++ test suite
is apparently expecting the <emphasis>generic</emphasis> model, hence those
tests are not always expected to pass.</para>
<para>Having a few unexpected failures often cannot be avoided. The GCC <para>Having a few unexpected failures often cannot be avoided. The GCC
developers are usually aware of these, but haven't yet gotten around to fixing developers are usually aware of these, but haven't yet gotten around to fixing
them. One particular case in point is the filebuf_members test in the C++ them. In short, unless your results are vastly different from those at the above
standard library testsuite. This test has been observed to fail in some URL, it is safe to continue.</para>
situations, but succeeed in others. In short, unless your results are vastly
different from those at the above URL, it is safe to continue.</para>
<para>And finally install the package:</para> <para>And finally install the package:</para>

View File

@ -24,7 +24,20 @@
<para>Prepare Gettext for compilation:</para> <para>Prepare Gettext for compilation:</para>
<screen><userinput>./configure --prefix=/tools</userinput></screen> <screen><userinput>./configure --prefix=/tools --disable-libasprintf \
--disable-csharp</userinput></screen>
<itemizedlist>
<listitem><para><userinput>--disable-libasprintf</userinput>: This flag tells
Gettext that we don't want its asprintf library. Nothing in Chapter 5 or 6
requires this, and gettext gets rebuilt later, so we exclude it to save
time/space.</para></listitem>
<listitem><para><userinput>--disable-csharp</userinput>: Gettext has a nasty
habit of searching for a C# compiler on the host, and building bindings for it.
We've already <quote>locked</quote> ourselves into the temporary tools though,
which doesn't have a C# compiler.</para></listitem>
</itemizedlist>
<para>Compile the programs:</para> <para>Compile the programs:</para>

View File

@ -39,38 +39,44 @@ cd ../glibc-build</userinput></screen>
<para>Next, prepare Glibc for compilation:</para> <para>Next, prepare Glibc for compilation:</para>
<screen><userinput>../glibc-&glibc-version;-20031202/configure --prefix=/tools \ <screen><userinput>../glibc-&glibc-version;/configure --prefix=/tools \
--disable-profile --enable-add-ons=linuxthreads \ --disable-profile --enable-add-ons=nptl --with-tls \
--with-binutils=/tools/bin --with-headers=/tools/include \ --with-binutils=/tools/bin --without-gd --without-cvs \
--without-gd --without-cvs</userinput></screen> --with-headers=/tools/glibc-kernheaders</userinput></screen>
<para>The meaning of the configure options:</para> <para>The meaning of the configure options:</para>
<itemizedlist> <itemizedlist>
<listitem><para><userinput>--disable-profile</userinput>: This <listitem><para><userinput>--disable-profile</userinput>: This builds the
builds the libraries without profiling information. Omit this option if you libraries without profiling information. Omit this option if you plan to do
plan to do profiling on the temporary tools.</para></listitem> profiling on the temporary tools.</para></listitem>
<listitem><para><userinput>--enable-add-ons=linuxthreads</userinput>: This <listitem><para><userinput>--enable-add-ons=nptl</userinput>: This
tells Glibc to use the Linuxthreads add-on as its threading tells Glibc to use the NPTL add-on as its threading library.</para></listitem>
library.</para></listitem>
<listitem><para><userinput>--with-binutils=/tools/bin</userinput> and <listitem><para><userinput>--with-tls</userinput>: This tells Glibc to include
<userinput>--with-headers=/tools/include</userinput>: Strictly speaking support for TLS (thread-local storage). This is required for NPTL to work.
these switches are not required. But they ensure nothing can go wrong with </para></listitem>
regard to what kernel headers and Binutils programs get used during the
Glibc build.</para></listitem>
<listitem><para><userinput>--without-gd</userinput>: This prevents <listitem><para><userinput>--with-binutils=/tools/bin</userinput>: Strictly
the build of the <command>memusagestat</command> program, which speaking this switch is not required. But it does ensure nothing can go wrong
strangely enough insists on linking against the host's libraries (libgd, with regard to what Binutils programs get used during the Glibc build.</para></listitem>
libpng, libz, and so forth).</para></listitem>
<listitem><para><userinput>--without-gd</userinput>: This prevents the build
of the <command>memusagestat</command> program, which strangely enough insists
on linking against the host's libraries (libgd, libpng, libz, and so forth).
</para></listitem>
<listitem><para><userinput>--without-cvs</userinput>: This is meant to prevent <listitem><para><userinput>--without-cvs</userinput>: This is meant to prevent
the Makefiles from attempting automatic CVS checkouts when using a CVS the Makefiles from attempting automatic CVS checkouts when using a CVS
snapshot. But it's not actually needed these days. We use it because it snapshot. But it's not actually needed these days. We use it because it
suppresses an annoying but harmless warning about a missing suppresses an annoying but harmless warning about a missing
<command>autoconf</command> program.</para></listitem> <command>autoconf</command> program.</para></listitem>
<listitem><para><userinput>--with-headers=/tools/glibc-kernheaders</userinput>:
This tells Glibc to compile against the <quote>raw</quote> kernel headers, so
that it knows exactly what features the kernel has, and can optimize itself
accordingly. Not strictly necessary, but nice to have.</para></listitem>
</itemizedlist> </itemizedlist>
<para>During this stage you might see the following warning:</para> <para>During this stage you might see the following warning:</para>

26
chapter05/hostreqs.xml Normal file
View File

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-tools-hostreqs">
<title>Host system requirements</title>
<?dbhtml filename="hostreqs.html"?>
<para>Due to the experimental nature of BE-LFS, the host must be running at
<emphasis>least</emphasis> a 2.6.2 kernel. The reasons for this high requirement
is the use of NPTL, but more importantly the use of udev. Udev creates devices
dynamically by reading from the sysfs file system. Only very recently has
support for this file system been implemented in most of the kernel drivers,
however. We must be sure that all the critical system devices get created
properly.</para>
<para>As for obtaining such a kernel, let's hope you distributor has provided
a 2.6 kernel package for you. If so, install it. If not, you'll have to compile
it yourself. If you're forced into a situation where you need to compile it
yourself, it is highly recommended that you compile your kernel in a monolithic
manner, as you probably don't want to go fiddling with your hosts module
utilities. Supposing you don't want to listen, open up the module-init-tools
tarball and check out the README on how to get module support for 2.6.</para>
</sect1>

View File

@ -38,17 +38,17 @@ un-tarring.</para>
<para>Create the platform-specific <filename>include/asm</filename> <para>Create the platform-specific <filename>include/asm</filename>
symlink:</para> symlink:</para>
<screen><userinput>make symlinks</userinput></screen> <screen><userinput>make include/asm</userinput></screen>
<para>Install the platform-specific header files:</para> <para>Install the platform-specific header files:</para>
<screen><userinput>mkdir /tools/include/asm <screen><userinput>mkdir /tools/glibc-kernheaders
cp include/asm/* /tools/include/asm cp -HR include/asm /tools/glibc-kernheaders
cp -R include/asm-generic /tools/include</userinput></screen> cp -R include/asm-generic /tools/glibc-kernheaders</userinput></screen>
<para>Finally, install the cross-platform kernel header files:</para> <para>Finally, install the cross-platform kernel header files:</para>
<screen><userinput>cp -R include/linux /tools/include</userinput></screen> <screen><userinput>cp -R include/linux /tools/glibc-kernheaders</userinput></screen>
</sect2> </sect2>

View File

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-tools-linux-libc-headers">
<title>Linux-Libc-Headers-&linux-libc-headers-version;</title>
<?dbhtml filename="linux-libc-headers.html"?>
<indexterm zone="ch-tools-linux-libc-headers">
<primary sortas="a-Linux-Libc-Headers">Linux-Libc-Headers</primary>
<secondary>tools, headers</secondary></indexterm>
<screen>&buildtime; 0.1 SBU
&diskspace; 22 MB</screen>
<sect2>
<title>Installation of Linux-Libc-Headers</title>
<para>For years it has been common practice to use so-called <quote>raw</quote>
kernel headers (straight from a kernel tarball) in /usr/include, but over the
last few years, the kernel developers have taken a strong stance that such
things should not be done. Thus was born the linux-libc-headers project,
designed to maintain an API stable version of the Linux headers.</para>
<para>Install the header files:</para>
<screen><userinput>cp -R include/asm-i386 /tools/include/asm
cp -R include/linux /tools/include</userinput></screen>
</sect2>
</sect1>

46
chapter05/m4.xml Normal file
View File

@ -0,0 +1,46 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-tools-m4" xreflabel="M4">
<title>M4-&m4-version;</title>
<?dbhtml filename="m4.html"?>
<indexterm zone="ch-tools-m4">
<primary sortas="a-M4">M4</primary>
<secondary>tools</secondary></indexterm>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="../chapter06/m4.xml" xpointer="xpointer(/sect1/para[1])"/>
<screen>&buildtime; 0.1 SBU
&diskspace; 3.0 MB</screen>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="../chapter06/m4.xml" xpointer="xpointer(/sect1/para[2])"/>
<sect2>
<title>Installation of M4</title>
<para>Prepare M4 for compilation:</para>
<screen><userinput>./configure --prefix=/tools</userinput></screen>
<para>Compile the package:</para>
<screen><userinput>make</userinput></screen>
<para>To test the results, issue:
<userinput>make check</userinput>.</para>
<para>Now install the package:</para>
<screen><userinput>make install</userinput></screen>
</sect2>
<sect2><title> </title><para> </para>
<para>The details on this package are found in <xref linkend="contents-m4"/>.</para>
<para> </para></sect2>
</sect1>

View File

@ -26,12 +26,6 @@
<screen><userinput>patch -Np1 -i ../perl-&perl-version;-libc-1.patch</userinput></screen> <screen><userinput>patch -Np1 -i ../perl-&perl-version;-libc-1.patch</userinput></screen>
<para>Perl insists on using the <command>arch</command> program to find out
the machine type. Create a little script to mimic this command:</para>
<screen><userinput>echo "uname -m" &gt; /tools/bin/arch
chmod 755 /tools/bin/arch</userinput></screen>
<para>Now prepare Perl for compilation (make sure you get the 'IO Fcntl POSIX' <para>Now prepare Perl for compilation (make sure you get the 'IO Fcntl POSIX'
right, they are all letters):</para> right, they are all letters):</para>

65
chapter05/udev.xml Normal file
View File

@ -0,0 +1,65 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-tools-udev">
<title>Udev-&udev-version;</title>
<?dbhtml filename="udev.html"?>
<indexterm zone="ch-tools-udev">
<primary sortas="a-Udev">Udev</primary>
<secondary>tools</secondary></indexterm>
<!--
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="../chapter06/udev.xml" xpointer="xpointer(/sect1/para[1])"/>
-->
<screen>&buildtime; 0.2 SBU
&diskspace; 5.2 MB</screen>
<!--
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="../chapter06/udev.xml" xpointer="xpointer(/sect1/para[2])"/>
-->
<sect2>
<title>Installation of Udev</title>
<para>By default, the permissions udev assigns to nodes are all uniform,
being owned by user root, group root, and only accessible to root. As you
can easily imagine, this isn't ideal. Give it a much better configuration
by applying the following patch:</para>
<screen><userinput>patch -Np1 -i ../udev-&udev-version;-config-1.patch
</userinput></screen>
<para>The udevstart program hardcodes the path to the udev program in itself,
which is bad since we install udev in a non-standard location. Fix this by
running the following:</para>
<screen><userinput>sed -i 's:\/sbin\/udev:/tools&amp;:' udevstart.c</userinput></screen>
<para>Also assure that udev knows the correct location to look for its
configuration files:</para>
<screen><userinput>sed -i 's:\/etc:/tools&amp;:' etc/udev/udev.conf.in</userinput></screen>
<para>Now compile Udev:</para>
<screen><userinput>make prefix=/tools etcdir=/tools/etc</userinput></screen>
<para>Generate Udev's main configuration file:</para>
<screen><userinput>make udevdir=/dev etc/udev/udev.conf</userinput></screen>
<para>And install finally install it:</para>
<screen><userinput>make DESTDIR=/tools install</userinput></screen>
</sect2>
<sect2><title> </title><para> </para>
<para>The details on this package are found in <xref linkend="contents-udev"/>.</para>
<para> </para></sect2>
</sect1>

View File

@ -22,12 +22,16 @@
<sect2> <sect2>
<title>Installation of Util-linux</title> <title>Installation of Util-linux</title>
<para>Util-linux has issues with the Linux 2.6 kernel series - fix these issues
by applying the following patch:</para>
<screen><userinput>patch -Np1 -i ../util-linux-&util-linux-version;-kernel-dj-2.6-1.patch</userinput></screen>
<para>Util-linux doesn't use the freshly installed headers and libraries <para>Util-linux doesn't use the freshly installed headers and libraries
from the /tools directory. This is fixed by altering the configure from the /tools directory. This is fixed by altering the configure
script:</para> script:</para>
<screen><userinput>cp configure configure.backup <screen><userinput>sed -i "s@/usr/include@/tools/include@g" configure</userinput></screen>
sed "s@/usr/include@/tools/include@g" configure.backup > configure</userinput></screen>
<para>Prepare Util-linux for compilation:</para> <para>Prepare Util-linux for compilation:</para>

View File

@ -18,7 +18,6 @@ Required disk space: 27 MB</screen>
GCC, Glibc, Grep, Make, Ncurses, Sed.</para> GCC, Glibc, Grep, Make, Ncurses, Sed.</para>
<sect2> <sect2>
<title>Installation of Bash</title> <title>Installation of Bash</title>
@ -30,7 +29,8 @@ patch:</para>
<para>Now prepare Bash for compilation:</para> <para>Now prepare Bash for compilation:</para>
<screen><userinput>./configure --prefix=/usr --bindir=/bin</userinput></screen> <screen><userinput>./configure --prefix=/usr --bindir=/bin \
--without-bash-malloc</userinput></screen>
<para>Compile the package:</para> <para>Compile the package:</para>

View File

@ -34,9 +34,7 @@ everything is set up correctly by performing a simple test:</para>
<para>Your chroot environment is not set up for proper PTY operation. In this <para>Your chroot environment is not set up for proper PTY operation. In this
case there is no point in running the test suites for Binutils and GCC until you case there is no point in running the test suites for Binutils and GCC until you
are able to resolve the issue. Please refer back to <xref linkend="ch-system-proc"/> are able to resolve the issue.</para>
and the <xref linkend="ch-system-MAKEDEV"/> section and perform the recommended steps
to fix the problem.</para>
<para>This package is known to behave badly when you have changed its <para>This package is known to behave badly when you have changed its
default optimization flags (including the -march and -mcpu options). default optimization flags (including the -march and -mcpu options).
@ -72,7 +70,7 @@ circumstances.</para></important>
<para>Test the results:</para> <para>Test the results:</para>
<screen><userinput>make check</userinput></screen> <screen><userinput>make -k check</userinput></screen>
<para>The test suite notes from <xref linkend="ch-tools-binutils-pass2"/> are still <para>The test suite notes from <xref linkend="ch-tools-binutils-pass2"/> are still
very much appropriate here. Be sure to refer back there should you have any very much appropriate here. Be sure to refer back there should you have any

View File

@ -22,12 +22,7 @@ GCC, Gettext, Glibc, Grep, M4, Make, Sed.</para>
<sect2> <sect2>
<title>Installation of Bison</title> <title>Installation of Bison</title>
<para>First fix a minor compilation problem that Bison has with some packages, <para>Prepare Bison for compilation:</para>
the patch is back-ported from CVS:</para>
<screen><userinput>patch -Np1 -i ../bison-&bison-version;-attribute.patch</userinput></screen>
<para>Now prepare Bison for compilation:</para>
<screen><userinput>./configure --prefix=/usr</userinput></screen> <screen><userinput>./configure --prefix=/usr</userinput></screen>

View File

@ -55,7 +55,6 @@ necessary symbolic links, and clean up:</para>
cp -a libbz2.so* /lib cp -a libbz2.so* /lib
ln -s ../../lib/libbz2.so.1.0 /usr/lib/libbz2.so ln -s ../../lib/libbz2.so.1.0 /usr/lib/libbz2.so
rm /usr/bin/{bunzip2,bzcat,bzip2} rm /usr/bin/{bunzip2,bzcat,bzip2}
mv /usr/bin/{bzip2recover,bzless,bzmore} /bin
ln -s bzip2 /bin/bunzip2 ln -s bzip2 /bin/bunzip2
ln -s bzip2 /bin/bzcat</userinput></screen> ln -s bzip2 /bin/bzcat</userinput></screen>

View File

@ -8,192 +8,65 @@
<title>Installing basic system software</title> <title>Installing basic system software</title>
<?dbhtml filename="chapter06.html"?> <?dbhtml filename="chapter06.html"?>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="introduction.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="introduction.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="kernfs.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="proc.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="chroot.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="chroot.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="changingowner.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="changingowner.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="creatingdirs.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="creatingdirs.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="createfiles.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="createfiles.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="pwdgroup.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="pwdgroup.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="devices.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="linux-libc-headers.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="makedev.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="kernel-headers.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="man-pages.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="man-pages.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="glibc.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="glibc.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="readjusting.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="readjusting.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="binutils.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="binutils.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="gcc.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="gcc.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="coreutils.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="coreutils.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="zlib.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="zlib.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="mktemp.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="mktemp.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="iana-etc.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="iana-etc.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="findutils.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="findutils.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="gawk.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="gawk.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="ncurses.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="ncurses.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="vim.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="vim.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="m4.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="m4.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="bison.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="bison.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="less.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="less.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="groff.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="groff.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="sed.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="sed.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="flex.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="flex.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="gettext.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="gettext.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="net-tools.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="net-tools.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="inetutils.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="inetutils.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="perl.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="perl.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="texinfo.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="texinfo.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="autoconf.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="autoconf.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="automake.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="automake.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="bash.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="bash.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="file.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="file.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="libtool.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="libtool.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="bzip2.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="bzip2.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="diffutils.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="diffutils.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="ed.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="kbd.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="kbd.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="e2fsprogs.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="e2fsprogs.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="grep.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="grep.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="grub.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="grub.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="gzip.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="gzip.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="man.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="man.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="make.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="make.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="module-init-tools.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="modutils.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="patch.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="patch.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="procinfo.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="procps.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="procps.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="psmisc.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="psmisc.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="shadow.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="shadow.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="sysklogd.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="sysklogd.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="sysvinit.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="sysvinit.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="tar.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="tar.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="udev.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="util-linux.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="util-linux.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="gcc-2953.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="aboutdebug.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="aboutdebug.xml"/>
<sect1 id="ch-system-strippingagain"> <sect1 id="ch-system-strippingagain">
<title>Stripping again</title> <title>Stripping again</title>
<?dbhtml filename="strippingagain.html"?> <?dbhtml filename="strippingagain.html"?>
@ -239,7 +112,6 @@ destroyed.</para>
</sect1> </sect1>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="revisedchroot.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="revisedchroot.xml"/>
</chapter> </chapter>

View File

@ -57,11 +57,7 @@ so do it now:</para>
<screen><userinput>make install-root</userinput></screen> <screen><userinput>make install-root</userinput></screen>
<para>Create a 'table of mounted filesystems' file with:</para> <para>Create two dummy groups and a dummy user name:</para>
<screen><userinput>touch /etc/mtab</userinput></screen>
<para>And create two dummy groups and a dummy user name:</para>
<screen><userinput>echo "dummy1:x:1000" &gt;&gt; /etc/group <screen><userinput>echo "dummy1:x:1000" &gt;&gt; /etc/group
echo "dummy2:x:1001:dummy" &gt;&gt; /etc/group echo "dummy2:x:1001:dummy" &gt;&gt; /etc/group
@ -70,7 +66,7 @@ echo "dummy:x:1000:1000:::/bin/bash" &gt;&gt; /etc/passwd</userinput></screen>
<para>Now you're all set to run the test suite. First run the few tests that <para>Now you're all set to run the test suite. First run the few tests that
are meant to be run as <emphasis>root</emphasis>:</para> are meant to be run as <emphasis>root</emphasis>:</para>
<screen><userinput>export NON_ROOT_USERNAME=dummy; make check-root</userinput></screen> <screen><userinput>make NON_ROOT_USERNAME=dummy make check-root</userinput></screen>
<para>Then run the remainder of the tests as the <emphasis>dummy</emphasis> <para>Then run the remainder of the tests as the <emphasis>dummy</emphasis>
user:</para> user:</para>
@ -79,7 +75,7 @@ user:</para>
<para>When you're done testing, remove the dummy user and groups:</para> <para>When you're done testing, remove the dummy user and groups:</para>
<screen><userinput>sed -i.bak '/dummy/d' /etc/passwd /etc/group</userinput></screen> <screen><userinput>sed -i '/dummy/d' /etc/passwd /etc/group</userinput></screen>
<para>Install the package:</para> <para>Install the package:</para>
@ -87,7 +83,7 @@ user:</para>
<para>And move some programs to their proper locations:</para> <para>And move some programs to their proper locations:</para>
<screen><userinput>mv /usr/bin/{basename,cat,chgrp,chmod,chown,cp,dd,df} /bin <screen><userinput>mv /usr/bin/{[,basename,cat,chgrp,chmod,chown,cp,dd,df} /bin
mv /usr/bin/{date,echo,false,head,install,ln,ls} /bin mv /usr/bin/{date,echo,false,head,install,ln,ls} /bin
mv /usr/bin/{mkdir,mknod,mv,pwd,rm,rmdir,sync} /bin mv /usr/bin/{mkdir,mknod,mv,pwd,rm,rmdir,sync} /bin
mv /usr/bin/{sleep,stty,su,test,touch,true,uname} /bin mv /usr/bin/{sleep,stty,su,test,touch,true,uname} /bin
@ -99,10 +95,9 @@ Remove the one installed by Coreutils:</para>
<screen><userinput>rm /usr/bin/kill</userinput></screen> <screen><userinput>rm /usr/bin/kill</userinput></screen>
<para>Finally, create two symlinks to be FHS-compliant:</para> <para>Finally, create a symlink to be FHS-compliant:</para>
<screen><userinput>ln -s test /bin/[ <screen><userinput>ln -s ../../bin/install /usr/bin</userinput></screen>
ln -s ../../bin/install /usr/bin</userinput></screen>
</sect2> </sect2>

View File

@ -11,7 +11,7 @@
a directory tree. Issuing the following commands will create a more or less a directory tree. Issuing the following commands will create a more or less
standard tree:</para> standard tree:</para>
<screen><userinput>mkdir -p /{bin,boot,dev/{pts,shm},etc/opt,home,lib,mnt,proc} <screen><userinput>mkdir -p /{bin,boot,dev,etc/opt,home,lib,mnt}
mkdir -p /{root,sbin,srv,tmp,usr/local,var,opt} mkdir -p /{root,sbin,srv,tmp,usr/local,var,opt}
mkdir -p /media/{floppy,cdrom} mkdir -p /media/{floppy,cdrom}
mkdir /usr/{bin,include,lib,sbin,share,src} mkdir /usr/{bin,include,lib,sbin,share,src}
@ -25,7 +25,7 @@ mkdir /usr/local/share/{doc,info,locale,man}
mkdir /usr/local/share/{misc,terminfo,zoneinfo} mkdir /usr/local/share/{misc,terminfo,zoneinfo}
mkdir /usr/local/share/man/man{1,2,3,4,5,6,7,8} mkdir /usr/local/share/man/man{1,2,3,4,5,6,7,8}
mkdir /var/{lock,log,mail,run,spool} mkdir /var/{lock,log,mail,run,spool}
mkdir -p /var/{tmp,opt,cache,lib/misc,local} mkdir -p /var/{tmp,opt,cache,lib/{misc,locate},local}
mkdir /opt/{bin,doc,include,info} mkdir /opt/{bin,doc,include,info}
mkdir -p /opt/{lib,man/man{1,2,3,4,5,6,7,8}}</userinput></screen> mkdir -p /opt/{lib,man/man{1,2,3,4,5,6,7,8}}</userinput></screen>

56
chapter06/devices.xml Normal file
View File

@ -0,0 +1,56 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-devices" xreflabel="devices">
<title>Populating /dev with device nodes</title>
<?dbhtml filename="devices.html"?>
<indexterm zone="ch-system-devices"><primary sortas="a-Devices">Devices</primary></indexterm>
<sect2>
<title>Creating initial device nodes</title>
<para>When the kernel boots the system, it requires the presence of a few device
nodes, in particular the console and null devices:</para>
<screen><userinput>mknod -m 600 /dev/console c 5 1
mknod -m 666 /dev/null c 1 3</userinput></screen>
</sect2>
<sect2>
<title>Mounting ramfs and populating /dev</title>
<para>The ideal way to populate /dev is to mount a ramfs onto /dev (like tmpfs, but it
cannot be swapped) and create the devices on there during each bootup. Since we haven't
booted the system, we have to do what the bootscripts would otherwise do for us, and
populate /dev ourselves. Begin by mounting /dev:</para>
<screen><userinput>mount -n -t ramfs none /dev</userinput></screen>
<para>Now use the provided udevstart utility to create the initial devices based on
all the information in /sys:</para>
<screen><userinput>/tools/sbin/udevstart</userinput></screen>
<para>There are some symlinks and directories required by LFS that are not created by
Udev, so we create those ourselves here:</para>
<screen><userinput>ln -s /proc/self/fd /dev/fd
ln -s /proc/self/fd/0 /dev/stdin
ln -s /proc/self/fd/1 /dev/stdout
ln -s /proc/self/fd/2 /dev/stderr
ln -s /proc/kcore /dev/core
mkdir /dev/pts
mkdir /dev/shm</userinput></screen>
<para>Finally, mount the proper virtual (kernel) file systems on the directories we just
created:</para>
<screen><userinput>mount -t devpts -o gid=4,mode=620 none /dev/pts
mount -t tmpfs none /dev/shm</userinput></screen>
</sect2>
</sect1>

View File

@ -23,16 +23,10 @@ Diffutils, Gawk, GCC, Gettext, Glibc, Grep, Make, Sed, Texinfo.</para>
<sect2> <sect2>
<title>Installation of E2fsprogs</title> <title>Installation of E2fsprogs</title>
<para>It is recommended to build E2fsprogs outside of the
source tree:</para>
<screen><userinput>mkdir ../e2fsprogs-build
cd ../e2fsprogs-build</userinput></screen>
<para>Prepare E2fsprogs for compilation:</para> <para>Prepare E2fsprogs for compilation:</para>
<screen><userinput>../e2fsprogs-&e2fsprogs-version;/configure --prefix=/usr --with-root-prefix="" \ <screen><userinput>./configure --prefix=/usr --with-root-prefix="" \
--enable-elf-shlibs</userinput></screen> --enable-elf-shlibs --disable-evms</userinput></screen>
<para>The meaning of the configure options:</para> <para>The meaning of the configure options:</para>
@ -55,11 +49,8 @@ the shared libraries which some programs in this package use.</para></listitem>
<screen><userinput>make</userinput></screen> <screen><userinput>make</userinput></screen>
<para>If you to test the results, first make sure an mtab file <para>To test the results, issue:
exists with <userinput>touch /etc/mtab</userinput> to prevent some sixty tests <userinput>make check</userinput>.</para>
from failing, and (if it doesn't already exist) fake the presence of an old
pager with <userinput>ln -s /tools/bin/cat /bin/more</userinput> to prevent one
test from failing, then issue: <userinput>make check</userinput>.</para>
<para>Install most of the package:</para> <para>Install most of the package:</para>

View File

@ -1,87 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-ed" xreflabel="Ed">
<title>Ed-&ed-version;</title>
<?dbhtml filename="ed.html"?>
<indexterm zone="ch-system-ed"><primary sortas="a-Ed">Ed</primary></indexterm>
<para>The Ed package contains a spartan line editor.</para>
<screen>&buildtime; 0.1 SBU
&diskspace; 3.1 MB</screen>
<para>Ed installation depends on: Bash, Binutils, Coreutils, Diffutils, GCC,
Glibc, Grep, Make, Sed.</para>
<sect2>
<title>Installation of Ed</title>
<note><para>Ed isn't something which many people use. It's installed here
because it can be used by the patch program if you encounter an ed-based patch
file. This happens rarely because diff-based patches are preferred these
days.</para></note>
<para>Ed normally uses the <emphasis>mktemp</emphasis> function to create
temporary files in <filename class="directory">/tmp</filename>, but this
function contains a vulnerability (see the section on Temporary Files in <ulink
url="http://en.tldp.org/HOWTO/Secure-Programs-HOWTO/avoid-race.html"/>). Apply
the following patch to make Ed use <emphasis>mkstemp</emphasis> instead, a
secure way to create temporary files:</para>
<screen><userinput>patch -Np1 -i ../ed-&ed-version;-mkstemp.patch</userinput></screen>
<para>Now prepare Ed for compilation:</para>
<screen><userinput>./configure --prefix=/usr --exec-prefix=""</userinput></screen>
<para>The meaning of the configure option:</para>
<itemizedlist>
<listitem><para><userinput>--exec-prefix=""</userinput>: This forces the
programs to be installed into the <filename>/bin</filename> directory. Having
the programs available there is useful in the event of the
<filename>/usr</filename> partition being unavailable.</para></listitem>
</itemizedlist>
<para>Compile the package:</para>
<screen><userinput>make</userinput></screen>
<para>To test the results, issue:
<userinput>make check</userinput>.</para>
<para>Install the package:</para>
<screen><userinput>make install</userinput></screen>
</sect2>
<sect2 id="contents-ed"><title>Contents of Ed</title>
<para><emphasis>Installed programs</emphasis>: ed and red (link to ed)</para>
</sect2>
<sect2><title>Short descriptions</title>
<indexterm zone="ch-system-ed ed"><primary sortas="b-ed">ed</primary></indexterm>
<para id="ed"><command>ed</command> is a line-oriented text editor. It can be used
to create, display, modify and otherwise manipulate text files.</para>
<indexterm zone="ch-system-ed red"><primary sortas="b-red">red</primary></indexterm>
<para id="red"><command>red</command> is a restricted ed -- it can only edit files
in the current directory and cannot execute shell commands.</para>
</sect2>
</sect1>

View File

@ -28,10 +28,10 @@ Diffutils, GCC, Gettext, Glibc, Grep, Make, Sed.</para>
<para>Prepare Findutils for compilation:</para> <para>Prepare Findutils for compilation:</para>
<screen><userinput>./configure --prefix=/usr --libexecdir=/usr/lib/locate \ <screen><userinput>./configure --prefix=/usr --libexecdir=/usr/lib/locate \
--localstatedir=/var/lib/misc</userinput></screen> --localstatedir=/var/lib/locate</userinput></screen>
<para>The localstatedir directive above changes the location of the locate <para>The localstatedir directive above changes the location of the locate
database to be in /var/lib/misc, which is FHS-compliant.</para> database to be in /var/lib/locate, which is FHS-compliant.</para>
<para>Compile the package:</para> <para>Compile the package:</para>

View File

@ -23,7 +23,17 @@ GCC, Gettext, Glibc, Grep, M4, Make, Sed.</para>
<sect2> <sect2>
<title>Installation of Flex</title> <title>Installation of Flex</title>
<para>Prepare Flex for compilation:</para> <para>Flex contains several known bugs. Fix these with the following patch:</para>
<screen><userinput>patch -Np1 -i ../flex-&flex-version;-debian-fixes-2.patch</userinput></screen>
<para>The GNU autotools detects that the Flex source code has been modified by the patch,
and tries to update the man pages to include those changes, but this breaks on many
systems, and the default pages are fine, so make sure they don't get renegerated:</para>
<screen><userinput>touch doc/*.1</userinput></screen>
<para>Now prepare Flex for compilation:</para>
<screen><userinput>./configure --prefix=/usr</userinput></screen> <screen><userinput>./configure --prefix=/usr</userinput></screen>
@ -32,7 +42,7 @@ GCC, Gettext, Glibc, Grep, M4, Make, Sed.</para>
<screen><userinput>make</userinput></screen> <screen><userinput>make</userinput></screen>
<para>To test the results, issue: <para>To test the results, issue:
<userinput>make bigcheck</userinput>.</para> <userinput>make check</userinput>.</para>
<para>Now install the package:</para> <para>Now install the package:</para>

View File

@ -1,64 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-gcc-2953">
<title>GCC-&gcc-2953-version;</title>
<?dbhtml filename="gcc-2953.html"?>
<indexterm zone="ch-system-gcc-2953"><primary sortas="a-GCC-2953">GCC-2953</primary></indexterm>
<screen>&buildtime; 1.5 SBU
&buildtime; 130 MB</screen>
<sect2>
<title>Installation of GCC</title>
<para>This package is known to behave badly when you have changed its
default optimization flags (including the -march and -mcpu options).
Therefore, if you have defined any environment variables that override
default optimizations, such as CFLAGS and CXXFLAGS, we recommend un-setting
or modifying them when building GCC.</para>
<para>This is an older release of GCC which we are going to install for the
purpose of compiling the Linux kernel in <xref linkend="chapter-bootable"/>.
This version is recommended by the kernel developers when you need absolute
stability. Later versions of GCC have not received as much testing for Linux
kernel compilation. Using a later version is likely to work, however, we
recommend adhering to the kernel developer's advice and using the version here
to compile your kernel.</para>
<note><para>We don't install the C++ compiler or libraries here. However, there
may be reasons why you would want to install them. More information can be found
at <ulink url="&blfs-root;view/stable/general/gcc2.html"/>.</para></note>
<para>We'll install this older release of GCC into the non-standard prefix of
<filename class="directory">/opt</filename> so as to avoid interfering with
the system GCC already installed in <filename class="directory">/usr</filename>
.</para>
<para>Apply the patches and make a small adjustment:</para>
<screen><userinput>patch -Np1 -i ../gcc-&gcc-2953-version;-2.patch
patch -Np1 -i ../gcc-&gcc-2953-version;-no-fixinc.patch
patch -Np1 -i ../gcc-&gcc-2953-version;-returntype-fix.patch
echo timestamp &gt; gcc/cstamp-h.in</userinput></screen>
<para>The GCC documentation recommends building GCC outside of the source
directory in a dedicated build directory:</para>
<screen><userinput>mkdir ../gcc-2-build
cd ../gcc-2-build</userinput></screen>
<para>Compile and install the compiler:</para>
<screen><userinput>../gcc-&gcc-2953-version;/configure --prefix=/opt/gcc-&gcc-2953-version; \
--enable-shared --enable-languages=c \
--enable-threads=posix
make bootstrap
make install</userinput></screen>
</sect2>
</sect1>

View File

@ -55,9 +55,9 @@ cd ../gcc-build</userinput></screen>
<para>Now prepare GCC for compilation:</para> <para>Now prepare GCC for compilation:</para>
<screen><userinput>../gcc-&gcc-version;/configure --prefix=/usr \ <screen><userinput>../gcc-&gcc-version;/configure --prefix=/usr \
--enable-shared --enable-threads=posix \ --libexecdir=/usr/lib --enable-shared --enable-threads=posix \
--enable-__cxa_atexit --enable-clocale=gnu \ --enable-__cxa_atexit --enable-clocale=gnu --enable-languages=c,c++
--enable-languages=c,c++</userinput></screen> </userinput></screen>
<para>Compile the package:</para> <para>Compile the package:</para>

View File

@ -42,28 +42,20 @@ cd ../glibc-build</userinput></screen>
<para>Now prepare Glibc for compilation:</para> <para>Now prepare Glibc for compilation:</para>
<screen><userinput>../glibc-&glibc-version;-20031202/configure --prefix=/usr \ <screen><userinput>../glibc-&glibc-version;/configure --prefix=/usr \
--disable-profile --enable-add-ons=linuxthreads \ --disable-profile --enable-add-ons=nptl --with-tls \
--libexecdir=/usr/lib --with-headers=/usr/include \ --libexecdir=/tmp/pt_chown --without-cvs \
--without-cvs</userinput></screen> --with-headers=/tools/glibc-kernheaders</userinput></screen>
<para>The meaning of the new configure options:</para> <para>The meaning of the new configure options:</para>
<itemizedlist> <itemizedlist>
<listitem><para><userinput>--libexecdir=/usr/lib</userinput>: This changes the <listitem><para><userinput>--libexecdir=/tmp/pt_chown</userinput>: This changes
location of the <filename>pt_chown</filename> program from its default of the location of the <filename>pt_chown</filename> program from its default of
<filename class="directory">/usr/libexec</filename> to <filename class="directory">/usr/libexec</filename> to
<filename class="directory">/usr/lib</filename>. The use of <filename class="directory">/tmp/pt_chown</filename>. This program isn't required
<emphasis>libexec</emphasis> is considered not to be FHS-compliant because the on modern systems, so we install it in a place from which we will delete it
FHS doesn't even mention it.</para></listitem> later.</para></listitem>
<listitem><para><userinput>--with-headers=/usr/include</userinput>: This
ensures that the kernel headers in <filename>/usr/include</filename> are used
for this build. If you don't pass this switch then the headers from
<filename>/tools/include</filename> are used which of course is not ideal
(although they should be identical). Using this switch has the advantage
that you will be informed immediately should you have forgotten to install the
kernel headers into <filename>/usr/include</filename>.</para></listitem>
</itemizedlist> </itemizedlist>
<para>Compile the package:</para> <para>Compile the package:</para>
@ -119,13 +111,14 @@ localedef -i fr_FR@euro -f ISO-8859-15 fr_FR@euro
localedef -i it_IT -f ISO-8859-1 it_IT localedef -i it_IT -f ISO-8859-1 it_IT
localedef -i ja_JP -f EUC-JP ja_JP</userinput></screen> localedef -i ja_JP -f EUC-JP ja_JP</userinput></screen>
<para>Finally, build the linuxthreads man pages:</para> <para>Finally, build the linuxthreads man pages, which are a great reference
on the threading API (applicable to NPTL as well):</para>
<screen><userinput>make -C ../glibc-&glibc-version;-20031202/linuxthreads/man</userinput></screen> <screen><userinput>make -C ../glibc-&glibc-version;/linuxthreads/man</userinput></screen>
<para>And install these pages:</para> <para>And install these pages:</para>
<screen><userinput>make -C ../glibc-&glibc-version;-20031202/linuxthreads/man install</userinput></screen> <screen><userinput>make -C ../glibc-&glibc-version;/linuxthreads/man install</userinput></screen>
</sect2> </sect2>

View File

@ -32,10 +32,19 @@ Grub.</para>
<screen><userinput>./configure --prefix=/usr</userinput></screen> <screen><userinput>./configure --prefix=/usr</userinput></screen>
<para>Compile the package:</para> <para>A few of the files comprising Grub have issues with optimizations done
by GCC 3.4. Compile these few files with known-good optimizations:</para>
<screen><userinput>make -C stage2 STAGE2_CFLAGS=-O2 \
pre_stage2_exec-builtins.o pre_stage2_exec-serial.o</userinput></screen>
<para>Now compile the rest of the package:</para>
<screen><userinput>make</userinput></screen> <screen><userinput>make</userinput></screen>
<para>To test the results, issue:
<userinput>make check</userinput>.</para>
<para>Now install it:</para> <para>Now install it:</para>
<screen><userinput>make install <screen><userinput>make install

View File

@ -22,6 +22,11 @@ Diffutils, GCC, Glibc, Grep, Make, Ncurses, Sed.</para>
<sect2> <sect2>
<title>Installation of Inetutils</title> <title>Installation of Inetutils</title>
<para>Inetutils has issues with the Linux 2.6 kernel series - fix these isues
by applying the following patch:</para>
<screen><userinput>patch -Np1 -i ../inetutils-&inetutils-version;-kernel-2.6-1.patch</userinput></screen>
<para>We are not going to install all the programs that come with Inetutils. <para>We are not going to install all the programs that come with Inetutils.
However, the Inetutils build system will insist on installing all the man However, the Inetutils build system will insist on installing all the man
pages anyway. The following patch will correct this situation:</para> pages anyway. The following patch will correct this situation:</para>

View File

@ -22,13 +22,7 @@ Diffutils, Flex, GCC, Gettext, Glibc, Grep, Gzip, M4, Make, Sed.</para>
<sect2> <sect2>
<title>Installation of Kbd</title> <title>Installation of Kbd</title>
<para>By default some of Kbd's utilities (<command>setlogcons</command>, <para>Prepare Kbd for compilation:</para>
<command>setvesablank</command> and <command>getunimap</command>) are
not installed. First enable the compilation of these utilities:</para>
<screen><userinput>patch -Np1 -i ../kbd-&kbd-version;-more-programs-1.patch</userinput></screen>
<para>Now prepare Kbd for compilation:</para>
<screen><userinput>./configure</userinput></screen> <screen><userinput>./configure</userinput></screen>
@ -73,7 +67,7 @@ source (you will have to repeat this command whenever you unpack a new
kernel):</para> kernel):</para>
<screen><userinput>loadkeys -m /usr/share/kbd/keymaps/defkeymap.map.gz &gt; \ <screen><userinput>loadkeys -m /usr/share/kbd/keymaps/defkeymap.map.gz &gt; \
/usr/src/linux-2.4.25/drivers/char/defkeymap.c</userinput></screen> /usr/src/linux-&linux-version;/drivers/char/defkeymap.c</userinput></screen>
</sect2> </sect2>

View File

@ -1,80 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-kernel-headers">
<title>Linux-&linux-version; headers</title>
<?dbhtml filename="kernelheaders.html"?>
<indexterm zone="ch-system-kernel-headers">
<primary sortas="a-Linux">Linux</primary>
<secondary>system, headers</secondary></indexterm>
<screen>&buildtime; 0.1 SBU
&diskspace; 186 MB</screen>
<sect2>
<title>Installation of the kernel headers</title>
<para>We won't be compiling a new kernel yet -- we'll do that when we have
finished the installation of all the packages. But the libraries installed in
the next section need to refer to the kernel header files in order to know how
to interface with the kernel. Instead of unpacking the kernel sources again,
making the version file and the symlinks and so on, we will simply copy the
headers from the temporary tools directory in one swoop:</para>
<screen><userinput>cp -a /tools/include/{asm,asm-generic,linux} /usr/include</userinput></screen>
<para>A few kernel header files refer to the <filename>autoconf.h</filename>
header file. Since we have not yet configured the kernel, we need to create
this file ourselves in order to avoid a compilation failure of Sysklogd.
Create an empty <filename>autoconf.h</filename> file with:</para>
<screen><userinput>touch /usr/include/linux/autoconf.h</userinput></screen>
</sect2>
<sect2>
<title>Why we copy the kernel headers</title>
<para>In the past it was common practice to symlink the
<filename class="directory">/usr/include/{linux,asm}</filename> directories
to <filename class="directory">/usr/src/linux/include/{linux,asm}</filename>.
This was a <emphasis>bad</emphasis> practice, as the following extract from a
post by Linus Torvalds to the Linux Kernel Mailing List points out:</para>
<screen>I would suggest that people who compile new kernels should:
- not have a single symbolic link in sight (except the one that the
kernel build itself sets up, namely the <quote>linux/include/asm</quote>
symlink that is only used for the internal kernel compile itself)
And yes, this is what I do. My /usr/src/linux still has the old 2.2.13
header files, even though I haven't run a 2.2.13 kernel in a _loong_
time. But those headers were what Glibc was compiled against, so those
headers are what matches the library object files.
And this is actually what has been the suggested environment for at
least the last five years. I don't know why the symlink business keeps
on living on, like a bad zombie. Pretty much every distribution still
has that broken symlink, and people still remember that the linux
sources should go into <quote>/usr/src/linux</quote> even though that hasn't
been true in a _loong_ time.</screen>
<para>The essential part is where Linus states that the header files should be
<emphasis>the ones which Glibc was compiled against</emphasis>. These are
the headers that should be used when you later compile other packages, as they
are the ones that match the object-code library files. By copying the headers,
we ensure that they remain available if later you upgrade your kernel.</para>
<para>Note, by the way, that it is perfectly all right to have the kernel sources
in <filename class="directory">/usr/src/linux</filename>, as long as you don't
have the <filename class="directory">/usr/include/{linux,asm}</filename>
symlinks.</para>
</sect2>
</sect1>

31
chapter06/kernfs.xml Normal file
View File

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
<sect1 id="ch-system-kernfs">
<title>Mounting virtual kernel file systems</title>
<?dbhtml filename="kernfs.html"?>
<para>Various file systems exported by the kernel don't exist at all on your
hard drive, but are used to communicate things to and from the kernel itself.</para>
<para>Begin by creating directories onto which the file systems will be mounted:</para>
<screen><userinput>mkdir -p $LFS/{proc,sys}</userinput></screen>
<para>Now mount the file systems:</para>
<screen><userinput>mount -t proc proc $LFS/proc
mount -t sysfs sysfs $LFS/sys</userinput></screen>
<para>Remember that if for any reason you stop working on your BE-LFS, and start
again later, it's important to check that these file systems are mounted again
before entering the chroot environment, otherwise problems could occur.</para>
<para>Shortly, we'll be mounting a few more file systems from within the chroot
environment. To keep the host up-to-date, we'll do a <quote>fake mount</quote>
for each of these now:</para>
<screen><userinput>mount -f -t ramfs ramfs $LFS/dev
mount -f -t tmpfs tmpfs $LFS/dev/shm
mount -f -t devpts -o gid=4,mode=620 devpts $LFS/dev/pts</userinput></screen>
</sect1>

View File

@ -0,0 +1,43 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-linux-libc-headers">
<title>Linux-Libc-Headers-&linux-libc-headers-version;</title>
<?dbhtml filename="linux-libc-headers.html"?>
<indexterm zone="ch-system-linux-libc-headers">
<primary sortas="a-Linux-Libc-Headers">Linux-Libc-Headers</primary>
<secondary>system, headers</secondary></indexterm>
<screen>&buildtime; 0.1 SBU
&diskspace; 22 MB</screen>
<sect2>
<title>Installation of Linux-Libc-Headers</title>
<para>For years it has been common practice to use so-called <quote>raw</quote>
kernel headers (straight from a kernel tarball) in /usr/include, but over the
last few years, the kernel developers have taken a strong stance that such
things should not be done. Thus was born the linux-libc-headers project,
designed to maintain an API stable version of the Linux headers.</para>
<para>Install the header files:</para>
<screen><userinput>cp -R include/asm-i386 /usr/include/asm
cp -R include/linux /usr/include</userinput></screen>
<para>Assure that all the headers are owned by root:</para>
<screen><userinput>chown -R root:root /usr/include/{asm,linux}</userinput></screen>
<para>And make sure all the users can read the headers:</para>
<screen><userinput>find /usr/include/{asm,linux} -type d -exec chmod 755 {} \;
find /usr/include/{asm,linux} -type f -exec chmod 644 {} \;</userinput></screen>
</sect2>
</sect1>

View File

@ -1,105 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-MAKEDEV" xreflabel="Make_devices">
<title>Creating devices with Make_devices-&makedev-version;</title>
<?dbhtml filename="makedevices.html"?>
<indexterm zone="ch-system-MAKEDEV"><primary sortas="a-Make_devices">Make_devices</primary></indexterm>
<para>The Make_devices package contains a script for creating device
nodes.</para>
<screen>&buildtime; 1 SBU
&diskspace; 160 KB</screen>
<para>For its installation Make_devices depends on: Bash, Bzip2,
Coreutils.</para>
<sect2>
<title>Making devices</title>
<para>Note that unpacking the
<filename>make_devices-&makedev-version;.bz2</filename> file doesn't
create a directory for you to <command>cd</command> into, as the file
contains only a shell script.</para>
<para>Install the <filename>make_devices</filename> script:</para>
<screen><userinput>bzcat make_devices-&makedev-version;.bz2 &gt; /dev/make_devices
chmod 754 /dev/make_devices</userinput></screen>
<para>Device nodes are special files: things that can generate or receive data.
They usually correspond to physical pieces of hardware. Device nodes can be
created by issuing commands of the form: <command>mknod -m mode name type major
minor</command>. In such a command, <emphasis>mode</emphasis> is the usual
octal read/write/execute permissions triplet, and <emphasis>name</emphasis> is
the name of the device file to be created. It may seem surprising, but the
device name is actually arbitrary, except that most programs rely on devices
such as <filename>/dev/null</filename> having their usual names. The remaining
three parameters tell the kernel what device the node
actually refers to. The <emphasis>type</emphasis> is a letter, either b or c,
indicating whether the device is accessed in blocks (such as a hard disk) or
character by character (such as the console). And <emphasis>major</emphasis>
and <emphasis>minor</emphasis> are numbers, together forming a code that
identifies the device to the kernel. A list of the currently assigned device
numbers for Linux can be found in the file <filename>devices.txt</filename> in
the <filename class="directory">Documentation</filename> subdirectory of the
kernel sources.</para>
<para>Note that the same major/minor combination is usually assigned to both a
block and a character device. These are, however, completely unrelated devices
that cannot be interchanged. A device is identified by the type/major/minor
triple, not just the major/minor pair, so when creating a device node it is
important to choose the correct <emphasis>type</emphasis> of device.</para>
<para>Because looking up the type/major/minor triples and using
<command>mknod</command> manually is tedious and error-prone, the
<filename>make_devices</filename> script has been created. It contains a whole
series of <command>mknod</command> commands, one for each device, complete with
recommended name, permissions and group assignment. It has been set up so that
only a minimal set of commonly used devices is enabled and the other lines are
commented out. You should open <filename>make_devices</filename> in an editor
and customize it to your needs. This takes some time, but is very simple. When
you are satisfied, run the script to create the device files:</para>
<screen><userinput>cd /dev
./make_devices</userinput></screen>
<para>If you had success with mounting the devpts file system earlier in
<xref linkend="ch-system-proc"/>, you can continue with the next section. If you were
unable to mount devpts, you will have to create a few static ptyXX and ttyXX
device nodes instead. To do this, open <filename>make_devices</filename> in
your editor, go to the section <quote>Pseudo-TTY masters</quote> and enable a
few ptyXX devices -- a handful are enough to enable the test suites to run, but
if you plan to run a kernel without devpts support you will probably need many
more (every xterm, ssh connection, telnet connection, and the like, uses one of
these pseudo terminals). In the immediately following section <quote>Pseudo-TTY
slaves</quote>, enable the corresponding ttyXX devices. When you are done, rerun
<command>./make_devices</command> from inside <filename>/dev</filename> to
have it create the new devices.</para>
</sect2>
<sect2 id="contents-makedev"><title>Contents of Make_devices</title>
<para><emphasis>Installed script</emphasis>: make_devices</para>
</sect2>
<sect2><title>Short description</title>
<indexterm zone="ch-system-MAKEDEV make_devices"><primary sortas="d-make_devices">make_devices</primary></indexterm>
<para id="make_devices"><command>make_devices</command> is a script for creating a basic set of
static device nodes, usually residing in the <filename class="directory">/dev</filename> directory.</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.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-module-init-tools" xreflabel="Module-Init-Tools">
<title>Module-Init-Tools-&module-init-tools-version;</title>
<?dbhtml filename="module-init-tools.html"?>
<indexterm zone="ch-system-module-init-tools"><primary sortas="a-Module-Init-Tools">Module-Init-Tools</primary></indexterm>
<para>The Module-Init-Tools package contains programs for handling kernel
modules in Linux kernels greater than or equal to version 2.5.47.</para>
<screen>&buildtime; 0.1 SBU
&buildtime; 650 KB</screen>
<para>Module-Init-Tools installation depends on: Bash, Binutils, Bison,
Coreutils, Diffutils, Flex, GCC, Glibc, Grep, M4, Make, Sed.</para>
<sect2>
<title>Installation of Module-Init-Tools</title>
<para>Prepare Module-Init-Tools for compilation:</para>
<screen><userinput>./configure --prefix="" --enable-zlib</userinput></screen>
<para>Compile the package:</para>
<screen><userinput>make</userinput></screen>
<para>To test the results, issue:
<userinput>make check</userinput>.</para>
<para>Install it:</para>
<screen><userinput>make install</userinput></screen>
</sect2>
<sect2 id="contents-module-init-tools"><title>Contents of Module-Init-Tools</title>
<para><emphasis>Installed programs</emphasis>: depmod, genksyms, insmod,
insmod_ksymoops_clean, kallsyms (link to insmod), kernelversion, ksyms
(link to insmod), lsmod (link to insmod), modinfo, modprobe (link to insmod)
and rmmod (link to insmod)</para>
</sect2>
<sect2><title>Short descriptions</title>
<indexterm zone="ch-system-module-init-tools depmod"><primary sortas="b-depmod">depmod</primary></indexterm>
<para id="depmod"><command>depmod</command> creates a dependency file, based on the
symbols it finds in the existing set of modules. This dependency file is used
by modprobe to automatically load the required modules.</para>
<indexterm zone="ch-system-module-init-tools genksyms"><primary sortas="b-genksyms">genksyms</primary></indexterm>
<para id="genksyms"><command>genksyms</command> generates symbol version information.</para>
<indexterm zone="ch-system-module-init-tools insmod"><primary sortas="b-insmod">insmod</primary></indexterm>
<para id="insmod"><command>insmod</command> installs a loadable module in the running kernel.</para>
<indexterm zone="ch-system-module-init-tools insmod_ksymoops_clean"><primary sortas="b-insmod_ksymoops_clean">insmod_ksymoops_clean</primary></indexterm>
<para id="insmod_ksymoops_clean"><command>insmod_ksymoops_clean</command> deletes saved ksyms and
modules not accessed for two days.</para>
<indexterm zone="ch-system-module-init-tools kallsyms"><primary sortas="b-kallsyms">kallsyms</primary></indexterm>
<para id="kallsyms"><command>kallsyms</command> extracts all kernel symbols for debugging.</para>
<indexterm zone="ch-system-module-init-tools kernelversion"><primary sortas="b-kernelversion">kernelversion</primary></indexterm>
<para id="kernelversion"><command>kernelversion</command> reports the major version of the
running kernel.</para>
<indexterm zone="ch-system-module-init-tools ksyms"><primary sortas="b-ksyms">ksyms</primary></indexterm>
<para id="ksyms"><command>ksyms</command> displays exported kernel symbols.</para>
<indexterm zone="ch-system-module-init-tools lsmod"><primary sortas="b-lsmod">lsmod</primary></indexterm>
<para id="lsmod"><command>lsmod</command> shows which modules are loaded.</para>
<indexterm zone="ch-system-module-init-tools modinfo"><primary sortas="b-modinfo">modinfo</primary></indexterm>
<para id="modinfo"><command>modinfo</command> examines an object file associated with
a kernel module and displays any information that it can glean.</para>
<indexterm zone="ch-system-module-init-tools modprobe"><primary sortas="b-modprobe">modprobe</primary></indexterm>
<para id="modprobe"><command>modprobe</command> uses a dependency file, created by
depmod, to automatically load the relevant modules.</para>
<indexterm zone="ch-system-module-init-tools rmmod"><primary sortas="b-rmmod">rmmod</primary></indexterm>
<para id="rmmod"><command>rmmod</command> unloads modules from the running kernel.</para>
</sect2>
</sect1>

View File

@ -1,95 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-modutils" xreflabel="Modutils">
<title>Modutils-&modutils-version;</title>
<?dbhtml filename="modutils.html"?>
<indexterm zone="ch-system-modutils"><primary sortas="a-Modutils">Modutils</primary></indexterm>
<para>The Modutils package contains programs for handling kernel modules.</para>
<screen>&buildtime; 0.1 SBU
&buildtime; 2.9 MB</screen>
<para>Modutils installation depends on: Bash, Binutils, Bison, Coreutils,
Diffutils, Flex, GCC, Glibc, Grep, M4, Make, Sed.</para>
<sect2>
<title>Installation of Modutils</title>
<para>Prepare Modutils for compilation:</para>
<screen><userinput>./configure</userinput></screen>
<para>Compile the package:</para>
<screen><userinput>make</userinput></screen>
<para>Install it:</para>
<screen><userinput>make install</userinput></screen>
</sect2>
<sect2 id="contents-modutils"><title>Contents of Modutils</title>
<para><emphasis>Installed programs</emphasis>: depmod, genksyms, insmod,
insmod_ksymoops_clean, kallsyms (link to insmod), kernelversion, ksyms
(link to insmod), lsmod (link to insmod), modinfo, modprobe (link to insmod)
and rmmod (link to insmod)</para>
</sect2>
<sect2><title>Short descriptions</title>
<indexterm zone="ch-system-modutils depmod"><primary sortas="b-depmod">depmod</primary></indexterm>
<para id="depmod"><command>depmod</command> creates a dependency file, based on the
symbols it finds in the existing set of modules. This dependency file is used
by modprobe to automatically load the required modules.</para>
<indexterm zone="ch-system-modutils genksyms"><primary sortas="b-genksyms">genksyms</primary></indexterm>
<para id="genksyms"><command>genksyms</command> generates symbol version information.</para>
<indexterm zone="ch-system-modutils insmod"><primary sortas="b-insmod">insmod</primary></indexterm>
<para id="insmod"><command>insmod</command> installs a loadable module in the running kernel.</para>
<indexterm zone="ch-system-modutils insmod_ksymoops_clean"><primary sortas="b-insmod_ksymoops_clean">insmod_ksymoops_clean</primary></indexterm>
<para id="insmod_ksymoops_clean"><command>insmod_ksymoops_clean</command> deletes saved ksyms and
modules not accessed for two days.</para>
<indexterm zone="ch-system-modutils kallsyms"><primary sortas="b-kallsyms">kallsyms</primary></indexterm>
<para id="kallsyms"><command>kallsyms</command> extracts all kernel symbols for debugging.</para>
<indexterm zone="ch-system-modutils kernelversion"><primary sortas="b-kernelversion">kernelversion</primary></indexterm>
<para id="kernelversion"><command>kernelversion</command> reports the major version of the
running kernel.</para>
<indexterm zone="ch-system-modutils ksyms"><primary sortas="b-ksyms">ksyms</primary></indexterm>
<para id="ksyms"><command>ksyms</command> displays exported kernel symbols.</para>
<indexterm zone="ch-system-modutils lsmod"><primary sortas="b-lsmod">lsmod</primary></indexterm>
<para id="lsmod"><command>lsmod</command> shows which modules are loaded.</para>
<indexterm zone="ch-system-modutils modinfo"><primary sortas="b-modinfo">modinfo</primary></indexterm>
<para id="modinfo"><command>modinfo</command> examines an object file associated with
a kernel module and displays any information that it can glean.</para>
<indexterm zone="ch-system-modutils modprobe"><primary sortas="b-modprobe">modprobe</primary></indexterm>
<para id="modprobe"><command>modprobe</command> uses a dependency file, created by
depmod, to automatically load the relevant modules.</para>
<indexterm zone="ch-system-modutils rmmod"><primary sortas="b-rmmod">rmmod</primary></indexterm>
<para id="rmmod"><command>rmmod</command> unloads modules from the running kernel.</para>
</sect2>
</sect1>

View File

@ -37,6 +37,11 @@ but it's up to the kernel to make the protocols available.</para>
<screen><userinput>patch -Np1 -i ../net-tools-&net-tools-version;-miitool-gcc33-1.patch</userinput></screen> <screen><userinput>patch -Np1 -i ../net-tools-&net-tools-version;-miitool-gcc33-1.patch</userinput></screen>
<para>Net-tools has issues with the Linux 2.6 kernel series - fix these issues
by applying the following patch:</para>
<screen><userinput>patch -Np1 -i ../net-tools-&net-tools-version;-kernel-2.6-1.patch</userinput></screen>
<para>Now prepare Net-tools for compilation (if you intend to accept the <para>Now prepare Net-tools for compilation (if you intend to accept the
defaults, you can skip all the questions by running <userinput>yes "" | defaults, you can skip all the questions by running <userinput>yes "" |
make config</userinput> instead):</para> make config</userinput> instead):</para>

View File

@ -1,52 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
<sect1 id="ch-system-proc">
<title>Mounting the proc and devpts file systems</title>
<?dbhtml filename="proc.html"?>
<para>In order for certain programs to function properly, the
<emphasis>proc</emphasis> and <emphasis>devpts</emphasis> file systems must be
available within the chroot environment. The proc file system is the process
information pseudo file system through which the kernel provides information
about the status of the system. And the devpts file system is nowadays the most
common way pseudo terminals (PTYs) are implemented. Since kernel version 2.4, a
file system can be mounted as many times and in as many places as you like,
thus it's not a problem that these file systems are already mounted on your
host system, especially so because they are virtual file systems.</para>
<para>First become <emphasis>root</emphasis>, as only <emphasis>root</emphasis>
can mount file systems in unusual places. Then check again that the LFS
environment variable is set correctly by running <userinput>echo
$LFS</userinput> and making sure it shows the path to your LFS partition's
mount point, which is <filename class="directory">/mnt/lfs</filename> if you
followed our example.</para>
<para>Now make the mount points for these filesystems:</para>
<screen><userinput>mkdir -p $LFS/{proc,dev/pts}</userinput></screen>
<para>Mount the <emphasis>proc</emphasis> file system with:</para>
<screen><userinput>mount proc $LFS/proc -t proc</userinput></screen>
<para>And mount the <emphasis>devpts</emphasis> file system with:</para>
<screen><userinput>mount devpts $LFS/dev/pts -t devpts</userinput></screen>
<para>This last command might fail with an error like:</para>
<blockquote><screen>filesystem devpts not supported by kernel</screen></blockquote>
<para>The most likely cause for this is that your host system's kernel was
compiled without support for the devpts file system (you can check which file
systems your kernel supports with <command>cat /proc/filesystems</command>,
for example). A few PTYs are needed to be able to run the suites for Binutils
and GCC later on. If your kernel does not support devpts, do not worry, there
is another way to get them working inside the chroot environment. We'll cover
this shortly in the <xref linkend="ch-system-MAKEDEV"/> section.</para>
<para>Remember that if for any reason you stop working on your LFS, and start
again later, it's important to check that these file systems are mounted again
before entering the chroot environment, otherwise problems could occur.</para>
</sect1>

View File

@ -1,68 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-procinfo" xreflabel="Procinfo">
<title>Procinfo-&procinfo-version;</title>
<?dbhtml filename="procinfo.html"?>
<indexterm zone="ch-system-procinfo"><primary sortas="a-Procinfo">Procinfo</primary></indexterm>
<para>The Procinfo package contains programs for displaying system information.</para>
<screen>&buildtime; 0.1 SBU
&diskspace; 0.2 MB</screen>
<para>Procinfo installation depends on: Binutils, GCC, Glibc, Make, Ncurses.</para>
<sect2>
<title>Installation of Procinfo</title>
<para>Compile Procinfo:</para>
<screen><userinput>make LDLIBS=-lncurses</userinput></screen>
<para>The meaning of the make parameter:</para>
<itemizedlist>
<listitem><para><userinput>LDLIBS=-lncurses</userinput>: This tells Procinfo
to use the <filename>libncurses</filename> library instead of the
long-obsolete <filename>libtermcap</filename>.</para></listitem>
</itemizedlist>
<para>Install the package:</para>
<screen><userinput>make install</userinput></screen>
</sect2>
<sect2 id="contents-procinfo"><title>Contents of Procinfo</title>
<para><emphasis>Installed programs</emphasis>: lsdev, procinfo and
socklist</para>
</sect2>
<sect2><title>Short descriptions</title>
<indexterm zone="ch-system-procinfo lsdev"><primary sortas="b-lsdev">lsdev</primary></indexterm>
<para id="lsdev"><command>lsdev</command> lists the devices present in your system,
and which IRQs (Interrupt ReQuest) and IO ports they use.</para>
<indexterm zone="ch-system-procinfo procinfo"><primary sortas="b-procinfo">procinfo</primary></indexterm>
<para id="procinfo"><command>procinfo</command> displays an overview of some of the information
present in the virtual proc file system.</para>
<indexterm zone="ch-system-procinfo socklist"><primary sortas="b-socklist">socklist</primary></indexterm>
<para id="socklist"><command>socklist</command> lists the open sockets, reporting their
type, port number, and other specifics.</para>
</sect2>
</sect1>

View File

@ -25,12 +25,12 @@ GCC, Gettext, Glibc, Grep, Make, Ncurses, Sed.</para>
<para>Prepare Psmisc for compilation:</para> <para>Prepare Psmisc for compilation:</para>
<screen><userinput>./configure --prefix=/usr --exec-prefix=/</userinput></screen> <screen><userinput>./configure --prefix=/usr --exec-prefix=""</userinput></screen>
<para>The meaning of the configure option:</para> <para>The meaning of the configure option:</para>
<itemizedlist> <itemizedlist>
<listitem><para><userinput>--exec-prefix=/</userinput>: This causes the <listitem><para><userinput>--exec-prefix=""</userinput>: This causes the
binaries to be installed in <filename>/bin</filename> instead of binaries to be installed in <filename>/bin</filename> instead of
<filename>/usr/bin</filename>. As the Psmisc programs are often used in <filename>/usr/bin</filename>. As the Psmisc programs are often used in
bootscripts, they should be available also when the <filename>/usr</filename> bootscripts, they should be available also when the <filename>/usr</filename>

View File

@ -45,10 +45,11 @@ disk:x:8:
lp:x:9: lp:x:9:
dialout:x:10: dialout:x:10:
audio:x:11: audio:x:11:
video:x:12:
<userinput>EOF</userinput></screen> <userinput>EOF</userinput></screen>
<para>The created groups aren't part of any standard -- they are some of the <para>The created groups aren't part of any standard -- they are some of the
groups that the <command>make_devices</command> script in the next section groups that the Udev configuration we will be using in the next section
uses. The LSB (<ulink url="http://www.linuxbase.org/">Linux Standard uses. The LSB (<ulink url="http://www.linuxbase.org/">Linux Standard
Base</ulink>) recommends only that, beside the group <quote>root</quote> with a Base</ulink>) recommends only that, beside the group <quote>root</quote> with a
GID of 0, a group <quote>bin</quote> with a GID of 1 be present. All other group GID of 0, a group <quote>bin</quote> with a GID of 1 be present. All other group

View File

@ -43,6 +43,11 @@ working:</para>
<screen><userinput>echo '#define HAVE_SETLOCALE 1' &gt;&gt; config.h</userinput></screen> <screen><userinput>echo '#define HAVE_SETLOCALE 1' &gt;&gt; config.h</userinput></screen>
<para>Shadow incorrectly declares the malloc() function, causing compilation
failure. Fix this:</para>
<screen><userinput>sed -i '/extern char/d' libmisc/xmalloc.c</userinput></screen>
<para>Compile the package:</para> <para>Compile the package:</para>
<screen><userinput>make</userinput></screen> <screen><userinput>make</userinput></screen>

View File

@ -18,10 +18,14 @@ as those given by the kernel when unusual things happen.</para>
<para>Sysklogd installation depends on: Binutils, Coreutils, GCC, Glibc, Make.</para> <para>Sysklogd installation depends on: Binutils, Coreutils, GCC, Glibc, Make.</para>
<sect2> <sect2>
<title>Installation of Sysklogd</title> <title>Installation of Sysklogd</title>
<para>Sysklogd has issues with the Linux 2.6 kernel series - fix these isues
by applying the following patch:</para>
<screen><userinput>patch -Np1 -i ../sysklogd-&sysklogd-version;-kernel_header.patch</userinput></screen>
<para>Compile Sysklogd:</para> <para>Compile Sysklogd:</para>
<screen><userinput>make</userinput></screen> <screen><userinput>make</userinput></screen>

50
chapter06/udev.xml Normal file
View File

@ -0,0 +1,50 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-udev">
<title>Udev-&udev-version;</title>
<?dbhtml filename="udev.html"?>
<indexterm zone="ch-system-udev">
<primary sortas="a-Udev">Udev</primary>
<secondary>system</secondary></indexterm>
<screen>&buildtime; 0.2 SBU
&diskspace; 5.2 MB</screen>
<sect2>
<title>Installation of Udev</title>
<para>By default, the permissions udev assigns to nodes are all uniform,
being owned by user root, group root, and only accessible to root. As you
can easily imagine, this isn't ideal. Give it a much better configuration
by applying the following patch:</para>
<screen><userinput>patch -Np1 -i ../udev-&udev-version;-config-1.patch
</userinput></screen>
<para>Now compile Udev:</para>
<screen><userinput>make udevdir=/dev</userinput></screen>
<para>And install finally install it:</para>
<screen><userinput>make udevdir=/dev install</userinput></screen>
<para>And since we aren't going to be using the udev daemon, but instead the
udev binary itself, we correct it's hotplug configuration:</para>
<screen><userinput>ln -sf /sbin/udev /etc/hotplug.d/default/udev.hotplug</userinput></screen>
</sect2>
<sect2 id="contents-udev"><title>Contents of Udev</title>
<para>Who knows?</para>
</sect2>
</sect1>

View File

@ -39,6 +39,11 @@ mkdir -p /var/lib/hwclock</userinput></screen>
<sect2> <sect2>
<title>Installation of Util-linux</title> <title>Installation of Util-linux</title>
<para>Util-linux has issues with the Linux 2.6 kernel series - fix these isues
by applying the following patch:</para>
<screen><userinput>patch -Np1 -i ../util-linux-&util-linux-version;-kernel-dj-2.6-1.patch</userinput></screen>
<para>Prepare Util-linux for compilation:</para> <para>Prepare Util-linux for compilation:</para>
<screen><userinput>./configure</userinput></screen> <screen><userinput>./configure</userinput></screen>

View File

@ -45,7 +45,7 @@ echo '#define SYS_GVIMRC_FILE "/etc/gvimrc"' &gt;&gt; src/feature.h</userinput><
<screen><userinput>make</userinput></screen> <screen><userinput>make</userinput></screen>
<para>To test the results, you can issue: <para>To test the results, you can issue:
<userinput>make check</userinput>. However, this test suite outputs a lot of <userinput>make test</userinput>. However, this test suite outputs a lot of
seemingly garbage characters to the screen, and this can wreak havoc with the seemingly garbage characters to the screen, and this can wreak havoc with the
settings of the current terminal. Therefore the running of the test suite here settings of the current terminal. Therefore the running of the test suite here
is strictly optional.</para> is strictly optional.</para>

View File

@ -25,6 +25,10 @@
<screen><userinput>make install</userinput></screen> <screen><userinput>make install</userinput></screen>
<para>Since we're using Udev, install the support script for it:</para>
<screen><userinput>make install-udev</userinput></screen>
</sect2> </sect2>

View File

@ -8,33 +8,14 @@
<title>Setting up system boot scripts</title> <title>Setting up system boot scripts</title>
<?dbhtml filename="chapter07.html"?> <?dbhtml filename="chapter07.html"?>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="introduction.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="introduction.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="bootscripts.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="bootscripts.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="usage.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="usage.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="setclock.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="setclock.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="loadkeys.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="loadkeys.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="sysklogd.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="sysklogd.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="hostname.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="hostname.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="hosts.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="hosts.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="network.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="network.xml"/>
</chapter> </chapter>

View File

@ -9,15 +9,8 @@
<?dbhtml filename="chapter08.html"?> <?dbhtml filename="chapter08.html"?>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="introduction.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="introduction.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="fstab.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="fstab.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="kernel.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="kernel.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="grub.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="grub.xml"/>
</chapter> </chapter>

View File

@ -22,6 +22,7 @@ this:</para>
/dev/xxx / fff defaults 1 1 /dev/xxx / fff defaults 1 1
/dev/yyy swap swap pri=1 0 0 /dev/yyy swap swap pri=1 0 0
proc /proc proc defaults 0 0 proc /proc proc defaults 0 0
sysfs /sys sysfs defaults 0 0
devpts /dev/pts devpts gid=4,mode=620 0 0 devpts /dev/pts devpts gid=4,mode=620 0 0
shm /dev/shm tmpfs defaults 0 0 shm /dev/shm tmpfs defaults 0 0

View File

@ -92,9 +92,9 @@ timeout 30
color green/black light-green/black color green/black light-green/black
# The first entry is for LFS. # The first entry is for LFS.
title LFS &milestone; title LFS &milestone; (Linux &linux-version;)
root (hd0,3) root (hd0,3)
kernel --no-mem-option /boot/lfskernel root=/dev/hda4 kernel --no-mem-option /boot/lfskernel-&linux-version; root=/dev/hda4
<userinput>EOF</userinput></screen> <userinput>EOF</userinput></screen>
<note><para>By default, Grub will automatically pass a <quote>mem=xxx</quote> <note><para>By default, Grub will automatically pass a <quote>mem=xxx</quote>

View File

@ -56,45 +56,33 @@ scratch.</para>
<quote>Virtual memory file system support</quote> is enabled. It resides within <quote>Virtual memory file system support</quote> is enabled. It resides within
the <quote>File systems</quote> menu and is normally enabled by default.</para> the <quote>File systems</quote> menu and is normally enabled by default.</para>
<para>Verify dependencies and create dependency information files:</para> <note><para>NPTL requires the kernel to be compiled with GCC 3.x, in this case
&gcc-version;. Compiling with 2.95.x is known to cause failures in the glibc
testsuite, so do <emphasis>not</emphasis> compile the kernel with gcc 2.95.x
unless you know what you're getting yourself into.</para></note>
<screen><userinput>make CC=/opt/gcc-2.95.3/bin/gcc dep</userinput></screen> <para>Compile the kernel image and modules:</para>
<para>Compile the kernel image:</para> <screen><userinput>make</userinput></screen>
<screen><userinput>make CC=/opt/gcc-2.95.3/bin/gcc bzImage</userinput></screen>
<para>Compile the drivers which have been configured as modules:</para>
<screen><userinput>make CC=/opt/gcc-2.95.3/bin/gcc modules</userinput></screen>
<para>If you intend to use kernel modules, you will need an <para>If you intend to use kernel modules, you will need an
<filename>/etc/modules.conf</filename> file. Information pertaining <filename>/etc/modprobe.conf</filename> file. Information pertaining
to modules and to kernel configuration in general may be found in the to modules and to kernel configuration in general may be found in the
kernel documentation, which is found in the kernel documentation, which is found in the
<filename>linux-2.4.25/Documentation</filename> directory. The <filename>linux-&linux-version;/Documentation</filename> directory. The
modules.conf man page and the kernel HOWTO at modules.conf man page and the kernel HOWTO at
<ulink url="http://www.tldp.org/HOWTO/Kernel-HOWTO.html"/> may also be of <ulink url="http://www.tldp.org/HOWTO/Kernel-HOWTO.html"/> may also be of
interest to you.</para> interest to you.</para>
<para>Install the modules:</para> <para>Install the modules:</para>
<screen><userinput>make CC=/opt/gcc-2.95.3/bin/gcc modules_install</userinput></screen> <screen><userinput>make modules_install</userinput></screen>
<para>If you have a lot of modules and very little space, you may want to <para>If you have a lot of modules and very little space, you may want to
consider stripping and compressing the modules. For most people such compression consider stripping and compressing the modules. For most people such compression
isn't worth the trouble, but if you're really pressed for space, then have a look at isn't worth the trouble, but if you're really pressed for space, then have a look at
<ulink url="http://www.linux-mips.org/archives/linux-mips/2002-04/msg00031.html"/>.</para> <ulink url="http://www.linux-mips.org/archives/linux-mips/2002-04/msg00031.html"/>.</para>
<para>As nothing is complete without documentation, build the manual pages
that come with the kernel:</para>
<screen><userinput>make mandocs</userinput></screen>
<para>And install these pages:</para>
<screen><userinput>cp -a Documentation/man /usr/share/man/man9</userinput></screen>
<para>Kernel compilation has finished but more steps are required to complete <para>Kernel compilation has finished but more steps are required to complete
the installation. Some files need to be copied to the <filename>/boot</filename> the installation. Some files need to be copied to the <filename>/boot</filename>
directory.</para> directory.</para>
@ -102,21 +90,21 @@ directory.</para>
<para>The path to the kernel image may vary depending on the platform you're <para>The path to the kernel image may vary depending on the platform you're
using. Issue the following command to install the kernel:</para> using. Issue the following command to install the kernel:</para>
<screen><userinput>cp arch/i386/boot/bzImage /boot/lfskernel</userinput></screen> <screen><userinput>cp arch/i386/boot/bzImage /boot/lfskernel-&linux-version;</userinput></screen>
<para><filename>System.map</filename> is a symbol file for the kernel. It maps <para><filename>System.map</filename> is a symbol file for the kernel. It maps
the function entry points of every function in the kernel API (Application Programming Interface), as well as the the function entry points of every function in the kernel API (Application Programming Interface), as well as the
addresses of the kernel data structures for the running kernel. Issue the addresses of the kernel data structures for the running kernel. Issue the
following command to install the map file:</para> following command to install the map file:</para>
<screen><userinput>cp System.map /boot</userinput></screen> <screen><userinput>cp System.map /boot/System.map-&linux-version;</userinput></screen>
<para><filename>.config</filename> is the kernel configuration file that was <para><filename>.config</filename> is the kernel configuration file that was
produced by the <command>make menuconfig</command> step above. It contains all produced by the <command>make menuconfig</command> step above. It contains all
the config selections for the kernel that was just compiled. It's a good idea the config selections for the kernel that was just compiled. It's a good idea
to keep this file for future reference:</para> to keep this file for future reference:</para>
<screen><userinput>cp .config /boot/config-lfskernel</userinput></screen> <screen><userinput>cp .config /boot/config-&linux-version;</userinput></screen>
<para>It is important to note that the files in the kernel source directory are <para>It is important to note that the files in the kernel source directory are
not owned by <emphasis>root</emphasis>. Whenever you unpack a package as user not owned by <emphasis>root</emphasis>. Whenever you unpack a package as user

View File

@ -9,14 +9,8 @@
<?dbhtml filename="chapter09.html"?> <?dbhtml filename="chapter09.html"?>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="theend.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="theend.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="getcounted.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="getcounted.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="reboot.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="reboot.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="whatnow.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="whatnow.xml"/>
</chapter> </chapter>

View File

@ -15,7 +15,10 @@ your computer. First exit from the chroot environment:</para>
<para>Then unmount the virtual files systems:</para> <para>Then unmount the virtual files systems:</para>
<screen><userinput>umount $LFS/dev/pts <screen><userinput>umount $LFS/dev/pts
umount $LFS/proc</userinput></screen> umount $LFS/dev/shm
umount $LFS/dev
umount $LFS/proc
umount $LFS/sys</userinput></screen>
<para>And unmount the LFS file system:</para> <para>And unmount the LFS file system:</para>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="ISO-8859-1"?> <?xml version="1.0" encoding="ISO-8859-1"?>
<!ENTITY version "CVS-2004-05-03"> <!ENTITY version "CVS-2004-05-03">
<!ENTITY releasedate "May 3, 2004"> <!ENTITY releasedate "May 3, 2004">
<!ENTITY milestone "5.1"> <!ENTITY milestone "6.0">
<!ENTITY lfs-root "http://www.linuxfromscratch.org/"> <!ENTITY lfs-root "http://www.linuxfromscratch.org/">
<!ENTITY blfs-root "&lfs-root;blfs/"> <!ENTITY blfs-root "&lfs-root;blfs/">
@ -19,24 +19,22 @@
<!ENTITY autoconf-version "2.59"> <!ENTITY autoconf-version "2.59">
<!ENTITY automake-version "1.8.4"> <!ENTITY automake-version "1.8.4">
<!ENTITY bash-version "2.05b"> <!ENTITY bash-version "2.05b">
<!ENTITY binutils-version "2.14"> <!ENTITY binutils-version "2.15.90.0.3">
<!ENTITY bison-version "1.875"> <!ENTITY bison-version "1.875a">
<!ENTITY bootscripts-version "2.0.4"> <!ENTITY bootscripts-version "2.0.4">
<!ENTITY bzip2-version "1.0.2"> <!ENTITY bzip2-version "1.0.2">
<!ENTITY coreutils-version "5.2.1"> <!ENTITY coreutils-version "5.2.1">
<!ENTITY dejagnu-version "1.4.4"> <!ENTITY dejagnu-version "1.4.4">
<!ENTITY diffutils-version "2.8.1"> <!ENTITY diffutils-version "2.8.1">
<!ENTITY e2fsprogs-version "1.35"> <!ENTITY e2fsprogs-version "1.35">
<!ENTITY ed-version "0.2">
<!ENTITY expect-version "5.41.0"> <!ENTITY expect-version "5.41.0">
<!ENTITY file-version "4.09"> <!ENTITY file-version "4.09">
<!ENTITY findutils-version "4.1.20"> <!ENTITY findutils-version "4.1.20">
<!ENTITY flex-version "2.5.4a"> <!ENTITY flex-version "2.5.31">
<!ENTITY gawk-version "3.1.3"> <!ENTITY gawk-version "3.1.3">
<!ENTITY gcc-2953-version "2.95.3">
<!ENTITY gcc-version "3.3.3"> <!ENTITY gcc-version "3.3.3">
<!ENTITY gettext-version "0.14.1"> <!ENTITY gettext-version "0.14.1">
<!ENTITY glibc-version "2.3.3"> <!ENTITY glibc-version "2.3.4-20040408">
<!ENTITY grep-version "2.5.1"> <!ENTITY grep-version "2.5.1">
<!ENTITY groff-version "1.19"> <!ENTITY groff-version "1.19">
<!ENTITY grub-version "0.94"> <!ENTITY grub-version "0.94">
@ -46,19 +44,18 @@
<!ENTITY kbd-version "1.12"> <!ENTITY kbd-version "1.12">
<!ENTITY less-version "382"> <!ENTITY less-version "382">
<!ENTITY libtool-version "1.5.6"> <!ENTITY libtool-version "1.5.6">
<!ENTITY linux-version "2.4.26"> <!ENTITY linux-version "2.6.5">
<!ENTITY linux-libc-headers-version "2.6.5.1">
<!ENTITY m4-version "1.4"> <!ENTITY m4-version "1.4">
<!ENTITY makedev-version "1.2">
<!ENTITY make-version "3.80"> <!ENTITY make-version "3.80">
<!ENTITY man-version "1.5m2"> <!ENTITY man-version "1.5m2">
<!ENTITY man-pages-version "1.66"> <!ENTITY man-pages-version "1.66">
<!ENTITY mktemp-version "1.5"> <!ENTITY mktemp-version "1.5">
<!ENTITY modutils-version "2.4.27"> <!ENTITY module-init-tools-version "3.0">
<!ENTITY ncurses-version "5.4"> <!ENTITY ncurses-version "5.4">
<!ENTITY net-tools-version "1.60"> <!ENTITY net-tools-version "1.60">
<!ENTITY patch-version "2.5.4"> <!ENTITY patch-version "2.5.4">
<!ENTITY perl-version "5.8.4"> <!ENTITY perl-version "5.8.4">
<!ENTITY procinfo-version "18">
<!ENTITY procps-version "3.2.1"> <!ENTITY procps-version "3.2.1">
<!ENTITY psmisc-version "21.4"> <!ENTITY psmisc-version "21.4">
<!ENTITY sed-version "4.0.9"> <!ENTITY sed-version "4.0.9">
@ -69,5 +66,6 @@
<!ENTITY tcl-version "8.4.6"> <!ENTITY tcl-version "8.4.6">
<!ENTITY texinfo-version "4.7"> <!ENTITY texinfo-version "4.7">
<!ENTITY util-linux-version "2.12a"> <!ENTITY util-linux-version "2.12a">
<!ENTITY udev-version "025">
<!ENTITY vim-version "6.2"> <!ENTITY vim-version "6.2">
<!ENTITY zlib-version "1.2.1"> <!ENTITY zlib-version "1.2.1">

View File

@ -6,10 +6,7 @@
<book> <book>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="prologue/bookinfo.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="prologue/bookinfo.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="prologue/dedication.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="prologue/dedication.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="prologue/preface.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="prologue/preface.xml"/>
@ -17,38 +14,24 @@
<title>Introduction</title> <title>Introduction</title>
<?dbhtml filename="part1.html"?> <?dbhtml filename="part1.html"?>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="chapter01/chapter01.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="chapter01/chapter01.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="chapter02/chapter02.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="chapter02/chapter02.xml"/>
</part> </part>
<part id="part2"> <part id="part2">
<title>Preparing for the build</title> <title>Preparing for the build</title>
<?dbhtml filename="part2.html"?> <?dbhtml filename="part2.html"?>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="chapter03/chapter03.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="chapter03/chapter03.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="chapter04/chapter04.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="chapter04/chapter04.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="chapter05/chapter05.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="chapter05/chapter05.xml"/>
</part> </part>
<part id="part3"> <part id="part3">
<title>Building the LFS system</title> <title>Building the LFS system</title>
<?dbhtml filename="part3.html"?> <?dbhtml filename="part3.html"?>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="chapter06/chapter06.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="chapter06/chapter06.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="chapter07/chapter07.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="chapter07/chapter07.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="chapter08/chapter08.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="chapter08/chapter08.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="chapter09/chapter09.xml"/> <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="chapter09/chapter09.xml"/>
</part> </part>
<index/> <index/>