diff --git a/appendices/dependencies.xml b/appendices/dependencies.xml
index a1efa3d01..6387743a7 100644
--- a/appendices/dependencies.xml
+++ b/appendices/dependencies.xml
@@ -876,6 +876,48 @@
+
+ Flit-Core
+
+
+ &dependencies;
+
+ Python
+
+
+
+
+ &runtime;
+
+ Python
+
+
+
+
+ &testsuites;
+
+ No test suite available
+
+
+
+
+ &before;
+
+ Wheel
+
+
+
+
+ &external;
+
+
+ pytest
+ and
+ testpath
+
+
+
+
Gawk
@@ -3104,7 +3146,7 @@
&dependencies;
- Python
+ Python and Flit-core
@@ -3262,7 +3304,7 @@
&dependencies;
- Binutils, Coreutils, GCC, Glibc, Gzip, Make, and Xz
+ Binutils, Coreutils, GCC, Glibc, Gzip, Make, Xz, and Zlib
diff --git a/chapter01/changelog.xml b/chapter01/changelog.xml
index 20cf06f58..3f8583217 100644
--- a/chapter01/changelog.xml
+++ b/chapter01/changelog.xml
@@ -39,6 +39,76 @@
or as
appropriate for the entry or if needed the entire day's listitem.
-->
+
+ 2023-03-31
+
+
+ [xry111] - Update to linux-6.2.9 (security fix). Fixes
+ #5230.
+
+
+ [xry111] - Update to grep-3.10. Fixes
+ #5234.
+
+
+ [xry111] - Update to wheel-0.40.0. Fixes
+ #5229.
+
+
+ [xry111] - Update to bc-6.5.0. Fixes
+ #5228.
+
+
+ [xry111] - Update to texinfo-7.0.3. Fixes
+ #5235.
+
+
+ [xry111] - Update to coreutils-9.2. Fixes
+ #5232.
+
+
+ [xry111] - Update to libcap-2.68. Fixes
+ #5236.
+
+
+ [xry111] - Update to tzdata-2023c. Fixes
+ #5237.
+
+
+ [xry111] - Update to xz-5.4.2. Fixes
+ #5233.
+
+
+ [xry111] - Update to openssl-3.1.0. Fixes
+ #5227.
+
+
+ [xry111] - Add flit-core-3.8.0.
+
+
+
+
+
+ 2023-03-15
+
+
+ [bdubbs] - Update to bc-6.4.0. Fixes
+ #5217.
+
+
+ [bdubbs] - Update to grep-3.9. Fixes
+ #5225.
+
+
+ [bdubbs] - Update to linux-6.2.6. Fixes
+ #5226.
+
+
+ [bdubbs] - Update to iana-etc-20230306. Addresses
+ #5006.
+
+
+
2023-03-04
diff --git a/chapter01/how.xml b/chapter01/how.xml
index 59706d121..fa054dd1d 100644
--- a/chapter01/how.xml
+++ b/chapter01/how.xml
@@ -18,15 +18,13 @@
during the distribution installation to include these
tools.
+ 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:
+ .
+
As an alternative to installing a separate distribution on your
- machine, you may wish to use a LiveCD from a
- commercial distribution.
+ machine, you may wish to use a LiveCD from a commercial distribution.
-
+
@@ -130,9 +130,9 @@
-
+
@@ -292,6 +292,10 @@
Added:
+
+ Flit-core-&flit-core-version;
+
+
diff --git a/chapter02/creatingpartition.xml b/chapter02/creatingpartition.xml
index d5429ad7c..35279cb75 100644
--- a/chapter02/creatingpartition.xml
+++ b/chapter02/creatingpartition.xml
@@ -169,7 +169,7 @@
used, 5 to 10 gigabytes is generally adequate.
- /tmp – A separate /tmp directory
+ /tmp – A separate /tmp partition
is rare, but useful if configuring a thin client. This partition, if
used, will usually not need to exceed a couple of
gigabytes. If you have enough RAM, you can mount a
diff --git a/chapter03/packages.xml b/chapter03/packages.xml
index 92d44afaf..87238724d 100644
--- a/chapter03/packages.xml
+++ b/chapter03/packages.xml
@@ -227,6 +227,15 @@
+
+ Flit-core (&flit-core-version;) - &flit-core-size;:
+
+ Home page:
+ Download:
+ MD5 sum: &flit-core-md5;
+
+
+
Gawk (&gawk-version;) - &gawk-size;:
diff --git a/chapter08/chapter08.xml b/chapter08/chapter08.xml
index 902d1bf48..91827b88e 100644
--- a/chapter08/chapter08.xml
+++ b/chapter08/chapter08.xml
@@ -63,6 +63,7 @@
+
diff --git a/chapter08/coreutils.xml b/chapter08/coreutils.xml
index 24f8a2598..125eb5f9f 100644
--- a/chapter08/coreutils.xml
+++ b/chapter08/coreutils.xml
@@ -53,14 +53,12 @@
those bugs are reproducible without this patch.
-
-
+ Fix a bug in checksum utilities causing failed checks not
+ reported correctly:
+
+sed '/if ( ! match/s/ed_checksums//' -i src/digest.c
-patch -Np1 -i ../&coreutils-chmod-patch;
--->
Now prepare Coreutils for compilation:
autoreconf -fiv
diff --git a/chapter08/flit-core.xml b/chapter08/flit-core.xml
new file mode 100644
index 000000000..641ff73b7
--- /dev/null
+++ b/chapter08/flit-core.xml
@@ -0,0 +1,115 @@
+
+
+ %general-entities;
+]>
+
+
+
+
+
+ flit-core
+ &flit-core-version;
+ &flit-core-url;
+
+
+ Flit-Core-&flit-core-version;
+
+
+ Flit-core
+
+
+
+
+
+ Flit-core is the distribution-building parts of Flit (a packaging
+ tool for simple Python modules).
+
+
+ &buildtime;
+ &diskspace;
+
+ &flit-core-fin-sbu;
+ &flit-core-fin-du;
+
+
+
+
+
+
+ Installation of Flit-Core
+
+ Build the package:
+
+pip3 wheel -w dist --no-build-isolation --no-deps $PWD
+
+ Install the package:
+
+pip3 install --no-index --no-user --find-links dist flit_core
+
+
+ The meaning of the pip3 configuration options and commands:
+
+
+ wheel
+
+ This command builds the wheel archive for this package.
+
+
+
+
+ -w dist
+
+ Instructs pip to put the created wheel into the
+ dist directory.
+
+
+
+
+ install
+
+ This command installs the package.
+
+
+
+
+ --no-build-isolation,
+ --no-deps, and
+ --no-index
+
+ These options prevent fetching files from the online package
+ repository (PyPI). If packages are installed in the correct order,
+ pip won't need to fetch any files in the first place; these
+ options add some safety in case of user error.
+
+
+
+
+ --find-links dist
+
+ Instructs pip to search for wheel archives in the
+ dist directory.
+
+
+
+
+
+
+ Contents of Flit-Core
+
+
+ Installed directory
+
+
+
+ /usr/lib/python&python-minor;/site-packages/flit_core and
+ /usr/lib/python&python-minor;/site-packages/flit_core-&flit-core-version;.dist-info
+
+
+
+
+
+
+
+
diff --git a/chapter08/openssl.xml b/chapter08/openssl.xml
index 6a97bcc2a..0c3c41a7c 100644
--- a/chapter08/openssl.xml
+++ b/chapter08/openssl.xml
@@ -98,6 +98,21 @@ make MANSUFFIX=ssl install
number.
+
+
+ If OpenSSH is installed, it will be an
+ exception of the general rule above. It contains an
+ over-restrictive OpenSSL version check, so both SSH client and SSH
+ server will refuse to start if OpenSSL
+ is updated with MAJOR version number unchanged but MINOR version
+ number changed. You need to rebuild
+ OpenSSH after such an upgrade.
+ If OpenSSH is being
+ used to access the system, you must rebuild and reinstall it
+ after upgrading OpenSSL to a new MINOR version number before logout
+ or you won't be able to login via SSH anymore.
+
+
However, any running programs linked to those libraries need to be stopped
and restarted. Read the related entries in
diff --git a/chapter08/stripping.xml b/chapter08/stripping.xml
index bbd1ed94d..70e0d6ebb 100644
--- a/chapter08/stripping.xml
+++ b/chapter08/stripping.xml
@@ -54,10 +54,10 @@
- If any package of which the version is different from the version
+ If there is any package whose version is different from the version
specified by the book (either following a security advisory or
satisfying personal preference), it may be necessary to update the
- the library file name in save_usrlib or
+ library file name in save_usrlib or
online_usrlib.
Failing to do so may render the system
completely unusable.
diff --git a/chapter08/util-linux.xml b/chapter08/util-linux.xml
index 8290f87c2..ccf8b3cd0 100644
--- a/chapter08/util-linux.xml
+++ b/chapter08/util-linux.xml
@@ -985,12 +985,12 @@ su tester -c "make -k check"
-
- rkfill
+
+ rfkill
Tool for enabling and disabling wireless devices
-
- rkfill
+
+ rfkill
diff --git a/chapter08/wheel.xml b/chapter08/wheel.xml
index 57457dacc..88e47d556 100644
--- a/chapter08/wheel.xml
+++ b/chapter08/wheel.xml
@@ -42,65 +42,12 @@
Compile Wheel with the following command:
-PYTHONPATH=src pip3 wheel -w dist --no-build-isolation --no-deps $PWD
+pip3 wheel -w dist --no-build-isolation --no-deps $PWD
Install Wheel with the following command:
pip3 install --no-index --find-links=dist wheel
-
- The meaning of the pip3 configuration options and commands:
-
-
- PYTHONPATH=src
-
- Allows this package (not installed yet) to build a
- wheel archive for itself, to avoid a chicken-or-egg problem.
-
-
-
-
- wheel
-
- This command builds the wheel archive for this package.
-
-
-
-
- -w dist
-
- Instructs pip to put the created wheel into the
- dist directory.
-
-
-
-
- install
-
- This command installs the package.
-
-
-
-
- --no-build-isolation,
- --no-deps, and
- --no-index
-
- These options prevent fetching files from the online package
- repository (PyPI). If packages are installed in the correct order,
- pip won't need to fetch any files in the first place; these
- options add some safety in case of user error.
-
-
-
-
- --find-links dist
-
- Instructs pip to search for wheel archives in the
- dist directory.
-
-
-
diff --git a/chapter10/kernel.xml b/chapter10/kernel.xml
index 480bbd2d9..ebc93e7bc 100644
--- a/chapter10/kernel.xml
+++ b/chapter10/kernel.xml
@@ -45,6 +45,38 @@
in the kernel source tree for alternative methods to the way this book
configures the kernel.
+
+
+ Building the linux kernel for the first time is one of the most
+ challenging tasks in LFS. Getting it right depends on the specific
+ hardware for the target system and your specific needs. There are
+ almost 12,000 configuration items that are available for the kernel
+ although only about a third of them are needed for most computers. The
+ LFS editors recommend that users not familiar with this process follow
+ the procedures below fairly closely. The objective is to get an
+ initial system to a point where you can log in at the command line when
+ you reboot later in . At his point
+ optimization and customization is not a goal.
+
+
+
+
+ For general information on kernel configuration see . Additional information
+ about configuring and building the kernel can be found at .
+ These references are a bit
+ dated, but still give a reasonable overview of the process.
+
+
+
+ If all else fails, you can ask for help on the lfs-support
+ mailing list. Note that subscribing is required in order for the list
+ to avoid spam.
+
+
+
Prepare for compilation by running the following command:
make mrproper
@@ -88,13 +120,6 @@
- For general information on kernel configuration see . BLFS has some information
- regarding particular kernel configuration requirements of packages outside
- of LFS at . Additional
- information about configuring and building the kernel can be found at
-
A good starting place for setting up the kernel configuration is to
@@ -134,6 +159,7 @@ General setup --->
[ ] Auditing Support [CONFIG_AUDIT]
CPU/Task time and stats accounting --->
[*] Pressure stall information tracking [CONFIG_PSI]
+ [ ] Require boot parameter to enable pressure stall information tracking [CONFIG_PSI_DEFAULT_DISABLED]
< > Enable kernel headers through /sys/kernel/kheaders.tar.xz [CONFIG_IKHEADERS]
[*] Control Group support [CONFIG_CGROUPS] --->
[*] Memory controller [CONFIG_MEMCG]
@@ -179,6 +205,23 @@ Device Drivers --->
[*] Message Signaled Interrupts (MSI and MSI-X) [CONFIG_PCI_MSI]
[*] IOMMU Hardware Support ---> [CONFIG_IOMMU_SUPPORT]
[*] Support for Interrupt Remapping [CONFIG_IRQ_REMAP]
+
+ If you are building a 32-bit system running on a hardware
+ with RAM more than 4GB, adjust the configuration so the kernel will
+ be able to use up to 64GB physical RAM:
+
+ Processor type and features --->
+ High Memory Support --->
+ (X) 64GB [CONFIG_HIGHMEM64G]
+
+ If the partition for the LFS system is in a NVME SSD (i. e. the
+ device node for the partition is /dev/nvme*
+ instead of /dev/sd*), enable NVME support or
+ the LFS system won't boot:
+
+ Device Drivers --->
+ NVME Support --->
+ <*> NVM Express block device [CONFIG_BLK_DEV_NVME]
@@ -186,18 +229,18 @@ Device Drivers --->
required, it is highly recommended by the systemd developers.
- There are several other options that may be desired
+ There are several other options that may be desired
depending on the requirements for the system. For a list of options needed
for BLFS packages, see the BLFS
- Index of Kernel Settings
- (&lfs-root;blfs/view/&short-version;/longindex.html#kernel-config-index).
+ Index of Kernel Settings.
If your host hardware is using UEFI and you wish to boot the
LFS system with it, you should adjust some kernel configuration
following
- the BLFS page.
+ the BLFS page even if you'll use the
+ UEFI bootloader from the host distro.
diff --git a/chapter11/reboot.xml b/chapter11/reboot.xml
index 3d87aa13a..0e1e234e1 100644
--- a/chapter11/reboot.xml
+++ b/chapter11/reboot.xml
@@ -75,6 +75,12 @@
+
+
+ Ensure a password is set for the &root; user.
+
+
+
A review of the following configuration files
@@ -119,7 +125,15 @@
Assuming the GRUB boot loader was set up as outlined earlier, the menu
is set to boot LFS &version; automatically.
- When the reboot is complete, the LFS system is ready for use and
- more software may be added to suit your needs.
+ When the reboot is complete, the LFS system is ready for use. What you
+ will see is a simple login:
prompt. At this point, you can
+ proceed to the BLFS Book
+ where you can add more software to suit your needs.
+
+
+ If your reboot is not successful, it
+ is time to troubleshoot. For hints on solving initial booting problems, see
+ .
+
diff --git a/gen-changelog.py b/gen-changelog.py
new file mode 100755
index 000000000..2932dd9ec
--- /dev/null
+++ b/gen-changelog.py
@@ -0,0 +1,108 @@
+#!/usr/bin/env python3
+
+# LFS ChangeLog generator for trivial package addition, removal, and update
+
+from subprocess import Popen, PIPE
+from urllib.request import urlopen
+from os import getenv
+
+def get_entity(line):
+ line = line[1:]
+ if not line.startswith("= 2:
+ pkg = fields[1].lower()
+ pos = pkg.find(' ')
+ if pos > 0:
+ pkg = pkg[:pos]
+ tic = fields[0]
+ if len(fields) >= 3 and fields[2].startswith("high"):
+ security.add(pkg)
+ ticket[pkg] = tic
+
+print("Plain Text:")
+for (s, act) in [(upd, "Update to "), (add, "Add ")]:
+ for i in s:
+ pkgver = i + "-" + expand_entity(ent, i + "-version")
+ out = act + pkgver
+ if pkgver in ticket:
+ out += ' (#' + ticket[pkgver] + ')'
+ print(out)
+for i in rem:
+ print("Remove", i)
+
+print("---------------------")
+
+print("XML")
+name = getenv("USER")
+for (s, act) in [(upd, "Update to "), (add, "Add ")]:
+ for i in s:
+ print(' ')
+ pkgver = i + "-" + expand_entity(ent, i + "-version")
+ out = ' [' + name + '] - ' + act + pkgver
+ if pkgver in security:
+ out += " (security fix)"
+ out += "."
+ if pkgver in ticket:
+ out += " Fixes\n "
+ out += "#"
+ out += ticket[pkgver] + "."
+ out += ""
+ print(out)
+ print(' ')
diff --git a/packages.ent b/packages.ent
index b645de0c1..61cb4dc0a 100644
--- a/packages.ent
+++ b/packages.ent
@@ -58,10 +58,10 @@
-
-
+
+
-
+
@@ -104,10 +104,10 @@
-
-
+
+
-
+
@@ -207,6 +207,14 @@
+
+
+
+
+
+
+
+
@@ -281,10 +289,10 @@
-
-
+
+
-
+
@@ -319,10 +327,10 @@
-
-
+
+
-
+
@@ -394,10 +402,10 @@
-
-
+
+
-
+
@@ -428,12 +436,12 @@
-
+
-
+
-
+