diff --git a/INSTALL b/INSTALL
index 034ce530d..ef0b94e80 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,7 +1,7 @@
LFS Book Conversion Tools Installation Instructions
-After downloading the SVN source, there are some things that need to be set up
-on your computer if you want to convert the XML source into something easier to
+After downloading the XML source, there are some things that need to be set up
+on your computer if you want to convert the source into something easier to
read (e.g. HTML, TXT, or PDF). If you are interested in this, then keep
reading. If you are only interested in editing the XML source for re-
submission to the lfs-book or lfs-dev mailing lists, then you do not need this
diff --git a/Makefile b/Makefile
index e6654318a..b1a09d470 100644
--- a/Makefile
+++ b/Makefile
@@ -131,7 +131,7 @@ validate: tmpdir version
@echo "Validating the book..."
$(Q)xmllint --nonet \
--encode UTF-8 \
- --postvalid \
+ --postvalid --valid \
--output $(RENDERTMP)/lfs-full.xml \
$(RENDERTMP)/lfs-html2.xml
diff --git a/appendices/acknowledgments.xml b/appendices/acknowledgments.xml
index 3d3f8bb69..02d410dad 100644
--- a/appendices/acknowledgments.xml
+++ b/appendices/acknowledgments.xml
@@ -363,6 +363,12 @@
Backend-Scripts Maintainer
+
+ Anderson
+ Lizardo <dj@lucasit.com> – LFS
+ Technical Writer
+
+
Randy
McMurchy <randy@linuxfromscratch.org> – BLFS
diff --git a/appendices/dependencies.xml b/appendices/dependencies.xml
index 75d8ae6bb..5d8390ecf 100644
--- a/appendices/dependencies.xml
+++ b/appendices/dependencies.xml
@@ -44,7 +44,7 @@
&dependencies;
- Attr, Bash, Binutils, Coreutils, GCC, Gettext, Grep, M4, Make,
+ Bash, Binutils, Coreutils, GCC, Gettext, Grep, M4, Make,
Perl, Sed, and Texinfo
@@ -52,7 +52,7 @@
&runtime;
- Attr and Glibc
+ Glibc
@@ -1371,7 +1371,7 @@
-
+
&runtime;
@@ -2214,6 +2214,45 @@
+
+ Mpdecimal
+
+
+ &dependencies;
+
+ Bash, Binutils, Coreutils, Diffutils, Gawk, GCC, Glibc, Grep,
+ Make, and Sed
+
+
+
+
+ &runtime;
+
+ GCC and Glibc
+
+
+
+
+ &testsuites;
+
+ None
+
+
+
+
+ &before;
+
+ Python
+
+
+
+
+ &external;
+
+ None
+
+
+
MPC
@@ -2583,8 +2622,7 @@
&dependencies;
- Bash, Binutils, Coreutils, Gawk, GCC, Glibc, Grep, Make,
- Sed, and Sqlite
+ Binutils, GCC, Glibc, Meson, Ninja, and Python
@@ -2711,16 +2749,16 @@
&dependencies;Bash, Binutils, Coreutils, Expat, GCC, Gdbm, Gettext, Glibc,
- Grep, Libffi, Libxcrypt, Make, Ncurses, OpenSSL, Pkgconf, Sed,
- Util-linux, and Zstd
+ Grep, Libffi, Libxcrypt, Make, Mpdecimal, Ncurses, OpenSSL,
+ Pkgconf, Sed, Util-linux, and Zlib
&runtime;
- Bzip2, Expat, Gdbm, Glibc, Libffi, Libxcrypt, Ncurses,
- OpenSSL, and Zlib
+ Bzip2, Expat, Gdbm, Glibc, Libffi, Libxcrypt, Mpdecimal,
+ Ncurses, OpenSSL, and Zlib
@@ -2743,8 +2781,7 @@
&bdb;,
- libnsl,
- SQLite, and
+ libnsl, and
Tk
@@ -2910,12 +2947,12 @@
- Pcre2
+ Sqlite&dependencies;
- Bash, Binutils, GCC, Glibc, Gzip, Make, Ncurses, and Readline
+ Bash, Binutils, GCC, Glibc, Gzip, Make, Ncurses, Readline, and Zlib
@@ -3422,7 +3459,7 @@
-
+
&runtime;
@@ -3529,7 +3566,7 @@
&before;
- File, Kmod, Libelf, Perl, and Util-linux
+ File, Kmod, Libelf, Perl, Python, and Util-linux
diff --git a/chapter01/changelog.xml b/chapter01/changelog.xml
index 1155bcb9d..e73d5dba9 100644
--- a/chapter01/changelog.xml
+++ b/chapter01/changelog.xml
@@ -40,6 +40,528 @@
appropriate for the entry or if needed the entire day's listitem.
-->
+
+ 2026-08-15
+
+
+ [bdubbs] - Update to expat-2.8.3 (Security Update). Fixes
+ #5996.
+
+
+ [bdubbs] - Update to iana-etc-20260805. Addresses
+ #5006.
+
+
+ [bdubbs] - Update to libffi-3.8.0. Fixes
+ #5993.
+
+
+ [bdubbs] - Update to linux-7.1.8. Fixes
+ #5997.
+
+
+ [bdubbs] - Update to meson-1.12.0. Fixes
+ #5998.
+
+
+ [bdubbs] - Update to procps-ng-4.0.7. Fixes
+ #6000.
+
+
+ [bdubbs] - Update to setuptools-84.0.0 (Python module). Fixes
+ #5994.
+
+
+ [bdubbs] - Update to shadow-4.20.2. Fixes
+ #5995.
+
+
+ [bdubbs] - Update to vim-9.2.0954. Addresses
+ #4500.
+
+
+ [bdubbs] - Update to wheel-0.48.0 (Python module). Fixes
+ #5999.
+
+
+
+
+
+ 2026-08-07
+
+
+ [bdubbs] - Update to flit_core-4.0.2 (Python module). Fixes
+ #5989.
+
+
+ [bdubbs] - Update to gcc-16.2.0. Fixes
+ #5992.
+
+
+ [bdubbs] - Update to linux-7.1.7. Fixes
+ #5988.
+
+
+ [bdubbs] - Update to packaging-26.3 (Python module). Fixes
+ #5990.
+
+
+ [bdubbs] - Update to pkgconf-3.0.5. Fixes
+ #5987.
+
+
+ [bdubbs] - Update to Python-3.14.7 (Security Update). Fixes
+ #5991.
+
+
+
+
+
+ 2026-08-01
+
+
+ [bdubbs] - Update to shadow-4.20.0. Fixes
+ #5986.
+
+
+ [bdubbs] - Update to vim-9.2.0858 (Security Update). Fixes
+ #5982.
+
+
+ [bdubbs] - Update to systemd-261.2. Fixes
+ #5981.
+
+
+ [bdubbs] - Update to sqlite-3.53.4. Fixes
+ #5984.
+
+
+ [bdubbs] - Update to pkgconf-3.0.4. Fixes
+ #5977.
+
+
+ [bdubbs] - Update to perl-5.44.0. Fixes
+ #5980.
+
+
+ [bdubbs] - Update to linux-7.1.5. Fixes
+ #5979.
+
+
+ [bdubbs] - Update to libtool-2.6.2. Fixes
+ #5978.
+
+
+ [bdubbs] - Update to iana-etc-20260723. Addresses
+ #5006.
+
+
+ [bdubbs] - Update to glibc-2.44 (Security Update). Fixes
+ #5983.
+
+
+ [bdubbs] - Update to binutils-2.47. Fixes
+ #5985.
+
+
+
+
+
+ 2026-07-15
+
+
+ [bdubbs] - Add mpdecimal-4.0.1. Fixes
+ #5963.
+
+
+ [bdubbs] - Update to tzdata-2026c. Fixes
+ #5971.
+
+
+ [bdubbs] - Update to setuptools-83.0.0. Fixes
+ #5969.
+
+
+ [bdubbs] - Update to pkgconf-3.0.2. Fixes
+ #5962.
+
+
+ [bdubbs] - Update to meson-1.11.2. Fixes
+ #5975.
+
+
+ [bdubbs] - Update to libffi-3.7.1. Fixes
+ #5970.
+
+
+ [bdubbs] - Update to linux-7.1.3. Fixes
+ #5968.
+
+
+ [bdubbs] - Update to gawk-5.4.1. Fixes
+ #5973.
+
+
+ [bdubbs] - Update to findutils-4.11.0. Fixes
+ #5974.
+
+
+
+
+
+ 2026-07-01
+
+
+ [bdubbs] - Add tar-1.35-acl_fix-1.patch. Addresses issue
+ arising from acl-2.4.0.
+
+
+ [bdubbs] - Add Python3-3.14.6 consolidated fixes (Security patch). Fixes
+ #5961.
+
+
+ [bdubbs] - Update to attr-2.6.0 (Security Update). Fixes
+ #5967.
+
+
+ [bdubbs] - Update to acl-2.4.0 (Security Update). Fixes
+ #5966.
+
+
+ [bdubbs] - Update to expat-2.8.2 (Security Update). Fixes
+ #5964.
+
+
+ [bdubbs] - Update to iana-etc-20260617. Addresses
+ #5006.
+
+
+ [bdubbs] - Update to iproute2-7.1.0. Fixes
+ #5954.
+
+
+ [bdubbs] - Update to libffi-3.6.0. Fixes
+ #5958.
+
+
+ [bdubbs] - Update to linux-7.1.1. Fixes
+ #5953.
+
+
+ [bdubbs] - Update to sqlite-autoconf-3.53.3. Fixes
+ #5965.
+
+
+ [bdubbs] - Update to systemd-261. Fixes
+ #5959.
+
+
+ [bdubbs] - Update to util-linux-2.42.2 (Security Update). Fixes
+ #5955.
+
+
+ [bdubbs] - Update to vim-9.2.0752 (Security Update). Fixes
+ #5956.
+
+
+
+
+
+ 2026-06-15
+
+
+ [bdubbs] - Update to binutils-2.46.1. Fixes
+ #5950.
+
+
+ [bdubbs] - Update to file-5.48. Fixes
+ #5949.
+
+
+ [bdubbs] - Update to less-704. Fixes
+ #5948.
+
+
+ [bdubbs] - Update to linux-7.0.12. Fixes
+ #5945.
+
+
+ [bdubbs] - Update to openssl-4.0.1. Fixes
+ #5951.
+
+
+ [bdubbs] - Update to Python3-3.14.6. Fixes
+ #5952.
+
+
+ [bdubbs] - Update to sqlite-autoconf-3.53.2. Fixes
+ #5946.
+
+
+ [bdubbs] - Update to vim-9.2.0640 (Security Update). Fixes
+ #5947.
+
+
+
+
+
+ 2026-06-01
+
+
+ [bdubbs] - Update to systemd-260.2. Fixes
+ #5944.
+
+
+ [bdubbs] - Update to kbd-2.10.0. Fixes
+ #5943.
+
+
+ [bdubbs] - Update to util-linux-2.42.1. Fixes
+ #5939.
+
+
+ [bdubbs] - Update to less-702. Fixes
+ #5941.
+
+
+ [bdubbs] - Update to vim-9.2.0567 (Security Update). Fixes
+ #5940.
+
+
+ [bdubbs] - Update to iana-etc-20260529. Addresses
+ #5006.
+
+
+
+
+
+ 2026-05-24
+
+
+ [bdubbs] - Update to linux-7.0.10 (Security Update). Fixes
+ #5942.
+
+
+
+
+
+ 2026-05-20
+
+
+ [bdubbs] - Update to linux-7.0.9 (Security Update). Fixes
+ #5928.
+
+
+
+
+
+ 2026-05-18
+
+
+ [xry111] - Fix CVE-2026-4046, CVE-2026-5450, and
+ CVE-2026-5928 in glibc (Security Update). Fixes
+ #5930.
+
+
+
+
+
+ 2026-05-14
+
+
+ [renodr] - Update to expat-2.8.1 (Security Update). Fixes
+ #5933.
+
+
+ [renodr] - Update to tcl-8.6.18. Fixes
+ #5935.
+
+
+ [renodr] - Update to vim-9.2.0480 (Security Update). Fixes
+ #5928.
+
+
+ [renodr] - Update to linux-7.0.7 (Security Update). Fixes
+ #5932.
+
+
+ [renodr] - Fix CVE-2026-7210 and CVE-2026-8328 in Python
+ (Security Update). Fixes
+ #5934.
+
+
+
+
+
+ 2026-05-11
+
+
+ [bdubbs] - Update to vim-9.2.0461 (Security Update). Fixes
+ #5938.
+
+
+ [bdubbs] - Update to sqlite-3.53.1. Fixes
+ #5929.
+
+
+ [bdubbs] - Update to Python-3.14.5. Fixes
+ #5931.
+
+
+ [bdubbs] - Update to openssl-4.0.0. Fixes
+ #5912.
+
+
+ [bdubbs] - Update to linux-7.0.5. Fixes
+ #5917.
+
+
+ [bdubbs] - Update to iana-etc-20260504. Addresses
+ #5006.
+
+
+ [bdubbs] - Add Python-3.14.5 linux7 build patch. Addresses
+ #5931.
+
+
+ [bdubbs] - Add glibc linux7 fixes patch.
+
+
+ [bdubbs] - Add systemd openssl4 build patch. Addresses
+ #5912.
+
+
+
+
+
+ 2026-05-08
+
+
+ [bdubbs] - Update to gcc-16.1.0. Fixes
+ #5927.
+
+
+
+
+
+ 2026-05-01
+
+
+ [bdubbs] - Update to wheel-0.47.0 (Python module). Fixes
+ #5922.
+
+
+ [bdubbs] - Update to tzdata2026b. Fixes
+ #5923.
+
+
+ [bdubbs] - Update to sed-4.10. Fixes
+ #5921.
+
+
+ [bdubbs] - Update to packaging-26.2 (Python module). Fixes
+ #5913.
+
+
+ [bdubbs] - Update to mpc-1.4.1. Fixes
+ #5916.
+
+
+ [bdubbs] - Update to meson-1.11.1. Fixes
+ #5919.
+
+
+ [bdubbs] - Update to vim-9.2.0421 (Security Update). Fixes
+ #5914.
+
+
+ [bdubbs] - Update to man-pages-6.18. Fixes
+ #5920.
+
+
+ [bdubbs] - Update to iproute2-7.0.0. Fixes
+ #5925.
+
+
+ [bdubbs] - Update to inetutils-2.8. Fixes
+ #5926.
+
+
+ [bdubbs] - Update to expat-2.8.0 (Security Update). Fixes
+ #5924.
+
+
+ [bdubbs] - Update to elfutils-0.195 (libelf). Fixes
+ #5915.
+
+
+ [bdubbs] - Update to coreutils-9.11. Fixes
+ #5918.
+
+
+ [bdubbs] - Update to iana-etc-20260424. Addresses
+ #5006.
+
+
+
+
+
+ 2026-04-15
+
+
+ [jlocash] - Update the Python-3.14.4 patch for 2 more issues
+ (Security update). Addresses
+ #5910.
+
+
+
+
+
+ 2026-04-15
+
+
+ [bdubbs] - Update to meson-1.11.0. Fixes
+ #5911.
+
+
+ [bdubbs] - Move intltool and XML-Parser to BLFS. Fixes
+ #4964.
+
+
+ [bdubbs] - Update to vim-9.2.0340 (Security Update). Fixes
+ #5904.
+
+
+ [bdubbs] - Update to util-linux-2.42 (Security Update). Fixes
+ #5900.
+
+
+ [bdubbs] - Update to sqlite-3.53.0. Fixes
+ #5909.
+
+
+ [bdubbs] - Update to Python3-3.14.4 (Security Update). Fixes
+ #5907.
+
+
+ [bdubbs] - Update to openssl-3.6.2 (Security Update). Fixes
+ #5906.
+
+
+ [bdubbs] - Update to linux-6.19.12. Fixes
+ #5903.
+
+
+ [bdubbs] - Update to libcap-2.78 (Security Update). Fixes
+ #5905.
+
+
+ [bdubbs] - Update to iana-etc-20260409. Addresses
+ #5006.
+
+
+
+
2026-04-04
@@ -62,7 +584,7 @@
#5892.
- [bdubbs] - Update to vim-9.1.0272. Addresses
+ [bdubbs] - Update to vim-9.2.0272. Addresses
#4500.
diff --git a/chapter01/how.xml b/chapter01/how.xml
index 36dd88851..d67e819ab 100644
--- a/chapter01/how.xml
+++ b/chapter01/how.xml
@@ -26,6 +26,9 @@
As an alternative to installing a separate distribution on your
machine, you may wish to use a LiveCD from a commercial distribution.
+ The host distro must satisfy
+ .
+
-
-
+ Autoconf-&autoconf-version;
@@ -44,18 +44,18 @@
-
+
-
+
@@ -77,30 +77,30 @@
File-&file-version;
-
+
-
+
Gawk-&gawk-version;
-
+
-
+
@@ -122,9 +122,9 @@
Iana-Etc-&iana-etc-version;
-
+
@@ -134,33 +134,33 @@
-
+
-
+
-
-
-
+
-
+
@@ -179,9 +179,9 @@
-
+
@@ -200,12 +200,12 @@
-
-
+
@@ -215,24 +215,24 @@
Perl-&perl-version;
-
-
+
-
+
-
+
Setuptools-&setuptools-version;
@@ -254,9 +254,9 @@
-
+
Texinfo-&texinfo-version;
@@ -266,18 +266,18 @@
-
+
Vim-&vim-version;
-
- XML::Parser-&xml-parser-version;
+ Wheel-&wheel-version;
+
Xz-&xz-version;
@@ -300,13 +300,17 @@
Added:
-
- Python-3.14.3-security_fixes-1.patch
+
+ mpdecimal-4.0.1
+ tar-1.35-acl_fix-1.patch
+ Python-3.14.6-consolidated_fixes-1.patchRemoved:
+ XML-Parser (Moved to BLFS)
+ intltool (Moved to BLFS)
diff --git a/chapter02/creatingfilesystem.xml b/chapter02/creatingfilesystem.xml
index 71fc41f9d..e12bac4dc 100644
--- a/chapter02/creatingfilesystem.xml
+++ b/chapter02/creatingfilesystem.xml
@@ -64,8 +64,9 @@
Replace <xxx> with the name of the LFS
partition.
- If you are using an existing swap
- partition, there is no need to format it. If a new
+ If you are using an existing
+ swap partition, there is no
+ need to format it. If a new
swap partition was created,
it will need to be initialized with this command:
diff --git a/chapter02/creatingpartition.xml b/chapter02/creatingpartition.xml
index b58a27532..6b3c599b4 100644
--- a/chapter02/creatingpartition.xml
+++ b/chapter02/creatingpartition.xml
@@ -145,7 +145,7 @@
For Grub, the EFI System Partition should be located at
/boot/efi.
- A lot of UEFI systems have a Compatibility Support Mode (CSM) or
+ A lot of UEFI systems have a Compatibility Support Module (CSM) or
Legacy Boot option, allowing to boot with BIOS. It could be a good idea to
create a Grub BIOS partition if your system supports CSM in case UEFI
booting does not work as expected.
@@ -244,11 +244,11 @@
Both EFI and BIOS Boot partitions are present, although
- only one will be used. Which is used depends on the system BIOS.
+ only one will be used. Which is used depends on the system firmware.
If the system is old, it will not have UEFI capabilities at all.
- Some later systems can disable UEFI through the BIOS by disabling
+ Some later systems can disable UEFI through the firmware setup by disabling
"Secure Boot" and enabling "Legacy Support" or "CSM" (Compatibility
- Support Mode). If you know in advance which mode you will use,
+ Support Module). If you know in advance which mode you will use,
the other partition can be omitted.
@@ -261,7 +261,7 @@
- The swap partition must be formatted as swap.
+ The swap partition must be initialized.
diff --git a/chapter02/hostreqs.xml b/chapter02/hostreqs.xml
index 7036fc0a5..07c351dda 100644
--- a/chapter02/hostreqs.xml
+++ b/chapter02/hostreqs.xml
@@ -37,6 +37,33 @@
Earlier versions of the listed software packages may work, but have
not been tested.
+
+
+ Be aware that GCC newer than &gcc-version;
+ or Binutils newer than &binutils-version; are not tested.
+ A newer GCC is highly likely to break the build of this
+ LFS release. Do not report such a breakage to the LFS editors.
+ If your host distro has newer versions of these packages, you
+ have several options:
+
+
+ Use a newer release of the LFS book if one exists
+
+
+ Use an older host distro
+
+
+ Downgrade GCC if that is supported by the host distro
+
+
+ Use the latest LFS development book. Updates to the
+ latest version of packages in LFS are usually added within two
+ to four weeks after release.
+
+
+
+
+
@@ -46,7 +73,7 @@
Binutils-2.13.1 (Versions
- greater than &binutils-version; are not recommended as they have
+ greater than &binutils-version; may not work as they have
not been tested)
@@ -55,9 +82,12 @@
should be a link to bison or a small script that executes bison)
-
+
- Coreutils-8.1
+ GNU Coreutils-8.1 or
+ Uutils Coreutils-0.8
@@ -76,8 +106,8 @@
GCC-5.4 including the C++
- compiler, g++ (Versions greater than &gcc-version; are
- not recommended as they have not been tested). C and C++ standard
+ compiler, g++ (Versions greater than &gcc-version;
+ may not work as they have not been tested). C and C++ standard
libraries (with headers) must also be present so the C++ compiler can
build hosted programs
@@ -161,6 +191,13 @@
+
+ Additionally, if you need to create a new ESP (EFI System Partition,
+ read for details),
+ dosfstools is
+ needed.
+
+
Note that the symlinks mentioned above are required to build an LFS
system using the instructions contained within this book. Symlinks that
@@ -224,7 +261,11 @@ ver_kernel()
}
# Coreutils first because --version-sort needs Coreutils >= 7.0
-ver_check Coreutils sort 8.1 || bail "Coreutils too old, stop"
+if sort --version |& grep -q uutils; then
+ ver_check Coreutils sort 0.8 || bail "Uutils Coreutils too old, stop"
+else
+ ver_check Coreutils sort 8.1 || bail "GNU Coreutils too old, stop"
+fi
ver_check Bash bash 3.2
ver_check Binutils ld 2.13.1
ver_check Bison bison 2.7
diff --git a/chapter02/mounting.xml b/chapter02/mounting.xml
index 244a3196b..75abf70ef 100644
--- a/chapter02/mounting.xml
+++ b/chapter02/mounting.xml
@@ -58,6 +58,11 @@ chmod 755 $LFS
partition. If and/or are set,
the partition must be remounted.
+ If you have created and mounted more partitions for the LFS system
+ than the one mounted at $LFS,
+ now you should fix up their ownership and permission mode and check the
+ mount options for them as well.
+
The above instructions assume that you will not restart
your computer throughout the LFS process. If you shut down your system,
you will either need to remount the LFS partition each time you restart
diff --git a/chapter03/introduction.xml b/chapter03/introduction.xml
index 38513d758..ed2161d05 100644
--- a/chapter03/introduction.xml
+++ b/chapter03/introduction.xml
@@ -40,18 +40,22 @@
Listed on the next page are several important packages located at
- ftpmirror.gnu.org. The canonical location of the
- subject packages are ftp.gnu.org but due to
+ ftpmirror.gnu.org. The
+ canonical location of the subject packages are
+ ftp.gnu.org but due to
a long term distributed denial of services (DDOS) attack the site
administrator suggested the LFS editors to use
- ftpmirror.gnu.org instead. See
+ ftpmirror.gnu.org instead.
+ See
Slashdot News for details.
- The ftpmirror.gnu.org URL actually redirects to one of the
- mirrors of the ftp.gnu.org site. You may also select a
- mirror manually instead of using ftpmirror.gnu.org.
+ The ftpmirror.gnu.org URL
+ actually redirects to one of the mirrors of the
+ ftp.gnu.org site. You may
+ also select a mirror manually instead of using
+ ftpmirror.gnu.org.
A list of mirrors is located at
.
If you choose to use the wget list described below, that file also
diff --git a/chapter03/packages.xml b/chapter03/packages.xml
index 2d5349db5..a9b42037a 100644
--- a/chapter03/packages.xml
+++ b/chapter03/packages.xml
@@ -349,7 +349,7 @@
MD5 sum: &inetutils-md5;
-
+
IPRoute2 (&iproute2-version;) - &iproute2-size;:
@@ -581,6 +581,15 @@
+
+ mpdecimal (&mpdecimal-version;) - &mpdecimal-size;:
+
+ Home page:
+ Download:
+ MD5 sum: &mpdecimal-md5;
+
+
+
MPFR (&mpfr-version;) - &mpfr-size;:
@@ -748,12 +757,12 @@
Home page: Download: MD5 sum: &sqlite-doc-md5;
-
+
@@ -898,7 +907,7 @@
MD5 sum: &wheel-md5;
-
+
Xz Utils (&xz-version;) - &xz-size;:
diff --git a/chapter03/patches.xml b/chapter03/patches.xml
index c1bf76515..0977d259b 100644
--- a/chapter03/patches.xml
+++ b/chapter03/patches.xml
@@ -77,15 +77,13 @@
-->
-
Glibc FHS Patch - &glibc-fhs-patch-size;:
@@ -128,10 +126,10 @@
-->
- Python Security Fix Patch - &python-security-fixes-patch-size;:
+ Python Openssl4 Patch - &python-openssl4-fixes-patch-size;:
- Download:
- MD5 sum: &python-security-fixes-patch-md5;
+ Download:
+ MD5 sum: &python-openssl4-fixes-patch-md5;
@@ -144,13 +142,20 @@
+
+ Tar Upstream Patch - &tar-aclfix-patch-size;:
+
+ Download:
+ MD5 sum: &tar-aclfix-patch-md5;
+
+ The Glibc documentation recommends building Glibc
in a dedicated build directory:
@@ -194,7 +209,7 @@ cd build
some sanity checks:echo 'int main(){}' | $LFS_TGT-gcc -x c - -v -Wl,--verbose &> dummy.log
-readelf -l a.out | grep ': /lib'
+$LFS_TGT-readelf -l a.out | grep ': /lib'
There should be no errors,
and the output of the last command will be (allowing for
diff --git a/chapter05/libstdc++.xml b/chapter05/libstdc++.xml
index c7020290d..916dfcbce 100644
--- a/chapter05/libstdc++.xml
+++ b/chapter05/libstdc++.xml
@@ -63,6 +63,7 @@ cd build
../libstdc++-v3/configure \
--host=$LFS_TGT \
--build=$(../config.guess) \
+ CXX=$LFS_TGT-gcc \
--prefix=/usr \
--disable-multilib \
--disable-nls \
@@ -81,6 +82,23 @@ cd build
+
+ CXX=$LFS_TGT-gcc
+
+ Specifies to use $LFS_TGT-gcc to compile
+ the C++ code. The default, $LFS_TGT-g++,
+ would automatically specify linking against
+ libstdc++ when invoking
+ the linker, but in our case
+ libstdc++ is not
+ installed yet so some checks in the configure
+ script would misbehave with $LFS_TGT-g++. In a
+ normal build, this override is automatically passed to the
+ configure script from the top level directory.
+ Here we explicitly pass it.
+
+
+
--disable-libstdcxx-pch
diff --git a/chapter06/bash.xml b/chapter06/bash.xml
index cd29529fd..9fc9c4b92 100644
--- a/chapter06/bash.xml
+++ b/chapter06/bash.xml
@@ -48,7 +48,8 @@
./configure --prefix=/usr \
--build=$(sh support/config.guess) \
--host=$LFS_TGT \
- --without-bash-malloc
+ --without-bash-malloc \
+ --docdir=/usr/share/doc/bash-&bash-version;
The meaning of the configure options:
diff --git a/chapter06/coreutils.xml b/chapter06/coreutils.xml
index 9b246a5f4..0176d7dac 100644
--- a/chapter06/coreutils.xml
+++ b/chapter06/coreutils.xml
@@ -48,8 +48,7 @@
./configure --prefix=/usr \
--host=$LFS_TGT \
--build=$(build-aux/config.guess) \
- --enable-install-program=hostname \
- --enable-no-install-program=kill,uptime
+ --enable-install-program=hostname
The meaning of the configure options:
diff --git a/chapter06/gcc-pass2.xml b/chapter06/gcc-pass2.xml
index 89b2bc33e..0d579311a 100644
--- a/chapter06/gcc-pass2.xml
+++ b/chapter06/gcc-pass2.xml
@@ -63,12 +63,6 @@ mv -v mpc-&mpc-version; mpc
;;
esac
- Override the build rules of the libgcc and libstdc++ headers to
- allow building these libraries with POSIX threads support:
-
-sed '/thread_header =/s/@.*@/gthr-posix.h/' \
- -i libgcc/Makefile.in libstdc++-v3/include/Makefile.in
-
Create a separate build directory again:mkdir -v build
@@ -87,6 +81,7 @@ cd build
--with-build-sysroot=$LFS \
--enable-default-pie \
--enable-default-ssp \
+ --disable-fixincludes \
--disable-nls \
--disable-multilib \
--disable-libatomic \
@@ -96,11 +91,29 @@ cd build
--disable-libssp \
--disable-libvtv \
--enable-languages=c,c++ \
- LDFLAGS_FOR_TARGET=-L$PWD/$LFS_TGT/libgcc
+ CXX_FOR_TARGET="$LFS_TGT-gcc -nostdinc++" \
+ LDFLAGS_FOR_TARGET=-L$PWD/$LFS_TGT/libgcc \
+ target_configargs=gcc_cv_target_thread_file=posix
The meaning of the new configure options:
+
+ --target=$LFS_TGT
+
+ We are cross-compiling GCC, so it's impossible to build
+ target libraries (libgcc
+ and libstdc++) with the
+ GCC binaries compiled in this pass—those binaries won't run
+ on the host. The GCC build system will attempt to use the host's
+ C and C++ compilers as a workaround by default.
+ Building the GCC target libraries with a different
+ version of GCC is not supported, so using the host's compilers may cause
+ the build to fail. This parameter ensures the libraries are built by GCC
+ pass 1.
+
+
+
--with-build-sysroot=$LFS
@@ -115,18 +128,39 @@ cd build
- --target=$LFS_TGT
+ --disable-fixincludes
- We are cross-compiling GCC, so it's impossible to build
- target libraries (libgcc
- and libstdc++) with the
- GCC binaries compiled in this pass—those binaries won't run
- on the host. The GCC build system will attempt to use the host's
- C and C++ compilers as a workaround by default.
- Building the GCC target libraries with a different
- version of GCC is not supported, so using the host's compilers may cause
- the build to fail. This parameter ensures the libraries are built by GCC
- pass 1.
+ By default, during the installation of GCC some system
+ headers would be fixed to be used with GCC. This
+ is not necessary for a modern Linux system, and potentially
+ harmful if a package is reinstalled after installing GCC. This
+ switch prevents GCC from fixing the headers.
+
+
+
+
+ --disable-libsanitizer
+
+ Disable GCC sanitizer runtime libraries. They are not
+ needed for the temporary installation. In
+ it was implied by
+ --disable-libstdcxx, and now we can
+ explicitly pass it.
+
+
+
+
+ CXX="$LFS_TGT-gcc -nostdinc++"
+
+ Specifies to use $LFS_TGT-gcc to compile
+ the C++ code like and prevent
+ the compiler from using the headers from the previous libstdc++
+ installation. Mixing those headers and the C++ headers from the
+ current libstdc++ build can cause the
+ #include_next directives fail to find the C
+ headers. In a normal build, this override is automatically passed
+ to the configure script from the top level
+ directory. Here we explicitly pass it.
@@ -143,13 +177,13 @@ cd build
- --disable-libsanitizer
+ target_configargs=gcc_cv_target_thread_file=posix
- Disable GCC sanitizer runtime libraries. They are not
- needed for the temporary installation. In
- it was implied by
- --disable-libstdcxx, and now we can
- explicitly pass it.
+ Build the target libraries libgcc and libstdc++ with POSIX
+ thread support enabled. The default is following the
+ configuration of the compiler used for building the target library
+ (in this case, which was
+ configured with none thread support).
diff --git a/chapter06/m4.xml b/chapter06/m4.xml
index 902166ac0..7d7e074f3 100644
--- a/chapter06/m4.xml
+++ b/chapter06/m4.xml
@@ -43,6 +43,16 @@
Installation of M4
+
+ Ensure packages that use gnulib detect some newer functions
+ found in glibc-2.44.
+
+
+cat > $LFS/usr/share/config.site << EOF
+ac_cv_func_posix_spawn_file_actions_addchdir=yes
+ac_cv_func_posix_spawn_file_actions_addfchdir=yes
+EOF
+
Prepare M4 for compilation:./configure --prefix=/usr \
diff --git a/chapter07/chapter07.xml b/chapter07/chapter07.xml
index ce72094c1..94a5bad31 100644
--- a/chapter07/chapter07.xml
+++ b/chapter07/chapter07.xml
@@ -20,6 +20,8 @@
+
+
diff --git a/chapter07/mpdecimal.xml b/chapter07/mpdecimal.xml
new file mode 100644
index 000000000..7ad3c1bd6
--- /dev/null
+++ b/chapter07/mpdecimal.xml
@@ -0,0 +1,68 @@
+
+
+ %general-entities;
+]>
+
+
+
+
+
+ mpdecimal
+ &mpdecimal-version;
+ &mpdecimal-url;
+
+
+ mpdecimal-&mpdecimal-version;
+
+
+ mpdecimal
+
+
+
+
+
+
+
+
+ &buildtime;
+ &diskspace;
+
+
+ &mpdecimal-tmp-sbu;
+ &mpdecimal-tmp-du;
+
+
+
+
+
+
+ Installation of mpdecimal
+
+ Prepare mpdecimal for compilation:
+
+./configure --prefix=/usr \
+ --disable-static \
+ --docdir=/usr/share/doc/mpdecimal-&mpdecimal-version;
+
+ Compile the package:
+
+make
+
+ Install the package:
+
+make install
+
+
+
+
+
+
+ Details on this package are located in
+
+
+
+
diff --git a/chapter07/zlib.xml b/chapter07/zlib.xml
new file mode 100644
index 000000000..74d3aecd1
--- /dev/null
+++ b/chapter07/zlib.xml
@@ -0,0 +1,71 @@
+
+
+ %general-entities;
+]>
+
+
+
+
+
+ zlib
+ &zlib-version;
+ &zlib-url;
+
+
+ Zlib-&zlib-version;
+
+
+ Zlib
+
+
+
+
+
+
+
+
+ &buildtime;
+ &diskspace;
+
+
+ &zlib-tmp-sbu;
+ &zlib-tmp-du;
+
+
+
+
+
+
+ Installation of Zlib
+
+ Prepare Zlib for compilation:
+
+./configure --prefix=/usr
+
+ Compile the package:
+
+make
+
+ Install the package:
+
+make install
+
+ Remove a useless static library:
+
+rm -fv /usr/lib/libz.a
+
+
+
+
+
+
+ Details on this package are located in
+
+
+
+
+
diff --git a/chapter08/acl.xml b/chapter08/acl.xml
index f122deda1..fef6ba42c 100644
--- a/chapter08/acl.xml
+++ b/chapter08/acl.xml
@@ -57,7 +57,7 @@
make check
- One test named test/cp.test is known to
+ One test named test/cp.run is known to
fail because Coreutils is not built with
the Acl support yet.
diff --git a/chapter08/binutils.xml b/chapter08/binutils.xml
index 9ae2fde42..ce28c1e1c 100644
--- a/chapter08/binutils.xml
+++ b/chapter08/binutils.xml
@@ -58,6 +58,7 @@ cd build
--enable-64-bit-bfd \
--enable-new-dtags \
--with-system-zlib \
+ --with-lib-path=/usr/lib \
--enable-default-hash-style=gnu
@@ -74,7 +75,7 @@ cd build
--enable-plugins
- Enables plugin support for the linker.
+ Enable plugin support for the linker.
@@ -86,6 +87,22 @@ cd build
+
+ --with-lib-path=/usr/lib
+
+ Specify the path for the linker (ld)
+ to search. By default it searches several directories that do not exist
+ on LFS besides /usr/lib,
+ especially the /usr/lib64
+ directory that we deliberately avoid. In the case where
+ /usr/lib64 has been mistakenly
+ created and populated with some libraries, making
+ ld not search the path can highlight the issue
+ earlier with a failure to find those libraries at build time
+ instead of run time.
+
+
+
Compile the package:
diff --git a/chapter08/chapter08.xml b/chapter08/chapter08.xml
index 6d3207021..656d88885 100644
--- a/chapter08/chapter08.xml
+++ b/chapter08/chapter08.xml
@@ -31,6 +31,7 @@
+
@@ -41,6 +42,7 @@
+
@@ -56,25 +58,24 @@
-
-
+
+
+
-
-
diff --git a/chapter08/findutils.xml b/chapter08/findutils.xml
index 5671f6183..c4a525277 100644
--- a/chapter08/findutils.xml
+++ b/chapter08/findutils.xml
@@ -83,7 +83,12 @@ esac
To test the results, issue:chown -R tester .
-su tester -c "PATH=$PATH make check"
+su tester -c "PATH=$PATH make check -k"
+
+
+
+ One test named test-regex-el is known to fail.
+ Install the package:
diff --git a/chapter08/gcc.xml b/chapter08/gcc.xml
index 71520b00b..3c4f38193 100644
--- a/chapter08/gcc.xml
+++ b/chapter08/gcc.xml
@@ -41,10 +41,6 @@
Installation of GCC
- First, make a fix required by glibc-2.43 and later:
-
- sed -i 's/char [*]q/const &/' libgomp/affinity-fmt.c
-
If building on x86_64, change the default directory name for 64-bit
libraries to lib:
@@ -76,18 +72,20 @@ cd build
We only enable C and C++ here to save the build time as no
packages in LFS and BLFS require GCC to compile other languages. Append
- cobol for Cobol (note that it will cause GCC fail
- to build on a 32-bit LFS system),
+ algol68 for Algol 68,
fortran for Fortran,
go for Go,
objc for Objective C,
obj-c++ for Objective C++, and/or
m2 for Modula 2 into the value of
--enable-languages option if you want to compile
- programs in one or more of those languages with GCC. GCC also supports
- Ada and D, but the code to support Ada or D is written in Ada or D
- itself, so the support can only be built with an existing Ada or D
- compiler installation and we cannot enable the support here.
+ programs in one or more of those languages with GCC.
+
+ GCC also supports the Ada, COBOL, and D languages. But that would
+ require some dependencies which are not available in the base LFS system
+ and would exceed the scope of this book. Read
+ the upstream
+ documentation for details.The meaning of the new configure parameters:
@@ -117,17 +115,6 @@ cd build
-
- --disable-fixincludes
-
- By default, during the installation of GCC some system
- headers would be fixed to be used with GCC. This
- is not necessary for a modern Linux system, and potentially
- harmful if a package is reinstalled after installing GCC. This
- switch prevents GCC from fixing the headers.
-
-
-
--with-system-zlib
@@ -170,6 +157,7 @@ cd build
Compile the package:
+
make
@@ -191,10 +179,6 @@ cd build
ulimit -s -H unlimited
- Now remove several known test failures:
-
-sed -e '/cpython/d' -i ../gcc/testsuite/gcc.dg/plugin/plugin.exp
-
Test the results as a non-privileged user, but do not stop at errors:chown -R tester .
@@ -202,7 +186,7 @@ su tester -c "PATH=$PATH make -k check"To extract a summary of the test suite results, run:
-../contrib/test_summary
+../contrib/test_summary -tTo filter out only the summaries, pipe the output through
grep -A7 Summ.
@@ -211,23 +195,37 @@ su tester -c "PATH=$PATH make -k check"
url="&test-results;"/> and
.
-
- Four tests related to pr90579.c are known
- to fail.
-
-
- Eight tests related to builtin-math-6.c are
- known to fail.
-
- Five tests related to analyzer/strchr-1.c are known
- to fail.
-
-
- Four tests in libstdc++, 17_intro/badnames.cc,
- 17_intro/names.cc,
- 17_intro/names_fortify.cc, and
- experimental/names.cc, are known to fail due to changes
- with glibc-2.43.
+ In the gcc.target/i386
+ tests, the tests named
+ auto-init-padding-9.c,
+ builtin-memmove-*.c,
+ mem{cpy,set}-pr120683-*.c,
+ pr111657-1.c,
+ pr115102.c,
+ pr116896.c,
+ pr120881-2a.c, and
+ pr122343-4a.c are known to fail.
+ The test named shift-gf2p8affine-2.c is known
+ to fail if the processor does not support AVX512.
+
+ In the g++.target/i386
+ tests, the tests named
+ memset-pr108585-1{a,b}.C,
+ mv{,c}-symbols*.C,
+ pr112824-2.C, and
+ pr116896-1.C are known to fail.
+
+ Additionally, the tests
+ gcc.dg/ipa/pr122458.c,
+ gcc.dg/lto/toplevel-*-asm-*, and
+ gcc.dg/plugin/crash-test-nested-*.c are known to
+ fail. The test g++.dg/gomp/deprecate-1.C is known
+ to fail sometimes.
+
+ The LFS editors have investigated those failures and confirmed
+ none indicates a critical issue. Most of them are because the test case
+ author did not anticipate --enable-default-ssp or
+ --enable-default-pie.A few unexpected failures cannot always be avoided. In some cases
test failures depend on the specific hardware of the system.
+ Fix an issue causing the tanh(3) function to crash
+ on some old x86_64 processors, and to fix installing with multiple
+ make jobs:
+
+patch -Np1 -i ../&glibc-upstream-patch;
+
The Glibc documentation recommends building Glibc
in a dedicated build directory:mkdir -v build
cd build
-
+
Prepare Glibc for compilation:../configure --prefix=/usr \
@@ -206,7 +199,8 @@ esac
model (for example
elf/tst-cpu-features-cpuinfo) or host kernel
version (for example
- stdlib/tst-arc4random-thread).
+ stdlib/tst-arc4random-thread), or with a
+ host kernel newer than &linux-version;.
diff --git a/chapter08/gmp.xml b/chapter08/gmp.xml
index 19eefce0a..3ad37ead4 100644
--- a/chapter08/gmp.xml
+++ b/chapter08/gmp.xml
@@ -105,7 +105,7 @@ make html
Test the results:
-make check 2>&1 | tee gmp-check-log
+make checkThe code in gmp is highly optimized for the processor where
it is built. Occasionally, the code that detects the processor misidentifies
@@ -120,7 +120,7 @@ make html
Ensure that at least 199 tests in the test suite passed.
Check the results by issuing the following command:
-awk '/# PASS:/{total+=$3} ; END{print total}' gmp-check-log
+cat $(find -name '*.log') | grep -c ^PASSInstall the package and its documentation:
diff --git a/chapter08/groff.xml b/chapter08/groff.xml
index f7d6442df..3c1a921f9 100644
--- a/chapter08/groff.xml
+++ b/chapter08/groff.xml
@@ -53,9 +53,12 @@
PAGE=<paper_size> ./configure --prefix=/usr
+
Build the package:
-make
+make -j1To test the results, issue:
diff --git a/chapter08/grub.xml b/chapter08/grub.xml
index 5d026bed4..476ce3faf 100644
--- a/chapter08/grub.xml
+++ b/chapter08/grub.xml
@@ -115,15 +115,11 @@
If you want to boot with 64-bit UEFI, you should build support for
it.
- First, if you built GRUB from any of the sections above,
+ First, if you built GRUB from the section above,
clean the source tree:make clean
- Fix a bug introduced in grub-2.14:
-
-sed 's/--image-base/--nonexist-linker-option/' -i configure
-
Now configure GRUB for 64-bit UEFI support:./configure --prefix=/usr \
@@ -177,10 +173,6 @@
make clean
- Fix a bug introduced in grub-2.14:
-
-sed 's/--image-base/--nonexist-linker-option/' -i configure
-
Now configure GRUB for 32-bit UEFI support:./configure --prefix=/usr \
diff --git a/chapter08/inetutils.xml b/chapter08/inetutils.xml
index 933b19490..6cbbb7560 100644
--- a/chapter08/inetutils.xml
+++ b/chapter08/inetutils.xml
@@ -110,18 +110,6 @@
make check
-
- One test named libls.sh is known to
- fail sometimes.
-
Install the package:make install
diff --git a/chapter08/libelf.xml b/chapter08/libelf.xml
index 345d03917..8f66b35e5 100644
--- a/chapter08/libelf.xml
+++ b/chapter08/libelf.xml
@@ -54,17 +54,16 @@
make -C lib
make -C libelf
-
+ as well as the unit tests.
+
Install only Libelf:make -C libelf install
diff --git a/chapter08/mpdecimal.xml b/chapter08/mpdecimal.xml
new file mode 100644
index 000000000..6d67de3c0
--- /dev/null
+++ b/chapter08/mpdecimal.xml
@@ -0,0 +1,109 @@
+
+
+ %general-entities;
+]>
+
+
+
+
+
+ mpdecimal
+ &mpdecimal-version;
+ &mpdecimal-url;
+
+
+ mpdecimal-&mpdecimal-version;
+
+
+ mpdecimal
+
+
+
+
+
+
+ The mpdecimal package contains fast C/C++ libraries for correctly-rounded
+ arbitrary precision decimal floating point arithmetic.
+
+
+
+ &buildtime;
+ &diskspace;
+
+
+ &mpdecimal-fin-sbu;
+ &mpdecimal-fin-du;
+
+
+
+
+
+
+ Installation of mpdecimal
+
+ Prepare mpdecimal for compilation:
+
+./configure --prefix=/usr \
+ --disable-static \
+ --docdir=/usr/share/doc/mpdecimal-&mpdecimal-version;
+
+ Compile the package:
+
+make
+
+ To test the results, issue:
+
+make check_local
+
+ Install the package:
+
+make install
+
+
+
+
+ Contents of mpdecimal
+
+
+ Installed libraries
+ Installed directory
+
+
+ libmpdec.so and libmpdec++.so
+ /usr/share/doc/mpdecimal-&mpdecimal-version;
+
+
+
+
+ Short Descriptions
+
+
+
+
+ libmpdec
+
+ Contains arbitrary precision decimal floating point arithmetic
+ functions for C programs
+
+ libmpdec
+
+
+
+
+
+ libmpdec++
+
+ Contains arbitrary precision decimal floating point arithmetic
+ functions for C++ programs
+
+ libmpdec++
+
+
+
+
+
+
+
+
diff --git a/chapter08/openssl.xml b/chapter08/openssl.xml
index 446dd226a..db9aab864 100644
--- a/chapter08/openssl.xml
+++ b/chapter08/openssl.xml
@@ -63,7 +63,12 @@
To test the results, issue:
-HARNESS_JOBS=$(nproc) make test
+make test
+
+ By default the test suite uses all available CPU cores. If you
+ want to use less cores, prepend
+ HARNESS_JOBS=<N>
+ with N replaced by the number of logic CPU cores you want to use.One test, 30-test_afalg.t, is known to fail if the host kernel
does not have enabled,
@@ -73,10 +78,11 @@
if the CPU supports AES-NI)
enabled. If it fails, it can safely be ignored.
- Install the package:
+ Install the package (setting an empty
+ INSTALL_LIBS prevents the installation of static
+ libraries):
-sed -i '/INSTALL_LIBS/s/libcrypto.a libssl.a//' Makefile
-make MANSUFFIX=ssl install
+make INSTALL_LIBS= MANSUFFIX=ssl installAdd the version to the documentation directory name, to be
consistent with other packages:
diff --git a/chapter08/pkgconf.xml b/chapter08/pkgconf.xml
index d9f9c4da3..e080a3864 100644
--- a/chapter08/pkgconf.xml
+++ b/chapter08/pkgconf.xml
@@ -44,19 +44,29 @@
Installation of Pkgconf
+ First, work around a circular dependency on meson:
+
+tar -xf ../meson-&meson-version;.tar.gz
+
Prepare Pkgconf for compilation:
-./configure --prefix=/usr \
- --disable-static \
- --docdir=/usr/share/doc/pkgconf-&pkgconf-version;
+mkdir build
+cd build
+
+python3 ../meson-&meson-version;/meson.py setup --prefix=/usr --buildtype=release ..Compile the package:
-make
+ninja
+
+ To test the results, issue:
+
+ninja testInstall the package:
-make install
+ninja install
+mv /usr/share/doc/pkgconf{,-&pkgconf-version;}To maintain compatibility with the original Pkg-config create two
symlinks:
@@ -109,7 +119,7 @@ ln -sv pkgconf.1 /usr/share/man/man1/pkg-config.1
- libpkgconf
+ libpkgconf.soContains most of pkgconf's functionality, while allowing
other tools like IDEs and compilers to use its frameworks
diff --git a/chapter08/python.xml b/chapter08/python.xml
index 98ed52104..5b62b6f7a 100644
--- a/chapter08/python.xml
+++ b/chapter08/python.xml
@@ -43,9 +43,9 @@
Installation of Python 3
- First, apply a security patch for issues identified upstream:
+ First, apply a patch for compatibility with OpenSSL 4:
-patch -Np1 -i ../&python-security-fixes-patch;
+patch -Np1 -i ../&python-openssl4-fixes-patch;Prepare Python for compilation:
diff --git a/chapter08/sed.xml b/chapter08/sed.xml
index 75d015600..cf2e7c9d2 100644
--- a/chapter08/sed.xml
+++ b/chapter08/sed.xml
@@ -57,8 +57,7 @@ su tester -c "PATH=$PATH make check"
Install the package and its documentation:make install
-install -d -m755 /usr/share/doc/sed-&sed-version;
-install -m644 doc/sed.html /usr/share/doc/sed-&sed-version;
+install -vDm644 doc/sed.html -t /usr/share/doc/sed-&sed-version;
diff --git a/chapter08/shadow.xml b/chapter08/shadow.xml
index 7104b2759..7126d7c3a 100644
--- a/chapter08/shadow.xml
+++ b/chapter08/shadow.xml
@@ -77,9 +77,8 @@ find man -name Makefile.in -exec sed -i 's/passwd\.5 / /' {} \;
Instead of using the default
- crypt method, use the much more secure
- YESCRYPT method of password encryption, which also
- allows passwords longer than 8 characters.
+ SHA512 method, use the more secure
+ YESCRYPT method of password encryption.
It is also necessary to change
the obsolete /var/spool/mail location
for user mailboxes that Shadow uses by default to the .bashrc file or anywhere else.
-sed -e 's:#ENCRYPT_METHOD DES:ENCRYPT_METHOD YESCRYPT:' \
- -e 's:/var/spool/mail:/var/mail:' \
- -e '/PATH=/{s@/sbin:@@;s@/bin:@@}' \
+sed -e 's:#ENCRYPT_METHOD SHA512:ENCRYPT_METHOD YESCRYPT:' \
+ -e 's:/var/spool/mail:/var/mail:' \
+ -e '/PATH=/{s@/sbin:@@;s@/bin:@@}' \
-i etc/login.defsPrepare Shadow for compilation:
@@ -217,16 +216,13 @@ make -C man install-man
groups; set and change their passwords; and perform other administrative
tasks. For a full explanation of what password shadowing
means, see the doc/HOWTO file within the unpacked
- source tree. If you use Shadow support, keep in mind that programs which need
- to verify passwords (display managers, FTP programs, pop3 daemons, etc.)
- must be Shadow-compliant. That is, they must be able to work with
- shadowed passwords.
+ source tree.
- To enable shadowed passwords, run the following command:
+ Enable shadowed passwords:pwconv
- To enable shadowed group passwords, run:
+ Enable shadowed group passwords as well:grpconv
@@ -291,6 +287,22 @@ useradd -D --gid 999
+
+ Finally, create the empty /etc/subuid and
+ /etc/subgid files:
+
+
+ touch /etc/sub{u,g}id
+
+
+ The content of those files will be automatically updated by some
+ utilities provided by Shadow to allocate subordinate user and group
+ IDs. Read the man pages
+ subuid(5) and
+ subgid(5) for the
+ details about the subordinate IDs.
+
+
@@ -308,18 +320,19 @@ useradd -D --gid 999
Installed programs
- Installed directoriesInstalled libraries
+ Installed directories
- chage, chfn, chgpasswd, chpasswd, chsh, expiry, faillog,
- getsubids, gpasswd, groupadd, groupdel, groupmems, groupmod, grpck,
- grpconv, grpunconv, login, logoutd, newgidmap, newgrp,
- newuidmap, newusers, nologin, passwd, pwck, pwconv, pwunconv,
- sg (link to newgrp), su, useradd, userdel, usermod,
- vigr (link to vipw), and vipw
- /etc/default and /usr/include/shadow
+
+ chage, chfn, chgpasswd, chpasswd, chsh, faillog, getsubids, gpasswd,
+ groupadd, groupdel, groupmod, grpck, grpconv, grpunconv, login,
+ newgidmap, newgrp, newuidmap, newusers, nologin, passwd, pwck,
+ pwconv, pwunconv, sg (link to newgrp), su, useradd, userdel,
+ usermod, vigr (link to vipw), and vipw
+ libsubid.so
+ /etc/default and /usr/include/shadow
@@ -378,7 +391,7 @@ useradd -D --gid 999
-
+
faillog
@@ -441,7 +454,7 @@ useradd -D --gid 999
-
+
groupmod
@@ -506,7 +519,7 @@ useradd -D --gid 999
-
+
newgidmap
diff --git a/chapter08/sqlite.xml b/chapter08/sqlite.xml
index d1a8d40b6..0ccf69d06 100644
--- a/chapter08/sqlite.xml
+++ b/chapter08/sqlite.xml
@@ -44,7 +44,7 @@
Unpack the documentation:
-tar -xf ../sqlite-doc-&sqlite-doc-version;.tar.xz
+python3 -m zipfile -e ../sqlite-doc-&sqlite-doc-version;.zip .Prepare Sqlite for compilation with:
@@ -97,8 +97,7 @@
If desired, install the documentation:
-install -v -m755 -d /usr/share/doc/sqlite-&sqlite-short-version;
-cp -v -R sqlite-doc-&sqlite-doc-version;/* /usr/share/doc/sqlite-&sqlite-short-version;
+cp -v -R sqlite-doc-&sqlite-doc-version; -T /usr/share/doc/sqlite-&sqlite-short-version;
diff --git a/chapter08/stripping.xml b/chapter08/stripping.xml
index 8b3b424c9..8e660b197 100644
--- a/chapter08/stripping.xml
+++ b/chapter08/stripping.xml
@@ -87,7 +87,7 @@ for LIB in $save_usrlib; do
done
online_usrbin="bash find strip"
-online_usrlib="libbfd-&binutils-version;.20260210.so
+online_usrlib="libbfd-&libbfd-version;.so
libsframe.so.&libsframe-version;
libhistory.so.&readline-soversion;
libncursesw.so.&ncurses-base-version;
diff --git a/chapter08/systemd.xml b/chapter08/systemd.xml
index 622ae2955..850464c49 100644
--- a/chapter08/systemd.xml
+++ b/chapter08/systemd.xml
@@ -39,7 +39,14 @@
Installation of systemd
+
Remove two unneeded groups,
render and
sgx, from the default udev
@@ -229,13 +236,19 @@ unshare -m ninja test
- One test named systemd:core / test-namespace
- is known to fail in the LFS chroot environment. Some other tests may
- fail because they depend on various kernel configuration options.
- The test named systemd:test / test-copy may time out
- due to an I/O congestion with a large parallel job number, but it
- would pass if running alone with
- meson test test-copy.
+
+ Three tests are known to fail in the LFS chroot environment but
+ pass in a full installation:
+ core - systemd:test-namespace,
+ test - systemd:test-chase, and
+ tmpfiles - systemd:test-systemd-tmpfiles.
+ Some additional tests may fail because they depend on various
+ kernel configuration options. The test named
+ test - systemd:test-copy
+ may time out due to I/O congestion with a large parallel job
+ number, but will pass if running alone with
+ meson test test-copy.
+ Install the package:
diff --git a/chapter08/tar.xml b/chapter08/tar.xml
index 1d51203ba..4a1e36f01 100644
--- a/chapter08/tar.xml
+++ b/chapter08/tar.xml
@@ -43,6 +43,10 @@
Installation of Tar
+ First fix the package to build with acl-2.4.0:
+
+patch -Np1 -i ../tar-1.35-acl_fix-1.patch
+
Prepare Tar for compilation:FORCE_UNSAFE_CONFIGURE=1 \
diff --git a/chapter08/tcl.xml b/chapter08/tcl.xml
index 3b37715bd..c822207b7 100644
--- a/chapter08/tcl.xml
+++ b/chapter08/tcl.xml
@@ -3,8 +3,8 @@
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
%general-entities;
-
-
+
+
]>
diff --git a/chapter08/util-linux.xml b/chapter08/util-linux.xml
index 5f5ec69b9..f3d0df681 100644
--- a/chapter08/util-linux.xml
+++ b/chapter08/util-linux.xml
@@ -113,12 +113,7 @@ chown -R tester .
su tester -c "make -k check"
- The hardlink tests will fail if the host's kernel
- does not have the option
- enabled or does not have any options providing a SHA256 implementation
- (for example, , or
- if the CPU supports
- Supplemental SSE3) enabled. In addition, the lsfd: inotify test will
+ The lsfd: inotify test will
fail if the kernel option is not
enabled.
diff --git a/chapter09/inputrc.xml b/chapter09/inputrc.xml
index 0c647bc93..9af5f5081 100644
--- a/chapter09/inputrc.xml
+++ b/chapter09/inputrc.xml
@@ -76,6 +76,10 @@ set bell-style none
"\e[H": beginning-of-line
"\e[F": end-of-line
+# uncomment for history search mode with up/down
+# "\e[A": history-search-backward
+# "\e[B": history-search-forward
+
# End /etc/inputrc
EOF
diff --git a/chapter09/systemd-custom.xml b/chapter09/systemd-custom.xml
index bb8285b31..22dca1b56 100644
--- a/chapter09/systemd-custom.xml
+++ b/chapter09/systemd-custom.xml
@@ -54,12 +54,12 @@ EOF
a tmpfs. If this is not desired, it can be overridden by executing the
following command:
-ln -sfv /dev/null /etc/systemd/system/tmp.mount
+systemctl mask tmp.mountAlternatively, if a separate partition for
/tmp is desired, specify that
partition in a /etc/fstab entry.
-
+
diff --git a/chapter10/fstab.xml b/chapter10/fstab.xml
index 43822d8c2..031921d2c 100644
--- a/chapter10/fstab.xml
+++ b/chapter10/fstab.xml
@@ -89,9 +89,12 @@ EOF
interpreted in the UTF-8 locale.
- When installing GRUB with UEFI, the ESP must be formatted as a FAT filesystem, most
- commonly VFAT. This file sees it as VFAT regardless. An example of how you
- would go about an entry for the ESP would look like this:
+ When installing GRUB with UEFI, the ESP must be formatted as a FAT file
+ system (EXFAT should not be considered one).
+ In the Linux kernel the VFAT driver handles all the FAT file systems,
+ so this file will contain vfat regardless.
+ An example of how you would go about an entry for the ESP would look
+ like this:
cat >> /etc/fstab << "EOF"
@@ -101,7 +104,8 @@ EOF
The iso8859-1 IO charset is used here as we'll
enable it as a part of the kernel UEFI configuration in
- . Technically the IO charset should
+
+ Technically the IO charset should
match your locale as we've discussed above. However the name of all the
files in the ESP only contains 7-bit ASCII characters, so things will
be OK as long as the character set for your locale treats 7-bit ASCII
@@ -115,7 +119,7 @@ EOF
The system uses this partition before the kernel is loaded and is not used
otherwise. An alternative to adding this entry to the fstab file is to
manually mount it before running grub-install below
- in .
+ in
diff --git a/chapter10/grub.xml b/chapter10/grub.xml
index 41f8edec4..6ec526cf8 100644
--- a/chapter10/grub.xml
+++ b/chapter10/grub.xml
@@ -116,7 +116,7 @@ xorriso -as cdrecord -v dev=/dev/cdrw blank=as_needed grub-img.iso
system to use that partition for
/boot as well, just mount
the partition at $LFS/boot
- in the host distro. The Linux kernel supports mounting partitions
+ in the host distro. The Linux kernel supports mounting one partition
at multiple mount points.
@@ -216,14 +216,15 @@ xorriso -as cdrecord -v dev=/dev/cdrw blank=as_needed grub-img.iso
location would result in the location in a EFI variable be recorded,
but LFS lacks the BLFS package efibootmgr, which is
- needed to manipulate EFI variables.
+ needed by GRUB to record the location into the EFI variable.
- Some UEFI bootloaders, while rare, skip the hardcoded EFI path. Such
+ Some UEFI firmware implementations, while rare, skip the standard
+ EFI path. Such
systems most of the time are old, like Lenovo ThinkPads or HP
- desktops/laptops. When the boot entry is missing in the BIOS, you
+ desktops/laptops. When the boot entry is missing in the firmware setup, you
will need to install the BLFS package efibootmgr to create
a boot entry for UEFI. If it's easier, the package can be installed
@@ -244,9 +245,9 @@ xorriso -as cdrecord -v dev=/dev/cdrw blank=as_needed grub-img.iso
-p <y> -L "LFS" -l '\EFI\BOOT\BOOT<X64>.EFI'
The /dev/sd<x>
- drive should match the one you are installing LFS onto. The
+ drive should be the device node for the disk where the ESP exists. The
<y> partition number should match
- the number which the ESP is mounted. If the ESP is on
+ the number of the ESP. If the ESP is on
/dev/sda2, then the partition number would be
2. If you are using 32-bit UEFI, replace
<X64> with IA32.
@@ -287,34 +288,21 @@ insmod part_gpt
insmod ext2
set root=(hd0,2)
-
-# For UEFI
-insmod efi_gop
-insmod efi_uga
-
set gfxpayload=1024x768x32
menuentry "GNU/Linux, Linux &linux-version;-lfs-&version;" {
linux /boot/vmlinuz-&linux-version;-lfs-&version; root=/dev/sda2 ro
}
EOF
-
The insmod commands load the
GRUB modules named
- part_gpt, ext2,
- efi_gop, and
- efi_uga.
+ part_gpt and ext2.
Despite the naming, ext2 actually supports
ext2,
ext3, and
ext4 filesystems.
- On UEFI systems, efi_gop and
- efi_uga are for video support. GOP, or Graphics
- Output Protocol, is the modern approach. UGA, or UGA Draw Protocol, is
- a legacy way of handling it.
In a typical configuration, the part_gpt and
ext2 modules are already embedded in
the main GRUB image by grub-install, and the
diff --git a/chapter10/kernel.xml b/chapter10/kernel.xml
index 639942e0f..4d87c6aae 100644
--- a/chapter10/kernel.xml
+++ b/chapter10/kernel.xml
@@ -505,37 +505,6 @@
-
- Configuring Linux Module Load Order
-
-
- /etc/modprobe.d/usb.conf
-
-
- Most of the time Linux modules are loaded automatically, but
- sometimes it needs some specific direction. The program that loads
- modules, modprobe or insmod, uses
- /etc/modprobe.d/usb.conf for this purpose. This file
- needs to be created so that if the USB drivers (ehci_hcd, ohci_hcd and
- uhci_hcd) have been built as modules, they will be loaded in the correct
- order; ehci_hcd needs to be loaded prior to ohci_hcd and uhci_hcd in order
- to avoid a warning being output at boot time.
-
- Create a new file /etc/modprobe.d/usb.conf by running
- the following:
-
-install -v -m755 -d /etc/modprobe.d
-cat > /etc/modprobe.d/usb.conf << "EOF"
-# Begin /etc/modprobe.d/usb.conf
-
-install ohci_hcd /sbin/modprobe ehci_hcd ; /sbin/modprobe -i ohci_hcd ; true
-install uhci_hcd /sbin/modprobe ehci_hcd ; /sbin/modprobe -i uhci_hcd ; true
-
-# End /etc/modprobe.d/usb.conf
-EOF
-
-
-
Contents of Linux
diff --git a/chapter10/kernel/kernel.version b/chapter10/kernel/kernel.version
index 0b0afee6a..2fe040f42 100644
--- a/chapter10/kernel/kernel.version
+++ b/chapter10/kernel/kernel.version
@@ -1 +1 @@
-6.19.8
+7.1.8
diff --git a/chapter10/kernel/systemd.toml b/chapter10/kernel/systemd.toml
index 565eeb49d..167770b8d 100644
--- a/chapter10/kernel/systemd.toml
+++ b/chapter10/kernel/systemd.toml
@@ -29,9 +29,14 @@ INOTIFY_USER='*'
TMPFS='*'
TMPFS_POSIX_ACL='*'
CGROUP_SCHED='* '
+LEGACY_TIOCSTI=' '
revision='systemd'
[RT_GROUP_SCHED]
value = ' '
comment = 'This may cause some systemd features malfunction'
+
+[TTY]
+value = '*'
+forced = true
diff --git a/chapter10/kernel/systemd.xml b/chapter10/kernel/systemd.xml
index 924dbb5a1..310f52f34 100644
--- a/chapter10/kernel/systemd.xml
+++ b/chapter10/kernel/systemd.xml
@@ -28,7 +28,7 @@
[*] Networking support ---> [NET]
Networking options --->
[*] TCP/IP networking [INET]
- <*> The IPv6 protocol ---> [IPV6]
+ [*] The IPv6 protocol ---> [IPV6]
Device Drivers --->
Generic Driver Options --->
@@ -41,6 +41,9 @@
Firmware Drivers --->
[*] Export DMI identification via sysfs to userspace [DMIID]
[*] Mark VGA/VBE/EFI FB as generic system framebuffer [SYSFB_SIMPLEFB]
+ Character devices --->
+ -*- Enable TTY [TTY]
+ [ ] Allow legacy TIOCSTI usage [LEGACY_TIOCSTI]
Graphics support --->
<*> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) --->
... [DRM]
diff --git a/chapter11/theend.xml b/chapter11/theend.xml
index 994cba8c3..2bc4056ff 100644
--- a/chapter11/theend.xml
+++ b/chapter11/theend.xml
@@ -44,7 +44,7 @@
cat > /etc/lsb-release << "EOF"
DISTRIB_ID="Linux From Scratch"
DISTRIB_RELEASE="&version;"
-DISTRIB_CODENAME="<your name here>"
+DISTRIB_CODENAME="<your name here>"
DISTRIB_DESCRIPTION="Linux From Scratch"
EOF
@@ -57,7 +57,7 @@ NAME="Linux From Scratch"
VERSION="&version;"
ID=lfs
PRETTY_NAME="Linux From Scratch &version;"
-VERSION_CODENAME="<your name here>"
+VERSION_CODENAME="<your name here>"
HOME_URL="&lfs-root;lfs/"
RELEASE_TYPE="&os-release-type;"
EOF
diff --git a/chapter11/whatnow.xml b/chapter11/whatnow.xml
index f8588e97f..61a462d1e 100644
--- a/chapter11/whatnow.xml
+++ b/chapter11/whatnow.xml
@@ -31,7 +31,7 @@
- LFS Security Advisories
+ LFS Security AdvisoriesThis is a list of security vulnerabilities discovered in the
LFS book after it's published.
diff --git a/general.ent b/general.ent
index eac1db3cd..360fef6f3 100644
--- a/general.ent
+++ b/general.ent
@@ -9,7 +9,7 @@
release -->
-
+
@@ -93,11 +93,11 @@
-
+
-
-
+
+
-
-
+
+
-
+
-
+
-
-
+
+
-
+
-
+
@@ -44,7 +44,7 @@
-
+
@@ -52,10 +52,10 @@
-
+
-
+
@@ -65,18 +65,19 @@
-
-
+
+
-
+
-
+
-
+
+
@@ -96,14 +97,14 @@
-
-
+
+
-
+
-
+
-
+
@@ -119,7 +120,7 @@
-
+
@@ -130,30 +131,31 @@
-
+
-
+
-
-
+
+
-
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
+
@@ -164,25 +166,25 @@
-
-
+
+
-
+
-
+
-
+
-
-
+
+
-
+
-
+
-
-
+
+
@@ -192,42 +194,42 @@
-
-
+
+
-
+
-
-
+
+
-
+
-
+
-
+
-
-
+
+
-
+
-
-
-
-
-
-
+
+
+
+
+
+
-
+
-
-
+
+
@@ -242,20 +244,20 @@
-
+
-
+
-
-
+
+
-
+
-
-
-
-
+
+
+
+
@@ -288,16 +290,16 @@
-
-
+
+
-
-
+
+
@@ -309,22 +311,22 @@
-
-
+
+
-
+
-
-
+
+
-
+
-
+
+
+
-
+
-
+
@@ -349,12 +351,12 @@
-
-
+
+
-
+
-
+
@@ -362,13 +364,13 @@
-
+
-
-
+
+
-
+
@@ -381,20 +383,20 @@
-
-
+
+
-
+
-
-
+
+
-
+
-
+
@@ -405,12 +407,12 @@
-
-
+
+
-
+
-
+
@@ -421,15 +423,15 @@
-
-
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
-
+
+
@@ -637,45 +649,46 @@
-
-
+
+
-
+
-
+
-
-
+
+
-
-
+
+
-
+
-
+
-
-
+
+
-
+
-
+
-
-
+
+
-
+
-
+
-
+
-
-
-
+
+
+
+
@@ -685,23 +698,23 @@
-
+
-
+
-
+
-
-
+
+
-
-
-
+
+
+
@@ -716,21 +729,21 @@
-
+
-
+
-
+
-
+
-
+
-
-
-
+
+
+
@@ -738,15 +751,15 @@
-
+
-
-
+
+
-
-
+
+
-
+
@@ -757,20 +770,20 @@
-
-
-
+
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
-
+
+
-
+
-
+
-
-
+
+
-
+
@@ -811,7 +824,7 @@
-
+
@@ -823,7 +836,9 @@
-
+
+
+
@@ -831,6 +846,6 @@
-
+
diff --git a/patches.ent b/patches.ent
index bf5a485e5..df119f54d 100644
--- a/patches.ent
+++ b/patches.ent
@@ -16,8 +16,8 @@
-
-
+
+
@@ -27,11 +27,9 @@
-
+
+
@@ -43,9 +41,9 @@
-->
-
-
-
+
+
+
+
+
+
+
+
diff --git a/prologue/bookinfo.xml b/prologue/bookinfo.xml
index 744df848e..5cea7c93d 100644
--- a/prologue/bookinfo.xml
+++ b/prologue/bookinfo.xml
@@ -15,19 +15,25 @@
Created by GerardBeekmans
+
Managing Editor: BruceDubbs
-
- Editor: Douglas R.
- Reno
+
+ Editor: Xi
+ Ruoyao
+
+
+
+ Editor: Joe
+ Locash
-
- Editor: DJ
- Lucas
+
+ Editor: Douglas R.
+ Reno
diff --git a/prologue/why.xml b/prologue/why.xml
index 28e3aca36..f5d24a6f0 100644
--- a/prologue/why.xml
+++ b/prologue/why.xml
@@ -271,14 +271,14 @@
This package supplies programs for basic network
administration.
-
+
IProute2
@@ -437,6 +437,13 @@
numbers. It is required by GCC.
+
+ Mpdecimal
+
+ This package supplies arithmetic functions for decimal
+ float numbers. It is required by Python.
+
+
MPFR
@@ -640,13 +647,13 @@
reference implementation of the Python wheel packaging standard.
-
+
XZ Utils
diff --git a/stylesheets/dump-commands.xsl b/stylesheets/dump-commands.xsl
index 83e24dfc6..a7dce0689 100644
--- a/stylesheets/dump-commands.xsl
+++ b/stylesheets/dump-commands.xsl
@@ -6,9 +6,7 @@
-
-
-
+
@@ -52,33 +50,33 @@
# Run this as root
-
+ # End root commands
-
+
-
+ # This block must be edited to suit your needs.
-
+
-
-
+
+ # End of editable block.
-
+
-
+ **EDITMEEDITME**
diff --git a/stylesheets/lfs-xsl/xhtml/lfs-titles.xsl b/stylesheets/lfs-xsl/xhtml/lfs-titles.xsl
index e22d25423..35247f2e0 100644
--- a/stylesheets/lfs-xsl/xhtml/lfs-titles.xsl
+++ b/stylesheets/lfs-xsl/xhtml/lfs-titles.xsl
@@ -97,7 +97,7 @@
- .
+
@@ -118,7 +118,7 @@
- .
+
@@ -136,7 +136,7 @@
- .
+
diff --git a/stylesheets/md5sum.xsl b/stylesheets/md5sum.xsl
index 4ea19741b..4f2e8e22f 100644
--- a/stylesheets/md5sum.xsl
+++ b/stylesheets/md5sum.xsl
@@ -8,18 +8,14 @@
-
+
-
+
diff --git a/stylesheets/wget-list.xsl b/stylesheets/wget-list.xsl
index 0b07db373..272b66df1 100644
--- a/stylesheets/wget-list.xsl
+++ b/stylesheets/wget-list.xsl
@@ -9,18 +9,14 @@
-
+
-
+