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 + + + + + + <para>Flit-core is the distribution-building parts of Flit (a packaging + tool for simple Python modules).</para> + + <segmentedlist> + <segtitle>&buildtime;</segtitle> + <segtitle>&diskspace;</segtitle> + <seglistitem> + <seg>&flit-core-fin-sbu;</seg> + <seg>&flit-core-fin-du;</seg> + </seglistitem> + </segmentedlist> + + </sect2> + + <sect2 role="installation"> + <title>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 @@ - + - + - +