diff --git a/appendices/dependencies.xml b/appendices/dependencies.xml
index 1fbab8e10..03eed010f 100644
--- a/appendices/dependencies.xml
+++ b/appendices/dependencies.xml
@@ -1474,37 +1474,37 @@
- Jinja2
+ Jinja2
-
+
&dependencies;
MarkupSafe and Python
-
+
&runtime;
MarkupSafe and Python
-
+
&testsuites;
No test suite available
-
+
&before;
Systemd
-
+
&external;
None
@@ -2071,37 +2071,37 @@
- MarkupSafe
+ MarkupSafe
-
+
&dependencies;
Python
-
+
&runtime;
Python
-
+
&testsuites;
No test suite available
-
+
&before;
Jinja2
-
+
&external;
None
@@ -2135,7 +2135,10 @@
&before;
- Systemd
+
+ None
+ Systemd
+
@@ -2749,9 +2752,9 @@
- Systemd
+ Systemd
-
+
&dependencies;
Acl, Attr, Bash, Binutils, Coreutils, Diffutils, Expat, Gawk,
@@ -2760,28 +2763,28 @@
-
+
&runtime;
Acl, Attr, Glibc, Libcap, and Util-linux
-
+
&testsuites;
None
-
+
&before;
None
-
+
&external;
@@ -2836,37 +2839,37 @@
- Sysvinit
+ Sysvinit
-
+
&dependencies;
Binutils, Coreutils, GCC, Glibc, Make, and Sed
-
+
&runtime;
Glibc
-
+
&testsuites;
No test suite available
-
+
&before;
None
-
+
&external;
None
@@ -3109,7 +3112,10 @@
&before;
- Jinja2
+
+ None
+ Jinja2
+
@@ -3262,7 +3268,7 @@
&before;
- GCC and Systemd
+ GCC and Systemd
diff --git a/chapter01/changelog.xml b/chapter01/changelog.xml
index d15590c1f..196c32fe5 100644
--- a/chapter01/changelog.xml
+++ b/chapter01/changelog.xml
@@ -39,6 +39,63 @@
or as
appropriate for the entry or if needed the entire day's listitem.
-->
+
+ 2023-01-01
+
+
+ [thomas] - Remove an obsolete sed from mpc.
+
+
+
+
+
+ 2022-12-31
+
+
+ [bdubbs] - Update to iana-etc-20221220. Addresses
+ #5006.
+
+
+ [bdubbs] - Update to sysvinit-3.06. Fixes
+ #5186.
+
+
+ [bdubbs] - Update to mpc-1.3.1. Fixes
+ #5185.
+
+
+ [bdubbs] - Update to meson-1.0.0. Fixes
+ #5190.
+
+
+ [bdubbs] - Update to man-pages-6.02. Fixes
+ #5188.
+
+
+ [bdubbs] - Update to linux-6.1.1. Fixes
+ #5179.
+
+
+ [bdubbs] - Update to file-5.44. Fixes
+ #5191.
+
+
+ [bdubbs] - Update to bc-6.2.1. Fixes
+ #5189.
+
+
+
+
+
+ 2022-12-28
+
+
+ [renodr] - Patch systemd against CVE-2022-4415. Fixes
+ #5187.
+
+
+
+
2022-12-15
diff --git a/chapter01/whatsnew.xml b/chapter01/whatsnew.xml
index 207240036..86992592b 100644
--- a/chapter01/whatsnew.xml
+++ b/chapter01/whatsnew.xml
@@ -299,6 +299,10 @@
&readline-fixes-patch;
+
+
+ &systemd-upstream-patch;
+
diff --git a/chapter03/patches.xml b/chapter03/patches.xml
index 033ccd00c..05b49d319 100644
--- a/chapter03/patches.xml
+++ b/chapter03/patches.xml
@@ -135,7 +135,7 @@
-
+
+
Remove two unneeded groups,
render and
diff --git a/chapter09/profile.xml b/chapter09/profile.xml
index e47153830..1b87632f7 100644
--- a/chapter09/profile.xml
+++ b/chapter09/profile.xml
@@ -16,10 +16,10 @@
The shell program /bin/bash (hereafter referred to
as the shell
) uses a collection of startup files to help
- create an environment to run in. Each file has a specific use and may affect
+ 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 an
- equivalent file exists in the home directory, it may override the global
+ class="directory">/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
@@ -30,8 +30,9 @@
because it is processing a script and not waiting for user input between
commands.
- For more information, see info bash under the
- Bash Startup Files and Interactive Shells section.
+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
@@ -91,8 +92,8 @@
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 prior
- to it being added to the Bash startup files:
+ 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
@@ -129,9 +130,9 @@ LC_ALL=<locale name> locale int_prefix
For example, one would have to change "de_DE.ISO-8859-15@euro" to
"de_DE@euro" in order to get this locale recognized by Xlib.
-->
- Other packages can also function incorrectly (but may not necessarily
+ Other packages may also function incorrectly (but will not necessarily
display any error messages) if the locale name does not meet their expectations.
- In those cases, investigating how other Linux distributions support your locale
+ 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
@@ -147,16 +148,16 @@ 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 bit set
- as invalid characters. That's why, e.g., the ls command
- substitutes them with question marks in that locale. Also, an attempt to send
+ 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 use the C
locale only if you are sure that
+ 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
+ Work is in progress to document and, if possible, fix such problems. See
.
diff --git a/chapter09/usage.xml b/chapter09/usage.xml
index 88c0296d6..2e9843988 100644
--- a/chapter09/usage.xml
+++ b/chapter09/usage.xml
@@ -19,25 +19,29 @@
How Do the System V Bootscripts Work?
- Linux uses a special booting facility named SysVinit that is based on a
- concept of run-levels. It can be quite different from one
- system to another, so it cannot be assumed that because things worked in one
- particular Linux distribution, they should work the same in LFS too. LFS has its
- own way of doing things, but it respects generally accepted standards.
+ This version of LFS uses a special booting facility named SysVinit, based on a
+ series of run levels. The boot procedure can be quite different from one
+ system to another; the fact that things worked one way in a particular Linux
+ distribution does not guarantee they will work the same way in LFS. LFS has its
+ own way of doing things, but it does respect generally accepted standards.
+
+ There is an alternative boot procedure called systemd. We will
+ not discuss that boot process any further here. For a detailed description visit
+ .
SysVinit (which will be referred to as init
from now on)
- works using a run-levels scheme. There are seven (numbered 0 to 6) run-levels
- (actually, there are more run-levels, but they are for special cases and are
- generally not used. See init(8) for more details), and
- each one of those corresponds to the actions the computer is supposed to
- perform when it starts up. The default run-level is 3. Here are the
- descriptions of the different run-levels as they are implemented in LFS:
+ uses a run levels scheme. There are seven run levels, numbered 0 to 6.
+ (Actually, there are more run levels, but the others are for special cases and are
+ generally not used. See init(8) for more details.)
+ Each one of the seven corresponds to actions the computer is supposed to
+ perform when it starts up or shuts down. The default run level is 3. Here are the
+ descriptions of the different run levels as they are implemented in LFS:
0: halt the computer
1: single-user mode
-2: reserved for customization, otherwise does the same as 3
+2: reserved for customization, otherwise the same as 3
3: multi-user mode with networking
-4: reserved for customization, otherwise does the same as 3
+4: reserved for customization, otherwise the same as 3
5: same as 4, it is usually used for GUI login (like GNOME's gdm or LXDE's lxdm)
6: reboot the computer
@@ -45,9 +49,9 @@
Classically, run level 2 above was defined as
"multi-user mode without networking", but this was only the case
- many years ago when multiple users could log into a system connected via
- serial ports. In today's environment it makes no sense and
- we designate it now as "reserved".
+ many years ago when multiple users could connect to a system via
+ serial ports. In today's environment it makes no sense, and
+ we now say it is "reserved".
@@ -65,8 +69,8 @@
/etc/inittab
- During the kernel initialization, the first program that is run
- is either specified on the command line or, by default
+ During kernel initialization, the first program that is run
+ (if not overridden on the command line) is
init. This program reads the initialization file
/etc/inittab. Create this file with:
@@ -101,8 +105,8 @@ s1:1:respawn:/sbin/sulogin
EOF
An explanation of this initialization file is in the man page for
- inittab. For LFS, the key command that is run is
- rc. The initialization file above will instruct
+ inittab. In LFS, the key command is
+ rc. The initialization file above instructs
rc to run all the scripts starting with an S in the
/etc/rc.d/rcS.d directory
followed by all the scripts starting with an S in the
functions in /lib/lsb/init-functions.
This library also reads an optional configuration file,
/etc/sysconfig/rc.site. Any of the system
- configuration file parameters described in subsequent sections can be
- alternatively placed in this file allowing consolidation of all system
+ configuration parameters described in subsequent sections can be
+ placed in this file, allowing consolidation of all system
parameters in this one file.
As a debugging convenience, the functions script also logs all output
to /run/var/bootlog. Since the /run directory is a tmpfs, this file is not
- persistent across boots, however it is appended to the more permanent file
+ persistent across boots; however, it is appended to the more permanent file
/var/log/boot.log at the end of the boot process.
Changing Run Levels
- Changing run-levels is done with init
+ Changing run levels is done with init
<runlevel>, where
- <runlevel> is the target run-level. For example, to
+ <runlevel> is the target run level. For example, to
reboot the computer, a user could issue the init 6 command,
which is an alias for the reboot command. Likewise,
init 0 is an alias for the halt
@@ -136,15 +140,15 @@ EOF
There are a number of directories under /etc/rc.d that look like rc?.d (where ? is the number of the run-level) and
+ class="directory">rc?.d (where ? is the number of the run level) and
rcS.d, all containing a number of
- symbolic links. Some begin with a K, the others begin with
+ symbolic links. Some links begin with a K; the others begin with
an S, and all of them have two numbers following the
initial letter. The K means to stop (kill) a service and the S means to start a
service. The numbers determine the order in which the scripts are run, from 00
- to 99—the lower the number the earlier it gets executed. When
- init switches to another run-level, the appropriate services
- are either started or stopped, depending on the runlevel chosen.
+ to 99—the smaller the number, the sooner tht script runs. When
+ init switches to another run level, the appropriate services
+ are either started or stopped, depending on the run level chosen.
The real scripts are in /etc/rc.d/init.d. They do the actual work, and
@@ -227,25 +231,25 @@ EOF
The /etc/rc.d/init.d/udev initscript starts
udevd, triggers any "coldplug" devices that have
- already been created by the kernel and waits for any rules to complete.
+ already been created by the kernel, and waits for any rules to complete.
The script also unsets the uevent handler from the default of
/sbin/hotplug . This is done because the kernel no
- longer needs to call out to an external binary. Instead
+ longer needs to call an external binary. Instead,
udevd will listen on a netlink socket for uevents that
the kernel raises.
- The /etc/rc.d/init.d/udev_retry initscript takes
+ The /etc/rc.d/init.d/udev_retry script takes
care of re-triggering events for subsystems whose rules may rely on
- filesystems that are not mounted until the mountfs
+ file systems that are not mounted until the mountfs
script is run (in particular, /usr
and /var may cause this). This
script runs after the mountfs script, so those rules
(if re-triggered) should succeed the second time around. It is
- configured from the /etc/sysconfig/udev_retry file;
+ configured by the /etc/sysconfig/udev_retry file;
any words in this file other than comments are considered subsystem names
to trigger at retry time. To find the subsystem of a device, use
udevadm info --attribute-walk <device> where
- <device> is an absolute path in /dev or /sys such as /dev/sr0 or
+ <device> is an absolute path in /dev or /sys, such as /dev/sr0, or
/sys/class/rtc.
For information on kernel module loading and udev, see
@@ -260,13 +264,13 @@ EOF
configuring
The setclock script reads the time from the hardware
- clock, also known as the BIOS or the Complementary Metal Oxide Semiconductor
+ clock, also known as the BIOS or Complementary Metal Oxide Semiconductor
(CMOS) clock. If the hardware clock is set to UTC, this script will convert the
hardware clock's time to the local time using the
/etc/localtime file (which tells the
- hwclock program which timezone to use). There is no
+ hwclock program which time zone to use). There is no
way to detect whether or not the hardware clock is set to UTC, so this
- needs to be configured manually.
+ must be configured manually.
The setclock program is run via
udev when the kernel detects the hardware
@@ -279,9 +283,9 @@ EOF
clock. If this time matches whatever your watch says, then the hardware clock is
set to local time. If the output from hwclock is not local
time, chances are it is set to UTC time. Verify this by adding or subtracting
- the proper amount of hours for the timezone to the time shown by
+ the proper number of hours for your time zone to the time shown by
hwclock. For example, if you are currently in the MST
- timezone, which is also known as GMT -0700, add seven hours to the local
+ time zone, which is also known as GMT -0700, add seven hours to the local
time.
Change the value of the UTC variable below
@@ -325,7 +329,7 @@ EOF
This section discusses how to configure the console
bootscript that sets up the keyboard map, console font, and console kernel log
level. If non-ASCII characters (e.g., the copyright sign, the British pound
- sign and Euro symbol) will not be used and the keyboard is a U.S. one, much
+ sign, and the Euro symbol) will not be used and the keyboard is a U.S. one, much
of this section can be skipped. Without the configuration file, (or
equivalent settings in rc.site), the
console bootscript will do nothing.
@@ -333,11 +337,11 @@ EOF
The console script reads the
/etc/sysconfig/console file for configuration
information. Decide which keymap and screen font will be used. Various
- language-specific HOWTOs can also help with this, see . If still in
doubt, look in the /usr/share/keymaps
and /usr/share/consolefonts directories
- for valid keymaps and screen fonts. Read loadkeys(1) and
+ for valid keymaps and screen fonts. Read the loadkeys(1) and
setfont(8) manual pages to determine the correct
arguments for these programs.
@@ -358,7 +362,7 @@ EOF
KEYMAP
This variable specifies the arguments for the
- loadkeys program, typically, the name of keymap
+ loadkeys program, typically, the name of the keymap
to load, e.g., it
. If this variable is not set, the
bootscript will not run the loadkeys program,
and the default kernel keymap will be used. Note that a few keymaps
@@ -390,11 +394,11 @@ EOF
name, -m
, and the name of the application character
map to load. E.g., in order to load the lat1-16
font
together with the 8859-1
application character map
- (as it is appropriate in the USA),
+ (appropriate in the USA),
set this variable to lat1-16 -m 8859-1
.
- In UTF-8 mode, the kernel uses the application character map for
- conversion of composed 8-bit key codes in the keymap to UTF-8, and thus
+ In UTF-8 mode, the kernel uses the application character map to
+ convert 8-bit key codes to UTF-8. Therefore
the argument of the "-m" parameter should be set to the encoding of the
composed key codes in the keymap.
@@ -404,7 +408,7 @@ EOF
UNICODE
- Set this variable to 1
, yes
or
+ Set this variable to 1
, yes
, or
true
in order to put the
console into UTF-8 mode. This is useful in UTF-8 based locales and
harmful otherwise.
@@ -522,7 +526,7 @@ EOF
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
.
The solution is either to avoid the use of UTF-8, or to install the
- X window system that doesn't have this limitation in its input
+ X window system, which doesn't have this limitation, in its input
handling.
@@ -531,7 +535,7 @@ EOF
console cannot be configured to display the needed characters. Users
who need such languages should install the X Window System, fonts that
cover the necessary character ranges, and the proper input method (e.g.,
- SCIM, supports a wide variety of languages).
+ SCIM supports a wide variety of languages).
@@ -565,7 +569,7 @@ EOF
- Configuring the sysklogd Script
+ Configuring the Sysklogd Script
sysklogd
@@ -600,8 +604,8 @@ EOF
console, and clock files in the
/etc/sysconfig/ directory. If the
associated variables are present in both these separate files and
- rc.site, the values in the script specific files have
- precedence.
+ rc.site, the values in the script-specific files take
+ effect.
rc.site also contains parameters that can
customize other aspects of the boot process. Setting the IPROMPT variable
@@ -615,8 +619,8 @@ EOF
Customizing the Boot and Shutdown Scripts
The LFS boot scripts boot and shut down a system in a fairly
- efficient manner, but there are a few tweaks that you can make in the
- rc.site file to improve speed even more and to adjust messages according
+ efficient manner, but there are a few tweaks you can make in the
+ rc.site file to improve speed even more, and to adjust messages according
to your preferences. To do this, adjust the settings in
the /etc/sysconfig/rc.site file above.
@@ -624,18 +628,18 @@ EOF
During the boot script udev, there is
a call to udev settle that requires some time to
- complete. This time may or may not be required depending on devices present
+ complete. This time may or may not be required depending on the devices
in the system. If you only have simple partitions and a single ethernet
card, the boot process will probably not need to wait for this command. To
skip it, set the variable OMIT_UDEV_SETTLE=y.
The boot script udev_retry also runs
- udev settle by default. This command is only needed by
- default if the /var directory is
- separately mounted. This is because the clock needs the file
- /var/lib/hwclock/adjtime. Other customizations may
+ udev settle by default. This command is only needed
+ if the /var directory is
+ separately mounted, because the clock needs the
+ /var/lib/hwclock/adjtime file. Other customizations may
also need to wait for udev to complete, but in many installations it is not
- needed. Skip the command by setting the variable OMIT_UDEV_RETRY_SETTLE=y.
+ necessary. Skip the command by setting the variable OMIT_UDEV_RETRY_SETTLE=y.
By default, the file system checks are silent. This can
@@ -664,7 +668,7 @@ EOF
During shutdown, the init program sends
a TERM signal to each program it has started (e.g. agetty), waits for a set
- time (default 3 seconds), and sends each process a KILL signal and waits
+ time (default 3 seconds), then sends each process a KILL signal and waits
again. This process is repeated in the sendsignals
script for any processes that are not shut down by their own scripts. The
delay for init can be set by passing a parameter. For
diff --git a/chapter10/grub.xml b/chapter10/grub.xml
index bf8738dd9..68be4708f 100644
--- a/chapter10/grub.xml
+++ b/chapter10/grub.xml
@@ -23,7 +23,7 @@
If you've installed GRUB for UEFI with optional dependencies following
- BLFS, you should skip this page, and config GRUB with UEFI support
+ BLFS, you should skip this page, and configure GRUB with UEFI support
using the instructions provided in
the BLFS page,
but replace --target=x86_64-efi with
@@ -70,8 +70,8 @@
GRUB uses its own naming structure for drives and partitions in
the form of (hdn,m), where n
is the hard drive number and m is the partition
- number. The hard drive number starts from zero, but the partition number
- starts from one for normal partitions and five for extended partitions.
+ number. The hard drive numbers start from zero, but the partition numbers
+ start from one for normal partitions (from five for extended partitions).
Note that this is different from earlier versions where
both numbers started from zero. For example, partition sda1 is (hd0,1) to
@@ -120,12 +120,13 @@ mount /boot/efi
files and access can be made from any booted system. If you choose to do
this, you will need to mount the separate partition, move all files in the
current /boot directory (e.g. the
- linux kernel you just built in the previous section) to the new partition.
+ Linux kernel you just built in the previous section) to the new partition.
You will then need to unmount the partition and remount it as /boot. If you do this, be sure to update
/etc/fstab.
- Using the current lfs partition will also work, but configuration
+ Leaving /boot on
+ the current LFS partition will also work, but configuration
for multiple systems is more difficult.
Using the above information, determine the appropriate
@@ -231,26 +232,28 @@ EOF
The change may cause boot failure because
grub.cfg refers to some old
designators. If you wish to avoid such a problem, you may use
- the UUID of partition and filesystem instead of GRUB designator to
- specify a partition.
+ the UUID of a partition and the UUID of a filesystem instead of a GRUB designator to
+ specify a device.
Run lsblk -o UUID,PARTUUID,PATH,MOUNTPOINT to show
- the UUID of your filesystems (in UUID column) and
- partitions (in PARTUUID column). Then replace
+ the UUIDs of your filesystems (in the UUID column) and
+ partitions (in the PARTUUID column). Then replace
set root=(hdx,y) with
- search --set=root --fs-uuid <UUID of the filesystem where the kernel is installed>, and replace
+ search --set=root --fs-uuid <UUID of the filesystem
+ where the kernel is installed>, and replace
root=/dev/sda2 with
- root=PARTUUID=<UUID of the partition where LFS is built>.
- Note that the UUID of a partition and the UUID of the filesystem
- in this partition is completely different. Some online resources may
+ root=PARTUUID=<UUID of the partition where LFS
+ is built>.
+ Note that the UUID of a partition is completely different from the
+ UUID of the filesystem in this partition. Some online resources may
instruct you to use
root=UUID=<filesystem UUID>
instead of
root=PARTUUID=<partition UUID>,
- but doing so will require an initramfs which is beyond the scope of
+ but doing so will require an initramfs, which is beyond the scope of
LFS.
The name of the device node for a partition in
- /dev may also change (more
- unlikely than GRUB designator change though). You can also replace
+ /dev may also change (this is less
+ likely than a GRUB designator change). You can also replace
paths to device nodes like /dev/sda1 with
PARTUUID=<partition UUID>,
in /etc/fstab, to avoid a potential boot failure
diff --git a/git-version.sh b/git-version.sh
index d7aa20bb7..6a242e7ed 100755
--- a/git-version.sh
+++ b/git-version.sh
@@ -29,7 +29,7 @@ if ! git status > /dev/null; then
fi
export LC_ALL=en_US.utf8
-export TZ=US/Pacific
+export TZ=America/Chicago
commit_date=$(git show -s --format=format:"%cd" --date=local)
diff --git a/packages.ent b/packages.ent
index e4dca15f2..eade4c846 100644
--- a/packages.ent
+++ b/packages.ent
@@ -58,10 +58,10 @@
-
-
+
+
-
+
@@ -179,10 +179,10 @@
-
-
+
+
-
+
@@ -317,10 +317,10 @@
-
-
+
+
-
+
@@ -382,7 +382,7 @@
-
+
@@ -423,13 +423,13 @@
-
-
+
+
-
+
-
+
-
-
+
+
+
+
+
+
+
-