Files
lfs/chapter01/how.xml
Xi Ruoyao 5ec6ec66b0 reword for the "rolling release" warning
The original warning is inaccurate/misleading in many aspects.

The critical thing is GCC version.  There's nothing to do with the
OpenSSL version (as nothing in ch5 or 6 ever uses OpenSSL).  There's
also nothing to do with the kernel "major" version as the "major"
version is just an arbitary choice to make the minor version not greater
than 19 by Linus.  It does not imply any aspect of the ABI, unlike the
"major" version in a SONAME or something.  The inablility to build Glibc
with Linux 7.0 API headers is simply a coincidence.  If another API
header change happens in Linux 7.6, it may break Glibc build as well.

And I cannot see how the Linux API header version of the host distro can
ever affect LFS.  LFS builds ch05 Glibc with its own Linux API header
installed just before Glibc, not the installation from the host distro.
So Glibc should just build fine with the 6.19 API header just installed
into $LFS/usr/include.  I know it would fail to build with Linux 7.0 API
headers but why it can ever find one - if it really finds the host
distro's API header instead of the one in $LFS/usr/include we have a
serious bug and it will have to be fixed instead of papered over by
limiting the host distro.

I also know the req test will fail if the host distro has Linux 7.0 but
I've no idea if the test failure is really related to the "massive
breakage of rseq" (I assume it refers to the jemalloc breakage?  But
AFAIK nothing in LFS uses jemalloc).  And the glibc upstream has just
fixed the test file simply.  We always treat test-file-only fixes as
"known failures" instead of "bugs requiring a fix" unless it aborts the
entire test suite too early.  Add a note in the glibc page to note there
can be additional failures with Linux >= the version we use for LFS.

And there's also nothing to do with the "rolling release."  For example,
you cannot build LFS 12.0 on LFS 12.4 because ch06 bash uses the host
compiler to build some code generators, and those generators are not
compatible with C23 (the default of GCC 15.2 shipped by LFS 12.4).  LFS
12.4 is definitely not a rolling release...

A rolling release just catches the breakage earlier and we shouldn't
blame it to do so.  IMO we should avoid the unfair accusion on rolling
distros as the same unfair accusion is often towards LFS (notably the
way we develop BLFS is very similar to a rolling release distro).

In the hostreqs page we already states building with a GCC newer than
the version specified for LFS in the book is "not tested and not
recommended."  I don't know why people must ignore it (AFAIU "not
recommended" in LFS means "not supported; don't report any bug" already:
for example those "recommended" dependencies in BLFS).  Make it more
explicit with assertive language and <warning>.
2026-05-06 13:14:54 +08:00

84 lines
3.9 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-intro-how">
<?dbhtml filename="how.html"?>
<title>How to Build an LFS System</title>
<para>The LFS system will be built by using an already installed
Linux distribution (such as Debian, OpenMandriva, Fedora, or openSUSE). This
existing Linux system (the host) will be used as a starting point to
provide necessary programs, including a compiler, linker, and shell,
to build the new system. Select the <quote>development</quote> option
during the distribution installation to include these
tools.</para>
<note><para>There are many ways to install a Linux distribution and
the defaults are usually not optimal for building an LFS system.
For suggestions on setting up a commercial distribution see:
<ulink url="&lfs-root;hints/downloads/files/partitioning-for-lfs.txt"/>.</para></note>
<para>As an alternative to installing a separate distribution on your
machine, you may wish to use a LiveCD from a commercial distribution.</para>
<note><para>The host distro must satisfy
<xref linkend='ch-partitioning-hostreqs'/>.</para></note>
<!--
<note>
<para>The LFS LiveCD might not work on newer hardware configurations,
failing to boot or failing to detect some devices such as some SATA hard
drives.</para>
</note> -->
<para><xref linkend="chapter-partitioning"/> of this book describes how
to create a new Linux native partition and file system,
where the new LFS system will be compiled and installed. <xref
linkend="chapter-getting-materials"/> explains which packages and
patches must be downloaded to build an LFS system, and how to store
them on the new file system. <xref linkend="chapter-final-preps"/>
discusses the setup of an appropriate working environment. Please read
<xref linkend="chapter-final-preps"/> carefully as it explains several
important issues you should be aware of before you begin to
work your way through <xref linkend="chapter-cross-tools"/> and beyond.</para>
<para><xref linkend="chapter-cross-tools"/> explains the installation of
the initial tool chain, (binutils, gcc, and glibc) using cross-compilation
techniques to isolate the new tools from the host system.</para>
<para><xref linkend="chapter-temporary-tools"/> shows you how to
cross-compile basic utilities using the just built cross-toolchain.</para>
<para><xref linkend="chapter-chroot-temporary-tools"/> then enters a
"chroot" environment, where we use the new tools to build all
the rest of the tools needed to create the LFS system.</para>
<para>This effort to isolate the new system from the host distribution may
seem excessive. A full technical explanation as to why this is done is
provided in <xref linkend="ch-tools-toolchaintechnotes"/>.</para>
<para>In <xref linkend="chapter-building-system"/> the
full-blown LFS system is built. Another advantage provided by the chroot
environment is that it allows you to continue using the host system
while LFS is being built. While waiting for package compilations to
complete, you can continue using your computer as usual.</para>
<para>To finish the installation, the basic system configuration is set up in
<xref linkend="chapter-config"/>, and the kernel and boot loader are created
in <xref linkend="chapter-bootable"/>. <xref linkend="chapter-finalizing"/>
contains information on continuing the LFS experience beyond this book.
After the steps in this chapter have been implemented, the computer is
ready to boot into the new LFS system.</para>
<para>This is the process in a nutshell. Detailed information on each
step is presented in the following chapters.
Items that seem complicated now will be clarified, and everything will
fall into place as you commence your LFS adventure.</para>
</sect1>