diff --git a/chapter01/changelog.xml b/chapter01/changelog.xml index fd2f14e05..f00239243 100644 --- a/chapter01/changelog.xml +++ b/chapter01/changelog.xml @@ -40,6 +40,48 @@ appropriate for the entry or if needed the entire day's listitem. --> + + 2024-02-01 + + + [bdubbs] - Update to openssl-3.2.1. Fixes + #5425. + + + [bdubbs] - Update to zlib-1.3.1. Fixes + #5419. + + + [bdubbs] - Update to xz-5.4.6. Fixes + #5423. + + + [bdubbs] - Update to linux-6.7.2. Fixes + #5422. + + + [bdubbs] - Update to iana-etc-20240125. Addresses + #5006. + + + [bdubbs] - Update to binutils-2.42. Fixes + #5424. + + + [bdubbs] - Update to acl-2.3.2. Fixes + #5421. + + + [bdubbs] - Update upstream fixes for readline-8.2. Fixes + #5420. + + + [bdubbs] - Apply upstream fix for bash-5.2.21. Fixes + #5420. + + + + 2024-01-21 diff --git a/chapter01/whatsnew.xml b/chapter01/whatsnew.xml index 2dd0a8d02..ceca1c108 100644 --- a/chapter01/whatsnew.xml +++ b/chapter01/whatsnew.xml @@ -26,9 +26,9 @@ - + Attr-&attr-version; @@ -44,9 +44,9 @@ Bc-&bc-version; - + @@ -290,6 +290,10 @@ Added: + + &bash-upstream-fixes-patch; + + setuptools-&setuptools-version; diff --git a/chapter02/hostreqs.xml b/chapter02/hostreqs.xml index 255692718..f9988cd52 100644 --- a/chapter02/hostreqs.xml +++ b/chapter02/hostreqs.xml @@ -29,9 +29,10 @@ minimum versions indicated. This should not be an issue for most modern Linux distributions. Also note that many distributions will place software headers into separate packages, often in the form of - <package-name>-devel or - <package-name>-dev. Be sure to install those if - your distribution provides them. + <package-name>-devel + or + <package-name>-dev. + Be sure to install those if your distribution provides them. Earlier versions of the listed software packages may work, but have not been tested. diff --git a/chapter02/mounting.xml b/chapter02/mounting.xml index 60e5cdc62..4db0f5bfc 100644 --- a/chapter02/mounting.xml +++ b/chapter02/mounting.xml @@ -16,7 +16,7 @@ LFS environment variable described in the previous section. - Strictly speaking, one cannot "mount a partition." One mounts the file + Strictly speaking, one cannot mount a partition. One mounts the file system embedded in that partition. But since a single partition can't contain more than one file system, people often speak of the partition and the associated file system as if they were one and the same. diff --git a/chapter03/patches.xml b/chapter03/patches.xml index 50ff56a6f..106527518 100644 --- a/chapter03/patches.xml +++ b/chapter03/patches.xml @@ -27,14 +27,14 @@ --> - + Install the package: diff --git a/chapter08/coreutils.xml b/chapter08/coreutils.xml index 3357fabc5..96c46996d 100644 --- a/chapter08/coreutils.xml +++ b/chapter08/coreutils.xml @@ -1261,8 +1261,8 @@ sed -i 's/"1"/"8"/' /usr/share/man/man8/chroot.8 yes - Repeatedly outputs y, or a given string, until - killed + Repeatedly outputs y or a given string, + until killed yes diff --git a/chapter08/expect.xml b/chapter08/expect.xml index 95dc8beae..810bc55a2 100644 --- a/chapter08/expect.xml +++ b/chapter08/expect.xml @@ -92,8 +92,8 @@ make test If any test fails with the message - The system has no more ptys. Ask your system - administrator to create more, it indicates + The system has no more ptys. Ask your system + administrator to create more, it indicates you've not mounted the devpts file system correctly. You need to exit from the chroot environment, read diff --git a/chapter08/glibc.xml b/chapter08/glibc.xml index d7e7c9d1d..3cb51c2d0 100644 --- a/chapter08/glibc.xml +++ b/chapter08/glibc.xml @@ -73,7 +73,6 @@ cd build --disable-werror \ --enable-kernel=&min-kernel; \ --enable-stack-protector=strong \ - --with-headers=/usr/include \ --disable-nscd \ libc_cv_slibdir=/usr/lib ../configure --prefix=/usr \ @@ -110,15 +109,10 @@ cd build This option increases system security by adding extra code to check for buffer overflows, such as stack - smashing attacks. - - - - - --with-headers=/usr/include - - This option tells the build system where to find the - kernel API headers. + smashing attacks. Note that Glibc always explicitly overrides + the default of GCC, so this option is still needed even though + we've already specified for + GCC. diff --git a/chapter08/stripping.xml b/chapter08/stripping.xml index e9972e880..17eb12da7 100644 --- a/chapter08/stripping.xml +++ b/chapter08/stripping.xml @@ -52,7 +52,7 @@ The ELF loader's name is ld-linux-x86-64.so.2 on 64-bit systems and ld-linux.so.2 on 32-bit systems. The construct below selects the correct name for the current architecture, excluding anything ending - with g, in case the commands below have already been + with g, in case the commands below have already been run. diff --git a/chapter09/chapter09.xml b/chapter09/chapter09.xml index 1f6dda19c..3f4db0d6b 100644 --- a/chapter09/chapter09.xml +++ b/chapter09/chapter09.xml @@ -26,14 +26,13 @@ - - + diff --git a/chapter09/consoled.xml b/chapter09/consoled.xml index f35a586fe..ce922d6a8 100644 --- a/chapter09/consoled.xml +++ b/chapter09/consoled.xml @@ -74,6 +74,25 @@ + We'll use C.UTF-8 as the locale for interactive + sessions in the Linux console in The console fonts shipped by + the Kbd package containing the glyphs for + all characters from the program messages in the C.UTF-8 + locale are LatArCyrHeb*.psfu.gz, + LatGrkCyr*.psfu.gz, + Lat2-Terminus16.psfu.gz, and + pancyrillic.f16.psfu.gz in + /usr/share/consolefonts (the other + shipped console fonts lack glyphs of some characters like the Unicode + left/right quotation marks and the Unicode English dash). So set one of + them, for example Lat2-Terminus16.psfu.gz as the + default console font: + + +echo FONT=Lat2-Terminus16 > /etc/vconsole.conf + An example for a German keyboard and console is given below: - diff --git a/chapter09/networkd.xml b/chapter09/networkd.xml index 363e8d883..6c2935de1 100644 --- a/chapter09/networkd.xml +++ b/chapter09/networkd.xml @@ -91,7 +91,8 @@ - Mask udev's .link file for the default policy: + Mask udev's .link file + for the default policy: ln -s /dev/null /etc/systemd/network/99-default.link @@ -101,9 +102,9 @@ Create a manual naming scheme, for example by naming the interfaces something like internet0, dmz0, or lan0. - To do that, create .link files in /etc/systemd/network/ that - select an explicit name or a better naming scheme for your - network interfaces. For example: + To do that, create .link + files in /etc/systemd/network/ that select an explicit name or a + better naming scheme for your network interfaces. For example: cat > /etc/systemd/network/10-ether0.link << "EOF" diff --git a/chapter09/profile.xml b/chapter09/profile.xml deleted file mode 100644 index 55cc5dbb0..000000000 --- a/chapter09/profile.xml +++ /dev/null @@ -1,147 +0,0 @@ - - - %general-entities; -]> - - - - - The Bash Shell Startup Files - - - /etc/profile - - - The shell program /bin/bash (hereafter referred to - as the shell) uses a collection of startup files to help - create the environment to run in. Each file has a specific use and may affect - login and interactive environments differently. The files in the /etc directory provide global settings. If - equivalent files exist in the home directory, they may override the global - settings. - - An interactive login shell is started after a successful login, using - /bin/login, by reading the /etc/passwd - file. An interactive non-login shell is started at the command-line (e.g., - [prompt]$/bin/bash). A non-interactive - shell is usually present when a shell script is running. It is non-interactive - because it is processing a script and not waiting for user input between - commands. - -For more information, see the Bash Startup Files and - Interactive Shells sections in the Bash - Features chapter of the Bash info pages (info bash). - - The files /etc/profile and - ~/.bash_profile are read when the shell is - invoked as an interactive login shell. - - The base /etc/profile below sets some - environment variables necessary for native language support. Setting - them properly results in: - - - - The output of programs translated into the native language - - - Correct classification of characters into letters, digits and other - classes. This is necessary for bash to properly accept - non-ASCII characters in command lines in non-English locales - - - The correct alphabetical sorting order for the country - - - Appropriate default paper size - - - Correct formatting of monetary, time, and date values - - - - Replace <ll> below with the two-letter code - for the desired language (e.g., en) and - <CC> with the two-letter code for the appropriate - country (e.g., GB). <charmap> should - be replaced with the canonical charmap for your chosen locale. Optional - modifiers such as @euro may also be present. - - The list of all locales supported by Glibc can be obtained by running - the following command: - -locale -a - - Charmaps can have a number of aliases, e.g., ISO-8859-1 - is also referred to as iso8859-1 and iso88591. - Some applications cannot handle the various synonyms correctly (e.g., require - that UTF-8 is written as UTF-8, not - utf8), so it is safest in most - cases to choose the canonical name for a particular locale. To determine - the canonical name, run the following command, where <locale - name> is the output given by locale -a for - your preferred locale (en_GB.iso88591 in our example). - -LC_ALL=<locale name> locale charmap - - For the en_GB.iso88591 locale, the above command - will print: - -ISO-8859-1 - - This results in a final locale setting of en_GB.ISO-8859-1. - It is important that the locale found using the heuristic above is tested before - it is added to the Bash startup files: - -LC_ALL=<locale name> locale language -LC_ALL=<locale name> locale charmap -LC_ALL=<locale name> locale int_curr_symbol -LC_ALL=<locale name> locale int_prefix - - The above commands should print the language name, the character - encoding used by the locale, the local currency, and the prefix to dial - before the telephone number in order to get into the country. If any of the - commands above fail with a message similar to the one shown below, this means - that your locale was either not installed in - or is not supported by the default installation of Glibc. - -locale: Cannot set LC_* to default locale: No such file or directory - - If this happens, you should either install the desired locale using the - localedef command, or consider choosing a different locale. - Further instructions assume that there are no such error messages from - Glibc. - - Other packages may also function incorrectly (but will not necessarily - display any error messages) if the locale name does not meet their expectations. - In such cases, investigating how other Linux distributions support your locale - might provide some useful information. - - Once the proper locale settings have been determined, create the - /etc/profile file: - -cat > /etc/profile << "EOF" -# Begin /etc/profile - -export LANG=<ll>_<CC>.<charmap><@modifiers> - -# End /etc/profile -EOF - - The C (default) and en_US.utf8 (the recommended - one for United States English users) locales are different. C - uses the US-ASCII 7-bit character set, and treats bytes with the high-order bit set - on as invalid characters. That's why, e.g., the ls command - displays them as question marks in that locale. Also, an attempt to send - mail with such characters from Mutt or Pine results in non-RFC-conforming - messages being sent (the charset in the outgoing mail is indicated as unknown - 8-bit). So you can only use the C locale if you are sure - you will never need 8-bit characters. - - UTF-8 based locales are not supported well by some programs. - Work is in progress to document and, if possible, fix such problems. See - . - - diff --git a/chapter09/usage.xml b/chapter09/usage.xml index 85b35d16d..6b5441bba 100644 --- a/chapter09/usage.xml +++ b/chapter09/usage.xml @@ -432,6 +432,40 @@ EOF Some examples: + + + We'll use C.UTF-8 as the locale for interactive + sessions in the Linux console in so we should set + UNICODE to 1. And the console + fonts shipped by the Kbd package + containing the glyphs for all characters from the program messages + in the C.UTF-8 locale are + LatArCyrHeb*.psfu.gz, + LatGrkCyr*.psfu.gz, + Lat2-Terminus16.psfu.gz, and + pancyrillic.f16.psfu.gz in + /usr/share/consolefonts (the + other shipped console fonts lack glyphs of some characters like the + Unicode left/right quotation marks and the Unicode English dash). + So set one of them, for example + Lat2-Terminus16.psfu.gz as the default console + font: + + + +cat > /etc/sysconfig/console << "EOF" +# Begin /etc/sysconfig/console + +UNICODE="1" +FONT="Lat2-Terminus16" + +# End /etc/sysconfig/console +EOF + + For a non-Unicode setup, only the KEYMAP and FONT variables are @@ -526,7 +560,7 @@ EOF languages, because there accents are added to unaccented ASCII characters, or two ASCII characters are composed together. However, in UTF-8 mode it is a problem; e.g., for the Greek language, where one - sometimes needs to put an accent on the letter alpha. + sometimes needs to put an accent on the letter α. The solution is either to avoid the use of UTF-8, or to install the X window system, which doesn't have this limitation, in its input handling. diff --git a/packages.ent b/packages.ent index 18fadcc2c..d617c82ca 100644 --- a/packages.ent +++ b/packages.ent @@ -13,10 +13,10 @@ *-knl-* Package info for Kernel stuff --> - - + + - + @@ -65,10 +65,10 @@ - - + + - + @@ -317,10 +317,10 @@ - - + + - + @@ -440,12 +440,12 @@ - + - + - + - + diff --git a/patches.ent b/patches.ent index d27c717de..c2f957aad 100644 --- a/patches.ent +++ b/patches.ent @@ -2,6 +2,10 @@ + + + + @@ -14,9 +18,9 @@ - - - + + + @@ -26,9 +30,9 @@ - - - + + +