diff --git a/appendices/dependencies.xml b/appendices/dependencies.xml index 58406d1bb..df37a27d1 100644 --- a/appendices/dependencies.xml +++ b/appendices/dependencies.xml @@ -1557,7 +1557,7 @@ &dependencies; Bash, Binutils, Bison, Coreutils, Flex, GCC, Gettext, Glibc, - Gzip, Make, Pkg-config, Sed, Xz, and Zlib + Gzip, Make, OpenSSL, Pkg-config, Sed, Xz, and Zlib @@ -2332,7 +2332,7 @@ &before; - Coreutils and Linux + Coreutils, Kmod, and Linux @@ -3225,7 +3225,9 @@ &external; - None + + LZ4 + diff --git a/chapter01/changelog.xml b/chapter01/changelog.xml index f4e041624..bf9a0c717 100644 --- a/chapter01/changelog.xml +++ b/chapter01/changelog.xml @@ -42,6 +42,27 @@ 2022-02-04 + + [xry111] - Remove bash + +h directives in chroot. Fixes + #4998. + + + [xry111] - Update to man-db-2.10.0. Fixes + #5002. + + + [xry111] - Move OpenSSL before Kmod and enable OpenSSL + for Kmod build. + + + [xry111] - Update to gdbm-1.23. Fixes + #5000. + + + [xry111] - Update to tcl-8.6.12. Fixes + #5001. + [thomas] - Remove sed from glibc instructions in chapter 8. It has been applied upstream. diff --git a/chapter01/whatsnew.xml b/chapter01/whatsnew.xml index d0d17f734..5beb5ccea 100644 --- a/chapter01/whatsnew.xml +++ b/chapter01/whatsnew.xml @@ -243,9 +243,9 @@ - + diff --git a/chapter04/settingenviron.xml b/chapter04/settingenviron.xml index 05b342a53..01f46cefe 100644 --- a/chapter04/settingenviron.xml +++ b/chapter04/settingenviron.xml @@ -78,9 +78,11 @@ EOF be used as soon as they are installed. By switching off the hash function, the shell will always search the PATH when a program is to be run. As such, the shell will find the newly compiled tools in - $LFS/tools as soon as they are - available without remembering a previous version of the same program in a - different location. + $LFS/tools/bin as soon as they are + available without remembering a previous version of the same program + provided by the host distro, in + /usr/bin or + /bin. diff --git a/chapter07/chroot.xml b/chapter07/chroot.xml index d018cb218..6404c0625 100644 --- a/chapter07/chroot.xml +++ b/chapter07/chroot.xml @@ -23,7 +23,7 @@ TERM="$TERM" \ PS1='(lfs chroot) \u:\w\$ ' \ PATH=/usr/bin:/usr/sbin \ - /bin/bash --login +h + /bin/bash --login The -i option given to the env command will clear all variables of the chroot environment. After that, only @@ -44,10 +44,7 @@ Notice that /tools/bin is not in the PATH. This means that the cross toolchain will no longer be - used in the chroot environment. This occurs when the shell does not - remember the locations of executed binaries—for this - reason, hashing is switched off by passing the +h option - to bash. + used in the chroot environment. Note that the bash prompt will say I have no name! This is normal because the diff --git a/chapter07/createfiles.xml b/chapter07/createfiles.xml index 9c4f6ac54..c85d8dd83 100644 --- a/chapter07/createfiles.xml +++ b/chapter07/createfiles.xml @@ -143,7 +143,6 @@ systemd-journal:x:23: input:x:24: mail:x:34: kvm:x:61: -systemd-bus-proxy:x:72: systemd-journal-gateway:x:73: systemd-journal-remote:x:74: systemd-journal-upload:x:75: @@ -184,14 +183,7 @@ install -o tester -d /home/tester files have been created, user name and group name resolution will now work: -exec /usr/bin/bash --login +h - - Note the use of the +h directive. This tells - bash not to use its internal path hashing. Without this - directive, bash would remember the paths to binaries it has - executed. To ensure the use of the newly compiled binaries as soon as they are - installed, the +h directive will be used for the duration - of this and the next chapter. +exec /usr/bin/bash --login The login, agetty, and init programs (and others) use a number of log diff --git a/chapter08/bash.xml b/chapter08/bash.xml index 36bbcf0d9..787882b59 100644 --- a/chapter08/bash.xml +++ b/chapter08/bash.xml @@ -94,13 +94,7 @@ EOF Run the newly compiled bash program (replacing the one that is currently being executed): - exec /usr/bin/bash --login +h - - - The parameters used make the bash - process an interactive login shell and continues to disable hashing so - that new programs are found as they become available. - + exec /usr/bin/bash --login diff --git a/chapter08/chapter08.xml b/chapter08/chapter08.xml index a67bb9c7c..0799f8829 100644 --- a/chapter08/chapter08.xml +++ b/chapter08/chapter08.xml @@ -59,10 +59,10 @@ + - @@ -106,6 +106,6 @@ - + diff --git a/chapter08/revisedchroot.xml b/chapter08/cleanup.xml similarity index 63% rename from chapter08/revisedchroot.xml rename to chapter08/cleanup.xml index e5f707da7..20c4c9e23 100644 --- a/chapter08/revisedchroot.xml +++ b/chapter08/cleanup.xml @@ -5,8 +5,8 @@ %general-entities; ]> - - + + Cleaning Up @@ -14,28 +14,6 @@ rm -rf /tmp/* - Now log out and reenter the chroot environment with an updated - chroot command. From now on, use this updated chroot command any time - you need to reenter the chroot environment after exiting: - -logout - -chroot "$LFS" /usr/bin/env -i \ - HOME=/root TERM="$TERM" \ - PS1='(lfs chroot) \u:\w\$ ' \ - PATH=/usr/bin:/usr/sbin \ - /usr/bin/bash --login - - Here the +h option is not used anymore, since - all the previous programs have been replaced: hashing is therefore - possible. - - If the virtual kernel file systems have been unmounted, either manually - or through a reboot, ensure that the virtual kernel file systems are mounted - when reentering the chroot. This process was explained in and . - There are also several files installed in the /usr/lib and /usr/libexec directories with a file name extension of .la. These are "libtool archive" files. As already said, they are only useful when linking with static diff --git a/chapter08/gcc.xml b/chapter08/gcc.xml index 225927e3a..669ef56c1 100644 --- a/chapter08/gcc.xml +++ b/chapter08/gcc.xml @@ -43,7 +43,7 @@ At first, fix an issue breaking libasan.a building this package - with Glibc-2.34: + with Glibc-2.34 or later: sed -e '/static.*SIGSTKSZ/d' \ -e 's/return kAltStackSize/return SIGSTKSZ * 4/' \ diff --git a/chapter08/gdbm.xml b/chapter08/gdbm.xml index 93e1f6a11..431987f52 100644 --- a/chapter08/gdbm.xml +++ b/chapter08/gdbm.xml @@ -73,14 +73,12 @@ To test the results, issue: -make -k check - +make check + Install the package: make install diff --git a/chapter08/glibc.xml b/chapter08/glibc.xml index f539e8477..94e4d16bf 100644 --- a/chapter08/glibc.xml +++ b/chapter08/glibc.xml @@ -200,7 +200,7 @@ esac touch /etc/ld.so.conf - Fix the generated Makefile to skip an unneeded sanity check + Fix the Makefile to skip an unneeded sanity check that fails in the LFS partial environment: diff --git a/chapter08/kmod.xml b/chapter08/kmod.xml index 6d65bc586..97539bb0f 100644 --- a/chapter08/kmod.xml +++ b/chapter08/kmod.xml @@ -45,6 +45,7 @@ ./configure --prefix=/usr \ --sysconfdir=/etc \ + --with-openssl \ --with-xz \ --with-zstd \ --with-zlib @@ -53,7 +54,21 @@ The meaning of the configure options: - --with-xz, --with-zlib, --with-zstd + + --with-openssl + + + This option enables Kmod to handle PKCS7 signatures for + kernel modules. + + + + + + --with-xz, + --with-zlib, and + --with-zstd + These options enable Kmod to handle compressed kernel modules. @@ -65,9 +80,9 @@ make - This package does not come with a test suite that can be run in the - LFS chroot environment. At a minimum the git program is required and - several tests will not run outside of a git repository. + The test suite of this package requires raw kernel headers + (not the sanitized kernel headers installed earlier), + which are beyond the scope of LFS. Install the package and create symlinks for compatibility with Module-Init-Tools (the package that previously handled diff --git a/chapter08/man-db.xml b/chapter08/man-db.xml index b60e417e8..642a4e1df 100644 --- a/chapter08/man-db.xml +++ b/chapter08/man-db.xml @@ -43,24 +43,24 @@ Prepare Man-DB for compilation: -./configure --prefix=/usr \ +./configure --prefix=/usr \ --docdir=/usr/share/doc/man-db-&man-db-version; \ - --sysconfdir=/etc \ - --disable-setuid \ - --enable-cache-owner=bin \ - --with-browser=/usr/bin/lynx \ - --with-vgrind=/usr/bin/vgrind \ + --sysconfdir=/etc \ + --disable-setuid \ + --enable-cache-owner=bin \ + --with-browser=/usr/bin/lynx \ + --with-vgrind=/usr/bin/vgrind \ --with-grap=/usr/bin/grap -./configure --prefix=/usr \ +./configure --prefix=/usr \ --docdir=/usr/share/doc/man-db-&man-db-version; \ - --sysconfdir=/etc \ - --disable-setuid \ - --enable-cache-owner=bin \ - --with-browser=/usr/bin/lynx \ - --with-vgrind=/usr/bin/vgrind \ - --with-grap=/usr/bin/grap \ - --with-systemdtmpfilesdir= \ + --sysconfdir=/etc \ + --disable-setuid \ + --enable-cache-owner=bin \ + --with-browser=/usr/bin/lynx \ + --with-vgrind=/usr/bin/vgrind \ + --with-grap=/usr/bin/grap \ + --with-systemdtmpfilesdir= \ --with-systemdsystemunitdir= @@ -306,8 +306,8 @@ Installed directories - accessdb, apropos (link to whatis), catman, lexgrog, man, mandb, - manpath, and whatis + accessdb, apropos (link to whatis), catman, lexgrog, man, + man-recode, mandb, manpath, and whatis libman.so and libmandb.so (both in /usr/lib/man-db) /usr/lib/man-db, /usr/libexec/man-db, and /usr/share/doc/man-db-&man-db-version; @@ -373,6 +373,16 @@ + + man-recode + + Converts manual pages to another encoding + + man-recode + + + + mandb diff --git a/chapter08/systemd.xml b/chapter08/systemd.xml index 9b3196b0f..6a51e4e9d 100644 --- a/chapter08/systemd.xml +++ b/chapter08/systemd.xml @@ -58,7 +58,6 @@ mkdir -p build cd build -LANG=en_US.UTF-8 \ meson --prefix=/usr \ --sysconfdir=/etc \ --localstatedir=/var \ @@ -131,7 +130,7 @@ meson --prefix=/usr \ services responsible for setting up the /etc/group and /etc/passwd files. Both files - were created earlier in this chapter. This daemon is not useful + were created in the previous chapter. This daemon is not useful on an LFS system since user accounts are manually created. @@ -173,11 +172,11 @@ meson --prefix=/usr \ Compile the package: -LANG=en_US.UTF-8 ninja +ninja Install the package: -LANG=en_US.UTF-8 ninja install +ninja install Install the man pages: diff --git a/chapter08/tcl.xml b/chapter08/tcl.xml index 7e5d4357f..4e03f8625 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 f5b544bae..adc4d8358 100644 --- a/chapter08/util-linux.xml +++ b/chapter08/util-linux.xml @@ -45,7 +45,9 @@ Prepare Util-linux for compilation: ./configure ADJTIME_PATH=/var/lib/hwclock/adjtime \ + --bindir=/usr/bin \ --libdir=/usr/lib \ + --sbindir=/usr/sbin \ --docdir=/usr/share/doc/util-linux-&util-linux-version; \ --disable-chfn-chsh \ --disable-login \ @@ -61,7 +63,9 @@ runstatedir=/run ./configure ADJTIME_PATH=/var/lib/hwclock/adjtime \ + --bindir=/usr/bin \ --libdir=/usr/lib \ + --sbindir=/usr/sbin \ --docdir=/usr/share/doc/util-linux-&util-linux-version; \ --disable-chfn-chsh \ --disable-login \ @@ -259,15 +263,15 @@ rm -rf DESTDIR addpart, agetty, blkdiscard, blkid, blkzone, blockdev, cal, cfdisk, chcpu, chmem, choom, chrt, col, colcrt, colrm, column, ctrlaltdel, delpart, dmesg, - eject, fallocate, fdformat, fdisk, fincore, findfs, findmnt, flock, fsck, + eject, fallocate, fdisk, fincore, findfs, findmnt, flock, fsck, fsck.cramfs, fsck.minix, fsfreeze, fstrim, getopt, hexdump, hwclock, - i386, ionice, ipcmk, ipcrm, ipcs, isosize, kill, last, lastb (link to + i386, ionice, ipcmk, ipcrm, ipcs, irqtop, isosize, kill, last, lastb (link to last), ldattach, linux32, linux64, logger, look, losetup, lsblk, lscpu, - lsipc, lslocks, lslogins, lsmem, lsns, mcookie, mesg, mkfs, mkfs.bfs, mkfs.cramfs, mkfs.minix, mkswap, + lsipc, lsirq, lslocks, lslogins, lsmem, lsns, mcookie, mesg, mkfs, mkfs.bfs, mkfs.cramfs, mkfs.minix, mkswap, more, mount, mountpoint, namei, nsenter, partx, pivot_root, prlimit, readprofile, rename, renice, resizepart, rev, rfkill, rtcwake, script, - scriptreplay, setarch, setsid, setterm, sfdisk, sulogin, swaplabel, - swapoff (link to swapon), swapon, switch_root, taskset, ul, + scriptlive, scriptreplay, setarch, setsid, setterm, sfdisk, sulogin, swaplabel, + swapoff (link to swapon), swapon, switch_root, taskset, uclampset, ul, umount, uname26, unshare, utmpdump, uuidd, uuidgen, uuidparse, wall, wdctl, whereis, wipefs, x86_64, and zramctl libblkid.so, libfdisk.so, libmount.so, @@ -502,16 +506,6 @@ rm -rf DESTDIR - - fdformat - - Low-level formats a floppy disk - - fdformat - - - - fdisk @@ -701,6 +695,17 @@ rm -rf DESTDIR + + irqtop + + Displays kernel interrupt counter information in + top(1) style view + + irqtop + + + + isosize @@ -836,6 +841,16 @@ rm -rf DESTDIR + + lsirq + + Displays kernel interrupt counter information + + lsirq + + + + lslocks @@ -1116,6 +1131,16 @@ rm -rf DESTDIR + + scriptlive + + Re-run session typescripts using timing information + + scriptlive + + + + scriptreplay @@ -1220,18 +1245,6 @@ rm -rf DESTDIR - - tailf - - Tracks the growth of a log file; displays the last 10 lines - of a log file, then continues displaying any new entries in the - log file as they are created - - tailf - - - - taskset @@ -1242,6 +1255,17 @@ rm -rf DESTDIR + + uclampset + + Manipulate the utilization clamping attributes of the + system or a process + + uclampset + + + + ul diff --git a/chapter09/networkd.xml b/chapter09/networkd.xml index 42c7dc730..63e67d000 100644 --- a/chapter09/networkd.xml +++ b/chapter09/networkd.xml @@ -192,7 +192,12 @@ EOF When using systemd-resolved for DNS configuration, it creates the file - /run/systemd/resolve/resolv.conf. + /run/systemd/resolve/stub-resolv.conf. + And, if /etc/resolv.conf does not exist, it + will be created by systemd-resolved as a symlink to + /run/systemd/resolve/stub-resolv.conf. So it's + unnecessary to create a /etc/resolv.conf + manually.