diff --git a/appendices/dependencies.xml b/appendices/dependencies.xml index 69c676394..99b84c385 100644 --- a/appendices/dependencies.xml +++ b/appendices/dependencies.xml @@ -1863,7 +1863,9 @@ &external; - cpio + cpio and + LLVM + (with Clang) diff --git a/chapter01/changelog.xml b/chapter01/changelog.xml index 819f2f15a..6ff784e08 100644 --- a/chapter01/changelog.xml +++ b/chapter01/changelog.xml @@ -39,6 +39,74 @@ or as appropriate for the entry or if needed the entire day's listitem. --> + + 2022-10-17 + + + [bdubbs] - Update to linux-6.0.2 (Security update). Fixes + #5138. + + + + + + 2022-10-15 + + + [bdubbs] - Update to iana-etc-20221007. Addresses + #5006. + + + [bdubbs] - Update to vim-9.0.0739. Addresses + #5006. + + + [bdubbs] - Add upstream patches to readline and bash. Fixes + #5131. + + + [bdubbs] - Update to zlib-1.2.13. Fixes + #5137. + + + [bdubbs] - Update to man-pages-6.00. Fixes + #5136. + + + [bdubbs] - Update to gettext-0.21.1. Fixes + #5130. + + + [bdubbs] - Update to iproute2-6.0.0. Fixes + #5127. + + + [bdubbs] - Update to meson-0.63.3. Fixes + #5129. + + + [bdubbs] - Update to Python-3.10.8. Fixes + #5133. + + + [bdubbs] - Update to xz-5.2.7. Fixes + #5133. + + + [bdubbs] - Update to tzdata-2022e. Fixes + #5134. + + + [bdubbs] - Update to linux-6.0.1. Fixes + #5135. + + + [bdubbs] - Update to dbus-1.14.4. Fixes + #5128. + + + + 2022-10-04 @@ -76,7 +144,7 @@ [bdubbs] - Update to libcap-2.66. Fixes - #5120. + #5120. [bdubbs] - Update to dbus-1.14.2. Fixes diff --git a/chapter01/how.xml b/chapter01/how.xml index b7551b2e6..a8fdddddd 100644 --- a/chapter01/how.xml +++ b/chapter01/how.xml @@ -15,10 +15,10 @@ 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 development option - during the distribution installation to be able to access these + during the distribution installation to include these tools. - As an alternative to installing a separate distribution onto your + As an alternative to installing a separate distribution on your machine, you may wish to use a LiveCD from a commercial distribution. of this book describes how - to create a new Linux native partition and file system. This is the place + to create a new Linux native partition and file system, where the new LFS system will be compiled and installed. explains which packages and - patches need to be downloaded to build an LFS system and how to store + patches must be downloaded to build an LFS system, and how to store them on the new file system. discusses the setup of an appropriate working environment. Please read carefully as it explains several - important issues you need be aware of before beginning to + important issues you should be aware of before you begin to work your way through and beyond. explains the installation of - the initial tool chain, (binutils, gcc, and glibc) using cross compilation + the initial tool chain, (binutils, gcc, and glibc) using cross-compilation techniques to isolate the new tools from the host system. shows you how to cross-compile basic utilities using the just built cross-toolchain. then enters a - "chroot" environment and uses the previously built tools to build - the additional tools needed to build and test the final system. + "chroot" environment, where we use the new tools to build all + the rest of the tools needed to create the LFS system. 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 . In the - full LFS system is built. Another advantage provided by the chroot + 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 normal. + complete, you can continue using your computer as usual. To finish the installation, the basic system configuration is set up in - , and the kernel and boot loader are set - up in . + , and the kernel and boot loader are created + in . contains information on continuing the LFS experience beyond this book. - After the steps in this book have been implemented, the computer will be - ready to reboot into the new LFS system. + After the steps in this chapter have been implemented, the computer is + ready to boot into the new LFS system. This is the process in a nutshell. Detailed information on each - step is discussed in the following chapters and package descriptions. - Items that may seem complicated will be clarified, and everything will - fall into place as you embark on the LFS adventure. + 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. diff --git a/chapter01/resources.xml b/chapter01/resources.xml index 52195bd91..ad20950b2 100644 --- a/chapter01/resources.xml +++ b/chapter01/resources.xml @@ -15,17 +15,18 @@ If during the building of the LFS system you encounter any errors, have any questions, or think there is a typo in the book, - please start by consulting the Frequently Asked Questions (FAQ) - that is located at . + please start by consulting the list of Frequently Asked Questions (FAQ), + located at . Mailing Lists - The linuxfromscratch.org server hosts a number of mailing + The linuxfromscratch.org + server hosts a number of mailing lists used for the development of the LFS project. These lists include the - main development and support lists, among others. If the FAQ does not solve + main development and support lists, among others. If the FAQ do not solve the problem you are having, the next step would be to search the mailing lists at . @@ -53,10 +54,11 @@ IRC - Several members of the LFS community offer assistance on Internet - Relay Chat (IRC). Before using this support, please make sure that your + Several members of the LFS community offer assistance via Internet + Relay Chat (IRC). Before using this support, please make sure your question is not already answered in the LFS FAQ or the mailing list - archives. You can find the IRC network at irc.libera.chat. + archives. You can find the IRC network at + irc.libera.chat. The support channel is named #lfs-support. diff --git a/chapter01/whatsnew.xml b/chapter01/whatsnew.xml index ac7a4140c..b36765261 100644 --- a/chapter01/whatsnew.xml +++ b/chapter01/whatsnew.xml @@ -11,16 +11,16 @@ What's new since the last release - In 11.3 release, --enable-default-pie + In the 11.3 release, --enable-default-pie and --enable-default-ssp are enabled for GCC. - They can mitigate some type of malicious attacks but they cannot provide - a full protection. In case if you are reading a programming textbook, - you may need to disable PIE and SSP with GCC options - -fno-pie -no-pie -fno-stack-protection - because some textbooks assume they were disabled by default. + These techniques can mitigate some malicious attacks, but they do not provide + perfect security. If you are reading LFS and a programming textbook, + you may need to disable PIE and SSP with the GCC options + -fno-pie -no-pie -fno-stack-protection, + because some textbooks assume these options are disabled by default. - Below is a list of package updates made since the previous - release of the book. + Here is a list of the packages updated since the previous + release of LFS. - + @@ -139,9 +139,9 @@ - + @@ -184,9 +184,9 @@ - + @@ -259,18 +259,18 @@ - + - - + @@ -289,9 +289,12 @@ Added: - + + &bash-fixes-patch; + + + &readline-fixes-patch; + diff --git a/chapter02/hostreqs.xml b/chapter02/hostreqs.xml index 2f2d75499..c612f5963 100644 --- a/chapter02/hostreqs.xml +++ b/chapter02/hostreqs.xml @@ -83,7 +83,7 @@ udev. If the host kernel is earlier than &min-kernel; you will need to replace - the kernel with a more up to date version. There are two ways + the kernel with a more up-to-date version. There are two ways you can go about this. First, see if your Linux vendor provides a &min-kernel; or later kernel package. If so, you may wish to install it. If your vendor doesn't offer an acceptable kernel package, or you would prefer not to @@ -148,7 +148,7 @@ To see whether your host system has all the appropriate versions, and - the ability to compile programs, run the following: + the ability to compile programs, run the following commands: cat > version-check.sh << "EOF" #!/bin/bash diff --git a/chapter02/stages.xml b/chapter02/stages.xml index 036cd34cc..04f6373c9 100644 --- a/chapter02/stages.xml +++ b/chapter02/stages.xml @@ -12,22 +12,22 @@ LFS is designed to be built in one session. That is, the instructions assume that the system will not be shut down - during the process. That does not mean that the system has to - be done in one sitting. The issue is that certain procedures - have to be re-accomplished after a reboot if resuming LFS at + during the process. This does not mean that the system has to + be built in one sitting. The issue is that certain procedures + must be repeated after a reboot when resuming LFS at different points. Chapters 1–4 - These chapters are accomplished on the host system. When - restarting, be careful of the following: + These chapters run commands on the host system. When + restarting, be certain of one thing: - Procedures done as the + Procedures performed as the root user after Section - 2.4 need to have the LFS environment variable set + 2.4 must have the LFS environment variable set FOR THE ROOT USER. @@ -44,7 +44,7 @@ These two chapters must be done as user lfs. - A su - lfs command must be issued before any task in these + A su - lfs command must be issued before performing any task in these chapters. If you don't do that, you are at risk of installing packages to the host, and potentially rendering it unusable. @@ -52,8 +52,8 @@ The procedures in are critical. If there is any - doubt about installing a package, ensure any previously expanded - tarballs are removed, then re-extract the package files, and complete all + doubt a package has been installed correctly, ensure the previously expanded + tarball has been removed, then re-extract the package, and complete all the instructions in that section. @@ -77,7 +77,7 @@ When entering chroot, the LFS environment variable must be set for root. The LFS - variable is not used after entering the chroot environment. + variable is not used after the chroot environment has been entered. diff --git a/chapter03/patches.xml b/chapter03/patches.xml index 2bba9c16d..630b21c2e 100644 --- a/chapter03/patches.xml +++ b/chapter03/patches.xml @@ -26,7 +26,7 @@ --> - + - + Sysvinit Consolidated Patch - &sysvinit-consolidated-patch-size;: diff --git a/chapter05/glibc.xml b/chapter05/glibc.xml index 2575e0201..f9d2ff2dc 100644 --- a/chapter05/glibc.xml +++ b/chapter05/glibc.xml @@ -174,7 +174,7 @@ cd build functions (compiling and linking) of the new toolchain are working as expected. To perform a sanity check, run the following commands: -echo 'int main(){}' | gcc -xc - +echo 'int main(){}' | $LFS_TGT-gcc -xc - readelf -l a.out | grep ld-linux If everything is working correctly, there should be no errors, diff --git a/chapter06/bash.xml b/chapter06/bash.xml index d462d2631..d00e685ca 100644 --- a/chapter06/bash.xml +++ b/chapter06/bash.xml @@ -45,9 +45,9 @@ Prepare Bash for compilation: -./configure --prefix=/usr \ - --build=$(support/config.guess) \ - --host=$LFS_TGT \ +./configure --prefix=/usr \ + --build=$(sh support/config.guess) \ + --host=$LFS_TGT \ --without-bash-malloc diff --git a/chapter08/bash.xml b/chapter08/bash.xml index 4ea981d5b..fa21ab346 100644 --- a/chapter08/bash.xml +++ b/chapter08/bash.xml @@ -40,6 +40,10 @@ Installation of Bash + First, fix some issues identified upstream: + +patch -Np1 -i ../&bash-fixes-patch; + Prepare Bash for compilation: ./configure --prefix=/usr \ diff --git a/chapter08/readline.xml b/chapter08/readline.xml index 889314b14..51784d2f7 100644 --- a/chapter08/readline.xml +++ b/chapter08/readline.xml @@ -49,6 +49,10 @@ sed -i '/MV.*old/d' Makefile.in sed -i '/{OLDSUFF}/c:' support/shlib-install + Now fix a problem identified upstream: + +patch -Np1 -i ../&readline-fixes-patch; + Prepare Readline for compilation: ./configure --prefix=/usr \ diff --git a/lfs-latest-git.php b/lfs-latest-git.php index 32c8150ca..d4f331697 100644 --- a/lfs-latest-git.php +++ b/lfs-latest-git.php @@ -17,7 +17,7 @@ $regex[ 'intltool' ] = "/^.*Latest version is (\d[\d\.]+\d).*$/"; $regex[ 'less' ] = "/^.*current released version is less-(\d+).*$/"; $regex[ 'mpfr' ] = "/^mpfr-([\d\.]+)\.tar.*$/"; $regex[ 'Python' ] = "/^.*Latest Python 3.*Python (3[\d\.]+\d).*$/"; -$regex[ 'systemd' ] = "/^.*v([\d]+)$/"; +$regex[ 'systemd' ] = "/^.*systemd v([\d]+)$/"; //$regex[ 'sysvinit' ] = "/^.*sysvinit-([\d\.]+)dsf\.tar.*$/"; $regex[ 'tzdata' ] = "/^.*tzdata([\d]+[a-z]).*$/"; $regex[ 'xz' ] = "/^.*xz-([\d\.]*\d).*$/"; diff --git a/packages.ent b/packages.ent index d7fb9fa2d..96d1e3ae9 100644 --- a/packages.ent +++ b/packages.ent @@ -114,10 +114,10 @@ - - + + - + @@ -245,10 +245,10 @@ - - + + - + @@ -317,10 +317,10 @@ - + - + @@ -342,10 +342,10 @@ - - + + - + @@ -422,14 +422,14 @@ - - - + + + - + - + - + - + - + - - + + @@ -694,10 +694,10 @@ - + - + @@ -717,13 +717,13 @@ - + - + - + @@ -745,20 +745,20 @@ - - + + - + - - + + - + diff --git a/part3intro/toolchaintechnotes.xml b/part3intro/toolchaintechnotes.xml index c5b8dc577..53c1f4a23 100644 --- a/part3intro/toolchaintechnotes.xml +++ b/part3intro/toolchaintechnotes.xml @@ -267,7 +267,7 @@ package on a complete LFS system, the installed content of the package should be same as the content of the same package installed in &ch-final;. The temporary packages installed in &ch-tmp-cross; or - &ch-tmp-chroot; cannot satisify this expectation because some of them + &ch-tmp-chroot; cannot satisfy this expectation because some of them are built without optional dependencies installed, and autoconf cannot perform some feature checks in &ch-tmp-cross; because of cross compilation, causing the temporary packages to lack optional features @@ -300,12 +300,11 @@ its library search order. Detailed information can be obtained from ld by passing it the --verbose flag. For example, $LFS_TGT-ld --verbose | grep SEARCH - will illustrate the current search paths and their order. It shows which - files are linked by ld by compiling a dummy program and - passing the --verbose switch to the linker. For - example, - $LFS_TGT-gcc dummy.c -Wl,--verbose 2>&1 | grep succeeded - will show all the files successfully opened during the linking. + will illustrate the current search paths and their order. Note that this + example can be run as shown only while being user + lfs. If you come back to this + page later, replace $LFS_TGT-ld with just + ld. The next package installed is gcc. An example of what can be seen during its run of configure is: @@ -318,14 +317,18 @@ checking what linker to use... /mnt/lfs/tools/i686-lfs-linux-gnu/bin/ldgcc itself, the same search paths are not necessarily used. To find out which standard linker gcc - will use, run: $LFS_TGT-gcc -print-prog-name=ld. + will use, run: $LFS_TGT-gcc -print-prog-name=ld. Again, + remove the $LFS_TGT- part if coming back to this + later. Detailed information can be obtained from gcc by passing it the -v command line option while compiling - a dummy program. For example, gcc -v dummy.c will show + a program. For example, $LFS_TGT-gcc -v + example.c (or without + $LFS_TGT- if coming back later to this) will show detailed information about the preprocessor, compilation, and assembly - stages, including gcc's included search paths and their - order. + stages, including gcc's search paths for included + headers and their order. Next installed are sanitized Linux API headers. These allow the standard C library (glibc) to interface with features that the Linux diff --git a/patches.ent b/patches.ent index 54c0c11fa..3877eebbd 100644 --- a/patches.ent +++ b/patches.ent @@ -7,11 +7,11 @@ --> - + + + + + + +