diff options
author | Gerard Beekmans <gerard@linuxfromscratch.org> | 2001-01-24 00:31:17 +0000 |
---|---|---|
committer | Gerard Beekmans <gerard@linuxfromscratch.org> | 2001-01-24 00:31:17 +0000 |
commit | 6370fa6cff0ec2a8ac8d50d1595ec9500f6631c9 (patch) | |
tree | b17c8cb0a839b76f4a7db0f771953caa11c3a04e | |
parent | 5c930fe6eb43d23cfa0de2451d9a905a8505f981 (diff) |
Initial commit - LFS 2.4.4 files
git-svn-id: http://svn.linuxfromscratch.org/LFS/trunk/BOOK@14 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689
472 files changed, 13829 insertions, 0 deletions
diff --git a/Attic/appendixc/appendixc.sgml b/Attic/appendixc/appendixc.sgml new file mode 100644 index 000000000..6a93ee69d --- /dev/null +++ b/Attic/appendixc/appendixc.sgml @@ -0,0 +1,7 @@ +<appendix id="appendixc"> +<title>Official download locations</title> + +&ac-introduction; +&ac-packages; + +</appendix> diff --git a/Attic/appendixc/autoconf.sgml b/Attic/appendixc/autoconf.sgml new file mode 100644 index 000000000..b80a85e37 --- /dev/null +++ b/Attic/appendixc/autoconf.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Autoconf (2.13): + <ulink +url="ftp://ftp.gnu.org/gnu/autoconf/"> +ftp://ftp.gnu.org/gnu/autoconf/</ulink> + +</para></listitem> + diff --git a/Attic/appendixc/automake.sgml b/Attic/appendixc/automake.sgml new file mode 100644 index 000000000..c31cb4239 --- /dev/null +++ b/Attic/appendixc/automake.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Automake (1.4): + <ulink +url="ftp://ftp.gnu.org/gnu/automake/"> +ftp://ftp.gnu.org/gnu/automake/</ulink> + +</para></listitem> + diff --git a/Attic/appendixc/bash.sgml b/Attic/appendixc/bash.sgml new file mode 100644 index 000000000..ef046430e --- /dev/null +++ b/Attic/appendixc/bash.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Bash (2.04): + <ulink +url="ftp://ftp.gnu.org/gnu/bash/"> +ftp://ftp.gnu.org/gnu/bash/</ulink> + +</para></listitem> + diff --git a/Attic/appendixc/bin86.sgml b/Attic/appendixc/bin86.sgml new file mode 100644 index 000000000..1dfc52c5c --- /dev/null +++ b/Attic/appendixc/bin86.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Bin86 (0.15.4): + <ulink +url="http://www.cix.co.uk/~mayday/"> +http://www.cix.co.uk/~mayday/</ulink> + +</para></listitem> + diff --git a/Attic/appendixc/binutils.sgml b/Attic/appendixc/binutils.sgml new file mode 100644 index 000000000..f07f8c9d1 --- /dev/null +++ b/Attic/appendixc/binutils.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Binutils (2.10.1): + <ulink +url="ftp://ftp.gnu.org/gnu/binutils/"> +ftp://ftp.gnu.org/gnu/binutils/</ulink> + +</para></listitem> + diff --git a/Attic/appendixc/bison.sgml b/Attic/appendixc/bison.sgml new file mode 100644 index 000000000..bf368be74 --- /dev/null +++ b/Attic/appendixc/bison.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Bison (1.28): + <ulink +url="ftp://ftp.gnu.org/gnu/bison/"> +ftp://ftp.gnu.org/gnu/bison/</ulink> + +</para></listitem> + diff --git a/Attic/appendixc/bzip2.sgml b/Attic/appendixc/bzip2.sgml new file mode 100644 index 000000000..551d61b92 --- /dev/null +++ b/Attic/appendixc/bzip2.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Bzip2 (1.0.1): + <ulink +url="ftp://sourceware.cygnus.com/pub/bzip2/"> +ftp://sourceware.cygnus.com/pub/bzip2/</ulink> + +</para></listitem> + diff --git a/Attic/appendixc/consoledata.sgml b/Attic/appendixc/consoledata.sgml new file mode 100644 index 000000000..33e061877 --- /dev/null +++ b/Attic/appendixc/consoledata.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Console-data (1999.08.29): + <ulink +url="ftp://metalab.unc.edu/pub/Linux/system/keyboards/"> +ftp://metalab.unc.edu/pub/Linux/system/keyboards/</ulink> + +</para></listitem> + diff --git a/Attic/appendixc/consoletools-patch.sgml b/Attic/appendixc/consoletools-patch.sgml new file mode 100644 index 000000000..e3208d723 --- /dev/null +++ b/Attic/appendixc/consoletools-patch.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Console-tools Patch (0.2.3): + <ulink +url="ftp://packages.linuxfromscratch.org/pub/common-packages"> +ftp://packages.linuxfromscratch.org/pub/common-packages</ulink> + +</para></listitem> + diff --git a/Attic/appendixc/consoletools.sgml b/Attic/appendixc/consoletools.sgml new file mode 100644 index 000000000..7b7cfd55b --- /dev/null +++ b/Attic/appendixc/consoletools.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Console-tools (0.2.3): + <ulink +url="ftp://metalab.unc.edu/pub/Linux/system/keyboards/"> +ftp://metalab.unc.edu/pub/Linux/system/keyboards/</ulink> + +</para></listitem> + diff --git a/Attic/appendixc/diffutils.sgml b/Attic/appendixc/diffutils.sgml new file mode 100644 index 000000000..611fa7416 --- /dev/null +++ b/Attic/appendixc/diffutils.sgml @@ -0,0 +1,8 @@ +<listitem><para> + +Diff Utils (2.7): + <ulink url="ftp://ftp.gnu.org/gnu/diffutils/"> +ftp://ftp.gnu.org/gnu/diffutils/</ulink> + +</para></listitem> + diff --git a/Attic/appendixc/e2fsprogs.sgml b/Attic/appendixc/e2fsprogs.sgml new file mode 100644 index 000000000..45abb0b86 --- /dev/null +++ b/Attic/appendixc/e2fsprogs.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +E2fsprogs (1.19): + <ulink +url="ftp://download.sourceforge.net/pub/sourceforge/e2fsprogs/"> +ftp://download.sourceforge.net/pub/sourceforge/e2fsprogs/</ulink> + +</para></listitem> + diff --git a/Attic/appendixc/ed.sgml b/Attic/appendixc/ed.sgml new file mode 100644 index 000000000..5859e93b4 --- /dev/null +++ b/Attic/appendixc/ed.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Ed (0.2): + <ulink +url="ftp://ftp.gnu.org/gnu/ed/"> +ftp://ftp.gnu.org/gnu/ed/</ulink> + +</para></listitem> + diff --git a/Attic/appendixc/file.sgml b/Attic/appendixc/file.sgml new file mode 100644 index 000000000..d5a77c336 --- /dev/null +++ b/Attic/appendixc/file.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +File (3.33): + <ulink +url="ftp://ftp.gw.com/mirrors/pub/unix/file/"> +ftp://ftp.gw.com/mirrors/pub/unix/file/</ulink> + +</para></listitem> + diff --git a/Attic/appendixc/fileutils.sgml b/Attic/appendixc/fileutils.sgml new file mode 100644 index 000000000..b1b36a651 --- /dev/null +++ b/Attic/appendixc/fileutils.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +File Utils (4.0): + <ulink +url="ftp://ftp.gnu.org/gnu/fileutils/"> +ftp://ftp.gnu.org/gnu/fileutils/</ulink> + +</para></listitem> + diff --git a/Attic/appendixc/findutils-patch.sgml b/Attic/appendixc/findutils-patch.sgml new file mode 100644 index 000000000..c2662f287 --- /dev/null +++ b/Attic/appendixc/findutils-patch.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Find Utils Patch (4.1): + <ulink +url="ftp://packages.linuxfromscratch.org/pub/common-packages"> +ftp://packages.linuxfromscratch.org/pub/common-packages</ulink> + +</para></listitem> + diff --git a/Attic/appendixc/findutils.sgml b/Attic/appendixc/findutils.sgml new file mode 100644 index 000000000..02db1bf05 --- /dev/null +++ b/Attic/appendixc/findutils.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Find Utils (4.1): + <ulink +url="ftp://ftp.gnu.org/gnu/findutils/"> +ftp://ftp.gnu.org/gnu/findutils/</ulink> + +</para></listitem> + diff --git a/Attic/appendixc/flex.sgml b/Attic/appendixc/flex.sgml new file mode 100644 index 000000000..2a46caecb --- /dev/null +++ b/Attic/appendixc/flex.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Flex (2.5.4a): + <ulink +url="ftp://ftp.gnu.org/non-gnu/flex/"> +ftp://ftp.gnu.org/non-gnu/flex/</ulink> + +</para></listitem> + diff --git a/Attic/appendixc/gcc.sgml b/Attic/appendixc/gcc.sgml new file mode 100644 index 000000000..4a469b5d9 --- /dev/null +++ b/Attic/appendixc/gcc.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +GCC (2.95.2): + <ulink +url="ftp://ftp.gnu.org/gnu/gcc/"> +ftp://ftp.gnu.org/gnu/gcc/</ulink> + +</para></listitem> + diff --git a/Attic/appendixc/gettext.sgml b/Attic/appendixc/gettext.sgml new file mode 100644 index 000000000..65895193f --- /dev/null +++ b/Attic/appendixc/gettext.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Gettext (0.10.35): + <ulink +url="ftp://ftp.gnu.org/gnu/gettext/"> +ftp://ftp.gnu.org/gnu/gettext/</ulink> + +</para></listitem> + diff --git a/Attic/appendixc/glibc-crypt.sgml b/Attic/appendixc/glibc-crypt.sgml new file mode 100644 index 000000000..66febf3e5 --- /dev/null +++ b/Attic/appendixc/glibc-crypt.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Glibc-crypt (2.1.3): + <ulink +url="ftp://ftp.gnu.org/gnu/glibc/"> +ftp://ftp.gnu.org/gnu/glibc/</ulink> + +</para></listitem> + diff --git a/Attic/appendixc/glibc-patch.sgml b/Attic/appendixc/glibc-patch.sgml new file mode 100644 index 000000000..fb0ed1e7e --- /dev/null +++ b/Attic/appendixc/glibc-patch.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Glibc Patch (2.1.3): + <ulink +url="ftp://packages.linuxfromscratch.org/pub/common-packages"> +ftp://packages.linuxfromscratch.org/pub/common-packages</ulink> + +</para></listitem> + diff --git a/Attic/appendixc/glibc-threads.sgml b/Attic/appendixc/glibc-threads.sgml new file mode 100644 index 000000000..ec8f061b5 --- /dev/null +++ b/Attic/appendixc/glibc-threads.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Glibc-linuxthreads (2.1.3): + <ulink +url="ftp://ftp.gnu.org/gnu/glibc/"> +ftp://ftp.gnu.org/gnu/glibc/</ulink> + +</para></listitem> + diff --git a/Attic/appendixc/glibc.sgml b/Attic/appendixc/glibc.sgml new file mode 100644 index 000000000..85c46fbf4 --- /dev/null +++ b/Attic/appendixc/glibc.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Glibc (2.1.3): + <ulink +url="ftp://ftp.gnu.org/gnu/glibc/"> +ftp://ftp.gnu.org/gnu/glibc/</ulink> + +</para></listitem> + diff --git a/Attic/appendixc/grep.sgml b/Attic/appendixc/grep.sgml new file mode 100644 index 000000000..f56484223 --- /dev/null +++ b/Attic/appendixc/grep.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Grep (2.4.2): + <ulink +url="ftp://ftp.gnu.org/gnu/grep/"> +ftp://ftp.gnu.org/gnu/grep/</ulink> + +</para></listitem> + diff --git a/Attic/appendixc/groff.sgml b/Attic/appendixc/groff.sgml new file mode 100644 index 000000000..5aa189164 --- /dev/null +++ b/Attic/appendixc/groff.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Groff (1.16.1): + <ulink +url="ftp://ftp.gnu.org/gnu/groff/"> +ftp://ftp.gnu.org/gnu/groff/</ulink> + +</para></listitem> + diff --git a/Attic/appendixc/gzip.sgml b/Attic/appendixc/gzip.sgml new file mode 100644 index 000000000..784490f90 --- /dev/null +++ b/Attic/appendixc/gzip.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Gzip (1.2.4a): + <ulink +url="ftp://ftp.gnu.org/gnu/gzip/"> +ftp://ftp.gnu.org/gnu/gzip/</ulink> + +</para></listitem> + diff --git a/Attic/appendixc/introduction.sgml b/Attic/appendixc/introduction.sgml new file mode 100644 index 000000000..91fb7e2e4 --- /dev/null +++ b/Attic/appendixc/introduction.sgml @@ -0,0 +1,7 @@ +<para> +Below you find the list with packages from chapter 3 with their original +download locations. This might help you to find a newer version of a +package quicker. +</para> + + diff --git a/Attic/appendixc/kernel.sgml b/Attic/appendixc/kernel.sgml new file mode 100644 index 000000000..9f49862b7 --- /dev/null +++ b/Attic/appendixc/kernel.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Linux Kernel (2.2.18): + <ulink +url="ftp://ftp.kernel.org/pub/linux/kernel/"> +ftp://ftp.kernel.org/pub/linux/kernel/</ulink> + +</para></listitem> + diff --git a/Attic/appendixc/ldso.sgml b/Attic/appendixc/ldso.sgml new file mode 100644 index 000000000..f8fe775fc --- /dev/null +++ b/Attic/appendixc/ldso.sgml @@ -0,0 +1,7 @@ +<listitem><para> +Ld.so (1.9.9): + <ulink +url="ftp://packages.linuxfromscratch.org/pub/common-packages"> + ftp://packages.linuxfromscratch.org/pub/common-packages</ulink> +</para></listitem> + diff --git a/Attic/appendixc/less.sgml b/Attic/appendixc/less.sgml new file mode 100644 index 000000000..875bfc4ce --- /dev/null +++ b/Attic/appendixc/less.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Less (358): + <ulink +url="ftp://ftp.gnu.org/gnu/less/"> +ftp://ftp.gnu.org/gnu/less/</ulink> + +</para></listitem> + diff --git a/Attic/appendixc/libtool.sgml b/Attic/appendixc/libtool.sgml new file mode 100644 index 000000000..b946713b9 --- /dev/null +++ b/Attic/appendixc/libtool.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Libtool (1.3.5): + <ulink +url="ftp://ftp.gnu.org/gnu/libtool/"> +ftp://ftp.gnu.org/gnu/libtool/</ulink> + +</para></listitem> + diff --git a/Attic/appendixc/lilo.sgml b/Attic/appendixc/lilo.sgml new file mode 100644 index 000000000..f6b7f19fe --- /dev/null +++ b/Attic/appendixc/lilo.sgml @@ -0,0 +1,8 @@ +<listitem><para> +Lilo (21.6): + <ulink +url="ftp://brun.dyndns.org/pub/linux/lilo"> +ftp://brun.dyndns.org/pub/linux/lilo</ulink> + +</para></listitem> + diff --git a/Attic/appendixc/m4.sgml b/Attic/appendixc/m4.sgml new file mode 100644 index 000000000..3a1db8ec0 --- /dev/null +++ b/Attic/appendixc/m4.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +M4 (1.4): + <ulink +url="ftp://ftp.gnu.org/gnu/m4/"> +ftp://ftp.gnu.org/gnu/m4/</ulink> + +</para></listitem> + diff --git a/Attic/appendixc/make.sgml b/Attic/appendixc/make.sgml new file mode 100644 index 000000000..104b9095e --- /dev/null +++ b/Attic/appendixc/make.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Make (3.79.1): + <ulink +url="ftp://ftp.gnu.org/gnu/make/"> +ftp://ftp.gnu.org/gnu/make/</ulink> + +</para></listitem> + diff --git a/Attic/appendixc/makedev.sgml b/Attic/appendixc/makedev.sgml new file mode 100644 index 000000000..25bd6534c --- /dev/null +++ b/Attic/appendixc/makedev.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +MAKEDEV (2.5): + <ulink +url="ftp://ftp.ihg.uni-duisburg.de/Linux/system/"> +ftp://ftp.ihg.uni-duisburg.de/Linux/system/</ulink> + +</para></listitem> + diff --git a/Attic/appendixc/man.sgml b/Attic/appendixc/man.sgml new file mode 100644 index 000000000..38d5bc14e --- /dev/null +++ b/Attic/appendixc/man.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Man (1.5h1): + <ulink +url="ftp://ftp.win.tue.nl/pub/linux-local/utils/man/"> +ftp://ftp.win.tue.nl/pub/linux-local/utils/man/</ulink> + +</para></listitem> + diff --git a/Attic/appendixc/manpages.sgml b/Attic/appendixc/manpages.sgml new file mode 100644 index 000000000..28a922bb4 --- /dev/null +++ b/Attic/appendixc/manpages.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Man-pages (1.33): + <ulink +url="ftp://ftp.win.tue.nl/pub/linux-local/manpages/"> +ftp://ftp.win.tue.nl/pub/linux-local/manpages/</ulink> + +</para></listitem> + diff --git a/Attic/appendixc/mawk.sgml b/Attic/appendixc/mawk.sgml new file mode 100644 index 000000000..f87166c73 --- /dev/null +++ b/Attic/appendixc/mawk.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Mawk (1.3.3): + <ulink +url="ftp://ftp.whidbey.net/pub/brennan/"> +ftp://ftp.whidbey.net/pub/brennan/</ulink> + +</para></listitem> + diff --git a/Attic/appendixc/modutils.sgml b/Attic/appendixc/modutils.sgml new file mode 100644 index 000000000..081831e97 --- /dev/null +++ b/Attic/appendixc/modutils.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Modutils (2.4.0): + <ulink +url="ftp://ftp.kernel.org/pub/linux/utils/kernel/modutils"> +ftp://ftp.kernel.org/pub/linux/utils/kernel/modutils</ulink> + +</para></listitem> + diff --git a/Attic/appendixc/ncurses.sgml b/Attic/appendixc/ncurses.sgml new file mode 100644 index 000000000..b30b198d1 --- /dev/null +++ b/Attic/appendixc/ncurses.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Ncurses (5.2): + <ulink +url="ftp://ftp.gnu.org/gnu/ncurses/"> +ftp://ftp.gnu.org/gnu/ncurses/</ulink> + +</para></listitem> + diff --git a/Attic/appendixc/netkitbase.sgml b/Attic/appendixc/netkitbase.sgml new file mode 100644 index 000000000..8b2542d19 --- /dev/null +++ b/Attic/appendixc/netkitbase.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Netkit-base (0.17): + <ulink +url="ftp://ftp.uk.linux.org/pub/linux/Networking/netkit/"> +ftp://ftp.uk.linux.org/pub/linux/Networking/netkit/</ulink> + +</para></listitem> + diff --git a/Attic/appendixc/nettools.sgml b/Attic/appendixc/nettools.sgml new file mode 100644 index 000000000..aa00c2cf7 --- /dev/null +++ b/Attic/appendixc/nettools.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Net-tools (1.57): + <ulink +url="http://www.tazenda.demon.co.uk/phil/net-tools/"> +http://www.tazenda.demon.co.uk/phil/net-tools/</ulink> + +</para></listitem> + diff --git a/Attic/appendixc/packages.sgml b/Attic/appendixc/packages.sgml new file mode 100644 index 000000000..d81ded873 --- /dev/null +++ b/Attic/appendixc/packages.sgml @@ -0,0 +1,65 @@ +<itemizedlist> + +&ac-bash; +&ac-binutils; +&ac-bzip2; +&ac-diffutils; +&ac-fileutils; +&ac-gcc; +&ac-kernel; +&ac-glibc; +&ac-glibc-crypt; +&ac-glibc-threads; +&ac-glibc-patch; +&ac-grep; +&ac-gzip; +&ac-make; +&ac-sed; +&ac-shellutils; +&ac-tar; +&ac-tar-patch; +&ac-textutils; +&ac-makedev; +&ac-bison; +&ac-mawk; +&ac-patch; +&ac-findutils; +&ac-findutils-patch; +&ac-ncurses; +&ac-less; +&ac-groff; +&ac-man; +&ac-perl; +&ac-m4; +&ac-texinfo; +&ac-autoconf; +&ac-automake; +&ac-flex; +&ac-file; +&ac-libtool; +&ac-bin86; +&ac-gettext; +&ac-consoletools; +&ac-consoletools-patch; +&ac-consoledata; +&ac-e2fsprogs; +&ac-ed; +&ac-ldso; +&ac-lilo; +&ac-modutils; +&ac-vim; +&ac-procinfo; +&ac-procps; +&ac-psmisc; +&ac-shadowpwd; +&ac-sysklogd; +&ac-sysklogd-patch; +&ac-sysvinit; +&ac-sysvinit-patch; +&ac-utillinux; +&ac-manpages; +&ac-netkitbase; +&ac-nettools; + +</itemizedlist> + diff --git a/Attic/appendixc/patch.sgml b/Attic/appendixc/patch.sgml new file mode 100644 index 000000000..ee13d8d92 --- /dev/null +++ b/Attic/appendixc/patch.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Patch (2.5.4): + <ulink +url="ftp://ftp.gnu.org/gnu/patch/"> +ftp://ftp.gnu.org/gnu/patch/</ulink> + +</para></listitem> + diff --git a/Attic/appendixc/perl.sgml b/Attic/appendixc/perl.sgml new file mode 100644 index 000000000..42cabfc4e --- /dev/null +++ b/Attic/appendixc/perl.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Perl (5.6.0): + <ulink +url="http://www.perl.com"> +http://www.perl.com</ulink> + +</para></listitem> + diff --git a/Attic/appendixc/procinfo.sgml b/Attic/appendixc/procinfo.sgml new file mode 100644 index 000000000..ce1188a4e --- /dev/null +++ b/Attic/appendixc/procinfo.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Procinfo (17): + <ulink +url="ftp://ftp.cistron.nl/pub/people/svm/"> +ftp://ftp.cistron.nl/pub/people/svm/</ulink> + +</para></listitem> + diff --git a/Attic/appendixc/procps.sgml b/Attic/appendixc/procps.sgml new file mode 100644 index 000000000..58b526bee --- /dev/null +++ b/Attic/appendixc/procps.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Procps (2.0.7): + <ulink +url="ftp://people.redhat.com/johnsonm/procps/"> +ftp://people.redhat.com/johnsonm/procps/</ulink> + +</para></listitem> + diff --git a/Attic/appendixc/psmisc.sgml b/Attic/appendixc/psmisc.sgml new file mode 100644 index 000000000..a2e1a6b55 --- /dev/null +++ b/Attic/appendixc/psmisc.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Psmisc (19): + <ulink +url="ftp://lrcftp.epfl.ch/pub/linux/local/psmisc/"> +ftp://lrcftp.epfl.ch/pub/linux/local/psmisc/</ulink> + +</para></listitem> + diff --git a/Attic/appendixc/sed.sgml b/Attic/appendixc/sed.sgml new file mode 100644 index 000000000..cc6e14f99 --- /dev/null +++ b/Attic/appendixc/sed.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Sed (3.02): + <ulink +url="ftp://ftp.gnu.org/gnu/sed/"> +ftp://ftp.gnu.org/gnu/sed/</ulink> + +</para></listitem> + diff --git a/Attic/appendixc/shadowpwd.sgml b/Attic/appendixc/shadowpwd.sgml new file mode 100644 index 000000000..bd89de909 --- /dev/null +++ b/Attic/appendixc/shadowpwd.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Shadow Password Suite (20000902): + <ulink +url="ftp://ftp.ists.pwr.wroc.pl/pub/linux/shadow/"> +ftp://ftp.ists.pwr.wroc.pl/pub/linux/shadow/</ulink> + +</para></listitem> + diff --git a/Attic/appendixc/shellutils.sgml b/Attic/appendixc/shellutils.sgml new file mode 100644 index 000000000..d2f1c8617 --- /dev/null +++ b/Attic/appendixc/shellutils.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Sh-utils (2.0): + <ulink +url="ftp://ftp.gnu.org/gnu/sh-utils/"> +ftp://ftp.gnu.org/gnu/sh-utils/</ulink> + +</para></listitem> + diff --git a/Attic/appendixc/sysklogd-patch.sgml b/Attic/appendixc/sysklogd-patch.sgml new file mode 100644 index 000000000..4405d535a --- /dev/null +++ b/Attic/appendixc/sysklogd-patch.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Sysklogd Patch (1.4): + <ulink +url="ftp://packages.linuxfromscratch.org/pub/common-packages/"> +ftp://packages.linuxfromscratch.org/pub/common-packages/</ulink> + +</para></listitem> + diff --git a/Attic/appendixc/sysklogd.sgml b/Attic/appendixc/sysklogd.sgml new file mode 100644 index 000000000..7caaf2e82 --- /dev/null +++ b/Attic/appendixc/sysklogd.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Sysklogd (1.4): + <ulink +url="ftp://sunsite.unc.edu/pub/Linux/system/daemons/"> +ftp://sunsite.unc.edu/pub/Linux/system/daemons/</ulink> + +</para></listitem> + diff --git a/Attic/appendixc/sysvinit-patch.sgml b/Attic/appendixc/sysvinit-patch.sgml new file mode 100644 index 000000000..b3f9b5f12 --- /dev/null +++ b/Attic/appendixc/sysvinit-patch.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Sysvinit Patch (2.78): + <ulink +url="ftp://packages.linuxfromscratch.org/pub/common-packages/"> +ftp://packages.linuxfromscratch.org/pub/common-packages/</ulink> + +</para></listitem> + diff --git a/Attic/appendixc/sysvinit.sgml b/Attic/appendixc/sysvinit.sgml new file mode 100644 index 000000000..479e96817 --- /dev/null +++ b/Attic/appendixc/sysvinit.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Sysvinit (2.78): + <ulink +url="ftp://ftp.cistron.nl/pub/people/miquels/sysvinit/"> +ftp://ftp.cistron.nl/pub/people/miquels/sysvinit/</ulink> + +</para></listitem> + diff --git a/Attic/appendixc/tar-patch.sgml b/Attic/appendixc/tar-patch.sgml new file mode 100644 index 000000000..45bed7974 --- /dev/null +++ b/Attic/appendixc/tar-patch.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Tar Patch (1.13): + <ulink +url="http://sourceware.cygnus.com/bzip2/"> +http://sourceware.cygnus.com/bzip2/</ulink> + +</para></listitem> + diff --git a/Attic/appendixc/tar.sgml b/Attic/appendixc/tar.sgml new file mode 100644 index 000000000..e2ac336ab --- /dev/null +++ b/Attic/appendixc/tar.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Tar (1.13): + <ulink +url="ftp://ftp.gnu.org/gnu/tar/"> +ftp://ftp.gnu.org/gnu/tar/</ulink> + +</para></listitem> + diff --git a/Attic/appendixc/texinfo.sgml b/Attic/appendixc/texinfo.sgml new file mode 100644 index 000000000..8e09e80c8 --- /dev/null +++ b/Attic/appendixc/texinfo.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Texinfo (4.0): + <ulink +url="ftp://ftp.gnu.org/gnu/texinfo/"> +ftp://ftp.gnu.org/gnu/texinfo/</ulink> + +</para></listitem> + diff --git a/Attic/appendixc/textutils.sgml b/Attic/appendixc/textutils.sgml new file mode 100644 index 000000000..ab6a19c1c --- /dev/null +++ b/Attic/appendixc/textutils.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Text Utils (2.0): + <ulink +url="ftp://ftp.gnu.org/gnu/textutils/"> +ftp://ftp.gnu.org/gnu/textutils/</ulink> + +</para></listitem> + diff --git a/Attic/appendixc/toplevel.sgml b/Attic/appendixc/toplevel.sgml new file mode 100644 index 000000000..fd03dbf4e --- /dev/null +++ b/Attic/appendixc/toplevel.sgml @@ -0,0 +1,16 @@ +<listitem><para> + +Browse FTP: + <ulink +url="ftp://ftp.linuxfromscratch.org/">ftp://ftp.linuxfromscratch.org</ulink> + +</para></listitem> + +<listitem><para> + +Browse HTTP: + <ulink +url="http://ftp.linuxfromscratch.org/">http://ftp.linuxfromscratch.org</ulink> + +</para></listitem> + diff --git a/Attic/appendixc/utillinux.sgml b/Attic/appendixc/utillinux.sgml new file mode 100644 index 000000000..ddc020ed2 --- /dev/null +++ b/Attic/appendixc/utillinux.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Util Linux (2.10r): + <ulink +url="ftp://ftp.win.tue.nl/pub/linux-local/utils/util-linux/"> +ftp://ftp.win.tue.nl/pub/linux-local/utils/util-linux/</ulink> + +</para></listitem> + diff --git a/Attic/appendixc/vim.sgml b/Attic/appendixc/vim.sgml new file mode 100644 index 000000000..9b3dd2bb0 --- /dev/null +++ b/Attic/appendixc/vim.sgml @@ -0,0 +1,16 @@ +<listitem><para> + +Vim-rt (5.7) 1,073 KB: + <ulink +url="ftp://ftp.vim.org/pub/editors/vim/unix/"> +ftp://ftp.vim.org/pub/editors/vim/unix/</ulink> + +</para></listitem> + +<listitem><para> +Vim-src (5.7) 1,202 KB: + <ulink +url="ftp://ftp.vim.org/pub/editors/vim/unix/"> +ftp://ftp.vim.org/pub/editors/vim/unix/</ulink> + +</para></listitem> diff --git a/appendixa/appendixa.sgml b/appendixa/appendixa.sgml new file mode 100644 index 000000000..258303dfa --- /dev/null +++ b/appendixa/appendixa.sgml @@ -0,0 +1,55 @@ +<appendix id="appendixa"> +<title>Package descriptions</title> + +&aa-introduction; +&aa-glibc; +&aa-kernel; +&aa-ed; +&aa-patch; +&aa-gcc; +&aa-bison; +&aa-mawk; +&aa-findutils; +&aa-ncurses; +&aa-less; +&aa-groff; +&aa-man; +&aa-perl; +&aa-m4; +&aa-texinfo; +&aa-autoconf; +&aa-automake; +&aa-bash; +&aa-flex; +&aa-binutils; +&aa-bzip2; +&aa-diffutils; +&aa-e2fsprogs; +&aa-file; +&aa-fileutils; +&aa-gettext; +&aa-grep; +&aa-gzip; +&aa-ldso; +&aa-libtool; +&aa-bin86; +&aa-lilo; +&aa-make; +&aa-shellutils; +&aa-shadowpwd; +&aa-modutils; +&aa-procinfo; +&aa-procps; +&aa-vim; +&aa-psmisc; +&aa-sed; +&aa-sysklogd; +&aa-sysvinit; +&aa-tar; +&aa-textutils; +&aa-utillinux; +&aa-consoletools; +&aa-consoledata; +&aa-manpages; + +</appendix> diff --git a/appendixa/autoconf-desc.sgml b/appendixa/autoconf-desc.sgml new file mode 100644 index 000000000..b6d2f3554 --- /dev/null +++ b/appendixa/autoconf-desc.sgml @@ -0,0 +1,82 @@ +<sect2> +<title>Contents</title> + +<para> +The Autoconf package contains the autoconf, autoheader, autoreconf, +autoscan, autoupdate and ifnames programs +</para> + +</sect2> + +<sect2><title>Description</title> + +<sect3><title>autoconf</title> + +<para> +Autoconf is a tool for producing shell scripts that automatically +configure software source code packages to adapt to many kinds of +UNIX-like systems. The configuration scripts produced by Autoconf are +independent of Autoconf when they are run, so their users do not need to +have Autoconf. +</para> + +</sect3> + +<sect3><title>autoheader</title> + +<para> +The autoheader program can create a template file of C #define +statements for configure to use +</para> + +</sect3> + +<sect3><title>autoreconf</title> + +<para> +If you have a lot of Autoconf-generated configure scripts, the +autoreconf program can save you some work. It runs autoconf (and +autoheader, where appropriate) repeatedly to remake the Autoconf +configure scripts and configuration header templates in the directory +tree rooted at the current directory. +</para> + +</sect3> + +<sect3><title>autoscan</title> + +<para> +The autoscan program can help you create a configure.in file for +a software package. autoscan examines source files in the directory +tree rooted at a directory given as a command line argument, or the +current directory if none is given. It searches the source files for +common portability problems and creates a file configure.scan which +is a preliminary configure.in for that package. +</para> + +</sect3> + +<sect3><title>autoupdate</title> + +<para> +The autoupdate program updates a configure.in file that calls +Autoconf macros by their old names to use the current macro names. +</para> + +</sect3> + +<sect3><title>ifnames</title> + +<para> +ifnames can help when writing a configure.in for a software +package. It prints the identifiers that the package already uses in C +preprocessor conditionals. If a package has already been set up to +have some portability, this program can help you figure out what its +configure needs to check for. It may help fill in some gaps in a +configure.in generated by autoscan. +</para> + +</sect3> + +</sect2> + diff --git a/appendixa/autoconf.sgml b/appendixa/autoconf.sgml new file mode 100644 index 000000000..f9c765090 --- /dev/null +++ b/appendixa/autoconf.sgml @@ -0,0 +1,7 @@ +<sect1 id="aa-autoconf"> +<title>Autoconf</title> + +&aa-autoconf-desc; + +</sect1> + diff --git a/appendixa/automake-desc.sgml b/appendixa/automake-desc.sgml new file mode 100644 index 000000000..97cc37327 --- /dev/null +++ b/appendixa/automake-desc.sgml @@ -0,0 +1,42 @@ +<sect2> +<title>Contents</title> + +<para> +The Automake package contains the aclocal and automake programs +</para> + +</sect2> + +<sect2><title>Description</title> + +<sect3><title>aclocal</title> + +<para> +Automake includes a number of Autoconf macros which can be used in +your package; some of them are actually required by Automake in certain +situations. These macros must be defined in your aclocal.m4; +otherwise they will not be seen by autoconf. +</para> + +<para> +The aclocal program will automatically generate aclocal.m4 files +based on the contents of configure.in. This provides a convenient +way to get Automake-provided macros, without having to search around. +Also, the aclocal mechanism is extensible for use by other packages. +</para> + +</sect3> + +<sect3><title>automake</title> + +<para> +To create all the Makefile.in's for a package, run the automake +program in the top level directory, with no arguments. automake will +automatically find each appropriate Makefile.am (by scanning +configure.in) and generate the corresponding Makefile.in. +</para> + +</sect3> + +</sect2> + diff --git a/appendixa/automake.sgml b/appendixa/automake.sgml new file mode 100644 index 000000000..aa27054fb --- /dev/null +++ b/appendixa/automake.sgml @@ -0,0 +1,7 @@ +<sect1 id="aa-automake"> +<title>Automake</title> + +&aa-automake-desc; + +</sect1> + diff --git a/appendixa/bash-desc.sgml b/appendixa/bash-desc.sgml new file mode 100644 index 000000000..6c1a7e225 --- /dev/null +++ b/appendixa/bash-desc.sgml @@ -0,0 +1,20 @@ +<sect2> +<title>Contents</title> + +<para> +The Bash package contains the bash program +</para> + +</sect2> + +<sect2><title>Description</title> + +<para> +Bash is the Bourne-Again SHell, which is a widely used command +interpreter on Unix systems. Bash is a program that reads from standard +input, the keyboard. You type something and the program will evaluate +what you have typed and do something with it, like running a program. +</para> + +</sect2> + diff --git a/appendixa/bash.sgml b/appendixa/bash.sgml new file mode 100644 index 000000000..410711ac4 --- /dev/null +++ b/appendixa/bash.sgml @@ -0,0 +1,7 @@ +<sect1 id="aa-bash"> +<title>Bash</title> + +&aa-bash-desc; + +</sect1> + diff --git a/appendixa/bin86-desc.sgml b/appendixa/bin86-desc.sgml new file mode 100644 index 000000000..6c5aa8b64 --- /dev/null +++ b/appendixa/bin86-desc.sgml @@ -0,0 +1,65 @@ +<sect2> +<title>Contents</title> + +<para> +The Bin86 contains the as86, as86_encap, ld86, objdump86, nm86 and +size86 programs. +</para> + +</sect2> + +<sect2><title>Description</title> + +<sect3><title>as86</title> + +<para> +as86 is an assembler for the 8086...80386 processors. +</para> + +</sect3> + +<sect3><title>as86_encap</title> + +<para> +as86_encap is a shell script to call as86 and convert the created binary +into a C file prog.v to be included in or linked with programs like boot +block installers. +</para> + +</sect3> + +<sect3><title>ld86</title> + +<para> +ld86 understands only the object files produced by the as86 assembler, it +can link them into either an impure or a separate I&D executable. +</para> + +</sect3> + +<sect3><title>objdump86</title> + +<para> +No description available. +</para> + +</sect3> + +<sect3><title>nm86</title> + +<para> +No description available. +</para> + +</sect3> + +<sect3><title>size86</title> + +<para> +No description available. +</para> + +</sect3> + +</sect2> + diff --git a/appendixa/bin86.sgml b/appendixa/bin86.sgml new file mode 100644 index 000000000..0da345b10 --- /dev/null +++ b/appendixa/bin86.sgml @@ -0,0 +1,7 @@ +<sect1 id="aa-bin86"> +<title>Bin86</title> + +&aa-bin86-desc; + +</sect1> + diff --git a/appendixa/binutils-desc.sgml b/appendixa/binutils-desc.sgml new file mode 100644 index 000000000..6211265cf --- /dev/null +++ b/appendixa/binutils-desc.sgml @@ -0,0 +1,156 @@ +<sect2> +<title>Description</title> + +<para> +The Binutils package contains the ld, as, ar, nm, objcopy, objdump, +ranlib, size, strings, strip, c++filt, addr2line and nlmconv programs +</para> + +</sect2> + +<sect2><title>Description</title> + +<sect3><title>ld</title> + +<para> +ld combines a number of object and archive files, relocates their data +and ties up symbol references. Often the last step in building a new compiled +program to run is a call to ld. +</para> + +</sect3> + +<sect3><title>as</title> + +<para> +as is primarily intended to assemble the output of the GNU C compiler gcc +for use by the linker ld. +</para> + +</sect3> + +<sect3><title>ar</title> + +<para> +The ar program creates, modifies, and extracts from archives. An archive is +a single file holding a collection of other files in a structure that makes +it possible to retrieve the original individual files (called members of +the archive). +</para> + +</sect3> + +<sect3><title>nm</title> + +<para> +nm lists the symbols from object files. +</para> + +</sect3> + +<sect3><title>objcopy</title> + +<para> +objcopy utility copies the contents of an object file to another. objcopy +uses the GNU BFD Library to read and write the object files. It can write +the destination object file in a format different from that of the source +object file. +</para> + +</sect3> + +<sect3><title>objdump</title> + +<para> +objdump displays information about one or more object files. The options +control what particular information to display. This information is mostly +useful to programmers who are working on the compilation tools, as opposed to +programmers who just want their program to compile and work. +</para> + +</sect3> + +<sect3><title>ranlib</title> + +<para> +ranlib generates an index to the contents of an archive, and stores it in +the archive. The index lists each symbol defined by a member of an archive +that is a relocatable object file. +</para> + +</sect3> + +<sect3><title>size</title> + +<para> +size lists the section sizes --and the total size-- for each of the object +files objfile in its argument list. By default, one line of output is +generated for each object file or each module in an archive. +</para> + +</sect3> + +<sect3><title>strings</title> + +<para> +For each file given, strings prints the printable character sequences +that are at least 4 characters long (or the number specified with an +option to the program) and are followed by an unprintable character. By +default, it only prints the strings from the initialized and loaded +sections of object files; for other types of files, it prints the strings +from the whole file. +</para> + +<para> +strings is mainly useful for determining the contents of non-text files. +</para> + +</sect3> + +<sect3><title>strip</title> + +<para> +strip discards all or specific symbols from object files. The list of +object files may include archives. At least one object file must be +given. strip modifies the files named in its argument, rather than writing +modified copies under different names. +</para> + +</sect3> + +<sect3><title>c++filt</title> + +<para> +The C++ language provides function overloading, which means that you can +write many functions with the same name (providing each takes parameters +of different types). All C++ function names are encoded into a low-level +assembly label (this process is known as mangling). The c++filt program +does the inverse mapping: it decodes (demangles) low-level names into +user-level names so that the linker can keep these overloaded functions +from clashing. +</para> + +</sect3> + +<sect3><title>addr2line</title> + +<para> +addr2line translates program addresses into file names and line numbers. +Given an address and an executable, it uses the debugging information in +the executable to figure out which file name and line number are associated +with a given address. +</para> + +</sect3> + +<sect3><title>nlmconv</title> + +<para> +nlmconv converts relocatable object files into the NetWare Loadable Module +files, optionally reading header files for NLM header information. +</para> + +</sect3> + +</sect2> + diff --git a/appendixa/binutils.sgml b/appendixa/binutils.sgml new file mode 100644 index 000000000..9eae1e4a6 --- /dev/null +++ b/appendixa/binutils.sgml @@ -0,0 +1,7 @@ +<sect1 id="aa-binutils"> +<title>Binutils</title> + +&aa-binutils-desc; + +</sect1> + diff --git a/appendixa/bison-desc.sgml b/appendixa/bison-desc.sgml new file mode 100644 index 000000000..7e3fff7e9 --- /dev/null +++ b/appendixa/bison-desc.sgml @@ -0,0 +1,67 @@ +<sect2> +<title>Contents</title> + +<para> +The Bison package contains the bison program. +</para> + +</sect2> + +<sect2><title>Description</title> + +<para> +Bison is a parser generator, a replacement for YACC. YACC stands for Yet +Another Compiler Compiler. What is Bison then? It is a program that +generates a program that analyses the structure of a textfile. Instead +of +writing the actual program you specify how things should be connected +and with +those rules a program is constructed that analyses the textfile. +</para> + +<para> +There are alot of examples where structure is needed and one of them is +the +calculator. +</para> + +<para> +Given the string : +</para> + +<blockquote><literallayout> + 1 + 2 * 3 +</literallayout></blockquote> + +<para> +You can easily come to the result 7. Why ? Because of the structure. You +know +how to interpretet the string. The computer doesn't know that and Bison +is a +tool to help it understand by presenting the string in the following way +to the compiler: +</para> + +<blockquote><literallayout> + + + + / \ + * 1 + / \ + 2 3 +</literallayout></blockquote> + +<para> +You start at the bottom of a tree and you come across the numbers 2 and +3 which are joined by the multiplication symbol, so the computers +multiplies 2 and 3. The result of that multiplication is remembered and +the next thing that the computer sees is the result of 2*3 and the +number 1 which are joined by the add symbol. Adding 1 to the previous +result makes 7. In calculating the most complex calculations can be +broken down in this tree format and the computer just starts at the +bottom and works it's way up to the top and comes with the correct +answer. Of course, Bison isn't only used for calculators alone. +</para> + +</sect2> + diff --git a/appendixa/bison.sgml b/appendixa/bison.sgml new file mode 100644 index 000000000..afa11bc1d --- /dev/null +++ b/appendixa/bison.sgml @@ -0,0 +1,7 @@ +<sect1 id="aa-bison"> +<title>Bison</title> + +&aa-bison-desc; + +</sect1> + diff --git a/appendixa/bzip2-desc.sgml b/appendixa/bzip2-desc.sgml new file mode 100644 index 000000000..1bda00d6f --- /dev/null +++ b/appendixa/bzip2-desc.sgml @@ -0,0 +1,50 @@ +<sect2> +<title>Contents</title> + +<para> +The Bzip2 packages contains the bzip2, bunzip2, bzcat and bzip2recover +programs. +</para> + +</sect2> + +<sect2><title>Description</title> + +<sect3><title>Bzip2</title> + +<para> +bzip2 compresses files using the Burrows-Wheeler block sorting text +compression algorithm, and Huffman coding. Compression is generally +considerably better than that achieved by more conventional LZ77/LZ78-based +compressors, and approaches the performance of the PPM family of statistical +compressors. +</para> + +</sect3> + +<sect3><title>Bunzip2</title> + +<para> +Bunzip2 decompresses files that are compressed with bzip2. +</para> + +</sect3> + +<sect3><title>bzcat</title> + +<para> +bzcat (or bzip2 -dc) decompresses all specified files to the standard output. +</para> + +</sect3> + +<sect3><title>bzip2recover</title> + +<para> +bzip2recover recovers data from damaged bzip2 files. +</para> + +</sect3> + +</sect2> + diff --git a/appendixa/bzip2.sgml b/appendixa/bzip2.sgml new file mode 100644 index 000000000..17b6a0d1f --- /dev/null +++ b/appendixa/bzip2.sgml @@ -0,0 +1,7 @@ +<sect1 id="aa-bzip2"> +<title>Bzip2</title> + +&aa-bzip2-desc; + +</sect1> + diff --git a/appendixa/consoledata-desc.sgml b/appendixa/consoledata-desc.sgml new file mode 100644 index 000000000..d4a110a46 --- /dev/null +++ b/appendixa/consoledata-desc.sgml @@ -0,0 +1,10 @@ +<sect2> +<title>Contents</title> + +<para> +The console-data package contains the data files that are used and +needed by the console-tools package. +</para> + +</sect2> + diff --git a/appendixa/consoledata.sgml b/appendixa/consoledata.sgml new file mode 100644 index 000000000..d024c2f0e --- /dev/null +++ b/appendixa/consoledata.sgml @@ -0,0 +1,7 @@ +<sect1 id="aa-console-data"> +<title>Console-data</title> + +&aa-consoledata-desc; + +</sect1> + diff --git a/appendixa/consoletools-desc.sgml b/appendixa/consoletools-desc.sgml new file mode 100644 index 000000000..0071e2d07 --- /dev/null +++ b/appendixa/consoletools-desc.sgml @@ -0,0 +1,338 @@ +<sect2> +<title>Contents</title> + +<para> +The Console-tools package contains the charset, chvt, consolechars, +deallocvt, dumpkeys, fgconsole, fix_bs_and_del, font2psf, getkeycodes, +kbd_mode, loadkeys, loadunimap, mapscrn, mk_modmap, openvt, psfaddtable, +psfgettable, psfstriptable, resizecons, saveunimap, screendump, setfont, +setkeycodes, setleds, setmetamode, setvesablank, showcfont, showkey, +splitfont, unicode_start, unicode_stop, vcstime, vt-is-URF8, writevt +</para> + +</sect2> + +<sect2> +<title>Description</title> + +<sect3> +<title>charset</title> + +<para> +charset sets an ACM for use in one of the G0/G1 charsets slots. +</para> + +</sect3> + +<sect3> +<title>chvt</title> + +<para> +chvt changes foreground virtual terminal. +</para> + +</sect3> + +<sect3> +<title>codepage</title> + +<para> +No description available. +</para> + +</sect3> + +<sect3> +<title>consolechars</title> + +<para> +consolechars loads EGA/VGA console screen fonts, screen font maps and/or +application-charset maps. +</para> + +</sect3> + +<sect3> +<title>deallocvt</title> + +<para> +deallocvt deallocates unused virtual terminals. +</para> + +</sect3> + +<sect3> +<title>dumpkeys</title> + +<para> +dumpkeys dumps keyboard translation tables. +</para> + +</sect3> + +<sect3> +<title>fgconsole</title> + +<para> +fgconsole prints the number of the active virtual terminal. +</para> + +</sect3> + +<sect3> +<title>fix_bs_and_del</title> + +<para> +No description available. +</para> + +</sect3> + +<sect3> +<title>font2psf</title> + +<para> +No description available. +</para> + +</sect3> + +<sect3> +<title>getkeycodes</title> + +<para> +getkeycodes prints the kernel scancode-to-keycode mapping table. +</para> + +</sect3> + +<sect3> +<title>kbd_mode</title> + +<para> +kbd_mode reports or sets the keyboard mode. +</para> + +</sect3> + +<sect3> +<title>loadkeys</title> + +<para> +loadkeys loads keyboard translation tables. +</para> + +</sect3> + +<sect3> +<title>loadunimap</title> + +<para> +No description available. +</para> + +</sect3> + +<sect3> +<title>mapscrn</title> + +<para> +No description available. +</para> + +</sect3> + +<sect3> +<title>mk_modmap</title> + +<para> +No description available. +</para> + +</sect3> + +<sect3> +<title>openvt</title> + +<para> +openvt starts a program on a new virtual terminal. +</para> + +</sect3> + +<sect3> +<title>psfaddtable</title> + +<para> +psfaddtable adds a Unicode character table to a console font. +</para> + +</sect3> + +<sect3> +<title>psfgettable</title> + +<para> +psfgettable extracts the embedded Unicode character table from a console +font. +</para> + +</sect3> + +<sect3> +<title>psfstriptable</title> + +<para> +psfstriptable removes the embedded Unicode character table from a +console font. +</para> + +</sect3> + +<sect3> +<title>resizecons</title> + +<para> +resizecons changes the kernel idea of the console size. +</para> + +</sect3> + +<sect3> +<title>saveunimap</title> + +<para> +No description available. +</para> + +</sect3> + +<sect3> +<title>screendump</title> + +<para> +No description available. +</para> + +</sect3> + +<sect3> +<title>setfont</title> + +<para> +No description available. +</para> + +</sect3> + +<sect3> +<title>setkeycodes</title> + +<para> +setkeycodes loads kernel scancode-to-keycode mapping table entries. +</para> + +</sect3> + +<sect3> +<title>setleds</title> + +<para> +setleds sets the keyboard leds. +</para> + +</sect3> + +<sect3> +<title>setmetamode</title> + +<para> +setmetamode defines the keyboard meta key handling. +</para> + +</sect3> + +<sect3> +<title>setvesablank</title> + +<para> +No description available. +</para> + +</sect3> + +<sect3> +<title>showcfont</title> + +<para> +showcfont displays all character in the current screenfont. +</para> + +</sect3> + +<sect3> +<title>showkey</title> + +<para> +showkey examines the scancodes and keycodes sent by the keyboard. +</para> + +</sect3> + +<sect3> +<title>splitfont</title> + +<para> +No description available. +</para> + +</sect3> + +<sect3> +<title>unicode_start</title> + +<para> +unicode_start puts the console in Unicode mode. +</para> + +</sect3> + +<sect3> +<title>unicode_stop</title> + +<para> +No description available. +</para> + +</sect3> + +<sect3> +<title>vcstime</title> + +<para> +No description available. +</para> + +</sect3> + +<sect3> +<title>vt-is-UTF8</title> + +<para> +vt-is-UTF8 checks whether the current virtual terminal is in UTF8- or +byte-mode. +</para> + +</sect3> + +<sect3> +<title>writevt</title> + +<para> +No description available. +</para> + +</sect3> + +</sect2> + diff --git a/appendixa/consoletools.sgml b/appendixa/consoletools.sgml new file mode 100644 index 000000000..e4b1fa6b2 --- /dev/null +++ b/appendixa/consoletools.sgml @@ -0,0 +1,7 @@ +<sect1 id="aa-console-tools"> +<title>Console-tools</title> + +&aa-consoletools-desc; + +</sect1> + diff --git a/appendixa/diffutils-desc.sgml b/appendixa/diffutils-desc.sgml new file mode 100644 index 000000000..74b887a89 --- /dev/null +++ b/appendixa/diffutils-desc.sgml @@ -0,0 +1,39 @@ +<sect2> +<title>Contents</title> + +<para> +The Diffutils package contains the cmp, diff, diff3 and sdiff programs. +</para> + +</sect2> + +<sect2><title>Description</title> + +<sect3><title>cmp and diff</title> + +<para> +cmp and diff both compare two files and report their differences. Both +programs have extra options which compare files in different situations. +</para + +</sect3> + +<sect3><title>diff3</title> + +<para> +The difference between diff and diff3 is that diff comprares 2 files, +diff3 compares 3 files. +</para> + +</sect3> + +<sect3><title>sdiff</title> + +<para> +sdiff merges two two files and interactively outputs the results. +</para> + +</sect3> + +</sect2> + diff --git a/appendixa/diffutils.sgml b/appendixa/diffutils.sgml new file mode 100644 index 000000000..089dbc318 --- /dev/null +++ b/appendixa/diffutils.sgml @@ -0,0 +1,7 @@ +<sect1 id="aa-diffutils"> +<title>Diffutils</title> + +&aa-diffutils-desc; + +</sect1> + diff --git a/appendixa/e2fsprogs-desc.sgml b/appendixa/e2fsprogs-desc.sgml new file mode 100644 index 000000000..52618e3ef --- /dev/null +++ b/appendixa/e2fsprogs-desc.sgml @@ -0,0 +1,123 @@ +<sect2> +<title>Contents</title> + +<para> +The e2fsprogs package contains the chattr, lsattr, uuidgen, badblocks, +debugfs, dumpe2fs, e2fsck, e2label, fsck, fsck.ext2, mke2fs, mkfs.ext2, +mklost+found and tune2fs programs. +</para> + +</sect2> + +<sect2><title>Description</title> + +<sect3><title>chattr</title> + +<para> +chattr changes the file attributes on a Linux second extended file system. +</para> + +</sect3> + +<sect3><title>lsattr</title> + +<para> +lsattr lists the file attributes on a second extended file system. +</para> + +</sect3> + +<sect3><title>uuidgen</title> + +<para> +The uuidgen program creates a new universally unique identifier (UUID) +using the libuuid library. The new UUID can reasonably be considered unique +among all UUIDs created on the local system, and among UUIDs created on other +systems in the past and in the future. +</para> + +</sect3> + +<sect3><title>badblocks</title> + +<para> +badblocks is used to search for bad blocks on a device (usually a disk +partition). +</para> + +</sect3> + +<sect3><title>debugfs</title> + +<para> +The debugfs program is a file system debugger. It can be used to examine +and change the state of an ext2 file system. +</para> + +</sect3> + +<sect3><title>dumpe2fs</title> + +<para> +dumpe2fs prints the super block and blocks group information for the +filesystem present on a specified device. +</para> + +</sect3> + +<sect3><title>e2fsck and fsck.ext2</title> + +<para> +e2fsck is used to check a Linux second extended file system. fsck.ext2 +does the same as e2fsck. +</para> + +</sect3> + +<sect3><title>e2label</title> + +<para> +e2label will display or change the filesystem label on the ext2 filesystem +located on the specified device. +</para> + +</sect3> + +<sect3><title>fsck</title> + +<para> +fsck is used to check and optionally repair a Linux file system. +</para> + +</sect3> + +<sect3><title>mke2fs and mkfs.ext2</title> + +<para> +mke2fs is used to create a Linux second extended file system on a device +(usually a disk partition). mkfs.ext2 does the same as mke2fs. +</para> + +</sect3> + +<sect3><title>mklost+found</title> + +<para> +mklost+found is used to create a lost+found directory in the current +working directory on a Linux second extended file system. mklost+found +pre-allocates disk blocks to the directory to make it usable by e2fsck. +</para> + +</sect3> + +<sect3><title>tune2fs</title> + +<para> +tune2fs adjusts tunable filesystem parameters on a Linux second extended +filesystem. +</para> + +</sect3> + +</sect2> + diff --git a/appendixa/e2fsprogs.sgml b/appendixa/e2fsprogs.sgml new file mode 100644 index 000000000..5dd9cd6e5 --- /dev/null +++ b/appendixa/e2fsprogs.sgml @@ -0,0 +1,7 @@ +<sect1 id="aa-e2fsprogs"> +<title>E2fsprogs</title> + +&aa-e2fsprogs-desc; + +</sect1> + diff --git a/appendixa/ed-desc.sgml b/appendixa/ed-desc.sgml new file mode 100644 index 000000000..6cc438ae9 --- /dev/null +++ b/appendixa/ed-desc.sgml @@ -0,0 +1,19 @@ +<sect2> +<title>Contents</title> + +<para> +The Ed package contains the ed program. +</para> + +</sect2> + +<sect2><title>Description</title> + +<para> +Ed is a line-oriented text editor. It is used to create, display, +modify and +otherwise manipulate text files. +</para> + +</sect2> + diff --git a/appendixa/ed.sgml b/appendixa/ed.sgml new file mode 100644 index 000000000..2d7a0a596 --- /dev/null +++ b/appendixa/ed.sgml @@ -0,0 +1,7 @@ +<sect1 id="aa-ed"> +<title>Ed</title> + +&aa-ed-desc; + +</sect1> + diff --git a/appendixa/file-desc.sgml b/appendixa/file-desc.sgml new file mode 100644 index 000000000..b93a53355 --- /dev/null +++ b/appendixa/file-desc.sgml @@ -0,0 +1,20 @@ +<sect2> +<title>Contents</title> + +<para> +The File package contains the file program. +</para> + +</sect2> + +<sect2><title>Description</title> + +<para> +File tests each specified file in an attempt to classify it. There are +three sets of tests, performed in this order: filesystem tests, +magic number tests, and language tests. The first test that succeeds +causes the file type to be printed. +</para> + +</sect2> + diff --git a/appendixa/file.sgml b/appendixa/file.sgml new file mode 100644 index 000000000..f607ec4e9 --- /dev/null +++ b/appendixa/file.sgml @@ -0,0 +1,7 @@ +<sect1 id="aa-file"> +<title>File</title> + +&aa-file-desc; + +</sect1> + diff --git a/appendixa/fileutils-desc.sgml b/appendixa/fileutils-desc.sgml new file mode 100644 index 000000000..e22f2045c --- /dev/null +++ b/appendixa/fileutils-desc.sgml @@ -0,0 +1,186 @@ +<sect2> +<title>Contents</title> + +<para> +The Fileutils package contains the chgrp, chmod, chown, cp, dd, df, dir, +dircolors, du, install, ln, ls, mkdir, mkfifo, mknod, mv, rm, rmdir, +sync, touch and vdir programs. +</para> + +</sect2> + +<sect2><title>Description</title> + +<sect3><title>chgrp</title> + +<para> +chgrp changes the group ownership of each given file to the named group, +which can be either a group name or a numeric group ID. +</para> + +</sect3> + +<sect3><title>chmod</title> + +<para> +chmod changes the permissions of each given file according to mode, which +can be either a symbolic representation of changes to make, or an octal +number representing the bit pattern for the new permissions. +</para> + +</sect3> + +<sect3><title>chown</title> + +<para> +chown changes the user and/or group ownership of each given file. +</para> + +</sect3> + +<sect3><title>cp</title> + +<para> +cp copies files from one place to another. +</para> + +</sect3> + +<sect3><title>dd</title> + +<para> +dd copies a file (from the standard input to the standard output, by default) +with a user-selectable blocksize, while optionally performing conversions +on it. +</para> + +</sect3> + +<sect3><title>df</title> + +<para> +df displays the amount of disk space available on the filesystem +containing each file name argument. If no file name is given, the space +available on all currently mounted filesystems is shown. +</para> + +</sect3> + +<sect3><title>ls, dir and vdir</title> + +<para> +dir and vdir are versions of ls with different default output formats. +These programs list each given file or directory name. Directory contents +are sorted alphabetically. For ls, files are by default listed in columns, +sorted vertically, if the standard output is a terminal; otherwise they +are listed one per line. For dir, files are by default listed in columns, +sorted vertically. For vdir, files are by default listed in long format. +</para> + +</sect3> + +<sect3><title>dircolors</title> + +<para> +dircolors outputs commands to set the LS_COLOR environment variable. +The LS_COLOR variable is use to change the default color scheme used by +ls and related utilities. +</para> + +</sect3> + +<sect3><title>du</title> + +<para> +du displays the amount of disk space used by each argument and for each +subdirectory of directory arguments. +</para> + +</sect3> + +<sect3><title>install</title> + +<para> +install copies files and sets their permission modes and, if possible, +their owner and group. +</para> + +</sect3> + +<sect3><title>ln</title> + +<para> +ln makes hard or soft (symbolic) links between files. +</para> + +</sect3> + +<sect3><title>mkdir</title> + +<para> +mkdir creates directories with a given name. +</para> + +</sect3> + +<sect3><title>mkfifo</title> + +<para> +mkfifo creates a FIFO with each given name. +</para> + +</sect3> + +<sect3><title>mknod</title> + +<para> +mknod creates a FIFO, character special file, or block special file with the +given file name. +</para> + +</sect3> + +<sect3><title>mv</title> + +<para> +mv moves files from one directory to another or renames files, depending +on the arguments given to mv. +</para> + +</sect3> + +<sect3><title>rm</title> + +<para> +rm removes files or directories. +</para> + +</sect3> + +<sect3><title>rmdir</title> + +<para> +rmdir removes directories, if they are empty. +</para> + +</sect3> + +<sect3><title>sync</title> + +<para> +sync forces changed blocks to disk and updates the super block. +</para> + +</sect3> + +<sect3><title>touch</title> + +<para> +touch changes the access and modification times of each given file to the +current time. Files that do not exist are created empty. +</para> + +</sect3> + +</sect2> + diff --git a/appendixa/fileutils.sgml b/appendixa/fileutils.sgml new file mode 100644 index 000000000..5b147068e --- /dev/null +++ b/appendixa/fileutils.sgml @@ -0,0 +1,7 @@ +<sect1 id="aa-fileutils"> +<title>Fileutils</title> + +&aa-fileutils-desc; + +</sect1> + diff --git a/appendixa/findutils-desc.sgml b/appendixa/findutils-desc.sgml new file mode 100644 index 000000000..4aaa829c4 --- /dev/null +++ b/appendixa/findutils-desc.sgml @@ -0,0 +1,61 @@ +<sect2> +<title>Contents</title> + +<para> +The Findutils package contains the find, locate, updatedb and xargs +programs. +</para> + +</sect2> + +<sect2><title>Description</title> + +<sect3><title>Find</title> + +<para> +The find program searches for files in a directory hierarchy which match +a certain criteria. If no criteria is given, it lists all files in the +current directory and it's subdirectories. +</para> + +</sect3> + +<sect3><title>Locate</title> + +<para> +Locate scans a database which contain all files and directories on a +filesystem. This program lists the files and directories in this +database matching a certain criteria. If you're looking for a file this +program will scan the database and tell you exactly where the files you +requested are located. This only makes sense if your locate database is +fairly up-to-date else it will provide you with out-of-date information. +</para> + +</sect3> + +<sect3><title>Updatedb</title> + +<para> +The updatedb program updates the locate database. It scans the entire +file system (including other file system that are currently mounted +unless you specify it not to) and puts every directory and file it finds +into the database that's used by the locate program which retrieves this +information. It's a good practice to update this database once a day so +that you are ensured of a database that is up-to-date. +</para> + +</sect3> + +<sect3><title>Xargs</title> + +<para> +The xargs command applies a command to a list of files. If you need to +perform the same command on multiple files, you can create a file that +contains all these files (one per line) and use xargs to perform that +command on the list. +</para> + +</sect3> + +</sect2> + diff --git a/appendixa/findutils.sgml b/appendixa/findutils.sgml new file mode 100644 index 000000000..b5963f755 --- /dev/null +++ b/appendixa/findutils.sgml @@ -0,0 +1,7 @@ +<sect1 id="aa-findutils"> +<title>Findutils</title> + +&aa-findutils-desc; + +</sect1> + diff --git a/appendixa/flex-desc.sgml b/appendixa/flex-desc.sgml new file mode 100644 index 000000000..f62592463 --- /dev/null +++ b/appendixa/flex-desc.sgml @@ -0,0 +1,22 @@ +<sect2> +<title>Contents</title> + +<para> +The Flex package contains the flex program +</para> + +</sect2> + +<sect2><title>Description</title> + +<para> +Flex is a tool for generating programs which regognize patterns in text. +Pattern recognition is very useful in many applications. You set up rules +what to look for and flex will make a program that looks for those +patterns. The reason people use flex is that it is much easier to set up +rules for what to look for than to write the actual program that finds +the text. +</para> + +</sect2> + diff --git a/appendixa/flex.sgml b/appendixa/flex.sgml new file mode 100644 index 000000000..78b4e7490 --- /dev/null +++ b/appendixa/flex.sgml @@ -0,0 +1,7 @@ +<sect1 id="aa-flex"> +<title>Flex</title> + +&aa-flex-desc; + +</sect1> + diff --git a/appendixa/gcc-desc.sgml b/appendixa/gcc-desc.sgml new file mode 100644 index 000000000..cff8315fe --- /dev/null +++ b/appendixa/gcc-desc.sgml @@ -0,0 +1,50 @@ +<sect2> +<title>Contents</title> + +<para> +The GCC package contains compilers, preprocessors and the GNU C++ +Library. +</para> + +</sect2> + +<sect2><title>Description</title> + +<sect3><title>Compiler</title> + +<para> +A compiler translates source code in text format to a format +that a computer understands. After a source code file is compiled into +an object file, a linker will create an executable file from one or more +of these compiler generated object files. +</para> + +</sect3> + +<sect3><title>Pre-processor</title> + +<para> +A pre-processor pre-processes a source file, such as including +the contents of header files into the source file. You generally don't +do this yourself to save yourself a lot of time. You just insert a line +like #include <filename>. The pre-processor file insert the +contents of that file into the source file. That's one of the things a +pre-processor does. +</para> + +</sect3> + +<sect3><title>C++ Library</title> + +<para> +The C++ library is used by C++ programs. The C++ library contains +functions that are frequently used in C++ programs. This way the +programmer doesn't have to write certain functions (such as writing a +string of text to the screen) from scratch every time he creates a +program. +</para> + +</sect3> + +</sect2> + diff --git a/appendixa/gcc.sgml b/appendixa/gcc.sgml new file mode 100644 index 000000000..274e25d27 --- /dev/null +++ b/appendixa/gcc.sgml @@ -0,0 +1,7 @@ +<sect1 id="aa-gcc"> +<title>GCC</title> + +&aa-gcc-desc; + +</sect1> + diff --git a/appendixa/gettext-desc.sgml b/appendixa/gettext-desc.sgml new file mode 100644 index 000000000..bc8102d97 --- /dev/null +++ b/appendixa/gettext-desc.sgml @@ -0,0 +1,26 @@ +<sect2> +<title>Contents</title> + +<para> +The gettext package contains the gettext, gettextize, msgcmp, msgcomm, +msgfmt, msgmerge, msgunfmt and xgettext programs. +</para> + +</sect2> + +<sect2><title>Description</title> + +<sect3><title>gettext</title> + +<para> +The gettext package is used for internationalization (also known as +i18n) and for localization (also known as l10n). Programs can be +compiled with Native Language Support (NLS) which enable them to output +messages in your native language rather than in the default English +language. +</para> + +</sect3> + +</sect2> + diff --git a/appendixa/gettext.sgml b/appendixa/gettext.sgml new file mode 100644 index 000000000..a3ab61c61 --- /dev/null +++ b/appendixa/gettext.sgml @@ -0,0 +1,7 @@ +<sect1 id="aa-gettext"> +<title>Gettext</title> + +&aa-gettext-desc; + +</sect1> + diff --git a/appendixa/glibc-desc.sgml b/appendixa/glibc-desc.sgml new file mode 100644 index 000000000..b7d3a7ed3 --- /dev/null +++ b/appendixa/glibc-desc.sgml @@ -0,0 +1,33 @@ +<sect2> +<title>Contents</title> + +<para> +The Glibc package contains the GNU C Library. +</para> + +</sect2> + +<sect2><title>Description</title> + +<para> +The C Library is a collection of commonly used functions in programs. +This way a programmer doens't need to create his own functions for every +single task. The most common things like writing a string to your screen +are already present and at the disposal of the programmer. +</para> + +<para> +The C library (actually almost every library) come in two flavours: +dynamic ones and static ones. In short when a program uses a static C +library, the code from the C library will be copied into the executable +file. When a program uses a dynamic library, that executable will not +contain the code from the C library, but instead a routine that loads +the functions from the library at the time the program is run. This +means a significant decrease in the file size of a program. If you don't +understand this concept, you better read the documentation that comes +with the C Library as it is too complicated to explain here in one or +two lines. +</para> + +</sect2> + diff --git a/appendixa/glibc.sgml b/appendixa/glibc.sgml new file mode 100644 index 000000000..bc79e78f9 --- /dev/null +++ b/appendixa/glibc.sgml @@ -0,0 +1,7 @@ +<sect1 id="aa-glibc"> +<title>Glibc</title> + +&aa-glibc-desc; + +</sect1> + diff --git a/appendixa/grep-desc.sgml b/appendixa/grep-desc.sgml new file mode 100644 index 000000000..ae0500583 --- /dev/null +++ b/appendixa/grep-desc.sgml @@ -0,0 +1,40 @@ +<sect2> +<title>Contents</title> + +<para> +The grep package contains the egrep, fgrep and grep programs. +</para> + +</sect2> + +<sect2><title>Description</title> + +<sect3><title>egrep</title> + +<para> +egrep prints lines from files matching an extended regular expression +pattern. +</para> + +</sect3> + +<sect3><title>fgrep</title> + +<para> +fgrep prints lines from files matching a list of fixed strings, +separated by newlines, any of which is to be matched. +</para> + +</sect3> + +<sect3><title>grep</title> + +<para> +grep prints lines from files matching a basic regular expression +pattern. +</para> + +</sect3> + +</sect2> + diff --git a/appendixa/grep.sgml b/appendixa/grep.sgml new file mode 100644 index 000000000..e454dd114 --- /dev/null +++ b/appendixa/grep.sgml @@ -0,0 +1,7 @@ +<sect1 id="aa-grep"> +<title>Grep</title> + +&aa-grep-desc; + +</sect1> + diff --git a/appendixa/groff-desc.sgml b/appendixa/groff-desc.sgml new file mode 100644 index 000000000..21629cfe5 --- /dev/null +++ b/appendixa/groff-desc.sgml @@ -0,0 +1,234 @@ +<sect2> +<title>Contents</title> + +<para> +The Groff packages contains the addftinfo, afmtodit, eqn, grodvi, groff, +grog, grohtml, grolj4, grops, grotty, hpftodit, indxbib, lkbib, lookbib, +neqn, nroff, pfbtops, pic, psbb, refer, soelim, tbl, tfmtodit and troff +programs. +</para> + +</sect2> + +<sect2><title>Description</title> + +<sect3><title>addftinfo</title> + +<para> +addftinfo reads a troff font file and adds some additional font-metric +information that is used by the groff system. +</para> + +</sect3> + +<sect3><title>afmtodit</title> + +<para> +afmtodit creates a font file for use with groff and grops. +</para> + +</sect3> + +<sect3><title>eqn</title> + +<para> +eqn compiles descriptions of equations embedded within troff input files +into commands that are understood by troff. +</para> + +</sect3> + +<sect3><title>grodvi</title> + +<para> +grodvi is a driver for groff that produces TeX dvi format. +</para> + +</sect3> + +<sect3><title>groff</title> + +<para> +groff is a front-end to the groff document formatting system. Normally it +runs the troff program and a postprocessor appropriate for the selected +device. +</para> + +</sect3> + +<sect3><title>grog</title> + +<para> +grog reads files and guesses which of the groff options -e, -man, -me, -mm, +-ms, -p, -s, and -t are required for printing files, and prints the groff +command including those options on the standard output. +</para> + +</sect3> + +<sect3><title>grohtml</title> + +<para> +grohtml translates the output of GNU troff to html +</para> + +</sect3> + +<sect3><title>grolj4</title> + +<para> +grolj4 is a driver for groff that produces output in PCL5 format suitable +for an HP Laserjet 4 printer. +</para> + +</sect3> + +<sect3><title>grops</title> + +<para> +grops translates the output of GNU troff to PostScript. +</para> + +</sect3> + +<sect3><title>grotty</title> + +<para> +grotty translates the output of GNU troff into a form suitable for +typewriter-like devices. +</para> + +</sect3> + +<sect3><title>hpftodit</title> + +<para> +hpftodit creates a font file for use with groff -Tlj4 from an HP +tagged font metric file. +</para> + +</sect3> + +<sect3><title>indxbib</title> + +<para> +indxbib makes an inverted index for the bibliographic databases a +specified file for use with refer, lookbib, and lkbib. +</para> + +</sect3> + +<sect3><title>lkbib</title> + +<para> +lkbib searches bibliographic databases for references that contain +specified keys and prints any references found on the standard output. +</para> + +</sect3> + +<sect3><title>lookbib</title> + +<para> +lookbib prints a prompt on the standard error (unless the standard input +is not a terminal), reads from the standard input a line containing a set +of keywords, searches the bibliographic databases in a specified file for +references containing those keywords, prints any references found on the +standard output, and repeats this process until the end of input. +</para> + +</sect3> + +<sect3><title>neqn</title> + +<para> +It is currently not known what neqn is and what it does. +</para> + +</sect3> + +<sect3><title>nroff</title> + +<para> +The nroff script emulates the nroff command using groff. +</para> + +</sect3> + +<sect3><title>pfbtops</title> + +<para> +pfbtops translates a PostScript font in .pfb format to ASCII. +</para> + +</sect3> + +<sect3><title>pic</title> + +<para> +pic compiles descriptions of pictures embedded within troff or TeX input +files into commands that are understood by TeX or troff. +</para> + +</sect3> + +<sect3><title>psbb</title> + +<para> +psbb reads a file which should be a PostScript document conforming to the +Document Structuring conventions and looks for a %%BoundingBox comment. +</para> + +</sect3> + +<sect3><title>refer</title> + +<para> +refer copies the contents of a file to the standard output, except that +lines between .[ and .] are interpreted as citations, and lines between .R1 +and .R2 are interpreted as commands about how citations are to be +processed. +</para> + +</sect3> + +<sect3><title>soelim</title> + +<para> +soelim reads files and replaces lines of the form +<emphasis>.so file</emphasis> by the contents of +<emphasis>file</emphasis>. +</para> + +</sect3> + +<sect3><title>tbl</title> + +<para> +tbl compiles descriptions of tables embedded within troff input files +into commands that are understood by troff. +</para> + +</sect3> + +<sect3><title>tfmtodit</title> + +<para> +tfmtodit creates a font file for use with <userinput>groff +-Tdvi</userinput> +</para> + +</sect3> + +<sect3><title>troff</title> + +<para> +troff is highly compatible with Unix troff. Usually it should be invoked +using the groff command, which will also run preprocessors and +postprocessors in the appropriate order and with the appropriate options. +</para> + +</sect3> + +</sect2> + diff --git a/appendixa/groff.sgml b/appendixa/groff.sgml new file mode 100644 index 000000000..9edac1e33 --- /dev/null +++ b/appendixa/groff.sgml @@ -0,0 +1,7 @@ +<sect1 id="aa-groff"> +<title>Groff</title> + +&aa-groff-desc; + +</sect1> + diff --git a/appendixa/gzip-desc.sgml b/appendixa/gzip-desc.sgml new file mode 100644 index 000000000..98398fd63 --- /dev/null +++ b/appendixa/gzip-desc.sgml @@ -0,0 +1,101 @@ +<sect2> +<title>Contents</title> + +<para> +The Gzip package contains the compress, gunzip, gzexe, gzip, uncompress, +zcat, zcmp, zdiff, zforece, zgrep, zmore and znew programs. +</para> + +</sect2> + +<sect2><title>Description</title> + +<sect3><title>gunzip</title> + +<para> +gunzip decompresses files that are compressed with gzip. +</para> + +</sect3> + +<sect3><title>gzexe</title> + +<para> +gzexe allows you to compress executables in place and have them +automatically uncompress and execute when you run them (at a penalty in +performance). +</para> + +</sect3> + +<sect3><title>gzip</title> + +<para> +gzip reduces the size of the named files using Lempel-Ziv coding (LZ77). +</para> + +</sect3> + +<sect3><title>zcat</title> + +<para> +zcat uncompresses either a list of files on the command line or its +standard input and writes the uncompressed data on standard output +</para> + +</sect3> + +<sect3><title>zcmp</title> + +<para> +zcmp invokes the cmp program on compressed files. +</para> + +</sect3> + +<sect3><title>zdiff</title> + +<para> +zdiff invokes the diff program on compressed files. +</para> + +</sect3> + +<sect3><title>zforce</title> + +<para> +zforce forces a .gz extension on all gzip files so that gzip will not +compress them twice. This can be useful for files with names truncated +after a file transfer. +</para> + +</sect3> + +<sect3><title>zgrep</title> + +<para> +zgrep invokes the grep program on compressed files. +</para> + +</sect3> + +<sect3><title>zmore</title> + +<para> +Zmore is a filter which allows examination of compressed or plain text +files one screenful at a time on a soft-copy terminal (similar to the +more program). +</para> + +</sect3> + +<sect3><title>znew</title> + +<para> +Znew recompresses files from .Z (compress) format to .gz (gzip) format. +</para> + +</sect3> + +</sect2> + diff --git a/appendixa/gzip.sgml b/appendixa/gzip.sgml new file mode 100644 index 000000000..52baf9dc7 --- /dev/null +++ b/appendixa/gzip.sgml @@ -0,0 +1,7 @@ +<sect1 id="aa-gzip"> +<title>Gzip</title> + +&aa-gzip-desc; + +</sect1> + diff --git a/appendixa/introduction.sgml b/appendixa/introduction.sgml new file mode 100644 index 000000000..a8d2d5087 --- /dev/null +++ b/appendixa/introduction.sgml @@ -0,0 +1,51 @@ +<sect1 id="aa-intro"> +<title>Introduction</title> + + +<para> +This appendix describes the following aspect of each and every package +that is installed in this book: +</para> + +<itemizedlist> + +<listitem><para> + What every package contains +</para></listitem> + +<listitem><para> + What every program from a package does +</para></listitem> + +</itemizedlist> + +<para> +The packages are listed in the same order as they are installed in +chapter 5 (Intel system) or chapter 11 (PPC systems). +</para> + +<para> +Most information about these packages (especially the descriptions of +it) come from the man pages from those packages. I'm not going to print +the entire man page, just the core elements to make you understand what +a program does. If you want to know full details on a program, I suggest +you start by reading the complete man page in addition to this appendix. +</para> + +<para> +You will also find that certain packages are documented more in depth +than others. The reason is that I just happen to know more about certain +packages than I know about others. If you have anything to add on the +following descriptions, please don't hesitate to email me. This list is +going to contain an in depth description of every package installed, but +I can't do this on my own. I have had help from various people but more +help is needed. +</para> + +<para> +Please note that currently only what a package does is described and not +why you need to install it. That will be added later. +</para> + +</sect1> + diff --git a/appendixa/kernel-desc.sgml b/appendixa/kernel-desc.sgml new file mode 100644 index 000000000..48b240640 --- /dev/null +++ b/appendixa/kernel-desc.sgml @@ -0,0 +1,22 @@ +<sect2><title>Contents</title> + +<para> +The Linux kernel package contains the Linux kernel. +</para> + +</sect2> + +<sect2><title>Description</title> + +<para> +The Linux kernel is at the core of every Linux system. It's what makes +Linux tick. When you turn on your computer and boot a Linux system, the +very first piece of Linux software that gets loaded is the kernel. The +kernel initializes the system's hardware components such as serial +ports, parallel ports, sound cards, network cards, IDE controllers, SCSI +controllers and a lot more. In a nutshell the kernel makes the hardware +available so that the software can run. +</para> + +</sect2> + diff --git a/appendixa/kernel.sgml b/appendixa/kernel.sgml new file mode 100644 index 000000000..c964dc6db --- /dev/null +++ b/appendixa/kernel.sgml @@ -0,0 +1,7 @@ +<sect1 id="aa-kernel"> +<title>Linux kernel</title> + +&aa-kernel-desc; + +</sect1> + diff --git a/appendixa/ldso-desc.sgml b/appendixa/ldso-desc.sgml new file mode 100644 index 000000000..6b16c09dc --- /dev/null +++ b/appendixa/ldso-desc.sgml @@ -0,0 +1,34 @@ +<sect2><title>Contents</title> + +<para> +From the Ld.so package we're using the ldconfig and ldd programs. +</para> + +</sect2> + +<sect2><title>Description</title> + +<sect3><title>ldconfig</title> + +<para> +ldconfig creates the necessary links and cache (for use by the run-time +linker, ld.so) to the most recent shared libraries found in the directories +specified on the command line, in the file /etc/ld.so.conf, and in the trusted +directories (/usr/lib and /lib). ldconfig checks the header and file names +of the libraries it encounters when determining which versions should +have their links updated. +</para> + +</sect3> + +<sect3><title>ldd</title> + +<para> +ldd prints the shared libraries required by each program or shared library +specified on the command line. +</para> + +</sect3> + +</sect2> + diff --git a/appendixa/ldso.sgml b/appendixa/ldso.sgml new file mode 100644 index 000000000..60c1fdb7d --- /dev/null +++ b/appendixa/ldso.sgml @@ -0,0 +1,7 @@ +<sect1 id="aa-ldso"> +<title>Ld.so</title> + +&aa-ldso-desc; + +</sect1> + diff --git a/appendixa/less-desc.sgml b/appendixa/less-desc.sgml new file mode 100644 index 000000000..260e97b28 --- /dev/null +++ b/appendixa/less-desc.sgml @@ -0,0 +1,24 @@ +<sect2><title>Contents</title> + +<para> +The Less package contains the less program +</para> + +</sect2> + +<sect2><title>Description</title> + +<para> +The less program is a file pager (or text viewer). It displays the +contents +of a file with the ability to scroll. Less is an improvement on the +common +pager called <quote>more</quote>. Less has the ability to scroll +backwards +through files as well and it doesn't need to read the entire file when +it +starts, which makes it faster when you are reading large files. +</para> + +</sect2> + diff --git a/appendixa/less.sgml b/appendixa/less.sgml new file mode 100644 index 000000000..e2710fc2b --- /dev/null +++ b/appendixa/less.sgml @@ -0,0 +1,7 @@ +<sect1 id="aa-less"> +<title>Less</title> + +&aa-less-desc; + +</sect1> + diff --git a/appendixa/libtool-desc.sgml b/appendixa/libtool-desc.sgml new file mode 100644 index 000000000..a28179380 --- /dev/null +++ b/appendixa/libtool-desc.sgml @@ -0,0 +1,39 @@ +<sect2<title>Contents</title> + +<para> +The Libtool package contains the libtool and libtoolize programs. It +also contains the ltdl library. +</para> + +</sect2> + +<sect2><title>Description</title> + +<sect3><title>libtool</title> + +<para> +Libtool provides generalized library-building support services. +</para> + +</sect3> + +<sect3><title>libtoolize</title> + +<para> +libtoolize provides a standard way to add libtool support to your +package. +</para> + +</sect3> + +<sect3><title>ltdl library</title> + +<para> +Libtool provides a small library, called `libltdl', that aims at hiding +the various difficulties of dlopening libraries from programmers. +</para> + +</sect3> + +</sect2> + diff --git a/appendixa/libtool.sgml b/appendixa/libtool.sgml new file mode 100644 index 000000000..3c63a2f26 --- /dev/null +++ b/appendixa/libtool.sgml @@ -0,0 +1,7 @@ +<sect1 id="aa-libtool"> +<title>Libtool</title> + +&aa-libtool-desc; + +</sect1> + diff --git a/appendixa/lilo-desc.sgml b/appendixa/lilo-desc.sgml new file mode 100644 index 000000000..016bffb9f --- /dev/null +++ b/appendixa/lilo-desc.sgml @@ -0,0 +1,18 @@ +<sect2> +<title>Contents</title> + +<para> +The Lilo package contains the lilo program. +</para> + +</sect2> + +<sect2><title>Description</title> + +<para> +lilo installs the Linux boot loader which is used to start a Linux +system. +</para> + +</sect2> + diff --git a/appendixa/lilo.sgml b/appendixa/lilo.sgml new file mode 100644 index 000000000..fa9939eed --- /dev/null +++ b/appendixa/lilo.sgml @@ -0,0 +1,7 @@ +<sect1 id="aa-lilo"> +<title>Lilo</title> + +&aa-lilo-desc; + +</sect1> + diff --git a/appendixa/m4-desc.sgml b/appendixa/m4-desc.sgml new file mode 100644 index 000000000..94f57ef58 --- /dev/null +++ b/appendixa/m4-desc.sgml @@ -0,0 +1,23 @@ +<sect2> +<title>Contents</title> + +<para> +The M4 package contains the M4 processor +</para> + +</sect2> + +<sect2> +<title>Description</title> + +<para> +M4 is a macro processor. It copies input to output expanding macros as it +goes. Macros are either builtin or user-defined and can take any number +of arguments. Besides just doing macro expansion m4 has builtin functions +for including named files, running UNIX commands, doing integer arithmetic, +manipulating text in various ways, recursion, etc. M4 can be used either +as a front-end to a compiler or as a macro processor in its own right. +</para> + +</sect2> + diff --git a/appendixa/m4.sgml b/appendixa/m4.sgml new file mode 100644 index 000000000..fccac6958 --- /dev/null +++ b/appendixa/m4.sgml @@ -0,0 +1,7 @@ +<sect1 id="aa-m4"> +<title>M4</title> + +&aa-m4-desc; + +</sect1> + diff --git a/appendixa/make-desc.sgml b/appendixa/make-desc.sgml new file mode 100644 index 000000000..a6ca78cc7 --- /dev/null +++ b/appendixa/make-desc.sgml @@ -0,0 +1,17 @@ +<sect2><title>Contents</title> + +<para> +The Make package contains the make program. +</para> + +</sect2> + +<sect2><title>Description</title> + +<para> +make determine automatically which pieces of a large program need to be +recompiled, and issue the commands to recompile them. +</para> + +</sect2> + diff --git a/appendixa/make.sgml b/appendixa/make.sgml new file mode 100644 index 000000000..273c5774f --- /dev/null +++ b/appendixa/make.sgml @@ -0,0 +1,7 @@ +<sect1 id="aa-make"> +<title>Make</title> + +&aa-make-desc; + +</sect1> + diff --git a/appendixa/makedev-desc.sgml b/appendixa/makedev-desc.sgml new file mode 100644 index 000000000..f2c52bc13 --- /dev/null +++ b/appendixa/makedev-desc.sgml @@ -0,0 +1,17 @@ +<sect2><title>Contents</title> + +<para> +The MAKEDEV package contains the MAKEDEV script. +</para> + +</sect2> + +<sect2><title>Description</title> + +<para> +MAKEDEV is a script that can aid you in creating the necesarry static +device files that usually reside in the /dev directory. +</para> + +</sect2> + diff --git a/appendixa/makedev.sgml b/appendixa/makedev.sgml new file mode 100644 index 000000000..821d4a083 --- /dev/null +++ b/appendixa/makedev.sgml @@ -0,0 +1,7 @@ +<sect1 id="aa-makedev"> +<title>MAKEDEV</title> + +&aa-makedev-desc; + +</sect1> + diff --git a/appendixa/man-desc.sgml b/appendixa/man-desc.sgml new file mode 100644 index 000000000..b79360bf7 --- /dev/null +++ b/appendixa/man-desc.sgml @@ -0,0 +1,54 @@ +<sect2><title>Contents</title> + +<para> +The Man package contains the man, apropos whatis and makewhatis +programs. +</para> + +</sect2> + +<sect2><title>Description</title> + +<sect3><title>man</title> + +<para> +man formats and displays the on-line manual pages. +</para> + +</sect3> + +<sect3><title>apropos</title> + +<para> +apropos searches a set of database files containing short descriptions +of system commands for keywords and displays the result on the standard +output. +</para> + +</sect3> + +<sect3><title>whatis</title> + +<para> +whatis searches a set of database files containing short descriptions +of system commands for keywords and displays the result on the standard +output. Only complete word matches are displayed. +</para> + +</sect3> + +<sect3><title>makewhatis</title> + +<para> +makewhatis reads all the manual pages contained in given sections of +manpath or the preformatted pages contained in the given sections of +catpath. For each page, it writes a line in the whatis database; each +line consists of the name of the page and a short description, +separated by a dash. The description is extracted using the content of +the NAME section of the manual page. +</para> + +</sect3> + +</sect2> + diff --git a/appendixa/man.sgml b/appendixa/man.sgml new file mode 100644 index 000000000..ce124555e --- /dev/null +++ b/appendixa/man.sgml @@ -0,0 +1,7 @@ +<sect1 id="aa-man"> +<title>Man</title> + +&aa-man-desc; + +</sect1> + diff --git a/appendixa/manpages-desc.sgml b/appendixa/manpages-desc.sgml new file mode 100644 index 000000000..2fa30e7bf --- /dev/null +++ b/appendixa/manpages-desc.sgml @@ -0,0 +1,18 @@ +<sect2><title>Contents</title> + +<para> +The Man-pages package contains various manual pages that don't come with +the packages. +</para> + +</sect2> + +<sect2><title>Description</title> + +<para> +Examples of provided manual pages are the manual pages describing all +the C and C++ functions, few important /dev/ files and more. +</para> + +</sect2> + diff --git a/appendixa/manpages.sgml b/appendixa/manpages.sgml new file mode 100644 index 000000000..6a00aefe7 --- /dev/null +++ b/appendixa/manpages.sgml @@ -0,0 +1,7 @@ +<sect1 id="aa-man-pages"> +<title>Man-pages</title> + +&aa-manpages-desc; + +</sect1> + diff --git a/appendixa/mawk-desc.sgml b/appendixa/mawk-desc.sgml new file mode 100644 index 000000000..216f05f7e --- /dev/null +++ b/appendixa/mawk-desc.sgml @@ -0,0 +1,22 @@ +<sect2><title>Contents</title> + +<para> +The Mawk package contains the mawk program. +</para> + +</sect2> + +<sect2><title>Description</title> + +<sect3><title>mawk</title> + +<para> +Mawk is an interpreter for the AWK Programming Language. The AWK +language is useful for manipulation of data files, text retrieval and +processing, and for prototyping and experimenting with algorithms. +</para> + +</sect3> + +</sect2> + diff --git a/appendixa/mawk.sgml b/appendixa/mawk.sgml new file mode 100644 index 000000000..af21dd2b7 --- /dev/null +++ b/appendixa/mawk.sgml @@ -0,0 +1,7 @@ +<sect1 id="aa-mawk"> +<title>Mawk</title> + +&aa-mawk-desc; + +</sect1> + diff --git a/appendixa/modutils-desc.sgml b/appendixa/modutils-desc.sgml new file mode 100644 index 000000000..cf0fb85fe --- /dev/null +++ b/appendixa/modutils-desc.sgml @@ -0,0 +1,109 @@ +<sect2> +<title>Contents</title> + +<para> +The Modutils package contains the depmod, genksyms, insmod, +insmod_ksymoops_clean, kerneld, kernelversion, ksyms, lsmod, modinfo, +modprobe and rmmod programs. +</para> + +</sect2> + +<sect2><title>Description</title> + +<sect3><title>depmod</title> + +<para> +depmod handles dependency descriptions for loadable kernel modules. +</para> + +</sect3> + +<sect3><title>genksyms</title> + +<para> +genksyms reads (on standard input) the output from gcc -E source.c +and generates a file containing version information. +</para> + +</sect3> + +<sect3><title>insmod</title> + +<para> +insmod installs a loadable module in the running kernel. +</para> + +</sect3> + +<sect3><title>insmod_ksymoops_clean</title> + +<para> +insmod_ksymoops_clean deletes saved ksyms and modules not accessed in +2 days. +</para> + +</sect3> + +<sect3><title>kerneld</title> + +<para> +kerneld performs kernel action in user space (such as on-demand loading of +modules) +</para> + +</sect3> + +<sect3><title>kernelversion</title> + +<para> +kernelversion reports the major version of the running kernel. +</para> + +</sect3> + +<sect3><title>ksyms</title> + +<para> +ksyms displays exported kernel symbols. +</para> + +</sect3> + +<sect3><title>lsmod</title> + +<para> +lsmod shows information about all loaded modules. +</para> + +</sect3> + +<sect3><title>modinfo</title> + +<para> +modinfo examines an object file associated with a kernel module and +displays any information that it can glean. +</para> + +</sect3> + +<sect3><title>modprobe</title> + +<para> +Modprobe uses a Makefile-like dependency file, created by depmod, +to automatically load the relevant module(s) from the set of modules +available in predefined directory trees. +</para> + +</sect3> + +<sect3><title>rmmod</title> + +<para> +rmmod unloads loadable modules from the running kernel. +</para> + +</sect3> + +</sect2> + diff --git a/appendixa/modutils.sgml b/appendixa/modutils.sgml new file mode 100644 index 000000000..17b1548d1 --- /dev/null +++ b/appendixa/modutils.sgml @@ -0,0 +1,7 @@ +<sect1 id="aa-modutils"> +<title>Modutils</title> + +&aa-modutils-desc; + +</sect1> + diff --git a/appendixa/ncurses-desc.sgml b/appendixa/ncurses-desc.sgml new file mode 100644 index 000000000..b1746faf5 --- /dev/null +++ b/appendixa/ncurses-desc.sgml @@ -0,0 +1,94 @@ +<sect2> +<title>Contents</title> + +<para> +The Ncurses package contains the ncurses, panel, menu and form +libraries. It also contains the tic, infocmp, clear, tput, toe and tset +programs. +</para> + +</sect2> + +<sect2><title>Description</title> + +<sect3><title>The libraries</title> + +<para> +The libraries that make up the Ncurses library are used to display text +(often in a fancy way) on your screen. An example where ncurses is used +is in the kernel's <quote>make menuconfig</quote> process. The libraries +contain routines to create panels, menu's, form and general text display +routines. +</para> + +</sect3> + +<sect3><title>Tic</title> + +<para> +Tic is the terminfo entry-description compiler. The program translates a +terminfo file from source format into the binary format for use with the +ncurses library routines. Terminfo files contain information about the +capabilities of your terminal. +</para> + +</sect3> + +<sect3><title>Infocmp</title> + +<para> +The infocmp program can be used to compare a binary terminfo entry with +other +terminfo entries, rewrite a terminfo description to take advantage of +the +use= terminfo field, or print out a terminfo description from the +binary +file (term) in a variety of formats (the opposite of what tic does). +</para> + +</sect3> + +<sect3><title>clear</title> + +<para> +The clear program clears your screen if this is possible. It looks in +the environment for the terminal type and then in the terminfo database +to +figure out how to clear the screen. +</para> + +</sect3> + +<sect3><title>tput</title> + +<para> +The tput program uses the terminfo database to make the values of +terminal-dependent capabilities and information available to the shell, +to +initialize or reset the terminal, or return the long name of the +requested +terminal type. +</para> + +</sect3> + +<sect3><title>toe</title> + +<para> +The toe program lists all available terminal types by primary name with +descriptions. +</para> + +</sect3> + +<sect3><title>tset</title> + +<para> +The Tset program initializes terminals so they can be used, but it's not +widely used anymore. It's provided for 4.4BSD compatibility. +</para> + +</sect3> + +</sect2> + diff --git a/appendixa/ncurses.sgml b/appendixa/ncurses.sgml new file mode 100644 index 000000000..6b73dbee4 --- /dev/null +++ b/appendixa/ncurses.sgml @@ -0,0 +1,7 @@ +<sect1 id="aa-ncurses"> +<title>Ncurses</title> + +&aa-ncurses-desc; + +</sect1> + diff --git a/appendixa/patch-desc.sgml b/appendixa/patch-desc.sgml new file mode 100644 index 000000000..410df67d2 --- /dev/null +++ b/appendixa/patch-desc.sgml @@ -0,0 +1,26 @@ +<sect2> +<title>Contents</title> + +<para> +The Patch package contains the patch program. +</para> + +</sect2> + +<sect2><title>Description</title> + +<para> +The patch program modifies a file according to a patch file. A patch +file usually is a list created by the diff program that contains +instructions on how an original file needs to be modified. Patch is used +a lot for source code patches since it saves time and space. Imagine +you have a package that is 1MB in size. The next version of that package +only has changes in two files of the first version. You can ship an +entirely new package of 1MB or provide a patch file of 1KB which will +update the first version to make it identical to the second version. So +if you have downloaded the first version already, a patch file can +save you a second large download. +</para> + +</sect2> + diff --git a/appendixa/patch.sgml b/appendixa/patch.sgml new file mode 100644 index 000000000..4a305f8e7 --- /dev/null +++ b/appendixa/patch.sgml @@ -0,0 +1,7 @@ +<sect1 id="aa-patch"> +<title>Patch</title> + +&aa-patch-desc; + +</sect1> + diff --git a/appendixa/perl-desc.sgml b/appendixa/perl-desc.sgml new file mode 100644 index 000000000..52eaac0c2 --- /dev/null +++ b/appendixa/perl-desc.sgml @@ -0,0 +1,20 @@ +<sect2> +<title>Contents</title> + +<para> +The Perl package contains Perl - Practical Extraction and Report +Language +</para> + +</sect2> + +<sect2> +<title>Description</title> + +<para> +Perl combines the features and capabilities of C, awk, sed and sh into +one powerful programming language. +</para> + +</sect2> + diff --git a/appendixa/perl.sgml b/appendixa/perl.sgml new file mode 100644 index 000000000..e639d73ba --- /dev/null +++ b/appendixa/perl.sgml @@ -0,0 +1,7 @@ +<sect1 id="aa-perl"> +<title>Perl</title> + +&aa-perl-desc; + +</sect1> + diff --git a/appendixa/procinfo-desc.sgml b/appendixa/procinfo-desc.sgml new file mode 100644 index 000000000..8c6ff015c --- /dev/null +++ b/appendixa/procinfo-desc.sgml @@ -0,0 +1,18 @@ +<sect2> +<title>Contents</title> + +<para> +The Procinfo package contains the procinfo program. +</para> + +</sect2> + +<sect2><title>Description</title> + +<para> +procinfo gathers some system data from the /proc directory +and prints it nicely formatted on the standard output device. +</para> + +</sect2> + diff --git a/appendixa/procinfo.sgml b/appendixa/procinfo.sgml new file mode 100644 index 000000000..74a89ad7c --- /dev/null +++ b/appendixa/procinfo.sgml @@ -0,0 +1,7 @@ +<sect1 id="aa-procinfo"> +<title>Procinfo</title> + +&aa-procinfo-desc; + +</sect1> + diff --git a/appendixa/procps-desc.sgml b/appendixa/procps-desc.sgml new file mode 100644 index 000000000..8c31cbcd2 --- /dev/null +++ b/appendixa/procps-desc.sgml @@ -0,0 +1,116 @@ +<sect2> +<title>Contents</title> + +<para> +The Procps package contains the free, kill, oldps, ps, skill, snice, +sysctl, tload, top, uptime, vmstat, w and watch programs. +</para> + +</sect2> + +<sect2><title>Description</title> + +<sect3><title>free</title> + +<para> +free displays the total amount of free and used physical and swap memory +in the system, as well as the shared memory and buffers used by the kernel. +</para> + +</sect3> + +<sect3><title>kill</title> + +<para> +kills sends signals to processes. +</para> + +</sect3> + +<sect3><title>oldps and ps</title> + +<para> +ps gives a snapshot of the current processes. +</para> + +</sect3> + +<sect3><title>skill</title> + +<para> +skill sends signals to process matching a criteria. +</para> + +</sect3> + +<sect3><title>snice</title> + +<para> +snice changes the scheduling priority for process matching a criteria. +</para> + +</sect3> + +<sect3><title>sysctl</title> + +<para> +sysctl modifies kernel parameters at runtime. +</para> + +</sect3> + +<sect3><title>tload</title> + +<para> +tload prints a graph of the current system load average to the specified +tty (or the tty of the tload process if none is specified). +</para> + +</sect3> + +<sect3><title>top</title> + +<para> +top provides an ongoing look at processor activity in real time. +</para> + +</sect3> + +<sect3><title>uptime</title> + +<para> +uptime gives a one line display of the following information: the current +time, how long the system has been running, how many users are currently +logged on, and the system load averages for the past 1, 5, and 15 minutes. +</para> + +</sect3> + +<sect3><title>vmstat</title> + +<para> +vmstat reports information about processes, memory, paging, block IO, +traps, and cpu activity. +</para> + +</sect3> + +<sect3><title>w</title> + +<para> +w displays information about the users currently on the machine, and +their processes. +</para> + +</sect3> + +<sect3><title>watch</title> + +<para> +watch runs command repeatedly, displaying its output (the first screenfull). +</para> + +</sect3> + +</sect2> + diff --git a/appendixa/procps.sgml b/appendixa/procps.sgml new file mode 100644 index 000000000..168a6756b --- /dev/null +++ b/appendixa/procps.sgml @@ -0,0 +1,7 @@ +<sect1 id="aa-procps"> +<title>Procps</title> + +&aa-procps-desc; + +</sect1> + diff --git a/appendixa/psmisc-desc.sgml b/appendixa/psmisc-desc.sgml new file mode 100644 index 000000000..a8cd4fe56 --- /dev/null +++ b/appendixa/psmisc-desc.sgml @@ -0,0 +1,39 @@ +<sect2> +<title>Contents</title> + +<para> +The Psmisc package contains the fuser, killall and pstree programs. +</para> + +</sect2> + +<sect2><title>Description</title> + +<sect3><title>fuser</title> + +<para> +fuser displays the PIDs of processes using the specified files or file +systems. +</para> + +</sect3> + +<sect3><title>killall</title> + +<para> +killall sends a signal to all processes running any of the specified +commands. +</para> + +</sect3> + +<sect3><title>pstree</title> + +<para> +pstree shows running processes as a tree. +</para> + +</sect3> + +</sect2> + diff --git a/appendixa/psmisc.sgml b/appendixa/psmisc.sgml new file mode 100644 index 000000000..0fff9ad0c --- /dev/null +++ b/appendixa/psmisc.sgml @@ -0,0 +1,7 @@ +<sect1 id="aa-psmisc"> +<title>Psmisc</title> + +&aa-psmisc-desc; + +</sect1> + diff --git a/appendixa/sed-desc.sgml b/appendixa/sed-desc.sgml new file mode 100644 index 000000000..401fa9a82 --- /dev/null +++ b/appendixa/sed-desc.sgml @@ -0,0 +1,18 @@ +<sect2> +<title>Contents</title> + +<para> +The Sed package contains the sed program. +</para> + +</sect2> + +<sect2><title>Description</title> + +<para> +sed is a stream editor. A stream editor is used to perform basic text +transformations on an input stream (a file or input from a pipeline). +</para> + +</sect2> + diff --git a/appendixa/sed.sgml b/appendixa/sed.sgml new file mode 100644 index 000000000..c2cfe9844 --- /dev/null +++ b/appendixa/sed.sgml @@ -0,0 +1,7 @@ +<sect1 id="aa-sed"> +<title>Sed</title> + +&aa-sed-desc; + +</sect1> + diff --git a/appendixa/shadowpwd-desc.sgml b/appendixa/shadowpwd-desc.sgml new file mode 100644 index 000000000..22cb73916 --- /dev/null +++ b/appendixa/shadowpwd-desc.sgml @@ -0,0 +1,273 @@ +<sect2> +<title>Contents</title> + +<para> +The Shadow Password Suite contains the chage, chfn, chsh, expiry, +faillog, gpasswd, lastlog, login, newgrp, passwd, sg, su, chpasswd, +dpasswd, groupadd, groupdel, groupmod, grpck, grpconv, grpunconv, logoutd, +mkpasswd, newusers, pwck, pwconv, pwunconv, useradd, userdel, usermod +and vipw programs. +</para> + +</sect2> + +<sect2><title>Description</title> + +<sect3><title>chage</title> + +<para> +chage changes the number of days between password changes and the date of +the last password change. +</para> + +</sect3> + +<sect3><title>chfn</title> + +<para> +chfn changes user fullname, office number, office extension, and home +phone number information for a user's account. +</para> + +</sect3> + +<sect3><title>chsh</title> + +<para> +chsh changes the user login shell. +</para> + +</sect3> + +<sect3><title>expiry</title> + +<para> +It's currently unknown what this program is for. +</para> + +</sect3> + +<sect3><title>faillog</title> + +<para> +faillog formats the contents of the failure log,/var/log/faillog, and +maintains failure counts and limits. +</para> + +</sect3> + +<sect3><title>gpasswd</title> + +<para> +gpasswd is used to administer the /etc/group file +</para> + +</sect3> + +<sect3><title>lastlog</title> + +<para> +lastlog formats and prints the contents of the last login log, +/var/log/lastlog. The login-name, port, and last login time will be printed. +</para> + +</sect3> + +<sect3><title>login</title> + +<para> +login is used to establish a new session with the system. +</para> + +</sect3> + +<sect3><title>newgrp</title> + +<para> +newgrp is used to change the current group ID during a login session. +</para> + +</sect3> + +<sect3><title>passwd</title> + +<para> +passwd changes passwords for user and group accounts. +</para> + +</sect3> + +<sect3><title>sg</title> + +<para> +sg executes command as a different group ID. +</para> + +</sect3> + +<sect3><title>su</title> + +<para> +Change the effective user id and group id to that of a user. This +replaces the su programs that's installed from the Shellutils package. +</para> + +</sect3> + +<sect3><title>chpasswd</title> + +<para> +chpasswd reads a file of user name and password pairs from standard +input and uses this information to update a group of existing users. +</para> + +</sect3> + +<sect3><title>dpasswd</title> + +<para> +dpasswd adds, deletes, and updates dialup passwords for user login shells. +</para> + +</sect3> + +<sect3><title>groupadd</title> + +<para> +The groupadd command creates a new group account using the values +specified on the command line and the default values from the system. +</para> + +</sect3> + +<sect3><title>groupdel</title> + +<para> +The groupdel command modifies the system account files, deleting all +entries that refer to group. +</para> + +</sect3> + +<sect3><title>groupmod</title> + +<para> +The groupmod command modifies the system account files to reflect the +changes that are specified on the command line. +</para> + +</sect3> + +<sect3><title>grpck</title> + +<para> +grpck verifies the integrity of the system authentication information. +</para> + +</sect3> + +<sect3><title>grpconv</title> + +<para> +grpunconv converts to shadow group files from normal group files. +</para> + +</sect3> + +<sect3><title>grpunconv</title> + +<para> +grpunconv converts from shadow group files to normal group files. +</para> + +</sect3> + +<sect3><title>logoutd</title> + +<para> +logoutd enforces the login time and port restrictions specified in +/etc/porttime. +</para> + +</sect3> + +<sect3><title>mkpasswd</title> + +<para> +mkpasswd reads a file in the format given by the flags and converts it +to the corresponding database file format. +</para> + +</sect3> + +<sect3><title>newusers</title> + +<para> +newusers reads a file of user name and cleartext password pairs and uses +this information to update a group of existing users or to create new users. +</para> + +</sect3> + +<sect3><title>pwck</title> + +<para> +pwck verifies the integrity of the system authentication information. +</para> + +</sect3> + +<sect3><title>pwconv</title> + +<para> +pwconv converts to shadow passwd files from normal passwd files. +</para> + +</sect3> + +<sect3><title>pwunconv</title> + +<para> +pwunconv converts from shadow passwd files to normal files. +</para> + +</sect3> + +<sect3><title>useradd</title> + +<para> +useradd creates a new user or update default new user information. +</para> + +</sect3> + +<sect3><title>userdel</title> + +<para> +userdel modifies the system account files, deleting all entries that +refer to a specified login name. +</para> + +</sect3> + +<sect3><title>usermod</title> + +<para> +usermod modifies the system account files to reflect the changes that +are specified on the command line. +</para> + +</sect3> + +<sect3><title>vipw and vigr</title> + +<para> +vipw and vigr will edit the files /etc/passwd and /etc/group, +respectively. With the -s flag, they will edit the shadow versions of +those files, /etc/shadow and /etc/gshadow, respectively. +</para> + +</sect3> + +</sect2> + diff --git a/appendixa/shadowpwd.sgml b/appendixa/shadowpwd.sgml new file mode 100644 index 000000000..9d337f3f4 --- /dev/null +++ b/appendixa/shadowpwd.sgml @@ -0,0 +1,7 @@ +<sect1 id="aa-shadow"> +<title>Shadow Password Suite</title> + +&aa-shadowpwd-desc; + +</sect1> + diff --git a/appendixa/shellutils-desc.sgml b/appendixa/shellutils-desc.sgml new file mode 100644 index 000000000..7a7b19c76 --- /dev/null +++ b/appendixa/shellutils-desc.sgml @@ -0,0 +1,302 @@ +<sect2> +<title>Contents</title> + +<para> +The Shellutils package contains the basename, chroot, date, dirname, +echo, env, expr, factor, false, groups, hostid, hostname, id, logname, +nice, nohup, pathchk, pinky, printenv, printf, pwd, seq, sleep, stty, +su, tee, test, true, tty, uname, uptime, users, who, whoami and yes +programs. +</para> + +</sect2> + +<sect2><title>Description</title> + +<sect3><title>basename</title> + +<para> +basename strips directory and suffixes from filenames. +</para> + +</sect3> + +<sect3><title>chroot</title> + +<para> +chroot runs a command or interactive shell with special root directory. +</para> + +</sect3> + +<sect3><title>date</title> + +<para> +date displays the current time in a specified format, or sets the system +date. +</para> + +</sect3> + +<sect3><title>dirname</title> + +<para> +dirname strips non-directory suffixes from file name. +</para> + +</sect3> + +<sect3><title>echo</title> + +<para> +echo displays a line of text. +</para> + +</sect3> + +<sect3><title>env</title> + +<para> +env runs a program in a modified environment. +</para> + +</sect3> + +<sect3><title>expr</title> + +<para> +expr evaluates expressions. +</para> + +</sect3> + +<sect3><title>factor</title> + +<para> +factor prints the prime factors of all specified integer numbers. +</para> + +</sect3> + +<sect3><title>false</title> + +<para> +false always exits with a status code indicating failure. +</para> + +</sect3> + +<sect3><title>groups</title> + +<para> +groups prints the groups a user is in. +</para> + +</sect3> + +<sect3><title>hostid</title> + +<para> +hostid prints the numeric identifier (in hexadecimal) for the current +host. +</para> + +</sect3> + +<sect3><title>hostname</title> + +<para> +hostname sets or prints the name of the current host system +</para> + +</sect3> + +<sect3><title>id</title> + +<para> +id prints the real and effective UIDs and GIDs of a user or the current +user. +</para> + +</sect3> + +<sect3><title>logname</title> + +<para> +logname prints the current user's login name. +</para> + +</sect3> + +<sect3><title>nice</title> + +<para> +nice runs a program with modified scheduling priority. +</para> + +</sect3> + +<sect3><title>nohup</title> + +<para> +nohup runs a command immune to hangups, with output to a non-tty +</para> + +</sect3> + +<sect3><title>pathchk</title> + +<para> +pathchk checks whether file names are valid or portable. +</para> + +</sect3> + +<sect3><title>pinky</title> + +<para> +pinky is a lightweight finger utility which retrieves information about +a certain user +</para> + +</sect3> + +<sect3><title>printenv</title> + +<para> +printenv prints all or part of the environment. +</para> + +</sect3> + +<sect3><title>printf</title> + +<para> +printf formats and print data (the same as the printf C function). +</para> + +</sect3> + +<sect3><title>pwd</title> + +<para> +pwd prints the name of the current/working directory +</para> + +</sect3> + +<sect3><title>seq</title> + +<para> +seq prints numbers in a certain range with a certain increment. +</para> + +</sect3> + +<sect3><title>sleep</title> + +<para> +sleep delays for a specified amount of time. +</para> + +</sect3> + +<sect3><title>stty</title> + +<para> +stty changes and prints terminal line settings. +</para> + +</sect3> + +<sect3><title>su</title> + +<para> +su runs a shell with substitute user and group IDs +</para> + +</sect3> + +<sect3><title>tee</title> + +<para> +tee reads from standard input and write to standard output and files. +</para> + +</sect3> + +<sect3><title>test</title> + +<para> +test checks file types and compares values. +</para> + +</sect3> + +<sect3><title>true</title> + +<para> +True always exitx with a status code indicating success. +</para> + +</sect3> + +<sect3><title>tty</title> + +<para> +tty prints the file name of the terminal connected to standard input. +</para> + +</sect3> + +<sect3><title>uname</title> + +<para> +uname prints system information. +</para> + +</sect3> + +<sect3><title>uptime</title> + +<para> +uptime tells how long the system has been running. +</para> + +</sect3> + +<sect3><title>users</title> + +<para> +users prints the user names of users currently logged in to the +current host. +</para> + +</sect3> + +<sect3><title>who</title> + +<para> +who shows who is logged on. +</para> + +</sect3> + +<sect3><title>whoami</title> + +<para> +whoami prints your effective userid. +</para> + +</sect3> + +<sect3><title>yes</title> + +<para> +yes outputs a string repeatedly until killed. +</para> + +</sect3> + +</sect2> + diff --git a/appendixa/shellutils.sgml b/appendixa/shellutils.sgml new file mode 100644 index 000000000..90f016af5 --- /dev/null +++ b/appendixa/shellutils.sgml @@ -0,0 +1,7 @@ +<sect1 id="aa-shutils"> +<title>Shellutils</title> + +&aa-shellutils-desc; + +</sect1> + diff --git a/appendixa/sysklogd-desc.sgml b/appendixa/sysklogd-desc.sgml new file mode 100644 index 000000000..b6ecc5ae3 --- /dev/null +++ b/appendixa/sysklogd-desc.sgml @@ -0,0 +1,32 @@ +<sect2> +<title>Contents</title> + +<para> +The Sysklogd package contains the klogd and syslogd programs. +</para> + +</sect2> + +<sect2><title>Description</title> + +<sect3><title>klogd</title> + +<para> +klogd is a system daemon which intercepts and logs Linux kernel messages. +</para> + +</sect3> + +<sect3><title>syslogd</title> + +<para> +Syslogd provides a kind of logging that many modern programs use. Every +logged message contains at least a time and a hostname field, normally a +program name field, too, but that depends on how trusty the logging +program is. +</para> + +</sect3> + +</sect2> + diff --git a/appendixa/sysklogd.sgml b/appendixa/sysklogd.sgml new file mode 100644 index 000000000..8bcf312a9 --- /dev/null +++ b/appendixa/sysklogd.sgml @@ -0,0 +1,7 @@ +<sect1 id="aa-sysklogd"> +<title>Sysklogd</title> + +&aa-sysklogd-desc; + +</sect1> + diff --git a/appendixa/sysvinit-desc.sgml b/appendixa/sysvinit-desc.sgml new file mode 100644 index 000000000..4f8603ab2 --- /dev/null +++ b/appendixa/sysvinit-desc.sgml @@ -0,0 +1,160 @@ +<sect2> +<title>Contents</title> + +<para> +The Sysvinit package contains the pidof, last, lastb, mesg, utmpdump, +wall, halt, init, killall5, poweroff, reboot, runlevel, shutdown, +sulogin and telinit programs. +</para> + +</sect2> + +<sect2><title>Description</title> + +<sect3><title>pidof</title> + +<para> +Pidof finds the process id's (pids) of the named programs and prints +those id's on standard output. +</para> + +</sect3> + +<sect3><title>last</title> + +<para> +last searches back through the file /var/log/wtmp (or the file designated +by the -f flag) and displays a list of all users logged in (and out) +since that file was created. +</para> + +</sect3> + +<sect3><title>lastb</title> + +<para> +lastb is the same as last, except that by default it shows a log of the +file /var/log/btmp, which contains all the bad login attempts. + +</para> + +</sect3> + +<sect3><title>mesg</title> + +<para> +Mesg controls the access to your terminal by others. It's typically +used to allow or disallow other users to write to your terminal. +</para> + +</sect3> + +<sect3><title>utmpdump</title> + +<para> +utmpdumps prints the content of a file (usually /var/run/utmp) on +standard output in a user friendly format. +</para> + +</sect3> + +<sect3><title>wall</title> + +<para> +Wall sends a message to everybody logged in with their mesg permission +set to yes. +</para> + +</sect3> + +<sect3><title>halt</title> + +<para> +Halt notes that the system is being brought down in the file +/var/log/wtmp, and then either tells the kernel to halt, reboot or +poweroff the system. If halt or reboot is called when the system is not +in runlevel 0 or 6, shutdown will be invoked instead (with the flag -h or -r). +</para> + +</sect3> + +<sect3><title>init</title> + +<para> +Init is the parent of all processes. Its primary role is to create +processes from a script stored in the file /etc/inittab. This +file usually has entries which cause init to spawn gettys on each line that +users can log in. It also controls autonomous processes required by any +particular system. +</para> + +</sect3> + +<sect3><title>killall5</title> + +<para> +killall5 is the SystemV killall command. It sends a signal to all +processes except the processes in its own session, so it won't kill the +shell that is running the script it was called from. +</para> + +</sect3> + +<sect3><title>poweroff</title> + +<para> +poweroff is equivalent to shutdown -h -p now. It halts the computer and +switches off the computer (when using an APM compliant BIOS and APM is +enabled in the kernel). +</para> + +</sect3> + +<sect3><title>reboot</title> + +<para> +reboot is equivalent to shutdown -r now. It reboots the computer. +</para> + +</sect3> + +<sect3><title>runlevel</title> + +<para> +Runlevel reads the system utmp file (typically /var/run/utmp) to locate +the runlevel record, and then prints the previous and current system +runlevel on its standard output, separated by a single space. +</para> + +</sect3> + +<sect3><title>shutdown</title> + +<para> +shutdown brings the system down in a secure way. All logged-in users are +notified that the system is going down, and login is blocked. +</para> + +</sect3> + +<sect3><title>sulogin</title> + +<para> +sulogin is invoked by init when the system goes into single user mode +(this is done through an entry in /etc/inittab). Init also tries to +execute sulogin when it is passed the -b flag from the bootmonitor (eg, LILO). +</para> + +</sect3> + +<sect3><title>telinit</title> + +<para> +telinit sends appropriate signals to init, telling it which runlevel to +change to. +</para> + +</sect3> + +</sect2> + diff --git a/appendixa/sysvinit.sgml b/appendixa/sysvinit.sgml new file mode 100644 index 000000000..5aad28186 --- /dev/null +++ b/appendixa/sysvinit.sgml @@ -0,0 +1,7 @@ +<sect1 id="aa-sysvinit"> +<title>Sysvinit</title> + +&aa-sysvinit-desc; + +</sect1> + diff --git a/appendixa/tar-desc.sgml b/appendixa/tar-desc.sgml new file mode 100644 index 000000000..b10ef2309 --- /dev/null +++ b/appendixa/tar-desc.sgml @@ -0,0 +1,32 @@ +<sect2> +<title>Contents</title> + +<para> +The tar package contains the tar and rmt programs. +</para> + +</sect2> + +<sect2><title>Description</title> + +<sect3><title>tar</title> + +<para> +tar is an archiving program designed to store and extract files from +an archive file known as a tarfile. +</para> + +</sect3> + +<sect3><title>rmt</title> + +<para> +rmt is a program used by the remote dump and restore programs in +manipulating a magnetic tape drive through an interprocess communication +connection. +</para> + +</sect3> + +</sect2> + diff --git a/appendixa/tar.sgml b/appendixa/tar.sgml new file mode 100644 index 000000000..9bc6707df --- /dev/null +++ b/appendixa/tar.sgml @@ -0,0 +1,7 @@ +<sect1 id="aa-tar"> +<title>Tar</title> + +&aa-tar-desc; + +</sect1> + diff --git a/appendixa/texinfo-desc.sgml b/appendixa/texinfo-desc.sgml new file mode 100644 index 000000000..4cd7c9836 --- /dev/null +++ b/appendixa/texinfo-desc.sgml @@ -0,0 +1,64 @@ +<sect2> +<title>Contents</title> + +<para> +The Texinfo package contains the info, install-info, makeinfo, texi2dvi +and texindex programs +</para> + +</sect2> + +<sect2> +<title>Description</title> + +<sect3><title>info</title> + +<para> +The info program reads Info documents, usually contained in your +/usr/doc/info directory. Info documents are like man(ual) pages, but +they tend to be more in depth than just explaining the options to a +program. +</para> + +</sect3> + +<sect3><title>install-info</title> + +<para> +The install-info program updates the info entries. When you run the info +program a list with available topics (ie: available info documents) will +be presented. The install-info program is used to maintain this list of +available topics. If you decice to remove info files manually, you need +to delete the topic in the index file as well. This program is used for +that. It also works the other way around when you add info documents. +</para> + +</sect3> + +<sect3><title>makeinfo</title> + +<para> +The makeinfo program translates Texinfo source documents into various formats. +Available formats are: info files, plain text and HTML. +</para> + +</sect3> + +<sect3><title>texi2dvi</title> + +<para> +The texi2dvi program prints Texinfo documents +</para> + +</sect3> + +<sect3><title>texindex</title> + +<para> +The texindex program is used to sort Texinfo index files. +</para> + +</sect3> + +</sect2> + diff --git a/appendixa/texinfo.sgml b/appendixa/texinfo.sgml new file mode 100644 index 000000000..c5bc55132 --- /dev/null +++ b/appendixa/texinfo.sgml @@ -0,0 +1,7 @@ +<sect1 id="aa-texinfo"> +<title>Texinfo</title> + +&aa-texinfo-desc; + +</sect1> + diff --git a/appendixa/textutils-desc.sgml b/appendixa/textutils-desc.sgml new file mode 100644 index 000000000..4c619e47d --- /dev/null +++ b/appendixa/textutils-desc.sgml @@ -0,0 +1,263 @@ +<sect2> +<title>Contents</title> + +<para> +The Textutils package contains the cat, cksum, comm, split, cut, expand, +fmt, fold, head, join, md5sum, nl, od, paste, pr, ptx, sort, split, sum, +tac, tail, tr, tsort, unexpand, uniq and wc programs. +</para> + +</sect2> + +<sect2> +<title>Description</title> + +<sect3> +<title>cat</title> + +<para> +cat concatenates file(s) or standard input to standard output. +</para> + +</sect3> + +<sect3> +<title>cksum</title> + +<para> +cksum prints CRC checksum and byte counts of each specified file. +</para> + +</sect3> + +<sect3> +<title>comm</title> + +<para> +comm compares two sorted files line by line. +</para> + +</sect3> + +<sect3> +<title>csplit</title> + +<para> +cplit outputs pieces of a file separated by (a) pattern(s) to files +xx01, xx02, ..., and outputs byte counts of each piece to standard output. +</para> + +</sect3> + +<sect3> +<title>cut</title> + +<para> +cut prints selected parts of lines from specified files to standard output. +</para> + +</sect3> + +<sect3> +<title>expand</title> + +<para> +expand converts tabs in files to spaces, writing to standard output. +</para> + +</sect3> + +<sect3> +<title>fmt</title> + +<para> +fmt reformats each paragraph in the specified file(s), writing to standard +output. +</para> + +</sect3> + +<sect3> +<title>fold</title> + +<para> +fold wraps input lines in each specified file (standard input by default), +writing to standard output. +</para> + +</sect3> + +<sect3> +<title>head</title> + +<para> +Print first xx (10 by default) lines of each specified file to standard +output. +</para> + +</sect3> + +<sect3> +<title>join</title> + +<para> +join joins lines of two files on a common field. +</para> + +</sect3> + +<sect3> +<title>md5sum</title> + +<para> +md5sum prints or checks MD5 checksums. +</para> + +</sect3> + +<sect3> +<title>nl</title> + +<para> +nl writes each specified file to standard output, with line numbers +added. +</para> + +</sect3> + +<sect3> +<title>od</title> + +<para> +od writes an unambiguous representation, octal bytes by default, of a +specified file to standard output. +</para> + +</sect3> + +<sect3> +<title>paste</title> + +<para> +paste writes lines consisting of the sequentially corresponding +lines from each specified file, separated by TABs, to standard output. +</para> + +</sect3> + +<sect3> +<title>pr</title> + +<para> +pr paginates or columnates files for printing. +</para> + +</sect3> + +<sect3> +<title>ptx</title> + +<para> +ptx produces a permuted index of file contents. +</para> + +</sect3> + +<sect3> +<title>sort</title> + +<para> +sort writes sorted concatenation of files to standard output. +</para> + +</sect3> + +<sect3> +<title>split</title> + +<para> +split outputs fixed-size pieces of an input file to PREFIXaa, PREFIXab, ... +</para> + +</sect3> + +<sect3> +<title>sum</title> + +<para> +sum prints checksum and block counts for each specified file. +</para> + +</sect3> + +<sect3> +<title>tac</title> + +<para> +tac writes each specified file to standard output, last line first. +</para> + +</sect3> + +<sect3> +<title>tail</title> + +<para> +tail print the last xx (10 by default) lines of each specified file to +standard output. +</para> + +</sect3> + +<sect3> +<title>tr</title> + +<para> +tr translates, squeezes, and/or deletes characters from standard +input, writing to standard output. +</para> + +</sect3> + +<sect3> +<title>tsort</title> + +<para> +tsort writes totally ordered lists consistent with the partial ordering +in specified files. +</para> + +</sect3> + +<sect3> +<title>unexpand</title> + +<para> +unexpand converts spaces in each file to tabs, writing to standard +output. +</para> + +</sect3> + +<sect3> +<title>uniq</title> + +<para> +uniq discards all but one of successive identical lines from files or +standard input and writes to files or standard output. +</para> + +</sect3> + +<sect3> +<title>wc</title> + +<para> +wc prints line, word, and byte counts for each specified file, and a +total line if more than one file is specified. +</para> + +</sect3> + +</sect2> + diff --git a/appendixa/textutils.sgml b/appendixa/textutils.sgml new file mode 100644 index 000000000..fba03c603 --- /dev/null +++ b/appendixa/textutils.sgml @@ -0,0 +1,7 @@ +<sect1 id="aa-textutils"> +<title>Textutils</title> + +&aa-textutils-desc; + +</sect1> + diff --git a/appendixa/utillinux-desc.sgml b/appendixa/utillinux-desc.sgml new file mode 100644 index 000000000..5b546c88a --- /dev/null +++ b/appendixa/utillinux-desc.sgml @@ -0,0 +1,545 @@ +<sect2> +<title>Contents</title> + +<para> +The Util-linux package contains the arch, dmesg, kill, more, +mount, umount, agetty, blockdev, cfdisk, ctrlaltdel, elvtune, fdisk, +fsck.minix, hwclock, kbdrate, losetup, mkfs, mkfs.bfs, mkfs.minix, +mkswap, sfdisk, swapoff, swapon, cal, chkdupexe, col, colcrt, colrm, +column, cytune, ddate, fdformat, getopt, hexdump, ipcrm, ipcs, logger, +look, mcookie, namei, rename, renice, rev, script, setfdprm, setsid, +setterm, ul, whereis, write, ramsize, rdev, readprofile, rootflags, +swapdev, tunelp and vidmode programs. +</para> + +</sect2> + +<sect2> +<title>Description</title> + +<sect3> +<title>arch</title> + +<para> +arch prints the machine architecture. +</para> + +</sect3> + +<sect3> +<title>dmesg</title> + +<para> +dmesg is used to examine or control the kernel ring buffer (boot +messages from the kernel). +</para> + +</sect3> + +<sect3> +<title>kill</title> + +<para> +kill sends a specified signal to the specified process. +</para> + +</sect3> + +<sect3> +<title>more</title> + +<para> +more is a filter for paging through text one screenful at a time. +</para> + +</sect3> + +<sect3> +<title>mount</title> + +<para> +mount mounts a filesystem from a device to a directory (mount point). +</para> + +</sect3> + +<sect3> +<title>umount</title> + +<para> +umount unmounts a mounted filesystem. +</para> + +</sect3> + +<sect3> +<title>agetty</title> + +<para> +agetty opens a tty port, prompts for a login name and invokes the +/bin/login command. +</para> + +</sect3> + +<sect3> +<title>blockdev</title> + +<para> +blockdev allows you to call block device ioctls from the command line +</para> + +</sect3> + +<sect3> +<title>cfdisk</title> + +<para> +cfdisk is an libncurses based disk partition table manipulator. +</para> + +</sect3> + +<sect3> +<title>ctrlaltdel</title> + +<para> +ctrlaltdel sets the function of the CTRL+ALT+DEL key combination (hard +or soft reset). +</para> + +</sect3> + +<sect3> +<title>elvtune</title> + +<para> +elvtune allows to tune the I/O elevator per blockdevice queue basis. +</para> + +</sect3> + +<sect3> +<title>fdisk</title> + +<para> +fdisk is a disk partition table manipulator. +</para> + +</sect3> + +<sect3> +<title>fsck.minix</title> + +<para> +fsck.minix performs a consistency check for the Linux MINIX filesystem. +</para> + +</sect3> + +<sect3> +<title>hwclock</title> + +<para> +hwclock queries and sets the hardware clock (Also called the RTC or BIOS +clock). +</para> + +</sect3> + +<sect3> +<title>kbdrate</title> + +<para> +kbdrate resets the keyboard repeat rate and delay time. +</para> + +</sect3> + +<sect3> +<title>losetup</title> + +<para> +losetup sets up and controls loop devices. +</para> + +</sect3> + +<sect3> +<title>mkfs</title> + +<para> +mkfs builds a Linux filesystem on a device, usually a harddisk +partition. +</para> + +</sect3> + +<sect3> +<title>mkfs.bfs</title> + +<para> +mkfs.bfs creates a SCO bfs file system on a device, usually a harddisk +partition. +</para> + +</sect3> + +<sect3> +<title>mkfs.minix</title> + +<para> +mkfs.minix creates a Linux MINIX filesystem on a device, usually a +harddisk partition. +</para> + +</sect3> + +<sect3> +<title>mkswap</title> + +<para> +mkswap sets up a Linux swap area on a device or in a file. +</para> + +</sect3> + +<sect3> +<title>sfdisk</title> + +<para> +sfdisk is a disk partition table manipulator. +</para> + +</sect3> + +<sect3> +<title>swapoff</title> + +<para> +swapoff disables devices and files for paging an swapping. +</para> + +</sect3> + +<sect3> +<title>swapon</title> + +<para> +swapon enables devices and files for paging and swapping. +</para> + +</sect3> + +<sect3> +<title>cal</title> + +<para> +cal displays a simple calender. +</para> + +</sect3> + +<sect3> +<title>chkdupexe</title> + +<para> +chkdupexe finds duplicate executables. +</para> + +</sect3> + +<sect3> +<title>col</title> + +<para> +col filters reverse line feeds from input. +</para> + +</sect3> + +<sect3> +<title>colcrt</title> + +<para> +colcrt filters nroff output for CRT previewing. +</para> + +</sect3> + +<sect3> +<title>colrm</title> + +<para> +colrm removes columns from a file. +</para> + +</sect3> + +<sect3> +<title>column</title> + +<para> +column columnates lists. +</para> + +</sect3> + +<sect3> +<title>cytune</title> + +<para> +cytune queries and modifies the interruption threshold for the Cyclades +driver. +</para> + +</sect3> + +<sect3> +<title>ddate</title> + +<para> +ddate converts Gregorian dates to Discordian dates. +</para> + +</sect3> + +<sect3> +<title>fdformat</title> + +<para> +fdformat low-level formats a floppy disk. +</para> + +</sect3> + +<sect3> +<title>getopt</title> + +<para> +getops parses command options the same way as the getopt C command. +</para> + +</sect3> + +<sect3> +<title>hexdump</title> + +<para> +hexdump displays specified files, or standard input, in a user specified +format (ascii, decimal, hexadecimal, octal). +</para> + +</sect3> + +<sect3> +<title>ipcrm</title> + +<para> +ipcrm removes a specified resource. +</para> + +</sect3> + +<sect3> +<title>ipcs</title> + +<para> +ipcs provides information on ipc facilities. +</para> + +</sect3> + +<sect3> +<title>logger</title> + +<para> +logger makes entries in the system log. +</para> + +</sect3> + +<sect3> +<title>look</title> + +<para> +look displays lines beginning with a given string. +</para> + +</sect3> + +<sect3> +<title>mcookie</title> + +<para> +mcookie generates magic cookies for xauth. +</para> + +</sect3> + +<sect3> +<title>namei</title> + +<para> +namei follows a pathname until a terminal point is found. +</para> + +</sect3> + +<sect3> +<title>rename</title> + +<para> +rename renames files. +</para> + +</sect3> + +<sect3> +<title>renice</title> + +<para> +renice alters priority of running processes. +</para> + +</sect3> + +<sect3> +<title>rev</title> + +<para> +rev reverses lines of a file. +</para> + +</sect3> + +<sect3> +<title>script</title> + +<para> +script makes typescript of terminal session. +</para> + +</sect3> + +<sect3> +<title>setfdprm</title> + +<para> +setfdprm sets user-provides floppy disk parameters. +</para> + +</sect3> + +<sect3> +<title>setsid</title> + +<para> +setsid runs programs in a new session. +</para> + +</sect3> + +<sect3> +<title>setterm</title> + +<para> +setterm sets terminal attributes. +</para> + +</sect3> + +<sect3> +<title>ul</title> + +<para> +ul reads a file and translates occurences of underscores to the sequence +which indicates underlining for the terminal in use. +</para> + +</sect3> + +<sect3> +<title>whereis</title> + +<para> +whereis locates a binary, source and manual page for a command. +</para> + +</sect3> + +<sect3> +<title>write</title> + +<para> +write sends a message to another user. +</para> + +</sect3> + +<sect3> +<title>ramsize</title> + +<para> +ramsize queries and sets RAM disk size. +</para> + +</sect3> + +<sect3> +<title>rdev</title> + +<para> +rdev queries and sets image root device, swap device, RAM disk size, or +video mode. +</para> + +</sect3> + +<sect3> +<title>readprofile</title> + +<para> +readprofile reads kernel profiling information. +</para> + +</sect3> + +<sect3> +<title>rootflags</title> + +<para> +rootflags queries and sets extra information used when mounting root. +</para> + +</sect3> + +<sect3> +<title>swapdev</title> + +<para> +swapdev queries and sets swap device. +</para> + +</sect3> + +<sect3> +<title>tunelp</title> + +<para> +tunelp sets various paramters for the lp device. +</para> + +</sect3> + +<sect3> +<title>vidmode</title> + +<para> +vidmode queries and sets the video mode. +</para> + +</sect3> + +</sect2> + diff --git a/appendixa/utillinux.sgml b/appendixa/utillinux.sgml new file mode 100644 index 000000000..e83630b6c --- /dev/null +++ b/appendixa/utillinux.sgml @@ -0,0 +1,7 @@ +<sect1 id="aa-utillinux"> +<title>Util Linux</title> + +&aa-utillinux-desc; + +</sect1> + diff --git a/appendixa/vim-desc.sgml b/appendixa/vim-desc.sgml new file mode 100644 index 000000000..4470954c5 --- /dev/null +++ b/appendixa/vim-desc.sgml @@ -0,0 +1,136 @@ +<sect2> +<title>Contents</title> + +<para> +The Vim package contains the ctags, etags, ex, gview, gvim, rgview, +rgvim, rview, rvim, view, vim, vimtutor and xxd programs. +</para> + +</sect2> + +<sect2> +<title>Description</title> + +<sect3> +<title>ctags</title> + +<para> +ctags generate tag files for source code. +</para> + +</sect3> + +<sect3> +<title>etags</title> + +<para> +etags does the same as ctags but it can generate cross reference files +which list information about the various source objects found in a set +of lanugage files. +</para> + +</sect3> + +<sect3> +<title>ex</title> + +<para> +ex starts vim in Ex mode. +</para> + +</sect3> + +<sect3> +<title>gview</title> + +<para> +gview is the GUI version of view. +</para> + +</sect3> + +<sect3> +<title>gvim</title> + +<para> +gvim is the GUI version of vim. +</para> + +</sect3> + +<sect3> +<title>rgview</title> + +<para> +rgview is teh GUI version of rview. +</para> + +</sect3> + +<sect3> +<title>rgvim</title> + +<para> +rgvim is the GUI version of rvim. +</para> + +</sect3> + +<sect3> +<title>rview</title> + +<para> +rview is a restricted version of view. No shell commands can be started +and Vim can't be suspended. +</para> + +</sect3> + +<sect3> +<title>rvim</title> + +<para> +rvim is the restricted version of vim. No shell commands can be started +and Vim can't be suspended. +</para> + +</sect3> + +<sect3> +<title>view</title> + +<para> +view starts vim in read-only mode. +</para> + +</sect3> + +<sect3> +<title>vim</title> + +<para> +vim starts vim in the normal, default way. +</para> + +</sect3> + +<sect3> +<title>vimtutor</title> + +<para> +vimtutor starts the Vim tutor. +</para> + +</sect3> + +<sect3> +<title>xxd</title> + +<para> +xxd makes a hexdump or does the reverse. +</para> + +</sect3> + +</sect2> + diff --git a/appendixa/vim.sgml b/appendixa/vim.sgml new file mode 100644 index 000000000..0682a017e --- /dev/null +++ b/appendixa/vim.sgml @@ -0,0 +1,7 @@ +<sect1 id="aa-vim"> +<title>Vim</title> + +&aa-vim-desc; + +</sect1> + diff --git a/book/book.sgml b/book/book.sgml new file mode 100644 index 000000000..eca386feb --- /dev/null +++ b/book/book.sgml @@ -0,0 +1,7 @@ +&bookinfo; +&dedication; +&preface; + +&part1; +&part2; +&part3; diff --git a/book/part1.sgml b/book/part1.sgml new file mode 100644 index 000000000..31c377a09 --- /dev/null +++ b/book/part1.sgml @@ -0,0 +1,7 @@ +<part id="part1"> +<title>Part I - Introduction</title> + +&chapter1; +&chapter2; + +</part> diff --git a/book/part2.sgml b/book/part2.sgml new file mode 100644 index 000000000..c8ebcc95f --- /dev/null +++ b/book/part2.sgml @@ -0,0 +1,12 @@ +<part id="part2"> +<title>Part II - Installing the LFS system</title> + +&chapter3; +&chapter4; +&chapter5; +&chapter6; +&chapter7; +&chapter8; +&chapter9; + +</part> diff --git a/book/part3.sgml b/book/part3.sgml new file mode 100644 index 000000000..c9e4a3f4b --- /dev/null +++ b/book/part3.sgml @@ -0,0 +1,9 @@ +<part id="part3"> +<title>Part III - Appendixes</title> + +&appendixa; +&appendixb; +&appendixc; + +</part> + diff --git a/bookinfo/abstract.sgml b/bookinfo/abstract.sgml new file mode 100644 index 000000000..6d3c43dd0 --- /dev/null +++ b/bookinfo/abstract.sgml @@ -0,0 +1,10 @@ +<abstract> + +<para> +This book describes the process of creating your own Linux system +from scratch from an already installed Linux distribution, using nothing but +the sources of software that are needed. +</para> + +</abstract> + diff --git a/bookinfo/authorgroup.sgml b/bookinfo/authorgroup.sgml new file mode 100644 index 000000000..3bdc9f028 --- /dev/null +++ b/bookinfo/authorgroup.sgml @@ -0,0 +1,8 @@ +<authorgroup> + +<author> + <firstname>Gerard</firstname><surname>Beekmans</surname> +</author> + +</authorgroup> + diff --git a/bookinfo/bookinfo.sgml b/bookinfo/bookinfo.sgml new file mode 100644 index 000000000..863122d07 --- /dev/null +++ b/bookinfo/bookinfo.sgml @@ -0,0 +1,9 @@ +<bookinfo> +<title>Linux From Scratch</title> + +&bi-authorgroup; +&bi-copyright; +&bi-legalnotice; +&bi-abstract; + +</bookinfo> diff --git a/bookinfo/copyright.sgml b/bookinfo/copyright.sgml new file mode 100644 index 000000000..d0bb15c69 --- /dev/null +++ b/bookinfo/copyright.sgml @@ -0,0 +1,9 @@ +<copyright id="copyright"> + + <year>1999</year> + <year>2000</year> + <year>2001</year> + <holder>Gerard Beekmans</holder> + +</copyright> + diff --git a/bookinfo/legalnotice.sgml b/bookinfo/legalnotice.sgml new file mode 100644 index 000000000..4d708abf6 --- /dev/null +++ b/bookinfo/legalnotice.sgml @@ -0,0 +1,53 @@ +<legalnotice> + +<para> +Copyright (c) 1999-2001, Gerard Beekmans +</para> + +<para> +All rights reserved. +</para> + +<para> +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: +</para> + +<itemizedlist> + +<listitem><para> +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. +</para></listitem> + +<listitem><para> +Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in the +documentation and/or other materials provided with the distribution. +</para></listitem> + +<listitem><para> +Neither the name of LinuxFromScratch nor the names of its contributors +may be used to endorse or promote products derived from this software +without specific prior written permission. +</para></listitem> + +</itemizedlist> + +<para> +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS +IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</para> + +</legalnotice> + diff --git a/chapter01/acknowledgements.sgml b/chapter01/acknowledgements.sgml new file mode 100644 index 000000000..1055d57e8 --- /dev/null +++ b/chapter01/acknowledgements.sgml @@ -0,0 +1,84 @@ +<sect1 id="ch01-acknowledgements"> +<title>Acknowledgements</title> + +<para> +I would like to thank the following people and organizations for their +contributions towards the LinuxFromScratch project: +</para> + +<itemizedlist> + +<listitem><para> +<ulink url="mailto:bdumm@boddy.bcpub.com">Bryan Dumm</ulink> for providing +the hardware to run linuxfromscratch.org and for providing +<ulink url="http://www.bcpub.com">http://www.bcpub.com</ulink> as the +lfs.bcpub.com mirror +</para></listitem> + +<listitem><para> +<ulink url="http://www.dreamwvr.com/services">DREAMWVR.COM</ulink> for +their ongoing sponsorhip by donating various resources to the LFS and +related sub projects. +</para></listitem> + +<listitem><para> +<ulink url="mailto:jan.niemann@tu-bs.de">Jan Niemann</ulink> for providing +<ulink url="http://helga.lk.etc.tu-bs.de"> +http://helga.lk.etc.tu-bs.de</ulink> as the 134.169.139.209 mirror +</para></listitem> + +<listitem><para> +<ulink url="mailto:johanlenglet@linuxfromscratch.org">Johan Lenglet</ulink> for +running the French translation project at <ulink +url="http://www.fr.linuxfromscratch.org"> +http://www.fr.linuxfromscratch.org</ulink> +</para></listitem> + +<listitem><para> +<ulink url="mailto:mpeters@mac.com">Michael Peters</ulink> for +contributing the Apple PowerPC modifications +</para></listitem> + +<listitem><para> +<ulink url="http://www.valinux.com">VA Linux Systems</ulink> who, on +behalf of <ulink url="http://www.linux.com">Linux.com</ulink>, donated a +VA Linux 420 (formerly StartX SP2) workstation towards this project +</para></listitem> + +<listitem><para> +<ulink url="mailto:highos@highos.com">Jesse Tie Ten Quee</ulink> who +donated a Yamaha CDRW 8824E CD-RW. +</para></listitem> + +<listitem><para> +<ulink url="mailto:highos@highos.com">Jesse Tie Ten Quee</ulink> for +providing quasar.highos.com as the www.ca.linuxfromscratch.org +mirror. +</para></listitem> + +<listitem><para> +<ulink url="http://www.oreilly.com">O'Reilly</ulink> for donating books +on SQL and PHP. +</para></listitem> + +<listitem><para> +Robert Briggs for donating the linuxfromscratch.org and +linuxfromscratch.com domain names. +</para></listitem> + +<listitem><para> +<ulink url="mailto:westermann@linux-provider.net">Torsten +Westermann</ulink> for running the lfs.linux-provider.net http and ftp +mirror sites. +</para></listitem> + +<listitem><para> +Countless other people from the various LFS mailinglists who are making +this book happen by making suggestions, testing and submitting bug +reports. +</para></listitem> + +</itemizedlist> + +</sect1> + diff --git a/chapter01/alfsdiscuss.sgml b/chapter01/alfsdiscuss.sgml new file mode 100644 index 000000000..4994c945f --- /dev/null +++ b/chapter01/alfsdiscuss.sgml @@ -0,0 +1,13 @@ +<sect2> +<title>alfs-discuss</title> + +<para> +The alfs-discuss list discusses the development of ALFS which stands for +Automated LinuxFromScratch. The goal of this project is to develop an +installation tool that can install an LFS system automatically for you. +It's main goal is to speed up compilation by taking away your need to +manually enter the commands to configure, compile and install packages. +</para> + +</sect2> + diff --git a/chapter01/alfsdocs.sgml b/chapter01/alfsdocs.sgml new file mode 100644 index 000000000..8128ac309 --- /dev/null +++ b/chapter01/alfsdocs.sgml @@ -0,0 +1,10 @@ +<sect2> +<title>alfs-docs</title> + +<para> +ALFS-docs is the ALFS documentation project which creates and maintains +all of the ALFS documentation. +</para> + +</sect2> + diff --git a/chapter01/alfsipc.sgml b/chapter01/alfsipc.sgml new file mode 100644 index 000000000..493163830 --- /dev/null +++ b/chapter01/alfsipc.sgml @@ -0,0 +1,9 @@ +<sect2> +<title>alfs-ipc</title> + +<para> +The alfs-ipc list discusses the ALFS InterProcess Communication issues. +</para> + +</sect2> + diff --git a/chapter01/alfsprofile.sgml b/chapter01/alfsprofile.sgml new file mode 100644 index 000000000..96efae918 --- /dev/null +++ b/chapter01/alfsprofile.sgml @@ -0,0 +1,10 @@ +<sect2> +<title>alfs-profile</title> + +<para> +The alfs-profile list discusses the development of the ALFS XML profile +and DTD. +</para> + +</sect2> + diff --git a/chapter01/changelog.sgml b/chapter01/changelog.sgml new file mode 100644 index 000000000..08cbec8a9 --- /dev/null +++ b/chapter01/changelog.sgml @@ -0,0 +1,1041 @@ +<sect1 id="ch01-changelog"> +<title>Changelog</title> + +<para> +If, for example, a change is listed for chapter 5 it (usually) means the +same change has been made in the chapters for the other architectures. +</para> + +<para> +&version; - &releasedate; +</para> + +<itemizedlist> + +<listitem><para> +Chapter 1: Added the lfs-security list to the list of available +mailinglists. +</para></listitem> + +<listitem><para> +Chapter 1: Updated the mirror sites list. +</para></listitem> + +<listitem><para> +Chapter 5: Bash still had the --with-ncurses option which is a bogus +option (it may as well have said --with-foo-bar). It has been changed +into --with-curses (like it was already done in chapter 6) +</para></listitem> + +<listitem><para> +Chapter 5: Instead of CPPFLAGS=-Dvar=value ./configure during the +installation of diffutils, grep and sed, we now use export +CPPFLAGS=-Dvar=value && ./configure && unset CPPFLAGS. This was done to +get things working on some systems that don't work well with that +construction. +</para></listitem> + +<listitem><para> +Chapter 5 + 6: Added the --libexecdir parameter to fileutile's configure +command. This was done to avoid the creation of the $LFS/usr/libexec directory. +</para></listitem> + +<listitem><para> +Chapter 5 + 6: Added the --libexecdir parameter to tar's configure command. This +was done to avoid the creation of the $LFS/usr/libexec directory. +</para></listitem> + +<listitem><para> +Chapter 6: Moved the installation of the man-pages packages as the very +first package. This way we don't have to worry about files being +overwritten by this package's make install. It will install all the man +pages it has and as we install packages in chapter 6 those packages will +install their own man pages replacing the files from man-pages. +</para></listitem> + +<listitem><para> +Chapter 6: Added the copying of the man pages after console-tools has +been installed. +</para></listitem> + +<listitem><para> +Chapter 6: Provided a patch to sysvinit. Read the installation notes +what the patch is for. +</para></listitem> + +<listitem><para> +Chapter 6: Removed compiler optimization from the book. Thomas "Balu" +Walter has transformed it into an LFS-Hint. +</para></listitem> + +<listitem><para> +Chapter 6: Removed running of localedef. This apparently isn't needed. +</para></listitem> + +<listitem><para> +Chapter 6: Added the compress and uncompress symlinks to the +installation of gzip. +</para></listitem> + +<listitem><para> +Chapter 6: When entering chroot environment use absolute paths to the +env and bash programs instead of relying on $PATH to be set properly. +</para></listitem> + +<listitem><para> +Chapter 6: Override libexecdir's variable during the installation of +findutils. As findutils' configure script doesn't recognize the +libexecdir parameter, we'll override the variable during the make +install phase. +</para></listitem> + +<listitem><para> +Chapter 6: Instead of sed'ing the Makefile file during the installations +of procinfo, procps and psmisc, we pipe the output of sed to make and +build the packages that way. This is more effecient. +</para></listitem> + +<listitem><para> +Chapter 6: Use sed to modify the MCONFIG file. +</para></listitem> + +<listitem><para> +Chapter 6: Instead of using cp -avi to copy the files from the man-pages +package, we use cp -dRiv now. This is almost the same as -avi, it just +won't preserve the file attributes. The files from the packages would +otherwise be installed not owned by user root but with userid 1000 which +wasn't a good thing. +</para></listitem> + +<listitem><para> +Chapter 6: Mentioned the LFS-Hints' editor's section containing +alternatives to vim in case you don't want vim installed on your system. +</para></listitem> + +<listitem><para> +Chapter 6: Added the sysklogd-1.4 patch. Sysklogd out of the box comes +with a broken klogd - it's not able to intercept kernel messages. This +patch fixes this. +</para></listitem> + +<listitem><para> +Chapter 6: Instead of having two seperate fallthrough lines in the +inittab file (f1:0:... and f2:6:....) these are merged into one line +(ft:06:respawn:/sbin/sulogin). +</para></listitem> + +<listitem><para> +Chapter 7: Added comments to the boot scripts. +</para></listitem> + +<listitem><para> +Chapter 7: Modified the startup function in the rc script. No need to +distinguish between files that have an .sh extension or not. Also +removed the stty onlcr command. This one doesn't seem to be needed +anymore either. +</para></listitem> + +<listitem><para> +Chapter 7: When something is killed using the killproc function in the +functions script, sleep for 2 seconds before continuing to allow the +kill to be completed (sometimes it takes a little while before all +processes are terminated). +</para></listitem> + +<listitem><para> +Chapter 7: When the print_status function in the functions script is +called without a parameter don't abort the entire calling script, just +return an error value of 1. This function is non-essential so it won't +really affect anything when it doesn't run properly. +</para></listitem> + +<listitem><para> +Chapter 7: Merged the umountfs script with the mountfs script. +</para></listitem> + +<listitem><para> +Chapter 7: Fixed minor bug in the statusproc function in the functions +script. It read "$i is not running" - should be "$1 is not running". +</para></listitem> + +<listitem><para> +Chapter 7: The print_error_msg function in the rc script now asks the +user to press a key before continueing. This way the user is able to +write down certain information before it's potentially all lost. +</para></listitem> + +<listitem><para> +Chapter 7 + 9: Moved the boot script symlinks from including two digits +to three digits. This makes it easier to add scripts before and after +other scripts. +</para></listitem> + +<listitem><para> +Chapter 9: Split up the network boot scripts page over multiple pages +like the way the boot scripts are arranged in chapter 7. +</para></listitem> + +<listitem><para> +Chapter 9: Added a GATEWAY check to the ethnet script. If the GATEWAY +variable is set, the default gateway will be setup. +</para></listitem> + +<listitem><para> +Chapter 9: Added the restart option to the localnet and ethnet scripts. +</para></listitem> + +<listitem><para> +Chapter 9: Removed the ethnet K script when rebooting or halting. The +halt and reboot programs are called with the -i parameter which shut +down all network interfaces just before halt or reboot. +</para></listitem> + +<listitem><para> +Chapter 9: Removed --prefix=/usr from netkit-base. It doesn't do +anything useful. +</para></listitem> + +<listitem><para> +Appendix A: Added a description for blockdev from the util-linux +package. +</para></listitem> + +<listitem><para> +Appendix C: Updated the util-linux official download site link. +</para></listitem> + +<listitem><para> +Appendix C: Updated the man-pages official download site link. +</para></listitem> + +</itemizedlist> + +<para> +2.4.3 - November 21st, 2000 +</para> + +<itemizedlist> + +<listitem><para> +The LFS FTP archive has been moved to a new server which is reachable +under the name packages.linuxfromscratch.org. The reason for the move is +that this new server sits on a link with a lot more bandwidth to spare. +</para></listitem> + +<listitem><para> +Instead of having the reader create files by running vim or some editor, +the reader can now simply copy and paste a command that creates the file +in the form of <quote>cat > outputfile << EOF</quote> followed +by the text to put in the file and when a single line containing EOF is +read by cat, it stops reading and writes the file (not including the +EOF). This will be handy to put in scripts so you can make LFS +installations fully automatic. +</para></listitem> + +<listitem><para> +Added explanations on the commands being executed to make it clearer why +and what is being done to install the packages. +</para></listitem> + +<listitem><para> +Chapter 1: Updated the HTTP mirror list and added the FTP mirror list. +This list is up-to-date as of November 14th, 2000. +</para></listitem> + +<listitem><para> +Chapter 5: In the Bash installation changed the --with-curses configure +option to --with-ncurses. This seems to fix bash compilations on +distribution that don't have ncurses properly installed. +</para></listitem> + +<listitem><para> +Chapter 5: Instead of having the user replace <host> in the gcc +installation by whatever appears in $LFS/usr/lib/gcc-lib you can use a +*. This won't be a problem because the * will expand in only one +directory so the 'ln' command won't complain about it. This makes it +easier to automate as well. +</para></listitem> + +<listitem><para> +Chapter 6: Mentioned the -e parameter to perl's Configure script that +makes the script not ask you anything after it has created the config.sh +script. +</para></listitem> + +<listitem><para> +Chapter 6: Removed the creation of the /usr/bin/install symlink - this +symlink was already created earier in chapter 5 +</para></listitem> + +<listitem><para> +Chapter 6: Added the creation of /var/log/lastlog where utmp, btmp and +wtmp are created. +</para></listitem> + +<listitem><para> +Chapter 6: When the yacc script is created in the Bison section, execute +a chmod 755 on it so we can execute the script. +</para></listitem> + +<listitem><para> +Chapter 6: Cosmetic change to the inittab file. Instead of using +/dev/tty[1-6] as parameters to agetty we now use just 'dev[1-6]'. This +generates a nicer output from commands like 'w'. +</para></listitem> + +<listitem><para> +Chapter 7: Modified all scripts to use absolute paths instead of relying +on $PATH to be set. +</para></listitem> + +<listitem><para> +Chapter 7: In fstab changed <quote>none /proc proc defaults 0 0</quote> +to <quote>proc /proc proc defaults 0 0</quote>. Upon mount problems you +could get "none: device or resource busy" instead of "proc: device or +resourced busy". +</para></listitem> + +<listitem><para> +Appendix C: Fixed a couple of broken links. +</para></listitem> + +</itemizedlist> + +<para> +2.4.2 - October 11th, 2000 +</para> + +<itemizedlist> + +<listitem><para> +Chapter 3: Newer verions were mentioned, but the links were still +pointing to the older versions. Besides that I forgot to put the newer +package versions in the ftp archive. Both have been fixed now. +</para></listitem> + +<listitem><para> +Chapter 5: Instead of looking at the filename of the C library files to +determine which C library your starting Linux system uses we'll obtain +it by running <quote>strings /lib/libc* | grep "release version"</quote> +instead. +</para></listitem> + +<listitem><para> +Chapter 5+6: The proc file system must be mounted in chapter 5 before we +enter the chroot'ed environment since after chroot the mount program +will not be available yet. +</para></listitem> + +<listitem><para> +Chapter 6: Fixed a HTML bug in the GCC installation which caused a CR +character to appear in certain browser. +</para></listitem> + +</itemizedlist> + +<para> +2.4.1 - October 10th, 2000 +</para> + +<itemizedlist> + +<listitem><para> +Removed the bash prompts from the commands. This will make it much +easier to copy & paste the commands from the book onto the command +line. Typing them all out is great for the first few times, but it tends +to get tedious after a while. You can of course use scripts to do this +all, but that's not the goal of this book. That's part of a different +project (alfs.linuxfromscratch.org). +</para></listitem> + +<listitem><para> +Swapped chapters 8 and 9. Now we first reboot and then setup networking. +If done the other way around, networking programs won't work unless both +the normal system and the LFS system are going to run the same kernel +version, which often is not the case. Swapping the chapters eliminates +that possible problem. +</para></listitem> + +<listitem><para> +Chapter 3: All packages have been moved to download.linuxfromscratch.org and +the links are updated accordingly. The official download sites for all +the packages are listed in Appendix C. +</para></listitem> + +<listitem><para> +Chapter 5+6: Moved the execution of localedef after Glibc in chapter 5 +to after you entered chroot in chapter 6. It was a mistake (the only +real bug in 2.4) to put it in chapter 5. +</para></listitem> + +<listitem><para> +Chapter 6: Installing Vim as the first program. In case you need to edit +something you an editor available right away. This also caused a couple +of other packages to be moved to satisfy depencies. +</para></listitem> + +<listitem><para> +Chapter 6: When we use sed to modify a Makefile file we now run make as +<quote>make -f Makefile2</quote> instead of <quote>mv Makefile2 Makefile +&& make</quote>. +</para></listitem> + +<listitem><para> +Chapter 6: Added the <quote>publickey: files</quote> line to the +nsswitch.conf file. This is needed when you run a 2.4 kernel to login +properly. +</para></listitem> + +<listitem><para> +Chapter 6: Added the /usr/bin/yacc script that runs bison with the -y +switch to emulate yacc's output file name conventions. This is done +because there are a few packages out there that rely on yacc and can't +work with bison (yet). +</para></listitem> + +<listitem><para> +Chapter 6: Modified the /usr/sbin/makewhatis script after the +installation of the man package. The /usr/sbin/makewhatis script needs +the AWK= variable defined to /usr/bin/mawk. +</para></listitem> + +<listitem><para> +Chapter 7: Added the template script. This way you can easily add new +bootscripts without having to write them from scratch. +</para></listitem> + +</itemizedlist> + +<para> +2.4 - August 28th, 2000 +</para> + +<itemizedlist> + +<listitem><para> +Split the book up into two differnet books for Intel and PPC. +</para></listitem> + +<listitem><para> +Chapter 4: Added the mail and dev/pts directories to the +<quote>Creating directories</quote> section. +</para></listitem> + +<listitem><para> +Chapter 5: Everything from chroot and after has been put in a new +chapter. +</para></listitem> + +<listitem><para> +Chapter 6: Moved the optimization part to the point just before you +enter the chroot'ed environment. It's a waste to use compiler +optimizations for the static packages since they will be replaced +anyways. +</para></listitem> + +<listitem><para> +Chapter 6: To enter chroot we first cd to the $LFS/root directory. Some +older chroot programs have problems when you enter chroot when your +starting directory isn't inside the chroot environment. Also we don't +execute bash directly in the chroot'ed environment, but we start the +<quote>env</quote> program so we can enter with a clean environment that +only has CFLAGS and CXXFLAGS set. +</para></listitem> + +<listitem><para> +Chapter 6: A few people have had problems compiling M4 in the chroot'ed +enviroment. Instructions are provided how to install this package +statically for the affected users. +</para></listitem> + +<listitem><para> +Chapter 6: We can't move the 'mv' program during the dynamic +installation of the fileutils package with the mv program. So we copy +it to /bin first, then remove the /usr/bin/mv one. +</para></listitem> + +<listitem><para> +Chapter 5: Added 'make localedata/install-locales' to the Glibc +installation. This installs the locale files that various applications +use (most notable GDK applications) if you have an NLS capable system +(which LFS is, but with missing locales it's almost useless) +</para></listitem> + +<listitem><para> +Chapter 6: Moved vim's installation before Lilo since you might want to +edit Lilo's Makefile file to add compiler optimization. +</para></listitem> + +<listitem><para> +Chapter 6: Moved the installatin of shadow password suit after sh-utils. +Else sh-utils replaces the <quote>su</quote> version from shadow +password with it's own version which shouldn't happen. +</para></listitem> + +<listitem><para> +Chapter 6: Changed the way we enter the chroot'ed environment. We use +the <quote>env</quote> to create an empty enviroment so that enviroment +variables from the normal Linux system won't interfer in the chroot +enviroment. The only variable set when entering the chroot'ed +environment is the HOME variable. +</para></listitem> + +<listitem><para> +Chapter 6: Because of the new way we enter chroot, the +$LFS/root/.bash_profile file has been created that sets a few variables +like TERM, CFLAGS, CXXFLAGS and whatever you deem necesarry. +</para></listitem> + +</itemizedlist> + +<para> +2.3.7 - August 3rd, 2000 +</para> + +<itemizedlist> + +<listitem><para> +All chapters: Removed the <blockquote> SGML tags so that the contents of +files isn't indented anymore. This improves the easy of copy and pasting +from the book into your files without needing to manually reformat the +files to get rid of the indentations. +</para></listitem> + +<listitem><para> +Chapter 4: Added var/tmp to the <quote>chmod 1777 tmp usr/tmp</quote> +command. +</para></listitem> + +<listitem><para> +Chapter 4: Made mkdir commands less repetitive by putting the creation +of the directories in $LFS/usr and $LFS/usr/local in a for-loop. +</para></listitem> + +<listitem><para> +Chapter 5: Moved the chmod 754 command for MAKEDEV after the sed +operation. +</para></listitem> + +<listitem><para> +Chapter 5: Changed the order in which packages are installed to conform +more to a alphabetically ordering. +</para></listitem> + +<listitem><para> +Chapter 5: After console-tools has been installed the +/usr/share/defkeymap.kmap.gz file is created which will be used by the +loadkeys script. +</para></listitem> + +<listitem><para> +Chapter 5: Removed <quote>gcc -c watch.c</quote> from <quote>Installing +Procps</quote>. Please let us know if this is still needed on certain +hardware. +</para></listitem> + +<listitem><para> +Chapter 5: Added the /usr/bin/install symbolic link as it seems that at +least one package (sysklogd) has the install location hard coded in it's +Makefile file. +</para></listitem> + +<listitem><para> +Chapter 5: After gettext has been installed, we have a file /po-mode.el. +This file will be moved to /usr/share/gettext where it probably belongs. +</para></listitem> + +<listitem><para> +Chapter 5: Instead of passing --with-root-prefix=/ to e2fsprogs' +configure script, we now pass --with-root-prefix= +</para></listitem> + +<listitem><para> +Chapter 5: When gzip is installed and the files moved to /bin the hard +link between the files is removed. So we just move gzip to /bin and create +a symlink between gzip and gunzip. +</para></listitem> + +<listitem><para> +Chapter 5: In the chroot environment: changed the installation order of +a few packages who's dependencies have changed over time. +</para></listitem> + +<listitem><para> +Chapter 5: inittab file has been slightly updated to better support the +single user run level. When you change to run level S, s or 1 it will do +it's job properly now. +</para></listitem> + +<listitem><para> +Chapter 6: Fixed typo in the rc script (! -f sysinit_start -> ! -f +$sysinit_start). +</para></listitem> + +<listitem><para> +Chapter 6: Changed the loadkeys command in the loadkeys script. New +command is: loadkeys -d which loads the +/usr/share/keymaps/defkeymap.kmap.gz file. +</para></listitem> + +<listitem><para> +Chapter 6: Changed <quote>. /etc/init.d/functions</quote> into +<quote>source /etc/init.d/functions</quote>. +</para></listitem> + +<listitem><para> +Chapter 6: Removed the <quote>rm /fastboot</quote> command from the +checkfs script. +</para></listitem> + +</itemizedlist> + +<para> +2.3.6 - July 19th, 2000 +</para> + +<itemizedlist> + +<listitem><para> +Chapter 3: Re-ordered the software download list so it once again matches +the order in which packages are used (the first package listed in the +list is the first package that we will be using in the book, the second +listed package will be the second package used in the book, etc). +</para></listitem> + +<listitem><para> +Chapter 3: Added the file sizes of the packages you have to download. +</para></listitem> + +<listitem><para> +Chapter 3: Removed the start-stop-daemon package. +</para></listitem> + +<listitem><para> +Chapter 3: Added the findutils and glibc patches to the package list. +</para></listitem> + +<listitem><para> +Chapter 3: Added the man-pages package to the package list. +</para></listitem> + +<listitem><para> +Chapter 4: Moved the creation of the $LFS/dev/ files to chapter 5 after +we have entered the chroot environment. This is done because GID's on +normal system and LFS system might differ and the MAKEDEV script depends +on the GID's. +</para></listitem> + +<listitem><para> +Chapter 5: Added the installation of the man-pages package. +</para></listitem> + +<listitem><para> +Chapter 5: Added a few commonly used groups to the /etc/group file when +it is created (these are the groups needed by the MAKEDEV script). +</para></listitem> + +<listitem><para> +Chapter 5: The /proc/devices file is copied to $LFS/proc for the benefit +of the MAKEDEV script. The presence of this file ensures the proper +creation of the device files. +</para></listitem> + +<listitem><para> +Chapter 5: Layout changes. Every package installation has it's own page +now. Also the text from appendixa for every package is included with the +installation instructions so you can read what a package is about during +(or after or before) the installation of it. +</para></listitem> + +<listitem><para> +Chapter 5: Removed the patches for diffutils, grep, gzip and sed that +used to fix static link problems. The problems can be fixed by +passing compile arguments to the C pre-processor (cpp) instead. +</para></listitem> + +<listitem><para> +Chapter 5: Added the --disable-termcap option to configure to disable +termcap backward compatibility (if you want to know why termcap isn't used +anymore, please read the INSTALL file that comes with the Ncurses +package). +</para></listitem> + +<listitem><para> +Chapter 5: Added a few missing files from the fileutils package to the +<quote>mv</quote> commands. +</para></listitem> + +<listitem><para> +Chapter 5: Removed the installation of the start-stop-daemon package. +</para></listitem> + +<listitem><para> +Chapter 5: Removed the -e parameters from the make command lines. +</para></listitem> + +<listitem><para> +Chapter 5: Instead of editing the procinfo, procps and psmisc Makefile +files with a text editor, the sed command it used. +</para></listitem> + +<listitem><para> +Chapter 6: Added the setclock script in case your hardware clock isn't +set to GMT. +</para></listitem> + +<listitem><para> +Chapter 6: Removed the use of the start-stop-daemon program and replaced +them with custom functions that use programs like pidof and kill to +accomplish the same tasks but with more control over what happens. +</para></listitem> + +<listitem><para> +Chapter 6: Added the loadproc and killproc functions to the +/etc/init.d/functions file that take over the functions +the start-stop-daemon program used to perform. +</para></listitem> + +<listitem><para> +Chapter 6: When the checkfs script runs without errors it now prints a +green OK. +</para></listitem> + +<listitem><para> +Chapter 6: When /fastboot or /forcefsck exist, they won't be deleted +from within the checkfs script but from within the mountfs script as +soon as the root partition has been remounted in read-write mode. +</para></listitem> + +<listitem><para> +Chapter 6 & 7: Instead of sourcing a file with <quote>. +/etc/init.d/functions</quote>, <quote>source /etc/init.d/functions</quote> +is now used. This makes it easier to read and is clearer for persons who +don't know much about scripting. +</para></listitem> + +<listitem><para> +Appendix A: removed start-stop-daemon. +</para></listitem> + +<listitem><para> +Appendix B: Removed a few unrelated items from the book and howto +sections (the references to Sendmail and ISP-Hookup-HOWTO). +</para></listitem> + +</itemizedlist> + +<para> +2.3.5 - June 19th, 2000 +</para> + +<itemizedlist> + +<listitem><para> +Chapter 3: Updated LILO download location +</para></listitem> + +<listitem><para> +Chapter 3: Updated Shadow Password Suite download location +</para></listitem> + +<listitem><para> +Chapter 3: Updated the Flex download location +</para></listitem> + +<listitem><para> +Chapter 3: Updated the File download location +</para></listitem> + +<listitem><para> +Chapter 3: Added netkit-base and net-tools to the mandatory packages +section +</para></listitem> + +<listitem><para> +Chapter 5: A glibc-2.1.3 patch is available if you have problems +compiling glibc on a bash-2.04 machine. +</para></listitem> + +<listitem><para> +Chapter 5: Added compiler optimization +</para></listitem> + +<listitem><para> +Chapter 5: Added the creation of the root password to +<quote>Configuring essential software</quote> +</para></listitem> + +<listitem><para> +Chapter 5: The Linux86 package has been replaced by the Bin86 +package. +</para></listitem> + +<listitem><para> +Chapter 5: Included information on how to optimize compilations. +</para></listitem> + +<listitem><para> +Chapter 5: Moved installation of Groff and Man before Perl. This +way Perl known how to install man pages and where to install them. +</para></listitem> + +<listitem><para> +Chapter 5: Changed GCC's local-prefix option to /usr/local instead +of /usr (this was still a residue from the time where /usr/local was a +symbolic link to /usr) +</para></listitem> + +<listitem><para> +Chaper 5: Fixed the commands when a patch is used and the patch +filename contained the .gz suffix. +</para></listitem> + +<listitem><para> +Chapter 5: Added --disable-nls to every configure command in the +<quote>Perparing the LFS system...</quote> section which didn't have it yet. +</para></listitem> + +<listitem><para> +Chapter 5: Added the installation of bash-2.03 so you have a shell +that can be used to compile packages that violate POSIX standards +regarding valid characters in variable names +</para></listitem> + +<listitem><para> +Chapter 5: Added the installation of console-tools and console-data +for people who have non-US keyboards +</para></listitem> + +<listitem><para> +Chapter 5: Moved the ed program to the /bin directory conforming +the FHS standard +</para></listitem> + +<listitem><para> +Chapter 6 & 7: Implemented LSB recommended run level scheme. +</para></listitem> + +<listitem><para> +Chapter 6 & 7: Implemented <quote>fancy bootscripts</quote>. When +something fails in a bootscript it still says FAILED but the text red. +When something succeeded it still will print OK but the text is green. +</para></listitem> + +<listitem><para> +Chater 6: Added the loadkeys scripts for people with non-US +keyboards +</para></listitem> + +<listitem><para> +Chapter 6: Added the /etc/sysconfig directory to "Creating directories" +</para></listitem> + +<listitem><para> +Chapter 6: Renamed the checkroot boot script into checkfs. The +script also checks other file systems now. +</para></listitem> + +<listitem><para> +Chapter 6: Updated the mountfs boot script to mount all file +systems that are mentioned in the /etc/fstab file and don't have the +noauto option set. +</para></listitem> + +<listitem><para> +Chapter 6: After checkfs evaluated the existence of /fastboot or +/forcecheck it will remove those files. +</para></listitem> + +<listitem><para> +Chapter 6 & 7: Changed the mode of the boot scripts from 755 to +754 +</para></listitem> + +<listitem><para> +Chapter 7: Moved system specific information for hostname and ethernet +configuration to the /etc/sysconfig/network file +</para></listitem> + +<listitem><para> +Chapter 7: Removed the default gateway command +</para></listitem> + +<listitem><para> +Chapter 7: Fixed the typo in the ethnet script (NETMAKSK -> +NETMASK) +</para></listitem> + +<listitem><para> +Chapter 7: A net-tools patch is available to fix a minor bug in the +package (illegal variable names that bash-2.04 will complain about) +</para></listitem> + +</itemizedlist> + +<para> +2.3.4 - June 5th, 2000 +</para> + +<itemizedlist> + +<listitem><para> +Chapter 5: Fixed the kernel header files configuration +</para></listitem> + +<listitem><para> +Chapter 5: Fixed the lilo configuration +</para></listitem> + +</itemizedlist> + +<para> +2.3.3 - May 15th, 2000 +</para> + +<itemizedlist> + +<listitem><para> +Changed the default mount point from /mnt/xxx to /mnt/lfs (where xxx used +to be the partition's designation like hda5, sda5 and others). The +reason for the change is to make cross-platform instructions easier. +</para></listitem> + +<listitem><para> +Chapter 4: Changed the default modes for the $LFS/root and $LFS/tmp +directory to respectively 0750 and 1777. +</para></listitem> + +<listitem><para> +Chapter 5: Removed the encoded password from the passwd file. Instead a +file with no set password is created. The root password can be set by +the user when the system is rebooted into the LFS system (after chapter +8). +</para></listitem> + +<listitem><para> +Chapter 5: Fixed the procps compile command for watch.c. It should +compile properly now. +</para></listitem> + +<listitem><para> +Chapter 5: Fixed gzip patch installation (used the wrong filename in the +patch command +</para></listitem> + +<listitem><para> +Chapter 5: Changed 'entering the chroot'ed environment' to make bash a +login shell. +</para></listitem> + +<listitem><para> +Chapter 5: Configuring the kernel has been moved to this chapter because +it needs to be done before programs like e2fsprogs and lilo are +compiled. +</para></listitem> + +<listitem><para> +Chapter 6: Fixed the rc script. It now checks to see if the previous +run level starts a service before attempting to stop it in the new +run level. Also, if a service is already started in the previous run +level it won't attempt to start the service in the new run level again. +Thanks to Jason Pearce for providing this fixed script. +</para></listitem> + +<listitem><para> +Chapter 7: Fixed the ethnet script - removed paratheses from the +environment variables and removed the command to add a route. The +ifconfig command used to bring the eth device up already sets this route. +</para></listitem> + +</itemizedlist> + +<para> +2.3.2 - April 18th, 2000 +</para> + +<itemizedlist> + +<listitem><para> +Chapter 4.7: Change only the owner of the $LFS/dev/* files +</para></listitem> + +<listitem><para> +Fixed a large amount of typo's that occured during the transistion from +the LinuxDoc DTD (2.2 and lower) to the DocBook DTD (2.3.1 and higher). +</para></listitem> + +<listitem><para> +Moved chapters around quite a bit and applied a new structure in the book. +Installations for Intel, Apple PowerPC and future systems will be put in +their own dedicated part of the book. +</para></listitem> + +<listitem><para> +After the system is prepared to install the basic system software, we no +longer reboot the system but instead we setup a chroot'ed environment. This +will have the same effect without having to reboot. +</para></listitem> + +<listitem><para> +Apple PowerPC has it's own dedicated chapters now. This should increase +readability a lot +</para></listitem> + +<listitem><para> +All optional chapters have been removed. LFS follows a <quote>we provide +the foundation, it's up to you to build the rest of the house</quote> +philosophy. +</para></listitem> + +<listitem><para> +Replaced the fixed packages by patch files. This way you can see what needs +to be changed in a package in order to get it to compile properly. +</para></listitem> + +</itemizedlist> + +<para> +2.3.1 - April 12th, 2000 +</para> + +<itemizedlist> + +<listitem><para> +Chapter 4.4: Added the $LFS/usr/info symlink which points to +$LFS/usr/share/info +</para></listitem> + +<listitem><para> +Chapter 7.3.1: Added a second variation to a 'swap-line' in a fstab file. +</para></listitem> + +<listitem><para> +Chapter 7.3.2: Removed $LFS from the commands. +</para></listitem> + +<listitem><para> +Chapter 7.4.43: Added the vi symlink +</para></listitem> + +<listitem><para> +Chapter 9.2.5: Improved ethnet script to include routing information +</para></listitem> + +<listitem><para> +Chapter 10.1.2: Fixed missing subdirectory 'mqueue' in mkdir /var/spool -> +/mkdir /var/spool/mqueue +</para></listitem> + +<listitem><para> +Chapter 10.1.4: Updated the sendmail configuration file with a few necessary +options +</para></listitem> + +<listitem><para> +Chapter 10.1.7: Fixed wrong directory path /etc/init.d/rc2.d -> /etc/rc2.d +</para></listitem> + +</itemizedlist> + +</sect1> + diff --git a/chapter01/chapter1.sgml b/chapter01/chapter1.sgml new file mode 100644 index 000000000..7541e6129 --- /dev/null +++ b/chapter01/chapter1.sgml @@ -0,0 +1,12 @@ +<chapter id="chapter01"> +<title>Introduction</title> + +&c1-introduction; +&c1-how; +&c1-versions; +&c1-acknowledgements; +&c1-changelog; +&c1-mlarchive; +&c1-contactinfo; + +</chapter> diff --git a/chapter01/contactinfo.sgml b/chapter01/contactinfo.sgml new file mode 100644 index 000000000..172eb2092 --- /dev/null +++ b/chapter01/contactinfo.sgml @@ -0,0 +1,17 @@ +<sect1 id="ch01-contactinfo"> +<title>Contact information</title> + +<para> +Direct all your emails to the +<ulink url="mailto:lfs-discuss@linuxfromscratch.org">lfs-discuss +</ulink> mailinglist preferably. +</para> + +<para> +If you need to reach Gerard Beekmans personally, send an email to +<ulink url="mailto:gerard@linuxfromscratch.org"> +gerard@linuxfromscratch.org</ulink> +</para> + +</sect1> + diff --git a/chapter01/how.sgml b/chapter01/how.sgml new file mode 100644 index 000000000..cd3ff1b1b --- /dev/null +++ b/chapter01/how.sgml @@ -0,0 +1,24 @@ +<sect1 id="ch01-how"> +<title>How things are going to be done</title> + +<para> +We are going to build the LFS system by using an already installed Linux +distribution such as Debian, SuSe, Slackware, Mandrake, RedHat, etc. You +don't need to have any kind of bootdisk. We will use an existing Linux +system as the base (since we need a compiler, linker, text editor and other +tools). +</para> + +<para> +If you don't have Linux installed yet, you won't be able to put this +book to use right away. I suggest you first install a Linux +distribution. It really doesn't matter which one you install. It also +doesn't need to be the latest version, though it shouldn't be a too old one. +If it is about a year old or newer it should do just fine. You will save +yourself a lot of trouble if your normal system uses glibc-2.1 or newer. +Libc5 isn't supported by this book, though it isn't impossible to use a +libc5 system if you have no choice. +</para> + +</sect1> + diff --git a/chapter01/introduction.sgml b/chapter01/introduction.sgml new file mode 100644 index 000000000..94e5b1998 --- /dev/null +++ b/chapter01/introduction.sgml @@ -0,0 +1,26 @@ +<sect1 id="ch01-intro"> +<title>Introduction</title> + +<para> +Having used a number of different Linux distributions, I was never fully +satisfied with any of those. I didn't like the way the bootscripts were +arranged, or I didn't like the way certain programs were configured by +default and more of those things. I came to realize that when I want to +be totally satisfied with a Linux system, I have to build my own Linux +system from scratch, ideally only using the source code. Not using +pre-compiled packages of any kind. No help from some sort of cdrom or +bootdisk that would install some basic utilities. You would use your current +Linux system and use that one to build your own. +</para> + +<para> +This, at one time, wild idea seemed very difficult and at times almost +impossible. The reason for most problems were due to my lack of knowledge +about certain programs and procedures. After sorting out all kinds of +dependency problems, compilation problems, etcetera, a custom built Linux +system was created and fully operational. I called this system an LFS +system, which stands for LinuxFromScratch. +</para> + +</sect1> + diff --git a/chapter01/lfsannounce.sgml b/chapter01/lfsannounce.sgml new file mode 100644 index 000000000..c82c623a1 --- /dev/null +++ b/chapter01/lfsannounce.sgml @@ -0,0 +1,15 @@ +<sect2> +<title>lfs-announce</title> + +<para> +The lfs-announce list is a moderated list. You can subscribe to it, but +you can't post any messages to this list. This list is used to announce +new stable releases. If you want to be informed about development +releases as well then you'll have to join the lfs-discuss list. If +you're already on the lfs-discuss list there's little use subscribing to +this list as well because everything that is posted to the lfs-announce +list will be posted to the lfs-discuss list as well. +</para> + +</sect2> + diff --git a/chapter01/lfsapps.sgml b/chapter01/lfsapps.sgml new file mode 100644 index 000000000..be8da7f9f --- /dev/null +++ b/chapter01/lfsapps.sgml @@ -0,0 +1,10 @@ +<sect2> +<title>lfs-apps</title> + +<para> +The lfs-apps list deals with everything that does not fit on the +lfs-discuss list. +</para> + +</sect2> + diff --git a/chapter01/lfsdiscuss.sgml b/chapter01/lfsdiscuss.sgml new file mode 100644 index 000000000..7fb452038 --- /dev/null +++ b/chapter01/lfsdiscuss.sgml @@ -0,0 +1,15 @@ +<sect2> +<title>lfs-discuss</title> + +<para> +The lfs-discuss mailinglist discusses matters strictly related to the +LFS-BOOK. If you have problems with the book, want to report a bug or +two or have suggestions to improve the book, use this mailinglist. +</para> + +<para> +Any other mail is to be posted on the lfs-apps list. +</para> + +</sect2> + diff --git a/chapter01/lfssecurity.sgml b/chapter01/lfssecurity.sgml new file mode 100644 index 000000000..99cb72756 --- /dev/null +++ b/chapter01/lfssecurity.sgml @@ -0,0 +1,11 @@ +<sect2> +<title>lfs-security</title> + +<para> +The lfs-security mailinglist discusses security related matters. If you +have security concerns or have heard about a package used by LFS that +has known security problems, you can address that on this list. +</para> + +</sect2> + diff --git a/chapter01/mailarchive.sgml b/chapter01/mailarchive.sgml new file mode 100644 index 000000000..be5e21638 --- /dev/null +++ b/chapter01/mailarchive.sgml @@ -0,0 +1,13 @@ +<sect2> +<title>Mail archives</title> + +<para> +Every publically available mailinglist has a mailinglist archive +you can access to find information on subjects already posted to +this list. You can find them at +<ulink url="http://archive.linuxfromscratch.org/mail-archives"> +http://archive.linuxfromscratch.org/mail-archives</ulink> +</para> + +</sect2> + diff --git a/chapter01/mlarchive.sgml b/chapter01/mlarchive.sgml new file mode 100644 index 000000000..06ac6b51c --- /dev/null +++ b/chapter01/mlarchive.sgml @@ -0,0 +1,58 @@ +<sect1 id="ch01-mlarchives"> +<title>Mailinglists and archives</title> + +<para> +The linuxfromscratch.org server is hosting the following public accessible +mailinglists: +</para> + +<itemizedlist> + +<listitem><para> + lfs-discuss +</para></listitem> + +<listitem><para> + lfs-apps +</para></listitem> + +<listitem><para> + lfs-announce +</para></listitem> + +<listitem><para> + lfs-security +</para></listitem> + +<listitem><para> + alfs-discuss +</para></listitem> + +<listitem><para> + alfs-docs +</para></listitem> + +<listitem><para> + alfs-ipc +</para></listitem> + +<listitem><para> + alfs-profile +</para></listitem> + +</itemizedlist> + +&c1-ma-lfsdiscuss; +&c1-ma-lfsapps; +&c1-ma-lfsannounce; +&c1-ma-lfssecurity; +&c1-ma-alfsdiscuss; +&c1-ma-alfsdocs; +&c1-ma-alfsipc; +&c1-ma-alfsprofile; +&c1-ma-subscribe; +&c1-ma-unsubscribe; +&c1-ma-mailarchive; + +</sect1> + diff --git a/chapter01/subscribe.sgml b/chapter01/subscribe.sgml new file mode 100644 index 000000000..ceb4d4968 --- /dev/null +++ b/chapter01/subscribe.sgml @@ -0,0 +1,39 @@ +<sect2> +<title>How to subscribe?</title> + +<para> +You can subscribe to any of the above mentioned mailinglists by sending +an email to <ulink url="mailto:listar@linuxfromscratch.org"> +listar@linuxfromscratch.org</ulink> and write <emphasis>subscribe +listname</emphasis> in the subject line of the message. +</para> + +<para> +You can, if you want, subscribe to multiple lists at the same time using +one email. If you want to do so, write some junk in the subject +line, something that isn't a valid command like "hello". Then write +the subscribe commands in the body of the message. The email will look +like: +</para> + +<blockquote><literallayout> + +To: listar@linuxfromscratch.org +Subject: hello + +subscribe lfs-discuss +subscribe lfs-apps +subscribe alfs-discuss + +</literallayout></blockquote> + +<para> +After you have sent the email, the Listar program will send you an +email back requesting a confirmation of your subscription request. After +you have sent back this confirmation email, Majordomo will send you an +email again with the message that you have been subscribed to the +list(s) along with an introduction message for that particulair list. +</para> + +</sect2> + diff --git a/chapter01/unsubscribe.sgml b/chapter01/unsubscribe.sgml new file mode 100644 index 000000000..584c7c95f --- /dev/null +++ b/chapter01/unsubscribe.sgml @@ -0,0 +1,39 @@ +<sect2> +<title>How to unsubscribe?</title> + +<para> +To unsubscribe from a list, send an email to +<ulink url="mailto:listar@linuxfromscratch.org"> +listar@linuxfromscratch.org</ulink> and write <emphasis>unsubscribe +listname</emphasis> in the subject line of the message. +</para> + +<para> + +You can, if you want, unsubscribe from multiple lists at the same time +using one email. If you want to do so, write some junk in the +subject line, something that isn't a valid command like "hello". Then +write the unsubscribe commands in the body of the message. The email +will look like: +</para> + +<blockquote><literallayout> + +To: listar@linuxfromscratch.org +Subject: hello + +unsubscribe lfs-discuss +unsubscribe lfs-apps +unsubscribe alfs-discuss +</literallayout></blockquote> + +<para> +After you have sent the email, the Listar program will send you an +email back requesting a confirmation of your unsubscription +request. After you have sent back this confirmation email, Listar will +send you an email again with the message that you have been unsubscribed +from the list(s). +</para> + +</sect2> + diff --git a/chapter01/versions.sgml b/chapter01/versions.sgml new file mode 100644 index 000000000..bdfe7c8df --- /dev/null +++ b/chapter01/versions.sgml @@ -0,0 +1,109 @@ +<sect1 id="ch01-versions"> +<title>Book versions</title> + +<para> +This is LFS-BOOK-&type; version &version; version dated &releasedate;. If this +version is older than a month you definitely want to take a look at our +website and check if there is a newer version available for download. +</para> + +<para> +Below you will find a list of our current HTTP and FTP mirror sites as +of December 19th, 2000. This list might not be accurate anymore. For +the latest info check our website at +<ulink url="http://www.linuxfromscratch.org"> +http://www.linuxfromscratch.org</ulink> +</para> + +<sect2> +<title>HTTP Mirrors</title> + +<itemizedlist> + +<listitem><para> +Columbus, Ohio, United States - <ulink +url="http://www.linuxfromscratch.org/intro/"> +http://www.linuxfromscratch.org/intro/</ulink> +</para></listitem> + +<listitem><para> +United States - <ulink +url="http://lfs.sourceforge.net/intro/"> +http://lfs.sourceforge.net/intro/</ulink> +</para></listitem> + +<listitem><para> +Canmore, Alberta, Canada - <ulink +url="http://www.ca.linuxfromscratch.org/intro/"> +http://www.ca.linuxfromscratch.org/intro/</ulink> +</para></listitem> + +<listitem><para> +Braunschweig, Niedersachsen, Germany - <ulink +url="http://www.de.linuxfromscratch.org/intro/"> +http://www.de.linuxfromscratch.org/intro/</ulink> +</para></listitem> + +<listitem><para> +Mainz, Germany, Europe - <ulink +url="http://lfs.linux-provider.net/intro/"> +http://lfs.linux-provider.net/intro/</ulink> +</para></listitem> + +<listitem><para> +Australia (accessible from within AU/NZ only) - <ulink +url="http://lfs.mirror.aarnet.edu.au/intro/"> +http://lfs.mirror.aarnet.edu.au/intro/</ulink> +</para></listitem> + +</itemizedlist> + +</sect2> + +<sect2> +<title>FTP Mirrors</title> + +<itemizedlist> + +<listitem><para> +Columbus, Ohio, USA - <ulink +url="ftp://packages.linuxfromscratch.org"> +ftp://packages.linuxfromscratch.org</ulink> +</para></listitem> + +<listitem><para> +Canmore, Alberta, Canada [FTP interface to FTP archive] - <ulink +url="ftp://ftp.ca.linuxfromscratch.org"> +ftp://ftp.ca.linuxfromscratch.org</ulink> +</para></listitem> + +<listitem><para> +Canmore, Alberta, Canada [HTTP inteface to FTP archive] - <ulink +url="http://ftp.ca.linuxfromscratch.org"> +http://ftp.ca.linuxfromscratch.org</ulink> +</para></listitem> + +<listitem><para> +Mainz, Germany, Europe [FTP interface to FTP archive] - <ulink +url="ftp://ftp.linux-provider.net/pub/lfs/"> +ftp://ftp.linux-provider.net/pub/lfs/</ulink> +</para></listitem> + +<listitem><para> +Mainz, Germany, Europe [HTTP interface to FTP archive] - <ulink +url="http://ftp.linux-provider.net/lfs/"> +http://ftp.linux-provider.net/lfs/</ulink> +</para></listitem> + +<listitem><para> +Australia (accessible from within AU/NZ only) - <ulink +url="ftp://mirror.aarnet.edu.au/pub/pub/lfs/"> +ftp://mirror.aarnet.edu.au/pub/lfs/</ulink> +</para></listitem> + +</itemizedlist> + +</sect2> + +</sect1> + diff --git a/chapter02/aboutlfs.sgml b/chapter02/aboutlfs.sgml new file mode 100644 index 000000000..44675577c --- /dev/null +++ b/chapter02/aboutlfs.sgml @@ -0,0 +1,51 @@ +<sect1 id="ch02-aboutlfs"> +<title>About $LFS</title> + +<para> +Please read the following carefully: throughout this book you will +frequently see the variable name $LFS. $LFS must at all times be +replaced by the directory where the partition that contains the LFS system +is mounted. How to create and where to mount the partition will be +explaind in full detail later on in chapter 4. In my case the LFS +partition is mounted on /mnt/lfs. If I read this book myself and I see +$LFS somewhere, I will pretend that I read /mnt/lfs. If I read that +I have to run this command: cp inittab $LFS/etc I actually will run this: +cp inittab /mnt/lfs/etc +</para> + +<para> +It's important that you do this no matter where you read it; be it in +commands you enter on the prompt, or in a file you edit or create. +</para> + +<para> +If you want, you can set the environment variable LFS. This way you can +literally enter $LFS instead of replacing it by something like +/mnt/lfs. This is accomplished by running: export LFS=/mnt/lfs +</para> + +<para> +If I read cp inittab $LFS/etc, I literally can type cp inittab $LFS/etc +and the shell will replace this command by cp inittab /mnt/lfs/etc +automatically. +</para> + +<para> +Do not forget to set the $LFS variable at all times. If you haven't set +the variable and you use it in a command, $LFS will be ignored and whatever +is left will be executed. The command cp inittab $LFS/etc without the $LFS +variable set, will result in copying the inittab file to the /etc +directory which will overwrite your system's inittab. A file like inittab +isn't that big a problem as it can easily be restored, but if you would +make this mistake during the installation of the C Library, you can +damage things. +</para> + +<para> +One way to make sure that $LFS is set at all times you could add it to +your /root/.bash_profile and/or /root/.bashrc file(s) so everytime you +'su' to user too as to install LFS, the $LFS variable is set for you. +</para> + +</sect1> + diff --git a/chapter02/bootscripts.sgml b/chapter02/bootscripts.sgml new file mode 100644 index 000000000..f1595b152 --- /dev/null +++ b/chapter02/bootscripts.sgml @@ -0,0 +1,19 @@ +<sect1 id="ch02-bootscripts"> +<title>Download the bootscripts</title> + +<para> +Typing out all the bootscripts in chapters 7 and 9 can be a long tedious +process, not to mention very error prone. +</para> + +<para> +To save you guys and girls some time, you can download the bootscripts +from <ulink +url="http://download.linuxfromscratch.org/bootscripts/"> +http://download.linuxfromscratch.org/bootscripts/</ulink> or <ulink +url="ftp://download.linuxfromscratch.org/bootscripts/"> +ftp://download.linuxfromscratch.org/bootscripts/</ulink> +</para> + +</sect1> + diff --git a/chapter02/chapter2.sgml b/chapter02/chapter2.sgml new file mode 100644 index 000000000..e58f87cee --- /dev/null +++ b/chapter02/chapter2.sgml @@ -0,0 +1,10 @@ +<chapter id="chapter02"> +<title>Important information</title> + +&c2-aboutlfs; +&c2-download; +&c2-install; +&c2-bootscripts; +&c2-commands; + +</chapter> diff --git a/chapter02/commands.sgml b/chapter02/commands.sgml new file mode 100644 index 000000000..3c64b2f76 --- /dev/null +++ b/chapter02/commands.sgml @@ -0,0 +1,31 @@ +<sect1 id="ch02-commands"> +<title>Download the LFS Commands</title> + +<para> +LFS Commands is a tarball containing files which list the installation +commands for the packages installed in this book. These files can be +used to dump to your shell and install the packages, though some files +need to be modified (for example when you install the console-tools +package you need to select your keyboard layout file which can't be guessed). +</para> + +<para> +These files can be used to quickly find out which commands have been +changed between the different LFS versions as well. You can download the +lfs-commands tarball for this book version and the previous book version +and run a diff on the files. That way you can see which package have +updated installation instructions so you can modify your own scripts, or +reinstall a package if you deem necessary. +</para> + +<para> +The lfscommands can be downloaded from <ulink +url="http://download.linuxfromscratch.org/lfs-commands/"> +http://download.linuxfromscratch.org/lfs-commands/</ulink> or <ulink +url="ftp://download.linuxfromscratch.org/lfs-commands/"> +ftp://download.linuxfromscratch.org/lfs-commands/</ulink> +</para> + +</sect1> + + diff --git a/chapter02/download.sgml b/chapter02/download.sgml new file mode 100644 index 000000000..c939473f2 --- /dev/null +++ b/chapter02/download.sgml @@ -0,0 +1,30 @@ +<sect1 id="ch02-download"> +<title>How to download the software</title> + +<para> +Throughout this document I will assume that you have stored all the +packages you have downloaded somewhere in $LFS/usr/src. +</para> + +<para> +I use the convention of having a $LFS/usr/src/sources directory. +Under sources you'll find the directory 0-9 and the directories a +through z. A package as sysvinit-2.78.tar.gz is stored under +$LFS/usr/src/sources/s/ A package as bash-2.04.tar.gz is stored under +$LFS/usr/src/sources/b/ and so forth. You don't have to follow this +convention of course, I was just giving an example. It's better to keep +the packages out of $LFS/usr/src and move them to a subdirectory, so +we'll have a clean $LFS/usr/src directory in which we will unpack the +packages and work with them. +</para> + +<para> +The next chapter contains the list of all the packages you need to download, +but the partition that is going to contain our LFS system isn't created yet. +Therefore store the files temporarily somewhere where you want and remember +to copy them to $LFS/usr/src/ when you have finished the chapter in which +you prepare a new partition (chapter 4). +</para> + +</sect1> + diff --git a/chapter02/install.sgml b/chapter02/install.sgml new file mode 100644 index 000000000..37fdbbb36 --- /dev/null +++ b/chapter02/install.sgml @@ -0,0 +1,102 @@ +<sect1 id="ch02-install"> +<title>How to install the software</title> + +<para> +Before you can actually start doing something with a package, you need +to unpack it first. Often you will find the package files being tar'ed and +gzip'ed (you can determind this by looking at the extension of the file. +tar'ed and gzip'ed archives have a .tar.gz or .tgz extension for +example)). I'm not going to write down every time how to ungzip and how +to untar an archive. I will tell you how to do that once, in this paragraph. +There is also the possibility that you have the ability of downloading +a .tar.bz2 file. Such a file is tar'ed and compressed with the bzip2 program. +Bzip2 achieves a better compression than the commonly used gzip does. In +order to use bz2 archives you need to have the bzip2 program installed. +Most if not every distribution comes with this program so chances are +high it is already installed on your system. If not, install it using +your distribution's installation tool. +</para> + +<para> +To start with, change to the $LFS/usr/src directory by running: +</para> + +<blockquote><literallayout> + + <userinput>cd $LFS/usr/src</userinput> + +</literallayout></blockquote> + +<para> +When you have a file that is tar'ed and gzip'ed, you unpack it by +running either one of the following two commands, depending on the +filename format: +</para> + +<blockquote><literallayout> + + <userinput>tar xvzf filename.tar.gz</userinput> + <userinput>tar xvzf filename.tgz</userinput> + +</literallayout></blockquote> + + +<para> +When you have a file that is tar'ed and bzip'ed, you unpack it by +running: +</para> + +<blockquote><literallayout> + + <userinput>bzcat filename.tar.bz2 | tar xv</userinput> + +</literallayout></blockquote> + +<para> +Some tar programs (most of them nowadays but not all of them) are +slightly modified to be able to use bzip2 files directly using either +the I or the y tar parameter which works the same as the z tar parameter +to handle gzip archives. +</para> + +<para> +When you have a file that is tar'ed, you unpack it by running: +</para> + +<blockquote><literallayout> + + <userinput>tar xvf filename.tar</userinput> + +</literallayout></blockquote> + +<para> +When the archive is unpacked a new directory will be created under the +current directory (and this document assumes that you unpack the archives +under the $LFS/usr/src directory). You have to enter that new directory +before you continue with the installation instructions. So everytime the +book is going to install a program, it's up to you to unpack the source +archive. +</para> + +<para> +After you have installed a package you can do two things with it. You can +either delete the directory that contains the sources or you can keep it. +If you decide to keep it, that's fine by me. But if you need the same package +again in a later chapter you need to delete the directory first before using +it again. If you don't do this, you might end up in trouble because old +settings will be used (settings that apply to your normal Linux system but +which don't always apply to your LFS system). Doing a simple make clean +or make distclean does not always guarantee a totally clean source tree. +The configure script can also have files lying around in various +subdirectories which aren't always removed by a make clean process. +</para> + +<para> +There is on exception to that rule: don't remove the linux kernel source +tree. A lot of programs need the kernel headers, so that's the only +directory you don't want to remove, unless you are not going to +compile any software anymore. +</para> + +</sect1> + diff --git a/chapter03/chapter4.sgml b/chapter03/chapter4.sgml new file mode 100644 index 000000000..afba440da --- /dev/null +++ b/chapter03/chapter4.sgml @@ -0,0 +1,10 @@ +<chapter id="chapter04"> +<title>Preparing a new partition</title> + +&c4-introduction; +&c4-creatingpart; +&c4-creatingfs; +&c4-mounting; +&c4-creatingdirs; + +</chapter> diff --git a/chapter03/creatingdirs.sgml b/chapter03/creatingdirs.sgml new file mode 100644 index 000000000..4bc44e3e9 --- /dev/null +++ b/chapter03/creatingdirs.sgml @@ -0,0 +1,66 @@ +<sect1 id="ch04-creatingdirs"> +<title>Creating directories</title> + +<para> +Let's create the directory tree on the LFS partition according to the FHS +standard which can be found at <ulink +url="http://www.pathname.com/fhs/">http://www.pathname.com/fhs/</ulink>. +Issuing the following commands will create the necessary directories: +</para> + +<blockquote><literallayout> + + <userinput>cd $LFS</userinput> + <userinput>mkdir bin boot dev dev/pts etc home lib mnt proc root sbin tmp + var</userinput> + <userinput>for dirname in $LFS/usr $LFS/usr/local</userinput> + <userinput><literal> do</literal></userinput> + <userinput> mkdir $dirname</userinput> + <userinput> cd $dirname</userinput> + <userinput> mkdir bin etc include lib sbin share + src tmp var</userinput> + <userinput> ln -s share/man man</userinput> + <userinput> ln -s share/doc doc</userinput> + <userinput> ln -s share/info info</userinput> + <userinput> cd $dirname/share</userinput> + <userinput> mkdir dict doc info locale man nls misc + terminfo zoneinfo</userinput> + <userinput> cd $dirname/share/man</userinput> + <userinput> mkdir man1 man2 man3 man4 man5 man6 man7 + man8</userinput> + <userinput>done</userinput> + <userinput>cd $LFS/var</userinput> + <userinput>mkdir lock log mail run spool tmp</userinput> + +</literallayout></blockquote> + +<para> +Normally directories are created with permission mode 755, which isn't +desired for all directories. I haven't checked the FHS if they suggest +default modes for certain directories, so I'll just change the modes for +a few directories that make sense to change. The first change is a mode +0750 for the $LFS/root directory. This is to make sure that not just +everybody can enter the /root directory (the same you would do with +/home/username directories). The second change is a mode 1777 for the tmp +directories. This way every user can write stuff to the /tmp directory if +they need to. The sticky (1) bit makes sure users can't delete other +user's file which they normally can do because the directory is set in +such a way that every body (owner, group, world) can write to that directory. +</para> + +<blockquote><literallayout> + + <userinput>cd $LFS &&</userinput> + <userinput>chmod 0750 root &&</userinput> + <userinput>chmod 1777 tmp usr/tmp var/tmp</userinput> + +</literallayout></blockquote> + +<para> +Now that the directories are created, copy the source files you have +downloaded in chapter 3 to some subdirectory under $LFS/usr/src (you will +need to create this subdirectory yourself). +</para> + +</sect1> + diff --git a/chapter03/creatingfs.sgml b/chapter03/creatingfs.sgml new file mode 100644 index 000000000..76bbe247f --- /dev/null +++ b/chapter03/creatingfs.sgml @@ -0,0 +1,18 @@ +<sect1 id="ch04-creatingfs"> +<title>Creating a ext2 file system on the new partition</title> + +<para> +Once the partition is created, we have to create a new ext2 file system on +that partition. To create a new ext2 file system we use the mke2fs command. +Enter the new partition as the only option and the file system will be +created. If your partition is hda11, you would run: +</para> + +<blockquote><literallayout> + + <userinput>mke2fs /dev/hda11</userinput> + +</literallayout></blockquote> + +</sect1> + diff --git a/chapter03/creatingpart.sgml b/chapter03/creatingpart.sgml new file mode 100644 index 000000000..7cd7c9ea6 --- /dev/null +++ b/chapter03/creatingpart.sgml @@ -0,0 +1,26 @@ +<sect1 id="ch04-creatingpart"> +<title>Creating a new partition</title> + +<para> +Before we can build our new Linux system, we need to have an empty Linux +partition on which we can build our new system. I recommend a partition size +of around 750 MB. This gives you enough space to store all the tarballs and +to compile all packages without worrying running out of the necessary +temporary disk space. If you already have a Linux Native partition available, +you can skip this subsection. +</para> + +<para> +Start the fdisk program (or another fdisk program you prefer) with the +appropriate hard disk as the option (like /dev/hda if you want to create a +new partition on the primary master IDE disk). Create a Linux Native +partition, write the partition table and exit the fdisk program. If you get +the message that you need to reboot your system to ensure that the partition +table is updated, then please reboot your system now before continuing. +Remember what your new partition's designation is. It could be something +like hda11 (as it is in my case). This newly created partition will be +referred to as the LFS partition in this book. +</para> + +</sect1> + diff --git a/chapter03/introduction.sgml b/chapter03/introduction.sgml new file mode 100644 index 000000000..b19076cf8 --- /dev/null +++ b/chapter03/introduction.sgml @@ -0,0 +1,13 @@ +<sect1 id="ch04-introduction"> +<title>Introduction</title> + +<para> +In this chapter the partition that is going to host the LFS system is +going to be prepared. A new partition will be created, an ext2 file +system will be created on it and the directory structure will be +created. When this is done, we can move on to the next chapter and start +building a new Linux system from scratch. +</para> + +</sect1> + diff --git a/chapter03/mounting.sgml b/chapter03/mounting.sgml new file mode 100644 index 000000000..00b836156 --- /dev/null +++ b/chapter03/mounting.sgml @@ -0,0 +1,47 @@ +<sect1 id="ch04-mountingpart"> +<title>Mounting the new partition</title> + +<para> +Now that we have created the ext2 file system, it is ready for use. All we have +to do to be able to access it (as in reading from and writing date to it) is +mounting it. If you mount it under /mnt/lfs, you can access this partition +by going to the /mnt/lfs directory and then do whatever you need to do. This +book will assume that you have mounted the partition on a subdirectory +under /mnt. It doesn't matter which directory you choose, just make sure +you remember what you chose. +</para> + +<para> +Create the /mnt/lfs directory by runnning: +</para> + +<blockquote><literallayout> + + <userinput>mkdir -p /mnt/lfs</userinput> + +</literallayout></blockquote> + +<para> +Now mount the LFS partition by running: +</para> + +<blockquote><literallayout> + + <userinput>mount /dev/xxx /mnt/lfs</userinput> + +</literallayout></blockquote> + +<para> +Replace <quote>xxx</quote> by your partition's designation. +</para> + +<para> +This directory (/mnt/lfs) is the $LFS variable you have read about earlier. +So if you read somewhere to "cp inittab $LFS/etc" you actually will type +<quote>cp inittab /mnt/lfs/etc</quote>. Or if you want to use the $LFS +environment variable, execute <userinput>export LFS=/mnt/lfs</userinput> +now. +</para> + +</sect1> + diff --git a/chapter04/autoconf.sgml b/chapter04/autoconf.sgml new file mode 100644 index 000000000..7257670a5 --- /dev/null +++ b/chapter04/autoconf.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Autoconf (2.13) 333 KB: + <ulink +url="ftp://packages.linuxfromscratch.org/pub/common-packages/autoconf-2.13.tar.bz2"> +ftp://packages.linuxfromscratch.org/pub/common-packages/autoconf-2.13.tar.bz2</ulink> + +</para></listitem> + diff --git a/chapter04/automake.sgml b/chapter04/automake.sgml new file mode 100644 index 000000000..b8c984712 --- /dev/null +++ b/chapter04/automake.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Automake (1.4) 277 KB: + <ulink +url="ftp://packages.linuxfromscratch.org/pub/common-packages/automake-1.4.tar.bz2"> +ftp://packages.linuxfromscratch.org/pub/common-packages/automake-1.4.tar.bz2</ulink> + +</para></listitem> + diff --git a/chapter04/bash.sgml b/chapter04/bash.sgml new file mode 100644 index 000000000..45c089856 --- /dev/null +++ b/chapter04/bash.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Bash (2.04) - 1,307 KB: + <ulink +url="ftp://packages.linuxfromscratch.org/pub/common-packages/bash-2.04.tar.bz2"> +ftp://packages.linuxfromscratch.org/pub/common-packages/bash-2.04.tar.bz2</ulink> + +</para></listitem> + diff --git a/chapter04/bin86.sgml b/chapter04/bin86.sgml new file mode 100644 index 000000000..a3db51efe --- /dev/null +++ b/chapter04/bin86.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Bin86 (0.15.4) 111 KB: + <ulink +url="ftp://packages.linuxfromscratch.org/pub/common-packages/bin86-0.15.4.tar.bz2"> +ftp://packages.linuxfromscratch.org/pub/common-packages/bin86-0.15.4.tar.bz2</ulink> + +</para></listitem> + diff --git a/chapter04/binutils.sgml b/chapter04/binutils.sgml new file mode 100644 index 000000000..60e8b6228 --- /dev/null +++ b/chapter04/binutils.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Binutils (2.10.1) 5,523 KB: + <ulink +url="ftp://packages.linuxfromscratch.org/pub/common-packages/binutils-2.10.1.tar.bz2"> +ftp://packages.linuxfromscratch.org/pub/common-packages/binutils-2.10.1.tar.bz2</ulink> + +</para></listitem> + diff --git a/chapter04/bison.sgml b/chapter04/bison.sgml new file mode 100644 index 000000000..59b27ca46 --- /dev/null +++ b/chapter04/bison.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Bison (1.28) 321 KB: + <ulink +url="ftp://packages.linuxfromscratch.org/pub/common-packages/bison-1.28.tar.bz2"> +ftp://packages.linuxfromscratch.org/pub/common-packages/bison-1.28.tar.bz2</ulink> + +</para></listitem> + diff --git a/chapter04/bzip2.sgml b/chapter04/bzip2.sgml new file mode 100644 index 000000000..9608a21a4 --- /dev/null +++ b/chapter04/bzip2.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Bzip2 (1.0.1) 454 KB: + <ulink +url="ftp://packages.linuxfromscratch.org/pub/common-packages/bzip2-1.0.1.tar.gz"> +ftp://packages.linuxfromscratch.org/pub/common-packages/bzip2-1.0.1.tar.gz</ulink> + +</para></listitem> + diff --git a/chapter04/chapter3.sgml b/chapter04/chapter3.sgml new file mode 100644 index 000000000..17532763b --- /dev/null +++ b/chapter04/chapter3.sgml @@ -0,0 +1,7 @@ +<chapter id="chapter03"> +<title>Packages you need to download</title> + +&c3-introduction; +&c3-packages; + +</chapter> diff --git a/chapter04/consoledata.sgml b/chapter04/consoledata.sgml new file mode 100644 index 000000000..761bcf8d6 --- /dev/null +++ b/chapter04/consoledata.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Console-data (1999.08.29) 418 KB: + <ulink +url="ftp://packages.linuxfromscratch.org/pub/common-packages/console-data-1999.08.29.tar.bz2"> +ftp://packages.linuxfromscratch.org/pub/common-packages/console-data-1999.08.29.tar.bz2</ulink> + +</para></listitem> + diff --git a/chapter04/consoletools-patch.sgml b/chapter04/consoletools-patch.sgml new file mode 100644 index 000000000..e7e27ef3b --- /dev/null +++ b/chapter04/consoletools-patch.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Console-tools (0.2.3) Patch: 4 KB: + <ulink +url="ftp://packages.linuxfromscratch.org/pub/common-packages/console-tools-0.2.3.patch.gz"> +ftp://packages.linuxfromscratch.org/pub/common-packages/console-tools-0.2.3.patch.gz</ulink> + +</para></listitem> + diff --git a/chapter04/consoletools.sgml b/chapter04/consoletools.sgml new file mode 100644 index 000000000..d0d6e2bcb --- /dev/null +++ b/chapter04/consoletools.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Console-tools (0.2.3) 490 KB: + <ulink +url="ftp://packages.linuxfromscratch.org/pub/common-packages/console-tools-0.2.3.tar.bz2"> +ftp://packages.linuxfromscratch.org/pub/common-packages/console-tools-0.2.3.tar.bz2</ulink> + +</para></listitem> + diff --git a/chapter04/diffutils.sgml b/chapter04/diffutils.sgml new file mode 100644 index 000000000..1b73a2ff9 --- /dev/null +++ b/chapter04/diffutils.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Diff Utils (2.7) 247 KB: + <ulink +url="ftp://packages.linuxfromscratch.org/pub/common-packages/diffutils-2.7.tar.bz2"> +ftp://packages.linuxfromscratch.org/pub/common-packages/diffutils-2.7.tar.bz2</ulink> + +</para></listitem> + diff --git a/chapter04/e2fsprogs.sgml b/chapter04/e2fsprogs.sgml new file mode 100644 index 000000000..f0c907eaa --- /dev/null +++ b/chapter04/e2fsprogs.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +E2fsprogs (1.19) 808 KB: + <ulink +url="ftp://packages.linuxfromscratch.org/pub/common-packages/e2fsprogs-1.19.tar.bz2"> +ftp://packages.linuxfromscratch.org/pub/common-packages/e2fsprogs-1.19.tar.bz2</ulink> + +</para></listitem> + diff --git a/chapter04/ed.sgml b/chapter04/ed.sgml new file mode 100644 index 000000000..3ff062b88 --- /dev/null +++ b/chapter04/ed.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Ed (0.2) 158 KB: + <ulink +url="ftp://packages.linuxfromscratch.org/pub/common-packages/ed-0.2.tar.bz2"> +ftp://packages.linuxfromscratch.org/pub/common-packages/ed-0.2.tar.bz2</ulink> + +</para></listitem> + diff --git a/chapter04/file.sgml b/chapter04/file.sgml new file mode 100644 index 000000000..95a4dcab3 --- /dev/null +++ b/chapter04/file.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +File (3.33) 126 KB: + <ulink +url="ftp://packages.linuxfromscratch.org/pub/common-packages/file-3.33.tar.bz2"> +ftp://packages.linuxfromscratch.org/pub/common-packages/file-3.33.tar.bz2</ulink> + +</para></listitem> + diff --git a/chapter04/fileutils.sgml b/chapter04/fileutils.sgml new file mode 100644 index 000000000..7e8420ca6 --- /dev/null +++ b/chapter04/fileutils.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +File Utils (4.0) 801 KB: + <ulink +url="ftp://packages.linuxfromscratch.org/pub/common-packages/fileutils-4.0.tar.bz2"> +ftp://packages.linuxfromscratch.org/pub/common-packages/fileutils-4.0.tar.bz2</ulink> + +</para></listitem> + diff --git a/chapter04/findutils-patch.sgml b/chapter04/findutils-patch.sgml new file mode 100644 index 000000000..5f945f28b --- /dev/null +++ b/chapter04/findutils-patch.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Find Utils Patch (4.1) 1 KB: + <ulink +url="ftp://packages.linuxfromscratch.org/pub/common-packages/findutils-4.1.patch.gz"> +ftp://packages.linuxfromscratch.org/pub/common-packages/findutils-4.1.patch.gz</ulink> + +</para></listitem> + diff --git a/chapter04/findutils.sgml b/chapter04/findutils.sgml new file mode 100644 index 000000000..ea88054ca --- /dev/null +++ b/chapter04/findutils.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Find Utils (4.1) 226 KB: + <ulink +url="ftp://packages.linuxfromscratch.org/pub/common-packages/findutils-4.1.tar.bz2"> +ftp://packages.linuxfromscratch.org/pub/common-packages/findutils-4.1.tar.bz2</ulink> + +</para></listitem> + diff --git a/chapter04/flex.sgml b/chapter04/flex.sgml new file mode 100644 index 000000000..60601e25c --- /dev/null +++ b/chapter04/flex.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Flex (2.5.4a) 278 KB: + <ulink +url="ftp://packages.linuxfromscratch.org/pub/common-packages/flex-2.5.4a.tar.bz2"> +ftp://packages.linuxfromscratch.org/pub/common-packages/flex-2.5.4a.tar.bz2</ulink> + +</para></listitem> + diff --git a/chapter04/gcc.sgml b/chapter04/gcc.sgml new file mode 100644 index 000000000..02099f3a9 --- /dev/null +++ b/chapter04/gcc.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +GCC (2.95.2) 9,555 KB: + <ulink +url="ftp://packages.linuxfromscratch.org/pub/common-packages/gcc-2.95.2.tar.bz2"> +ftp://packages.linuxfromscratch.org/pub/common-packages/gcc-2.95.2.tar.bz2</ulink> + +</para></listitem> + diff --git a/chapter04/gettext.sgml b/chapter04/gettext.sgml new file mode 100644 index 000000000..6c6caac1a --- /dev/null +++ b/chapter04/gettext.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Gettext (0.10.35) 525 KB: + <ulink +url="ftp://packages.linuxfromscratch.org/pub/common-packages/gettext-0.10.35.tar.bz2"> +ftp://packages.linuxfromscratch.org/pub/common-packages/gettext-0.10.35.tar.bz2</ulink> + +</para></listitem> + diff --git a/chapter04/glibc-crypt.sgml b/chapter04/glibc-crypt.sgml new file mode 100644 index 000000000..4856f8aaa --- /dev/null +++ b/chapter04/glibc-crypt.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Glibc-crypt (2.1) 36 KB: + <ulink +url="ftp://packages.linuxfromscratch.org/pub/common-packages/glibc-crypt-2.1.tar.bz2"> +ftp://packages.linuxfromscratch.org/pub/common-packages/glibc-crypt-2.1.tar.bz2</ulink> + +</para></listitem> + diff --git a/chapter04/glibc-patch.sgml b/chapter04/glibc-patch.sgml new file mode 100644 index 000000000..a4bbf27f8 --- /dev/null +++ b/chapter04/glibc-patch.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Glibc Patch (2.1.3) - 1 KB: + <ulink +url="ftp://packages.linuxfromscratch.org/pub/common-packages/glibc-2.1.3.patch.gz"> +ftp://packages.linuxfromscratch.org/pub/common-packages/glibc-2.1.3.patch.gz</ulink> + +</para></listitem> + diff --git a/chapter04/glibc-threads.sgml b/chapter04/glibc-threads.sgml new file mode 100644 index 000000000..dbea8be24 --- /dev/null +++ b/chapter04/glibc-threads.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Glibc-linuxthreads (2.1.3) 112 KB: + <ulink +url="ftp://packages.linuxfromscratch.org/pub/common-packages/glibc-linuxthreads-2.1.3.tar.bz2"> +ftp://packages.linuxfromscratch.org/pub/common-packages/glibc-linuxthreads-2.1.3.tar.bz2</ulink> + +</para></listitem> + diff --git a/chapter04/glibc.sgml b/chapter04/glibc.sgml new file mode 100644 index 000000000..8bd118da1 --- /dev/null +++ b/chapter04/glibc.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Glibc (2.1.3) 6,308 KB: + <ulink +url="ftp://packages.linuxfromscratch.org/pub/common-packages/glibc-2.1.3.tar.bz2"> +ftp://packages.linuxfromscratch.org/pub/common-packages/glibc-2.1.3.tar.bz2</ulink> + +</para></listitem> + diff --git a/chapter04/grep.sgml b/chapter04/grep.sgml new file mode 100644 index 000000000..3669fb711 --- /dev/null +++ b/chapter04/grep.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Grep (2.4.2) 382 KB: + <ulink +url="ftp://packages.linuxfromscratch.org/pub/common-packages/grep-2.4.2.tar.bz2"> +ftp://packages.linuxfromscratch.org/pub/common-packages/grep-2.4.2.tar.bz2</ulink> + +</para></listitem> + diff --git a/chapter04/groff.sgml b/chapter04/groff.sgml new file mode 100644 index 000000000..a404dfc85 --- /dev/null +++ b/chapter04/groff.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Groff (1.16.1) 1,173 KB: + <ulink +url="ftp://packages.linuxfromscratch.org/pub/common-packages/groff-1.16.1.tar.bz2"> +ftp://packages.linuxfromscratch.org/pub/common-packages/groff-1.16.1.tar.bz2</ulink> + +</para></listitem> + diff --git a/chapter04/gzip-patch.sgml b/chapter04/gzip-patch.sgml new file mode 100644 index 000000000..ffe167ab2 --- /dev/null +++ b/chapter04/gzip-patch.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Gzip Patch (1.2.4a) 1 KB: + <ulink +url="ftp://packages.linuxfromscratch.org/pub/common-packages/gzip-1.2.4a.patch.gz"> +ftp://packages.linuxfromscratch.org/pub/common-packages/gzip-1.2.4a.patch.gz</ulink> + +</para></listitem> + diff --git a/chapter04/gzip.sgml b/chapter04/gzip.sgml new file mode 100644 index 000000000..6d0d7695d --- /dev/null +++ b/chapter04/gzip.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Gzip (1.2.4a) 178 KB: + <ulink +url="ftp://packages.linuxfromscratch.org/pub/common-packages/gzip-1.2.4a.tar.bz2"> +ftp://packages.linuxfromscratch.org/pub/common-packages/gzip-1.2.4a.tar.bz2</ulink> + +</para></listitem> + diff --git a/chapter04/introduction.sgml b/chapter04/introduction.sgml new file mode 100644 index 000000000..83e561961 --- /dev/null +++ b/chapter04/introduction.sgml @@ -0,0 +1,35 @@ +<para> +Below is a list of all the packages you need to download for building +the basic system. The version numbers printed correspond to versions of +the software that is known to work and which this book is based on. If you +experience problems which you can't solve yourself, download the version that +is assumed in this book (in case you downloaded a newer version). +</para> + +<para> +If the packages.linuxfromscratch.org server isn't allowing connections +anymore try one of our mirror sites. The addresses of the mirror sites +can be found in <ulink url="ch01-versions.html">Chapter 1 - Book +Versions</ulink> +</para> + +<para> +We have provided a list of official download sites of the packages below +in <ulink url="appendixc.html">Appendix C - Official download locations +</ulink>. The LFS FTP archive only contains the versions of packages +that are recommended for use in this book. If you're looking +for newer versions than the ones listed here you can have a look in +Appendix C. +</para> + +<para> +Please note that all files downloaded from the LFS FTP archive are files +compressed with bzip2 instead of gz. If you don't know how to handle bz2 +files, please read <ulink url="ch02-install.html">Chapter 2 - How to install +the software</ulink>. +</para> + +<para> +The list below is current as of January 5th, 2001 +</para> + diff --git a/chapter04/kernel.sgml b/chapter04/kernel.sgml new file mode 100644 index 000000000..fdb1f416b --- /dev/null +++ b/chapter04/kernel.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Linux Kernel (2.2.18) 14,921 KB: + <ulink +url="ftp://packages.linuxfromscratch.org/pub/common-packages/linux-2.2.18.tar.bz2"> +ftp://packages.linuxfromscratch.org/pub/common-packages/linux-2.2.18.tar.bz2</ulink> + +</para></listitem> + diff --git a/chapter04/ldso.sgml b/chapter04/ldso.sgml new file mode 100644 index 000000000..2b0c7bf6d --- /dev/null +++ b/chapter04/ldso.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Ld.so (1.9.9) 280 KB: + <ulink +url="ftp://packages.linuxfromscratch.org/pub/common-packages/ld.so-1.9.9.tar.bz2"> +ftp://packages.linuxfromscratch.org/pub/common-packages/ld.so-1.9.9.tar.bz2</ulink> + +</para></listitem> + diff --git a/chapter04/less.sgml b/chapter04/less.sgml new file mode 100644 index 000000000..5bca37c22 --- /dev/null +++ b/chapter04/less.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Less (358) 178 KB: + <ulink +url="ftp://packages.linuxfromscratch.org/pub/common-packages/less-358.tar.bz2"> +ftp://packages.linuxfromscratch.org/pub/common-packages/less-358.tar.bz2</ulink> + +</para></listitem> + diff --git a/chapter04/libtool.sgml b/chapter04/libtool.sgml new file mode 100644 index 000000000..5aee212c1 --- /dev/null +++ b/chapter04/libtool.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Libtool (1.3.5) 361 KB: + <ulink +url="ftp://packages.linuxfromscratch.org/pub/common-packages/libtool-1.3.5.tar.bz2"> +ftp://packages.linuxfromscratch.org/pub/common-packages/libtool-1.3.5.tar.bz2</ulink> + +</para></listitem> + diff --git a/chapter04/lilo.sgml b/chapter04/lilo.sgml new file mode 100644 index 000000000..139fc746f --- /dev/null +++ b/chapter04/lilo.sgml @@ -0,0 +1,8 @@ +<listitem><para> +Lilo (21.6) 172 KB: + <ulink +url="ftp://packages.linuxfromscratch.org/pub/intel-packages/lilo-21.6.tar.bz2"> +ftp://packages.linuxfromscratch.org/pub/intel-packages/lilo-21.6.tar.bz2</ulink> + +</para></listitem> + diff --git a/chapter04/m4.sgml b/chapter04/m4.sgml new file mode 100644 index 000000000..11d9bc9e0 --- /dev/null +++ b/chapter04/m4.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +M4 (1.4) 249 KB: + <ulink +url="ftp://packages.linuxfromscratch.org/pub/common-packages/m4-1.4.tar.bz2"> +ftp://packages.linuxfromscratch.org/pub/common-packages/m4-1.4.tar.bz2</ulink> + +</para></listitem> + diff --git a/chapter04/make.sgml b/chapter04/make.sgml new file mode 100644 index 000000000..88ae6adf1 --- /dev/null +++ b/chapter04/make.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Make (3.79.1) 749 KB: + <ulink +url="ftp://packages.linuxfromscratch.org/pub/common-packages/make-3.79.1.tar.bz2"> +ftp://packages.linuxfromscratch.org/pub/common-packages/make-3.79.1.tar.bz2</ulink> + +</para></listitem> + diff --git a/chapter04/makedev.sgml b/chapter04/makedev.sgml new file mode 100644 index 000000000..7ec636d63 --- /dev/null +++ b/chapter04/makedev.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +MAKEDEV (2.5) - 11 KB: + <ulink +url="ftp://packages.linuxfromscratch.org/pub/common-packages/MAKEDEV-2.5.tar.bz2"> +ftp://packages.linuxfromscratch.org/pub/common-packages/MAKEDEV-2.5.tar.bz2</ulink> + +</para></listitem> + diff --git a/chapter04/man.sgml b/chapter04/man.sgml new file mode 100644 index 000000000..6fa61acc1 --- /dev/null +++ b/chapter04/man.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Man (1.5h1) 156 KB: + <ulink +url="ftp://packages.linuxfromscratch.org/pub/common-packages/man-1.5h1.tar.bz2"> +ftp://packages.linuxfromscratch.org/pub/common-packages/man-1.5h1.tar.bz2</ulink> + +</para></listitem> + diff --git a/chapter04/manpages.sgml b/chapter04/manpages.sgml new file mode 100644 index 000000000..7611c179d --- /dev/null +++ b/chapter04/manpages.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Man-pages (1.33) 475 KB: + <ulink +url="ftp://packages.linuxfromscratch.org/pub/common-packages/man-pages-1.33.tar.bz2"> +ftp://packages.linuxfromscratch.org/pub/common-packages/man-pages-1.33.tar.bz2</ulink> + +</para></listitem> + diff --git a/chapter04/mawk.sgml b/chapter04/mawk.sgml new file mode 100644 index 000000000..5570b2ce4 --- /dev/null +++ b/chapter04/mawk.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Mawk (1.3.3) 168 KB: + <ulink +url="ftp://packages.linuxfromscratch.org/pub/common-packages/mawk1.3.3.tar.bz2"> +ftp://packages.linuxfromscratch.org/pub/common-packages/mawk1.3.3.tar.bz2</ulink> + +</para></listitem> + diff --git a/chapter04/modutils.sgml b/chapter04/modutils.sgml new file mode 100644 index 000000000..817c464c5 --- /dev/null +++ b/chapter04/modutils.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Modutils (2.4.0) 195 KB: + <ulink +url="ftp://packages.linuxfromscratch.org/pub/common-packages/modutils-2.4.0.tar.bz2"> +ftp://packages.linuxfromscratch.org/pub/common-packages/modutils-2.4.0.tar.bz2</ulink> + +</para></listitem> + diff --git a/chapter04/ncurses.sgml b/chapter04/ncurses.sgml new file mode 100644 index 000000000..f7b97ac6d --- /dev/null +++ b/chapter04/ncurses.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Ncurses (5.2) 1,307 KB: + <ulink +url="ftp://packages.linuxfromscratch.org/pub/intel-packages/ncurses-5.2.tar.bz2"> +ftp://packages.linuxfromscratch.org/pub/intel-packages/ncurses-5.2.tar.bz2</ulink> + +</para></listitem> + diff --git a/chapter04/netkitbase.sgml b/chapter04/netkitbase.sgml new file mode 100644 index 000000000..51b965226 --- /dev/null +++ b/chapter04/netkitbase.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Netkit-base (0.17) 49 KB: + <ulink +url="ftp://packages.linuxfromscratch.org/pub/common-packages/netkit-base-0.17.tar.bz2"> +ftp://packages.linuxfromscratch.org/pub/common-packages/netkit-base-0.17.tar.bz2</ulink> + +</para></listitem> + diff --git a/chapter04/nettools.sgml b/chapter04/nettools.sgml new file mode 100644 index 000000000..57a2eb0c4 --- /dev/null +++ b/chapter04/nettools.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Net-tools (1.57) 187 KB: + <ulink +url="ftp://packages.linuxfromscratch.org/pub/common-packages/net-tools-1.57.tar.bz2"> +ftp://packages.linuxfromscratch.org/pub/common-packages/net-tools-1.57.tar.bz2</ulink> + +</para></listitem> + diff --git a/chapter04/packages.sgml b/chapter04/packages.sgml new file mode 100644 index 000000000..8cba44851 --- /dev/null +++ b/chapter04/packages.sgml @@ -0,0 +1,71 @@ +<itemizedlist> + +&c3-pg-toplevel; +&c3-pg-bash; +&c3-pg-binutils; +&c3-pg-bzip2; +&c3-pg-diffutils; +&c3-pg-fileutils; +&c3-pg-gcc; +&c3-pg-kernel; +&c3-pg-glibc; +&c3-pg-glibc-crypt; +&c3-pg-glibc-threads; +&c3-pg-glibc-patch; +&c3-pg-grep; +&c3-pg-gzip; +&c3-pg-gzip-patch; +&c3-pg-make; +&c3-pg-sed; +&c3-pg-shellutils; +&c3-pg-tar; +&c3-pg-tar-patch; +&c3-pg-textutils; +&c3-pg-makedev; +&c3-pg-bison; +&c3-pg-mawk; +&c3-pg-patch; +&c3-pg-findutils; +&c3-pg-findutils-patch; +&c3-pg-ncurses; +&c3-pg-less; +&c3-pg-groff; +&c3-pg-man; +&c3-pg-perl; +&c3-pg-m4; +&c3-pg-texinfo; +&c3-pg-autoconf; +&c3-pg-automake; +&c3-pg-flex; +&c3-pg-file; +&c3-pg-libtool; +&c3-pg-bin86; +&c3-pg-gettext; +&c3-pg-consoletools; +&c3-pg-consoletools-patch; +&c3-pg-consoledata; +&c3-pg-e2fsprogs; +&c3-pg-ed; +&c3-pg-ldso; +&c3-pg-lilo; +&c3-pg-modutils; +&c3-pg-vim; +&c3-pg-procinfo; +&c3-pg-procps; +&c3-pg-psmisc; +&c3-pg-shadowpwd; +&c3-pg-sysklogd; +&c3-pg-sysklogd-patch; +&c3-pg-sysvinit; +&c3-pg-sysvinit-patch; +&c3-pg-utillinux; +&c3-pg-manpages; +&c3-pg-netkitbase; +&c3-pg-nettools; + +<listitem><para> +Total size of all intel-packages: 61,377 KB (59,94 MB) +</para></listitem> + +</itemizedlist> + diff --git a/chapter04/patch.sgml b/chapter04/patch.sgml new file mode 100644 index 000000000..8f0b887f8 --- /dev/null +++ b/chapter04/patch.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Patch (2.5.4) 149 KB: + <ulink +url="ftp://packages.linuxfromscratch.org/pub/common-packages/patch-2.5.4.tar.bz2"> +ftp://packages.linuxfromscratch.org/pub/common-packages/patch-2.5.4.tar.bz2</ulink> + +</para></listitem> + diff --git a/chapter04/perl.sgml b/chapter04/perl.sgml new file mode 100644 index 000000000..6936a175d --- /dev/null +++ b/chapter04/perl.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Perl (5.6.0) 4,327 KB: + <ulink +url="ftp://packages.linuxfromscratch.org/pub/common-packages/perl-5.6.0.tar.bz2"> +ftp://packages.linuxfromscratch.org/pub/common-packages/perl-5.6.0.tar.bz2</ulink> + +</para></listitem> + diff --git a/chapter04/procinfo.sgml b/chapter04/procinfo.sgml new file mode 100644 index 000000000..394faa3de --- /dev/null +++ b/chapter04/procinfo.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Procinfo (17) 21 KB: + <ulink +url="ftp://packages.linuxfromscratch.org/pub/common-packages/procinfo-17.tar.bz2"> +ftp://packages.linuxfromscratch.org/pub/common-packages/procinfo-17.tar.bz2</ulink> + +</para></listitem> + diff --git a/chapter04/procps.sgml b/chapter04/procps.sgml new file mode 100644 index 000000000..7152d267e --- /dev/null +++ b/chapter04/procps.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Procps (2.0.7) 153 KB: + <ulink +url="ftp://packages.linuxfromscratch.org/pub/common-packages/procps-2.0.7.tar.bz2"> +ftp://packages.linuxfromscratch.org/pub/common-packages/procps-2.0.7.tar.bz2</ulink> + +</para></listitem> + diff --git a/chapter04/psmisc.sgml b/chapter04/psmisc.sgml new file mode 100644 index 000000000..4b17654ca --- /dev/null +++ b/chapter04/psmisc.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Psmisc (19) 20 KB: + <ulink +url="ftp://packages.linuxfromscratch.org/pub/common-packages/psmisc-19.tar.bz2"> +ftp://packages.linuxfromscratch.org/pub/common-packages/psmisc-19.tar.bz2</ulink> + +</para></listitem> + diff --git a/chapter04/sed.sgml b/chapter04/sed.sgml new file mode 100644 index 000000000..1a763af05 --- /dev/null +++ b/chapter04/sed.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Sed (3.02) 221 KB: + <ulink +url="ftp://packages.linuxfromscratch.org/pub/common-packages/sed-3.02.tar.bz2"> +ftp://packages.linuxfromscratch.org/pub/common-packages/sed-3.02.tar.bz2</ulink> + +</para></listitem> + diff --git a/chapter04/shadowpwd.sgml b/chapter04/shadowpwd.sgml new file mode 100644 index 000000000..e0c7cf817 --- /dev/null +++ b/chapter04/shadowpwd.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Shadow Password Suite (20000902) 557 KB: + <ulink +url="ftp://packages.linuxfromscratch.org/pub/common-packages/shadow-20000902.tar.bz2"> +ftp://packages.linuxfromscratch.org/pub/common-packages/shadow-20000902.tar.bz2</ulink> + +</para></listitem> + diff --git a/chapter04/shellutils.sgml b/chapter04/shellutils.sgml new file mode 100644 index 000000000..0c0af8edd --- /dev/null +++ b/chapter04/shellutils.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Sh-utils (2.0) 824 KB: + <ulink +url="ftp://packages.linuxfromscratch.org/pub/common-packages/sh-utils-2.0.tar.bz2"> +ftp://packages.linuxfromscratch.org/pub/common-packages/sh-utils-2.0.tar.bz2</ulink> + +</para></listitem> + diff --git a/chapter04/sysklogd-patch.sgml b/chapter04/sysklogd-patch.sgml new file mode 100644 index 000000000..1797f5d84 --- /dev/null +++ b/chapter04/sysklogd-patch.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Sysklogd Patch (1.4) 0.5 KB: + <ulink +url="ftp://packages.linuxfromscratch.org/pub/common-packages/sysklogd-1.4.patch"> +ftp://packages.linuxfromscratch.org/pub/common-packages/sysklogd-1.4.patch</ulink> + +</para></listitem> + diff --git a/chapter04/sysklogd.sgml b/chapter04/sysklogd.sgml new file mode 100644 index 000000000..9aa8ccfb0 --- /dev/null +++ b/chapter04/sysklogd.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Sysklogd (1.4) 67 KB: + <ulink +url="ftp://packages.linuxfromscratch.org/pub/common-packages/sysklogd-1.4.tar.bz2"> +ftp://packages.linuxfromscratch.org/pub/common-packages/sysklogd-1.4.tar.bz2</ulink> + +</para></listitem> + diff --git a/chapter04/sysvinit-patch.sgml b/chapter04/sysvinit-patch.sgml new file mode 100644 index 000000000..977ba7527 --- /dev/null +++ b/chapter04/sysvinit-patch.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Sysvinit Patch (2.78) 1 KB: + <ulink +url="ftp://packages.linuxfromscratch.org/pub/common-packages/sysvinit-2.78.patch"> +ftp://packages.linuxfromscratch.org/pub/common-packages/sysvinit-2.78.patch</ulink> + +</para></listitem> + diff --git a/chapter04/sysvinit.sgml b/chapter04/sysvinit.sgml new file mode 100644 index 000000000..3c03f6ba3 --- /dev/null +++ b/chapter04/sysvinit.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Sysvinit (2.78) 90 KB: + <ulink +url="ftp://packages.linuxfromscratch.org/pub/common-packages/sysvinit-2.78.tar.bz2"> +ftp://packages.linuxfromscratch.org/pub/common-packages/sysvinit-2.78.tar.bz2</ulink> + +</para></listitem> + diff --git a/chapter04/tar-patch.sgml b/chapter04/tar-patch.sgml new file mode 100644 index 000000000..d190cf6c8 --- /dev/null +++ b/chapter04/tar-patch.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Tar Patch (1.13) 2 KB: + <ulink +url="ftp://packages.linuxfromscratch.org/pub/common-packages/gnutarpatch.txt"> +ftp://packages.linuxfromscratch.org/pub/common-packages/gnutarpatch.txt</ulink> + +</para></listitem> + diff --git a/chapter04/tar.sgml b/chapter04/tar.sgml new file mode 100644 index 000000000..c133ad9c2 --- /dev/null +++ b/chapter04/tar.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Tar (1.13) 730 KB: + <ulink +url="ftp://packages.linuxfromscratch.org/pub/common-packages/tar-1.13.tar.bz2"> +ftp://packages.linuxfromscratch.org/pub/common-packages/tar-1.13.tar.bz2</ulink> + +</para></listitem> + diff --git a/chapter04/texinfo.sgml b/chapter04/texinfo.sgml new file mode 100644 index 000000000..c4ae44f18 --- /dev/null +++ b/chapter04/texinfo.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Texinfo (4.0) 812 KB: + <ulink +url="ftp://packages.linuxfromscratch.org/pub/common-packages/texinfo-4.0.tar.bz2"> +ftp://packages.linuxfromscratch.org/pub/common-packages/texinfo-4.0.tar.bz2</ulink> + +</para></listitem> + diff --git a/chapter04/textutils.sgml b/chapter04/textutils.sgml new file mode 100644 index 000000000..4c4b92067 --- /dev/null +++ b/chapter04/textutils.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Text Utils (2.0) 1,040 KB: + <ulink +url="ftp://packages.linuxfromscratch.org/pub/common-packages/textutils-2.0.tar.bz2"> +ftp://packages.linuxfromscratch.org/pub/common-packages/textutils-2.0.tar.bz2</ulink> + +</para></listitem> + diff --git a/chapter04/toplevel.sgml b/chapter04/toplevel.sgml new file mode 100644 index 000000000..17a50b17d --- /dev/null +++ b/chapter04/toplevel.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Browse FTP: + <ulink +url="ftp://packages.linuxfromscratch.org/"> +ftp://packages.linuxfromscratch.org</ulink> + +</para></listitem> + diff --git a/chapter04/utillinux.sgml b/chapter04/utillinux.sgml new file mode 100644 index 000000000..2ffcb979a --- /dev/null +++ b/chapter04/utillinux.sgml @@ -0,0 +1,9 @@ +<listitem><para> + +Util Linux (2.10r) 883 KB: + <ulink +url="ftp://packages.linuxfromscratch.org/pub/common-packages/util-linux-2.10r.tar.bz2"> +ftp://packages.linuxfromscratch.org/pub/common-packages/util-linux-2.10r.tar.bz2</ulink> + +</para></listitem> + diff --git a/chapter04/vim.sgml b/chapter04/vim.sgml new file mode 100644 index 000000000..c142d899e --- /dev/null +++ b/chapter04/vim.sgml @@ -0,0 +1,17 @@ +<listitem><para> + +Vim-rt (5.7) 905 KB: + <ulink +url="ftp://packages.linuxfromscratch.org/pub/common-packages/vim-5.7-rt.tar.bz2"> +ftp://packages.linuxfromscratch.org/pub/common-packages/vim-5.7-rt.tar.bz2</ulink> + +</para></listitem> + +<listitem><para> + +Vim-src (5.7) 963 KB: + <ulink +url="ftp://packages.linuxfromscratch.org/pub/common-packages/vim-5.7-src.tar.bz2"> +ftp://packages.linuxfromscratch.org/pub/common-packages/vim-5.7-src.tar.bz2</ulink> + +</para></listitem> diff --git a/chapter05/bash-static-exp.sgml b/chapter05/bash-static-exp.sgml new file mode 100644 index 000000000..8d627237e --- /dev/null +++ b/chapter05/bash-static-exp.sgml @@ -0,0 +1,55 @@ +<sect2> +<title>Command explanations</title> + +<para> +<userinput>--enable-static-link:</userinput> This configure +option causes Bash to be linked statically +</para> + +<para> +<userinput>--prefix=$LFS/usr:</userinput> This configure option installs +all of Bash's files under the $LFS/usr directory, which becomes the /usr +directory after you chroot into $LFS or when you reboot the system into LFS. +</para> + +<para> +<userinput>--bindir=$LFS/bin:</userinput> This installs the executable +files in $LFS/bin. We do this because we want bash to be in /bin, not in +/usr/bin. One reason being: your /usr partition might be on a seperate +partition which has to be mounted at some point. Before that partition is +mounted you need and will want to have bash available (it will be hard to +execute the boot scripts without a shell for instance). +</para> + +<para> +<userinput>--disable-nls:</userinput> This disables the build of NLS +(National Language Support). It's only a waste of time for now as Bash +will be reinstalled in the next chapter. +</para> + +<para> +<userinput>--with-curses:</userinput> This causes Bash to be linked +against the curses library instead of the default termcap library which +is becoming obsolete. +</para> + +<para> +<userinput>ln -s bash sh:</userinput> This command creates the sh +symlink that points to bash. Most scripts run themselves via 'sh'; sh +being a symlink to the default system shell. Because programs and +scripts don't know what shell you use by default (could be bash, ksh, +korn, tch, csh and others) they use the common symlink sh which, if the +system is properly setup, always points to the system's default shell. +</para> + +<para> +The <userinput>&&</userinput>'s at the end of every line cause +the next command only to be executed when the previous command exists +with a return value of 0 indicating success. In case you copy&paste +all of these commands on the shell you want to be ensured that if +./configure fails, make isn't being executed and likewise if make fails +that make install isn't being executed, and so forth. +</para> + +</sect2> + diff --git a/chapter05/bash-static-inst.sgml b/chapter05/bash-static-inst.sgml new file mode 100644 index 000000000..8c9115709 --- /dev/null +++ b/chapter05/bash-static-inst.sgml @@ -0,0 +1,42 @@ +<sect2> +<title>Installation of Bash</title> + +<para> +Install Bash by running the following commands: +</para> + +<blockquote><literallayout> + + <userinput>./configure --enable-static-link --prefix=$LFS/usr \</userinput> + <userinput> --bindir=$LFS/bin --disable-nls + --with-curses &&</userinput> + <userinput>make &&</userinput> + <userinput>make install &&</userinput> + <userinput>cd $LFS/bin &&</userinput> + <userinput>ln -s bash sh</userinput> + +</literallayout></blockquote> + +<para> +If you get errors when compiling bash that tell you about not being able to +find <quote>-lcurses</quote> run these two commands to create the +missing symlink (so far we have not enountered one distribution that has +this libncurses symlink setup properly, except for LFS systems where it +is setup properly): +</para> + +<blockquote><literallayout> + + <userinput>cd /usr/lib &&</userinput> + <userinput>ln -s libncurses.a libcurses.a</userinput> + +</literallayout></blockquote> + +<para> +Note: Normally the libncurses.a file resides in the /usr/lib directory +but it might reside in /lib (like it does on LFS systems). So check to +make sure whether you should run the ln command in /usr/lib or in /lib +</para> + +</sect2> + diff --git a/chapter05/bash-static.sgml b/chapter05/bash-static.sgml new file mode 100644 index 000000000..a6b668eb0 --- /dev/null +++ b/chapter05/bash-static.sgml @@ -0,0 +1,9 @@ +<sect1 id="ch05-bash"> +<title>Installing Bash</title> + +&c5-pp-bash-inst; +&c5-pp-bash-exp; +&aa-bash-desc; + +</sect1> + diff --git a/chapter05/binutils-static-exp.sgml b/chapter05/binutils-static-exp.sgml new file mode 100644 index 000000000..71370de2a --- /dev/null +++ b/chapter05/binutils-static-exp.sgml @@ -0,0 +1,28 @@ +<sect2> +<title>Command explanations</title> + +<para> +<userinput>make -e:</userinput> The -e paramater tells make that +environment variables take precedence over variables defined in the +Makefile file(s). This is needed in order to successfully link binutils +statically. +</para> + +<para> +<userinput>LDFLAGS=-all-static:</userinput> Setting the variable LDFLAGS +to the value -all-static causes binutils to be linked statically. +</para> + +<para> +<userinput>tooldir=$LFS/usr:</userinput> Normally the tooldir (the +directory where the executables from binutils end up in) is set to +$(exec_prefix)/$(target_alias) which expands into, for example, +/usr/i686-pc-linux-gnu. Since we only build for our own system we don't +need this target specific directory in $LFS/usr. You would use that +setup if you use your system to cross-compile (for example you would +compile a package on your Intel machine that generates code that can be +executed on Apple PowerPC machines). +</para> + +</sect2> + diff --git a/chapter05/binutils-static-inst.sgml b/chapter05/binutils-static-inst.sgml new file mode 100644 index 000000000..f08640f42 --- /dev/null +++ b/chapter05/binutils-static-inst.sgml @@ -0,0 +1,19 @@ +<sect2> +<title>Installation of Binutils</title> + +<para> +Install Binutils by running the following commands: +</para> + +<blockquote><literallayout> + + <userinput>./configure --prefix=$LFS/usr --disable-nls + &&</userinput> + <userinput>make -e LDFLAGS=-all-static tooldir=$LFS/usr + &&</userinput> + <userinput>make -e tooldir=$LFS/usr install</userinput> + +</literallayout></blockquote> + +</sect2> + diff --git a/chapter05/binutils-static.sgml b/chapter05/binutils-static.sgml new file mode 100644 index 000000000..fd13dfd20 --- /dev/null +++ b/chapter05/binutils-static.sgml @@ -0,0 +1,9 @@ +<sect1 id="ch05-binutils"> +<title>Installing Binutils</title> + +&c5-pp-binutils-inst; +&c5-pp-binutils-exp; +&aa-binutils-desc; + +</sect1> + diff --git a/chapter05/bzip2-static-exp.sgml b/chapter05/bzip2-static-exp.sgml new file mode 100644 index 000000000..788de4298 --- /dev/null +++ b/chapter05/bzip2-static-exp.sgml @@ -0,0 +1,33 @@ +<sect2> +<title>Command explanations</title> + +<para> +<userinput>sed: </userinput> The sed command here searches for the +string "$(CC) $(CFLAGS) -o" and replaced it by "$(CC) $(CFLAGS) +$(LDFLAGS) -o" in the Makefile file. We make that modification so it +will be easier to link bzip2 statically. +</para> + +<para> +<userinput>...Makefile | make -f -:</userinput> Makefile +is the last parameter of the sed command which indicates the file to +search and replace in. sed normally sends the modified file to stdout +(standard output) which will be your console. With the construction we +use, sed's output will be piped to the make program. Normally when make +is started it tries to find a number of files like Makefile. But we have +modified the Makefile file so we don't want make to use it. The "-f -" +parameter tells make to read it's input from another file, or from stdin +(standard input) which the dash (-) implies. This is one way to do it. +Another way would be to have sed write the output to a different file +and tell make with the -f parameter to read that alternate file. +</para> + +<para> +<userinput>LDFLAGS=-static:</userinput> This is the second way we use to +link a package statically. This is also the most common way. As you'll +notice, the -all-static value is only used with the binutils package and +won't be used throughout the rest of this book. +</para> + +</sect2> + diff --git a/chapter05/bzip2-static-inst.sgml b/chapter05/bzip2-static-inst.sgml new file mode 100644 index 000000000..277ee2f5e --- /dev/null +++ b/chapter05/bzip2-static-inst.sgml @@ -0,0 +1,22 @@ +<sect2> +<title>Installation of Bzip2</title> + +<para> +Install Bzip2 by running the following commands: +</para> + +<blockquote><literallayout> + + <userinput>sed \</userinput> + <userinput> s/"\$(CC) \$(CFLAGS) -o"/"\$(CC) \$(CFLAGS) + \$(LDFLAGS) -o"/ \</userinput> + <userinput> Makefile | make -f - + LDFLAGS=-static &&</userinput> + <userinput>make PREFIX=$LFS/usr install &&</userinput> + <userinput>cd $LFS/usr/bin &&</userinput> + <userinput>mv bzcat bunzip2 bzip2 bzip2recover $LFS/bin</userinput> + +</literallayout></blockquote> + +</sect2> + diff --git a/chapter05/bzip2-static.sgml b/chapter05/bzip2-static.sgml new file mode 100644 index 000000000..1cf203aed --- /dev/null +++ b/chapter05/bzip2-static.sgml @@ -0,0 +1,9 @@ +<sect1 id="ch05-bzip2"> +<title>Installing Bzip2</title> + +&c5-pp-bzip2-inst; +&c5-pp-bzip2-exp; +&aa-bzip2-desc; + +</sect1> + diff --git a/chapter05/chapter5.sgml b/chapter05/chapter5.sgml new file mode 100644 index 000000000..a5e82ebc6 --- /dev/null +++ b/chapter05/chapter5.sgml @@ -0,0 +1,26 @@ +<chapter id="chapter05"> +<title>Preparing the LFS system</title> + +&c5-introduction; + +&c5-pp-bash; +&c5-pp-binutils; +&c5-pp-bzip2; +&c5-pp-diffutils; +&c5-pp-fileutils; +&c5-pp-gcc-local; +&c5-pp-gcc; +&c5-pp-kernel; +&c5-pp-glibc; +&c5-pp-grep; +&c5-pp-gzip; +&c5-pp-make; +&c5-pp-sed; +&c5-pp-shellutils; +&c5-pp-tar; +&c5-pp-textutils; +&c5-pp-pwdgroup; +&c5-pp-proc; + +</chapter> + diff --git a/chapter05/diffutils-static-exp.sgml b/chapter05/diffutils-static-exp.sgml new file mode 100644 index 000000000..5c8261459 --- /dev/null +++ b/chapter05/diffutils-static-exp.sgml @@ -0,0 +1,16 @@ +<sect2> +<title>Command explanations</title> + +<para> +<userinput>CPPFLAGS=-Dre_max_failures=re_max_failures2:</userinput> The +CPPFLAGS variable is a variable that's read by the cpp program (C +PreProcessor). The value of this variable tells the preprocessor to +replace every instance of re_max_failures it finds by re_max_failures2 +before handing the souce file to the compiler itself for compilation. This +package has problems linking statically on certain platforms (depending +on the Glibc version used on that system) and this construction fixes +that problem. +</para> + +</sect2> + diff --git a/chapter05/diffutils-static-inst.sgml b/chapter05/diffutils-static-inst.sgml new file mode 100644 index 000000000..60874c3f9 --- /dev/null +++ b/chapter05/diffutils-static-inst.sgml @@ -0,0 +1,21 @@ +<sect2> +<title>Installation of Diffutils</title> + +<para> +Install Diffutils by running the following commands: +</para> + +<blockquote><literallayout> + + <userinput>export CPPFLAGS=-Dre_max_failures=re_max_failures2 + &&</userinput> + <userinput>./configure --prefix=$LFS/usr --disable-nls + &&</userinput> + <userinput>unset CPPFLAGS &&</userinput> + <userinput>make LDFLAGS=-static &&</userinput> + <userinput>make install</userinput> + +</literallayout></blockquote> + +</sect2> + diff --git a/chapter05/diffutils-static.sgml b/chapter05/diffutils-static.sgml new file mode 100644 index 000000000..c56846bf4 --- /dev/null +++ b/chapter05/diffutils-static.sgml @@ -0,0 +1,9 @@ +<sect1 id="ch05-diffutils"> +<title>Installing Diffutils</title> + +&c5-pp-diffutils-inst; +&c5-pp-diffutils-exp; +&aa-diffutils-desc; + +</sect1> + diff --git a/chapter05/fileutils-static-exp.sgml b/chapter05/fileutils-static-exp.sgml new file mode 100644 index 000000000..c4cc59b1a --- /dev/null +++ b/chapter05/fileutils-static-exp.sgml @@ -0,0 +1,12 @@ +<sect2> +<title>Command explanations</title> + +<para> +<userinput>--libexecdir=$LFS/bin:</userinput> This configure option will +set the program executable directory to $LFS/bin. This is normally set +to /usr/libexec, but nothing is placed in it. Changing it just prevents +that directory from being created. +</para> + +</sect2> + diff --git a/chapter05/fileutils-static-inst.sgml b/chapter05/fileutils-static-inst.sgml new file mode 100644 index 000000000..f3e3553d6 --- /dev/null +++ b/chapter05/fileutils-static-inst.sgml @@ -0,0 +1,21 @@ +<sect2> +<title>Installation of Fileutils</title> + +<para> +Install Fileutils by running the following commands: +</para> + +<blockquote><literallayout> + + <userinput>./configure --disable-nls \</userinput> + <userinput>--prefix=$LFS/usr --libexecdir=$LFS/bin + --bindir=$LFS/bin &&</userinput> + <userinput>make LDFLAGS=-static &&</userinput> + <userinput>make install &&</userinput> + <userinput>cd $LFS/usr/bin &&</userinput> + <userinput>ln -s ../../bin/install install</userinput> + +</literallayout></blockquote> + +</sect2> + diff --git a/chapter05/fileutils-static.sgml b/chapter05/fileutils-static.sgml new file mode 100644 index 000000000..6ca75bf0b --- /dev/null +++ b/chapter05/fileutils-static.sgml @@ -0,0 +1,9 @@ +<sect1 id="ch05-fileutils"> +<title>Installing Fileutils</title> + +&c5-pp-fileutils-inst; +&c5-pp-fileutils-exp; +&aa-fileutils-desc; + +</sect1> + diff --git a/chapter05/gcc-local-exp.sgml b/chapter05/gcc-local-exp.sgml new file mode 100644 index 000000000..0de2e3737 --- /dev/null +++ b/chapter05/gcc-local-exp.sgml @@ -0,0 +1,31 @@ +<sect2> +<title>Command explanations</title> + +<para> +<userinput>--with-local-prefix:</userinput> GCC installs a number of +files in /usr/local even when --prefix is set to something else. We +don't want that to happen in this case so that's why we use the +--with-local-prefix option to change that path. +</para> + +<para> +<userinput>--with-gxx-include-dir:</userinput> GCC installs the C++ +header files in /usr/include/g++ by default. Again, in this case we +don't want that to happen, we want this GCC version to be installed +completely under /usr/local/gcc2952. +</para> + +<para> +<userinput>make bootstrap:</userinput> Compile GCC by bootstrapping it. +Here that means the compiler will be built three times in total. First +it is compiled with your system's default compiler (which will usually +be a gcc or egcs compiler). This is stage 1 compiler. Then GCC will re-compile +itself but instead of using your system's compiler it will use itself to +compile itself again. This is the stage 2 compiler. Then it will compile +itself a second time with the stage 2 compiler and compares the second +and the third build to see if they are identical. If so, the +compilation was a success. +</para> + +</sect2> + diff --git a/chapter05/gcc-local-inst.sgml b/chapter05/gcc-local-inst.sgml new file mode 100644 index 000000000..c98ab6e0f --- /dev/null +++ b/chapter05/gcc-local-inst.sgml @@ -0,0 +1,56 @@ +<sect2> +<title>Installation of GCC on the normal system if necessary</title> + +<para> +In order to compile Glibc-2.1.3 later on you need to have gcc-2.95.2 +installed. Although any GCC version above 2.8 would do, 2.95.2 is the +highly +recommended version to use. egcs-2.91.x is also known to work. If you +don't have gcc-2.95.x or egcs-2.91.x you need to install gcc-2.95.2 on +your normal sytem before you can compile Glibc later in this chapter. +</para> + +<para> +To find out which compiler version your systems has, run the +following command: +</para> + +<blockquote><literallayout> + + <userinput>gcc --version</userinput> + +</literallayout></blockquote> + +<para> +If you normal Linux system does not have gcc-2.95.x or egcs-2.91.x +installed you need to install it now. We won't replace the current +compiler on your system, but instead we will install gcc in a separate +directory (/usr/local/gcc2952). This way no binaries or header files will be +replaced. +</para> + +<para> +After you unpacked the gcc-2.95.2 archive don't enter the newly created +gcc-2.95.2 directory but stay in the $LFS/usr/src directory. Install GCC by +running the following commands: +</para> + +<blockquote><literallayout> + + <userinput>mkdir $LFS/usr/src/gcc-build &&</userinput> + <userinput>cd $LFS/usr/src/gcc-build &&</userinput> + <userinput>../gcc-2.95.2/configure \</userinput> + <userinput> --prefix=/usr/local/gcc2952 \</userinput> + <userinput> --with-local-prefix=/usr/local/gcc2952 + \</userinput> + <userinput> + --with-gxx-include-dir=/usr/local/gcc2952/include/g++ \</userinput> + <userinput> --enable-shared --enable-languages=c,c++ + &&</userinput> + <userinput>make bootstrap &&</userinput> + <userinput>make install</userinput> + +</literallayout></blockquote> + +</sect2> + diff --git a/chapter05/gcc-local.sgml b/chapter05/gcc-local.sgml new file mode 100644 index 000000000..91b02f55a --- /dev/null +++ b/chapter05/gcc-local.sgml @@ -0,0 +1,9 @@ +<sect1 id="ch05-gcclocal"> +<title>Installing GCC on the normal system if necessary</title> + +&c5-pp-gcc-local-inst; +&c5-pp-gcc-local-exp; +&aa-gcc-desc; + +</sect1> + diff --git a/chapter05/gcc-static-exp.sgml b/chapter05/gcc-static-exp.sgml new file mode 100644 index 000000000..62639d914 --- /dev/null +++ b/chapter05/gcc-static-exp.sgml @@ -0,0 +1,24 @@ +<sect2> +<title>Command explanations</title> + +<para> +<userinput>--enable-languages=c,c++:</userinput> This only builds the C +and C++ compilers and not the other available compilers as they are, on +the average, not often used. If you do need those other compilers don't +use the --enable-languages parameter. +</para> + +<para> +<userinput>ln -s ../usr/lib/gcc-lib/*/2.95.2/cpp cpp:</userinput> This +creates the $LFS/lib/cpp symlink. Some packages explicitely try to find +cpp in /lib. +</para> + +<para> +<userinput>ln -s ../usr/lib/gcc-lib/*/2.95.2/cpp cpp:</userinput> This +creates the $LFS/usr/lib/cpp symlink as there are packages that expect +cpp to be in /usr/lib. +</para> + +</sect2> + diff --git a/chapter05/gcc-static-inst.sgml b/chapter05/gcc-static-inst.sgml new file mode 100644 index 000000000..fce53546a --- /dev/null +++ b/chapter05/gcc-static-inst.sgml @@ -0,0 +1,36 @@ +<sect2> +<title>Installation of GCC on the LFS system</title> + +<para> +After you unpacked the gcc-2.95.2 archive don't enter the newly created +gcc-2.95.2 directory but stay in the $LFS/usr/src directory. Install GCC by +running the following commands: +</para> + +<blockquote><literallayout> + + <userinput>mkdir $LFS/usr/src/gcc-build &&</userinput> + <userinput>cd $LFS/usr/src/gcc-build &&</userinput> + <userinput>../gcc-2.95.2/configure --prefix=/usr \</userinput> + <userinput> --with-gxx-include-dir=/usr/include/g++ + \</userinput> + <userinput> --enable-languages=c,c++ --disable-nls + &&</userinput> + <userinput>make -e LDFLAGS=-static bootstrap &&</userinput> + <userinput>make prefix=$LFS/usr local_prefix=$LFS/usr/local + \</userinput> + <userinput> gxx_include_dir=$LFS/usr/include/g++ + install &&</userinput> + <userinput>cd $LFS/lib &&</userinput> + <userinput>ln -s ../usr/lib/gcc-lib/*/2.95.2/cpp cpp + &&</userinput> + <userinput>cd $LFS/usr/lib &&</userinput> + <userinput>ln -s gcc-lib/*/2.95.2/cpp cpp + &&</userinput> + <userinput>cd $LFS/usr/bin &&</userinput> + <userinput>ln -s gcc cc</userinput> + +</literallayout></blockquote> + +</sect2> + diff --git a/chapter05/gcc-static.sgml b/chapter05/gcc-static.sgml new file mode 100644 index 000000000..813257ca0 --- /dev/null +++ b/chapter05/gcc-static.sgml @@ -0,0 +1,9 @@ +<sect1 id="ch05-gcc"> +<title>Installing GCC on the LFS system</title> + +&c5-pp-gcc-inst; +&c5-pp-gcc-exp; +&aa-gcc-desc; + +</sect1> + diff --git a/chapter05/glibc-exp.sgml b/chapter05/glibc-exp.sgml new file mode 100644 index 000000000..b325b739d --- /dev/null +++ b/chapter05/glibc-exp.sgml @@ -0,0 +1,29 @@ +<sect2> +<title>Command explanations</title> + +<para> +<userinput>patch -Np1 -i ../glibc-2.1.3.patch:</userinput> This applies +a patch that fixes a minor bug in Glibc. Glibc defines a few variables +names with illegal characters in the name. Bash-2.03 and older don't +complain about that but Bash-2.04 does and won't compile Glibc properly. +</para> + +<para> +<userinput>--enable-add-ons:</userinput> This enabled the add-ons that +we install with Glibc: linuxthreads and crypt. +</para> + +<para> +<userinput>--with-headers=$LFS/usr/include:</userinput> This makes Glibc +use the kernel header files on our LFS system and not the kernel header +files from your starting distribution which may be out-of-date or +modified. +</para> + +<para> +<userinput>make install_root=$LFS:</userinput> This is the Glibc way to +specify the equivalent of --prefix=. +</para> + +</sect2> + diff --git a/chapter05/glibc-inst.sgml b/chapter05/glibc-inst.sgml new file mode 100644 index 000000000..122f37ac2 --- /dev/null +++ b/chapter05/glibc-inst.sgml @@ -0,0 +1,111 @@ +<sect2> +<title>Installation of Glibc</title> + +<para> +Unpack the glibc-crypt and glibc-linuxthreads in the glibc-2.1.3 +directory, not in $LFS/usr/src. Don't enter the created directories. Just +unpack them and leave it with that. +</para> + +<para> +A few default parameters of Glibc need to be changed, such as the +directory where the shared libraries are supposed to be installed in and +the directory that contains the system configuration files. For this +purpose you need to create the <filename class="directory"> +$LFS/usr/src/glibc-build</filename> directory and cd into that directory +with: +</para> + +<blockquote><literallayout> + + <userinput>mkdir $LFS/usr/src/glibc-build &&</userinput> + <userinput>cd $LFS/usr/src/glibc-build</userinput> + +</literallayout></blockquote> + +<para> +In that directory you create a new file <filename>configparms</filename> +by running the following: +</para> + +<literallayout> + +<userinput>cat > configparms << "EOF"</userinput> +# Begin configparms + +slibdir=/lib +sysconfdir=/etc + +# End configparms +<userinput>EOF</userinput> + +</literallayout> + +<para> +Before we actually install Glibc you need to unpack the Glibc patch +file. +</para> + +<para> +Please note that the configure script of Glibc may complain about +certain files in the /usr/include directory being too old and will be +replaced, or that some symlink is not supposed to be there anymore (like +the /usr/include/scsi symlink that's present on older Linux systems). If +it asks you to move a symlink like scsi out of the way, please do so. If +it says it will replace old files by the newer Glibc files you can +ignore that. Glibc does not know that it will end up on $LFS when the +configure script is run. +</para> + +<para> +If your system had already a suitable GCC version installed, change to the +<filename class="directory">$LFS/usr/src/glibc-build</filename> +directory and install Glibc by running the following +commands: +</para> + +<blockquote><literallayout> + + <userinput>cd ../glibc-2.1.3 &&</userinput> + <userinput>patch -Np1 -i ../glibc-2.1.3.patch &&</userinput> + <userinput>cd $LFS/usr/src/glibc-build &&</userinput> + <userinput>../glibc-2.1.3/configure \</userinput> + <userinput> --prefix=/usr --enable-add-ons + \</userinput> + <userinput> --with-headers=$LFS/usr/include + \</userinput> + <userinput> --libexecdir=/usr/bin && + </userinput> + <userinput>make &&</userinput> + <userinput>make install_root=$LFS install &&</userinput> + <userinput>make install_root=$LFS localedata/install-locales</userinput> + +</literallayout></blockquote> + +<para> +If your system didn't have a suitable GCC version installed, change to the +<filename class="directory">$LFS/usr/src/glibc-build</filename> +directory and install Glibc using the gcc-2.95.2 you just installed by +running the following commands: +</para> + +<blockquote><literallayout> + + <userinput>cd ../glibc-2.1.3 &&</userinput> + <userinput>patch -Np1 -i ../glibc-2.1.3.patch &&</userinput> + <userinput>cd $LFS/usr/src/glibc-build &&</userinput> + <userinput>CC=/usr/local/gcc2952/bin/gcc \</userinput> + <userinput> ../glibc-2.1.3/configure --prefix=/usr + --enable-add-ons \</userinput> + <userinput> --with-headers=$LFS/usr/include \ + </userinput> + <userinput> --libexecdir=/usr/bin && + </userinput> + <userinput>make &&</userinput> + <userinput>make install_root=$LFS install &&</userinput> + <userinput>make install_root=$LFS localedata/install-locales</userinput> + +</literallayout></blockquote> + +</sect2> + diff --git a/chapter05/glibc-nss.sgml b/chapter05/glibc-nss.sgml new file mode 100644 index 000000000..a281e60c9 --- /dev/null +++ b/chapter05/glibc-nss.sgml @@ -0,0 +1,38 @@ +<sect2> +<title>Copying old NSS library files</title> + +<para> +If your normal Linux system runs glibc-2.0, you need to copy the NSS +library files to the LFS partition. Certain statically linked programs +still depend on the NSS library, especially programs that need to lookup +usernames,userid's and groupid's. You can check which C library version +your normal Linux system uses by running: +</para> + +<blockquote><literallayout> + + <userinput>strings /lib/libc* | grep "release version"</userinput> + +</literallayout></blockquote> + +<para> +The output of that command should tell you something like this: +</para> + +<blockquote><literallayout> + GNU C Library stable release version 2.1.3, by Roland McGrath et al. +</literallayout></blockquote> + +<para> +If you have Glibc-2.0.x installed on your starting distribution, copy +the NSS library files by running: +</para> + +<blockquote><literallayout> + + <userinput>cp -av /lib/libnss* $LFS/lib</userinput> + +</literallayout></blockquote> + +</sect2> + diff --git a/chapter05/glibc.sgml b/chapter05/glibc.sgml new file mode 100644 index 000000000..5c03144a9 --- /dev/null +++ b/chapter05/glibc.sgml @@ -0,0 +1,9 @@ +<sect1 id="ch05-glibc"> +<title>Installing Glibc</title> + +&c5-pp-glibc-inst; +&c5-pp-glibc-nss; +&c5-pp-glibc-exp; +&aa-glibc-desc; + +</sect1> diff --git a/chapter05/grep-static-inst.sgml b/chapter05/grep-static-inst.sgml new file mode 100644 index 000000000..ecf2051ee --- /dev/null +++ b/chapter05/grep-static-inst.sgml @@ -0,0 +1,21 @@ +<sect2> +<title>Installation of Grep</title> + +<para> +Install Grep by running the following commands: +</para> + +<blockquote><literallayout> + + <userinput>export CPPFLAGS=-Dre_max_failures=re_max_failures2 + &&</userinput> + <userinput>./configure --prefix=$LFS/usr --disable-nls + &&</userinput> + <userinput>unset CPPFLAGS &&</userinput> + <userinput>make LDFLAGS=-static &&</userinput> + <userinput>make install</userinput> + +</literallayout></blockquote> + +</sect2> + diff --git a/chapter05/grep-static.sgml b/chapter05/grep-static.sgml new file mode 100644 index 000000000..5887148af --- /dev/null +++ b/chapter05/grep-static.sgml @@ -0,0 +1,8 @@ +<sect1 id="ch05-grep"> +<title>Installing Grep</title> + +&c5-pp-grep-inst; +&aa-grep-desc; + +</sect1> + diff --git a/chapter05/gzip-static-inst.sgml b/chapter05/gzip-static-inst.sgml new file mode 100644 index 000000000..0b9c58409 --- /dev/null +++ b/chapter05/gzip-static-inst.sgml @@ -0,0 +1,22 @@ +<sect2> +<title>Installation of Gzip</title> + +<para> +Before you install Gzip you have to unpack the gzip patch file. +</para> + +<blockquote><literallayout> + + <userinput>patch -Np1 -i ../gzip-1.2.4a.patch &&</userinput> + <userinput>./configure --prefix=$LFS/usr --disable-nls + &&</userinput> + <userinput>make LDFLAGS=-static &&</userinput> + <userinput>make install &&</userinput> + <userinput>cp $LFS/usr/bin/gunzip $LFS/usr/bin/gzip + $LFS/bin &&</userinput> + <userinput>rm $LFS/usr/bin/gunzip $LFS/usr/bin/gzip</userinput> + +</literallayout></blockquote> + +</sect2> + diff --git a/chapter05/gzip-static.sgml b/chapter05/gzip-static.sgml new file mode 100644 index 000000000..0737c6728 --- /dev/null +++ b/chapter05/gzip-static.sgml @@ -0,0 +1,8 @@ +<sect1 id="ch05-gzip"> +<title>Installing Gzip</title> + +&c5-pp-gzip-inst; +&aa-gzip-desc; + +</sect1> + diff --git a/chapter05/introduction.sgml b/chapter05/introduction.sgml new file mode 100644 index 000000000..881a7e9ed --- /dev/null +++ b/chapter05/introduction.sgml @@ -0,0 +1,55 @@ +<sect1 id="ch05-introduction"> +<title>Introduction</title> + +<para> +In the following chapters we will install all the software that belongs to +a basic Linux system. After you're done with this chapter you have a +fully working Linux system. The remaining chapters deal with setting up +networking, creating the boot scripts and adding an entry to lilo.conf so +that you can boot your LFS system. +</para> + +<para> +The software in this chapter will be linked statically. These programs +will be re-installed in the next chapter and linked dynamically. The +reason for the static version first is that there is a chance that our +normal Linux system and your LFS system aren't using the same C +Library versions. If the programs in the first part are linked against +an older C library version, those programs might not work well on the +LFS system. +</para> + +<para> +The key to learn what makes Linux tick is to know exactly what packages +are used for and why you or the system needs them. Descriptions +of the package content are provided after the Installation subsection of each +package and in Appendix A as well. +</para> + +<para> +We're about to start with installing the first set of packages. These +packages will be, as previously explained, linked statically. +</para> + +<para> +During the installation of various packages you will most likely see +compiler warnings scrolling by on your screen. These are normal and can +be safely ignored. They are just that, warnings (mostly about improper +use of the C or C++ syntax, but not illegal use. It's just that often C +standards changed and packages still use the old standard which is not a +problem). +</para> + +<para> +Before we start, make sure you have the LFS environment variable setup +if you plan on using it, by running the following command: +</para> + +<blockquote><literallayout> + + <userinput>echo $LFS</userinput> + +</literallayout></blockquote> + +</sect1> + diff --git a/chapter05/kernel-exp.sgml b/chapter05/kernel-exp.sgml new file mode 100644 index 000000000..1ff6f17ee --- /dev/null +++ b/chapter05/kernel-exp.sgml @@ -0,0 +1,35 @@ +<sect2> +<title>Command explanations</title> + +<para> +<userinput>yes "" | make config:</userinput> This runs make config and +answers "Y" to every question the config script asks the user. We're not +configuring the real kernel here, we just need to have some sort of +configure file created so that we can run make dep next that will create +a few files in $LFS/usr/src/linux/include/linux like version.h among +others that we will need to compilg Glibc and other packages later in +chroot. +</para> + +<para> +<userinput>make dep:</userinput> make dep checks dependencies and sets +up the dependencies file. We don't really care about the dependency +checks, but what we do care about is that make dep creates those +aforementioned files in $LFS/usr/src/linux/include/linux we will be +needing later on. +</para> + +<para> +<userinput>ln -s ../src/linux/include/linux linux</userinput> and +<userinput>ln -s ../src/linux/include/asm asm:</userinput> These +commands create the linux and asm symlinks in the $LFS/usr/include +directory that point to the proper directories in the Linux source tree. +Packages that need kernel headers include them with lines like #include +<linux/errno.h>. These paths are relative to the /usr/include +directory so the /usr/include/linux link points to the directory +containing the Linux kernel header files. The same goes for the asm +symlink. +</para> + +</sect2> + diff --git a/chapter05/kernel-inst.sgml b/chapter05/kernel-inst.sgml new file mode 100644 index 000000000..0d36fa1af --- /dev/null +++ b/chapter05/kernel-inst.sgml @@ -0,0 +1,49 @@ +<sect2> +<title>Installation of Linux Kernel</title> + +<para> +We won't be compiling a new kernel image yet. We'll do that after we +have finished the installation of the basic system software in this +chapter. But because certain software need the kernel header files, we're +going to unpack the kernel archive now and set it up so that we can +compile package that need the kernel. +</para> + +<para> +Create the kernel configuration file by running the following command: +</para> + +<blockquote><literallayout> + + <userinput>yes "" | make config</userinput> + +</literallayout></blockquote> + +<para> +Ignore the warning <emphasis>Broken pipe</emphasis> you might see at the +end. Now run the following commands to set up all the dependencies correctly: +</para> + +<blockquote><literallayout> + + <userinput>make dep</userinput> + +</literallayout></blockquote> + +<para> +Now that that's done, we need to create the <filename class="symlink"> +$LFS/usr/include/linux</filename> and the <filename class="symlink"> +$LFS/usr/include/asm</filename> symlinks. Create them by running the +following commands: +</para> + +<blockquote><literallayout> + + <userinput>cd $LFS/usr/include &&</userinput> + <userinput>ln -s ../src/linux/include/linux linux &&</userinput> + <userinput>ln -s ../src/linux/include/asm asm</userinput> + +</literallayout></blockquote> + +</sect2> + diff --git a/chapter05/kernel.sgml b/chapter05/kernel.sgml new file mode 100644 index 000000000..be1bf3b45 --- /dev/null +++ b/chapter05/kernel.sgml @@ -0,0 +1,9 @@ +<sect1 id="ch05-kernel"> +<title>Installing Linux Kernel</title> + +&c5-pp-kernel-inst; +&c5-pp-kernel-exp; +&aa-kernel-desc; + +</sect1> + diff --git a/chapter05/make-static-inst.sgml b/chapter05/make-static-inst.sgml new file mode 100644 index 000000000..74fee7dea --- /dev/null +++ b/chapter05/make-static-inst.sgml @@ -0,0 +1,18 @@ +<sect2> +<title>Installation of Make</title> + +<para> +Install Make by running the following commands: +</para> + +<blockquote><literallayout> + + <userinput>./configure --prefix=$LFS/usr + --disable-nls &&</userinput> + <userinput>make LDFLAGS=-static &&</userinput> + <userinput>make install</userinput> + +</literallayout></blockquote> + +</sect2> + diff --git a/chapter05/make-static.sgml b/chapter05/make-static.sgml new file mode 100644 index 000000000..9380ad1c5 --- /dev/null +++ b/chapter05/make-static.sgml @@ -0,0 +1,8 @@ +<sect1 id="ch05-make"> +<title>Installing Make</title> + +&c5-pp-make-inst; +&aa-make-desc; + +</sect1> + diff --git a/chapter05/proc.sgml b/chapter05/proc.sgml new file mode 100644 index 000000000..044ccd6c6 --- /dev/null +++ b/chapter05/proc.sgml @@ -0,0 +1,23 @@ +<sect1 id="ch05-proc"> +<title>Mounting $LFS/proc file system</title> + +<para> +In order for certain programs to function properly the proc file system +must be mounted and available from within the chroot'ed environment as +well. It's not a problem to mount the proc file system twice +or even more than that, since it's a virtual file system maintained by +the kernel itself. +</para> + +<para> +Mount the proc file system under $LFS/proc by running the following command: +</para> + +<blockquote><literallayout> + + <userinput>mount proc $LFS/proc -t proc</userinput> + +</literallayout></blockquote> + +</sect1> + diff --git a/chapter05/pwdgroup.sgml b/chapter05/pwdgroup.sgml new file mode 100644 index 000000000..db7343aa6 --- /dev/null +++ b/chapter05/pwdgroup.sgml @@ -0,0 +1,53 @@ +<sect1 id="ch05-pwdgroup"> +<title>Creating passwd and group files</title> + +<para> +In order for user and group root to be recognized and to be able to logon +it needs an entry in the /etc/passwd and /etc/group file. Besides the +group root a couple of other groups are recommended and needed by +packages. The groups with their GID's below aren't part of any standard. +The LSB only recommends besides a group root a group bin to be present +with GID 1. Other group names and GID's can be chosen by yourself. Well +written packages don't depend on GID numbers but just use the group +name, it doesn't matter all that much what GID a group has. Since there +aren't any standards for groups I won't follow any conventions used by +Debian, RedHat and others. The groups added here are the groups the +MAKEDEV script (the script that creates the device files in the /dev +directory) mentions. +</para> + +<para> +Create a new file <filename>$LFS/etc/passwd</filename> by running the +following command: +</para> + +<blockquote><literallayout> + + <userinput>echo "root:x:0:0:root:/root:/bin/bash" > + $LFS/etc/passwd</userinput> + +</literallayout></blockquote> + +<para> +Create a new file <filename>$LFS/etc/group</filename> by running the +following: +</para> + +<literallayout> + +<userinput>cat > $LFS/etc/group << "EOF"</userinput> + root:x:0: + bin:x:1: + sys:x:2: + kmem:x:3: + tty:x:4: + uucp:x:5: + daemon:x:6: + floppy:x:7: + disk:x:8: +<userinput>EOF</userinput> + +</literallayout> + +</sect1> + diff --git a/chapter05/sed-static-inst.sgml b/chapter05/sed-static-inst.sgml new file mode 100644 index 000000000..701fbcf1b --- /dev/null +++ b/chapter05/sed-static-inst.sgml @@ -0,0 +1,21 @@ +<sect2> +<title>Installation of Sed</title> + +<para> +Install Sed by running the following commands: +</para> + +<blockquote><literallayout> + + <userinput>export CPPFLAGS=-Dre_max_failures=re_max_failures2 + &&</userinput> + <userinput>./configure --prefix=$LFS/usr + --disable-nls --bindir=$LFS/bin &&</userinput> + <userinput>unset CPPFLAGS &&</userinput> + <userinput>make LDFLAGS=-static &&</userinput> + <userinput>make install</userinput> + +</literallayout></blockquote> + +</sect2> + diff --git a/chapter05/sed-static.sgml b/chapter05/sed-static.sgml new file mode 100644 index 000000000..91cfdb6b9 --- /dev/null +++ b/chapter05/sed-static.sgml @@ -0,0 +1,8 @@ +<sect1 id="ch05-sed"> +<title>Installing Sed</title> + +&c5-pp-sed-inst; +&aa-sed-desc; + +</sect1> + diff --git a/chapter05/shellutils-static-inst.sgml b/chapter05/shellutils-static-inst.sgml new file mode 100644 index 000000000..5c65eefc7 --- /dev/null +++ b/chapter05/shellutils-static-inst.sgml @@ -0,0 +1,21 @@ +<sect2> +<title>Installation of Sh-utils</title> + +<para> +Install Shellutils by running the following commands: +</para> + +<blockquote><literallayout> + + <userinput>./configure --prefix=$LFS/usr + --disable-nls &&</userinput> + <userinput>make LDFLAGS=-static &&</userinput> + <userinput>make install &&</userinput> + <userinput>cd $LFS/usr/bin &&</userinput> + <userinput>mv date echo false pwd stty $LFS/bin &&</userinput> + <userinput>mv su true uname hostname $LFS/bin</userinput> + +</literallayout></blockquote> + +</sect2> + diff --git a/chapter05/shellutils-static.sgml b/chapter05/shellutils-static.sgml new file mode 100644 index 000000000..59b371b04 --- /dev/null +++ b/chapter05/shellutils-static.sgml @@ -0,0 +1,8 @@ +<sect1 id="ch05-shutils"> +<title>Installing Shellutils</title> + +&c5-pp-shellutils-inst; +&aa-shellutils-desc; + +</sect1> + diff --git a/chapter05/tar-static-inst.sgml b/chapter05/tar-static-inst.sgml new file mode 100644 index 000000000..4a811c8cf --- /dev/null +++ b/chapter05/tar-static-inst.sgml @@ -0,0 +1,40 @@ +<sect2> +<title>Installation of Tar</title> + +<para> +If you want to be able to directly use bzip2 files with tar, use the tar +patch avaiable from the LFS FTP site. This patch will add the -y option +to tar which works the same as the -z option to tar (which you can use +for gzip files). +</para> + +<para> +Apply the patch by running the following command: +</para> + +<blockquote><literallayout> + + <userinput>cd src &&</userinput> + <userinput>patch -i ../../gnutarpatch.txt &&</userinput> + <userinput>cd ..</userinput> + +</literallayout></blockquote> + +<para> +Install Tar by running the following commands: +</para> + +<blockquote><literallayout> + + <userinput>./configure --prefix=$LFS/usr + --disable-nls \</userinput> + <userinput> --libexecdir=$LFS/usr/bin && + </userinput> + <userinput>make LDFLAGS=-static &&</userinput> + <userinput>make prefix=$LFS/usr install &&</userinput> + <userinput>mv $LFS/usr/bin/tar $LFS/bin</userinput> + +</literallayout></blockquote> + +</sect2> + diff --git a/chapter05/tar-static.sgml b/chapter05/tar-static.sgml new file mode 100644 index 000000000..17ca6b885 --- /dev/null +++ b/chapter05/tar-static.sgml @@ -0,0 +1,8 @@ +<sect1 id="ch05-tar"> +<title>Installing Tar</title> + +&c5-pp-tar-inst; +&aa-tar-desc; + +</sect1> + diff --git a/chapter05/textutils-static-inst.sgml b/chapter05/textutils-static-inst.sgml new file mode 100644 index 000000000..2fe91620c --- /dev/null +++ b/chapter05/textutils-static-inst.sgml @@ -0,0 +1,19 @@ +<sect2> +<title>Installation of Textutils</title> + +<para> +Install Textutils by running the following commands: +</para> + +<blockquote><literallayout> + + <userinput>./configure --prefix=$LFS/usr + --disable-nls &&</userinput> + <userinput>make LDFLAGS=-static &&</userinput> + <userinput>make install &&</userinput> + <userinput>mv $LFS/usr/bin/cat $LFS/bin</userinput> + +</literallayout></blockquote> + +</sect2> + diff --git a/chapter05/textutils-static.sgml b/chapter05/textutils-static.sgml new file mode 100644 index 000000000..2870918e9 --- /dev/null +++ b/chapter05/textutils-static.sgml @@ -0,0 +1,8 @@ +<sect1 id="ch05-textutils"> +<title>Installing Textutils</title> + +&c5-pp-textutils-inst; +&aa-textutils-desc; + +</sect1> + diff --git a/chapter06/aboutdebug.sgml b/chapter06/aboutdebug.sgml new file mode 100644 index 000000000..5bd7a671e --- /dev/null +++ b/chapter06/aboutdebug.sgml @@ -0,0 +1,69 @@ +<sect1 id="ch06-aboutdebug"> +<title>About debugging symbols</title> + +<para> +Most programs and libraries by default are compiled with debugging +symbols and optimizing level 2 (gcc options -g and -O2) and are compiled +for a specific CPU. On Intel platforms software is compiled for i386 +processors by default. If you don't wish to run software on other +machines other than your own, you might want to change the default +compiler options so that they will be compiled with a higher +optimization level, no debugging symbols and generate code for your +specific architecture. Let me first explain what debugging symbols +are. +</para> + +<para> +A program compiled with debugging symbols means you can run a program or +library through a debugger and the debugger's output will be user friendlier. +These debugging symbols also enlarge the program or library significantly. +</para> + +<para> +To remove debugging symbols from a binary (must be an a.out or ELF binary) +run <userinput>strip --strip-debug filename</userinput> You can use wild cards +if you need to strip debugging symbols from multiple files (use something like +strip --strip-debug $LFS/usr/bin/*). Another, easier, options is just +not to compile programs with debugging symbols. Most people will probably +never use a debugger on software, so by leaving those symbols out you +can save a lot of diskspace. +</para> + +<para> +Before you wonder if these debugging symbols would make a big difference, +here are some statistics: +</para> + +<itemizedlist> + +<listitem><para> + A dynamic Bash binary with debugging symbols: 1.2MB +</para></listitem> + +<listitem><para> + A dynamic Bash binary without debugging symbols: 478KB +</para></listitem> + +<listitem><para> + /lib and /usr/lib (glibc and gcc files) with debugging + symbols: 87MB +</para></listitem> + +<listitem><para> + /lib and /usr/lib (glibc and gcc files) without + debugging symbols: 16MB +</para></listitem> + +</itemizedlist> + +<para> +Sizes may vary depending on which compiler was used and which C library +version was used to link dynamic programs against, but your results will be +similar if you compare programs with and without debugging symbols. After +I was done with this chapter and stripped all debugging symbols from all LFS +binaries and libraries I regained a little over 102 MB of disk space. Quite +the difference. +</para> + +</sect1> + diff --git a/chapter06/autoconf-inst.sgml b/chapter06/autoconf-inst.sgml new file mode 100644 index 000000000..6d66859a3 --- /dev/null +++ b/chapter06/autoconf-inst.sgml @@ -0,0 +1,17 @@ +<sect2> +<title>Installation of Autoconf</title> + +<para> +Install Autoconf by running the following commands: +</para> + +<blockquote><literallayout> + + <userinput>./configure --prefix=/usr &&</userinput> + <userinput>make &&</userinput> + <userinput>make install</userinput> + +</literallayout></blockquote> + +</sect2> + diff --git a/chapter06/autoconf.sgml b/chapter06/autoconf.sgml new file mode 100644 index 000000000..5a02716d9 --- /dev/null +++ b/chapter06/autoconf.sgml @@ -0,0 +1,7 @@ +<sect1 id="ch06-autoconf"> +<title>Installing Autoconf</title> + +&c6-in-autoconf-inst; +&aa-autoconf-desc; + +</sect1> diff --git a/chapter06/automake-inst.sgml b/chapter06/automake-inst.sgml new file mode 100644 index 000000000..a15fd7f82 --- /dev/null +++ b/chapter06/automake-inst.sgml @@ -0,0 +1,16 @@ +<sect2> +<title>Installation of Automake</title> + +<para> +Install Automake by running the following commands: +</para> + +<blockquote><literallayout> + + <userinput>./configure --prefix=/usr &&</userinput> + <userinput>make install</userinput> + +</literallayout></blockquote> + +</sect2> + diff --git a/chapter06/automake.sgml b/chapter06/automake.sgml new file mode 100644 index 000000000..f916b4f52 --- /dev/null +++ b/chapter06/automake.sgml @@ -0,0 +1,7 @@ +<sect1 id="ch06-automake"> +<title>Installing Automake</title> + +&c6-in-automake-inst; +&aa-automake-desc; + +</sect1> diff --git a/chapter06/bash-inst.sgml b/chapter06/bash-inst.sgml new file mode 100644 index 000000000..790ea5344 --- /dev/null +++ b/chapter06/bash-inst.sgml @@ -0,0 +1,33 @@ +<sect2> +<title>Installation of Bash</title> + +<para> +Install Bash by running the following commands: +</para> + +<blockquote><literallayout> + + <userinput>./configure --prefix=/usr --with-curses + &&</userinput> + <userinput>make &&</userinput> + <userinput>make install &&</userinput> + <userinput>logout</userinput> + +</literallayout></blockquote> + +<para> +Replace the static bash with the dynamic bash and re-enter the chroot'ed +environment by running: +</para> + +<blockquote><literallayout> + + <userinput>mv $LFS/usr/bin/bash $LFS/usr/bin/bashbug + $LFS/bin &&</userinput> + <userinput>chroot $LFS /usr/bin/env -i HOME=/root /bin/bash + --login</userinput> + +</literallayout></blockquote> + +</sect2> + diff --git a/chapter06/bash.sgml b/chapter06/bash.sgml new file mode 100644 index 000000000..490355fa7 --- /dev/null +++ b/chapter06/bash.sgml @@ -0,0 +1,7 @@ +<sect1 id="ch06-bash"> +<title>Installing Bash</title> + +&c6-in-bash-inst; +&aa-bash-desc; + +</sect1> diff --git a/chapter06/bashprofile.sgml b/chapter06/bashprofile.sgml new file mode 100644 index 000000000..f34ae8251 --- /dev/null +++ b/chapter06/bashprofile.sgml @@ -0,0 +1,38 @@ +<sect1 id="ch06-bashprofile"> +<title>Creating $LFS/root/.bash_profile</title> + +<para> +When we have entered the chroot'ed environment in the next section we +want to export a couple of environment variables in that shell such as +PS1, PATH and others variables you want to have set. For that purpose we'll +create the $LFS/root/.bash_profile file which will be read by bash when we +enter the chroot environment. +</para> + +<para> +Create a new file <filename>$LFS/root/.bash_profile</filename> +by running the following. +</para> + +<literallayout> + +<userinput>cat > $LFS/root/.bash_profile << "EOF"</userinput> +# Begin /root/.bash_profile + +PS1='\u:\w\$ ' +PATH=/bin:/usr/bin:/sbin:/usr/sbin + +export PS1 PATH + +# End /root/.bash_profile +<userinput>EOF</userinput> + +</literallayout> + +<para> +You can add more environment variables,aliases and whatever else you +need/want at your own discretion as you deem them necessary. +</para> + +</sect1> + diff --git a/chapter06/bin86-inst.sgml b/chapter06/bin86-inst.sgml new file mode 100644 index 000000000..0f5abe4e2 --- /dev/null +++ b/chapter06/bin86-inst.sgml @@ -0,0 +1,16 @@ +<sect2> +<title>Installation of Bin86</title> + +<para> +Install Linux86 by running the following commands: +</para> + +<blockquote><literallayout> + + <userinput>make &&</userinput> + <userinput>make PREFIX=/usr install</userinput> + +</literallayout></blockquote> + +</sect2> + diff --git a/chapter06/bin86.sgml b/chapter06/bin86.sgml new file mode 100644 index 000000000..d3d41ceeb --- /dev/null +++ b/chapter06/bin86.sgml @@ -0,0 +1,7 @@ +<sect1 id="ch06-bin86"> +<title>Installing Bin86</title> + +&c6-in-bin86-inst; +&aa-bin86-desc; + +</sect1> diff --git a/chapter06/binutils-inst.sgml b/chapter06/binutils-inst.sgml new file mode 100644 index 000000000..ed32aab18 --- /dev/null +++ b/chapter06/binutils-inst.sgml @@ -0,0 +1,16 @@ +<sect2><title>Installation of Binutils</title> + +<para> +Install Binutils by running the following commands: +</para> + +<blockquote><literallayout> + + <userinput>./configure --prefix=/usr --enable-shared &&</userinput> + <userinput>make -e tooldir=/usr &&</userinput> + <userinput>make -e tooldir=/usr install</userinput> + +</literallayout></blockquote> + +</sect2> + diff --git a/chapter06/binutils.sgml b/chapter06/binutils.sgml new file mode 100644 index 000000000..da8ae86b7 --- /dev/null +++ b/chapter06/binutils.sgml @@ -0,0 +1,7 @@ +<sect1 id="ch06-binutils"> +<title>Installing Binutils</title> + +&c6-in-binutils-inst; +&aa-binutils-desc; + +</sect1> diff --git a/chapter06/bison-exp.sgml b/chapter06/bison-exp.sgml new file mode 100644 index 000000000..427d991a3 --- /dev/null +++ b/chapter06/bison-exp.sgml @@ -0,0 +1,10 @@ +<sect2> +<title>Command explanations</title> + +<para> +<userinput>--datadir=/usr/share/bison:</userinput> This install the +bison grammar files in /usr/share/bison rather than /usr/share. +</para> + +</sect2> + diff --git a/chapter06/bison-inst.sgml b/chapter06/bison-inst.sgml new file mode 100644 index 000000000..51c2231e4 --- /dev/null +++ b/chapter06/bison-inst.sgml @@ -0,0 +1,45 @@ +<sect2> +<title>Installation of Bison</title> + +<para> +Install Bison by running the following commands: +</para> + +<blockquote><literallayout> + + <userinput>./configure --prefix=/usr \</userinput> + <userinput> --datadir=/usr/share/bison + &&</userinput> + <userinput>make &&</userinput> + <userinput>make install</userinput> + +</literallayout></blockquote> + +<para> +Some programs don't know about bison and try to find the yacc program +(bison is a (better) alternative for yacc). So to please those few +programs out there we'll create a yacc script that calls bison and have +it emulate yacc's output file name conventions). +</para> + +<para> +Create a new file <filename>/usr/bin/yacc</filename> by running the +following: +</para> + +<literallayout> + +<userinput>cat > /usr/bin/yacc << "EOF"</userinput> +#!/bin/sh +# Begin /usr/bin/yacc + +/usr/bin/bison -y $* + +# End /usr/bin/yacc +<userinput>EOF</userinput> +<userinput>chmod 755 /usr/bin/yacc</userinput> + +</literallayout> + +</sect2> + diff --git a/chapter06/bison.sgml b/chapter06/bison.sgml new file mode 100644 index 000000000..cc30f0862 --- /dev/null +++ b/chapter06/bison.sgml @@ -0,0 +1,9 @@ +<sect1 id="ch06-bison"> +<title>Installing Bison</title> + +&c6-in-bison-inst; +&c6-in-bison-exp; +&aa-bison-desc; + +</sect1> + diff --git a/chapter06/bzip2-exp.sgml b/chapter06/bzip2-exp.sgml new file mode 100644 index 000000000..10e4129e4 --- /dev/null +++ b/chapter06/bzip2-exp.sgml @@ -0,0 +1,12 @@ +<sect2> +<title>Command explanations</title> + +<para> +<userinput>make -f Makefile-libbz2_so:</userinput> This will cause bzip2 +to be build using a different Makefile file, in this case the +Makefile-libbz2_so file which creates a dynamic libbz2.so library and +links the bzip2 utilities against it. +</para> + +</sect2> + diff --git a/chapter06/bzip2-inst.sgml b/chapter06/bzip2-inst.sgml new file mode 100644 index 000000000..1e244d197 --- /dev/null +++ b/chapter06/bzip2-inst.sgml @@ -0,0 +1,40 @@ +<sect2> +<title>Installation of Bzip2</title> + +<para> +Install Bzip2 by running the following commands: +</para> + +<blockquote><literallayout> + + <userinput>make -f Makefile-libbz2_so &&</userinput> + <userinput>make bzip2recover libbz2.a &&</userinput> + <userinput>cp bzip2-shared /bin/bzip2 &&</userinput> + <userinput>cp bzip2recover /bin &&</userinput> + <userinput>cp bzip2.1 /usr/share/man/man1 &&</userinput> + <userinput>cp bzlib.h /usr/include &&</userinput> + <userinput>cp -a libbz2.so* libbz2.a /lib &&</userinput> + <userinput>rm /usr/lib/libbz2.a &&</userinput> + <userinput>cd /bin &&</userinput> + <userinput>rm bunzip2 && ln -s bzip2 bunzip2 &&</userinput> + <userinput>rm bzcat && ln -s bzip2 bzcat &&</userinput> + <userinput>cd /usr/share/man/man1 &&</userinput> + <userinput>ln -s bzip2.1 bunzip2.1 &&</userinput> + <userinput>ln -s bzip2.1 bzcat.1 &&</userinput> + <userinput>ln -s bzip2.1 bzip2recover.1</userinput> + +</literallayout></blockquote> + +<para> +Although it's not strictly a part of a basic LFS system it's worth +mentioning that you can download a patch for Tar which enables the tar +program to compress and uncompress using bzip2/bunzip2 easily. With a +plain tar you'll have to use constructions like bzcat file.tar.bz|tar +xv or tar --use-compress-prog=bunzip2 -xvf file.tar.bz2 to use bzip2 and +bunzip2 with tar. This patch gives you the -y option so you can unpack a +Bzip2 archive with tar xvfy file.tar.bz2. Applying this patch will be +mentioned later on when you re-install the Tar package. +</para> + +</sect2> + diff --git a/chapter06/bzip2.sgml b/chapter06/bzip2.sgml new file mode 100644 index 000000000..bf623846f --- /dev/null +++ b/chapter06/bzip2.sgml @@ -0,0 +1,8 @@ +<sect1 id="ch06-bzip2"> +<title>Installing Bzip2</title> + +&c6-in-bzip2-inst; +&c6-in-bzip2-exp; +&aa-bzip2-desc; + +</sect1> diff --git a/chapter06/chapter6.sgml b/chapter06/chapter6.sgml new file mode 100644 index 000000000..28942d01c --- /dev/null +++ b/chapter06/chapter6.sgml @@ -0,0 +1,62 @@ +<chapter id="chapter06"> +<title>Installing basic system software</title> + +&c6-introduction; +&c6-aboutdebug; +&c6-bashprofile; +&c6-in-chroot; + +&c6-in-creatingdev; +&c6-in-manpages; +&c6-in-ed; +&c6-in-patch; +&c6-in-findutils; +&c6-in-mawk; +&c6-in-ncurses; +&c6-in-vim; +&c6-in-gcc; +&c6-in-bison; +&c6-in-less; +&c6-in-groff; +&c6-in-man; +&c6-in-perl; +&c6-in-m4; +&c6-in-texinfo; +&c6-in-autoconf; +&c6-in-automake; +&c6-in-bash; +&c6-in-flex; +&c6-in-file; +&c6-in-libtool; +&c6-in-bin86; +&c6-in-binutils; +&c6-in-bzip2; +&c6-in-gettext; +&c6-in-consoletools; +&c6-in-consoledata; +&c6-in-diffutils; +&c6-in-e2fsprogs; +&c6-in-fileutils; +&c6-in-grep; +&c6-in-gzip; +&c6-in-ldso; +&c6-in-lilo; +&c6-in-make; +&c6-in-modutils; +&c6-in-procinfo; +&c6-in-procps; +&c6-in-psmisc; +&c6-in-sed; +&c6-in-shellutils; +&c6-in-shadowpwd; +&c6-in-sysklogd; +&c6-in-sysvinit; +&c6-in-tar; +&c6-in-textutils; +&c6-in-utillinux; + +&c6-nssremove; +&c6-configure; + +</chapter> + diff --git a/chapter06/chroot.sgml b/chapter06/chroot.sgml new file mode 100644 index 000000000..911f7a39d --- /dev/null +++ b/chapter06/chroot.sgml @@ -0,0 +1,32 @@ +<sect1 id="ch06-chroot"> +<title>Entering the chroot'ed environment</title> + +<para> +It's time to enter our chroot'ed environment in order to install the +rest of the software we need. +</para> + +<para> +Enter the following command to enter the chroot'ed environment. From +this point on there's no need to use the $LFS variable anymore, because +everything you do will be restricted to the LFS partition (since / is +actually /mnt/lfs but the shell doesn't know that). +</para> + +<blockquote><literallayout> + + <userinput>cd $LFS &&</userinput> + <userinput>chroot $LFS /usr/bin/env -i HOME=/root /bin/bash + --login</userinput> + +</literallayout></blockquote> + +<para> +Now that we are inside a chroot'ed environment, we can continue to +install all the basic system software. Make sure you execute all the +following commands in this chapter from within the chroot'ed +environment. +</para> + +</sect1> + diff --git a/chapter06/cofnig-ldso.sgml b/chapter06/cofnig-ldso.sgml new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/chapter06/cofnig-ldso.sgml diff --git a/chapter06/config-glibc.sgml b/chapter06/config-glibc.sgml new file mode 100644 index 000000000..5272c536e --- /dev/null +++ b/chapter06/config-glibc.sgml @@ -0,0 +1,88 @@ +<sect2><title>Configuring Glibc</title> + +<para> +We need to create the /etc/nsswitch.conf file. Although glibc should provide +defaults when this file is missing or corrupt, it's defaults don't work work +well with networking which will be dealt with in a later chapter. Also, our +timezone needs to be setup. +</para> + +<para> +Create a new file <filename>/etc/nsswitch.conf</filename> by running the +following: +</para> + +<literallayout> + +<userinput>cat > /etc/nsswitch.conf << "EOF"</userinput> +# Begin /etc/nsswitch.conf + +passwd: files +group: files +shadow: files + +publickey: files + +hosts: files dns +networks: files + +protocols: db files +services: db files +ethers: db files +rpc: db files + +netgroup: db files + +# End /etc/nsswitch.conf +<userinput>EOF</userinput> + +</literallayout> + +<para> +Run the <userinput>tzselect</userinput> script and answer the questions +regarding your timezone. When you're done, the script will give you the +location of the timezone file you need. +</para> + +<para> +Create the <filename class="directory">/etc/localtime</filename> symlink +by running: +</para> + +<blockquote><literallayout> + + <userinput>cd /etc &&</userinput> + <userinput>rm localtime &&</userinput> + <userinput>ln -s ../usr/share/zoneinfo/<tzselect's output> + localtime</userinput> + +</literallayout></blockquote> + +<para> +tzselect's output can be something like <emphasis>EST5EDT</emphasis> or +<emphasis>Canada/Eastern</emphasis>. +</para> + +<para> +The symlink you would create with that information would be: +</para> + +<blockquote><literallayout> + + <userinput>ln -s ../usr/share/zoneinfo/EST5EDT localtime</userinput> + +</literallayout></blockquote> + +<para> +Or: +</para> + +<blockquote><literallayout> + + <userinput>ln -s ../usr/share/zoneinfo/Canada/Eastern localtime + </userinput> + +</literallayout></blockquote> + +</sect2> + diff --git a/chapter06/config-ldso.sgml b/chapter06/config-ldso.sgml new file mode 100644 index 000000000..c340db151 --- /dev/null +++ b/chapter06/config-ldso.sgml @@ -0,0 +1,43 @@ +<sect2> +<title>Configuring Dynamic Loader</title> + +<para> +By default the dynamic loader searches a few default paths for dynamic +libraries, so there normally isn't a need for the +<filename>/etc/ld.so.conf</filename> file unless you have extra +directories in which you want the system to search for paths. The +<filename class="directory">/usr/local/lib</filename> directory isn't +searched through for dynamic libraries by default, so we want to add +this path so when you install software you won't be suprised by them not +running for some reason. +</para> + +<para> +Create a new file <filename>/etc/ld.so.conf</filename> by running the +following: +</para> + +<literallayout> + +<userinput>cat > /etc/ld.so.conf << "EOF"</userinput> +# Begin /etc/ld.so.conf + +/lib +/usr/lib +/usr/local/lib + +# End /etc/ld.so.conf +<userinput>EOF</userinput> + +</literallayout> + +<para> +Although it's not necessary to add the +<filename class="directory">/lib</filename> and +<filename class="directory">/usr/lib</filename> directories it doesn't +hurt. This way you see right away what's being searched and don't have +to remeber the default search paths if you don't want to. +</para> + +</sect2> + diff --git a/chapter06/config-lilo.sgml b/chapter06/config-lilo.sgml new file mode 100644 index 000000000..1e61cc9f1 --- /dev/null +++ b/chapter06/config-lilo.sgml @@ -0,0 +1,46 @@ +<sect2> +<title>Configuring Lilo</title> + +<para> +We're not going to create lilo's configuration file from scratch, but we'll +use the file from your normal Linux system. This file is different on every +machine and thus I can't create it here. Since you would want to have the +same options regarding lilo as you have when you're using your normal Linux +system you would create the file exactly as it is on the normal system. +</para> + +<para> +Copy the Lilo configuration file and kernel images that Lilo uses by +running the following commands from a shell on your normal Linux system. +Don't execute these commands from your chroot'ed shell. +</para> + +<blockquote><literallayout> + + <userinput>cp /etc/lilo.conf $LFS/etc</userinput> + <userinput>cp /boot/<kernel images> $LFS/boot</userinput> + +</literallayout></blockquote> + +<para> +Before you can execute the second command you need to know the names of +the kernel images. You can't just copy all files from the /boot +directory. The /etc/lilo.conf file contains the names of the kernel +images you're using. Open the file and look for lines like this: +</para> + +<blockquote><literallayout> + + image=/boot/vmlinuz + +</literallayout></blockquote> + +<para> +Look for all <emphasis>image</emphasis> variables and their values +represent the name and location of the image files. These files will +usually be in /boot but they might be in other directories as well, +depending on your distribution's conventions. +</para> + +</sect2> + diff --git a/chapter06/config-shadowpwd.sgml b/chapter06/config-shadowpwd.sgml new file mode 100644 index 000000000..ba63621f8 --- /dev/null +++ b/chapter06/config-shadowpwd.sgml @@ -0,0 +1,34 @@ +<sect2><title>Configuring Shadow Password Suite</title> + +<para> +This package contains the utilities to modify user's passwords, add new +users/groups, delete users/groups and more. I'm not going to explain to you +what 'password shadowing' means. You can read all about that in the doc/HOWTO +file within the unpacked shadow password suite's source tree. There's one +thing you should keep in mind, if you decide to use shadow support, that +programs that need to verify passwords (examples are xdm, ftp daemons, +pop3 daemons, etc) need to be 'shadow-compliant', eg. they need to +be able to work with shadow'ed passwords. +</para> + +<para> +Shadow'ed passwords are not enabled by default. Simply installing the +shadow password suite does not enable shadow'ed passwords. +</para> + +<para> +Now is a very good moment to read chapter 5 of the doc/HOWTO file. You can +read how you can enable shadow'ed passwords, how to test whether shadowing +works and if not, how to disable it again. +</para> + +<para> +The documentation mentions something about the creastion of npasswd and +nshadow after you run pwconv. This is an error in the documentation. +Those two files will be be created. After you run pwconv, /etc/passwd +will no longer contain the passwords and /etc/shadow will. You don't +need to rename the npasswd and nshadow files yourself. +</para> + +</sect2> + diff --git a/chapter06/config-sysklogd.sgml b/chapter06/config-sysklogd.sgml new file mode 100644 index 000000000..12a12563b --- /dev/null +++ b/chapter06/config-sysklogd.sgml @@ -0,0 +1,27 @@ +<sect2><title>Configuring Sysklogd</title> + +<para> +Create a new file <filename>/etc/syslog.conf</filename> by running the +following: +</para> + +<literallayout> + +<userinput>cat > /etc/syslog.conf << "EOF"</userinput> +# Begin /etc/syslog.conf + +auth,authpriv.* -/var/log/auth.log +*.*;auth,authpriv.none -/var/log/sys.log +daemon.* -/var/log/daemon.log +kern.* -/var/log/kern.log +mail.* -/var/log/mail.log +user.* -/var/log/user.log +*.emerg * + +# End /etc/syslog.conf +<userinput>EOF</userinput> + +</literallayout> + +</sect2> + diff --git a/chapter06/config-sysvinit.sgml b/chapter06/config-sysvinit.sgml new file mode 100644 index 000000000..ada018f9d --- /dev/null +++ b/chapter06/config-sysvinit.sgml @@ -0,0 +1,43 @@ +<sect2><title>Configuring Sysvinit</title> + +<para> +Create a new file <filename>/etc/inittab</filename> by running the +following: +</para> + +<literallayout> + +<userinput>cat > /etc/inittab << "EOF"</userinput> +# Begin /etc/inittab + +id:3:initdefault: + +si::sysinit:/etc/init.d/rcS + +l0:0:wait:/etc/init.d/rc 0 +l1:S1:wait:/etc/init.d/rc 1 +l2:2:wait:/etc/init.d/rc 2 +l3:3:wait:/etc/init.d/rc 3 +l4:4:wait:/etc/init.d/rc 4 +l5:5:wait:/etc/init.d/rc 5 +l6:6:wait:/etc/init.d/rc 6 + +ft:06:respawn:/sbin/sulogin + +ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now + +su:S1:respawn:/sbin/sulogin +1:2345:respawn:/sbin/agetty tty1 9600 +2:2345:respawn:/sbin/agetty tty2 9600 +3:2345:respawn:/sbin/agetty tty3 9600 +4:2345:respawn:/sbin/agetty tty4 9600 +5:2345:respawn:/sbin/agetty tty5 9600 +6:2345:respawn:/sbin/agetty tty6 9600 + +# End /etc/inittab +<userinput>EOF</userinput> + +</literallayout> + +</sect2> + diff --git a/chapter06/config-vim.sgml b/chapter06/config-vim.sgml new file mode 100644 index 000000000..4e8146aa1 --- /dev/null +++ b/chapter06/config-vim.sgml @@ -0,0 +1,24 @@ +<sect2><title>Configuring Vim</title> + +<para> +By default Vim runs in vi compatible mode. Some people might like this, +but I have a high preference to run vim in vim mode (else I wouldn't +have included Vim in this book but the original Vi). Create the +<filename>/root/.vimrc</filename> by running the following: +</para> + +<literallayout> + +<userinput>cat > /root/.vimrc << "EOF"</userinput> +" Begin /root/.vimrc + +set nocompatible +set bs=2 + +" End /root/.vimrc +<userinput>EOF</userinput> + +</literallayout> + +</sect2> + diff --git a/chapter06/configure.sgml b/chapter06/configure.sgml new file mode 100644 index 000000000..b3478066c --- /dev/null +++ b/chapter06/configure.sgml @@ -0,0 +1,19 @@ +<sect1 id="ch06-configure"> +<title>Configuring essential software</title> + +<para> +Now that all software is installed, all that we need to do to get a few +programs running properly is to create their configuration files. +</para> + +&c6-cf-vim; +&c6-cf-glibc; +&c6-cf-ldso; +&c6-cf-lilo; +&c6-cf-sysklogd; +&c6-cf-shadowpwd; +&c6-cf-sysvinit; +&c6-cf-utmp; +&c6-cf-password; + +</sect1> diff --git a/chapter06/consoledata-inst.sgml b/chapter06/consoledata-inst.sgml new file mode 100644 index 000000000..382be9e93 --- /dev/null +++ b/chapter06/consoledata-inst.sgml @@ -0,0 +1,24 @@ +<sect2> +<title>Installation of Console-data</title> + +<para> +Replace <path-to-kmap-file> below with the correct path to the +desired kmap.gz file. An example could be i386/qwerty/us.kmap.gz +</para> + +<para> +Install Console-data by running the following commands: +</para> + +<blockquote><literallayout> + + <userinput>./configure --prefix=/usr &&</userinput> + <userinput>make &&</userinput> + <userinput>make install &&</userinput> + <userinput>cd /usr/share/keymaps &&</userinput> + <userinput>ln -s <path-to-kmap-file> defkeymap.kmap.gz</userinput> + +</literallayout></blockquote> + +</sect2> + diff --git a/chapter06/consoledata.sgml b/chapter06/consoledata.sgml new file mode 100644 index 000000000..34cb0f36d --- /dev/null +++ b/chapter06/consoledata.sgml @@ -0,0 +1,7 @@ +<sect1 id="ch06-consoledata"> +<title>Installing Consoledata</title> + +&c6-in-consoledata-inst; +&aa-consoledata-desc; + +</sect1> diff --git a/chapter06/consoletools-inst.sgml b/chapter06/consoletools-inst.sgml new file mode 100644 index 000000000..364f065b7 --- /dev/null +++ b/chapter06/consoletools-inst.sgml @@ -0,0 +1,31 @@ +<sect2> +<title>Installation of Console-tools</title> + +<para> +Before you start installing Console-tools you have to unpack the +console-tools-0.2.3.patch file. +</para> + +<para> +Install Console-tools by running the following commands: +</para> + +<blockquote><literallayout> + + <userinput>patch -Np1 -i ../console-tools-0.2.3.patch + &&</userinput> + <userinput>./configure --prefix=/usr &&</userinput> + <userinput>make &&</userinput> + <userinput>make install &&</userinput> + <userinput>cd doc/man &&</userinput> + <userinput>mv consolechars.8.in consolechars.8 + &&</userinput> + <userinput>cp *.1 /usr/share/man/man1 &&</userinput> + <userinput>cp *.4 /usr/share/man/man4 &&</userinput> + <userinput>cp *.5 /usr/share/man/man5 &&</userinput> + <userinput>cp *.8 /usr/share/man/man8</userinput> + +</literallayout></blockquote> + +</sect2> + diff --git a/chapter06/consoletools.sgml b/chapter06/consoletools.sgml new file mode 100644 index 000000000..819efbe58 --- /dev/null +++ b/chapter06/consoletools.sgml @@ -0,0 +1,7 @@ +<sect1 id="ch06-consoletools"> +<title>Installing Consoletools</title> + +&c6-in-consoletools-inst; +&aa-consoletools-desc; + +</sect1> diff --git a/chapter06/create-password.sgml b/chapter06/create-password.sgml new file mode 100644 index 000000000..4c2aee8ab --- /dev/null +++ b/chapter06/create-password.sgml @@ -0,0 +1,16 @@ +<sect2> +<title>Creating root password</title> + +<para> +Choose a password for user root and create it by running the following +command: +</para> + +<blockquote><literallayout> + +<userinput>passwd root</userinput> + +</literallayout></blockquote> + +</sect2> + diff --git a/chapter06/create-utmp.sgml b/chapter06/create-utmp.sgml new file mode 100644 index 000000000..fad585278 --- /dev/null +++ b/chapter06/create-utmp.sgml @@ -0,0 +1,28 @@ +<sect2> +<title>Creating the /var/run/utmp, /var/log/wtmp and /var/log/btmp +files</title> + +<para> +Programs like login, shutdown, uptime and others want to read from and write +to the /var/run/utmp /var/log/btmp and /var/log/wtmp. These files contain +information about who is currently logged in. It also contains information +on when the computer was last booted and shutdown and a record of the +bad login attemps. +</para> + +<para> +Create these files with their proper permissions by running the +following commands: +</para> + +<blockquote><literallayout> + + <userinput>touch /var/run/utmp /var/log/wtmp /var/log/btmp + /var/log/lastlog &&</userinput> + <userinput>chmod 644 /var/run/utmp /var/log/wtmp /var/log/btmp + /var/log/lastlog</userinput> + +</literallayout></blockquote> + +</sect2> + diff --git a/chapter06/createdeventries.sgml b/chapter06/createdeventries.sgml new file mode 100644 index 000000000..f67390dd7 --- /dev/null +++ b/chapter06/createdeventries.sgml @@ -0,0 +1,36 @@ +<sect2> +<title>Creating the /dev entries</title> + +<para> +Create the device files by running the following commands: +</para> + +<blockquote><literallayout> + + <userinput>cd /dev &&</userinput> + <userinput>./MAKEDEV -v generic</userinput> + +</literallayout></blockquote> + +<para> +The <quote>generic</quote> parameter passed to the MAKEDEV script +doesn't create all the devices you might need, such as audio devices, +hdc, hdd and ohters. If you seem to be missing something tell MAKEDEV to +create it. To create hdc replace generic with hdc. You can also add hdc +to generic, so you would execute <userinput>./MAKEDEV -v generic +hdc</userinput> to create the generic set of devices files, plus the +files you need to be able to access hdc (and hdc1, hdc2, etc) +</para> + +<para> +Please note that this script dates back from 1997 and therefore can be +outdated and not support newer hardware. If you need device files which +aren't known by this script please read the Documentation/devices.txt +file in a Linux source tree. This file lists all the major and minor +numbers for all the device files that the kernel knows about. With this +list you can create such device files yourself. See the mknod man page +for more information on how to make device files yourself. +</para> + +</sect2> + diff --git a/chapter06/creatingdev.sgml b/chapter06/creatingdev.sgml new file mode 100644 index 000000000..8ae652d64 --- /dev/null +++ b/chapter06/creatingdev.sgml @@ -0,0 +1,10 @@ +<sect1 id="ch06-createdev"> +<title>Creating device files</title> + +&c6-in-makedev-inst; +&c6-in-createdeventries; +&c6-in-makedev-exp; +&aa-makedev-desc; + +</sect1> + diff --git a/chapter06/diffutils-inst.sgml b/chapter06/diffutils-inst.sgml new file mode 100644 index 000000000..9b2dd5587 --- /dev/null +++ b/chapter06/diffutils-inst.sgml @@ -0,0 +1,17 @@ +<sect2> +<title>Installation of Diffutils</title> + +<para> +Install Diffutils by running the following commands: +</para> + +<blockquote><literallayout> + + <userinput>./configure --prefix=/usr &&</userinput> + <userinput>make &&</userinput> + <userinput>make install</userinput> + +</literallayout></blockquote> + +</sect2> + diff --git a/chapter06/diffutils.sgml b/chapter06/diffutils.sgml new file mode 100644 index 000000000..dab50cf84 --- /dev/null +++ b/chapter06/diffutils.sgml @@ -0,0 +1,7 @@ +<sect1 id="diffutils"> +<title>Installing Diffutils</title> + +&c6-in-diffutils-inst; +&aa-diffutils-desc; + +</sect1> diff --git a/chapter06/e2fsprogs-inst.sgml b/chapter06/e2fsprogs-inst.sgml new file mode 100644 index 000000000..ca3324ce7 --- /dev/null +++ b/chapter06/e2fsprogs-inst.sgml @@ -0,0 +1,24 @@ +<sect2> +<title>Installation of E2fsprogs</title> + +<para> +Install E2fsprogs by running the following commands: +</para> + +<para> +Please note that the empty --with-root-prefix= option below is supposed +to be like this. I did not forget to supply a value there. +</para> + +<blockquote><literallayout> + + <userinput>./configure --prefix=/usr --with-root-prefix= \</userinput> + <userinput> --enable-elf-shlibs &&</userinput> + <userinput>make &&</userinput> + <userinput>make install &&</userinput> + <userinput>make install-libs</userinput> + +</literallayout></blockquote> + +</sect2> + diff --git a/chapter06/e2fsprogs.sgml b/chapter06/e2fsprogs.sgml new file mode 100644 index 000000000..880c3c524 --- /dev/null +++ b/chapter06/e2fsprogs.sgml @@ -0,0 +1,7 @@ +<sect1 id="ch06-e2fsprogs"> +<title>Installing E2fsprogs</title> + +&c6-in-e2fsprogs-inst; +&aa-e2fsprogs-desc; + +</sect1> diff --git a/chapter06/ed-inst.sgml b/chapter06/ed-inst.sgml new file mode 100644 index 000000000..9e846d210 --- /dev/null +++ b/chapter06/ed-inst.sgml @@ -0,0 +1,18 @@ +<sect2> +<title>Installation of Ed</title> + +<para> +Install Ed by running the following commands: +</para> + +<blockquote><literallayout> + + <userinput>./configure --prefix=/usr &&</userinput> + <userinput>make &&</userinput> + <userinput>make install &&</userinput> + <userinput>mv /usr/bin/ed /usr/bin/red /bin</userinput> + +</literallayout></blockquote> + +</sect2> + diff --git a/chapter06/ed.sgml b/chapter06/ed.sgml new file mode 100644 index 000000000..776296b75 --- /dev/null +++ b/chapter06/ed.sgml @@ -0,0 +1,9 @@ +<sect1 id="ch06-ed"> +<title>Installing Ed</title> + +&c6-in-ed-inst; +&aa-ed-desc; + +</sect1> + + diff --git a/chapter06/file-inst.sgml b/chapter06/file-inst.sgml new file mode 100644 index 000000000..bcfc90cf1 --- /dev/null +++ b/chapter06/file-inst.sgml @@ -0,0 +1,18 @@ +<sect2> +<title>Installation of File</title> + +<para> +Install File by running the following commands: +</para> + +<blockquote><literallayout> + + <userinput>./configure --prefix=/usr + --datadir=/usr/share/misc &&</userinput> + <userinput>make &&</userinput> + <userinput>make install</userinput> + +</literallayout></blockquote> + +</sect2> + diff --git a/chapter06/file.sgml b/chapter06/file.sgml new file mode 100644 index 000000000..f1aa45af5 --- /dev/null +++ b/chapter06/file.sgml @@ -0,0 +1,8 @@ +<sect1 id="ch06-file"> +<title>Installing File</title> + +&c6-in-file-inst; +&aa-file-desc; + +</sect1> + diff --git a/chapter06/fileutils-inst.sgml b/chapter06/fileutils-inst.sgml new file mode 100644 index 000000000..d75acf173 --- /dev/null +++ b/chapter06/fileutils-inst.sgml @@ -0,0 +1,19 @@ +<sect2> +<title>Installation of Fileutils</title> + +<para> +Install Fileutils by running the following commands: +</para> + +<blockquote><literallayout> + + <userinput>./configure --prefix=/usr --bindir=/bin \</userinput> + <userinput> --libexecdir=/usr/bin + &&</userinput> + <userinput>make &&</userinput> + <userinput>make install</userinput> + +</literallayout></blockquote> + +</sect2> + diff --git a/chapter06/fileutils.sgml b/chapter06/fileutils.sgml new file mode 100644 index 000000000..5d07c2b6f --- /dev/null +++ b/chapter06/fileutils.sgml @@ -0,0 +1,7 @@ +<sect1 id="ch06-fileutils"> +<title>Installing Fileutils</title> + +&c6-in-fileutils-inst; +&aa-fileutils-desc; + +</sect1> diff --git a/chapter06/findutils-inst.sgml b/chapter06/findutils-inst.sgml new file mode 100644 index 000000000..860c0d5b1 --- /dev/null +++ b/chapter06/findutils-inst.sgml @@ -0,0 +1,23 @@ +<sect2> +<title>Installing Findutils</title> + +<para> +Before you install Findutils you have to unpack the findutils patch +file. +</para> + +<para> +Install Findutils by running the following commands: +</para> + +<blockquote><literallayout> + + <userinput>patch -Np1 -i ../findutils-4.1.patch &&</userinput> + <userinput>./configure --prefix=/usr &&</userinput> + <userinput>make &&</userinput> + <userinput>make libexecdir=/usr/bin install</userinput> + +</literallayout></blockquote> + +</sect2> + diff --git a/chapter06/findutils.sgml b/chapter06/findutils.sgml new file mode 100644 index 000000000..bb2ea9d7a --- /dev/null +++ b/chapter06/findutils.sgml @@ -0,0 +1,8 @@ +<sect1 id="ch06-findutils"> +<title>Installing Findutils</title> + +&c6-in-findutils-inst; +&aa-findutils-desc; + +</sect1> + diff --git a/chapter06/flex-inst.sgml b/chapter06/flex-inst.sgml new file mode 100644 index 000000000..4daaa3794 --- /dev/null +++ b/chapter06/flex-inst.sgml @@ -0,0 +1,17 @@ +<sect2> +<title>Installation of Flex</title> + +<para> +Install Flex by running the following commands: +</para> + +<blockquote><literallayout> + + <userinput>./configure --prefix=/usr &&</userinput> + <userinput>make &&</userinput> + <userinput>make install</userinput> + +</literallayout></blockquote> + +</sect2> + diff --git a/chapter06/flex.sgml b/chapter06/flex.sgml new file mode 100644 index 000000000..adbbec451 --- /dev/null +++ b/chapter06/flex.sgml @@ -0,0 +1,7 @@ +<sect1 id="ch06-flex"> +<title>Installing Flex</title> + +&c6-in-flex-inst; +&aa-flex-desc; + +</sect1> diff --git a/chapter06/gcc-inst.sgml b/chapter06/gcc-inst.sgml new file mode 100644 index 000000000..6014560a1 --- /dev/null +++ b/chapter06/gcc-inst.sgml @@ -0,0 +1,25 @@ +<sect2> +<title>Installation of GCC</title> + +<para> +After you unpacked the gcc-2.95.2 archive don't enter the newly created +gcc-2.95.2 directory but stay in the /usr/src directory. Install GCC by +running the following commands: +</para> + +<blockquote><literallayout> + + <userinput>mkdir /usr/src/gcc-build &&</userinput> + <userinput>cd /usr/src/gcc-build &&</userinput> + <userinput>../gcc-2.95.2/configure --prefix=/usr \</userinput> + <userinput> --with-gxx-include-dir=/usr/include/g++ + \</userinput> + <userinput> --enable-shared + --enable-languages=c,c++ &&</userinput> + <userinput>make bootstrap &&</userinput> + <userinput>make install</userinput> + +</literallayout></blockquote> + +</sect2> + diff --git a/chapter06/gcc.sgml b/chapter06/gcc.sgml new file mode 100644 index 000000000..08a1d3ec2 --- /dev/null +++ b/chapter06/gcc.sgml @@ -0,0 +1,8 @@ +<sect1 id="ch06-gcc"> +<title>Installing GCC</title> + +&c6-in-gcc-inst; +&aa-gcc-desc; + +</sect1> + diff --git a/chapter06/gettext-inst.sgml b/chapter06/gettext-inst.sgml new file mode 100644 index 000000000..aaa3bc125 --- /dev/null +++ b/chapter06/gettext-inst.sgml @@ -0,0 +1,18 @@ +<sect2> +<title>Installation of Gettext</title> + +<para> +Install Gettext by running the following commands: +</para> + +<blockquote><literallayout> + + <userinput>./configure --prefix=/usr &&</userinput> + <userinput>make &&</userinput> + <userinput>make install &&</userinput> + <userinput>mv /po-mode.el /usr/share/gettext</userinput> + +</literallayout></blockquote> + +</sect2> + diff --git a/chapter06/gettext.sgml b/chapter06/gettext.sgml new file mode 100644 index 000000000..ff63d451e --- /dev/null +++ b/chapter06/gettext.sgml @@ -0,0 +1,7 @@ +<sect1 id="ch06-gettext"> +<title>Installing Gettext</title> + +&c6-in-gettext-inst; +&aa-gettext-desc; + +</sect1> diff --git a/chapter06/grep-inst.sgml b/chapter06/grep-inst.sgml new file mode 100644 index 000000000..d461dc799 --- /dev/null +++ b/chapter06/grep-inst.sgml @@ -0,0 +1,17 @@ +<sect2> +<title>Installation of Grep</title> + +<para> +Install Grep by running the following commands: +</para> + +<blockquote><literallayout> + + <userinput>./configure --prefix=/usr &&</userinput> + <userinput>make &&</userinput> + <userinput>make install</userinput> + +</literallayout></blockquote> + +</sect2> + diff --git a/chapter06/grep.sgml b/chapter06/grep.sgml new file mode 100644 index 000000000..b658c5447 --- /dev/null +++ b/chapter06/grep.sgml @@ -0,0 +1,7 @@ +<sect1 id="ch06-grep"> +<title>Installing Grep</title> + +&c6-in-grep-inst; +&aa-grep-desc; + +</sect1> diff --git a/chapter06/groff-inst.sgml b/chapter06/groff-inst.sgml new file mode 100644 index 000000000..62cff4745 --- /dev/null +++ b/chapter06/groff-inst.sgml @@ -0,0 +1,17 @@ +<sect2> +<title>Installation of Groff</title> + +<para> +Install Groff by running the following commands: +</para> + +<blockquote><literallayout> + + <userinput>./configure --prefix=/usr &&</userinput> + <userinput>make &&</userinput> + <userinput>make install</userinput> + +</literallayout></blockquote> + +</sect2> + diff --git a/chapter06/groff.sgml b/chapter06/groff.sgml new file mode 100644 index 000000000..89c9d70cb --- /dev/null +++ b/chapter06/groff.sgml @@ -0,0 +1,8 @@ +<sect1 id="ch06-groff"> +<title>Installing Groff</title> + +&c6-in-groff-inst; +&aa-groff-desc; + +</sect1> + diff --git a/chapter06/gzip-inst.sgml b/chapter06/gzip-inst.sgml new file mode 100644 index 000000000..9eb3acdeb --- /dev/null +++ b/chapter06/gzip-inst.sgml @@ -0,0 +1,24 @@ +<sect2> +<title>Installation of Gzip</title> + +<para> +Install Gzip by running the following commands: +</para> + +<blockquote><literallayout> + + <userinput>./configure --prefix=/usr &&</userinput> + <userinput>make &&</userinput> + <userinput>make install &&</userinput> + <userinput>cd /usr/bin &&</userinput> + <userinput>mv gzip /bin &&</userinput> + <userinput>rm gunzip /bin/gunzip &&</userinput> + <userinput>cd /bin &&</userinput> + <userinput>ln -s gzip gunzip &&</userinput> + <userinput>ln -s gzip compress &&</userinput> + <userinput>ln -s gunzip uncompress</userinput> + +</literallayout></blockquote> + +</sect2> + diff --git a/chapter06/gzip.sgml b/chapter06/gzip.sgml new file mode 100644 index 000000000..ad4a5d939 --- /dev/null +++ b/chapter06/gzip.sgml @@ -0,0 +1,7 @@ +<sect1 id="ch06-gzip"> +<title>Installing Gzip</title> + +&c6-in-gzip-inst; +&aa-gzip-desc; + +</sect1> diff --git a/chapter06/introduction.sgml b/chapter06/introduction.sgml new file mode 100644 index 000000000..016a6d9c1 --- /dev/null +++ b/chapter06/introduction.sgml @@ -0,0 +1,14 @@ +<sect1 id="ch06-introduction"> +<title>Introduction</title> + +<para> +The installation of all the software is pretty straightforward and +you'll think it's so much easier and shorter to give the generic +installation instructions for each package and only explain how to +install something if a certain package requires an alternate installation +method. Although I agree with you on that, I, however, choose to give the +full instructions for each and every package. This is simply to avoid any +possible confusion and errors. +</para> + +</sect1> diff --git a/chapter06/ldso-inst.sgml b/chapter06/ldso-inst.sgml new file mode 100644 index 000000000..a452716d7 --- /dev/null +++ b/chapter06/ldso-inst.sgml @@ -0,0 +1,40 @@ +<sect2> +<title>Installation of Ld.so</title> + +<para> +Install Ld.so by running the following commands: +</para> + +<blockquote><literallayout> + + <userinput>cd util &&</userinput> + <userinput>make ldd ldconfig &&</userinput> + <userinput>cp ldd /bin &&</userinput> + <userinput>cp ldconfig /sbin &&</userinput> + <userinput>cd ../man &&</userinput> + <userinput>cp ldd.1 /usr/share/man/man1 &&</userinput> + <userinput>cp *.8 /usr/share/man/man8 &&</userinput> + <userinput>rm /usr/bin/ldd &&</userinput> + <userinput>hash -r</userinput> + +</literallayout></blockquote> + +<para> +The <quote>hash -r</quote> command is to make bash forget about the +locations of previously executed commands. If you have executed ldd +before, bash expects it to be found in /usr/bin. Since we moved it to +/bin, the cache needs to be purged so bash can find it in /bin when you +want to execute it again. +</para> + +<para> +You might have noticed that we don't use the compiler optimizations for +this package. The reason is that overriding the CFLAGS variable causes +compilation problems. You would have to edit the Config.mk file and add +the proper values to the CFLAGS variable and then compile the package. +If you want to do that it's up to you. I don't think it's worth the +trouble though. The ld and ldd programs usually are only rarely used. +</para> + +</sect2> + diff --git a/chapter06/ldso.sgml b/chapter06/ldso.sgml new file mode 100644 index 000000000..adc561d71 --- /dev/null +++ b/chapter06/ldso.sgml @@ -0,0 +1,7 @@ +<sect1 id="ch06-ldso"> +<title>Installing Ldso</title> + +&c6-in-ldso-inst; +&aa-ldso-desc; + +</sect1> diff --git a/chapter06/less-inst.sgml b/chapter06/less-inst.sgml new file mode 100644 index 000000000..6deacf428 --- /dev/null +++ b/chapter06/less-inst.sgml @@ -0,0 +1,17 @@ +<sect2> +<title>Installation of Less</title> + +<para> +Install Less by running the following commands: +</para> + +<blockquote><literallayout> + + <userinput>./configure --prefix=/usr --bindir=/bin &&</userinput> + <userinput>make &&</userinput> + <userinput>make install</userinput> + +</literallayout></blockquote> + +</sect2> + diff --git a/chapter06/less.sgml b/chapter06/less.sgml new file mode 100644 index 000000000..021f5746a --- /dev/null +++ b/chapter06/less.sgml @@ -0,0 +1,8 @@ +<sect1 id="ch06-less"> +<title>Installing Less</title> + +&c6-in-less-inst; +&aa-less-desc; + +</sect1> + diff --git a/chapter06/libtool-inst.sgml b/chapter06/libtool-inst.sgml new file mode 100644 index 000000000..1a651a38b --- /dev/null +++ b/chapter06/libtool-inst.sgml @@ -0,0 +1,17 @@ +<sect2> +<title>Installation of Libtool</title> + +<para> +Install Libtool by running the following commands: +</para> + +<blockquote><literallayout> + + <userinput>./configure --prefix=/usr &&</userinput> + <userinput>make &&</userinput> + <userinput>make install</userinput> + +</literallayout></blockquote> + +</sect2> + diff --git a/chapter06/libtool.sgml b/chapter06/libtool.sgml new file mode 100644 index 000000000..36f65b72e --- /dev/null +++ b/chapter06/libtool.sgml @@ -0,0 +1,7 @@ +<sect1 id="ch06-libtool"> +<title>Installing Libtool</title> + +&c6-in-libtool-inst; +&aa-libtool-desc; + +</sect1> diff --git a/chapter06/lilo-inst.sgml b/chapter06/lilo-inst.sgml new file mode 100644 index 000000000..7777ab547 --- /dev/null +++ b/chapter06/lilo-inst.sgml @@ -0,0 +1,30 @@ +<sect2> +<title>Installation of Lilo</title> + +<para> +Install Lilo by running the following commands: +</para> + +<blockquote><literallayout> + + <userinput>make &&</userinput> + <userinput>make install</userinput> + +</literallayout></blockquote> + +<para> +It appears that compilation of this package fails on certain machines +when the -g compiler flag is being used. If you can't compile Lilo at +all, please try removing the -g value from the CFLAGS variable in the +<filename>Makefile</filename> file. +</para> + +<para> +At the end of the installation the make install process will print a +message stating that you have to execute /sbin/lilo to complete the +update. Don't do this as it has no use. The /etc/lilo.conf isn't present +yet. We will complete the installation of lilo in chapter 8. +</para> + +</sect2> + diff --git a/chapter06/lilo.sgml b/chapter06/lilo.sgml new file mode 100644 index 000000000..363cae699 --- /dev/null +++ b/chapter06/lilo.sgml @@ -0,0 +1,7 @@ +<sect1 id="ch06-lilo"> +<title>Installing Lilo</title> + +&c6-in-lilo-inst; +&aa-lilo-desc; + +</sect1> diff --git a/chapter06/m4-inst.sgml b/chapter06/m4-inst.sgml new file mode 100644 index 000000000..ef29a5d65 --- /dev/null +++ b/chapter06/m4-inst.sgml @@ -0,0 +1,57 @@ +<sect2> +<title>Installation of M4</title> + +<para> +Install M4 by running the following commands: +</para> + +<blockquote><literallayout> + + <userinput>./configure --prefix=/usr &&</userinput> + <userinput>make &&</userinput> + <userinput>make install</userinput> + +</literallayout></blockquote> + +<para> +If you're base system is running a 2.0 kernel and your Glibc version is +2.1 then you will most likely get problems executing M4 in the +chroot'ed environment due to incompatibilities between the M4 program, +Glibc-2.1 and the running 2.0 kernel. If you have problems executing the +m4 program in the chroot'ed environment (for example when you install +the autoconf and automake packages) you'll have to exit the chroot'ed +environment and compile M4 statically. This way the binary is linked +against Glibc 2.0 (if you run kernel 2.0 you're Glibc version is 2.0 as +well on a decent system. Kernel 2.0 and Glibc-2.1 don't mix very well) +and won't give you any problems. +</para> + +<para> +To create a statically linked version of M4, execute the following +commands: +</para> + +<blockquote><literallayout> + +<userinput>logout</userinput> +<userinput>cd $LFS/usr/src/m4-1.4</userinput> +<userinput>./configure --prefix=/usr --disable-nls</userinput> +<userinput>make LDFLAGS=-static</userinput> +<userinput>make prefix=$LFS/usr install</userinput> + +</literallayout></blockquote> + +<para> +Now you can re-enter the chroot'ed environment and continue with the +next package. If you wish to recompile M4 dynamically, you can do that +after you have rebooted into the LFS system rather than chroot'ed into it. +</para> + +<blockquote><literallayout> + + <userinput>chroot $LFS env -i HOME=/root bash --login</userinput> + +</literallayout></blockquote> + +</sect2> + diff --git a/chapter06/m4.sgml b/chapter06/m4.sgml new file mode 100644 index 000000000..9dd46d242 --- /dev/null +++ b/chapter06/m4.sgml @@ -0,0 +1,8 @@ +<sect1 id="ch06-m4"> +<title>Installing M4</title> + +&c6-in-m4-inst; +&aa-m4-desc; + +</sect1> + diff --git a/chapter06/make-inst.sgml b/chapter06/make-inst.sgml new file mode 100644 index 000000000..1f7e4e3d0 --- /dev/null +++ b/chapter06/make-inst.sgml @@ -0,0 +1,17 @@ +<sect2> +<title>Installation of Make</title> + +<para> +Install Make by running the following commands: +</para> + +<blockquote><literallayout> + + <userinput>./configure --prefix=/usr &&</userinput> + <userinput>make &&</userinput> + <userinput>make install</userinput> + +</literallayout></blockquote> + +</sect2> + diff --git a/chapter06/make.sgml b/chapter06/make.sgml new file mode 100644 index 000000000..f69b8ce19 --- /dev/null +++ b/chapter06/make.sgml @@ -0,0 +1,7 @@ +<sect1 id="ch06-make"> +<title>Installing Make</title> + +&c6-in-make-inst; +&aa-make-desc; + +</sect1> diff --git a/chapter06/makedev-exp.sgml b/chapter06/makedev-exp.sgml new file mode 100644 index 000000000..f3d4ff980 --- /dev/null +++ b/chapter06/makedev-exp.sgml @@ -0,0 +1,18 @@ +<sect2> +<title>Command explanations</title> + +<para> +<userinput>sed "s/# 9/9/" MAKEDEV >/dev/MAKEDEV:</userinput> By +default the Makedev script only creates the hda1-hda8 and hdb1-hdb8 +devices. By replacing "# 9" by "9"'s in the MAKEDEV script, it will +create hda1-hda20, hdb1-hdb20 and possible others (like hdc and hdd) +</para> + +<para> +<userinput>chmod 754 /dev/MAKEDEV:</userinput> This sets the permissions +of the MAKEDEV script to mode 754 which makes it executable only for +owner and group and readable by everybody. +</para> + +</sect2> + diff --git a/chapter06/makedev-inst.sgml b/chapter06/makedev-inst.sgml new file mode 100644 index 000000000..582598dbc --- /dev/null +++ b/chapter06/makedev-inst.sgml @@ -0,0 +1,16 @@ +<sect2> +<title>Installation of MAKEDEV</title> + +<para> +Install MAKEDEV by running the following commands: +</para> + +<blockquote><literallayout> + + <userinput>sed "s/# 9/9/" MAKEDEV >/dev/MAKEDEV &&</userinput> + <userinput>chmod 754 /dev/MAKEDEV</userinput> + +</literallayout></blockquote> + +</sect2> + diff --git a/chapter06/man-exp.sgml b/chapter06/man-exp.sgml new file mode 100644 index 000000000..396c47b6d --- /dev/null +++ b/chapter06/man-exp.sgml @@ -0,0 +1,21 @@ +<sect2> +<title>Command explanations</title> + +<para> +<userinput>-default:</userinput> This configures the man package with +default settings. +</para> + +<para> +<userinput>sed s/AWK=/"AWK=\/usr\/bin\/mawk"/ /usr/sbin/makewhatis > +makewhatis-new:</userinput> This modifies /usr/sbin/makewhatis's AWK +variable and fills in the location of the mawk program. +</para> + +<para> +<userinput>chmod 755 /usr/sbin/makewhatis:</userinput> This makes the +makewhatis script executable again. +</para> + +</sect2> + diff --git a/chapter06/man-inst.sgml b/chapter06/man-inst.sgml new file mode 100644 index 000000000..f2f3b3b63 --- /dev/null +++ b/chapter06/man-inst.sgml @@ -0,0 +1,22 @@ +<sect2> +<title>Installation of Man</title> + +<para> +Install Man by running the following commands: +</para> + +<blockquote><literallayout> + + <userinput>./configure -default &&</userinput> + <userinput>make &&</userinput> + <userinput>make install &&</userinput> + <userinput>sed s/AWK=/"AWK=\/usr\/bin\/mawk"/ /usr/sbin/makewhatis + > makewhatis-new &&</userinput> + <userinput>mv makewhatis-new /usr/sbin/makewhatis && + </userinput> + <userinput>chmod 755 /usr/sbin/makewhatis</userinput> + +</literallayout></blockquote> + +</sect2> + diff --git a/chapter06/man.sgml b/chapter06/man.sgml new file mode 100644 index 000000000..ad1c1b563 --- /dev/null +++ b/chapter06/man.sgml @@ -0,0 +1,9 @@ +<sect1 id="ch06-man"> +<title>Installing Man</title> + +&c6-in-man-inst; +&c6-in-man-exp; +&aa-man-desc; + +</sect1> + diff --git a/chapter06/manpages-inst.sgml b/chapter06/manpages-inst.sgml new file mode 100644 index 000000000..9a03eb9d1 --- /dev/null +++ b/chapter06/manpages-inst.sgml @@ -0,0 +1,15 @@ +<sect2> +<title>Installation of Man-pages</title> + +<para> +Install Man-pages by running the following commands: +</para> + +<blockquote><literallayout> + + <userinput>make install</userinput> + +</literallayout></blockquote> + +</sect2> + diff --git a/chapter06/manpages.sgml b/chapter06/manpages.sgml new file mode 100644 index 000000000..b86139c43 --- /dev/null +++ b/chapter06/manpages.sgml @@ -0,0 +1,7 @@ +<sect1 id="ch06-manpages"> +<title>Installing Man-pages</title> + +&c6-in-manpages-inst; +&aa-manpages-desc; + +</sect1> diff --git a/chapter06/mawk-inst.sgml b/chapter06/mawk-inst.sgml new file mode 100644 index 000000000..735294010 --- /dev/null +++ b/chapter06/mawk-inst.sgml @@ -0,0 +1,21 @@ +<sect2> +<title>Installation of Mawk</title> + +<para> +Install Mawk by running the following commands: +</para> + +<blockquote><literallayout> + + <userinput>./configure &&</userinput> + <userinput>make &&</userinput> + <userinput>make BINDIR=/usr/bin \</userinput> + <userinput> MANDIR=/usr/share/man/man1 install + &&</userinput> + <userinput>cd /usr/bin &&</userinput> + <userinput>ln -s mawk awk</userinput> + +</literallayout></blockquote> + +</sect2> + diff --git a/chapter06/mawk.sgml b/chapter06/mawk.sgml new file mode 100644 index 000000000..10e478342 --- /dev/null +++ b/chapter06/mawk.sgml @@ -0,0 +1,8 @@ +<sect1 id="ch06-mawk"> +<title>Installing Mawk</title> + +&c6-in-mawk-inst; +&aa-mawk-desc; + +</sect1> + diff --git a/chapter06/modutils-inst.sgml b/chapter06/modutils-inst.sgml new file mode 100644 index 000000000..d682fd2ab --- /dev/null +++ b/chapter06/modutils-inst.sgml @@ -0,0 +1,17 @@ +<sect2> +<title>Installation of Modutils</title> + +<para> +Install Modutils by running the following commands: +</para> + +<blockquote><literallayout> + + <userinput>./configure &&</userinput> + <userinput>make &&</userinput> + <userinput>make install</userinput> + +</literallayout></blockquote> + +</sect2> + diff --git a/chapter06/modutils.sgml b/chapter06/modutils.sgml new file mode 100644 index 000000000..dbf94efd9 --- /dev/null +++ b/chapter06/modutils.sgml @@ -0,0 +1,7 @@ +<sect1 id="ch06-modutils"> +<title>Installing Modutils</title> + +&c6-in-modutils-inst; +&aa-modutils-desc; + +</sect1> diff --git a/chapter06/ncurses-exp.sgml b/chapter06/ncurses-exp.sgml new file mode 100644 index 000000000..c9dc1c85a --- /dev/null +++ b/chapter06/ncurses-exp.sgml @@ -0,0 +1,21 @@ +<sect2> +<title>Command explanations</title> + +<para> +<userinput>--with-shared:</userinput> This enables the build of the +shared ncurses library files. +</para> + +<para> +<userinput>--disable-termcap:</userinput> Disabled the compilation of +termcap fallback support. +</para> + +<para> +<userinput>ln -s libncurses.a libcurses.a:</userinput> This creates the +/lib/libcurses.a symlink that for some reason isn't created during the +libncurses installation. +</para> + +</sect2> + diff --git a/chapter06/ncurses-inst.sgml b/chapter06/ncurses-inst.sgml new file mode 100644 index 000000000..4dd204e30 --- /dev/null +++ b/chapter06/ncurses-inst.sgml @@ -0,0 +1,21 @@ +<sect2> +<title>Installation of Ncurses</title> + +<para> +Install Ncurses by running the following commands: +</para> + +<blockquote><literallayout> + + <userinput>./configure --prefix=/usr --libdir=/lib \</userinput> + <userinput> --with-shared + --disable-termcap &&</userinput> + <userinput>make &&</userinput> + <userinput>make install &&</userinput> + <userinput>cd /lib &&</userinput> + <userinput>ln -s libncurses.a libcurses.a</userinput> + +</literallayout></blockquote> + +</sect2> + diff --git a/chapter06/ncurses.sgml b/chapter06/ncurses.sgml new file mode 100644 index 000000000..2add05899 --- /dev/null +++ b/chapter06/ncurses.sgml @@ -0,0 +1,9 @@ +<sect1 id="ch06-ncurses"> +<title>Installing Ncurses</title> + +&c6-in-ncurses-inst; +&c6-in-ncurses-exp; +&aa-ncurses-desc; + +</sect1> + diff --git a/chapter06/patch-inst.sgml b/chapter06/patch-inst.sgml new file mode 100644 index 000000000..a63f77030 --- /dev/null +++ b/chapter06/patch-inst.sgml @@ -0,0 +1,17 @@ +<sect2> +<title>Installation of Patch</title> + +<para> +Install Patch by running the following commands: +</para> + +<blockquote><literallayout> + + <userinput>./configure --prefix=/usr &&</userinput> + <userinput>make &&</userinput> + <userinput>make install</userinput> + +</literallayout></blockquote> + +</sect2> + diff --git a/chapter06/patch.sgml b/chapter06/patch.sgml new file mode 100644 index 000000000..682e14915 --- /dev/null +++ b/chapter06/patch.sgml @@ -0,0 +1,8 @@ +<sect1 id="ch06-patch"> +<title>Installing Patch</title> + +&c6-in-patch-inst; +&aa-patch-desc; + +</sect1> + diff --git a/chapter06/perl-inst.sgml b/chapter06/perl-inst.sgml new file mode 100644 index 000000000..ba8df4e61 --- /dev/null +++ b/chapter06/perl-inst.sgml @@ -0,0 +1,33 @@ +<sect2> +<title>Installation of Perl</title> + +<para> +Install Perl by running the following commands: +</para> + +<blockquote><literallayout> + + <userinput>./Configure -Dprefix=/usr &&</userinput> + <userinput>make &&</userinput> + <userinput>make install</userinput> + +</literallayout></blockquote> + +<para> +If you don't want to answer all those questions Perl asks you, you can +add the -d option to the configure script and Perl will use all the +default settings. To avoid the Configure script asking you questions +after the config.sh file has been created you can pass the -e parameter +to perl as well. The commands with these parameters included will be: +</para> + +<blockquote><literallayout> + + <userinput>./Configure -Dprefix=/usr -d -e &&</userinput> + <userinput>make &&</userinput> + <userinput>make install</userinput> + +</literallayout></blockquote> + +</sect2> + diff --git a/chapter06/perl.sgml b/chapter06/perl.sgml new file mode 100644 index 000000000..f85fbd948 --- /dev/null +++ b/chapter06/perl.sgml @@ -0,0 +1,8 @@ +<sect1 id="ch06-perl"> +<title>Installing Perl</title> + +&c6-in-perl-inst; +&aa-perl-desc; + +</sect1> + diff --git a/chapter06/procinfo-exp.sgml b/chapter06/procinfo-exp.sgml new file mode 100644 index 000000000..f08fe8383 --- /dev/null +++ b/chapter06/procinfo-exp.sgml @@ -0,0 +1,14 @@ +<sect2> +<title>Command explanations</title> + +<para> +<userinput>sed "s/XConsole/#XConsole/" Makefile | make -f -:</userinput> +This will comment out the XConsole variable in the Makefile and pipe the +output of sed (the modified Makefile) directly to the make program. This +is an alternate and more efficient way to direct the output to a file +and tell make to use that alternate file. The XConsole build is disabled +because it can't be build yet because we don't have X installed yet. +</para> + +</sect2> + diff --git a/chapter06/procinfo-inst.sgml b/chapter06/procinfo-inst.sgml new file mode 100644 index 000000000..e491563e8 --- /dev/null +++ b/chapter06/procinfo-inst.sgml @@ -0,0 +1,17 @@ +<sect2> +<title>Installation of Procinfo</title> + +<para> +Install Procinfo by running the following commands: +</para> + +<blockquote><literallayout> + + <userinput>sed "s/-ltermcap/-lncurses/" Makefile | make -f - + &&</userinput> + <userinput>make install</userinput> + +</literallayout></blockquote> + +</sect2> + diff --git a/chapter06/procinfo.sgml b/chapter06/procinfo.sgml new file mode 100644 index 000000000..ebd030d9c --- /dev/null +++ b/chapter06/procinfo.sgml @@ -0,0 +1,8 @@ +<sect1 id="ch06-procinfo"> +<title>Installing Procinfo</title> + +&c6-in-procinfo-inst; +&c6-in-procinfo-exp; +&aa-procinfo-desc; + +</sect1> diff --git a/chapter06/procps-inst.sgml b/chapter06/procps-inst.sgml new file mode 100644 index 000000000..917def8c5 --- /dev/null +++ b/chapter06/procps-inst.sgml @@ -0,0 +1,19 @@ +<sect2> +<title>Installation of Procps</title> + +<para> +Install Procps by running the following commands: +</para> + +<blockquote><literallayout> + + <userinput>sed "s/XConsole/#XConsole/" Makefile | make -f - + &&</userinput> + <userinput>sed "s/XConsole/#XConsole/" Makefile | make -f - install + &&</userinput> + <userinput>mv /usr/bin/kill /bin</userinput> + +</literallayout></blockquote> + +</sect2> + diff --git a/chapter06/procps.sgml b/chapter06/procps.sgml new file mode 100644 index 000000000..188ce8a2a --- /dev/null +++ b/chapter06/procps.sgml @@ -0,0 +1,7 @@ +<sect1 id="ch06-procps"> +<title>Installing Procps</title> + +&c6-in-procps-inst; +&aa-procps-desc; + +</sect1> diff --git a/chapter06/psmisc-inst.sgml b/chapter06/psmisc-inst.sgml new file mode 100644 index 000000000..bb827be7f --- /dev/null +++ b/chapter06/psmisc-inst.sgml @@ -0,0 +1,17 @@ +<sect2> +<title>Installation of Psmisc</title> + +<para> +Install Psmisc by running the following commands: +</para> + +<blockquote><literallayout> + + <userinput>sed "s/-ltermcap/-lncurses/" Makefile | make -f - + &&</userinput> + <userinput>make install</userinput> + +</literallayout></blockquote> + +</sect2> + diff --git a/chapter06/psmisc.sgml b/chapter06/psmisc.sgml new file mode 100644 index 000000000..fd01ed448 --- /dev/null +++ b/chapter06/psmisc.sgml @@ -0,0 +1,7 @@ +<sect1 id="ch06-psmisc"> +<title>Installing Psmisc</title> + +&c6-in-psmisc-inst; +&aa-psmisc-desc; + +</sect1> diff --git a/chapter06/removeoldnss.sgml b/chapter06/removeoldnss.sgml new file mode 100644 index 000000000..2a78aa25d --- /dev/null +++ b/chapter06/removeoldnss.sgml @@ -0,0 +1,17 @@ +<sect1 id="ch06-removeoldnss"> +<title>Removing old NSS library files</title> + +<para> +If you have copied the NSS Library files from your normal Linux system to the +LFS system (because your normal system runs glibc-2.0) it's time to remove +them now by running: +</para> + +<blockquote><literallayout> + + <userinput>rm /lib/libnss*.so.1 /lib/libnss*2.0*</userinput> + +</literallayout></blockquote> + +</sect1> + diff --git a/chapter06/sed-inst.sgml b/chapter06/sed-inst.sgml new file mode 100644 index 000000000..ef0146123 --- /dev/null +++ b/chapter06/sed-inst.sgml @@ -0,0 +1,17 @@ +<sect2> +<title>Installation of Sed</title> + +<para> +Install Sed by running the following commands: +</para> + +<blockquote><literallayout> + + <userinput>./configure --prefix=/usr --bindir=/bin &&</userinput> + <userinput>make &&</userinput> + <userinput>make install</userinput> + +</literallayout></blockquote> + +</sect2> + diff --git a/chapter06/sed.sgml b/chapter06/sed.sgml new file mode 100644 index 000000000..6de99ba4c --- /dev/null +++ b/chapter06/sed.sgml @@ -0,0 +1,7 @@ +<sect1 id="ch06-sed"> +<title>Installing Sed</title> + +&c6-in-sed-inst; +&aa-sed-desc; + +</sect1> diff --git a/chapter06/shadowpwd-exp.sgml b/chapter06/shadowpwd-exp.sgml new file mode 100644 index 000000000..6db3fe8d4 --- /dev/null +++ b/chapter06/shadowpwd-exp.sgml @@ -0,0 +1,12 @@ +<sect2> +<title>Command explanations</title> + +<para> +<userinput>cp limits login.access and others:</userinput> These files +were not installed during the installation of the package so we copy +them manually as those files are used to configure authentication +details on your system. +</para> + +</sect2> + diff --git a/chapter06/shadowpwd-inst.sgml b/chapter06/shadowpwd-inst.sgml new file mode 100644 index 000000000..60650a5dd --- /dev/null +++ b/chapter06/shadowpwd-inst.sgml @@ -0,0 +1,22 @@ +<sect2> +<title>Installation of Shadow Password Suite</title> + +<para> +Install the Shadow Password Suite by running the following commands: +</para> + +<blockquote><literallayout> + + <userinput>./configure --prefix=/usr &&</userinput> + <userinput>make &&</userinput> + <userinput>make install &&</userinput> + <userinput>cd etc &&</userinput> + <userinput>cp limits login.access \</userinput> + <userinput> login.defs.linux shells suauth + /etc &&</userinput> + <userinput>mv /etc/login.defs.linux /etc/login.defs</userinput> + +</literallayout></blockquote> + +</sect2> + diff --git a/chapter06/shadowpwd.sgml b/chapter06/shadowpwd.sgml new file mode 100644 index 000000000..6f2f7d658 --- /dev/null +++ b/chapter06/shadowpwd.sgml @@ -0,0 +1,8 @@ +<sect1 id="ch06-shadow"> +<title>Installing Shadowpwd</title> + +&c6-in-shadowpwd-inst; +&c6-in-shadowpwd-exp; +&aa-shadowpwd-desc; + +</sect1> diff --git a/chapter06/shellutils-inst.sgml b/chapter06/shellutils-inst.sgml new file mode 100644 index 000000000..c3aa812f6 --- /dev/null +++ b/chapter06/shellutils-inst.sgml @@ -0,0 +1,20 @@ +<sect2> +<title>Installation of Sh-utils</title> + +<para> +Install Shellutils by running the following commands: +</para> + +<blockquote><literallayout> + + <userinput>./configure --prefix=/usr &&</userinput> + <userinput>make &&</userinput> + <userinput>make install &&</userinput> + <userinput>cd /usr/bin &&</userinput> + <userinput>mv date echo false pwd stty /bin &&</userinput> + <userinput>mv su true uname hostname /bin</userinput> + +</literallayout></blockquote> + +</sect2> + diff --git a/chapter06/shellutils.sgml b/chapter06/shellutils.sgml new file mode 100644 index 000000000..7fa710e07 --- /dev/null +++ b/chapter06/shellutils.sgml @@ -0,0 +1,7 @@ +<sect1 id="ch06-shutils"> +<title>Installing Shellutils</title> + +&c6-in-shellutils-inst; +&aa-shellutils-desc; + +</sect1> diff --git a/chapter06/sysklogd-inst.sgml b/chapter06/sysklogd-inst.sgml new file mode 100644 index 000000000..8cab2809b --- /dev/null +++ b/chapter06/sysklogd-inst.sgml @@ -0,0 +1,18 @@ +<sect2> +<title>Installation of Sysklogd</title> + +<para> +Install Sysklogd by running the following commands: +</para> + +<blockquote><literallayout> + + <userinput>patch -Np1 -i ../sysklogd-1.4.patch + &&</userinput> + <userinput>make &&</userinput> + <userinput>make install</userinput> + +</literallayout></blockquote> + +</sect2> + diff --git a/chapter06/sysklogd.sgml b/chapter06/sysklogd.sgml new file mode 100644 index 000000000..aabe1cb32 --- /dev/null +++ b/chapter06/sysklogd.sgml @@ -0,0 +1,7 @@ +<sect1 id="ch06-sysklogd"> +<title>Installing Sysklogd</title> + +&c6-in-sysklogd-inst; +&aa-sysklogd-desc; + +</sect1> diff --git a/chapter06/sysvinit-inst.sgml b/chapter06/sysvinit-inst.sgml new file mode 100644 index 000000000..c8c581e95 --- /dev/null +++ b/chapter06/sysvinit-inst.sgml @@ -0,0 +1,37 @@ +<sect2> +<title>Installation of Sysvinit</title> + +<para> +When you change run levels (for example when you are going to shutdown +your system) the init program is going to send the TERM and KILL signals +to all the processes that init started. But init prints a message to the +screen saying "sending all processes the TERM signal" and the same for the +KILL signal. This implies that init sends this signal to all the currently +running processes, which isn't the case. To avoid this confusion you can +apply the sysvinit patch found on the LFS FTP site to sysvinit that changes +the sentence in the shutdown.c file and have it print "sending all +processes started by init the TERM signal". +</para> + +<para> +Apply the patch by running the following command: +</para> + +<blockquote><literallayout> + <userinput>patch -Np1 -i ../sysvinit-2.78.patch</userinput> +</literallayout></blockquote> + +<para> +Install Sysvinit by running the following commands: +</para> + +<blockquote><literallayout> + + <userinput>cd src &&</userinput> + <userinput>make &&</userinput> + <userinput>make install</userinput> + +</literallayout></blockquote> + +</sect2> + diff --git a/chapter06/sysvinit.sgml b/chapter06/sysvinit.sgml new file mode 100644 index 000000000..c0b834d02 --- /dev/null +++ b/chapter06/sysvinit.sgml @@ -0,0 +1,7 @@ +<sect1 id="ch06-sysvinit"> +<title>Installing Sysvinit</title> + +&c6-in-sysvinit-inst; +&aa-sysvinit-desc; + +</sect1> diff --git a/chapter06/tar-inst.sgml b/chapter06/tar-inst.sgml new file mode 100644 index 000000000..32ed15cd1 --- /dev/null +++ b/chapter06/tar-inst.sgml @@ -0,0 +1,39 @@ +<sect2> +<title>Installation of Tar</title> + +<para> +If you want to be able to directly use bzip2 files with tar, use the tar +patch avaiable from the LFS FTP site. This patch will add the -y option +to tar which works the same as the -z option to tar (which you can use +for gzip files). +</para> + +<para> +Apply the patch by running the following command: +</para> + +<blockquote><literallayout> + + <userinput>cd src &&</userinput> + <userinput>patch -i ../../gnutarpatch.txt &&</userinput> + <userinput>cd ..</userinput> + +</literallayout></blockquote> + +<para> +Install Tar by running the following commands from the toplevel +directory: +</para> + +<blockquote><literallayout> + + <userinput>./configure --prefix=/usr --libexecdir=/usr/bin + &&</userinput> + <userinput>make &&</userinput> + <userinput>make install &&</userinput> + <userinput>mv /usr/bin/tar /bin</userinput> + +</literallayout></blockquote> + +</sect2> + diff --git a/chapter06/tar.sgml b/chapter06/tar.sgml new file mode 100644 index 000000000..d35c925ba --- /dev/null +++ b/chapter06/tar.sgml @@ -0,0 +1,7 @@ +<sect1 id="ch06-tar"> +<title>Installing Tar</title> + +&c6-in-tar-inst; +&aa-tar-desc; + +</sect1> diff --git a/chapter06/texinfo-inst.sgml b/chapter06/texinfo-inst.sgml new file mode 100644 index 000000000..540f438a5 --- /dev/null +++ b/chapter06/texinfo-inst.sgml @@ -0,0 +1,17 @@ +<sect2> +<title>Installation of Texinfo</title> + +<para> +Install Texinfo by running the following commands: +</para> + +<blockquote><literallayout> + + <userinput>./configure --prefix=/usr &&</userinput> + <userinput>make &&</userinput> + <userinput>make install</userinput> + +</literallayout></blockquote> + +</sect2> + diff --git a/chapter06/texinfo.sgml b/chapter06/texinfo.sgml new file mode 100644 index 000000000..77486cfdd --- /dev/null +++ b/chapter06/texinfo.sgml @@ -0,0 +1,7 @@ +<sect1 id="ch06-texinfo"> +<title>Installing Texinfo</title> + +&c6-in-texinfo-inst; +&aa-texinfo-desc; + +</sect1> diff --git a/chapter06/textutils-inst.sgml b/chapter06/textutils-inst.sgml new file mode 100644 index 000000000..5ab867a01 --- /dev/null +++ b/chapter06/textutils-inst.sgml @@ -0,0 +1,18 @@ +<sect2> +<title>Installation of Textutils</title> + +<para> +Install Textutuils by running the following commands: +</para> + +<blockquote><literallayout> + + <userinput>./configure --prefix=/usr &&</userinput> + <userinput>make &&</userinput> + <userinput>make install &&</userinput> + <userinput>mv /usr/bin/cat /bin</userinput> + +</literallayout></blockquote> + +</sect2> + diff --git a/chapter06/textutils.sgml b/chapter06/textutils.sgml new file mode 100644 index 000000000..16a4f328f --- /dev/null +++ b/chapter06/textutils.sgml @@ -0,0 +1,7 @@ +<sect1 id="ch06-textutils"> +<title>Installing Textutils</title> + +&c6-in-textutils-inst; +&aa-textutils-desc; + +</sect1> diff --git a/chapter06/utillinux-exp.sgml b/chapter06/utillinux-exp.sgml new file mode 100644 index 000000000..98633466e --- /dev/null +++ b/chapter06/utillinux-exp.sgml @@ -0,0 +1,14 @@ +<sect2> +<title>Command explanations</title> + +<para> +<userinput>HAVE_SLN=yes:</userinput> We don't build this program because +it already was installed by Glibc. +</para> + +<para><userinput>HAVE_TSORT=yes:</userinput> We don't build this program +either becuase it already was installed by Textutils. +</para> + +</sect2> + diff --git a/chapter06/utillinux-inst.sgml b/chapter06/utillinux-inst.sgml new file mode 100644 index 000000000..d75e3387f --- /dev/null +++ b/chapter06/utillinux-inst.sgml @@ -0,0 +1,23 @@ +<sect2> +<title>Installation of Util-Linux</title> + +<para> +Install Util-Linux by running the following commands: +</para> + +<blockquote><literallayout> + + <userinput>sed -e s/HAVE_SLN=no/HAVE_SLN=yes/ \</userinput> + <userinput> -e s/HAVE_TSORT=no/HAVE_TSORT=yes/ + \</userinput> + <userinput> MCONFIG > MCONFIG~ + &&</userinput> + <userinput>mv MCONFIG~ MCONFIG &&</userinput> + <userinput>./configure &&</userinput> + <userinput>make &&</userinput> + <userinput>make install</userinput> + +</literallayout></blockquote> + +</sect2> + diff --git a/chapter06/utillinux.sgml b/chapter06/utillinux.sgml new file mode 100644 index 000000000..cef9a71e5 --- /dev/null +++ b/chapter06/utillinux.sgml @@ -0,0 +1,8 @@ +<sect1 id="ch06-utillinux"> +<title>Installing Utillinux</title> + +&c6-in-utillinux-inst; +&c6-in-utillinux-exp; +&aa-utillinux-desc; + +</sect1> diff --git a/chapter06/vim-inst.sgml b/chapter06/vim-inst.sgml new file mode 100644 index 000000000..15e8158eb --- /dev/null +++ b/chapter06/vim-inst.sgml @@ -0,0 +1,39 @@ +<sect2> +<title>Installation of Vim</title> + +<para> +If you don't like vim to be installed as an editor on your LFS system, +you may want to download an alternative and install an editor you +prefer. There are a few hints how to install different editors +available at <ulink +url="http://cvs.linuxfromscratch.org/index.cgi/hints/editors/"> +http://cvs.linuxfromscratch.org/index.cgi/hints/editors/</ulink> +</para> + +<para> +You need to unpack both the vim-rt and vim-src packages to install Vim. +Both packages will unpack their files into the vim-5.7 directory. This +won't overwrite any files from the other package. So it doesn't mattter +in which order you do it. Install Vim by running the following commands: +</para> + +<blockquote><literallayout> + + <userinput>./configure --prefix=/usr &&</userinput> + <userinput>make &&</userinput> + <userinput>make install &&</userinput> + <userinput>cd /usr/bin &&</userinput> + <userinput>ln -s vim vi</userinput> + +</literallayout></blockquote> + +<para> +If you are planning on installing the X Window system on your LFS +system, you might want to re-compile Vim after you have installed X. Vim +comes with a nice GUI version of the editor which requires X and a few +other libraries to be installed. For more information read the Vim +documentation. +</para> + +</sect2> + diff --git a/chapter06/vim.sgml b/chapter06/vim.sgml new file mode 100644 index 000000000..4d20df4c3 --- /dev/null +++ b/chapter06/vim.sgml @@ -0,0 +1,7 @@ +<sect1 id="ch06-vim"> +<title>Installing Vim</title> + +&c6-in-vim-inst; +&aa-vim-desc; + +</sect1> diff --git a/chapter07/chapter7.sgml b/chapter07/chapter7.sgml new file mode 100644 index 000000000..ab3625579 --- /dev/null +++ b/chapter07/chapter7.sgml @@ -0,0 +1,22 @@ +<chapter id="chapter07"> +<title>Creating system boot scripts</title> + +&c7-introduction; +&c7-createdirs; +&c7-rc; +&c7-rcS; +&c7-functions; +&c7-checkfs; +&c7-halt; +&c7-loadkeys; +&c7-mountfs; +&c7-reboot; +&c7-sendsignals; +&c7-setclock; +&c7-sysklogd; +&c7-template; +&c7-symperm; +&c7-fstab; + +</chapter> + diff --git a/chapter07/checkfs.sgml b/chapter07/checkfs.sgml new file mode 100644 index 000000000..2350a0056 --- /dev/null +++ b/chapter07/checkfs.sgml @@ -0,0 +1,116 @@ +<sect1 id="ch07-checkfs"> +<title>Creating the checkfs script</title> + +<para> +Create a new file <filename>/etc/init.d/checkfs</filename> containing +the following: +</para> + +<literallayout> + +<userinput>cat > checkfs << "EOF"</userinput> +#!/bin/sh +# Begin /etc/init.d/checkfs + +# +# Include the functions declared in the /etc/init.d/functions file +# + +source /etc/init.d/functions + +# +# Activate all the swap partitions declared in the /etc/fstab file +# + +echo -n "Activating swap..." +/sbin/swapon -a +evaluate_retval + +# +# If the /fastboot file exists we don't want to run the partition checks +# + +if [ -f /fastboot ] +then + echo "Fast boot, no file system check" +else + +# +# Mount the root partition read-only (just in case the kernel mounts it +# read-write and we don't want to run fsck on a read-write mounted +# partition). +# + + /bin/mount -n -o remount,ro / + if [ $? = 0 ] + then + +# +# If the /forcefsck file exists we want to force a partition check even +# if the partition was unmounted cleanly the last time +# + + if [ -f /forcefsck ] + then + echo -n "/forcefsck exists, forcing " + echo "file system check" + force="-f" + else + force="" + fi + +# +# Check all the file systems mentioned in /etc/fstab that have the +# fs_passno value set to 1 or 2 (the 6th field. See man fstab for more +# info) +# + + echo "Checking file systems..." + /sbin/fsck $force -a -A -C -T + +# +# If something went wrong during the checks of one of the partitions, +# fsck will exit with a return value greater than 1. If this is +# the case we start sulogin so you can repair the damage manually +# + + if [ $? -gt 1 ] + then + $FAILURE + echo + echo -n "fsck failed. Please repair your file " + echo "systems manually by running /sbin/fsck" + echo "without the -a option" + echo + echo -n "Please note that the root file system " + echo "is currently mounted in read-only mode." + echo + echo -n "I will start sulogin now. When you " + echo "logout I will reboot your system." + echo + $NORMAL + /sbin/sulogin + /sbin/reboot -f + else + print_status success + fi + + else + +# +# If the remount to read-only mode didn't work abort the fsck and print +# an error +# + + echo -n "Cannot check root file system because it " + echo "could not be mounted in read-only mode." + fi +fi + +# End /etc/init.d/checkfs +<userinput>EOF</userinput> + +</literallayout> + +</sect1> + diff --git a/chapter07/createdirs.sgml b/chapter07/createdirs.sgml new file mode 100644 index 000000000..0831e7874 --- /dev/null +++ b/chapter07/createdirs.sgml @@ -0,0 +1,19 @@ +<sect1 id="ch07-createdirs"> +<title>Creating directories</title> + +<para> +We need to start by creating a few extra directories that are used by +the boot scripts. Create these directories by running: +</para> + +<blockquote><literallayout> + + <userinput>cd /etc &&</userinput> + <userinput>mkdir sysconfig rc0.d rc1.d rc2.d rc3.d &&</userinput> + <userinput>mkdir rc4.d rc5.d rc6.d init.d rcS.d &&</userinput> + <userinput>cd init.d</userinput> + +</literallayout></blockquote> + +</sect1> + diff --git a/chapter07/fstab.sgml b/chapter07/fstab.sgml new file mode 100644 index 000000000..1c0be5826 --- /dev/null +++ b/chapter07/fstab.sgml @@ -0,0 +1,32 @@ +<sect1 id="ch07-fstab"> +<title>Creating the /etc/fstab file</title> + +<para> +In order for certain programs to be able to determine where certain +partitions are supposed to be mounted by default, the /etc/fstab file is +used. Create a new file <filename>/etc/fstab</filename> containing the +following: +</para> + +<literallayout> + +<userinput>cat > /etc/fstab << "EOF"</userinput> +# Begin /etc/fstab + +/dev/<LFS-partition designation> / ext2 defaults 1 1 +/dev/<swap-partition designation> swap swap defaults 0 0 +proc /proc proc defaults 0 0 + +# End /etc/fstab +<userinput>EOF</userinput> + +</literallayout> + +<para> +Replace <LFS-partition designation> and <swap-partition +designation> with the appropriate devices (/dev/hda5 and /dev/hda6 in my +case). +</para> + +</sect1> + diff --git a/chapter07/functions.sgml b/chapter07/functions.sgml new file mode 100644 index 000000000..e46522c0f --- /dev/null +++ b/chapter07/functions.sgml @@ -0,0 +1,451 @@ +<sect1 id="ch07-functions"> +<title>Creating the functions script</title> + +<para> +Create a new file <filename>/etc/init.d/functions</filename> containing +the following: +</para> + +<literallayout> + +<userinput>cat > functions << "EOF"</userinput> +#!/bin/sh +# Begin /etc/init.d/functions + +# +# Set a few variables that influence the text that's printed on the +# screen. The SET_COL variable starts the text in column number 70 (as +# defined by the COL variable). NORMAL prints text in normal mode. +# SUCCESS prints text in a green colour and FAILURE prints text in a red +# colour +# + +COL=70 +SET_COL="echo -en \\033[${COL}G" +NORMAL="echo -en \\033[0;39m" +SUCCESS="echo -en \\033[1;32m" +FAILURE="echo -en \\033[1;31m" + +# +# The evaluate_retval function evaluates the return value of the process +# that was run just before this function was called. If the return value +# was 0, indicating success, the print_status function is called with +# the 'success' parameter. Otherwise the print_status function is called +# with the failure parameter. +# + +evaluate_retval() +{ + if [ $? = 0 ] + then + print_status success + else + print_status failure + fi +} + +# +# The print_status prints [ OK ] or [FAILED] to the screen. OK appears +# in the colour defined by the SUCCESS variable and FAILED appears in +# the colour defined by the FAILURE variable. Both are printed starting +# in the colomn defined by the COL variable. +# + +print_status() +{ + +# +# If no parameters are given to the print_status function, print usage +# information. +# + + if [ $# = 0 ] + then + echo "Usage: print_status {success|failure}" + return 1 + fi + + case "$1" in + success) + $SET_COL + echo -n "[ " + $SUCCESS + echo -n "OK" + $NORMAL + echo " ]" + ;; + failure) + $SET_COL + echo -n "[" + $FAILURE + echo -n "FAILED" + $NORMAL + echo "]" + ;; + esac + +} + +# +# The loadproc function starts a process (often a daemon) with +# proper error checking +# + +loadproc() +{ + +# +# If no parameters are given to the print_status function, print usage +# information. + +# + + if [ $# = 0 ] + then + echo "Usage: loadproc {program}" + exit 1 + fi +# +# Find the basename of the first parameter (the daemon's name without +# the path +# that was provided so /usr/sbin/syslogd becomes plain 'syslogd' after +# basename ran) +# + + base=$(/usr/bin/basename $1) +# +# the pidlist variable will contains the output of the pidof command. +# pidof will try to find the PID's that belong to a certain string; +# $base in this case +# + + pidlist=$(/bin/pidof -o $$ -o $PPID -o %PPID -x $base) + + pid="" + + for apid in $pidlist + do + if [ -d /proc/$apid ] + then + pid="$pid $apid" + fi + done +# +# If the $pid variable contains anything (from the previous for loop) it +# means the daemon is already running +# + + if [ ! -n "$pid" ] + then +# +# Empty $pid variable means it's not running, so we run $* (all +# parameters giving to this function from the script) and then check the +# return value +# + $* + evaluate_retval + else +# +# The variable $pid was not empty, meaning it was already running. We +# print [FAILED] now +# + print_status failure + fi + +} + +# +# The killproc function kills a process with proper error checking +# + +killproc() +{ + +# +# If no parameters are given to the print_status function, print usage +# information. + +# + + if [ $# = 0 ] + then + echo "Usage: killproc {program} [signal]" + exit 1 + fi + +# +# Find the basename of the first parameter (the daemon's name without +# the path +# that was provided so /usr/sbin/syslogd becomes plain 'syslogd' after +# basename ran) +# + + base=$(/usr/bin/basename $1) + +# +# Check if we gave a signal to kill the process with (like -HUP, -TERM, +# -KILL, etc) to this function (the second parameter). If no second +# parameter was provided set the nolevel variable. Else set the +# killlevel variable to the value of $2 (the second parameter) +# + + if [ "$2" != "" ] + then + killlevel=-$2 + else + nolevel=1 + fi + +# +# the pidlist variable will contains the output of the pidof command. +# pidof will try to find the PID's that belong to a certain string; +# $base in this case + + pidlist=$(/bin/pidof -o $$ -o $PPID -o %PPID -x $base) + + pid="" + + for apid in $pidlist + do + if [ -d /proc/$apid ] + then + pid="$pid $apid" + fi + done + +# +# If $pid contains something from the previous for loop it means one or + +# more PID's were found that belongs to the processes to be killed +# + if [ -n "$pid" ] + then +# +# If no kill level was specified we'll try -TERM first and then sleep +# for 2 seconds to allow the kill to be completed +# + if [ "$nolevel" = 1 ] + then + /bin/kill -TERM $pid +/usr/bin/sleep 2 +# +# If after -TERM the PID still exists we'll try killing it with -KILL +# and wait for 2 seconds again to allow the kill to be completed +# + + if ps h $pid >/dev/null 2>&1 + then + /bin/kill -KILL $pid +/usr/bin/sleep 2 + fi + /bin/ps h $pid >/dev/null 2>&1 + if [ $? = 0 ] + then +# +# If after the -KILL it still exists it can't be killed for some reason +# and we'll print [FAILED] +# + print_status failure + else +# +# It was killed, remove possible stale PID file in /var/run and +# print [ OK ] +# + /bin/rm -f /var/run/$base.pid + print_status success + fi + else +# +# A kill level was provided. Kill with the provided kill level and wait +# for 2 seconds to allow the kill to be completed + +# + /bin/kill $killlevel $pid +/usr/bin/sleep 2 + /bin/ps h $pid >/dev/null 2>&1 + if [ $? = 0 ] + then +# +# If ps' return value is 0 it means it ran ok which indicates that the +# PID still exists. This means the process wasn't killed properly with +# the signal provided. Print [FAILED] +# + print_status failure + else +# +# If the return value was 1 or higher it means the PID didn't exist +# anymore which means it was killed successfully. Remove possible stale +# PID file and print [ OK ] +# + /bin/rm -f /var/run/$base.pid + print_status success + fi + fi + else +# +# The PID didn't exist so we can't attempt to kill it. Print [FAILED] +# + print_status failure + fi +} + +# +# The reloadproc functions sends a signal to a daemon telling it to +# reload it's configuration file. This is almost identical to the +# killproc function with the exception that it won't try to kill it with +# a -KILL signal (aka -9) +# + +reloadproc() +{ + +# +# If no parameters are given to the print_status function, print usage +# information. + +# + + if [ $# = 0 ] + then + echo "Usage: reloadproc {program} [signal]" + exit 1 + fi + +# +# Find the basename of the first parameter (the daemon's name without +# the path +# that was provided so /usr/sbin/syslogd becomes plain 'syslogd' after +# basename ran) +# + + base=$(/usr/bin/basename $1) + +# +# Check if we gave a signal to send to the process (like -HUP) +# to this function (the second parameter). If no second +# parameter was provided set the nolevel variable. Else set the +# killlevel variable to the value of $2 (the second parameter) +# + + + if [ -n "$2" ] + then + killlevel=-$2 + else + nolevel=1 + fi + +# +# the pidlist variable will contains the output of the pidof command. +# pidof will try to find the PID's that belong to a certain string; +# $base in this case + +# + + pidlist=$(/bin/pidof -o $$ -o $PPID -o %PPID -x $base) + + pid="" + + for apid in $pidlist + do + if [ -d /proc/$apid ] + then + pid="$pid $apid" + fi + done + +# +# If $pid contains something from the previous for loop it means one or +# more PID's were found that belongs to the processes to be reloaded +# + + if [ -n "$pid" ] + then + +# +# If nolevel was set we will use the default reload signal SIGHUP. +# + + if [ "$nolevel" = 1 ] + then + /bin/kill -SIGHUP $pid + evaluate_retval + else +# +# Else we will use the provided signal +# + + /bin/kill $killlevel $pid + evaluate_retval + fi + else +# +# If $pid is empty no PID's have been found that belong to the process +# and print [FAILED] +# + + print_status failure + fi +} + +# +# The statusproc function will try to find out if a process is running +# or not +# + +statusproc() +{ + +# +# If no parameters are given to the print_status function, print usage +# information. + +# + + if [ $# = 0 ] + then + echo "Usage: status {program}" + return 1 + fi + +# +# $pid will contain a list of PID's that belong to a process +# + + pid=$(/bin/pidof -o $$ -o $PPID -o %PPID -x $1) + if [ -n "$pid" ] + then +# +# If $pid contains something, the process is running, print the contents +# of the $pid variable +# + echo "$1 running with Process ID $pid" + return 0 + fi + +# +# If $pid doesn't contain it check if a PID file exists and inform the +# user about this stale file. +# + + if [ -f /var/run/$1.pid ] + then + pid=$(/usr/bin/head -1 /var/run/$1.pid) + if [ -n "$pid" ] + then + echo "$1 not running but /var/run/$1.pid exists" + return 1 + fi + else + echo "$1 is not running" + fi + +} + +# End /etc/init.d/functions +<userinput>EOF</userinput> + +</literallayout> + +</sect1> + diff --git a/chapter07/halt.sgml b/chapter07/halt.sgml new file mode 100644 index 000000000..f7849ad0b --- /dev/null +++ b/chapter07/halt.sgml @@ -0,0 +1,27 @@ +<sect1 id="ch07-halt"> +<title>Creating the halt script</title> + +<para> +Create a new file <filename>/etc/init.d/halt</filename> containing the +following: +</para> + +<literallayout> + +<userinput>cat > halt << "EOF"</userinput> +#!/bin/sh +# Begin /etc/init.d/halt + +# +# Call halt. See man halt for the meaning of the parameters +# + +/sbin/halt -d -f -i -p + +# End /etc/init.d/halt +<userinput>EOF</userinput> + +</literallayout> + +</sect1> + diff --git a/chapter07/introduction.sgml b/chapter07/introduction.sgml new file mode 100644 index 000000000..5f1bea0b0 --- /dev/null +++ b/chapter07/introduction.sgml @@ -0,0 +1,13 @@ +<sect1 id="ch07-introduction"> +<title>Introduction</title> + +<para> +This chapter will create the necessary scripts that are run at boottime. +These scripts perform tasks such as remounting the root file system +mounted read-only by the kernel into read-write mode, activiating the swap +partition(s), running a check on the root file system to make sure it's +intact and starting the daemons that the system uses. +</para> + +</sect1> + diff --git a/chapter07/loadkeys.sgml b/chapter07/loadkeys.sgml new file mode 100644 index 000000000..bc17fd19d --- /dev/null +++ b/chapter07/loadkeys.sgml @@ -0,0 +1,36 @@ +<sect1 id="ch07-loadkeys"> +<title>Creating the loadkeys script</title> + +<para> +You only need to create this script if you don't have a default 101 keys +US keyboard layout. Create a new file +<filename>/etc/init.d/loadkeys</filename> containing the following: +</para> + +<literallayout> + +<userinput>cat > loadkeys << "EOF"</userinput> +#!/bin/sh +# Begin /etc/init.d/loadkeys + +# +# Include the functions declared in the /etc/init.d/functions file +# + +source /etc/init.d/functions + +# +# Load the default keymap file +# + +echo -n "Loading keymap..." +/usr/bin/loadkeys -d >/dev/null +evaluate_retval + +# End /etc/init.d/loadkeys +<userinput>EOF</userinput> + +</literallayout> + +</sect1> + diff --git a/chapter07/mountfs.sgml b/chapter07/mountfs.sgml new file mode 100644 index 000000000..f0fdf7a78 --- /dev/null +++ b/chapter07/mountfs.sgml @@ -0,0 +1,110 @@ +<sect1 id="ch07-mountfs"> +<title>Creating the mountfs script</title> + +<para> +Create a new file <filename>/etc/init.d/mountfs</filename> containing +the following: +</para> + +<literallayout> + +<userinput>cat > mountfs << "EOF"</userinput> +#!/bin/sh +# Begin /etc/init.d/mountfs + +# +# Include the functions declared in the /etc/init.d/functions file +# + +source /etc/init.d/functions + +case "$1" in + start) + + # + # Remount the root partition in read-write mode. -n tells mount + # not to + # write to the /etc/mtab file (because it can't do this. The + # root + # partition is most likely still mounted in read-only mode + # + + echo -n "Remounting root file system in read-write mode..." + /bin/mount -n -o remount,rw / + evaluate_retval + + # + # First empty the /etc/mtab file. Then remount root partition + # in read-write + # mode again but pass -f to mount. This way mount does + # everything + # except the mount itself. This is needed for it to write to the + # mtab + # file which contains a list of currently mounted file systems. + # + + echo > /etc/mtab + /bin/mount -f -o remount,rw / + + # + # Remove the possible /fastboot and /forcefsck files. they are + # only + # supposed to be used during the next reboot's checkfs wich just + # happened. If you want to fastboot or forcefsck again you'll + # have to + # recreate the files + # + + /bin/rm -f /fastboot /forcefsck + + # + # Walk through /etc/fstab and mount all file systems that don't + # have the noauto option set in the fs_mntops field (the 4th + # field. + # See man fstab for more info) + # + + echo -n "Mounting other file systems..." + /bin/mount -a + evaluate_retval + ;; + + stop) + + # + # Deactive all the swap partitions + # + + echo -n "Deactivating swap..." + /sbin/swapoff -a + evaluate_retval + + # + # And unmount all the file systems, mounting the root file + # system + # read-only (all are unmounted but because root can't be + # unmounted + # at this point mount will automatically mount it read-only + # which + # is what supposed to happen. This way no data can be written + # anymore from disk) + # + + echo -n "Unmounting file systems..." + /bin/umount -a -r + evaluate_retval + ;; + + *) + echo "Usage: $0 {start|stop}" + exit 1 + ;; +esac + +# End /etc/init.d/mountfs +<userinput>EOF</userinput> + +</literallayout> + +</sect1> + diff --git a/chapter07/rc.sgml b/chapter07/rc.sgml new file mode 100644 index 000000000..3aba51da3 --- /dev/null +++ b/chapter07/rc.sgml @@ -0,0 +1,253 @@ +<sect1 id="ch07-rc"> +<title>Creating the rc script</title> + +<para> +The first main bootscript is the <filename>/etc/init.d/rc</filename> script. +Create a new file <filename>/etc/init.d/rc</filename> containing the +following: </para> + +<literallayout> + +<userinput>cat > rc << "EOF"</userinput> +#!/bin/sh +# Begin /etc/init.d/rc +# +# By Jason Pearce - jason.pearce@linux.org +# Modified by Gerard Beekmans - gerard@linuxfromscratch.org +# print_error_msg based on ideas by Simon Perreault - nomis80@yahoo.com + +# +# Include the functions declared in the /etc/init.d/functions file +# + +source /etc/init.d/functions + +# +# The print_error_msg function prints an error message when an unforseen +# error occured that wasn't trapped for some reason by a evaluate_retval +# call or error checking in different ways. + +print_error_msg() +{ + + echo + $FAILURE + echo -n "You should not read this error message. It means " + echo "that an unforseen error " + echo -n "took place and subscript $i exited with " + echo "a return value " + echo -n "of $error_value for an unknown reason. If you're able " + echo "to trace this error down " + echo -n "to a bug in one of the files provided by this book, " + echo "please be so kind to " + echo -n "inform us at lfs-discuss@linuxfromscratch.org" + $NORMAL + echo + echo + echo "Press a key to continue..." + read +} + +# +# If you uncomment the debug variable below none of the scripts will be +# executed, just the script name and parameters will be echo'ed to the +# screen so you can see how the scripts are called by rc. +# + +# Un-comment the following for debugging. +# debug=echo + +# +# Start script or program. +# +startup() { + +$debug $* + +} + +# +# Ignore CTRL-C only in this shell, so we can interrupt subprocesses. +# + +trap ":" INT QUIT TSTP + +# +# Now find out what the current and what the previous runlevel are. The +# $RUNLEVEL variable is set by init for all it's children. This script +# runs as a child of init. +# + +runlevel=$RUNLEVEL + +# +# Get first argument. Set new runlevel to this argument. If no runlevel +# was passed to this script we won't change runlevels. +# + +[ "$1" != "" ] && runlevel=$1 +if [ "$runlevel" = "" ] +then + echo "Usage: $0 <runlevel>" >&2 + exit 1 +fi + +# +# The same goes for $PREVLEVEL (see above for $RUNLEVEL). previous will +# be set to the previous run level. If $PREVLEVEL is not set it means +# that there is no previous runlevel and we'll set previous to N. +# + +previous=$PREVLEVEL +[ "$previous" = "" ] && previous=N + +export runlevel previous + +# +# Is there an rc directory for the new runlevel? +# + +if [ -d /etc/rc$runlevel.d ] + +then + +# +# If so, first collect all the K* scripts in the new run level. +# + + if [ $previous != N ] + then + for i in /etc/rc$runlevel.d/K* + do + [ ! -f $i ] && continue + +# +# the suffix variable will contain the script name without the leading +# Kxxx +# + + suffix=${i#/etc/rc$runlevel.d/K[0-9][0-9][0-9]} +# +# If there is a start script for this K script in the previous runlevel +# determine what it's full path is +# + previous_start=/etc/rc$previous.d/S[0-9][0-9][0-9]$suffix +# +# If there was no previous run level it could be that something was +# started in rcS.d (sysinit level) so we'll determine the path for that +# possibility as well. +# + + sysinit_start=/etc/rcS.d/S[0-9][0-9][0-9]$suffix + +# +# Stop the service if there is a start script in the previous run level +# or in the sysinit level. If previous_start or sysinit_start do not +# exist the 'continue' command is run which causes the script to abort +# this iteration of the for loop and continue with the next iteration. +# This boils down to that it won't run the commands after the next two +# lines and start over from the top of this for loop. See man bash for +# more info on this. +# + + [ ! -f $previous_start ] && + [ ! -f $sysinit_start ] && continue + +# +# If we found previous_start or sysinit_start, run the K script +# + + startup $i stop + error_value=$? +# +# If the return value of the script is not 0, something went wrong with +# error checking inside the script. the print_error_msg function will be +# called and the message plus the return value of the K script will be +# printed to the screen + +# + + if [ $error_value != 0 ] + then + print_error_msg + fi + + done + fi + +# +# Now run the START scripts for this runlevel. +# + + for i in /etc/rc$runlevel.d/S* + do + [ ! -f $i ] && continue + + if [ $previous != N ] + then +# +# Find start script in previous runlevel and stop script in this +# runlevel. +# + + suffix=${i#/etc/rc$runlevel.d/S[0-9][0-9][0-9]} + stop=/etc/rc$runlevel.d/K[0-9][0-9][0-9]$suffix + previous_start=/etc/rc$previous.d/S[0-9][0-9][0-9]$suffix +# +# If there is a start script in the previous level and no stop script in +# this level, we don't have to re-start the service; abort this +# iteration and start the next one. +# + + [ -f $previous_start ] && [ ! -f $stop ] && + continue + fi + + case "$runlevel" in + 0|6) + +# +# levels 0 and 6 are halt and reboot levels. We don't really start +# anything here so we call with the 'stop' parameter +# + + startup $i stop + error_value=$? +# +# If the return value of the script is not 0, something went wrong with +# error checking inside the script. the print_error_msg function will be +# called and the message plus the return value of the K script will be +# printed to the screen +# + + if [ $error_value != 0 ] + then + print_error_msg + fi + ;; + *) + startup $i start + error_value=$? +# +# If the return value of the script is not 0, something went wrong with +# error checking inside the script. the print_error_msg function will be +# called and the message plus the return value of the K script will be +# printed to the screen +# + + if [ $error_value != 0 ] + then + print_error_msg + fi + ;; + esac + done +fi + +# End /etc/init.d/rc +<userinput>EOF</userinput> + +</literallayout> + +</sect1> + diff --git a/chapter07/rcS.sgml b/chapter07/rcS.sgml new file mode 100644 index 000000000..908059d04 --- /dev/null +++ b/chapter07/rcS.sgml @@ -0,0 +1,43 @@ +<sect1 id="ch07-rcS"> +<title>Creating the rcS script</title> + +<para> +The second main bootscript is the <filename>rcS</filename> script. Create a +new file <filename>/etc/init.d/rcS</filename> containing the following: +</para> + +<literallayout> + +<userinput>cat > rcS << "EOF"</userinput> +#!/bin/sh +# Begin /etc/init.d/rcS + +# +# See the rc script for the extensive comments on the constructions +# used here +# + +runlevel=S +prevlevel=N +umask 022 +export runlevel prevlevel + +trap ":" INT QUIT TSTP + +# +# Collect all the S scripts in /etc/rcS.d and execute them in the same +# + +for i in /etc/rcS.d/S??* +do + [ ! -f "$i" ] && continue; + $i start +done + +# End /etc/init.d/rcS +<userinput>EOF</userinput> + +</literallayout> + +</sect1> + diff --git a/chapter07/reboot.sgml b/chapter07/reboot.sgml new file mode 100644 index 000000000..e57410c48 --- /dev/null +++ b/chapter07/reboot.sgml @@ -0,0 +1,30 @@ +<sect1 id="ch07-reboot"> +<title>Creating the reboot script</title> + +<para> +Create a new file <filename>/etc/init.d/reboot</filename> containing the +following: +</para> + +<literallayout> + +<userinput>cat > reboot << "EOF"</userinput> +#!/bin/sh +# Begin /etc/init.d/reboot + +# +# Call reboot. See man halt for the meaning of the parameters +# + + +echo "System reboot in progress..." + +/sbin/reboot -d -f -i + +# End /etc/init.d/reboot +<userinput>EOF</userinput> + +</literallayout> + +</sect1> + diff --git a/chapter07/sendsignals.sgml b/chapter07/sendsignals.sgml new file mode 100644 index 000000000..3aff74996 --- /dev/null +++ b/chapter07/sendsignals.sgml @@ -0,0 +1,44 @@ +<sect1 id="ch07-sendsignals"> +<title>Creating the sendsignals script</title> + +<para> +Create a new file <filename>/etc/init.d/sendsignals</filename> +containing the following: +</para> + +<literallayout> + +<userinput>cat > sendsignals << "EOF"</userinput> +#!/bin/sh +# Begin /etc/init.d/sendsignals + +# +# Include the functions declared in the /etc/init.d/functions file +# + +source /etc/init.d/functions + +# +# Send all the remaining processes the TERM signal +# + +echo -n "Sending all processes the TERM signal..." +/sbin/killall5 -15 +evaluate_retval + +# +# Send all the remaining process (after sending them the TERM signal +# before) the KILL signal. +# + +echo -n "Sending all processes the KILL signal..." +/sbin/killall5 -9 +evaluate_retval + +# End /etc/init.d/sendsignals +<userinput>EOF</userinput> + +</literallayout> + +</sect1> + diff --git a/chapter07/setclock.sgml b/chapter07/setclock.sgml new file mode 100644 index 000000000..9e5992c39 --- /dev/null +++ b/chapter07/setclock.sgml @@ -0,0 +1,93 @@ +<sect1 id="ch07-setclock"> +<title>Creating the setclock script</title> + +<para> +The following script is only for real use when your hardware clock (also +known as BIOS or CMOS clock) isn't set to GMT time. The recommended +setup is setting your hardware clock to GMT and have the time converted +to localtime using the /etc/localtime symbolic link. But if you run an +OS that doesn't understand a clock set to GMT (most notable are +Microsoft OS'es) you might want to set your clock to localtime so that +the time is properly displayed on those OS'es. This script will reset +the kernel time to the hardware clock without converting the time using +the /etc/localtime symlink. +</para> + +<para> +If you want to use this script on your system even if you have your +hardware clock set to GMT, then change the UTC variable below to the +value of <emphasis>1</emphasis>. +</para> + +<literallayout> + +<userinput>cat > setclock << "EOF"</userinput> +#!/bin/sh +# Begin /etc/init.d/setclock + +# +# Include the functions declared in the /etc/init.d/functions file +# and include the variables from the /etc/sysconfig/clock file +# + +source /etc/init.d/functions +source /etc/sysconfig/clock + +# +# Right now we want to set the kernel clock according to the hardware +# clock, so we use the -hctosys parameter. +# + +CLOCKPARAMS="--hctosys" + +# +# If the UTC variable is set in the /etc/sysconfig/clock file, add the +# -u parameter as well which tells hwclock that the hardware clock is +# set to UTC time instead of local time. +# + +case "$UTC" in + yes|true|1) + CLOCKPARAMS="$CLOCKPARAMS -u" + ;; +esac + +echo -n "Setting clock..." +/sbin/hwclock $CLOCKPARAMS +evaluate_retval + +# End /etc/init.d/setclock +<userinput>EOF</userinput> + +</literallayout> + +<sect2> +<title>Creating the /etc/sysconfig/clock file</title> + +<para> +Create a new file <filename>/etc/sysconfig/clock</filename> by running +the following: +</para> + +<literallayout> + +<userinput>cat > /etc/sysconfig/clock << "EOF"</userinput> +# Begin /etc/sysconfig/clock + +UTC=1 + +# End /etc/sysconfig/clock +<userinput>EOF</userinput> + +</literallayout> + +<para> +If your hardware clock (also known as BIOS or CMOS clock) is not set to +GMT time, than set the UTC variable in the /etc/sysconfig/clock file to +the value <emphasis>0</emphasis> (zero). +</para> + +</sect2> + +</sect1> + diff --git a/chapter07/symperm.sgml b/chapter07/symperm.sgml new file mode 100644 index 000000000..044f29d7a --- /dev/null +++ b/chapter07/symperm.sgml @@ -0,0 +1,49 @@ +<sect1 id="ch07-symperm"> +<title>Setting up symlinks and permissions</title> + +<para> +Give these files the proper permissions and create the necessary symlinks +by running the following commands. If you did not create the loadkeys +and setclock scripts, make sure you don't type them in the commands +below. +</para> + +<blockquote><literallayout> + + <userinput>cd /etc/init.d &&</userinput> + <userinput>chmod 754 rc rcS functions checkfs halt loadkeys mountfs + reboot &&</userinput> + <userinput>chmod 754 sendsignals setclock sysklogd template + &&</userinput> + <userinput>cd ../rc0.d &&</userinput> + <userinput>ln -s ../init.d/sysklogd K900sysklogd &&</userinput> + <userinput>ln -s ../init.d/sendsignals S800sendsignals && + </userinput> + <userinput>ln -s ../init.d/mountfs S900mountfs &&</userinput> + <userinput>ln -s ../init.d/halt S999halt &&</userinput> + <userinput>cd ../rc6.d &&</userinput> + <userinput>ln -s ../init.d/sysklogd K900sysklogd &&</userinput> + <userinput>ln -s ../init.d/sendsignals S800sendsignals && + </userinput> + <userinput>ln -s ../init.d/mountfs S900mountfs &&</userinput> + <userinput>ln -s ../init.d/reboot S999reboot &&</userinput> + <userinput>cd ../rcS.d &&</userinput> + <userinput>ln -s ../init.d/checkfs S200checkfs &&</userinput> + <userinput>ln -s ../init.d/mountfs S300mountfs &&</userinput> + <userinput>ln -s ../init.d/setclock S400setclock &&</userinput> + <userinput>ln -s ../init.d/loadkeys S500loadkeys &&</userinput> + <userinput>cd ../rc1.d &&</userinput> + <userinput>ln -s ../init.d/sysklogd K900sysklogd &&</userinput> + <userinput>cd ../rc2.d &&</userinput> + <userinput>ln -s ../init.d/sysklogd S100sysklogd &&</userinput> + <userinput>cd ../rc3.d &&</userinput> + <userinput>ln -s ../init.d/sysklogd S100sysklogd &&</userinput> + <userinput>cd ../rc4.d &&</userinput> + <userinput>ln -s ../init.d/sysklogd S100sysklogd &&</userinput> + <userinput>cd ../rc5.d &&</userinput> + <userinput>ln -s ../init.d/sysklogd S100sysklogd</userinput> + +</literallayout></blockquote> + +</sect1> + diff --git a/chapter07/sysklogd.sgml b/chapter07/sysklogd.sgml new file mode 100644 index 000000000..74e8b9d6d --- /dev/null +++ b/chapter07/sysklogd.sgml @@ -0,0 +1,67 @@ +<sect1 id="ch07-sysklogd"> +<title>Creating the sysklogd script</title> + +<para> +Create a new file <filename>/etc/init.d/sysklogd</filename> containing +the following: +</para> + +<literallayout> + +<userinput>cat > sysklogd << "EOF"</userinput> +#!/bin/sh +# Begin /etc/init.d/sysklogd + +# +# Include the functions declared in the /etc/init.d/functions file +# + +source /etc/init.d/functions + +case "$1" in + start) + echo -n "Starting system log daemon..." + loadproc /usr/sbin/syslogd -m 0 + + echo -n "Starting kernel log daemon..." + loadproc /usr/sbin/klogd + ;; + + stop) + echo -n "Stopping kernel log daemon..." + killproc klogd + + echo -n "Stopping system log daemon..." + killproc syslogd + ;; + + reload) + echo -n "Reloading system log daemon configuration file..." + reloadproc syslogd 1 + ;; + + restart) + $0 stop + /usr/bin/sleep 1 + $0 start + ;; + + status) + statusproc /usr/sbin/syslogd + statusproc /usr/sbin/klogd + ;; + + *) + echo "Usage: $0 {start|stop|reload|restart|status}" + exit 1 + ;; + +esac + +# End /etc/init.d/sysklogd +<userinput>EOF</userinput> + +</literallayout> + +</sect1> + diff --git a/chapter07/template.sgml b/chapter07/template.sgml new file mode 100644 index 000000000..0c062ca30 --- /dev/null +++ b/chapter07/template.sgml @@ -0,0 +1,60 @@ +<sect1 id="ch07-template"> +<title>Creating the template script</title> + +<para> +Create a new file <filename>/etc/init.d/template</filename> containing +the following: +</para> + +<literallayout> + +<userinput>cat > template << "EOF"</userinput> +#!/bin/sh +# Begin /etc/init.d/ + +# +# Include the functions declared in the /etc/init.d/functions file +# + +source /etc/init.d/functions + +case "$1" in + start) + echo -n "Starting ..." + loadproc + ;; + + stop) + echo -n "Stopping ..." + killproc + ;; + + reload) + echo -n "Reloading ..." + reloadproc + ;; + + restart) + $0 stop + /usr/bin/sleep 1 + $0 start + ;; + + status) + statusproc + ;; + + *) + echo "Usage: $0 {start|stop|reload|restart|status}" + exit 1 + ;; + +esac + +# End /etc/init.d/ +<userinput>EOF</userinput> + +</literallayout> + +</sect1> + diff --git a/chapter08/chapter8.sgml b/chapter08/chapter8.sgml new file mode 100644 index 000000000..be5f0ae05 --- /dev/null +++ b/chapter08/chapter8.sgml @@ -0,0 +1,9 @@ +<chapter id="chapter08"> +<title>Making the LFS system bootable</title> + +&c8-introduction; +&c8-kernel; +&c8-lilo; +&c8-reboot; + +</chapter> diff --git a/chapter08/introduction.sgml b/chapter08/introduction.sgml new file mode 100644 index 000000000..e64986577 --- /dev/null +++ b/chapter08/introduction.sgml @@ -0,0 +1,11 @@ +<sect1 id="ch08-introduction"> +<title>Introduction</title> + +<para> +This chapter will make LFS bootable. This chapter deals with building a +new kernel for our new LFS system and adding the proper entries to LILO +so that you can select to boot the LFS system at the LILO: prompt. +</para> + +</sect1> + diff --git a/chapter08/kernel.sgml b/chapter08/kernel.sgml new file mode 100644 index 000000000..77db00cda --- /dev/null +++ b/chapter08/kernel.sgml @@ -0,0 +1,34 @@ +<sect1 id="ch08-kernel"> +<title>Installing a kernel</title> + +<para> +A kernel is the heart of a Linux system. We could use the kernel image +from our normal system, but we might as well compile a new kernel from +the most recent kernel sources available. +</para> + +<para> +Building the kernel involves a few steps: configuring it and compiling +it. There are a few ways to configure the kernel. If you don't like the +way this book does it, read the <filename>README</filename> file and find out +what your other options are. Run the following commands to build the +kernel: +</para> + +<blockquote><literallayout> + + <userinput>cd /usr/src/linux &&</userinput> + <userinput>make mrproper &&</userinput> + <userinput>make menuconfig &&</userinput> + <userinput>make dep &&</userinput> + <userinput>make bzImage &&</userinput> + <userinput>make modules &&</userinput> + <userinput>make modules_install &&</userinput> + <userinput>cp arch/i386/boot/bzImage /boot/lfskernel && + </userinput> + <userinput>cp System.map /boot</userinput> + +</literallayout></blockquote> + +</sect1> + diff --git a/chapter08/lilo.sgml b/chapter08/lilo.sgml new file mode 100644 index 000000000..381f2dc56 --- /dev/null +++ b/chapter08/lilo.sgml @@ -0,0 +1,36 @@ +<sect1 id="ch08-lilo"> +<title>Adding an entry to LILO</title> + +<para> +In order to being able to boot from this partition, we need to update our +/etc/lilo.conf file. Add the following lines to lilo.conf by running: +</para> + +<literallayout> + +<userinput>cat >> /etc/lilo.conf << "EOF"</userinput> +image=/boot/lfskernel + label=lfs + root=<partition> + read-only +<userinput>EOF</userinput> + +</literallayout> + +<para> +<partition> must be replaced by your partition's designation (which +would be /dev/hda5 in my case). +</para> + +<para> +Now update the boot loader by running: +</para> + +<blockquote><literallayout> + + <userinput>/sbin/lilo</userinput> + +</literallayout></blockquote> + +</sect1> + diff --git a/chapter08/reboot.sgml b/chapter08/reboot.sgml new file mode 100644 index 000000000..4ced41b8f --- /dev/null +++ b/chapter08/reboot.sgml @@ -0,0 +1,19 @@ +<sect1 id="ch08-reboot"> +<title>Rebooting the system</title> + +<para> +Now that all software has been installed, bootscripts have been created, +it's time for you to reboot your computer. Shutdown your system with +shutdown -r now and reboot into LFS. After the reboot you will have a normal +login prompt like you have on your normal Linux system (unless you use XDM or +some sort of other Display Manger (like KDM - KDE's version of XDM). +</para> + +<para> +One thing remains to be done and that's setting up networking. After you +rebooted and finished the next chapter of this book your LFS system is +ready for use and you can do with it whatever you want. +</para> + +</sect1> + diff --git a/dedication/dedicated.sgml b/dedication/dedicated.sgml new file mode 100644 index 000000000..638cdcbfe --- /dev/null +++ b/dedication/dedicated.sgml @@ -0,0 +1,7 @@ +<para> + +This book is dedicated to my loving and supportive wife +<emphasis>Beverly Beekmans</emphasis>. + +</para> + diff --git a/dedication/dedication.sgml b/dedication/dedication.sgml new file mode 100644 index 000000000..dae8f2e84 --- /dev/null +++ b/dedication/dedication.sgml @@ -0,0 +1,6 @@ +<dedication> +<title>Dedication</title> + +&dc-dedicated; + +</dedication> diff --git a/intel.sgml b/intel.sgml new file mode 100644 index 000000000..7acb31b1d --- /dev/null +++ b/intel.sgml @@ -0,0 +1,517 @@ +<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V3.1//EN" [ + +<!ENTITY book SYSTEM "intel/book/book.sgml"> + +<!ENTITY version "2.4.4"> +<!ENTITY releasedate "January 23rd, 2001"> +<!ENTITY type "INTEL"> + +<!ENTITY part1 SYSTEM "intel/book/part1.sgml"> +<!ENTITY part2 SYSTEM "intel/book/part2.sgml"> +<!ENTITY part3 SYSTEM "intel/book/part3.sgml"> + +<!ENTITY bookinfo SYSTEM "intel/bookinfo/bookinfo.sgml"> +<!ENTITY bi-authorgroup SYSTEM "intel/bookinfo/authorgroup.sgml"> +<!ENTITY bi-copyright SYSTEM "intel/bookinfo/copyright.sgml"> +<!ENTITY bi-legalnotice SYSTEM "intel/bookinfo/legalnotice.sgml"> +<!ENTITY bi-abstract SYSTEM "intel/bookinfo/abstract.sgml"> + +<!ENTITY dedication SYSTEM "intel/dedication/dedication.sgml"> +<!ENTITY dc-dedicated SYSTEM "intel/dedication/dedicated.sgml"> + +<!ENTITY preface SYSTEM "intel/preface/preface.sgml"> +<!ENTITY pf-whoread SYSTEM "intel/preface/whoread.sgml"> +<!ENTITY pf-whonotread SYSTEM "intel/preface/whonotread.sgml"> +<!ENTITY pf-organization SYSTEM "intel/preface/organization.sgml"> +<!ENTITY pf-oz-organpart1 SYSTEM "intel/preface/organpart1.sgml"> +<!ENTITY pf-oz-organpart2 SYSTEM "intel/preface/organpart2.sgml"> +<!ENTITY pf-oz-organpart3 SYSTEM "intel/preface/organpart3.sgml"> + +<!ENTITY chapter1 SYSTEM "intel/chapter1/chapter1.sgml"> +<!ENTITY c1-introduction SYSTEM "intel/chapter1/introduction.sgml"> +<!ENTITY c1-how SYSTEM "intel/chapter1/how.sgml"> +<!ENTITY c1-versions SYSTEM "intel/chapter1/versions.sgml"> +<!ENTITY c1-acknowledgements SYSTEM "intel/chapter1/acknowledgements.sgml"> +<!ENTITY c1-changelog SYSTEM "intel/chapter1/changelog.sgml"> +<!ENTITY c1-mlarchive SYSTEM "intel/chapter1/mlarchive.sgml"> +<!ENTITY c1-ma-lfsdiscuss SYSTEM "intel/chapter1/lfsdiscuss.sgml"> +<!ENTITY c1-ma-lfsapps SYSTEM "intel/chapter1/lfsapps.sgml"> +<!ENTITY c1-ma-lfsannounce SYSTEM "intel/chapter1/lfsannounce.sgml"> +<!ENTITY c1-ma-lfssecurity SYSTEM "intel/chapter1/lfssecurity.sgml"> +<!ENTITY c1-ma-alfsdiscuss SYSTEM "intel/chapter1/alfsdiscuss.sgml"> +<!ENTITY c1-ma-alfsdocs SYSTEM "intel/chapter1/alfsdocs.sgml"> +<!ENTITY c1-ma-alfsipc SYSTEM "intel/chapter1/alfsipc.sgml"> +<!ENTITY c1-ma-alfsprofile SYSTEM "intel/chapter1/alfsprofile.sgml"> +<!ENTITY c1-ma-subscribe SYSTEM "intel/chapter1/subscribe.sgml"> +<!ENTITY c1-ma-unsubscribe SYSTEM "intel/chapter1/unsubscribe.sgml"> +<!ENTITY c1-ma-mailarchive SYSTEM "intel/chapter1/mailarchive.sgml"> +<!ENTITY c1-contactinfo SYSTEM "intel/chapter1/contactinfo.sgml"> + +<!ENTITY chapter2 SYSTEM "intel/chapter2/chapter2.sgml"> +<!ENTITY c2-aboutlfs SYSTEM "intel/chapter2/aboutlfs.sgml"> +<!ENTITY c2-download SYSTEM "intel/chapter2/download.sgml"> +<!ENTITY c2-install SYSTEM "intel/chapter2/install.sgml"> +<!ENTITY c2-bootscripts SYSTEM "intel/chapter2/bootscripts.sgml"> +<!ENTITY c2-commands SYSTEM "intel/chapter2/commands.sgml"> + +<!ENTITY chapter3 SYSTEM "intel/chapter3/chapter3.sgml"> +<!ENTITY c3-introduction SYSTEM "intel/chapter3/introduction.sgml"> +<!ENTITY c3-packages SYSTEM "intel/chapter3/packages.sgml"> +<!ENTITY c3-pg-toplevel SYSTEM "intel/chapter3/toplevel.sgml"> +<!ENTITY c3-pg-makedev SYSTEM "intel/chapter3/makedev.sgml"> +<!ENTITY c3-pg-bash SYSTEM "intel/chapter3/bash.sgml"> +<!ENTITY c3-pg-binutils SYSTEM "intel/chapter3/binutils.sgml"> +<!ENTITY c3-pg-bzip2 SYSTEM "intel/chapter3/bzip2.sgml"> +<!ENTITY c3-pg-diffutils SYSTEM "intel/chapter3/diffutils.sgml"> +<!ENTITY c3-pg-fileutils SYSTEM "intel/chapter3/fileutils.sgml"> +<!ENTITY c3-pg-gcc SYSTEM "intel//chapter3/gcc.sgml"> +<!ENTITY c3-pg-kernel SYSTEM "intel/chapter3/kernel.sgml"> +<!ENTITY c3-pg-glibc SYSTEM "intel/chapter3/glibc.sgml"> +<!ENTITY c3-pg-glibc-crypt SYSTEM "intel/chapter3/glibc-crypt.sgml"> +<!ENTITY c3-pg-glibc-threads SYSTEM "intel/chapter3/glibc-threads.sgml"> +<!ENTITY c3-pg-glibc-patch SYSTEM "intel/chapter3/glibc-patch.sgml"> +<!ENTITY c3-pg-grep SYSTEM "intel/chapter3/grep.sgml"> +<!ENTITY c3-pg-gzip SYSTEM "intel/chapter3/gzip.sgml"> +<!ENTITY c3-pg-gzip-patch SYSTEM "intel/chapter3/gzip-patch.sgml"> +<!ENTITY c3-pg-make SYSTEM "intel/chapter3/make.sgml"> +<!ENTITY c3-pg-sed SYSTEM "intel/chapter3/sed.sgml"> +<!ENTITY c3-pg-shellutils SYSTEM "intel/chapter3/shellutils.sgml"> +<!ENTITY c3-pg-tar SYSTEM "intel/chapter3/tar.sgml"> +<!ENTITY c3-pg-tar-patch SYSTEM "intel/chapter3/tar-patch.sgml"> +<!ENTITY c3-pg-textutils SYSTEM "intel/chapter3/textutils.sgml"> +<!ENTITY c3-pg-ed SYSTEM "intel/chapter3/ed.sgml"> +<!ENTITY c3-pg-patch SYSTEM "intel/chapter3/patch.sgml"> +<!ENTITY c3-pg-bison SYSTEM "intel/chapter3/bison.sgml"> +<!ENTITY c3-pg-mawk SYSTEM "intel/chapter3/mawk.sgml"> +<!ENTITY c3-pg-findutils SYSTEM "intel/chapter3/findutils.sgml"> +<!ENTITY c3-pg-findutils-patch SYSTEM "intel/chapter3/findutils-patch.sgml"> +<!ENTITY c3-pg-ncurses SYSTEM "intel/chapter3/ncurses.sgml"> +<!ENTITY c3-pg-less SYSTEM "intel/chapter3/less.sgml"> +<!ENTITY c3-pg-groff SYSTEM "intel/chapter3/groff.sgml"> +<!ENTITY c3-pg-man SYSTEM "intel/chapter3/man.sgml"> +<!ENTITY c3-pg-perl SYSTEM "intel/chapter3/perl.sgml"> +<!ENTITY c3-pg-m4 SYSTEM "intel/chapter3/m4.sgml"> +<!ENTITY c3-pg-texinfo SYSTEM "intel/chapter3/texinfo.sgml"> +<!ENTITY c3-pg-autoconf SYSTEM "intel/chapter3/autoconf.sgml"> +<!ENTITY c3-pg-automake SYSTEM "intel/chapter3/automake.sgml"> +<!ENTITY c3-pg-flex SYSTEM "intel/chapter3/flex.sgml"> +<!ENTITY c3-pg-file SYSTEM "intel/chapter3/file.sgml"> +<!ENTITY c3-pg-e2fsprogs SYSTEM "intel/chapter3/e2fsprogs.sgml"> +<!ENTITY c3-pg-gettext SYSTEM "intel/chapter3/gettext.sgml"> +<!ENTITY c3-pg-ldso SYSTEM "intel/chapter3/ldso.sgml"> +<!ENTITY c3-pg-libtool SYSTEM "intel/chapter3/libtool.sgml"> +<!ENTITY c3-pg-bin86 SYSTEM "intel/chapter3/bin86.sgml"> +<!ENTITY c3-pg-lilo SYSTEM "intel/chapter3/lilo.sgml"> +<!ENTITY c3-pg-shadowpwd SYSTEM "intel/chapter3/shadowpwd.sgml"> +<!ENTITY c3-pg-modutils SYSTEM "intel/chapter3/modutils.sgml"> +<!ENTITY c3-pg-procinfo SYSTEM "intel/chapter3/procinfo.sgml"> +<!ENTITY c3-pg-procps SYSTEM "intel/chapter3/procps.sgml"> +<!ENTITY c3-pg-vim SYSTEM "intel/chapter3/vim.sgml"> +<!ENTITY c3-pg-psmisc SYSTEM "intel/chapter3/psmisc.sgml"> +<!ENTITY c3-pg-sysklogd SYSTEM "intel/chapter3/sysklogd.sgml"> +<!ENTITY c3-pg-sysklogd-patch SYSTEM "intel/chapter3/sysklogd-patch.sgml"> +<!ENTITY c3-pg-sysvinit SYSTEM "intel/chapter3/sysvinit.sgml"> +<!ENTITY c3-pg-sysvinit-patch SYSTEM "intel/chapter3/sysvinit-patch.sgml"> +<!ENTITY c3-pg-utillinux SYSTEM "intel/chapter3/utillinux.sgml"> +<!ENTITY c3-pg-consoletools SYSTEM "intel/chapter3/consoletools.sgml"> +<!ENTITY c3-pg-consoletools-patch SYSTEM "intel/chapter3/consoletools-patch.sgml"> +<!ENTITY c3-pg-consoledata SYSTEM "intel/chapter3/consoledata.sgml"> +<!ENTITY c3-pg-manpages SYSTEM "intel/chapter3/manpages.sgml"> +<!ENTITY c3-pg-netkitbase SYSTEM "intel/chapter3/netkitbase.sgml"> +<!ENTITY c3-pg-nettools SYSTEM "intel/chapter3/nettools.sgml"> + +<!ENTITY chapter4 SYSTEM "intel/chapter4/chapter4.sgml"> +<!ENTITY c4-introduction SYSTEM "intel/chapter4/introduction.sgml"> +<!ENTITY c4-creatingpart SYSTEM "intel/chapter4/creatingpart.sgml"> +<!ENTITY c4-creatingfs SYSTEM "intel/chapter4/creatingfs.sgml"> +<!ENTITY c4-mounting SYSTEM "intel/chapter4/mounting.sgml"> +<!ENTITY c4-creatingdirs SYSTEM "intel/chapter4/creatingdirs.sgml"> + +<!ENTITY chapter5 SYSTEM "intel/chapter5/chapter5.sgml"> +<!ENTITY c5-introduction SYSTEM "intel/chapter5/introduction.sgml"> + +<!ENTITY c5-pp-bash SYSTEM "intel/chapter5/bash-static.sgml"> +<!ENTITY c5-pp-bash-inst SYSTEM "intel/chapter5/bash-static-inst.sgml"> +<!ENTITY c5-pp-bash-exp SYSTEM "intel/chapter5/bash-static-exp.sgml"> +<!ENTITY c5-pp-binutils SYSTEM "intel/chapter5/binutils-static.sgml"> +<!ENTITY c5-pp-binutils-inst SYSTEM "intel/chapter5/binutils-static-inst.sgml"> +<!ENTITY c5-pp-binutils-exp SYSTEM "intel/chapter5/binutils-static-exp.sgml"> +<!ENTITY c5-pp-bzip2 SYSTEM "intel/chapter5/bzip2-static.sgml"> +<!ENTITY c5-pp-bzip2-inst SYSTEM "intel/chapter5/bzip2-static-inst.sgml"> +<!ENTITY c5-pp-bzip2-exp SYSTEM "intel/chapter5/bzip2-static-exp.sgml"> +<!ENTITY c5-pp-diffutils SYSTEM "intel/chapter5/diffutils-static.sgml"> +<!ENTITY c5-pp-diffutils-inst SYSTEM "intel/chapter5/diffutils-static-inst.sgml"> +<!ENTITY c5-pp-diffutils-exp SYSTEM "intel/chapter5/diffutils-static-exp.sgml"> +<!ENTITY c5-pp-fileutils SYSTEM "intel/chapter5/fileutils-static.sgml"> +<!ENTITY c5-pp-fileutils-inst SYSTEM "intel/chapter5/fileutils-static-inst.sgml"> +<!ENTITY c5-pp-fileutils-exp SYSTEM "intel/chapter5/fileutils-static-exp.sgml"> +<!ENTITY c5-pp-gcc-local SYSTEM "intel/chapter5/gcc-local.sgml"> +<!ENTITY c5-pp-gcc-local-inst SYSTEM "intel/chapter5/gcc-local-inst.sgml"> +<!ENTITY c5-pp-gcc-local-exp SYSTEM "intel/chapter5/gcc-local-exp.sgml"> +<!ENTITY c5-pp-gcc SYSTEM "intel/chapter5/gcc-static.sgml"> +<!ENTITY c5-pp-gcc-inst SYSTEM "intel/chapter5/gcc-static-inst.sgml"> +<!ENTITY c5-pp-gcc-exp SYSTEM "intel/chapter5/gcc-static-exp.sgml"> +<!ENTITY c5-pp-kernel SYSTEM "intel/chapter5/kernel.sgml"> +<!ENTITY c5-pp-kernel-inst SYSTEM "intel/chapter5/kernel-inst.sgml"> +<!ENTITY c5-pp-kernel-exp SYSTEM "intel/chapter5/kernel-exp.sgml"> +<!ENTITY c5-pp-glibc SYSTEM "intel/chapter5/glibc.sgml"> +<!ENTITY c5-pp-glibc-inst SYSTEM "intel/chapter5/glibc-inst.sgml"> +<!ENTITY c5-pp-glibc-exp SYSTEM "intel/chapter5/glibc-exp.sgml"> +<!ENTITY c5-pp-glibc-nss SYSTEM "intel/chapter5/glibc-nss.sgml"> +<!ENTITY c5-pp-grep SYSTEM "intel/chapter5/grep-static.sgml"> +<!ENTITY c5-pp-grep-inst SYSTEM "intel/chapter5/grep-static-inst.sgml"> +<!ENTITY c5-pp-gzip SYSTEM "intel/chapter5/gzip-static.sgml"> +<!ENTITY c5-pp-gzip-inst SYSTEM "intel/chapter5/gzip-static-inst.sgml"> +<!ENTITY c5-pp-make SYSTEM "intel/chapter5/make-static.sgml"> +<!ENTITY c5-pp-make-inst SYSTEM "intel/chapter5/make-static-inst.sgml"> +<!ENTITY c5-pp-sed SYSTEM "intel/chapter5/sed-static.sgml"> +<!ENTITY c5-pp-sed-inst SYSTEM "intel/chapter5/sed-static-inst.sgml"> +<!ENTITY c5-pp-shellutils SYSTEM "intel/chapter5/shellutils-static.sgml"> +<!ENTITY c5-pp-shellutils-inst SYSTEM "intel/chapter5/shellutils-static-inst.sgml"> +<!ENTITY c5-pp-tar SYSTEM "intel/chapter5/tar-static.sgml"> +<!ENTITY c5-pp-tar-inst SYSTEM "intel/chapter5/tar-static-inst.sgml"> +<!ENTITY c5-pp-textutils SYSTEM "intel/chapter5/textutils-static.sgml"> +<!ENTITY c5-pp-textutils-inst SYSTEM "intel/chapter5/textutils-static-inst.sgml"> +<!ENTITY c5-pp-pwdgroup SYSTEM "intel/chapter5/pwdgroup.sgml"> +<!ENTITY c5-pp-proc SYSTEM "intel/chapter5/proc.sgml"> + +<!ENTITY chapter6 SYSTEM "intel/chapter6/chapter6.sgml"> +<!ENTITY c6-introduction SYSTEM "intel/chapter6/introduction.sgml"> +<!ENTITY c6-aboutdebug SYSTEM "intel/chapter6/aboutdebug.sgml"> +<!ENTITY c6-bashprofile SYSTEM "intel/chapter6/bashprofile.sgml"> +<!ENTITY c6-in-chroot SYSTEM "intel/chapter6/chroot.sgml"> +<!ENTITY c6-in-creatingdev SYSTEM "intel/chapter6/creatingdev.sgml"> +<!ENTITY c6-in-makedev-inst SYSTEM "intel/chapter6/makedev-inst.sgml"> +<!ENTITY c6-in-makedev-exp SYSTEM "intel/chapter6/makedev-exp.sgml"> +<!ENTITY c6-in-createdeventries SYSTEM "intel/chapter6/createdeventries.sgml"> +<!ENTITY c6-in-ed SYSTEM "intel/chapter6/ed.sgml"> +<!ENTITY c6-in-ed-inst SYSTEM "intel/chapter6/ed-inst.sgml"> +<!ENTITY c6-in-patch SYSTEM "intel/chapter6/patch.sgml"> +<!ENTITY c6-in-patch-inst SYSTEM "intel/chapter6/patch-inst.sgml"> +<!ENTITY c6-in-gcc SYSTEM "intel/chapter6/gcc.sgml"> +<!ENTITY c6-in-gcc-inst SYSTEM "intel/chapter6/gcc-inst.sgml"> +<!ENTITY c6-in-bison SYSTEM "intel/chapter6/bison.sgml"> +<!ENTITY c6-in-bison-inst SYSTEM "intel/chapter6/bison-inst.sgml"> +<!ENTITY c6-in-bison-exp SYSTEM "intel/chapter6/bison-exp.sgml"> +<!ENTITY c6-in-mawk SYSTEM "intel/chapter6/mawk.sgml"> +<!ENTITY c6-in-mawk-inst SYSTEM "intel/chapter6/mawk-inst.sgml"> +<!ENTITY c6-in-findutils SYSTEM "intel/chapter6/findutils.sgml"> +<!ENTITY c6-in-findutils-inst SYSTEM "intel/chapter6/findutils-inst.sgml"> +<!ENTITY c6-in-ncurses SYSTEM "intel/chapter6/ncurses.sgml"> +<!ENTITY c6-in-ncurses-inst SYSTEM "intel/chapter6/ncurses-inst.sgml"> +<!ENTITY c6-in-ncurses-exp SYSTEM "intel/chapter6/ncurses-exp.sgml"> +<!ENTITY c6-in-less SYSTEM "intel/chapter6/less.sgml"> +<!ENTITY c6-in-less-inst SYSTEM "intel/chapter6/less-inst.sgml"> +<!ENTITY c6-in-perl SYSTEM "intel/chapter6/perl.sgml"> +<!ENTITY c6-in-perl-inst SYSTEM "intel/chapter6/perl-inst.sgml"> +<!ENTITY c6-in-m4 SYSTEM "intel/chapter6/m4.sgml"> +<!ENTITY c6-in-m4-inst SYSTEM "intel/chapter6/m4-inst.sgml"> +<!ENTITY c6-in-texinfo SYSTEM "intel/chapter6/texinfo.sgml"> +<!ENTITY c6-in-texinfo-inst SYSTEM "intel/chapter6/texinfo-inst.sgml"> +<!ENTITY c6-in-autoconf SYSTEM "intel/chapter6/autoconf.sgml"> +<!ENTITY c6-in-autoconf-inst SYSTEM "intel/chapter6/autoconf-inst.sgml"> +<!ENTITY c6-in-automake SYSTEM "intel/chapter6/automake.sgml"> +<!ENTITY c6-in-automake-inst SYSTEM "intel/chapter6/automake-inst.sgml"> +<!ENTITY c6-in-bash SYSTEM "intel/chapter6/bash.sgml"> +<!ENTITY c6-in-bash-inst SYSTEM "intel/chapter6/bash-inst.sgml"> +<!ENTITY c6-in-flex SYSTEM "intel/chapter6/flex.sgml"> +<!ENTITY c6-in-flex-inst SYSTEM "intel/chapter6/flex-inst.sgml"> +<!ENTITY c6-in-binutils SYSTEM "intel/chapter6/binutils.sgml"> +<!ENTITY c6-in-binutils-inst SYSTEM "intel/chapter6/binutils-inst.sgml"> +<!ENTITY c6-in-bzip2 SYSTEM "intel/chapter6/bzip2.sgml"> +<!ENTITY c6-in-bzip2-inst SYSTEM "intel/chapter6/bzip2-inst.sgml"> +<!ENTITY c6-in-bzip2-exp SYSTEM "intel/chapter6/bzip2-exp.sgml"> +<!ENTITY c6-in-diffutils SYSTEM "intel/chapter6/diffutils.sgml"> +<!ENTITY c6-in-diffutils-inst SYSTEM "intel/chapter6/diffutils-inst.sgml"> +<!ENTITY c6-in-e2fsprogs SYSTEM "intel/chapter6/e2fsprogs.sgml"> +<!ENTITY c6-in-e2fsprogs-inst SYSTEM "intel/chapter6/e2fsprogs-inst.sgml"> +<!ENTITY c6-in-file SYSTEM "intel/chapter6/file.sgml"> +<!ENTITY c6-in-file-inst SYSTEM "intel/chapter6/file-inst.sgml"> +<!ENTITY c6-in-fileutils SYSTEM "intel/chapter6/fileutils.sgml"> +<!ENTITY c6-in-fileutils-inst SYSTEM "intel/chapter6/fileutils-inst.sgml"> +<!ENTITY c6-in-gettext SYSTEM "intel/chapter6/gettext.sgml"> +<!ENTITY c6-in-gettext-inst SYSTEM "intel/chapter6/gettext-inst.sgml"> +<!ENTITY c6-in-grep SYSTEM "intel/chapter6/grep.sgml"> +<!ENTITY c6-in-grep-inst SYSTEM "intel/chapter6/grep-inst.sgml"> +<!ENTITY c6-in-groff SYSTEM "intel/chapter6/groff.sgml"> +<!ENTITY c6-in-groff-inst SYSTEM "intel/chapter6/groff-inst.sgml"> +<!ENTITY c6-in-gzip SYSTEM "intel/chapter6/gzip.sgml"> +<!ENTITY c6-in-gzip-inst SYSTEM "intel/chapter6/gzip-inst.sgml"> +<!ENTITY c6-in-ldso SYSTEM "intel/chapter6/ldso.sgml"> +<!ENTITY c6-in-ldso-inst SYSTEM "intel/chapter6/ldso-inst.sgml"> +<!ENTITY c6-in-libtool SYSTEM "intel/chapter6/libtool.sgml"> +<!ENTITY c6-in-libtool-inst SYSTEM "intel/chapter6/libtool-inst.sgml"> +<!ENTITY c6-in-bin86 SYSTEM "intel/chapter6/bin86.sgml"> +<!ENTITY c6-in-bin86-inst SYSTEM "intel/chapter6/bin86-inst.sgml"> +<!ENTITY c6-in-lilo SYSTEM "intel/chapter6/lilo.sgml"> +<!ENTITY c6-in-lilo-inst SYSTEM "intel/chapter6/lilo-inst.sgml"> +<!ENTITY c6-in-make SYSTEM "intel/chapter6/make.sgml"> +<!ENTITY c6-in-make-inst SYSTEM "intel/chapter6/make-inst.sgml"> +<!ENTITY c6-in-shellutils SYSTEM "intel/chapter6/shellutils.sgml"> +<!ENTITY c6-in-shellutils-inst SYSTEM "intel/chapter6/shellutils-inst.sgml"> +<!ENTITY c6-in-shadowpwd SYSTEM "intel/chapter6/shadowpwd.sgml"> +<!ENTITY c6-in-shadowpwd-inst SYSTEM "intel/chapter6/shadowpwd-inst.sgml"> +<!ENTITY c6-in-shadowpwd-exp SYSTEM "intel/chapter6/shadowpwd-exp.sgml"> +<!ENTITY c6-in-man SYSTEM "intel/chapter6/man.sgml"> +<!ENTITY c6-in-man-inst SYSTEM "intel/chapter6/man-inst.sgml"> +<!ENTITY c6-in-man-exp SYSTEM "intel/chapter6/man-exp.sgml"> +<!ENTITY c6-in-modutils SYSTEM "intel/chapter6/modutils.sgml"> +<!ENTITY c6-in-modutils-inst SYSTEM "intel/chapter6/modutils-inst.sgml"> +<!ENTITY c6-in-procinfo SYSTEM "intel/chapter6/procinfo.sgml"> +<!ENTITY c6-in-procinfo-exp SYSTEM "intel/chapter6/procinfo-exp.sgml"> +<!ENTITY c6-in-procinfo-inst SYSTEM "intel/chapter6/procinfo-inst.sgml"> +<!ENTITY c6-in-procps SYSTEM "intel/chapter6/procps.sgml"> +<!ENTITY c6-in-procps-inst SYSTEM "intel/chapter6/procps-inst.sgml"> +<!ENTITY c6-in-psmisc SYSTEM "intel/chapter6/psmisc.sgml"> +<!ENTITY c6-in-psmisc-inst SYSTEM "intel/chapter6/psmisc-inst.sgml"> +<!ENTITY c6-in-sed SYSTEM "intel/chapter6/sed.sgml"> +<!ENTITY c6-in-sed-inst SYSTEM "intel/chapter6/sed-inst.sgml"> +<!ENTITY c6-in-sysklogd SYSTEM "intel/chapter6/sysklogd.sgml"> +<!ENTITY c6-in-sysklogd-inst SYSTEM "intel/chapter6/sysklogd-inst.sgml"> +<!ENTITY c6-in-sysvinit SYSTEM "intel/chapter6/sysvinit.sgml"> +<!ENTITY c6-in-sysvinit-inst SYSTEM "intel/chapter6/sysvinit-inst.sgml"> +<!ENTITY c6-in-tar SYSTEM "intel/chapter6/tar.sgml"> +<!ENTITY c6-in-tar-inst SYSTEM "intel/chapter6/tar-inst.sgml"> +<!ENTITY c6-in-textutils SYSTEM "intel/chapter6/textutils.sgml"> +<!ENTITY c6-in-textutils-inst SYSTEM "intel/chapter6/textutils-inst.sgml"> +<!ENTITY c6-in-vim SYSTEM "intel/chapter6/vim.sgml"> +<!ENTITY c6-in-vim-inst SYSTEM "intel/chapter6/vim-inst.sgml"> +<!ENTITY c6-in-utillinux SYSTEM "intel/chapter6/utillinux.sgml"> +<!ENTITY c6-in-utillinux-inst SYSTEM "intel/chapter6/utillinux-inst.sgml"> +<!ENTITY c6-in-utillinux-exp SYSTEM "intel/chapter6/utillinux-exp.sgml"> +<!ENTITY c6-in-consoletools SYSTEM "intel/chapter6/consoletools.sgml"> +<!ENTITY c6-in-consoletools-inst SYSTEM "intel/chapter6/consoletools-inst.sgml"> +<!ENTITY c6-in-consoledata SYSTEM "intel/chapter6/consoledata.sgml"> +<!ENTITY c6-in-consoledata-inst SYSTEM "intel/chapter6/consoledata-inst.sgml"> +<!ENTITY c6-in-manpages SYSTEM "intel/chapter6/manpages.sgml"> +<!ENTITY c6-in-manpages-inst SYSTEM "intel/chapter6/manpages-inst.sgml"> +<!ENTITY c6-nssremove SYSTEM "intel/chapter6/removeoldnss.sgml"> +<!ENTITY c6-configure SYSTEM "intel/chapter6/configure.sgml"> +<!ENTITY c6-cf-glibc SYSTEM "intel/chapter6/config-glibc.sgml"> +<!ENTITY c6-cf-ldso SYSTEM "intel/chapter6/config-ldso.sgml"> +<!ENTITY c6-cf-lilo SYSTEM "intel/chapter6/config-lilo.sgml"> +<!ENTITY c6-cf-sysklogd SYSTEM "intel/chapter6/config-sysklogd.sgml"> +<!ENTITY c6-cf-shadowpwd SYSTEM "intel/chapter6/config-shadowpwd.sgml"> +<!ENTITY c6-cf-sysvinit SYSTEM "intel/chapter6/config-sysvinit.sgml"> +<!ENTITY c6-cf-utmp SYSTEM "intel/chapter6/create-utmp.sgml"> +<!ENTITY c6-cf-vim SYSTEM "intel/chapter6/config-vim.sgml"> +<!ENTITY c6-cf-password SYSTEM "intel/chapter6/create-password.sgml"> + +<!ENTITY chapter7 SYSTEM "intel/chapter7/chapter7.sgml"> +<!ENTITY c7-introduction SYSTEM "intel/chapter7/introduction.sgml"> +<!ENTITY c7-createdirs SYSTEM "intel/chapter7/createdirs.sgml"> +<!ENTITY c7-rc SYSTEM "intel/chapter7/rc.sgml"> +<!ENTITY c7-rcS SYSTEM "intel/chapter7/rcS.sgml"> +<!ENTITY c7-functions SYSTEM "intel/chapter7/functions.sgml"> +<!ENTITY c7-reboot SYSTEM "intel/chapter7/reboot.sgml"> +<!ENTITY c7-halt SYSTEM "intel/chapter7/halt.sgml"> +<!ENTITY c7-mountfs SYSTEM "intel/chapter7/mountfs.sgml"> +<!ENTITY c7-sendsignals SYSTEM "intel/chapter7/sendsignals.sgml"> +<!ENTITY c7-checkfs SYSTEM "intel/chapter7/checkfs.sgml"> +<!ENTITY c7-sysklogd SYSTEM "intel/chapter7/sysklogd.sgml"> +<!ENTITY c7-template SYSTEM "intel/chapter7/template.sgml"> +<!ENTITY c7-loadkeys SYSTEM "intel/chapter7/loadkeys.sgml"> +<!ENTITY c7-setclock SYSTEM "intel/chapter7/setclock.sgml"> +<!ENTITY c7-symperm SYSTEM "intel/chapter7/symperm.sgml"> +<!ENTITY c7-fstab SYSTEM "intel/chapter7/fstab.sgml"> + +<!ENTITY chapter8 SYSTEM "intel/chapter8/chapter8.sgml"> +<!ENTITY c8-introduction SYSTEM "intel/chapter8/introduction.sgml"> +<!ENTITY c8-kernel SYSTEM "intel/chapter8/kernel.sgml"> +<!ENTITY c8-lilo SYSTEM "intel/chapter8/lilo.sgml"> +<!ENTITY c8-reboot SYSTEM "intel/chapter8/reboot.sgml"> + +<!ENTITY chapter9 SYSTEM "intel/chapter9/chapter9.sgml"> +<!ENTITY c9-introduction SYSTEM "intel/chapter9/introduction.sgml"> +<!ENTITY c9-networksoftware SYSTEM "intel/chapter9/networksoftware.sgml"> +<!ENTITY c9-ns-netkitbase SYSTEM "intel/chapter9/netkitbase.sgml"> +<!ENTITY c9-ns-nettools SYSTEM "intel/chapter9/nettools.sgml"> +<!ENTITY c9-localnet SYSTEM "intel/chapter9/localnet.sgml"> +<!ENTITY c9-localnet-symperm SYSTEM "intel/chapter9/localnet-symperm.sgml"> +<!ENTITY c9-network SYSTEM "intel/chapter9/network.sgml"> +<!ENTITY c9-hosts SYSTEM "intel/chapter9/hosts.sgml"> +<!ENTITY c9-ethnet SYSTEM "intel/chapter9/ethnet.sgml"> +<!ENTITY c9-ethnet-symperm SYSTEM "intel/chapter9/ethnet-symperm.sgml"> + +<!ENTITY appendixa SYSTEM "intel/appendixa/appendixa.sgml"> +<!ENTITY aa-introduction SYSTEM "intel/appendixa/introduction.sgml"> +<!ENTITY aa-makedev SYSTEM "intel/appendixa/makedev.sgml"> +<!ENTITY aa-makedev-desc SYSTEM "intel/appendixa/makedev-desc.sgml"> +<!ENTITY aa-glibc SYSTEM "intel/appendixa/glibc.sgml"> +<!ENTITY aa-glibc-desc SYSTEM "intel/appendixa/glibc-desc.sgml"> +<!ENTITY aa-ed SYSTEM "intel/appendixa/ed.sgml"> +<!ENTITY aa-ed-desc SYSTEM "intel/appendixa/ed-desc.sgml"> +<!ENTITY aa-patch SYSTEM "intel/appendixa/patch.sgml"> +<!ENTITY aa-patch-desc SYSTEM "intel/appendixa/patch-desc.sgml"> +<!ENTITY aa-gcc SYSTEM "intel/appendixa/gcc.sgml"> +<!ENTITY aa-gcc-desc SYSTEM "intel/appendixa/gcc-desc.sgml"> +<!ENTITY aa-bison SYSTEM "intel/appendixa/bison.sgml"> +<!ENTITY aa-bison-desc SYSTEM "intel/appendixa/bison-desc.sgml"> +<!ENTITY aa-mawk SYSTEM "intel/appendixa/mawk.sgml"> +<!ENTITY aa-mawk-desc SYSTEM "intel/appendixa/mawk-desc.sgml"> +<!ENTITY aa-findutils SYSTEM "intel/appendixa/findutils.sgml"> +<!ENTITY aa-findutils-desc SYSTEM "intel/appendixa/findutils-desc.sgml"> +<!ENTITY aa-ncurses SYSTEM "intel/appendixa/ncurses.sgml"> +<!ENTITY aa-ncurses-desc SYSTEM "intel/appendixa/ncurses-desc.sgml"> +<!ENTITY aa-less SYSTEM "intel/appendixa/less.sgml"> +<!ENTITY aa-less-desc SYSTEM "intel/appendixa/less-desc.sgml"> +<!ENTITY aa-perl SYSTEM "intel/appendixa/perl.sgml"> +<!ENTITY aa-perl-desc SYSTEM "intel/appendixa/perl-desc.sgml"> +<!ENTITY aa-m4 SYSTEM "intel/appendixa/m4.sgml"> +<!ENTITY aa-m4-desc SYSTEM "intel/appendixa/m4-desc.sgml"> +<!ENTITY aa-texinfo SYSTEM "intel/appendixa/texinfo.sgml"> +<!ENTITY aa-texinfo-desc SYSTEM "intel/appendixa/texinfo-desc.sgml"> +<!ENTITY aa-autoconf SYSTEM "intel/appendixa/autoconf.sgml"> +<!ENTITY aa-autoconf-desc SYSTEM "intel/appendixa/autoconf-desc.sgml"> +<!ENTITY aa-automake SYSTEM "intel/appendixa/automake.sgml"> +<!ENTITY aa-automake-desc SYSTEM "intel/appendixa/automake-desc.sgml"> +<!ENTITY aa-bash SYSTEM "intel/appendixa/bash.sgml"> +<!ENTITY aa-bash-desc SYSTEM "intel/appendixa/bash-desc.sgml"> +<!ENTITY aa-flex SYSTEM "intel/appendixa/flex.sgml"> +<!ENTITY aa-flex-desc SYSTEM "intel/appendixa/flex-desc.sgml"> +<!ENTITY aa-binutils SYSTEM "intel/appendixa/binutils.sgml"> +<!ENTITY aa-binutils-desc SYSTEM "intel/appendixa/binutils-desc.sgml"> +<!ENTITY aa-bzip2 SYSTEM "intel/appendixa/bzip2.sgml"> +<!ENTITY aa-bzip2-desc SYSTEM "intel/appendixa/bzip2-desc.sgml"> +<!ENTITY aa-diffutils SYSTEM "intel/appendixa/diffutils.sgml"> +<!ENTITY aa-diffutils-desc SYSTEM "intel/appendixa/diffutils-desc.sgml"> +<!ENTITY aa-kernel SYSTEM "intel/appendixa/kernel.sgml"> +<!ENTITY aa-kernel-desc SYSTEM "intel/appendixa/kernel-desc.sgml"> +<!ENTITY aa-e2fsprogs SYSTEM "intel/appendixa/e2fsprogs.sgml"> +<!ENTITY aa-e2fsprogs-desc SYSTEM "intel/appendixa/e2fsprogs-desc.sgml"> +<!ENTITY aa-file SYSTEM "intel/appendixa/file.sgml"> +<!ENTITY aa-file-desc SYSTEM "intel/appendixa/file-desc.sgml"> +<!ENTITY aa-fileutils SYSTEM "intel/appendixa/fileutils.sgml"> +<!ENTITY aa-fileutils-desc SYSTEM "intel/appendixa/fileutils-desc.sgml"> +<!ENTITY aa-gettext SYSTEM "intel/appendixa/gettext.sgml"> +<!ENTITY aa-gettext-desc SYSTEM "intel/appendixa/gettext-desc.sgml"> +<!ENTITY aa-grep SYSTEM "intel/appendixa/grep.sgml"> +<!ENTITY aa-grep-desc SYSTEM "intel/appendixa/grep-desc.sgml"> +<!ENTITY aa-groff SYSTEM "intel/appendixa/groff.sgml"> +<!ENTITY aa-groff-desc SYSTEM "intel/appendixa/groff-desc.sgml"> +<!ENTITY aa-gzip SYSTEM "intel/appendixa/gzip.sgml"> +<!ENTITY aa-gzip-desc SYSTEM "intel/appendixa/gzip-desc.sgml"> +<!ENTITY aa-ldso SYSTEM "intel/appendixa/ldso.sgml"> +<!ENTITY aa-ldso-desc SYSTEM "intel/appendixa/ldso-desc.sgml"> +<!ENTITY aa-libtool SYSTEM "intel/appendixa/libtool.sgml"> +<!ENTITY aa-libtool-desc SYSTEM "intel/appendixa/libtool-desc.sgml"> +<!ENTITY aa-bin86 SYSTEM "intel/appendixa/bin86.sgml"> +<!ENTITY aa-bin86-desc SYSTEM "intel/appendixa/bin86-desc.sgml"> +<!ENTITY aa-lilo SYSTEM "intel/appendixa/lilo.sgml"> +<!ENTITY aa-lilo-desc SYSTEM "intel/appendixa/lilo-desc.sgml"> +<!ENTITY aa-make SYSTEM "intel/appendixa/make.sgml"> +<!ENTITY aa-make-desc SYSTEM "intel/appendixa/make-desc.sgml"> +<!ENTITY aa-shellutils SYSTEM "intel/appendixa/shellutils.sgml"> +<!ENTITY aa-shellutils-desc SYSTEM "intel/appendixa/shellutils-desc.sgml"> +<!ENTITY aa-shadowpwd SYSTEM "intel/appendixa/shadowpwd.sgml"> +<!ENTITY aa-shadowpwd-desc SYSTEM "intel/appendixa/shadowpwd-desc.sgml"> +<!ENTITY aa-man SYSTEM "intel/appendixa/man.sgml"> +<!ENTITY aa-man-desc SYSTEM "intel/appendixa/man-desc.sgml"> +<!ENTITY aa-modutils SYSTEM "intel/appendixa/modutils.sgml"> +<!ENTITY aa-modutils-desc SYSTEM "intel/appendixa/modutils-desc.sgml"> +<!ENTITY aa-procinfo SYSTEM "intel/appendixa/procinfo.sgml"> +<!ENTITY aa-procinfo-desc SYSTEM "intel/appendixa/procinfo-desc.sgml"> +<!ENTITY aa-procps SYSTEM "intel/appendixa/procps.sgml"> +<!ENTITY aa-procps-desc SYSTEM "intel/appendixa/procps-desc.sgml"> +<!ENTITY aa-psmisc SYSTEM "intel/appendixa/psmisc.sgml"> +<!ENTITY aa-psmisc-desc SYSTEM "intel/appendixa/psmisc-desc.sgml"> +<!ENTITY aa-sed SYSTEM "intel/appendixa/sed.sgml"> +<!ENTITY aa-sed-desc SYSTEM "intel/appendixa/sed-desc.sgml"> +<!ENTITY aa-ssd SYSTEM "intel/appendixa/ssd.sgml"> +<!ENTITY aa-vim SYSTEM "intel/appendixa/vim.sgml"> +<!ENTITY aa-vim-desc SYSTEM "intel/appendixa/vim-desc.sgml"> +<!ENTITY aa-sysklogd SYSTEM "intel/appendixa/sysklogd.sgml"> +<!ENTITY aa-sysklogd-desc SYSTEM "intel/appendixa/sysklogd-desc.sgml"> +<!ENTITY aa-sysvinit SYSTEM "intel/appendixa/sysvinit.sgml"> +<!ENTITY aa-sysvinit-desc SYSTEM "intel/appendixa/sysvinit-desc.sgml"> +<!ENTITY aa-tar SYSTEM "intel/appendixa/tar.sgml"> +<!ENTITY aa-tar-desc SYSTEM "intel/appendixa/tar-desc.sgml"> +<!ENTITY aa-textutils SYSTEM "intel/appendixa/textutils.sgml"> +<!ENTITY aa-textutils-desc SYSTEM "intel/appendixa/textutils-desc.sgml"> +<!ENTITY aa-utillinux SYSTEM "intel/appendixa/utillinux.sgml"> +<!ENTITY aa-utillinux-desc SYSTEM "intel/appendixa/utillinux-desc.sgml"> +<!ENTITY aa-consoletools SYSTEM "intel/appendixa/consoletools.sgml"> +<!ENTITY aa-consoletools-desc SYSTEM "intel/appendixa/consoletools-desc.sgml"> +<!ENTITY aa-consoledata SYSTEM "intel/appendixa/consoledata.sgml"> +<!ENTITY aa-consoledata-desc SYSTEM "intel/appendixa/consoledata-desc.sgml"> +<!ENTITY aa-manpages SYSTEM "intel/appendixa/manpages.sgml"> +<!ENTITY aa-manpages-desc SYSTEM "intel/appendixa/manpages-desc.sgml"> + +<!ENTITY appendixb SYSTEM "intel/appendixb/appendixb.sgml"> +<!ENTITY ab-introduction SYSTEM "intel/appendixb/introduction.sgml"> +<!ENTITY ab-books SYSTEM "intel/appendixb/books.sgml"> +<!ENTITY ab-howtoguides SYSTEM "intel/appendixb/howtoguides.sgml"> +<!ENTITY ab-other SYSTEM "intel/appendixb/other.sgml"> + +<!ENTITY appendixc SYSTEM "intel/appendixc/appendixc.sgml"> +<!ENTITY ac-introduction SYSTEM "intel/appendixc/introduction.sgml"> +<!ENTITY ac-packages SYSTEM "intel/appendixc/packages.sgml"> +<!ENTITY ac-toplevel SYSTEM "intel/appendixc/toplevel.sgml"> +<!ENTITY ac-makedev SYSTEM "intel/appendixc/makedev.sgml"> +<!ENTITY ac-bash SYSTEM "intel/appendixc/bash.sgml"> +<!ENTITY ac-binutils SYSTEM "intel/appendixc/binutils.sgml"> +<!ENTITY ac-bzip2 SYSTEM "intel/appendixc/bzip2.sgml"> +<!ENTITY ac-diffutils SYSTEM "intel/appendixc/diffutils.sgml"> +<!ENTITY ac-fileutils SYSTEM "intel/appendixc/fileutils.sgml"> +<!ENTITY ac-gcc SYSTEM "intel/appendixc/gcc.sgml"> +<!ENTITY ac-kernel SYSTEM "intel/appendixc/kernel.sgml"> +<!ENTITY ac-glibc SYSTEM "intel/appendixc/glibc.sgml"> +<!ENTITY ac-glibc-crypt SYSTEM "intel/appendixc/glibc-crypt.sgml"> +<!ENTITY ac-glibc-threads SYSTEM "intel/appendixc/glibc-threads.sgml"> +<!ENTITY ac-glibc-patch SYSTEM "intel/appendixc/glibc-patch.sgml"> +<!ENTITY ac-grep SYSTEM "intel/appendixc/grep.sgml"> +<!ENTITY ac-gzip SYSTEM "intel/appendixc/gzip.sgml"> +<!ENTITY ac-make SYSTEM "intel/appendixc/make.sgml"> +<!ENTITY ac-sed SYSTEM "intel/appendixc/sed.sgml"> +<!ENTITY ac-shellutils SYSTEM "intel/appendixc/shellutils.sgml"> +<!ENTITY ac-tar SYSTEM "intel/appendixc/tar.sgml"> +<!ENTITY ac-tar-patch SYSTEM "intel/appendixc/tar-patch.sgml"> +<!ENTITY ac-textutils SYSTEM "intel/appendixc/textutils.sgml"> +<!ENTITY ac-ed SYSTEM "intel/appendixc/ed.sgml"> +<!ENTITY ac-patch SYSTEM "intel/appendixc/patch.sgml"> +<!ENTITY ac-bison SYSTEM "intel/appendixc/bison.sgml"> +<!ENTITY ac-mawk SYSTEM "intel/appendixc/mawk.sgml"> +<!ENTITY ac-findutils SYSTEM "intel/appendixc/findutils.sgml"> +<!ENTITY ac-findutils-patch SYSTEM "intel/appendixc/findutils-patch.sgml"> +<!ENTITY ac-ncurses SYSTEM "intel/appendixc/ncurses.sgml"> +<!ENTITY ac-less SYSTEM "intel/appendixc/less.sgml"> +<!ENTITY ac-groff SYSTEM "intel/appendixc/groff.sgml"> +<!ENTITY ac-man SYSTEM "intel/appendixc/man.sgml"> +<!ENTITY ac-perl SYSTEM "intel/appendixc/perl.sgml"> +<!ENTITY ac-m4 SYSTEM "intel/appendixc/m4.sgml"> +<!ENTITY ac-texinfo SYSTEM "intel/appendixc/texinfo.sgml"> +<!ENTITY ac-autoconf SYSTEM "intel/appendixc/autoconf.sgml"> +<!ENTITY ac-automake SYSTEM "intel/appendixc/automake.sgml"> +<!ENTITY ac-flex SYSTEM "intel/appendixc/flex.sgml"> +<!ENTITY ac-file SYSTEM "intel/appendixc/file.sgml"> +<!ENTITY ac-e2fsprogs SYSTEM "intel/appendixc/e2fsprogs.sgml"> +<!ENTITY ac-gettext SYSTEM "intel/appendixc/gettext.sgml"> +<!ENTITY ac-ldso SYSTEM "intel/appendixc/ldso.sgml"> +<!ENTITY ac-libtool SYSTEM "intel/appendixc/libtool.sgml"> +<!ENTITY ac-bin86 SYSTEM "intel/appendixc/bin86.sgml"> +<!ENTITY ac-lilo SYSTEM "intel/appendixc/lilo.sgml"> +<!ENTITY ac-shadowpwd SYSTEM "intel/appendixc/shadowpwd.sgml"> +<!ENTITY ac-modutils SYSTEM "intel/appendixc/modutils.sgml"> +<!ENTITY ac-procinfo SYSTEM "intel/appendixc/procinfo.sgml"> +<!ENTITY ac-procps SYSTEM "intel/appendixc/procps.sgml"> +<!ENTITY ac-vim SYSTEM "intel/appendixc/vim.sgml"> +<!ENTITY ac-psmisc SYSTEM "intel/appendixc/psmisc.sgml"> +<!ENTITY ac-sysklogd SYSTEM "intel/appendixc/sysklogd.sgml"> +<!ENTITY ac-sysklogd-patch SYSTEM "intel/appendixc/sysklogd-patch.sgml"> +<!ENTITY ac-sysvinit SYSTEM "intel/appendixc/sysvinit.sgml"> +<!ENTITY ac-sysvinit-patch SYSTEM "intel/appendixc/sysvinit-patch.sgml"> +<!ENTITY ac-utillinux SYSTEM "intel/appendixc/utillinux.sgml"> +<!ENTITY ac-consoletools SYSTEM "intel/appendixc/consoletools.sgml"> +<!ENTITY ac-consoletools-patch SYSTEM "intel/appendixc/consoletools-patch.sgml"> +<!ENTITY ac-consoledata SYSTEM "intel/appendixc/consoledata.sgml"> +<!ENTITY ac-manpages SYSTEM "intel/appendixc/manpages.sgml"> +<!ENTITY ac-netkitbase SYSTEM "intel/appendixc/netkitbase.sgml"> +<!ENTITY ac-nettools SYSTEM "intel/appendixc/nettools.sgml"> + +]> + +<book> + +&book; + +</book> diff --git a/lfs.dsl b/lfs.dsl new file mode 100644 index 000000000..fb8006aca --- /dev/null +++ b/lfs.dsl @@ -0,0 +1,39 @@ +<!DOCTYPE style-sheet PUBLIC "-//James Clark//DTD DSSSL Style Sheet//EN" [ +<!ENTITY docbook.dsl SYSTEM "docbook.dsl" CDATA dsssl> +]> + +<style-sheet> + +<style-specification use="docbook"> +<style-specification-body> + +(define %generate-legalnotice-link% +#t) + +(define ($legalnotice-link-file$ legalnotice) +(string-append "legalnotice"%html-ext%)) + +(define %html-ext% +".html") + +(define %root-filename% +"index") + +(define %use-id-as-filename% +#t) + +(define %body-attr% + (list + (list "BGCOLOR" "#FFFFFF") + (list "TEXT" "#000000") + (list "LINK" "#0000FF") + (list "VLINK" "#840084") + (list "ALINK" "#006000"))) + +</style-specification-body> +</style-specification> + +<external-specification id="docbook" document="docbook.dsl"> + +</style-sheet> + diff --git a/preface/organization.sgml b/preface/organization.sgml new file mode 100644 index 000000000..f04ac14fb --- /dev/null +++ b/preface/organization.sgml @@ -0,0 +1,14 @@ +<sect1 id="pre-organization"> +<title>Organization</title> + +<para> +This book is divided into the following parts. Although there is a lot +of duplicate information in certain parts, it's the easiest way to read it +and not to mention the easiest way for me to maintain the book. +</para> + +&pf-oz-organpart1; +&pf-oz-organpart2; +&pf-oz-organpart3; + +</sect1> diff --git a/preface/organpart1.sgml b/preface/organpart1.sgml new file mode 100644 index 000000000..a4a09921d --- /dev/null +++ b/preface/organpart1.sgml @@ -0,0 +1,13 @@ +<sect2 id="pre-organ1"> +<title>Part I - Introduction</title> + +<para> +Part One gives you general information about this book (versions, where +to get it, changelog, mailinglists and how to get in touch with me). +It also explains a few important aspects you really want and need to +read +before you start building an LFS system. +</para> + +</sect2> + diff --git a/preface/organpart2.sgml b/preface/organpart2.sgml new file mode 100644 index 000000000..2ed37a45d --- /dev/null +++ b/preface/organpart2.sgml @@ -0,0 +1,12 @@ +<sect2 id="pre-organ2"> +<title>Part II - Installation of the LFS system</title> + +<para> +Part Two guides you through the installation of the LFS system which will +be the foundation for the rest of the system. Whatever you +choose to do with your brand new LFS system, it will be built on the +foundation that's installed in this part. +</para> + +</sect2> + diff --git a/preface/organpart3.sgml b/preface/organpart3.sgml new file mode 100644 index 000000000..fcc7cc7e6 --- /dev/null +++ b/preface/organpart3.sgml @@ -0,0 +1,9 @@ +<sect2 id="pre-organ3"> +<title>Part III - Appendixes</title> + +<para> +Part Three contains various Appendixes. +</para> + +</sect2> + diff --git a/preface/preface.sgml b/preface/preface.sgml new file mode 100644 index 000000000..37db6bafa --- /dev/null +++ b/preface/preface.sgml @@ -0,0 +1,8 @@ +<preface id="preface"> +<title>Preface</title> + +&pf-whoread; +&pf-whonotread; +&pf-organization; + +</preface> diff --git a/preface/whonotread.sgml b/preface/whonotread.sgml new file mode 100644 index 000000000..b54344783 --- /dev/null +++ b/preface/whonotread.sgml @@ -0,0 +1,32 @@ +<sect1 id="pre-whonotread"> +<title>Who would not want to read this book</title> + +<para> +Users who don't want to build an entire Linux system from scratch +probably don't want to read this book. If you, however, do want to learn +more about what happens behind the scenes, in particular what happens +between turning on your computer and seeing the command prompt, you want +to read the <quote>From Power Up To Bash Prompt</quote> (P2B) HOWTO. +This HOWTO builds a bare system, in a similar way as this book does, but it +focusses more on just installing a bootable system instead of a complete +system. +</para> + +<para> +To decide whether you want to read this book or the P2B HOWTO, you could +ask yourself this question: Is my main objective to get a working Linux +system that I'm going to build myself and along the way learn and +learn what every component of a system is for, or is just the learning +part your main objective. If you want to build and learn, read this +book. If you just want to learn, then the P2B HOWTO is probably better +material to read. +</para> + +<para> +The <quote>From Power Up To Bash Prompt</quote> HOWTO can be downloaded +from <ulink url="http://www.netspace.net.au/~gok/power2bash/"> +http://www.netspace.net.au/~gok/power2bash/</ulink> +</para> + +</sect1> + diff --git a/preface/whoread.sgml b/preface/whoread.sgml new file mode 100644 index 000000000..36394ebdf --- /dev/null +++ b/preface/whoread.sgml @@ -0,0 +1,35 @@ +<sect1 id="pre-whoread"> +<title>Who would want to read this book</title> + +<para> +This book is intended for Linux users who want to learn more about the +inner workings of Linux and how the various pieces of the Operating +System fit together. This book will guide you step-by-step in creating +your own custom build Linux system from scratch, using the source code of +the software that we need. +</para> + +<para> +This book is also intended for Linux users who want to get away from the +existing commercial and free distributions that are often too bloated. +Using existing distributions also forces you to use the file system +structure, boot script structure, etc. that they choose to use. With +this book you can create your own structures and methods in exactly the +way you like them (which can be based on the ones this book provides) +</para> + +<para> +Also, if you have security concerns, you don't want to rely on +pre-compiled packages. So instead, you want to compile all programs +from scratch and install them yourself. That could be another reason why +you would want to build a custom made Linux system. +</para> + +<para> +Those are just a few out of many reasons why people want to build their +own Linux system. If you're one of those people, this book is meant for +you. +</para> + +</sect1> + |