Automatic merge of trunk into multilib

This commit is contained in:
Thomas Trepl (Moody) 2022-10-16 00:30:10 +02:00
commit 87f8108718
5 changed files with 131 additions and 130 deletions

View File

@ -13,15 +13,15 @@
<para>The primary target architectures of LFS are the AMD/Intel x86 (32-bit)
and x86_64 (64-bit) CPUs. On the other hand, the instructions in this book are
also known to work, with some modifications, with the Power PC and ARM CPUs. To
build a system that utilizes one of these CPUs, the main prerequisite, in
build a system that utilizes one of these alternative CPUs, the main prerequisite, in
addition to those on the next page, is an existing Linux system such as an
earlier LFS installation, Ubuntu, Red Hat/Fedora, SuSE, or other distribution
that targets the architecture that you have. Also note that a 32-bit
earlier LFS installation, Ubuntu, Red Hat/Fedora, SuSE, or some other distribution
that targets that architecture. (Note that a 32-bit
distribution can be installed and used as a host system on a 64-bit AMD/Intel
computer.</para>
computer.)</para>
<para>For building LFS, the gain of building on a 64-bit system
compared to a 32-bit system is minimal.
<para>The gain from building on a 64-bit system, as
compared to a 32-bit system, is minimal.
For example, in a test build of LFS-9.1 on a Core i7-4790 CPU based system,
using 4 cores, the following statistics were measured:</para>
@ -30,21 +30,21 @@ using 4 cores, the following statistics were measured:</para>
64-bit 233.2 minutes 4.4 GB</computeroutput></screen>
<para>As you can see, on the same hardware, the 64-bit build is only 3% faster
and is 22% larger than the 32-bit build. If you plan to use LFS as a LAMP
server, or a firewall, a 32-bit CPU may be largely sufficient. On the other
hand, several packages in BLFS now need more than 4GB of RAM to be built
and/or to run, so that if you plan to use LFS as a desktop, the LFS authors
recommend building on a 64-bit system.</para>
(and 22% larger) than the 32-bit build. If you plan to use LFS as a LAMP
server, or a firewall, a 32-bit CPU may be good enough. On the other
hand, several packages in BLFS now need more than 4 GB of RAM to be built
and/or to run; if you plan to use LFS as a desktop, the LFS authors
recommend building a 64-bit system.</para>
<para>The default 64-bit build that results from LFS is considered a
<para>The default 64-bit build that results from LFS is a
<quote>pure</quote> 64-bit system. That is, it supports 64-bit executables
only. Building a <quote>multi-lib</quote> system requires compiling many
applications twice, once for a 32-bit system and once for a 64-bit system.
This is not directly supported in LFS because it would interfere with the
educational objective of providing the instructions needed for a
straightforward base Linux system. Some LFS/BLFS editors maintain a fork
of LFS for multilib, which is accessible at <ulink
url="https://www.linuxfromscratch.org/~thomas/multilib/index.html"/>. But it
is an advanced topic.</para>
educational objective of providing the minimal instructions needed for a
basic Linux system. Some of the LFS/BLFS editors maintain a multilib fork
of LFS, accessible at <ulink
url="https://www.linuxfromscratch.org/~thomas/multilib/index.html"/>. But
that's an advanced topic.</para>
</sect1>

View File

@ -18,26 +18,26 @@ an existing one?</quote></para>
<para>One important reason for this project's existence is to help you learn
how a Linux system works from the inside out. Building an LFS system helps
demonstrate what makes Linux tick, and how things work together and depend on
each other. One of the best things that this learning experience can provide is
each other. One of the best things this learning experience can provide is
the ability to customize a Linux system to suit your own unique needs.</para>
<para>Another key benefit of LFS is that it allows you to have more control
over the system without relying on someone else's Linux implementation. With
LFS, you are in the driver's seat and dictate every aspect of the
<para>Another key benefit of LFS is that it gives you control
of the system without relying on someone else's Linux implementation. With
LFS, you are in the driver's seat. <emphasis>You</emphasis> dictate every aspect of your
system.</para>
<para>LFS allows you to create very compact Linux systems. When installing
regular distributions, you are often forced to install a great many
programs which are probably never used or understood. These programs waste
resources. You may argue that with today's hard drive and CPUs, such
<para>LFS allows you to create very compact Linux systems. With
other distributions you are often forced to install a great many
programs you neither use nor understand. These programs waste
resources. You may argue that with today's hard drives and CPUs, wasted
resources are no longer a consideration. Sometimes, however, you are still
constrained by size considerations if nothing else. Think about bootable
constrained by the system's size, if nothing else. Think about bootable
CDs, USB sticks, and embedded systems. Those are areas where LFS can be
beneficial.</para>
<para>Another advantage of a custom built Linux system is security. By compiling
the entire system from source code, you are empowered to audit everything
and apply all the security patches desired. It is no longer necessary to
and apply all the security patches you want. You don't have to
wait for somebody else to compile binary packages that fix a security hole.
Unless you examine the patch and implement it yourself, you have no
guarantee that the new binary package was built correctly and adequately
@ -48,10 +48,10 @@ foundation-level system. If you do not wish to build your own Linux system
from scratch, you may nevertheless benefit from the information in this
book.</para>
<para>There are too many other good reasons to build your own LFS system to
list them all here. In the end, education is by far the most powerful of
reasons. As you continue in your LFS experience, you will discover the power
that information and knowledge truly bring.</para>
<para>There are too many good reasons to build your own LFS system to
list them all here. In the end, education is by far the most important
reason. As you continue your LFS experience, you will discover the power
that information and knowledge can bring.</para>
</sect1>

View File

@ -13,19 +13,19 @@
<para>Building an LFS system is not a simple task. It requires a certain
level of existing knowledge of Unix system administration in order to resolve
problems and correctly execute the commands listed. In particular, as an
absolute minimum, you should already have the ability to use the
absolute minimum, you should already know how to use the
command line (shell) to copy or move files and directories, list directory
and file contents, and change the current directory. It is also expected that
you have a reasonable knowledge of using and installing Linux
you know how to use and install Linux
software.</para>
<para>Because the LFS book assumes <emphasis>at least</emphasis> this basic
level of skill, the various LFS support forums are unlikely to be able to
level of skill, the various LFS support forums are unlikely to
provide you with much assistance in these areas. You will find that your
questions regarding such basic knowledge will likely go unanswered or you
will simply be referred to the LFS essential pre-reading list.</para>
questions regarding such basic knowledge will likely go unanswered (or you
will simply be referred to the LFS essential pre-reading list).</para>
<para>Before building an LFS system, we recommend reading the following:</para>
<para>Before building an LFS system, we urge you to read these articles:</para>
<itemizedlist>
<listitem>
@ -35,14 +35,14 @@
<para>This is a comprehensive guide to building and installing
<quote>generic</quote> Unix software packages under Linux. Although it
was written some time ago, it still provides a good summary of the
basic techniques needed to build and install software.</para>
basic techniques used to build and install software.</para>
</listitem>
<listitem>
<para>Beginner's Guide to Installing from Source
<ulink url="https://moi.vonos.net/linux/beginners-installing-from-source/"/></para>
<para>This guide provides a good summary of basic skills and
<para>This guide provides a good summary of the basic skills and
techniques needed to build software from source code.</para>
</listitem>
<!--

View File

@ -32,25 +32,26 @@
Standard Base (LSB) Version 5.0 (2015)</ulink></para>
<para>The LSB has four separate standards: Core, Desktop,
Runtime Languages, and Imaging. In addition to generic requirements
there are also architecture specific requirements. There are also two
areas for trial use: Gtk3 and Graphics. LFS attempts to conform to the
Runtime Languages, and Imaging. There are generic requirements,
and also architecture specific requirements. There are also two
trial standards: Gtk3 and Graphics. LFS attempts to conform to the
LASB standards for the IA32 / IA64 (Intel) and AMD64 (AMD)
architectures discussed in the previous section.</para>
<note><para>Many people do not agree with the requirements of the LSB.
The main purpose of defining it is to ensure that proprietary software
will be able to be installed and run properly on a compliant system.
<note><para>Many people do not agree with these requirements.
The main purpose of the LSB is to ensure that proprietary software
can be installed and run on a compliant system.
Since LFS is source based, the user has complete control over what
packages are desired and many choose not to install some packages that
packages are desired; you may choose not to install some packages that
are specified by the LSB.</para></note>
</listitem>
</itemizedlist>
<para>Creating a complete LFS system capable of passing the LSB
certifications tests is possible, but not without many additional packages
that are beyond the scope of LFS. These additional packages have
installation instructions in BLFS. </para>
<para>While it is possible to create a complete system that will pass the LSB
certification tests "from scratch", this can't be done without many additional packages
that are beyond the scope of the LFS book. Installation instructions for these
additional packages can be found in BLFS. </para>
<variablelist>
<bridgehead renderas="sect3">Packages supplied by LFS needed to

View File

@ -10,13 +10,13 @@
<title>Rationale for Packages in the Book</title>
<para>As stated earlier, the goal of LFS is to build a complete and usable
foundation-level system. This includes all packages needed to replicate
itself while providing a relatively minimal base from which to customize
a more complete system based on the choices of the user. This does not
<para>The goal of LFS is to build a complete and usable
foundation-level system&mdash;including all the packages needed to replicate
itself&mdash;and providing a relatively minimal base from which to customize
a more complete system based on the user's choices. This does not
mean that LFS is the smallest system possible. Several important packages
are included that are not strictly required. The lists below document the
rationale for each package in the book.</para>
are included that are not, strictly speaking, required. The list below documents the
reasons each package in the book has been included.</para>
<itemizedlist>
@ -24,7 +24,7 @@
<para>Acl</para>
<para>This package contains utilities to administer Access
Control Lists, which are used to define more fine-grained
Control Lists, which are used to define fine-grained
discretionary access rights for files and directories.
</para>
</listitem>
@ -32,26 +32,26 @@
<listitem>
<para>Attr</para>
<para>This package contains programs for administering
extended attributes on filesystem objects.
<para>This package contains programs for managing
extended attributes on file system objects.
</para>
</listitem>
<listitem>
<para>Autoconf</para>
<para>This package contains programs for producing shell scripts that
<para>This package supplies programs for producing shell scripts that
can automatically configure source code from a developer's
template. It is often needed to rebuild a package after updates
to the build procedures.</para>
template. It is often needed to rebuild a package after
the build procedure has been updated.</para>
</listitem>
<listitem>
<para>Automake</para>
<para>This package contains programs for generating Make files from
a template. It is often needed to rebuild a package after updates
to the build procedures.</para>
a template. It is often needed to rebuild a package after
the build procedure has been updated.</para>
</listitem>
<listitem>
@ -60,29 +60,29 @@
<para>This package satisfies an LSB core requirement to provide
a Bourne Shell interface to the system. It was chosen over
other shell packages because of its common usage and extensive
capabilities beyond basic shell functions.</para>
capabilities.</para>
</listitem>
<listitem>
<para>Bc</para>
<para>This package provides an arbitrary precision numeric processing language.
It satisfies a requirement needed when building the Linux kernel.</para>
It satisfies a requirement for building the Linux kernel.</para>
</listitem>
<listitem>
<para>Binutils</para>
<para>This package contains a linker, an assembler, and other
<para>This package supplies a linker, an assembler, and other
tools for handling object files. The programs in this package are
needed to compile most of the packages in an LFS system and beyond.</para>
needed to compile most of the packages in an LFS system.</para>
</listitem>
<listitem>
<para>Bison</para>
<para>This package contains the GNU version of yacc (Yet Another
Compiler Compiler) needed to build several other LFS programs.</para>
Compiler Compiler) needed to build several of the LFS programs.</para>
</listitem>
<listitem>
@ -95,7 +95,7 @@
<listitem>
<para>Check</para>
<para>This package contains a test harness for other programs.</para>
<para>This package provides a test harness for other programs.</para>
</listitem>
<listitem>
@ -111,14 +111,14 @@
<para>D-Bus</para>
<para>This package contains programs to implement a message bus system,
which a simple way for applications to talk to one another.
a simple way for applications to talk to one another.
</para>
</listitem>
<listitem>
<para>DejaGNU</para>
<para>This package contains a framework for testing other programs.</para>
<para>This package supplies a framework for testing other programs.</para>
</listitem>
<listitem>
@ -132,7 +132,7 @@
<listitem>
<para>E2fsprogs</para>
<para>This package contains the utilities for handling the ext2, ext3
<para>This package supplies utilities for handling the ext2, ext3
and ext4 file systems. These are the most common and thoroughly
tested file systems that Linux supports.</para>
</listitem>
@ -141,15 +141,15 @@
<para>Eudev</para>
<para>This package is a device manager. It dynamically controls the ownership,
permissions, names, and symbolic links of devices in the /dev directory as
devices are added or removed from the system.
permissions, names, and symbolic links of devices in the /dev directory when
devices are added to or removed from the system.
</para>
</listitem>
<listitem>
<para>Expat</para>
<para>This package contains a relatively small XML parsing library. It
<para>This package yields a relatively small XML parsing library. It
is required by the XML::Parser Perl module.</para>
</listitem>
@ -171,7 +171,7 @@
<listitem>
<para>Findutils</para>
<para>This package contains programs to find files in a file system.
<para>This package provides programs to find files in a file system.
It is used in many packages' build scripts.</para>
</listitem>
@ -187,7 +187,7 @@
<listitem>
<para>Gawk</para>
<para>This package contains programs for manipulating text files.
<para>This package supplies programs for manipulating text files.
It is the GNU version of awk (Aho-Weinberg-Kernighan). It is used in
many other packages' build scripts.</para>
</listitem>
@ -195,7 +195,7 @@
<listitem>
<para>GCC</para>
<para>This package is the Gnu Compiler Collection. It contains the
<para>This is the Gnu Compiler Collection. It contains the
C and C++ compilers as well as several others not built by LFS.
</para>
</listitem>
@ -210,8 +210,8 @@
<listitem>
<para>Gettext</para>
<para>This package contains utilities and libraries for
internationalization and localization of numerous packages.</para>
<para>This package provides utilities and libraries for
the internationalization and localization of many packages.</para>
</listitem>
<listitem>
@ -224,15 +224,15 @@
<listitem>
<para>GMP</para>
<para>This package contains math libraries that provide useful functions
for arbitrary precision arithmetic. It is required to build GCC.</para>
<para>This package supplies math libraries that provide useful functions
for arbitrary precision arithmetic. It is needed to build GCC.</para>
</listitem>
<listitem>
<para>Gperf</para>
<para>This package contains a program that generates a perfect hash
function from a key set. It is required for Eudev.</para>
<para>This package produces a program that generates a perfect hash
function from a set of keys. It is required by Eudev.</para>
</listitem>
<listitem>
@ -245,15 +245,15 @@
<listitem>
<para>Groff</para>
<para>This package contains programs for processing and formatting text.
<para>This package contributes programs for processing and formatting text.
One important function of these programs is to format man pages.</para>
</listitem>
<listitem>
<para>GRUB</para>
<para>This package is the Grand Unified Boot Loader. It is one
of several boot loaders available, but is the most flexible.
<para>This is the Grand Unified Boot Loader. It is
the most flexible of several boot loaders available.
</para>
</listitem>
@ -261,8 +261,8 @@
<para>Gzip</para>
<para>This package contains programs for compressing and
decompressing files. It is needed to decompress many packages in LFS
and beyond.</para>
decompressing files. It is needed to decompress many packages
in LFS.</para>
</listitem>
<listitem>
@ -275,14 +275,14 @@
<listitem>
<para>Inetutils</para>
<para>This package contains programs for basic network
<para>This package supplies programs for basic network
administration.</para>
</listitem>
<listitem>
<para>Intltool</para>
<para>This package contains tools for extracting translatable
<para>This package contributes tools for extracting translatable
strings from source files.</para>
</listitem>
@ -304,14 +304,14 @@
<listitem>
<para>Kbd</para>
<para>This package contains key-table files, keyboard utilities
<para>This package produces key-table files, keyboard utilities
for non-US keyboards, and a number of console fonts.</para>
</listitem>
<listitem>
<para>Kmod</para>
<para>This package contains programs needed to administer Linux
<para>This package supplies programs needed to administer Linux
kernel modules.</para>
</listitem>
@ -319,8 +319,8 @@
<para>Less</para>
<para>This package contains a very nice text file viewer that
allows scrolling up or down when viewing a file. It is also used by
Man-DB for viewing manpages.</para>
allows scrolling up or down when viewing a file. It is also used
when viewing manpages.</para>
</listitem>
<listitem>
@ -357,7 +357,7 @@
<listitem>
<para>Libpipeline</para>
<para>The Libpipeline package contains a library for manipulating
<para>The Libpipeline package supplies a library for manipulating
pipelines of subprocesses in a flexible and convenient way. It is
required by the Man-DB package.</para>
</listitem>
@ -366,7 +366,7 @@
<para>Libtool</para>
<para>This package contains the GNU generic library support
script. It wraps the complexity of using shared libraries in a
script. It wraps the complexity of using shared libraries into a
consistent, portable interface. It is needed by the test
suites in other LFS packages.</para>
</listitem>
@ -381,7 +381,7 @@
<listitem>
<para>M4</para>
<para>This package contains a general text macro processor useful
<para>This package provides a general text macro processor useful
as a build tool for other programs.</para>
</listitem>
@ -404,14 +404,14 @@
<para>This package contains programs for finding and viewing man pages.
It was chosen instead of the <application>man</application> package
due to superior internationalization capabilities. It supplies
because of its superior internationalization capabilities. It supplies
the man program.</para>
</listitem>
<listitem>
<para>Man-pages</para>
<para>This package contains the actual contents of the basic
<para>This package provides the actual contents of the basic
Linux man pages.</para>
</listitem>
@ -419,8 +419,8 @@
<para>Meson</para>
<para>This package provides a software tool for automating the building
of software. The main goal for Meson is to minimize the amount of time
that software developers need to spend configuring their build
of software. The main goal of Meson is to minimize the amount of time
that software developers need to spend configuring a build
system. It's required to build Systemd, as well as many BLFS
packages.</para>
@ -429,7 +429,7 @@
<listitem>
<para>MPC</para>
<para>This package contains functions for the arithmetic of complex
<para>This package supplies arithmetic functions for complex
numbers. It is required by GCC.</para>
</listitem>
@ -443,7 +443,7 @@
<listitem>
<para>Ninja</para>
<para>This package contains a small build system with a focus on speed.
<para>This package furnishes a small build system with a focus on speed.
It is designed to have its input files generated by a higher-level build
system, and to run builds as fast as possible.
This package is required by Meson.</para>
@ -456,14 +456,14 @@
<para>This package contains libraries for terminal-independent
handling of character screens. It is often used to provide
cursor control for a menuing system. It is needed by a number of
packages in LFS.</para>
the packages in LFS.</para>
</listitem>
<listitem>
<para>Openssl</para>
<para>This package provides management tools and libraries relating to
cryptography. These are useful for providing cryptographic functions to
cryptography. These supply cryptographic functions to
other packages, including the Linux kernel.</para>
</listitem>
@ -502,7 +502,7 @@
<listitem>
<para>Psmisc</para>
<para>This package contains programs for displaying information
<para>This package produces programs for displaying information
about running processes. These programs are useful for system
administration.</para>
</listitem>
@ -511,14 +511,14 @@
<para>Python 3</para>
<para>This package provides an interpreted language that has a design
philosophy that emphasizes code readability.</para>
philosophy emphasizing code readability.</para>
</listitem>
<listitem>
<para>Readline</para>
<para>This package is a set of libraries that offers command-line
<para>This package is a set of libraries that offer command-line
editing and history capabilities. It is used by Bash.</para>
</listitem>
@ -526,7 +526,7 @@
<para>Sed</para>
<para>This package allows editing of text without opening it in a
text editor. It is also needed by most LFS packages' configure
text editor. It is also needed by many LFS packages' configure
scripts.</para>
</listitem>
@ -534,14 +534,14 @@
<para>Shadow</para>
<para>This package contains programs for handling passwords
in a secure way.</para>
securely.</para>
</listitem>
<listitem revision="sysv">
<para>Sysklogd</para>
<para>This package contains programs for logging system messages,
such as those given by the kernel or daemon processes when unusual
<para>This package supplies programs for logging system messages,
such as those emitted by the kernel or daemon processes when unusual
events occur.</para>
</listitem>
@ -550,7 +550,7 @@
<para>This package provides an <application>init</application> program
and several additional boot and system control capabilities as an
alternative to Sysvinit. It is used by many commercial distributions.
alternative to Sysvinit. It is used by many Linux distributions.
</para>
</listitem>
@ -558,7 +558,7 @@
<para>Sysvinit</para>
<para>This package provides the <application>init</application>
program, which is the parent of all other processes on the Linux
program, the parent of all the other processes on a running Linux
system. </para>
</listitem>
@ -566,20 +566,20 @@
<para>Tar</para>
<para>This package provides archiving and extraction capabilities
of virtually all packages used in LFS.</para>
of virtually all the packages used in LFS.</para>
</listitem>
<listitem>
<para>Tcl</para>
<para>This package contains the Tool Command Language used
in many test suites in LFS packages.</para>
in many test suites.</para>
</listitem>
<listitem>
<para>Texinfo</para>
<para>This package contains programs for reading, writing, and
<para>This package supplies programs for reading, writing, and
converting info pages. It is used in the installation
procedures of many LFS packages.</para>
</listitem>
@ -593,20 +593,20 @@
</listitem>
<listitem>
<para>Wheel</para>
<para>Vim</para>
<para>This package contains a Python module that is the
reference implementation of the Python wheel packaging standard.
</para>
<para>This package provides an editor. It was chosen because of its
compatibility with the classic vi editor and its huge number of powerful
capabilities. An editor is a very personal choice for
many users. Any other editor can be substituted, if you wish.</para>
</listitem>
<listitem>
<para>Vim</para>
<para>Wheel</para>
<para>This package contains an editor. It was chosen because of its
compatibility with the classic vi editor and its huge number of powerful
capabilities. An editor is a very personal choice for
many users and any other editor could be substituted if desired.</para>
<para>This package supplies a Python module that is the
reference implementation of the Python wheel packaging standard.
</para>
</listitem>
<listitem>
@ -633,7 +633,7 @@
<listitem>
<para>Zstd</para>
<para>This package contains compression and decompression routines
<para>This package supplies compression and decompression routines
used by some programs. It provides high compression ratios and a very
wide range of compression / speed trade-offs.</para>
</listitem>