Merge remote-tracking branch 'origin/trunk' into xry111/arm64

This commit is contained in:
Xi Ruoyao 2022-09-24 00:06:19 +08:00
commit f4facc457f
No known key found for this signature in database
GPG Key ID: ACAAD20E19E710E3
61 changed files with 1205 additions and 696 deletions

View File

@ -26,7 +26,7 @@ ifeq ($(REV), sysv)
BASEDIR ?= ~/lfs-book BASEDIR ?= ~/lfs-book
PDF_OUTPUT ?= LFS-BOOK.pdf PDF_OUTPUT ?= LFS-BOOK.pdf
NOCHUNKS_OUTPUT ?= LFS-BOOK.html NOCHUNKS_OUTPUT ?= LFS-BOOK.html
DUMPDIR ?= ~/cross-lfs-commands DUMPDIR ?= ~/lfs-commands
else else
BASEDIR ?= ~/lfs-systemd BASEDIR ?= ~/lfs-systemd
PDF_OUTPUT ?= LFS-SYSD-BOOK.pdf PDF_OUTPUT ?= LFS-SYSD-BOOK.pdf
@ -136,7 +136,7 @@ validate: tmpdir version
$(Q)xmllint --nonet \ $(Q)xmllint --nonet \
--noent \ --noent \
--postvalid \ --postvalid \
-o $(RENDERTMP)/lfs-full.xml \ -o $(RENDERTMP)/lfs-full.xml \
$(RENDERTMP)/lfs-html2.xml $(RENDERTMP)/lfs-html2.xml
$(Q)rm -f appendices/*.script $(Q)rm -f appendices/*.script
@ -147,9 +147,9 @@ profile-html:
@echo "Generating profiled XML for XHTML..." @echo "Generating profiled XML for XHTML..."
$(Q)xsltproc --nonet \ $(Q)xsltproc --nonet \
--stringparam profile.condition html \ --stringparam profile.condition html \
--output $(RENDERTMP)/lfs-html.xml \ --output $(RENDERTMP)/lfs-html.xml \
stylesheets/lfs-xsl/profile.xsl \ stylesheets/lfs-xsl/profile.xsl \
$(RENDERTMP)/lfs-full.xml $(RENDERTMP)/lfs-full.xml
wget-list: $(BASEDIR)/wget-list $(BASEDIR)/wget-list-$(REV) wget-list: $(BASEDIR)/wget-list $(BASEDIR)/wget-list-$(REV)
$(BASEDIR)/wget-list: stylesheets/wget-list.xsl chapter03/chapter03.xml \ $(BASEDIR)/wget-list: stylesheets/wget-list.xsl chapter03/chapter03.xml \
@ -158,7 +158,7 @@ $(BASEDIR)/wget-list: stylesheets/wget-list.xsl chapter03/chapter03.xml \
$(Q)mkdir -p $(BASEDIR) $(Q)mkdir -p $(BASEDIR)
$(Q)xsltproc --xinclude --nonet \ $(Q)xsltproc --xinclude --nonet \
--output $(BASEDIR)/wget-list \ --output $(BASEDIR)/wget-list \
stylesheets/wget-list.xsl \ stylesheets/wget-list.xsl \
chapter03/chapter03.xml chapter03/chapter03.xml
$(BASEDIR)/wget-list-$(REV): stylesheets/wget-list.xsl \ $(BASEDIR)/wget-list-$(REV): stylesheets/wget-list.xsl \
@ -197,22 +197,17 @@ $(BASEDIR)/md5sums: stylesheets/wget-list.xsl chapter03/chapter03.xml \
version: version:
$(Q)./git-version.sh $(REV) $(Q)./git-version.sh $(REV)
#dump-commands: validate dump-commands: validate
# @echo "Dumping book commands..." @echo "Dumping book commands..."
# $(Q)xsltproc --nonet \
# --output $(RENDERTMP)/lfs-html.xml \
# --stringparam profile.revision $(REV) \
# stylesheets/lfs-xsl/profile.xsl \
# $(RENDERTMP)/lfs-full.xml
# $(Q)rm -rf $(DUMPDIR) $(Q)rm -rf $(DUMPDIR)
# $(Q)xsltproc --output $(DUMPDIR)/ \ $(Q)xsltproc --output $(DUMPDIR)/ \
# stylesheets/dump-commands.xsl \ stylesheets/dump-commands.xsl \
# $(RENDERTMP)/lfs-html.xml $(RENDERTMP)/lfs-full.xml
# @echo "Dumping book commands complete in $(DUMPDIR)" @echo "Dumping book commands complete in $(DUMPDIR)"
all: book nochunks pdf # dump-commands all: book nochunks pdf dump-commands
.PHONY : all book dump-commands nochunks pdf profile-html tmpdir validate md5sums wget-list version .PHONY : all book dump-commands nochunks pdf profile-html tmpdir validate md5sums wget-list version

View File

@ -247,12 +247,12 @@
<para><ulink url="mailto:info@shizu-net.jp">Shizunet Co.,Ltd.</ulink> <para><ulink url="mailto:info@shizu-net.jp">Shizunet Co.,Ltd.</ulink>
&lt;info@shizu-net.jp&gt; &ndash; lfs.mirror.shizu-net.jp mirror</para> &lt;info@shizu-net.jp&gt; &ndash; lfs.mirror.shizu-net.jp mirror</para>
</listitem> </listitem>
<!-- domain name can't be resolved on Sept 5, 2022
<listitem> <listitem>
<para><ulink url="http://www.initworld.com/">Init World</ulink> <para><ulink url="http://www.initworld.com/">Init World</ulink>
&lt;http://www.initworld.com/&gt; &ndash; lfs.initworld.com mirror</para> &lt;http://www.initworld.com/&gt; &ndash; lfs.initworld.com mirror</para>
</listitem> </listitem>
-->
</itemizedlist> </itemizedlist>
<bridgehead renderas="sect3">Australian Mirrors</bridgehead> <bridgehead renderas="sect3">Australian Mirrors</bridgehead>

View File

@ -948,7 +948,7 @@
<segtitle>&external;</segtitle> <segtitle>&external;</segtitle>
<seglistitem> <seglistitem>
<seg> <seg>
<ulink url="http://gcc.gnu.org/wiki/GNAT">GNAT</ulink> <ulink url="https://gcc.gnu.org/wiki/GNAT">GNAT</ulink>
and and
<ulink url="https://repo.or.cz/isl.git">ISL</ulink> <ulink url="https://repo.or.cz/isl.git">ISL</ulink>
</seg> </seg>
@ -1186,7 +1186,7 @@
<segtitle>&external;</segtitle> <segtitle>&external;</segtitle>
<seglistitem> <seglistitem>
<seg> <seg>
<ulink url="&blfs-book;general/pcre.html">PCRE</ulink> <ulink url="&blfs-book;general/pcre2.html">PCRE2</ulink>
and and
<ulink url="&blfs-book;general/libsigsegv.html">libsigsegv</ulink> <ulink url="&blfs-book;general/libsigsegv.html">libsigsegv</ulink>
</seg> </seg>
@ -2356,7 +2356,7 @@
<segmentedlist id="patch-rundeps"> <segmentedlist id="patch-rundeps">
<segtitle>&runtime;</segtitle> <segtitle>&runtime;</segtitle>
<seglistitem> <seglistitem>
<seg>Glibc and Patch</seg> <seg>Glibc</seg>
</seglistitem> </seglistitem>
</segmentedlist> </segmentedlist>
@ -2813,7 +2813,7 @@
<ulink url="&blfs-book;postlfs/linux-pam.html">Linux-PAM</ulink>, <ulink url="&blfs-book;postlfs/linux-pam.html">Linux-PAM</ulink>,
<ulink <ulink
url="&blfs-book;general/python-modules.html#lxml">lxml</ulink>, url="&blfs-book;general/python-modules.html#lxml">lxml</ulink>,
<ulink url="http://lz4.github.io/lz4/">LZ4</ulink>, <ulink url="https://lz4.github.io/lz4/">LZ4</ulink>,
<ulink url="&blfs-book;postlfs/make-ca.html">make-ca</ulink>, <ulink url="&blfs-book;postlfs/make-ca.html">make-ca</ulink>,
<ulink url="&blfs-book;postlfs/p11-kit.html">p11-kit</ulink>, <ulink url="&blfs-book;postlfs/p11-kit.html">p11-kit</ulink>,
<ulink url="&blfs-book;general/pcre2.html">PCRE2</ulink>, <ulink url="&blfs-book;general/pcre2.html">PCRE2</ulink>,
@ -3266,7 +3266,7 @@
<segtitle>&external;</segtitle> <segtitle>&external;</segtitle>
<seglistitem> <seglistitem>
<seg> <seg>
<ulink url="http://lz4.github.io/lz4/">LZ4</ulink> <ulink url="https://lz4.github.io/lz4/">LZ4</ulink>
</seg> </seg>
</seglistitem> </seglistitem>
</segmentedlist> </segmentedlist>

View File

@ -1,3 +1,6 @@
2022-09-30 Bruce Dubbs <bdubbs@linuxfromscratch.org>
* Mount /dev/shm as a tmpfs.
2022-07-23 Thomas Trepl <thomas@linuxfromscratch.org> 2022-07-23 Thomas Trepl <thomas@linuxfromscratch.org>
* Mark an raid array clean when root (/) has been remounted * Mark an raid array clean when root (/) has been remounted
r/o when system goes down. Otherwise, array does remain r/o when system goes down. Otherwise, array does remain

View File

@ -38,8 +38,8 @@ case "${1}" in
mount /run || failed=1 mount /run || failed=1
fi fi
mkdir -p /run/lock /run/shm mkdir -p /run/lock
chmod 1777 /run/shm /run/lock chmod 1777 /run/lock
log_info_msg "Mounting virtual file systems: ${INFO}/run" log_info_msg "Mounting virtual file systems: ${INFO}/run"
@ -58,7 +58,9 @@ case "${1}" in
mount -o mode=0755,nosuid /dev || failed=1 mount -o mode=0755,nosuid /dev || failed=1
fi fi
ln -sfn /run/shm /dev/shm mkdir -p /dev/shm
log_info_msg2 " ${INFO}/dev/shm"
mount -o nosuid,nodev /dev/shm || failed=1
(exit ${failed}) (exit ${failed})
evaluate_retval evaluate_retval

View File

@ -8,23 +8,23 @@
# Version : 00.00 # Version : 00.00
# #
# Notes : The syntax of this file is as follows: # Notes : The syntax of this file is as follows:
# if type is equal to "file" or "dir" # if type is equal to "file" or "dir"
# <filename> <type> <permissions> <user> <group> # <filename> <type> <permissions> <user> <group>
# if type is equal to "dev" # if type is equal to "dev"
# <filename> <type> <permissions> <user> <group> <devtype> # <filename> <type> <permissions> <user> <group> <devtype>
# <major> <minor> # <major> <minor>
# #
# <filename> is the name of the file which is to be created # <filename> is the name of the file which is to be created
# <type> is either file, dir, or dev. # <type> is either file, dir, or dev.
# file creates a new file # file creates a new file
# dir creates a new directory # dir creates a new directory
# dev creates a new device # dev creates a new device
# <devtype> is either block, char or pipe # <devtype> is either block, char or pipe
# block creates a block device # block creates a block device
# char creates a character deivce # char creates a character deivce
# pipe creates a pipe, this will ignore the <major> and # pipe creates a pipe, this will ignore the <major> and
# <minor> fields # <minor> fields
# <major> and <minor> are the major and minor numbers used for # <major> and <minor> are the major and minor numbers used for
# the device. # the device.
######################################################################## ########################################################################

View File

@ -8,7 +8,7 @@
# Version : 00.00 # Version : 00.00
# #
# Notes : The syntax of this file is as follows: # Notes : The syntax of this file is as follows:
# <module> [<arg1> <arg2> ...] # <module> [<arg1> <arg2> ...]
# #
# Each module should be on its own line, and any options that you want # Each module should be on its own line, and any options that you want
# passed to the module should follow it. The line deliminator is either # passed to the module should follow it. The line deliminator is either

View File

@ -40,6 +40,107 @@
appropriate for the entry or if needed the entire day's listitem. appropriate for the entry or if needed the entire day's listitem.
--> -->
<listitem>
<para>2022-09-22</para>
<itemizedlist>
<listitem>
<para>[bdubbs] - Update to expat-2.4.9 (Security Update). Fixes
<ulink url="&lfs-ticket-root;5117">#5117</ulink>.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>2022-09-20</para>
<itemizedlist>
<listitem>
<para>[bdubbs] - Adapt instructions depending on
host setup of /dev/shm when creating virtual filesystems
for chroot.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>2022-09-15</para>
<itemizedlist>
<listitem>
<para>[bdubbs] - Update to file-5.43. Fixes
<ulink url="&lfs-ticket-root;5113">#5113</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to linux-5.19.8. Fixes
<ulink url="&lfs-ticket-root;5111">#5111</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to gawk-5.2.0. Fixes
<ulink url="&lfs-ticket-root;5108">#5108</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to meson-0.63.2. Fixes
<ulink url="&lfs-ticket-root;5106">#5106</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to ninja-1.11.1. Fixes
<ulink url="&lfs-ticket-root;5103">#5103</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to bc-6.0.2. Fixes
<ulink url="&lfs-ticket-root;5102">#5102</ulink>.</para>
</listitem>
<listitem revision="sysv">
<para>[bdubbs] - Fix the location of udev rules in eudev. Fixes
<ulink url="&lfs-ticket-root;5112">#5112</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Remove a warning for egrep and fgrep that
makes tests for some packages fail.</para>
</listitem>
<listitem>
<para>[bdubbs] - Delete an empty binutils man page. Fixes
<ulink url="&lfs-ticket-root;5100">#5100</ulink>.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>2022-09-10</para>
<itemizedlist>
<listitem>
<para>[pierre] - Add <option>--enable-default-pie</option> and
<option>--enable-default-ssp</option> to GCC build. Rationale
and some reports at
<ulink url="&lfs-ticket-root;5107">#5107</ulink>.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>2022-09-07</para>
<itemizedlist>
<listitem>
<para>[bdubbs] - Update to shadow-4.12.3. Fixes
<ulink url="&lfs-ticket-root;5101">#5101</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to Python3-3.10.7. Fixes
<ulink url="&lfs-ticket-root;5109">#5109</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to linux-5.19.7. Fixes
<ulink url="&lfs-ticket-root;5099">#5099</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to less-608. Fixes
<ulink url="&lfs-ticket-root;5104">#5104</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to grep-3.8. Fixes
<ulink url="&lfs-ticket-root;5105">#5105</ulink>.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem> <listitem>
<para>2022-09-01</para> <para>2022-09-01</para>
<itemizedlist> <itemizedlist>

View File

@ -46,7 +46,7 @@
important issues you need be aware of before beginning to important issues you need be aware of before beginning to
work your way through <xref linkend="chapter-cross-tools"/> and beyond.</para> work your way through <xref linkend="chapter-cross-tools"/> and beyond.</para>
<para><xref linkend="chapter-cross-tools"/>, explains the installation of <para><xref linkend="chapter-cross-tools"/> 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.</para> techniques to isolate the new tools from the host system.</para>
@ -61,7 +61,7 @@
seem excessive. A full technical explanation as to why this is done is seem excessive. A full technical explanation as to why this is done is
provided in <xref linkend="ch-tools-toolchaintechnotes"/>.</para> provided in <xref linkend="ch-tools-toolchaintechnotes"/>.</para>
<para>In <xref linkend="chapter-building-system"/>, The <para>In <xref linkend="chapter-building-system"/> the
full LFS system is built. Another advantage provided by the chroot full LFS system is built. Another advantage provided by the chroot
environment is that it allows you to continue using the host system environment is that it allows you to continue using the host system
while LFS is being built. While waiting for package compilations to while LFS is being built. While waiting for package compilations to

View File

@ -44,9 +44,9 @@
<listitem> <listitem>
<para>Bc &bc-version;</para> <para>Bc &bc-version;</para>
</listitem> </listitem>
<listitem> <!--<listitem>
<para>Binutils-&binutils-version;</para> <para>Binutils-&binutils-version;</para>
</listitem> </listitem>-->
<!--<listitem> <!--<listitem>
<para>Bison-&bison-version;</para> <para>Bison-&bison-version;</para>
</listitem>--> </listitem>-->
@ -56,21 +56,21 @@
<!--<listitem> <!--<listitem>
<para>Check-&check-version;</para> <para>Check-&check-version;</para>
</listitem>--> </listitem>-->
<listitem> <!--<listitem>
<para>Coreutils-&coreutils-version;</para> <para>Coreutils-&coreutils-version;</para>
</listitem> </listitem>-->
<!--<listitem> <!--<listitem>
<para>DejaGNU-&dejagnu-version;</para> <para>DejaGNU-&dejagnu-version;</para>
</listitem>--> </listitem>-->
<listitem revision="systemd"> <!--<listitem revision="systemd">
<para>D-Bus-&dbus-version;</para> <para>D-Bus-&dbus-version;</para>
</listitem> </listitem>-->
<!--<listitem> <!--<listitem>
<para>Diffutils-&diffutils-version;</para> <para>Diffutils-&diffutils-version;</para>
</listitem>--> </listitem>-->
<listitem> <!--<listitem>
<para>E2fsprogs-&e2fsprogs-version;</para> <para>E2fsprogs-&e2fsprogs-version;</para>
</listitem> </listitem>-->
<!--<listitem revision="sysv"> <!--<listitem revision="sysv">
<para>Eudev-&eudev-version;</para> <para>Eudev-&eudev-version;</para>
</listitem>--> </listitem>-->
@ -89,81 +89,81 @@
<!--<listitem> <!--<listitem>
<para>Flex-&flex-version;</para> <para>Flex-&flex-version;</para>
</listitem>--> </listitem>-->
<!--<listitem>
<para>Gawk-&gawk-version;</para>
</listitem>-->
<listitem> <listitem>
<para>GCC-&gcc-version;</para> <para>Gawk-&gawk-version;</para>
</listitem> </listitem>
<!--<listitem>
<para>GCC-&gcc-version;</para>
</listitem>-->
<!--<listitem> <!--<listitem>
<para>GDBM-&gdbm-version;</para> <para>GDBM-&gdbm-version;</para>
</listitem>--> </listitem>-->
<!--<listitem> <!--<listitem>
<para>Gettext-&gettext-version;</para> <para>Gettext-&gettext-version;</para>
</listitem>--> </listitem>-->
<listitem> <!--<listitem>
<para>Glibc-&glibc-version;</para> <para>Glibc-&glibc-version;</para>
</listitem> </listitem>-->
<!--<listitem> <!--<listitem>
<para>GMP-&gmp-version;</para> <para>GMP-&gmp-version;</para>
</listitem>--> </listitem>-->
<!--<listitem> <!--<listitem>
<para>Gperf-&gperf-version;</para> <para>Gperf-&gperf-version;</para>
</listitem>--> </listitem>-->
<!--<listitem> <listitem>
<para>Grep-&grep-version;</para> <para>Grep-&grep-version;</para>
</listitem>--> </listitem>
<!--<listitem> <!--<listitem>
<para>Groff-&groff-version;</para> <para>Groff-&groff-version;</para>
</listitem>--> </listitem>-->
<!--<listitem> <!--<listitem>
<para>GRUB-&grub-version;</para> <para>GRUB-&grub-version;</para>
</listitem>--> </listitem>-->
<listitem> <!--<listitem>
<para>Gzip-&gzip-version;</para> <para>Gzip-&gzip-version;</para>
</listitem> </listitem>-->
<listitem> <!--<listitem>
<para>IANA-Etc-&iana-etc-version;</para> <para>IANA-Etc-&iana-etc-version;</para>
</listitem> </listitem>-->
<listitem> <!--<listitem>
<para>Inetutils-&inetutils-version;</para> <para>Inetutils-&inetutils-version;</para>
</listitem> </listitem>-->
<!--<listitem> <!--<listitem>
<para>Intltool-&intltool-version;</para> <para>Intltool-&intltool-version;</para>
</listitem>--> </listitem>-->
<listitem>
<para>IPRoute2-&iproute2-version;</para>
</listitem>
<listitem revision="systemd">
<para>Jinja2-&jinja2-version;</para>
</listitem>
<listitem>
<para>Kbd-&kbd-version;</para>
</listitem>
<listitem>
<para>Kmod-&kmod-version;</para>
</listitem>
<!--<listitem> <!--<listitem>
<para>Less-&less-version;</para> <para>IPRoute2-&iproute2-version;</para>
</listitem>--> </listitem>-->
<!--<listitem revision="systemd">
<para>Jinja2-&jinja2-version;</para>
</listitem>-->
<!--<listitem>
<para>Kbd-&kbd-version;</para>
</listitem>-->
<!--<listitem>
<para>Kmod-&kmod-version;</para>
</listitem>-->
<listitem>
<para>Less-&less-version;</para>
</listitem>
<!--<listitem> <!--<listitem>
<para>LFS-Bootscripts-&lfs-bootscripts-version;</para> <para>LFS-Bootscripts-&lfs-bootscripts-version;</para>
</listitem>--> </listitem>-->
<listitem> <!--<listitem>
<para>Libcap-&libcap-version;</para> <para>Libcap-&libcap-version;</para>
</listitem> </listitem>-->
<listitem> <!--<listitem>
<para>Libelf-&elfutils-version; (from elfutils)</para> <para>Libelf-&elfutils-version; (from elfutils)</para>
</listitem> </listitem>-->
<!--<listitem> <!--<listitem>
<para>Libffi-&libffi-version;</para> <para>Libffi-&libffi-version;</para>
</listitem>--> </listitem>-->
<listitem> <!--<listitem>
<para>Libpipeline-&libpipeline-version;</para> <para>Libpipeline-&libpipeline-version;</para>
</listitem> </listitem>-->
<listitem> <!--<listitem>
<para>Libtool-&libtool-version;</para> <para>Libtool-&libtool-version;</para>
</listitem> </listitem>-->
<listitem> <listitem>
<para>Linux-&linux-version;</para> <para>Linux-&linux-version;</para>
</listitem> </listitem>
@ -173,15 +173,15 @@
<!--<listitem> <!--<listitem>
<para>Make-&make-version;</para> <para>Make-&make-version;</para>
</listitem>--> </listitem>-->
<listitem> <!--<listitem>
<para>Man-DB-&man-db-version;</para> <para>Man-DB-&man-db-version;</para>
</listitem> </listitem>-->
<!--<listitem> <!--<listitem>
<para>Man-pages-&man-pages-version;</para> <para>Man-pages-&man-pages-version;</para>
</listitem>--> </listitem>-->
<listitem revision="systemd"> <!--<listitem revision="systemd">
<para>MarkupSafe-&markupsafe-version;</para> <para>MarkupSafe-&markupsafe-version;</para>
</listitem> </listitem>-->
<listitem> <listitem>
<para>Meson-&meson-version;</para> <para>Meson-&meson-version;</para>
</listitem> </listitem>
@ -197,24 +197,24 @@
<listitem> <listitem>
<para>Ninja-&ninja-version;</para> <para>Ninja-&ninja-version;</para>
</listitem> </listitem>
<listitem> <!--<listitem>
<para>Openssl-&openssl-version;</para> <para>Openssl-&openssl-version;</para>
</listitem> </listitem>-->
<!--<listitem> <!--<listitem>
<para>Patch-&patch-version;</para> <para>Patch-&patch-version;</para>
</listitem>--> </listitem>-->
<listitem> <!--<listitem>
<para>Perl-&perl-version;</para> <para>Perl-&perl-version;</para>
</listitem> </listitem>-->
<!--<listitem> <!--<listitem>
<para>Pkg-config-&pkgconfig-version;</para> <para>Pkg-config-&pkgconfig-version;</para>
</listitem>--> </listitem>-->
<listitem> <!--<listitem>
<para>Procps-ng-&procps-ng-version;</para> <para>Procps-ng-&procps-ng-version;</para>
</listitem> </listitem>-->
<listitem> <!--<listitem>
<para>Psmisc-&psmisc-version;</para> <para>Psmisc-&psmisc-version;</para>
</listitem> </listitem>-->
<listitem> <listitem>
<para>Python-&python-version;</para> <para>Python-&python-version;</para>
</listitem> </listitem>
@ -230,12 +230,12 @@
<!--<listitem revision="sysv"> <!--<listitem revision="sysv">
<para>Sysklogd-&sysklogd-version;</para> <para>Sysklogd-&sysklogd-version;</para>
</listitem>--> </listitem>-->
<listitem revision="systemd"> <!--<listitem revision="systemd">
<para>Systemd-&systemd-version;</para> <para>Systemd-&systemd-version;</para>
</listitem> </listitem>-->
<listitem revision="sysv"> <!--<listitem revision="sysv">
<para>SysVinit-&sysvinit-version;</para> <para>SysVinit-&sysvinit-version;</para>
</listitem> </listitem>-->
<!--<listitem> <!--<listitem>
<para>Tar-&tar-version;</para> <para>Tar-&tar-version;</para>
</listitem>--> </listitem>-->
@ -245,24 +245,24 @@
<!--<listitem> <!--<listitem>
<para>Texinfo-&texinfo-version;</para> <para>Texinfo-&texinfo-version;</para>
</listitem>--> </listitem>-->
<listitem> <!--<listitem>
<para>Tzdata-&tzdata-version;</para> <para>Tzdata-&tzdata-version;</para>
</listitem> </listitem>-->
<listitem> <!--<listitem>
<para>Util-Linux-&util-linux-version;</para> <para>Util-Linux-&util-linux-version;</para>
</listitem> </listitem>-->
<listitem> <!--<listitem>
<para>Vim-&vim-version;</para> <para>Vim-&vim-version;</para>
</listitem> </listitem>-->
<!--<listitem> <!--<listitem>
<para>XML-Parser-&xml-parser-version;</para> <para>XML-Parser-&xml-parser-version;</para>
</listitem>--> </listitem>-->
<listitem> <!--<listitem>
<para>XZ-Utils-&xz-version;</para> <para>XZ-Utils-&xz-version;</para>
</listitem> </listitem>-->
<listitem> <!--<listitem>
<para>Zlib-&zlib-version;</para> <para>Zlib-&zlib-version;</para>
</listitem> </listitem>-->
<!--<listitem> <!--<listitem>
<para>Zstd-&zstd-version;</para> <para>Zstd-&zstd-version;</para>
</listitem>--> </listitem>-->
@ -280,33 +280,19 @@
<itemizedlist> <itemizedlist>
<title>Added:</title> <title>Added:</title>
<listitem><para></para></listitem> <!-- satisfy build --> <listitem><para></para></listitem> <!-- satisfy build -->
<listitem>
<para>Wheel-&wheel-version;</para> <!--<listitem>
</listitem>
<!--
<listitem>
<para>&xz-upstream-fix-patch;</para> <para>&xz-upstream-fix-patch;</para>
</listitem> </listitem>-->
-->
<listitem>
<para>&zstd-upstream-fixes-patch;</para>
</listitem>
</itemizedlist> </itemizedlist>
<itemizedlist> <itemizedlist>
<title>Removed:</title> <title>Removed:</title>
<listitem><para></para></listitem> <!-- satisfy build --> <listitem><para></para></listitem> <!-- satisfy build -->
<listitem> <!--<listitem>
<para>perl-5.34.0-upstream_fixes-1.patch</para> <para>perl-5.34.0-upstream_fixes-1.patch</para>
</listitem> </listitem>-->
<listitem>
<para>systemd-250-kernel_5.17_fixes-1.patch</para>
</listitem>
<listitem>
<para>systemd-250-upstream_fixes-1.patch</para>
</listitem>
</itemizedlist> </itemizedlist>
</sect1> </sect1>

View File

@ -10,10 +10,19 @@
<title>Creating a File System on the Partition</title> <title>Creating a File System on the Partition</title>
<para>Now that a blank partition has been set up, the file system can be <para>A partition is just a range of sectors on a disk drive, delimited by
created. LFS can use any file system recognized by the Linux kernel, but the boundaries set in a partition table. Before the operating system can use
most common types are ext3 and ext4. The choice of file system can be a blank partition, the partition must be formatted to contain a file
complex and depends on the characteristics of the files and the size of system, typically consisting of a label, directory blocks, data blocks, and
an indexing scheme to locate a particular file on demand. The file system
also helps the OS keep track of free space on the partition, reserve the
needed sectors when a new file is created or an existing file is extended,
and recycle the free data segments created when files are deleted. It may
also provide support for data redundancy, and for error recovery.</para>
<para>LFS can use any file system recognized by the Linux kernel, but the
most common types are ext3 and ext4. The choice of the right file system can be
complex; it depends on the characteristics of the files and the size of
the partition. For example:</para> the partition. For example:</para>
<variablelist> <variablelist>
@ -33,22 +42,22 @@
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>ext4</term> <term>ext4</term>
<listitem><para>is the latest version of the ext file system family of <listitem><para>is the latest version of the ext family of
partition types. It provides several new capabilities including file systems. It provides several new capabilities including
nano-second timestamps, creation and use of very large files (16 TB), and nano-second timestamps, creation and use of very large files
speed improvements.</para> (up to 16 TB), and speed improvements.</para>
</listitem> </listitem>
</varlistentry> </varlistentry>
</variablelist> </variablelist>
<para>Other file systems, including FAT32, NTFS, ReiserFS, JFS, and XFS are <para>Other file systems, including FAT32, NTFS, ReiserFS, JFS, and XFS are
useful for specialized purposes. More information about these file systems useful for specialized purposes. More information about these file systems,
can be found at <ulink and many others, can be found at <ulink
url="http://en.wikipedia.org/wiki/Comparison_of_file_systems"/>.</para> url="https://en.wikipedia.org/wiki/Comparison_of_file_systems"/>.</para>
<para>LFS assumes that the root file system (/) is of type ext4. To create <para>LFS assumes that the root file system (/) is of type ext4. To create
an <systemitem class="filesystem">ext4</systemitem> file system on the LFS an <systemitem class="filesystem">ext4</systemitem> file system on the LFS
partition, run the following:</para> partition, issue the following command:</para>
<screen role="nodump"><userinput>mkfs -v -t ext4 /dev/<replaceable>&lt;xxx&gt;</replaceable></userinput></screen> <screen role="nodump"><userinput>mkfs -v -t ext4 /dev/<replaceable>&lt;xxx&gt;</replaceable></userinput></screen>

View File

@ -94,10 +94,10 @@
<para>Swapping is never good. For mechanical hard drives you can generally <para>Swapping is never good. For mechanical hard drives you can generally
tell if a system is swapping by just listening to disk activity and tell if a system is swapping by just listening to disk activity and
observing how the system reacts to commands. For an SSD drive you will not observing how the system reacts to commands. With an SSD you will not
be able to hear swapping but you can tell how much swap space is being used be able to hear swapping, but you can tell how much swap space is being used
by the <command>top</command> or <command>free</command> programs. Use of by running the <command>top</command> or <command>free</command> programs. Use of
an SSD drive for a swap partition should be avoided if possible. The first an SSD for a swap partition should be avoided if possible. The first
reaction to swapping should be to check for an unreasonable command such as reaction to swapping should be to check for an unreasonable command such as
trying to edit a five gigabyte file. If swapping becomes a normal trying to edit a five gigabyte file. If swapping becomes a normal
occurrence, the best solution is to purchase more RAM for your occurrence, the best solution is to purchase more RAM for your
@ -112,12 +112,12 @@
must be available for GRUB to use during installation of the boot must be available for GRUB to use during installation of the boot
loader. This partition will normally be labeled 'BIOS Boot' if using loader. This partition will normally be labeled 'BIOS Boot' if using
<command>fdisk</command> or have a code of <emphasis>EF02</emphasis> if <command>fdisk</command> or have a code of <emphasis>EF02</emphasis> if
using <command>gdisk</command>.</para> using the <command>gdisk</command> command.</para>
<note><para>The Grub Bios partition must be on the drive that the BIOS <note><para>The Grub Bios partition must be on the drive that the BIOS
uses to boot the system. This is not necessarily the same drive where the uses to boot the system. This is not necessarily the drive that holds
LFS root partition is located. Disks on a system may use different the LFS root partition. The disks on a system may use different
partition table types. The requirement for this partition depends partition table types. The necessity of the Grub Bios partition depends
only on the partition table type of the boot disk.</para></note> only on the partition table type of the boot disk.</para></note>
</sect3> </sect3>
@ -133,7 +133,7 @@
<listitem><para>/boot &ndash; Highly recommended. Use this partition to <listitem><para>/boot &ndash; Highly recommended. Use this partition to
store kernels and other booting information. To minimize potential boot store kernels and other booting information. To minimize potential boot
problems with larger disks, make this the first physical partition on problems with larger disks, make this the first physical partition on
your first disk drive. A partition size of 200 megabytes is quite your first disk drive. A partition size of 200 megabytes is
adequate.</para></listitem> adequate.</para></listitem>
<listitem><para>/boot/efi &ndash; The EFI System Partition, which is <listitem><para>/boot/efi &ndash; The EFI System Partition, which is
@ -150,41 +150,50 @@
<filename class="directory">/bin</filename>, <filename class="directory">/bin</filename>,
<filename class="directory">/lib</filename>, and <filename class="directory">/lib</filename>, and
<filename class="directory">/sbin</filename> are symlinks to their <filename class="directory">/sbin</filename> are symlinks to their
counterpart in <filename class="directory">/usr</filename>. counterparts in <filename class="directory">/usr</filename>.
So <filename class="directory">/usr</filename> contains all binaries So <filename class="directory">/usr</filename> contains all the binaries
needed for the system to run. For LFS a separate partition for needed for the system to run. For LFS a separate partition for
<filename class="directory">/usr</filename> is normally not needed. <filename class="directory">/usr</filename> is normally not needed.
If you need it anyway, you should make a partition large enough to If you create it anyway, you should make a partition large enough to
fit all programs and libraries in the system. The root partition can be fit all the programs and libraries in the system. The root partition can be
very small (maybe just one gigabyte) in this configuration, so it's very small (maybe just one gigabyte) in this configuration, so it's
suitable for a thin client or diskless workstation (where suitable for a thin client or diskless workstation (where
<filename class="directory">/usr</filename> is mounted from a remote <filename class="directory">/usr</filename> is mounted from a remote
server). However you should take care that an initramfs (not covered by server). However, you should be aware that an initramfs (not covered by
LFS) will be needed to boot a system with separate LFS) will be needed to boot a system with a separate
<filename class="directory">/usr</filename> partition.</para></listitem> <filename class="directory">/usr</filename> partition.</para></listitem>
<listitem><para>/opt &ndash; This directory is most useful for <listitem><para>/opt &ndash; This directory is most useful for
BLFS where multiple installations of large packages like Gnome or KDE can BLFS, where multiple large packages like KDE or Texlive can
be installed without embedding the files in the /usr hierarchy. If be installed without embedding the files in the /usr hierarchy. If
used, 5 to 10 gigabytes is generally adequate.</para> used, 5 to 10 gigabytes is generally adequate.</para>
</listitem> </listitem>
<listitem><para>/tmp &ndash; A separate /tmp directory is rare, but <listitem revision='sysv'><para>/tmp &ndash; A separate /tmp directory
useful if configuring a thin client. This partition, if used, will is rare, but useful if configuring a thin client. This partition, if
usually not need to exceed a couple of gigabytes.</para></listitem> used, will usually not need to exceed a couple of
gigabytes. If you have enough RAM, you can mount a
<systemitem class='filesystem'>tmpfs</systemitem> on /tmp to make
access to temporary files faster.</para></listitem>
<listitem revision='systemd'><para>/tmp &ndash; By default, systemd
mounts a <systemitem class='filesystem'>tmpfs</systemitem> here.
If you want to override that behavior, follow
<xref linkend='systemd-no-tmpfs'/> when configuring the LFS
system.</para></listitem>
<listitem><para>/usr/src &ndash; This partition is very <listitem><para>/usr/src &ndash; This partition is very
useful for providing a location to store BLFS source files and useful for providing a location to store BLFS source files and
share them across LFS builds. It can also be used as a location share them across LFS builds. It can also be used as a location
for building BLFS packages. A reasonably large partition of 30-50 for building BLFS packages. A reasonably large partition of 30-50
gigabytes allows plenty of room.</para></listitem> gigabytes provides plenty of room.</para></listitem>
</itemizedlist> </itemizedlist>
<para>Any separate partition that you want automatically mounted upon boot <para>Any separate partition that you want automatically mounted when the
needs to be specified in the <filename>/etc/fstab</filename>. Details system starts must be specified in the <filename>/etc/fstab</filename> file.
about how to specify partitions will be discussed in <xref Details about how to specify partitions will be discussed in <xref
linkend="ch-bootable-fstab"/>. </para> linkend="ch-bootable-fstab"/>.</para>
</sect3> </sect3>
</sect2> </sect2>

View File

@ -36,7 +36,7 @@
<listitem> <listitem>
<para><emphasis role="strong">Bison-2.7</emphasis> (/usr/bin/yacc <para><emphasis role="strong">Bison-2.7</emphasis> (/usr/bin/yacc
should be a link to bison or small script that executes bison)</para> should be a link to bison or a small script that executes bison)</para>
</listitem> </listitem>
<listitem> <listitem>

View File

@ -10,24 +10,23 @@
<title>Mounting the New Partition</title> <title>Mounting the New Partition</title>
<para>Now that a file system has been created, the partition needs to <para>Now that a file system has been created, the partition must
be made accessible. In order to do this, the partition needs to be be mounted so the host system can access it. This book assumes that
mounted at a chosen mount point. For the purposes of this book, it is the file system is mounted at the directory specified by the
assumed that the file system is mounted under the directory specified by the <envar>LFS</envar> environment variable described in the previous section.
<envar>LFS</envar> environment variable as described in the previous section.
</para> </para>
<para>Create the mount point and mount the LFS file system by running:</para> <para>Create the mount point and mount the LFS file system with these commands:</para>
<screen role="nodump"><userinput>mkdir -pv $LFS <screen role="nodump"><userinput>mkdir -pv $LFS
mount -v -t ext4 /dev/<replaceable>&lt;xxx&gt;</replaceable> $LFS</userinput></screen> mount -v -t ext4 /dev/<replaceable>&lt;xxx&gt;</replaceable> $LFS</userinput></screen>
<para>Replace <replaceable>&lt;xxx&gt;</replaceable> with the designation of the LFS <para>Replace <replaceable>&lt;xxx&gt;</replaceable> with the name of the LFS
partition.</para> partition.</para>
<para>If using multiple partitions for LFS (e.g., one for <filename <para>If you are using multiple partitions for LFS (e.g., one for
class="directory">/</filename> and another for <filename <filename class="directory">/</filename> and another for <filename
class="directory">/home</filename>), mount them using:</para> class="directory">/home</filename>), mount them like this:</para>
<screen role="nodump"><userinput>mkdir -pv $LFS <screen role="nodump"><userinput>mkdir -pv $LFS
mount -v -t ext4 /dev/<replaceable>&lt;xxx&gt;</replaceable> $LFS mount -v -t ext4 /dev/<replaceable>&lt;xxx&gt;</replaceable> $LFS
@ -43,13 +42,14 @@ mount -v -t ext4 /dev/<replaceable>&lt;yyy&gt;</replaceable> $LFS/home</userinpu
<option>nodev</option> options). Run the <command>mount</command> command <option>nodev</option> options). Run the <command>mount</command> command
without any parameters to see what options are set for the mounted LFS without any parameters to see what options are set for the mounted LFS
partition. If <option>nosuid</option> and/or <option>nodev</option> are set, partition. If <option>nosuid</option> and/or <option>nodev</option> are set,
the partition will need to be remounted.</para> the partition must be remounted.</para>
<warning><para>The above instructions assume that you will not be restarting <warning><para>The above instructions assume that you will not restart
your computer throughout the LFS process. If you shut down your system, your computer throughout the LFS process. If you shut down your system,
you will either need to remount the LFS partition each time you restart you will either need to remount the LFS partition each time you restart
the build process or modify your host system's /etc/fstab file to automatically the build process, or modify the host system's /etc/fstab file to automatically
remount it upon boot. For example: remount it when you reboot. For example, you might add this line to your
/etc/fstab file:
<screen role="nodump">/dev/<replaceable>&lt;xxx&gt;</replaceable> /mnt/lfs ext4 defaults 1 1</screen> <screen role="nodump">/dev/<replaceable>&lt;xxx&gt;</replaceable> /mnt/lfs ext4 defaults 1 1</screen>
@ -67,7 +67,7 @@ mount -v -t ext4 /dev/<replaceable>&lt;yyy&gt;</replaceable> $LFS/home</userinpu
<para>Replace <replaceable>&lt;zzz&gt;</replaceable> with the name of the <para>Replace <replaceable>&lt;zzz&gt;</replaceable> with the name of the
<systemitem class="filesystem">swap</systemitem> partition.</para> <systemitem class="filesystem">swap</systemitem> partition.</para>
<para>Now that there is an established place to work, it is time to <para>Now that the new LFS partition is open for business, it's time to
download the packages.</para> download the packages.</para>
</sect1> </sect1>

View File

@ -34,7 +34,7 @@
</sect2> </sect2>
<sect2> <sect2>
<title>Chapter&nbsp;5&ndash;6</title> <title>Chapters&nbsp;5&ndash;6</title>
<itemizedlist> <itemizedlist>
<listitem> <listitem>
@ -44,8 +44,8 @@
<listitem> <listitem>
<para>These two chapters <emphasis>must</emphasis> be done as user <para>These two chapters <emphasis>must</emphasis> be done as user
<systemitem class="username">lfs</systemitem>. <systemitem class="username">lfs</systemitem>.
A <command>su - lfs</command> needs to be done before any task in these A <command>su - lfs</command> command must be issued before any task in these
chapters. Failing to do that, you are at risk of installing packages to the chapters. If you don't do that, you are at risk of installing packages to the
host, and potentially rendering it unusable.</para> host, and potentially rendering it unusable.</para>
</listitem> </listitem>
@ -54,13 +54,13 @@
are critical. If there is any are critical. If there is any
doubt about installing a package, ensure any previously expanded doubt about installing a package, ensure any previously expanded
tarballs are removed, then re-extract the package files, and complete all tarballs are removed, then re-extract the package files, and complete all
instructions in that section.</para> the instructions in that section.</para>
</listitem> </listitem>
</itemizedlist> </itemizedlist>
</sect2> </sect2>
<sect2> <sect2>
<title>Chapter&nbsp;7&ndash;10</title> <title>Chapters&nbsp;7&ndash;10</title>
<itemizedlist> <itemizedlist>
<listitem> <listitem>
@ -69,7 +69,7 @@
<listitem> <listitem>
<para>A few operations, from <quote>Changing Ownership</quote> to <para>A few operations, from <quote>Changing Ownership</quote> to
<quote>Entering the Chroot Environment</quote> must be done as the <quote>Entering the Chroot Environment</quote>, must be done as the
<systemitem class="username">root</systemitem> user, with the LFS <systemitem class="username">root</systemitem> user, with the LFS
environment variable set for the &root; user.</para> environment variable set for the &root; user.</para>
</listitem> </listitem>
@ -77,7 +77,7 @@
<listitem> <listitem>
<para> When entering chroot, the LFS environment variable must be set <para> When entering chroot, the LFS environment variable must be set
for <systemitem class="username">root</systemitem>. The LFS for <systemitem class="username">root</systemitem>. The LFS
variable is not used afterwards.</para> variable is not used after entering the chroot environment.</para>
</listitem> </listitem>
<listitem> <listitem>

View File

@ -13,17 +13,17 @@
<para>This chapter includes a list of packages that need to be downloaded in <para>This chapter includes a list of packages that need to be downloaded in
order to build a basic Linux system. The listed version numbers correspond to order to build a basic Linux system. The listed version numbers correspond to
versions of the software that are known to work, and this book is based on versions of the software that are known to work, and this book is based on
their use. We highly recommend against using different versions because the build their use. We highly recommend against using different versions, because the build
commands for one version may not work with a different version, unless the commands for one version may not work with a different version, unless the
different version is specified by a LFS errata or security advisory. different version is specified by an LFS erratum or security advisory.
The newest package versions may also have problems that require The newest package versions may also have problems that require
work-arounds. These work-arounds will be developed and stabilized in the work-arounds. These work-arounds will be developed and stabilized in the
development version of the book.</para> development version of the book.</para>
<para>For some packages, the release tarball and the (Git or SVN) <para>For some packages, the release tarball and the (Git or SVN)
repository snapshot tarball for this release may be published with repository snapshot tarball for that release may be published with
similar file name. A release tarball contains generated files (for similar file names. A release tarball contains generated files (for
example, <command>configure</command> script generated by example, a <command>configure</command> script generated by
<command>autoconf</command>), in addition to the contents of the <command>autoconf</command>), in addition to the contents of the
corresponding repository snapshot. The book uses release tarballs corresponding repository snapshot. The book uses release tarballs
whenever possible. Using a repository snapshot instead of a release whenever possible. Using a repository snapshot instead of a release
@ -31,7 +31,7 @@
<para>Download locations may not always be accessible. If a download <para>Download locations may not always be accessible. If a download
location has changed since this book was published, Google (<ulink location has changed since this book was published, Google (<ulink
url="http://www.google.com/"/>) provides a useful search engine for url="https://www.google.com/"/>) provides a useful search engine for
most packages. If this search is unsuccessful, try one of the most packages. If this search is unsuccessful, try one of the
alternative means of downloading at <ulink alternative means of downloading at <ulink
url="&lfs-root;lfs/mirrors.html#files"/>. </para> url="&lfs-root;lfs/mirrors.html#files"/>. </para>
@ -69,7 +69,7 @@
</listitem> </listitem>
<listitem> <listitem>
<para>For stable versions of the book, a tarball of all the needed files <para>For stable versions of the book, a tarball of all the needed files
can be downloaded from one of the LFS files mirrors listed at can be downloaded from one of the mirror sites listed at
<ulink url="https://www.linuxfromscratch.org/mirrors.html#files"/>.</para> <ulink url="https://www.linuxfromscratch.org/mirrors.html#files"/>.</para>
</listitem> </listitem>
<listitem> <listitem>

View File

@ -20,9 +20,9 @@
reachable, you should read the security advisories first to figure out reachable, you should read the security advisories first to figure out
if a newer version (with the vulnerability fixed) should be used. If if a newer version (with the vulnerability fixed) should be used. If
not, try to download the removed package from a mirror. Although it's not, try to download the removed package from a mirror. Although it's
possible to download an old release from a mirror even if this release possible to download an old release from a mirror even if this release
has been removed because of a vulnerability, it's not recommended to has been removed because of a vulnerability, it's not recommended to
use a release known to be vulnerable for building your system.</para> use a release known to be vulnerable for building your system.</para>
</note> </note>
<para>Download or otherwise obtain the following packages:</para> <para>Download or otherwise obtain the following packages:</para>

View File

@ -186,7 +186,7 @@ EOF</userinput></screen>
<para>After use of the <systemitem class="username">lfs</systemitem> <para>After use of the <systemitem class="username">lfs</systemitem>
user is finished at the beginning of <xref user is finished at the beginning of <xref
linkend="chapter-chroot-temporary-tools"/>, you can restore linkend="chapter-chroot-temporary-tools"/>, you can restore
<filename>/etc/bash.bashrc</filename> (if desired).</para> <filename>/etc/bash.bashrc</filename> (if desired).</para>
<para>Note that the LFS Bash package we will build in <para>Note that the LFS Bash package we will build in
<xref linkend="ch-system-bash"/> is not configured to load or execute <xref linkend="ch-system-bash"/> is not configured to load or execute

View File

@ -83,6 +83,8 @@ cd build</userinput></screen>
--with-sysroot=$LFS \ --with-sysroot=$LFS \
--with-newlib \ --with-newlib \
--without-headers \ --without-headers \
--enable-default-pie \
--enable-default-ssp \
--disable-nls \ --disable-nls \
--disable-shared \ --disable-shared \
--disable-multilib \ --disable-multilib \
@ -128,6 +130,20 @@ cd build</userinput></screen>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry>
<term><parameter>--enable-default-pie and
--enable-default-ssp</parameter></term>
<listitem>
<para>Those switches allow GCC to compile programs with
some hardening security features (more information on those in
the <xref linkend="pie-ssp-info"/> in chapter 8) by default. The
are not strictly needed at this stage, since the compiler will
only produce temporary executables. But it is cleaner to have the
temporary packages be as close as possible to the final ones.
</para>
</listitem>
</varlistentry>
<varlistentry> <varlistentry>
<term><parameter>--disable-shared</parameter></term> <term><parameter>--disable-shared</parameter></term>
<listitem> <listitem>

View File

@ -87,6 +87,8 @@ cd build</userinput></screen>
LDFLAGS_FOR_TARGET=-L$PWD/$LFS_TGT/libgcc \ LDFLAGS_FOR_TARGET=-L$PWD/$LFS_TGT/libgcc \
--prefix=/usr \ --prefix=/usr \
--with-build-sysroot=$LFS \ --with-build-sysroot=$LFS \
--enable-default-pie \
--enable-default-ssp \
--disable-nls \ --disable-nls \
--disable-multilib \ --disable-multilib \
--disable-decimal-float \ --disable-decimal-float \

View File

@ -18,10 +18,10 @@
<screen><userinput>rm -rf /usr/share/{info,man,doc}/*</userinput></screen> <screen><userinput>rm -rf /usr/share/{info,man,doc}/*</userinput></screen>
<para>Second, the libtool .la files are only useful when linking with static <para>Second, on a modern Linux system, the libtool .la files are only
libraries. They are unneeded and potentially harmful when using dynamic useful for libltdl. No libraries in LFS are expected to be loaded by
shared libraries, especially when using non-autotools build systems. libltdl, and it's known that some .la files can cause BLFS packages
While still in chroot, remove those files now:</para> fail to build. Remove those files now:</para>
<screen><userinput>find /usr/{lib,libexec} -name \*.la -delete</userinput></screen> <screen><userinput>find /usr/{lib,libexec} -name \*.la -delete</userinput></screen>
@ -95,7 +95,8 @@
<para>Before making a backup, unmount the virtual file systems:</para> <para>Before making a backup, unmount the virtual file systems:</para>
<screen role="nodump"><userinput>umount $LFS/dev/pts <screen role="nodump"><userinput>mountpoint -q $LFS/dev/shm &amp;&amp; umount $LFS/dev/shm
umount $LFS/dev/pts
umount $LFS/{sys,proc,run,dev}</userinput></screen> umount $LFS/{sys,proc,run,dev}</userinput></screen>
<para> <para>

View File

@ -48,8 +48,8 @@
as well:</para> as well:</para>
<screen><userinput>cat &gt; /etc/hosts &lt;&lt; EOF <screen><userinput>cat &gt; /etc/hosts &lt;&lt; EOF
127.0.0.1 localhost $(hostname) <literal>127.0.0.1 localhost $(hostname)
::1 localhost ::1 localhost</literal>
EOF</userinput></screen> EOF</userinput></screen>
<para>In order for user <systemitem class="username">root</systemitem> to be <para>In order for user <systemitem class="username">root</systemitem> to be
@ -162,7 +162,7 @@ EOF</userinput></screen>
9, and in part by common convention employed by a number of existing Linux 9, and in part by common convention employed by a number of existing Linux
distributions. In addition, some test suites rely on specific users or distributions. In addition, some test suites rely on specific users or
groups. The Linux Standard Base (LSB, available at <ulink groups. The Linux Standard Base (LSB, available at <ulink
url="http://refspecs.linuxfoundation.org/lsb.shtml"/>) only recommends that, url="https://refspecs.linuxfoundation.org/lsb.shtml"/>) only recommends that,
besides the group <systemitem class="groupname">root</systemitem> with a besides the group <systemitem class="groupname">root</systemitem> with a
Group ID (GID) of 0, a group <systemitem class="groupname">bin</systemitem> Group ID (GID) of 0, a group <systemitem class="groupname">bin</systemitem>
with a GID of 1 be present. The GID of 5 is widely used for with a GID of 1 be present. The GID of 5 is widely used for

View File

@ -89,8 +89,15 @@ mount -vt tmpfs tmpfs $LFS/run</userinput></screen>
The /run tmpfs was mounted above so in this case only a The /run tmpfs was mounted above so in this case only a
directory needs to be created.</para> directory needs to be created.</para>
<para>In other cases <filename>/dev/shm</filename> is a mountpoint
for a tmpfs. In that case the mount of /dev above will only create
/dev/shm in the chroot environment as a directory. In this situation
we explicitly mount a tmpfs,</para>
<screen><userinput>if [ -h $LFS/dev/shm ]; then <screen><userinput>if [ -h $LFS/dev/shm ]; then
mkdir -pv $LFS/$(readlink $LFS/dev/shm) mkdir -pv $LFS/$(readlink $LFS/dev/shm)
else
mount -t tmpfs -o nosuid,nodev tmpfs $LFS/dev/shm
fi</userinput></screen> fi</userinput></screen>
</sect2> </sect2>

View File

@ -167,13 +167,24 @@ cd build</userinput></screen>
condition. condition.
</para> </para>
<para>Twelve tests fail in the <command>gold</command> testsuite when the
<option>--enable-default-pie</option> and
<option>--enable-default-ssp</option> options are passed to GCC.
<!-- Caused by egrep deprecation. Note that we don't "patch" temp grep.
And it seems unworthy to add a sed into temp grep just for one test
failure. (I don't really agree to "patch" grep in the first place,
anyway.) -->
The test named <filename>ar with versioned solib</filename> is also
known to fail.</para>
<para>Install the package:</para> <para>Install the package:</para>
<screen><userinput remap="install">make tooldir=/usr install</userinput></screen> <screen><userinput remap="install">make tooldir=/usr install</userinput></screen>
<para>Remove useless static libraries:</para> <para>Remove useless static libraries and an empty man page:</para>
<screen><userinput remap="install">rm -fv /usr/lib/lib{bfd,ctf,ctf-nobfd,opcodes}.a</userinput></screen> <screen><userinput remap="install">rm -fv /usr/lib/lib{bfd,ctf,ctf-nobfd,opcodes}.a
rm -fv /usr/share/man/man1/gprofng.1</userinput></screen>
</sect2> </sect2>

View File

@ -16,10 +16,10 @@
<para>There are also several files installed in the /usr/lib and /usr/libexec <para>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" directories with a file name extension of .la. These are "libtool archive"
files. As already said, they are only useful when linking with static files. As already said, on a modern Linux system the libtool .la files are
libraries. They are unneeded, and potentially harmful, when using dynamic only useful for libltdl. No libraries in LFS are expected to be loaded
shared libraries, specially when using also non-autotools build systems. by libltdl, and it's known that some .la files can cause BLFS packages
To remove them, run:</para> fail to build. Remove those files now:</para>
<screen><userinput>find /usr/lib /usr/libexec -name \*.la -delete</userinput></screen> <screen><userinput>find /usr/lib /usr/libexec -name \*.la -delete</userinput></screen>

View File

@ -39,16 +39,12 @@
<sect2 role="installation"> <sect2 role="installation">
<title>Installation of Eudev</title> <title>Installation of Eudev</title>
<!--
<para>First, fix a test script:</para>
<screen><userinput remap="pre">sed -r -i 's|/usr(/bin/test)|\1|' test/udev-test.pl</userinput></screen>
-->
<!--
<para>Next, remove an unneeded line that causes a build failure:</para>
<screen><userinput remap="pre">sed -i '/keyboard_lookup_key/d' src/udev/udev-builtin-keyboard.c</userinput></screen> <para>First fix the location of udev rules in the .pc file:</para>
-->
<screen><userinput remap="pre">sed -i '/udevdir/a udev_dir=${udevdir}' src/udev/udev.pc.in</userinput></screen>
<para>Prepare Eudev for compilation:</para> <para>Prepare Eudev for compilation:</para>

View File

@ -44,6 +44,10 @@
<screen><userinput remap="pre">sed -i 's/extras//' Makefile.in</userinput></screen> <screen><userinput remap="pre">sed -i 's/extras//' Makefile.in</userinput></screen>
<para>Now fix a programming error identified upstream:</para>
<screen><userinput remap="pre">sed -i '241i UPREF(m);' interpret.h</userinput></screen>
<para>Prepare Gawk for compilation:</para> <para>Prepare Gawk for compilation:</para>
<screen><userinput remap="configure">./configure --prefix=/usr</userinput></screen> <screen><userinput remap="configure">./configure --prefix=/usr</userinput></screen>

View File

@ -70,6 +70,8 @@ cd build</userinput></screen>
<screen><userinput remap="configure">../configure --prefix=/usr \ <screen><userinput remap="configure">../configure --prefix=/usr \
LD=ld \ LD=ld \
--enable-languages=c,c++ \ --enable-languages=c,c++ \
--enable-default-pie \
--enable-default-ssp \
--disable-multilib \ --disable-multilib \
--disable-bootstrap \ --disable-bootstrap \
--with-system-zlib</userinput></screen> --with-system-zlib</userinput></screen>
@ -100,13 +102,34 @@ cd build</userinput></screen>
</varlistentry> </varlistentry>
</variablelist> </variablelist>
<note>
<anchor id="pie-ssp-info" xreflabel="note on PIE and SSP"/>
<para>
PIE (position-independent executable) is a technique to produce
binary programs that can be loaded anywhere in memory. Without PIE,
the security feature named ASLR (Address Space Layout Randomization)
can be applied for the shared libraries, but not the executable
itself. Enabling PIE allows ASLR for the executables in addition to
the shared libraries, and mitigates some attacks based on fixed
addresses of sensitive code or data in the executables.
</para>
<para>
SSP (Stack Smashing Protection) is a technique to ensure
that the parameter stack is not corrupted. Stack corruption can
for example alter the return address of a subroutine,
which would allow transferring control to some dangerous code
(existing in the program or shared libraries, or injected by the
attacker somehow) instead of the original one.
</para>
</note>
<para>Compile the package:</para> <para>Compile the package:</para>
<screen><userinput remap="make">make</userinput></screen> <screen><userinput remap="make">make</userinput></screen>
<important> <important>
<para>In this section, the test suite for GCC is considered <para>In this section, the test suite for GCC is considered
important, but it takes a long time. First time builders are important, but it takes a long time. First time builders are
encouraged to not skip it. The time to run the tests can be encouraged to not skip it. The time to run the tests can be
reduced significantly by adding -jx to the make command below reduced significantly by adding -jx to the make command below
where x is the number of cores on your system.</para> where x is the number of cores on your system.</para>
@ -133,6 +156,10 @@ su tester -c "PATH=$PATH make -k check"</userinput></screen>
url="&test-results;"/> and url="&test-results;"/> and
<ulink url="https://gcc.gnu.org/ml/gcc-testresults/"/>.</para> <ulink url="https://gcc.gnu.org/ml/gcc-testresults/"/>.</para>
<para>In gcc, eleven tests, in the i386 test suite are known to FAIL.
It's because the test files do not account for the
<parameter>--enable-default-pie</parameter> option.</para>
<para>In g++, four tests related to PR100400 are known to be reported <para>In g++, four tests related to PR100400 are known to be reported
as both XPASS and FAIL. It's because the test file for this known issue as both XPASS and FAIL. It's because the test file for this known issue
is not well written.</para> is not well written.</para>
@ -210,11 +237,11 @@ readelf -l a.out | grep ': /lib'</userinput></screen>
<para>Now make sure that we're setup to use the correct start files:</para> <para>Now make sure that we're setup to use the correct start files:</para>
<screen><userinput>grep -o '/usr/lib.*/crt[1in].*succeeded' dummy.log</userinput></screen> <screen><userinput>grep -E -o '/usr/lib.*/S?crt[1in].*succeeded' dummy.log</userinput></screen>
<para>The output of the last command should be:</para> <para>The output of the last command should be:</para>
<screen><computeroutput>/usr/lib/gcc/aarch64-unknown-linux-gnu/&gcc-version;/../../../../lib/crt1.o succeeded <screen><computeroutput>/usr/lib/gcc/aarch64-unknown-linux-gnu/&gcc-version;/../../../../lib/Scrt1.o succeeded
/usr/lib/gcc/aarch64-unknown-linux-gnu/&gcc-version;/../../../../lib/crti.o succeeded /usr/lib/gcc/aarch64-unknown-linux-gnu/&gcc-version;/../../../../lib/crti.o succeeded
/usr/lib/gcc/aarch64-unknown-linux-gnu/&gcc-version;/../../../../lib/crtn.o succeeded</computeroutput></screen> /usr/lib/gcc/aarch64-unknown-linux-gnu/&gcc-version;/../../../../lib/crtn.o succeeded</computeroutput></screen>
@ -572,7 +599,8 @@ mv -v /usr/lib/*gdb.py /usr/share/gdb/auto-load/usr/lib</userinput></screen>
<term><filename class="libraryfile">libssp</filename></term> <term><filename class="libraryfile">libssp</filename></term>
<listitem> <listitem>
<para>Contains routines supporting GCC's stack-smashing protection <para>Contains routines supporting GCC's stack-smashing protection
functionality</para> functionality. Normally it's unused because glibc also provides
those routines</para>
<indexterm zone="ch-system-gcc libssp"> <indexterm zone="ch-system-gcc libssp">
<primary sortas="c-libssp">libssp</primary> <primary sortas="c-libssp">libssp</primary>
</indexterm> </indexterm>

View File

@ -62,7 +62,7 @@
<listitem> <listitem>
<para>Since bison is not yet installed in /usr, configure hardcodes <para>Since bison is not yet installed in /usr, configure hardcodes
the directory containing translations for the bison program (the the directory containing translations for the bison program (the
"locale" directory) as /tools/share/locale. Passing this variable "locale" directory) as /tools/share/locale. Passing this variable
to make allows overriding the choice made by configure.</para> to make allows overriding the choice made by configure.</para>
</listitem> </listitem>
</varlistentry> </varlistentry>

View File

@ -40,6 +40,13 @@
<sect2 role="installation"> <sect2 role="installation">
<title>Installation of Grep</title> <title>Installation of Grep</title>
<para>
First, remove a warning about using egrep and fgrep that makes
tests on some packages fail:
</para>
<screen><userinput remap="pre">sed -i "s/echo/#echo/" src/egrep.sh</userinput></screen>
<para>Prepare Grep for compilation:</para> <para>Prepare Grep for compilation:</para>
<screen><userinput remap="configure">./configure --prefix=/usr</userinput></screen> <screen><userinput remap="configure">./configure --prefix=/usr</userinput></screen>

View File

@ -53,6 +53,8 @@
<screen><userinput remap="configure">PAGE=<replaceable>&lt;paper_size&gt;</replaceable> ./configure --prefix=/usr</userinput></screen> <screen><userinput remap="configure">PAGE=<replaceable>&lt;paper_size&gt;</replaceable> ./configure --prefix=/usr</userinput></screen>
<para>Build the package:</para>
<screen><userinput remap="make">make</userinput></screen> <screen><userinput remap="make">make</userinput></screen>
<para>This package does not come with a test suite.</para> <para>This package does not come with a test suite.</para>

View File

@ -52,7 +52,7 @@
<para>To test the results<!--(about 11.0 SBU)-->, issue:</para> <para>To test the results<!--(about 11.0 SBU)-->, issue:</para>
<screen><userinput remap="test">make check</userinput></screen> <screen><userinput remap="test">make -k check</userinput></screen>
<note><para>The test time for libtool can be reduced significantly on a <note><para>The test time for libtool can be reduced significantly on a
system with multiple cores. To do this, append system with multiple cores. To do this, append
@ -61,8 +61,9 @@
percent.</para></note> percent.</para></note>
<para>Five tests are known to fail in the LFS build environment due <para>Five tests are known to fail in the LFS build environment due
to a circular dependency, but all tests pass if rechecked after to a circular dependency, but these tests pass if rechecked after
automake is installed.</para> automake is installed. Additionally, with grep-3.8, two tests will
trigger a warning for non-POSIX regular expressions and fail.</para>
<para>Install the package:</para> <para>Install the package:</para>

View File

@ -96,7 +96,7 @@ install -vDm644 data/shell-completions/zsh/_meson /usr/share/zsh/site-functions/
<seglistitem> <seglistitem>
<seg>meson</seg> <seg>meson</seg>
<seg> <seg>
/usr/lib/python&python-minor;/site-packages/meson-&meson-version;.dist-info and /usr/lib/python&python-minor;/site-packages/meson-&meson-version;.dist-info and
/usr/lib/python&python-minor;/site-packages/mesonbuild /usr/lib/python&python-minor;/site-packages/mesonbuild
</seg> </seg>
</seglistitem> </seglistitem>
@ -108,7 +108,7 @@ install -vDm644 data/shell-completions/zsh/_meson /usr/share/zsh/site-functions/
<?dbhtml list-presentation="table"?> <?dbhtml list-presentation="table"?>
<varlistentry id="meson"> <varlistentry id="meson">
<term><command>meson</command></term> <term><command>meson</command></term>
<listitem> <listitem>
<para>A high productivity build system</para> <para>A high productivity build system</para>
<indexterm zone="ch-system-meson meson"> <indexterm zone="ch-system-meson meson">

View File

@ -122,7 +122,7 @@
</para> </para>
<!-- To editors: crash of shell process was very rare but really <!-- To editors: crash of shell process was very rare but really
observed. We can't simply remove /usr/lib/libncursesw.so.6.x like observed. We can't simply remove /usr/lib/libncursesw.so.6.x like
how we handle libmozjs-xx.so in BLFS because bash needs it, and how we handle libmozjs-xx.so in BLFS because bash needs it, and
make will spawn new shell processes during "make install". --> make will spawn new shell processes during "make install". -->
@ -131,8 +131,7 @@
in-place. It may crash the shell process which is using code and data in-place. It may crash the shell process which is using code and data
from the library file. Install the package with from the library file. Install the package with
<literal>DESTDIR</literal>, and replace the library file correctly using <literal>DESTDIR</literal>, and replace the library file correctly using
<command>install</command> command. A useless static archive which is <command>install</command> command:</para>
not handled by <command>configure</command> is also removed:</para>
<screen><userinput remap="install">make DESTDIR=$PWD/dest install <screen><userinput remap="install">make DESTDIR=$PWD/dest install
install -vm755 dest/usr/lib/libncursesw.so.&ncurses-version; /usr/lib install -vm755 dest/usr/lib/libncursesw.so.&ncurses-version; /usr/lib
@ -212,6 +211,7 @@ cp -av lib/lib*.so.5* /usr/lib</userinput></screen>
libformw.so, libformw.so,
libmenuw.so, libmenuw.so,
libncursesw.so, libncursesw.so,
libncurses++w.so,
libpanelw.so, and their non-wide-character counterparts without "w" libpanelw.so, and their non-wide-character counterparts without "w"
in the library names.</seg> in the library names.</seg>
<seg> <seg>
@ -366,6 +366,16 @@ cp -av lib/lib*.so.5* /usr/lib</userinput></screen>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry id="libncurses__w">
<term><filename class="libraryfile">libncurses++w</filename></term>
<listitem>
<para>Contains C++ binding for other libraries in this package</para>
<indexterm zone="ch-system-ncurses libncurses__w">
<primary sortas="c-libncurses++w">libncurses++w</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="libformw"> <varlistentry id="libformw">
<term><filename class="libraryfile">libformw</filename></term> <term><filename class="libraryfile">libformw</filename></term>
<listitem> <listitem>

View File

@ -43,7 +43,7 @@
<sect2 role="installation"> <sect2 role="installation">
<title>Installation of OpenSSL</title> <title>Installation of OpenSSL</title>
<!-- <!--
<para>First fix a problem with some advanced arcitectures with avx512 <para>First fix a problem with some advanced architectures with avx512
capability:</para> capability:</para>
<screen><userinput remap="pre">sed -e '/bn_reduce.*m1/i\ factor_size /= sizeof(BN_ULONG) * 8;' \ <screen><userinput remap="pre">sed -e '/bn_reduce.*m1/i\ factor_size /= sizeof(BN_ULONG) * 8;' \

View File

@ -283,7 +283,7 @@ make DESTDIR=/usr/pkg/libfoo/1.1 install</userinput></screen>
<para>This approach is used by most of the package managers found in the <para>This approach is used by most of the package managers found in the
commercial distributions. Examples of package managers that follow this commercial distributions. Examples of package managers that follow this
approach are RPM (which, incidentally, is required by the <ulink approach are RPM (which, incidentally, is required by the <ulink
url="http://refspecs.linuxfoundation.org/lsb.shtml">Linux url="https://refspecs.linuxfoundation.org/lsb.shtml">Linux
Standard Base Specification</ulink>), pkg-utils, Debian's apt, and Standard Base Specification</ulink>), pkg-utils, Debian's apt, and
Gentoo's Portage system. A hint describing how to adopt this style of Gentoo's Portage system. A hint describing how to adopt this style of
package management for LFS systems is located at <ulink package management for LFS systems is located at <ulink
@ -296,7 +296,7 @@ make DESTDIR=/usr/pkg/libfoo/1.1 install</userinput></screen>
archives. This system purposely does not handle package dependencies archives. This system purposely does not handle package dependencies
as more complex package managers do. For details of Slackware package as more complex package managers do. For details of Slackware package
management, see <ulink management, see <ulink
url="http://www.slackbook.org/html/package-management.html"/>.</para> url="https://www.slackbook.org/html/package-management.html"/>.</para>
</sect3> </sect3>
<sect3> <sect3>

View File

@ -116,10 +116,10 @@
well. If desired, suppress these warnings by running the following well. If desired, suppress these warnings by running the following
commands:</para> commands:</para>
<screen><userinput remap="install">cat &gt; /etc/pip.conf &lt;&lt; EOF <screen><userinput remap="install">cat &gt; /etc/pip.conf &lt;&lt; EOF
[global] <literal>[global]
root-user-action = ignore root-user-action = ignore
disable-pip-version-check = true disable-pip-version-check = true</literal>
EOF EOF
</userinput></screen> </userinput></screen>
<!-- <!--

View File

@ -63,9 +63,9 @@ sed -i '/{OLDSUFF}/c:' support/shlib-install</userinput></screen>
<term><parameter>--with-curses</parameter></term> <term><parameter>--with-curses</parameter></term>
<listitem> <listitem>
<para>This option tells Readline that it can find the termcap <para>This option tells Readline that it can find the termcap
library functions in the curses library, rather than a separate library functions in the curses library, rather than a separate
termcap library. It allows generating a correct termcap library. It allows generating a correct
<filename>readline.pc</filename> file.</para> <filename>readline.pc</filename> file.</para>
</listitem> </listitem>
</varlistentry> </varlistentry>

View File

@ -100,7 +100,7 @@
<screen><userinput remap="test">chown -Rv tester . <screen><userinput remap="test">chown -Rv tester .
su tester -c "make -k check"</userinput></screen> su tester -c "make -k check"</userinput></screen>
<para>The <emphasis>hardlink</emphasis> tests will fail if the host's kernel <para>The <emphasis>hardlink</emphasis> tests will fail if the host's kernel
does not have the option CONFIG_CRYPTO_USER_API_HASH set.</para> does not have the option CONFIG_CRYPTO_USER_API_HASH set.</para>
<para>Install the package:</para> <para>Install the package:</para>

View File

@ -167,11 +167,13 @@ EOF</userinput></screen>
<note> <note>
<para>By default, vim only installs spell files for the English language. <para>By default, vim only installs spell files for the English language.
To install spell files for your preferred language, download the To install spell files for your preferred language, copy the
<filename>*.spl</filename> and optionally, the <filename>*.sug</filename> <filename class='extension'>.spl</filename> and optionally, the
files for your language and character encoding from <ulink <filename class='extension'>.sug</filename> files for your language
url="ftp://ftp.vim.org/pub/vim/runtime/spell/"/> and save them to and character encoding from
<filename class='directory'>/usr/share/&vim-docdir;/spell/</filename>.</para> <filename class='directory'>runtime/spell</filename> into
<filename class='directory'>
/usr/share/&vim-docdir;/spell/</filename>.</para>
<para>To use these spell files, some configuration in <para>To use these spell files, some configuration in
<filename>/etc/vimrc</filename> is needed, e.g.:</para> <filename>/etc/vimrc</filename> is needed, e.g.:</para>
@ -179,8 +181,8 @@ EOF</userinput></screen>
<screen><literal>set spelllang=en,ru <screen><literal>set spelllang=en,ru
set spell</literal></screen> set spell</literal></screen>
<para>For more information, see the appropriate README file located <para>For more information, see
at the URL above.</para> <filename>runtime/spell/README.txt</filename>.</para>
</note> </note>
</sect2> </sect2>

View File

@ -23,7 +23,7 @@
<filename>/etc/vconsole.conf</filename> file for configuration <filename>/etc/vconsole.conf</filename> file for configuration
information. Decide which keymap and screen font will be used. Various information. Decide which keymap and screen font will be used. Various
language-specific HOWTOs can also help with this, see <ulink language-specific HOWTOs can also help with this, see <ulink
url="http://www.tldp.org/HOWTO/HOWTO-INDEX/other-lang.html"/>. url="https://tldp.org/HOWTO/HOWTO-INDEX/other-lang.html"/>.
Examine the output of <command>localectl list-keymaps</command> for a list of Examine the output of <command>localectl list-keymaps</command> for a list of
valid console keymaps. Look in the valid console keymaps. Look in the
<filename class="directory">/usr/share/consolefonts</filename> <filename class="directory">/usr/share/consolefonts</filename>

View File

@ -46,7 +46,7 @@ EOF</userinput></screen>
</sect2> </sect2>
<sect2> <sect2 id='systemd-no-tmpfs'>
<title>Disabling tmpfs for /tmp</title> <title>Disabling tmpfs for /tmp</title>
<para>By default, <filename class="directory">/tmp</filename> is created as <para>By default, <filename class="directory">/tmp</filename> is created as

View File

@ -325,7 +325,7 @@
<listitem> <listitem>
<para>The <systemitem class="filesystem">sysfs</systemitem> Filesystem <para>The <systemitem class="filesystem">sysfs</systemitem> Filesystem
<ulink url="http://www.kernel.org/pub/linux/kernel/people/mochel/doc/papers/ols-2005/mochel.pdf"/></para> <ulink url="https://www.kernel.org/pub/linux/kernel/people/mochel/doc/papers/ols-2005/mochel.pdf"/></para>
</listitem> </listitem>
<!-- No longer available <!-- No longer available

View File

@ -43,8 +43,8 @@
<note> <note>
<para> <para>
Classically, run level 2 above was defined as Classically, run level 2 above was defined as
"multi-user mode without networking", but this was only the case "multi-user mode without networking", but this was only the case
many years ago when multiple users could log into a system connected via many years ago when multiple users could log into a system connected via
serial ports. In today's environment it makes no sense and serial ports. In today's environment it makes no sense and
we designate it now as "reserved". we designate it now as "reserved".
@ -166,7 +166,7 @@ EOF</userinput></screen>
<parameter>stop</parameter> to stop something. The logic behind this <parameter>stop</parameter> to stop something. The logic behind this
is that when a user is going to reboot or halt the system, nothing is that when a user is going to reboot or halt the system, nothing
needs to be started, but the order of shutdown needs to be controlled. needs to be started, but the order of shutdown needs to be controlled.
For these run levels, all <emphasis>K</emphasis> prefixed scripts will be For these run levels, all <emphasis>K</emphasis> prefixed scripts will be
run before any <emphasis>S</emphasis> prefixed scripts are run with the run before any <emphasis>S</emphasis> prefixed scripts are run with the
<parameter>stop</parameter> parameter. <parameter>stop</parameter> parameter.
</para> </para>
@ -334,7 +334,7 @@ EOF</userinput></screen>
<filename>/etc/sysconfig/console</filename> file for configuration <filename>/etc/sysconfig/console</filename> file for configuration
information. Decide which keymap and screen font will be used. Various information. Decide which keymap and screen font will be used. Various
language-specific HOWTOs can also help with this, see <ulink language-specific HOWTOs can also help with this, see <ulink
url="http://www.tldp.org/HOWTO/HOWTO-INDEX/other-lang.html"/>. If still in url="https://tldp.org/HOWTO/HOWTO-INDEX/other-lang.html"/>. If still in
doubt, look in the <filename class="directory">/usr/share/keymaps</filename> doubt, look in the <filename class="directory">/usr/share/keymaps</filename>
and <filename class="directory">/usr/share/consolefonts</filename> directories and <filename class="directory">/usr/share/consolefonts</filename> directories
for valid keymaps and screen fonts. Read <filename>loadkeys(1)</filename> and for valid keymaps and screen fonts. Read <filename>loadkeys(1)</filename> and

View File

@ -32,6 +32,7 @@ sysfs /sys sysfs nosuid,noexec,nodev 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0
tmpfs /run tmpfs defaults 0 0 tmpfs /run tmpfs defaults 0 0
devtmpfs /dev devtmpfs mode=0755,nosuid 0 0 devtmpfs /dev devtmpfs mode=0755,nosuid 0 0
tmpfs /dev/shm tmpfs nosuid,nodev 0 0
# End /etc/fstab</literal> # End /etc/fstab</literal>
EOF</userinput></screen> EOF</userinput></screen>

View File

@ -105,19 +105,30 @@
<para>Be sure to enable/disable/set the following features or the system might <para>Be sure to enable/disable/set the following features or the system might
not work correctly or boot at all:</para> not work correctly or boot at all:</para>
<screen role="nodump" revision="sysv">General setup --> <screen role="nodump" revision="sysv">Processor type and features ---&gt;
[*] Build a relocatable kernel [CONFIG_RELOCATABLE]
[*] Randomize the address of the kernel image (KASLR) [CONFIG_RANDOMIZE_BASE]
General setup ---&gt;
[ ] Compile the kernel with warnings as errors [CONFIG_WERROR] [ ] Compile the kernel with warnings as errors [CONFIG_WERROR]
&lt; &gt; Enable kernel headers through /sys/kernel/kheaders.tar.xz [CONFIG_IKHEADERS] &lt; &gt; Enable kernel headers through /sys/kernel/kheaders.tar.xz [CONFIG_IKHEADERS]
General architecture-dependent options ---&gt;
[*] Stack Protector buffer overflow detection [CONFIG_STACKPROTECTOR]
[*] Strong Stack Protector [CONFIG_STACKPROTECTOR_STRONG]
Device Drivers ---&gt; Device Drivers ---&gt;
Graphics support ---&gt; Graphics support ---&gt;
Frame buffer Devices ---&gt; Frame buffer Devices ---&gt;
[*] Support for frame buffer devices ---- &lt;*&gt; Support for frame buffer devices ---&gt;
Console display driver support ---&gt;
[*] Framebuffer Console support [CONFIG_FRAMEBUFFER_CONSOLE]
Generic Driver Options ---&gt; Generic Driver Options ---&gt;
[ ] Support for uevent helper [CONFIG_UEVENT_HELPER] [ ] Support for uevent helper [CONFIG_UEVENT_HELPER]
[*] Maintain a devtmpfs filesystem to mount at /dev [CONFIG_DEVTMPFS] [*] Maintain a devtmpfs filesystem to mount at /dev [CONFIG_DEVTMPFS]
[*] Automount devtmpfs at /dev, after the kernel mounted the rootfs [CONFIG_DEVTMPFS_MOUNT]</screen> [*] Automount devtmpfs at /dev, after the kernel mounted the rootfs [CONFIG_DEVTMPFS_MOUNT]</screen>
<screen role="nodump" revision="systemd">General setup --> <screen role="nodump" revision="systemd">Processor type and features ---&gt;
[*] Build a relocatable kernel [CONFIG_RELOCATABLE]
[*] Randomize the address of the kernel image (KASLR) [CONFIG_RANDOMIZE_BASE]
General setup ---&gt;
[ ] Compile the kernel with warnings as errors [CONFIG_WERROR] [ ] Compile the kernel with warnings as errors [CONFIG_WERROR]
[ ] Auditing Support [CONFIG_AUDIT] [ ] Auditing Support [CONFIG_AUDIT]
CPU/Task time and stats accounting ---&gt; CPU/Task time and stats accounting ---&gt;
@ -130,6 +141,8 @@ Device Drivers ---&gt;
[*] open by fhandle syscalls [CONFIG_FHANDLE] [*] open by fhandle syscalls [CONFIG_FHANDLE]
General architecture-dependent options ---&gt; General architecture-dependent options ---&gt;
[*] Enable seccomp to safely compute untrusted bytecode [CONFIG_SECCOMP] [*] Enable seccomp to safely compute untrusted bytecode [CONFIG_SECCOMP]
[*] Stack Protector buffer overflow detection [CONFIG_STACKPROTECTOR]
[*] Strong Stack Protector [CONFIG_STACKPROTECTOR_STRONG]
Networking support ---&gt; Networking support ---&gt;
Networking options ---&gt; Networking options ---&gt;
&lt;*&gt; The IPv6 protocol [CONFIG_IPV6] &lt;*&gt; The IPv6 protocol [CONFIG_IPV6]
@ -145,16 +158,12 @@ Device Drivers ---&gt;
Graphics support ---&gt; Graphics support ---&gt;
Frame buffer Devices ---&gt; Frame buffer Devices ---&gt;
&lt;*&gt; Support for frame buffer devices ---&gt; &lt;*&gt; Support for frame buffer devices ---&gt;
Console display driver support ---&gt;
[*] Framebuffer Console support [CONFIG_FRAMEBUFFER_CONSOLE]
File systems ---&gt; File systems ---&gt;
[*] Inotify support for userspace [CONFIG_INOTIFY_USER] [*] Inotify support for userspace [CONFIG_INOTIFY_USER]
Pseudo filesystems ---&gt; Pseudo filesystems ---&gt;
[*] Tmpfs POSIX Access Control Lists [CONFIG_TMPFS_POSIX_ACL]</screen> [*] Tmpfs POSIX Access Control Lists [CONFIG_TMPFS_POSIX_ACL]</screen>
<para>Disable a feature which is security compromised in this kernel
release:</para>
<screen role="nodump">Memory Management options ---&gt;
[ ] Enable userfaultfd() system call [CONFIG_USERFAULTFD]</screen>
</note> </note>
<note revision="systemd"> <note revision="systemd">
@ -179,6 +188,14 @@ File systems ---&gt;
<variablelist> <variablelist>
<title>The rationale for the above configuration items:</title> <title>The rationale for the above configuration items:</title>
<varlistentry>
<term><parameter>Randomize the address of the kernel image (KASLR)</parameter></term>
<listitem>
<para>Enable ASLR for kernel image, to mitigate some attacks based
on fixed addresses of sensitive data or code in the kernel.</para>
</listitem>
</varlistentry>
<varlistentry> <varlistentry>
<term> <term>
<parameter> <parameter>
@ -204,6 +221,16 @@ File systems ---&gt;
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry>
<term><parameter>Strong Stack Protector</parameter></term>
<listitem>
<para>Enable SSP for the kernel. We've enabled it for the entire
userspace with <parameter>--enable-default-ssp</parameter>
configuring GCC, but the kernel does not use GCC default setting
for SSP. We enable it explicitly here.</para>
</listitem>
</varlistentry>
<varlistentry> <varlistentry>
<term><parameter>Support for uevent helper</parameter></term> <term><parameter>Support for uevent helper</parameter></term>
<listitem> <listitem>
@ -232,12 +259,16 @@ File systems ---&gt;
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term><parameter>Enable userfaultfd() system call</parameter></term> <term><parameter>Framebuffer Console support</parameter></term>
<listitem> <listitem>
<para>If this option is enabled, a security vulnerability not <para>This is needed to display the Linux console on a frame
resolved in Linux-&linux-version; yet will be exploitable. buffer device. To allow the kernel to print debug messages at an
Disable this option to avoid the vulnerability. This system call early boot stage, it shouldn't be built as a kernel module
is not used by any part of LFS or BLFS.</para> unless an initramfs will be used. And, if
<option>CONFIG_DRM</option> (Direct Rendering Manager) is enabled,
it's likely <option>CONFIG_DRM_FBDEV_EMULATION</option> (Enable
legacy fbdev support for your modesetting driver) should be
enabled as well.</para>
</listitem> </listitem>
</varlistentry> </varlistentry>

266
chapter11/afterlfs.xml Normal file
View File

@ -0,0 +1,266 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="afterlfs">
<?dbhtml filename="afterlfs.html"?>
<title>Getting Started After LFS</title>
<sect2>
<title>Deciding what to do next</title>
<para>
Now that LFS is complete and you have a bootable system, what do you do?
The next step is to decide how to use it. Generally, there are two broad
categories to consider: workstation or server. Indeed, these categories
are not mutually exclusive. The applications needed for each category
can be combined onto a single system, but let's look at them separately
for now.
</para>
<para>
A server is the simpler category. Generally this consists of a web
server such as the
<ulink url="&blfs-book;server/apache.html">Apache HTTP Server</ulink>
and a database server such as
<ulink url="&blfs-book;server/mariadb.html">MariaDB</ulink>.
However other services are possible. The operating system
embedded in a single use device falls into this category.
</para>
<para>
On the other hand, a workstation is much more complex. It generally
requires a graphical user environment such as
<ulink url="&blfs-book;lxde/lxde.html">LXDE</ulink>,
<ulink url="&blfs-book;xfce/xfce.html">XFCE</ulink>,
<ulink url="&blfs-book;kde/kde.html">KDE</ulink>, or
<ulink url="&blfs-book;gnome/gnome.html">Gnome</ulink>
based on a basic
<ulink url="&blfs-book;x/installing.html">graphical environment</ulink>
and several graphical based applications such as the
<ulink url="&blfs-book;xsoft/firefox.html">Firefox web browser</ulink>,
<ulink url="&blfs-book;xsoft/thunderbird.html">Thunderbird email client</ulink>,
or
<ulink url="&blfs-book;xsoft/libreoffice.html">LibreOffice office suite</ulink>.
These applications require many (several hundred depending on
desired capabilities) more packages of support applications and
libraries.
</para>
<para>
In addition to the above, there is a set of applications for system
management for all kinds of systems. These applications are all in the
BLFS book. Not all packages are needed in every environments. For
example <ulink url="&blfs-book;basicnet/dhcpcd.html">dhcpcd</ulink>, is
not normally appropriate for a server and <ulink
url="&blfs-book;basicnet/wireless_tools.html">wireless_tools</ulink>,
are normally only useful for a laptop system.
</para>
</sect2>
<sect2>
<title>Working in a basic LFS environment</title>
<para>
When you initially boot into LFS, you have all the internal tools to build
additional packages. Unfortunately, the user environment is quite sparse.
There are a couple of ways to improve this:
</para>
<sect3>
<title>Work from the LFS host in chroot</title>
<para>
This method provides a complete graphical environment where a full
featured browser and copy/paste capabilities are available. This method
allows using applications like the host's version of wget to download
package sources to a location available when working in the chroot
envirnment.
</para>
<para>
In order to properly build packages in chroot, you will also need to
remember to mount the virtual file systems if they are not already
mounted. One way to do this is to create a script on the
<emphasis role="bold">HOST</emphasis> system:
</para>
<screen><command>cat &gt; ~/mount-virt.sh &lt;&lt; "EOF"
#!/bin/bash
function mountbind
{
if ! mountpoint $LFS/$1 >/dev/null; then
$SUDO mount --bind /$1 $LFS/$1
echo $LFS/$1 mounted
else
echo $LFS/$1 already mounted
fi
}
function mounttype
{
if ! mountpoint $LFS/$1 >/dev/null; then
$SUDO mount -t $2 $3 $4 $5 $LFS/$1
echo $LFS/$1 mounted
else
echo $LFS/$1 already mounted
fi
}
if [ $EUID -ne 0 ]; then
SUDO=sudo
else
SUDO=""
fi
if [ x$LFS == x ]; then
echo "LFS not set"
exit 1
fi
mountbind dev
mounttype dev/pts devpts devpts -o gid=5,mode=620
mounttype proc proc proc
mounttype sys sysfs sysfs
mounttype run tmpfs run
if [ -h $LFS/dev/shm ]; then
mkdir -pv $LFS/$(readlink $LFS/dev/shm)
else
mounttype dev/shm tmpfs tmpfs -o nosuid,nodev
fi
#mountbind usr/src
#mountbind boot
#mountbind home
EOF</command></screen>
<para>
Note that the last three commands in the script are commented out. These
are useful if those directories are mounted as separate partitions on the
host system and will be mounted when booting the completed LFS/BLFS system.
</para>
<para>
The script can be run with <command>bash ~/mount-virt.sh</command> as
either a regular user (recommended) or as &root;. If run as a regular
user, sudo is required on the host system.
</para>
<para>
Another issue pointed out by the script is where to store downloaded
package files. This location is arbitrary. It can be in a regular
user's home directory such as ~/sources or in a global location like
/usr/src. Our recommendation is not to mix BLFS sources and LFS sources
in (from the chroot environment) /sources. In any case, the packages
must be accessible inside the chroot environment.
</para>
<para>
A last convenience feature presented here is to streamline the process
of entering the chroot environment. This can be done with an alias
placed in a user's ~/.bashrc file on the host system:
</para>
<screen><command>alias lfs='sudo /usr/sbin/chroot /mnt/lfs /usr/bin/env -i HOME=/root TERM="$TERM" PS1="\u:\w\\\\$ "
PATH=/bin:/usr/bin:/sbin:/usr/sbin /bin/bash --login'</command></screen>
<para>
This alias is a little tricky because of the quoting and levels of
backslash characters. It must be all on a single line. The above command
has been split in two for presentation purposes.
</para>
</sect3>
<sect3>
<title>Work remotely via ssh</title>
<para>
This method also provides a full graphical environment, but first
requires installing
<ulink url="&blfs-book;postlfs/openssh.html">sshd</ulink> and
<ulink url="&blfs-book;basicnet/wget.html">wget</ulink>
on the LFS system, usually in chroot. It also requires a second
computer. This method has the advantage of being simple by not requiring
the complexity of the chroot environment. It also uses your LFS built
kernel for all additional packages and still provides a complete system
for installing packages.
</para>
</sect3>
<sect3>
<title>Work from the LFS command line</title>
<para>
This method requires installing
<ulink url="&blfs-book;general/libtasn1.html">libtasn1</ulink>,
<ulink url="&blfs-book;postlfs/p11-kit.html">p11-kit</ulink>,
<ulink url="&blfs-book;postlfs/make-ca.html">make-ca</ulink>,
<ulink url="&blfs-book;basicnet/wget.html">wget</ulink>,
<ulink url="&blfs-book;general/gpm.html">gpm</ulink>, and
<ulink url="&blfs-book;basicnet/links.html">links</ulink>
(or <ulink url="&blfs-book;basicnet/lynx.html">lynx</ulink>)
in chroot and then rebooting into the new LFS system. At this
point the default system has six virtual consoles. Switching
consoles is as easy as using the
<keycombo>
<keycap>Alt</keycap>
<keycap>Fx</keycap>
</keycombo>
key combinations where <keycap>Fx</keycap> is
between <keycap>F1</keycap> and <keycap>F6</keycap>.
The
<keycombo>
<keycap>Alt</keycap>
<keycap function='left'/>
</keycombo>
and
<keycombo>
<keycap>Alt</keycap>
<keycap function='right'/>
</keycombo>
combinations also will change the console.
</para>
<para>
At this point you can log into two different virtual consoles and run
the links or lynx browser in one console and bash in the other. GPM
then allows copying commands from the browser with the left mouse
button, switching consoles, and pasting into the other console.
</para>
<note>
<para>
As a side note, switching of virtual consoles can also be done from
an X Window instance with the
<keycombo>
<keycap>Ctrl</keycap>
<keycap>Alt</keycap>
<keycap>Fx</keycap>
</keycombo>
key combination, but the mouse copy operation does not work
between the graphical interface and a virtual console. You can
return to the X Window display with the
<keycombo>
<keycap>Ctrl</keycap>
<keycap>Alt</keycap>
<keycap>Fx</keycap>
</keycombo>
combination, where <keycap>Fx</keycap> is usually
<keycap>F1</keycap> but may be <keycap>F7</keycap>.
</para>
</note>
</sect3>
</sect2>
</sect1>

View File

@ -15,5 +15,6 @@
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="getcounted.xml"/> <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="getcounted.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="reboot.xml"/> <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="reboot.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="whatnow.xml"/> <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="whatnow.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="afterlfs.xml"/>
</chapter> </chapter>

View File

@ -9,17 +9,22 @@
<?dbhtml filename="reboot.html"?> <?dbhtml filename="reboot.html"?>
<title>Rebooting the System</title> <title>Rebooting the System</title>
<para>
Now that all of the software has been installed, it is time to reboot
your computer. However, there are still a few things to check.
Here are some suggestions:</para>
<para>Now that all of the software has been installed, it is time to reboot
your computer. However, you should be aware of a few things. The system you <!--
The system you
have created in this book is quite minimal, and most likely will not have have created in this book is quite minimal, and most likely will not have
the functionality you would need to be able to continue forward. By installing the functionality you would need to be able to continue forward. By installing
a few extra packages from the BLFS book while still in our current chroot a few extra packages from the BLFS book while still in our current chroot
environment, you can leave yourself in a much better position to continue on environment, you can leave yourself in a much better position to continue on
once you reboot into your new LFS installation. Here are some suggestions:</para> once you reboot into your new LFS installation. Here are some suggestions:</para>
-->
<itemizedlist> <itemizedlist>
<!--
<listitem><para>A text mode browser such as <ulink <listitem><para>A text mode browser such as <ulink
url='&blfs-book;basicnet/lynx.html'>Lynx</ulink> url='&blfs-book;basicnet/lynx.html'>Lynx</ulink>
will allow you to easily view the BLFS book in one virtual terminal, while will allow you to easily view the BLFS book in one virtual terminal, while
@ -60,14 +65,21 @@
install <ulink install <ulink
url='&blfs-book;basicnet/wpa_supplicant.html'>wpa_supplicant</ulink>. url='&blfs-book;basicnet/wpa_supplicant.html'>wpa_supplicant</ulink>.
</para></listitem> </para></listitem>
-->
<listitem>
<para>
Install any <ulink
url='&blfs-book;postlfs/firmware.html'>firmware</ulink> needed if the
kernel driver for your hardware requires some firmware files to function
properly.
</para>
</listitem>
<listitem><para>Install <ulink <listitem>
url='&blfs-book;postlfs/firmware.html'>firmwares</ulink> if the kernel <para>
driver for your hardware require some firmware to function properly. A review of the following configuration files
</para></listitem> is also appropriate at this point.
</para>
<listitem><para>Finally, a review of the following configuration files
is also appropriate at this point.</para>
<itemizedlist> <itemizedlist>
<listitem><para>/etc/bashrc </para></listitem> <listitem><para>/etc/bashrc </para></listitem>
@ -86,14 +98,11 @@
</itemizedlist> </itemizedlist>
<para>Now that we have said that, let's move on to booting our shiny new LFS <para>Now that we have said that, let's move on to booting our shiny new LFS
installation for the first time! First exit from the chroot environment:</para> installation for the first time! <emphasis>First exit from the chroot
environment</emphasis>:</para>
<screen><userinput>logout</userinput></screen> <screen><userinput>logout</userinput></screen>
<!-- We need to show the user the details... <!-- We need to show the user the details...-->
<para>Unmount the LFS file system hierarchy:</para>
<screen><userinput>umount -Rv $LFS</userinput></screen>
-->
<para>Then unmount the virtual file systems:</para> <para>Then unmount the virtual file systems:</para>
@ -106,17 +115,19 @@ umount -v $LFS/sys</userinput></screen>
<para>If multiple partitions were created, unmount the other <para>If multiple partitions were created, unmount the other
partitions before unmounting the main one, like this:</para> partitions before unmounting the main one, like this:</para>
<screen role="nodump"><userinput>umount -v $LFS/usr <screen role="nodump"><userinput>umount -v $LFS/home
umount -v $LFS/home
umount -v $LFS</userinput></screen> umount -v $LFS</userinput></screen>
<para>Unmount the LFS file system itself:</para> <para>Unmount the LFS file system itself:</para>
<screen role="nodump"><userinput>umount -v $LFS</userinput></screen> <screen role="nodump"><userinput>umount -v $LFS</userinput></screen>
<para>Now, reboot the system with:</para> <para>Now, reboot the system.</para>
<screen role="nodump"><userinput>shutdown -r now</userinput></screen> <!-- Commented out because we don't have a host system requirement on
its init, and different init system may recommend different commands
for reboot. -->
<!--<screen role="nodump"><userinput>shutdown -r now</userinput></screen>-->
<para>Assuming the GRUB boot loader was set up as outlined earlier, the menu <para>Assuming the GRUB boot loader was set up as outlined earlier, the menu
is set to boot <emphasis>LFS &version;</emphasis> automatically.</para> is set to boot <emphasis>LFS &version;</emphasis> automatically.</para>

View File

@ -60,8 +60,7 @@ PRETTY_NAME="Linux From Scratch &version;"
VERSION_CODENAME="&lt;your name here&gt;" VERSION_CODENAME="&lt;your name here&gt;"
EOF</userinput></screen> EOF</userinput></screen>
<para>Be sure to put some sort of customization for the fields <para>Be sure to customize the fields 'DISTRIB_CODENAME' and
'DISTRIB_CODENAME' and 'VERSION_CODENAME' to make the system uniquely 'VERSION_CODENAME' to make the system uniquely yours.</para>
yours.</para>
</sect1> </sect1>

View File

@ -8,7 +8,7 @@
<sect1 id="ch-finish-whatnow"> <sect1 id="ch-finish-whatnow">
<?dbhtml filename="whatnow.html"?> <?dbhtml filename="whatnow.html"?>
<title>What Now?</title> <title>Additional Resources</title>
<para>Thank you for reading this LFS book. We hope that you have <para>Thank you for reading this LFS book. We hope that you have
found this book helpful and have learned more about the system found this book helpful and have learned more about the system
@ -31,27 +31,23 @@
<itemizedlist> <itemizedlist>
<listitem> <listitem>
<para><ulink url="http://www.cert.org/">CERT</ulink> (Computer <para><ulink url="&lfs-root;lfs/advisories/">LFS Security Advisories</ulink></para>
Emergency Response Team)</para>
<para>CERT has a mailing list that publishes security alerts concerning <para>This is a list of security vulnerabilities discovered in the
various operating systems and applications. Subscription information is LFS book after it's published.</para>
available at <ulink
url="http://www.us-cert.gov/cas/signup.html"/>.</para>
</listitem> </listitem>
<listitem> <listitem>
<para>Bugtraq</para> <para><ulink url="https://seclists.org/oss-sec/">Open Source Security
Mailing List</ulink></para>
<para>Bugtraq is a full-disclosure computer security mailing list. It <para>This is a mailing list for discussion of security flaws,
publishes newly discovered security issues, and occasionally potential concepts, and practices in the Open Source community.</para>
fixes for them. Subscription information is available at <ulink
url="http://www.securityfocus.com/archive"/>.</para>
</listitem> </listitem>
</itemizedlist> </itemizedlist>
</listitem> </listitem>
<!--
<listitem> <listitem>
<para>Beyond Linux From Scratch</para> <para>Beyond Linux From Scratch</para>
@ -60,7 +56,7 @@
Book. The BLFS project is located at <ulink url="&blfs-book;"/>. Book. The BLFS project is located at <ulink url="&blfs-book;"/>.
</para> </para>
</listitem> </listitem>
-->
<listitem> <listitem>
<para>LFS Hints</para> <para>LFS Hints</para>
@ -85,7 +81,7 @@
<para>The goal of The Linux Documentation Project (TLDP) is to <para>The goal of The Linux Documentation Project (TLDP) is to
collaborate on all of the issues of Linux documentation. The TLDP features collaborate on all of the issues of Linux documentation. The TLDP features
a large collection of HOWTOs, guides, and man pages. It is located at a large collection of HOWTOs, guides, and man pages. It is located at
<ulink url="http://www.tldp.org/"/>.</para> <ulink url="https://tldp.org/"/>.</para>
</listitem> </listitem>
</itemizedlist> </itemizedlist>

View File

@ -1,31 +1,31 @@
#!/bin/sh #!/bin/sh
if [ "$1" = sysv ]; then if [ "$1" = sysv ]; then
SYSV="INCLUDE" SYSV="INCLUDE"
SYSTEMD="IGNORE " SYSTEMD="IGNORE "
elif [ "$1" = systemd ]; then elif [ "$1" = systemd ]; then
SYSV="IGNORE " SYSV="IGNORE "
SYSTEMD="INCLUDE" SYSTEMD="INCLUDE"
else else
echo You must provide either \"sysv\" or \"systemd\" as argument echo You must provide either \"sysv\" or \"systemd\" as argument
exit 1 exit 1
fi fi
echo "<!ENTITY % sysv \"$SYSV\">" > conditional.ent echo "<!ENTITY % sysv \"$SYSV\">" > conditional.ent
echo "<!ENTITY % systemd \"$SYSTEMD\">" >> conditional.ent echo "<!ENTITY % systemd \"$SYSTEMD\">" >> conditional.ent
if ! git status > /dev/null; then if ! git status > /dev/null; then
# Either it's not a git repository, or git is unavaliable. # Either it's not a git repository, or git is unavaliable.
# Just workaround. # Just workaround.
echo "<![ %sysv; [" > version.ent echo "<![ %sysv; [" > version.ent
echo "<!ENTITY version \"unknown\">" >> version.ent echo "<!ENTITY version \"unknown\">" >> version.ent
echo "]]>" >> version.ent echo "]]>" >> version.ent
echo "<![ %systemd; [" >> version.ent echo "<![ %systemd; [" >> version.ent
echo "<!ENTITY version \"unknown-systemd\">" >> version.ent echo "<!ENTITY version \"unknown-systemd\">" >> version.ent
echo "]]>" >> version.ent echo "]]>" >> version.ent
echo "<!ENTITY releasedate \"unknown\">" >> version.ent echo "<!ENTITY releasedate \"unknown\">" >> version.ent
echo "<!ENTITY copyrightdate \"1999-2022\">" >> version.ent echo "<!ENTITY copyrightdate \"1999-2022\">" >> version.ent
exit 0 exit 0
fi fi
export LC_ALL=en_US.utf8 export LC_ALL=en_US.utf8
@ -39,10 +39,10 @@ month_digit=$(date --date "$commit_date" "+%m")
day=$(date --date "$commit_date" "+%d" | sed 's/^0//') day=$(date --date "$commit_date" "+%d" | sed 's/^0//')
case $day in case $day in
"1" | "21" | "31" ) suffix="st";; "1" | "21" | "31" ) suffix="st";;
"2" | "22" ) suffix="nd";; "2" | "22" ) suffix="nd";;
"3" | "23" ) suffix="rd";; "3" | "23" ) suffix="rd";;
* ) suffix="th";; * ) suffix="th";;
esac esac
full_date="$month $day$suffix, $year" full_date="$month $day$suffix, $year"
@ -53,8 +53,8 @@ version="$rev"
versiond="$rev-systemd" versiond="$rev-systemd"
if [ "$(git diff HEAD | wc -l)" != "0" ]; then if [ "$(git diff HEAD | wc -l)" != "0" ]; then
version="$version+" version="$version+"
versiond="$versiond+" versiond="$versiond+"
fi fi
echo "<![ %sysv; [" > version.ent echo "<![ %sysv; [" > version.ent

View File

@ -34,7 +34,7 @@ function find_max( $lines, $regex_match, $regex_replace )
// Isolate the version and put in an array // Isolate the version and put in an array
$slice = preg_replace( $regex_replace, "$1", $line ); $slice = preg_replace( $regex_replace, "$1", $line );
if ( $slice == $line ) continue; if ( strcmp( $slice, $line ) == 0 ) continue;
array_push( $a, $slice ); array_push( $a, $slice );
} }
@ -266,6 +266,15 @@ if ( $package == "zstd" ) $dirpath = "https://github.com/facebook/zstd/rel
if ( $package == "elfutils" ) if ( $package == "elfutils" )
return find_max( $lines, "/^\d/", "/^(\d[\d\.]+\d)\/.*$/" ); return find_max( $lines, "/^\d/", "/^(\d[\d\.]+\d)\/.*$/" );
if ( $package == "iana-etc" )
return find_max( $lines, "/^\s*20\d\d/", "/^\s+(\d+).*$/" );
if ( $package == "meson" )
return find_max( $lines, "/^\s+\d\./", "/^\s+([\d\.]+)$/" );
if ( $package == "shadow" )
return find_max( $lines, "/^\s+\d\./", "/^\s+([\d\.]+)$/" );
if ( $package == "XML-Parser" ) if ( $package == "XML-Parser" )
{ {
$max = find_max( $lines, "/$package/", "/^.*$package-([\d\._]*\d).tar.*$/" ); $max = find_max( $lines, "/$package/", "/^.*$package-([\d\._]*\d).tar.*$/" );
@ -292,6 +301,9 @@ if ( $package == "zstd" ) $dirpath = "https://github.com/facebook/zstd/rel
return str_replace( "_", ".", $max ); return str_replace( "_", ".", $max );
} }
if ( $package == "libffi" )
return find_max( $lines, "/v\d/", "/^.*v([\d\.]+)$/" );
if ( $package == "procps-ng" ) if ( $package == "procps-ng" )
return find_max( $lines, "/v\d/", "/^.*v([\d\.]+)$/" ); return find_max( $lines, "/v\d/", "/^.*v([\d\.]+)$/" );

View File

@ -58,10 +58,10 @@
<!ENTITY bash-fin-du "50 MB"> <!ENTITY bash-fin-du "50 MB">
<!ENTITY bash-fin-sbu "1.4 SBU"> <!ENTITY bash-fin-sbu "1.4 SBU">
<!ENTITY bc-version "6.0.1"> <!ENTITY bc-version "6.0.2">
<!ENTITY bc-size "441 KB"> <!ENTITY bc-size "442 KB">
<!ENTITY bc-url "https://github.com/gavinhoward/bc/releases/download/&bc-version;/bc-&bc-version;.tar.xz"> <!ENTITY bc-url "https://github.com/gavinhoward/bc/releases/download/&bc-version;/bc-&bc-version;.tar.xz">
<!ENTITY bc-md5 "4c8b8d51eb52ee66f5bcf6a6a1ca576e"> <!ENTITY bc-md5 "101e62dd9c2b90bf18c38d858aa36f0d">
<!ENTITY bc-home "https://git.yzena.com/gavin/bc"> <!ENTITY bc-home "https://git.yzena.com/gavin/bc">
<!ENTITY bc-fin-du "7.4 MB"> <!ENTITY bc-fin-du "7.4 MB">
<!ENTITY bc-fin-sbu "less than 0.1 SBU"> <!ENTITY bc-fin-sbu "less than 0.1 SBU">
@ -163,10 +163,10 @@
<!ENTITY eudev-fin-du "83 MB"> <!ENTITY eudev-fin-du "83 MB">
<!ENTITY eudev-fin-sbu "0.2 SBU"> <!ENTITY eudev-fin-sbu "0.2 SBU">
<!ENTITY expat-version "2.4.8"> <!ENTITY expat-version "2.4.9">
<!ENTITY expat-size "444 KB"> <!ENTITY expat-size "449 KB">
<!ENTITY expat-url "&sourceforge;expat/expat-&expat-version;.tar.xz"> <!ENTITY expat-url "&sourceforge;expat/expat-&expat-version;.tar.xz">
<!ENTITY expat-md5 "0584a7318a4c007f7ec94778799d72fe"> <!ENTITY expat-md5 "8d7fcf7d02d08bf79d9ae5c21cc72c03">
<!ENTITY expat-home "https://libexpat.github.io/"> <!ENTITY expat-home "https://libexpat.github.io/">
<!ENTITY expat-fin-du "12 MB"> <!ENTITY expat-fin-du "12 MB">
<!ENTITY expat-fin-sbu "0.1 SBU"> <!ENTITY expat-fin-sbu "0.1 SBU">
@ -179,10 +179,10 @@
<!ENTITY expect-tmp-du "3.9 MB"> <!ENTITY expect-tmp-du "3.9 MB">
<!ENTITY expect-tmp-sbu "0.2 SBU"> <!ENTITY expect-tmp-sbu "0.2 SBU">
<!ENTITY file-version "5.42"> <!ENTITY file-version "5.43">
<!ENTITY file-size "1,080 KB"> <!ENTITY file-size "1,136 KB">
<!ENTITY file-url "https://astron.com/pub/file/file-&file-version;.tar.gz"> <!ENTITY file-url "https://astron.com/pub/file/file-&file-version;.tar.gz">
<!ENTITY file-md5 "4d4f70c3b08a8a70d8baf67f085d7e92"> <!ENTITY file-md5 "8effd70da368210a6c6eece037f978eb">
<!ENTITY file-home "https://www.darwinsys.com/file/"> <!ENTITY file-home "https://www.darwinsys.com/file/">
<!ENTITY file-tmp-du "34 MB"> <!ENTITY file-tmp-du "34 MB">
<!ENTITY file-tmp-sbu "0.2 SBU"> <!ENTITY file-tmp-sbu "0.2 SBU">
@ -207,10 +207,10 @@
<!ENTITY flex-fin-du "33 MB"> <!ENTITY flex-fin-du "33 MB">
<!ENTITY flex-fin-sbu "0.4 SBU"> <!ENTITY flex-fin-sbu "0.4 SBU">
<!ENTITY gawk-version "5.1.1"> <!ENTITY gawk-version "5.2.0">
<!ENTITY gawk-size "3,075 KB"> <!ENTITY gawk-size "3,307 KB">
<!ENTITY gawk-url "&gnu;gawk/gawk-&gawk-version;.tar.xz"> <!ENTITY gawk-url "&gnu;gawk/gawk-&gawk-version;.tar.xz">
<!ENTITY gawk-md5 "83650aa943ff2fd519b2abedf8506ace"> <!ENTITY gawk-md5 "2f724d925873fc82f5e7b1d605ba9a42">
<!ENTITY gawk-home "&gnu-software;gawk/"> <!ENTITY gawk-home "&gnu-software;gawk/">
<!ENTITY gawk-tmp-du "45 MB"> <!ENTITY gawk-tmp-du "45 MB">
<!ENTITY gawk-tmp-sbu "0.2 SBU"> <!ENTITY gawk-tmp-sbu "0.2 SBU">
@ -281,10 +281,10 @@
<!ENTITY gperf-fin-du "6.0 MB"> <!ENTITY gperf-fin-du "6.0 MB">
<!ENTITY gperf-fin-sbu "less than 0.1 SBU"> <!ENTITY gperf-fin-sbu "less than 0.1 SBU">
<!ENTITY grep-version "3.7"> <!ENTITY grep-version "3.8">
<!ENTITY grep-size "1,603 KB"> <!ENTITY grep-size "1,670 KB">
<!ENTITY grep-url "&gnu;grep/grep-&grep-version;.tar.xz"> <!ENTITY grep-url "&gnu;grep/grep-&grep-version;.tar.xz">
<!ENTITY grep-md5 "7c9cca97fa18670a21e72638c3e1dabf"> <!ENTITY grep-md5 "dc6e4d18d4659e6e7552fc4a183c8ac9">
<!ENTITY grep-home "&gnu-software;grep/"> <!ENTITY grep-home "&gnu-software;grep/">
<!ENTITY grep-tmp-du "25 MB"> <!ENTITY grep-tmp-du "25 MB">
<!ENTITY grep-tmp-sbu "0.2 SBU"> <!ENTITY grep-tmp-sbu "0.2 SBU">
@ -374,15 +374,15 @@
<!ENTITY kmod-fin-du "12 MB"> <!ENTITY kmod-fin-du "12 MB">
<!ENTITY kmod-fin-sbu "0.1 SBU"> <!ENTITY kmod-fin-sbu "0.1 SBU">
<!ENTITY less-version "590"> <!ENTITY less-version "608">
<!ENTITY less-size "348 KB"> <!ENTITY less-size "354 KB">
<!ENTITY less-url "https://www.greenwoodsoftware.com/less/less-&less-version;.tar.gz"> <!ENTITY less-url "https://www.greenwoodsoftware.com/less/less-&less-version;.tar.gz">
<!ENTITY less-md5 "f029087448357812fba450091a1172ab"> <!ENTITY less-md5 "1cdec714569d830a68f4cff11203cdba">
<!ENTITY less-home "https://www.greenwoodsoftware.com/less/"> <!ENTITY less-home "https://www.greenwoodsoftware.com/less/">
<!ENTITY less-fin-du "4.2 MB"> <!ENTITY less-fin-du "4.2 MB">
<!ENTITY less-fin-sbu "less than 0.1 SBU"> <!ENTITY less-fin-sbu "less than 0.1 SBU">
<!ENTITY lfs-bootscripts-version "20220723"> <!-- Scripts depend on this format --> <!ENTITY lfs-bootscripts-version "20220920"> <!-- Scripts depend on this format -->
<!ENTITY lfs-bootscripts-size "BOOTSCRIPTS-SIZE KB"> <!ENTITY lfs-bootscripts-size "BOOTSCRIPTS-SIZE KB">
<!ENTITY lfs-bootscripts-url "&downloads-root;lfs-bootscripts-&lfs-bootscripts-version;.tar.xz"> <!ENTITY lfs-bootscripts-url "&downloads-root;lfs-bootscripts-&lfs-bootscripts-version;.tar.xz">
<!ENTITY lfs-bootscripts-md5 "BOOTSCRIPTS-MD5SUM"> <!ENTITY lfs-bootscripts-md5 "BOOTSCRIPTS-MD5SUM">
@ -410,7 +410,7 @@
<!ENTITY libpipeline-size "954 KB"> <!ENTITY libpipeline-size "954 KB">
<!ENTITY libpipeline-url "&savannah;/releases/libpipeline/libpipeline-&libpipeline-version;.tar.gz"> <!ENTITY libpipeline-url "&savannah;/releases/libpipeline/libpipeline-&libpipeline-version;.tar.gz">
<!ENTITY libpipeline-md5 "829c9ba46382b0b3e12dd11fcbc1bb27"> <!ENTITY libpipeline-md5 "829c9ba46382b0b3e12dd11fcbc1bb27">
<!ENTITY libpipeline-home "http://libpipeline.nongnu.org/"> <!ENTITY libpipeline-home "https://libpipeline.nongnu.org/">
<!ENTITY libpipeline-fin-du "10 MB"> <!ENTITY libpipeline-fin-du "10 MB">
<!ENTITY libpipeline-fin-sbu "0.1 SBU"> <!ENTITY libpipeline-fin-sbu "0.1 SBU">
@ -424,12 +424,12 @@
<!ENTITY linux-major-version "5"> <!ENTITY linux-major-version "5">
<!ENTITY linux-minor-version "19"> <!ENTITY linux-minor-version "19">
<!ENTITY linux-patch-version "2"> <!ENTITY linux-patch-version "8">
<!--<!ENTITY linux-version "&linux-major-version;.&linux-minor-version;">--> <!--<!ENTITY linux-version "&linux-major-version;.&linux-minor-version;">-->
<!ENTITY linux-version "&linux-major-version;.&linux-minor-version;.&linux-patch-version;"> <!ENTITY linux-version "&linux-major-version;.&linux-minor-version;.&linux-patch-version;">
<!ENTITY linux-size "128,553 KB"> <!ENTITY linux-size "128,547 KB">
<!ENTITY linux-url "&kernel;linux/kernel/v&linux-major-version;.x/linux-&linux-version;.tar.xz"> <!ENTITY linux-url "&kernel;linux/kernel/v&linux-major-version;.x/linux-&linux-version;.tar.xz">
<!ENTITY linux-md5 "391274e2e49a881403b0ff2e0712bf82"> <!ENTITY linux-md5 "ae08d14f9b7ed3d47c0d22b6d235507a">
<!ENTITY linux-home "https://www.kernel.org/"> <!ENTITY linux-home "https://www.kernel.org/">
<!-- measured for 5.13.4 / gcc-11.1.0 on x86_64 : minimum is <!-- measured for 5.13.4 / gcc-11.1.0 on x86_64 : minimum is
allnoconfig rounded down to allow for ongoing cleanups, allnoconfig rounded down to allow for ongoing cleanups,
@ -487,10 +487,10 @@
<!ENTITY markupsafe-fin-du "168 KB"> <!ENTITY markupsafe-fin-du "168 KB">
<!ENTITY markupsafe-fin-sbu "less than 0.1 SBU"> <!ENTITY markupsafe-fin-sbu "less than 0.1 SBU">
<!ENTITY meson-version "0.63.1"> <!ENTITY meson-version "0.63.2">
<!ENTITY meson-size "2,016 KB"> <!ENTITY meson-size "2,016 KB">
<!ENTITY meson-url "&github;/mesonbuild/meson/releases/download/&meson-version;/meson-&meson-version;.tar.gz"> <!ENTITY meson-url "&github;/mesonbuild/meson/releases/download/&meson-version;/meson-&meson-version;.tar.gz">
<!ENTITY meson-md5 "078e59d11a72b74c3bd78cb8205e9ed7"> <!ENTITY meson-md5 "12ae3150982645790a4f8a8e8795173c">
<!ENTITY meson-home "https://mesonbuild.com"> <!ENTITY meson-home "https://mesonbuild.com">
<!ENTITY meson-fin-du "38 MB"> <!ENTITY meson-fin-du "38 MB">
<!ENTITY meson-fin-sbu "less than 0.1 SBU"> <!ENTITY meson-fin-sbu "less than 0.1 SBU">
@ -499,7 +499,7 @@
<!ENTITY mpc-size "820 KB"> <!ENTITY mpc-size "820 KB">
<!ENTITY mpc-url "https://ftp.gnu.org/gnu/mpc/mpc-&mpc-version;.tar.gz"> <!ENTITY mpc-url "https://ftp.gnu.org/gnu/mpc/mpc-&mpc-version;.tar.gz">
<!ENTITY mpc-md5 "9f16c976c25bb0f76b50be749cd7a3a8"> <!ENTITY mpc-md5 "9f16c976c25bb0f76b50be749cd7a3a8">
<!ENTITY mpc-home "http://www.multiprecision.org/"> <!ENTITY mpc-home "https://www.multiprecision.org/">
<!ENTITY mpc-fin-du "21 MB"> <!ENTITY mpc-fin-du "21 MB">
<!ENTITY mpc-fin-sbu "0.3 SBU"> <!ENTITY mpc-fin-sbu "0.3 SBU">
@ -521,10 +521,10 @@
<!ENTITY ncurses-fin-du "45 MB"> <!ENTITY ncurses-fin-du "45 MB">
<!ENTITY ncurses-fin-sbu "0.4 SBU"> <!ENTITY ncurses-fin-sbu "0.4 SBU">
<!ENTITY ninja-version "1.11.0"> <!ENTITY ninja-version "1.11.1">
<!ENTITY ninja-size "228 KB"> <!ENTITY ninja-size "225 KB">
<!ENTITY ninja-url "&github;/ninja-build/ninja/archive/v&ninja-version;/ninja-&ninja-version;.tar.gz"> <!ENTITY ninja-url "&github;/ninja-build/ninja/archive/v&ninja-version;/ninja-&ninja-version;.tar.gz">
<!ENTITY ninja-md5 "7d1a1a2f5cdc06795b3054df5c17d5ef"> <!ENTITY ninja-md5 "32151c08211d7ca3c1d832064f6939b0">
<!ENTITY ninja-home "https://ninja-build.org/"> <!ENTITY ninja-home "https://ninja-build.org/">
<!ENTITY ninja-fin-du "79 MB"> <!ENTITY ninja-fin-du "79 MB">
<!ENTITY ninja-fin-sbu "0.6 SBU"> <!ENTITY ninja-fin-sbu "0.6 SBU">
@ -588,19 +588,19 @@
<!-- If python minor version changes, updates in python and <!-- If python minor version changes, updates in python and
meson pages will be needed: python3.6 and python3.6m --> meson pages will be needed: python3.6 and python3.6m -->
<!ENTITY python-version "3.10.6"> <!ENTITY python-version "3.10.7">
<!ENTITY python-minor "3.10"> <!ENTITY python-minor "3.10">
<!ENTITY python-size "19,142 KB"> <!ENTITY python-size "19,159 KB">
<!ENTITY python-url "https://www.python.org/ftp/python/&python-version;/Python-&python-version;.tar.xz"> <!ENTITY python-url "https://www.python.org/ftp/python/&python-version;/Python-&python-version;.tar.xz">
<!ENTITY python-md5 "afc7e14f7118d10d1ba95ae8e2134bf0"> <!ENTITY python-md5 "b8094f007b3a835ca3be6bdf8116cccc">
<!ENTITY python-home "https://www.python.org/"> <!ENTITY python-home "https://www.python.org/">
<!ENTITY python-tmp-du "364 MB"> <!ENTITY python-tmp-du "364 MB">
<!ENTITY python-tmp-sbu "0.9 SBU"> <!ENTITY python-tmp-sbu "0.9 SBU">
<!ENTITY python-fin-du "283 MB"> <!ENTITY python-fin-du "283 MB">
<!ENTITY python-fin-sbu "3.4 SBU"> <!ENTITY python-fin-sbu "3.4 SBU">
<!ENTITY python-docs-url "https://www.python.org/ftp/python/doc/&python-version;/python-&python-version;-docs-html.tar.bz2"> <!ENTITY python-docs-url "https://www.python.org/ftp/python/doc/&python-version;/python-&python-version;-docs-html.tar.bz2">
<!ENTITY python-docs-md5 "8f32c4f4f0b18ec56e8b3822bbaeb017"> <!ENTITY python-docs-md5 "d5923c417995334e72c2561812905d23">
<!ENTITY python-docs-size "7,321 KB"> <!ENTITY python-docs-size "7,176 KB">
<!ENTITY readline-version "8.1.2"> <!ENTITY readline-version "8.1.2">
<!ENTITY readline-soversion "8.1"><!-- used for stripping --> <!ENTITY readline-soversion "8.1"><!-- used for stripping -->
@ -621,10 +621,10 @@
<!ENTITY sed-fin-du "31 MB"> <!ENTITY sed-fin-du "31 MB">
<!ENTITY sed-fin-sbu "0.4 SBU"> <!ENTITY sed-fin-sbu "0.4 SBU">
<!ENTITY shadow-version "4.12.2"> <!ENTITY shadow-version "4.12.3">
<!ENTITY shadow-size "1,706 KB"> <!ENTITY shadow-size "1,707 KB">
<!ENTITY shadow-url "&github;/shadow-maint/shadow/releases/download/&shadow-version;/shadow-&shadow-version;.tar.xz"> <!ENTITY shadow-url "&github;/shadow-maint/shadow/releases/download/&shadow-version;/shadow-&shadow-version;.tar.xz">
<!ENTITY shadow-md5 "52637cb34c357acf85c617cf95da34a6"> <!ENTITY shadow-md5 "710bcc89c39683609aacfef9f08bd854">
<!ENTITY shadow-home "https://shadow-maint.github.io/shadow/"> <!ENTITY shadow-home "https://shadow-maint.github.io/shadow/">
<!ENTITY shadow-fin-du "46 MB"> <!ENTITY shadow-fin-du "46 MB">
<!ENTITY shadow-fin-sbu "0.2 SBU"> <!ENTITY shadow-fin-sbu "0.2 SBU">

View File

@ -82,9 +82,9 @@
<listitem> <listitem>
<para>Place all the sources and patches in a directory that will be <para>Place all the sources and patches in a directory that will be
accessible from the chroot environment such as accessible from the chroot environment such as
<filename class="directory">/mnt/lfs/sources/</filename>.<!-- Do <filename class="directory">/mnt/lfs/sources/</filename>.<!-- Do
<emphasis>not</emphasis> put sources in <emphasis>not</emphasis> put sources in
<filename class="directory">/mnt/lfs/tools/</filename>. --></para> <filename class="directory">/mnt/lfs/tools/</filename>. --></para>
</listitem> </listitem>
<listitem> <listitem>
<para>Change to the sources directory.</para> <para>Change to the sources directory.</para>

View File

@ -30,7 +30,7 @@
<itemizedlist> <itemizedlist>
<listitem> <listitem>
<para>Software-Building-HOWTO <para>Software-Building-HOWTO
<ulink url="http://www.tldp.org/HOWTO/Software-Building-HOWTO.html"/></para> <ulink url="https://tldp.org/HOWTO/Software-Building-HOWTO.html"/></para>
<para>This is a comprehensive guide to building and installing <para>This is a comprehensive guide to building and installing
<quote>generic</quote> Unix software packages under Linux. Although it <quote>generic</quote> Unix software packages under Linux. Although it
@ -40,7 +40,7 @@
<listitem> <listitem>
<para>Beginner's Guide to Installing from Source <para>Beginner's Guide to Installing from Source
<ulink url="http://moi.vonos.net/linux/beginners-installing-from-source/"/></para> <ulink url="https://moi.vonos.net/linux/beginners-installing-from-source/"/></para>
<para>This guide provides a good summary of basic skills and <para>This guide provides a good summary of basic skills and
techniques needed to build software from source code.</para> techniques needed to build software from source code.</para>

View File

@ -18,17 +18,17 @@
<itemizedlist> <itemizedlist>
<listitem> <listitem>
<para><ulink url="http://pubs.opengroup.org/onlinepubs/9699919799/"> <para><ulink url="https://pubs.opengroup.org/onlinepubs/9699919799/">
POSIX.1-2008</ulink>.</para> POSIX.1-2008</ulink>.</para>
</listitem> </listitem>
<listitem> <listitem>
<para><ulink <para><ulink
url="http://refspecs.linuxfoundation.org/FHS_3.0/fhs/index.html"> url="https://refspecs.linuxfoundation.org/FHS_3.0/fhs/index.html">
Filesystem Hierarchy Standard (FHS) Version 3.0</ulink></para> Filesystem Hierarchy Standard (FHS) Version 3.0</ulink></para>
</listitem> </listitem>
<listitem> <listitem>
<para><ulink url="http://refspecs.linuxfoundation.org/lsb.shtml">Linux <para><ulink url="https://refspecs.linuxfoundation.org/lsb.shtml">Linux
Standard Base (LSB) Version 5.0 (2015)</ulink></para> Standard Base (LSB) Version 5.0 (2015)</ulink></para>
<para>The LSB has four separate standards: Core, Desktop, <para>The LSB has four separate standards: Core, Desktop,

View File

@ -595,7 +595,7 @@
<listitem> <listitem>
<para>Wheel</para> <para>Wheel</para>
<para>This package contains a Python module that is the <para>This package contains a Python module that is the
reference implementation of the Python wheel packaging standard. reference implementation of the Python wheel packaging standard.
</para> </para>
</listitem> </listitem>

View File

@ -14,12 +14,12 @@ body {
/* Links */ /* Links */
a:link { a:link {
color: #22b; color: #22b;
font-weight: bold; font-weight: bold;
text-decoration: none; text-decoration: none;
} }
a.ulink:link { a.ulink:link {
font-weight: bold; font-weight: bold;
color: #55f; color: #55f;
text-decoration: none; text-decoration: none;
} }
@ -29,7 +29,7 @@ a:visited {
text-decoration: none; text-decoration: none;
} }
a:hover, a:hover,
a:focus { a:focus {
color: #d30e08 ! important; color: #d30e08 ! important;
text-decoration: underline; text-decoration: underline;
@ -81,10 +81,10 @@ div.navfooter a:active {
} }
/* Sections */ /* Sections */
div.sect1, div.sect1,
div.appendix, div.appendix,
div.wrap, div.wrap,
div.chapter, div.chapter,
div.part, div.part,
div.preface, div.preface,
div.toc, div.toc,
@ -100,10 +100,10 @@ div.index,
} }
@media(max-width:1220px) and (min-height:550px){ @media(max-width:1220px) and (min-height:550px){
div.sect1, div.sect1,
div.appendix, div.appendix,
div.wrap, div.wrap,
div.chapter, div.chapter,
div.part, div.part,
div.preface, div.preface,
div.legalnotice, div.legalnotice,
@ -120,10 +120,10 @@ div.index,
@media(max-width:1050px), @media(max-width:1050px),
(max-width:1050px) and (min-width:800px) and (max-height:550px){ (max-width:1050px) and (min-width:800px) and (max-height:550px){
div.sect1, div.sect1,
div.appendix, div.appendix,
div.wrap, div.wrap,
div.chapter, div.chapter,
div.part, div.part,
div.preface, div.preface,
div.legalnotice, div.legalnotice,
@ -138,10 +138,10 @@ div.index,
@media(max-width:550px), @media(max-width:550px),
(max-width:800px) and (max-height:550px){ (max-width:800px) and (max-height:550px){
div.sect1, div.sect1,
div.appendix, div.appendix,
div.wrap, div.wrap,
div.chapter, div.chapter,
div.part, div.part,
div.preface, div.preface,
div.legalnotice, div.legalnotice,
@ -169,12 +169,12 @@ div.important ul li p {
padding: 0em 0.6em; padding: 0em 0.6em;
} }
.package, .package,
.kernel, .kernel,
.installation, .installation,
.commands, .commands,
.testing, .testing,
.configuration, .configuration,
.content { .content {
padding: 0em 0.5em 0.2em 0em; padding: 0em 0.5em 0.2em 0em;
margin: 0em; margin: 0em;
@ -222,12 +222,12 @@ h1 {
padding: 0.7em; padding: 0.7em;
} }
.preface h1, .preface h1,
.part h1, .part h1,
.chapter h1, .chapter h1,
.appendix h1, .appendix h1,
.index h1, .index h1,
.sect1 h1, .sect1 h1,
.wrap h1 { .wrap h1 {
background: none; /*#f5f6f7;*/ background: none; /*#f5f6f7;*/
border-bottom: 1px solid #EEE; /*1em solid #dbddec;*/ border-bottom: 1px solid #EEE; /*1em solid #dbddec;*/
@ -246,7 +246,7 @@ h2 {
padding:.3em; padding:.3em;
} }
.titlepage h2, .titlepage h2,
div.navheader h2 { div.navheader h2 {
font-size: 120%; font-size: 120%;
border-bottom: none; border-bottom: none;
@ -276,14 +276,14 @@ h4 {
padding: 0.2em; padding: 0.2em;
} }
.titlepage h3, .titlepage h3,
div.navheader h3 { div.navheader h3 {
font-size: 120%; font-size: 120%;
border-bottom: none; border-bottom: none;
padding: 0.25em; padding: 0.25em;
} }
.titlepage h4, .titlepage h4,
div.navheader h4 { div.navheader h4 {
font-size: 110%; font-size: 110%;
border-bottom: none; border-bottom: none;
@ -291,21 +291,21 @@ div.navheader h4 {
} }
@media(max-width:550px){ @media(max-width:550px){
.titlepage h2, .titlepage h2,
div.navheader h2 { div.navheader h2 {
font-size: 4.7vmin; font-size: 4.7vmin;
border-bottom: none; border-bottom: none;
padding: 0.25em; padding: 0.25em;
} }
.titlepage h3, .titlepage h3,
div.navheader h3 { div.navheader h3 {
font-size: 4.5vmin; font-size: 4.5vmin;
border-bottom: none; border-bottom: none;
padding: 0.25em; padding: 0.25em;
} }
.titlepage h4, .titlepage h4,
div.navheader h4 { div.navheader h4 {
font-size: 4.3vmin; font-size: 4.3vmin;
border-bottom: none; border-bottom: none;
@ -337,7 +337,7 @@ div.navheader ul {
display:none; display:none;
} }
@media(min-width:550px) and (min-height:550px), @media(min-width:550px) and (min-height:550px),
(min-width:1220px) and (min-height:550px){ (min-width:1220px) and (min-height:550px){
div.navfooter{ div.navfooter{
top: 0px; top: 0px;
@ -406,7 +406,7 @@ div.navfooter ul{
width: 0px; width: 0px;
} }
div.navheader ul li.prev, div.navheader ul li.prev,
div.navfooter ul li.prev { div.navfooter ul li.prev {
position: fixed; position: fixed;
display: block; display: block;
@ -421,7 +421,7 @@ div.navfooter ul li.prev {
/*padding-bottom: 3em;*/ /*padding-bottom: 3em;*/
} }
/* /*
div.navheader ul li.next, div.navheader ul li.next,
div.navfooter ul li.next { div.navfooter ul li.next {
position: fixed; position: fixed;
display: block; display: block;
@ -433,7 +433,7 @@ div.navfooter ul li.next {
max-width: 170px; max-width: 170px;
} }
*/ */
div.navheader ul li.next, div.navheader ul li.next,
div.navfooter ul li.next { div.navfooter ul li.next {
position: fixed; position: fixed;
display: block; display: block;
@ -445,9 +445,9 @@ div.navfooter ul li.next {
max-width: 170px; max-width: 170px;
} }
div.navheader ul li.prev p, div.navheader ul li.prev p,
div.navfooter ul li.prev p, div.navfooter ul li.prev p,
div.navheader ul li.next p, div.navheader ul li.next p,
div.navfooter ul li.next p { div.navfooter ul li.next p {
padding: 0em; padding: 0em;
padding-bottom: 3em; padding-bottom: 3em;
@ -458,7 +458,7 @@ div.navfooter ul li.next p {
font-weight: bold; font-weight: bold;
} }
div.navheader ul li.home, div.navheader ul li.home,
div.navfooter ul li.home { div.navfooter ul li.home {
position: fixed; position: fixed;
text-align: left; text-align: left;
@ -472,7 +472,7 @@ div.navfooter ul li.home {
max-width: 200px; max-width: 200px;
} }
div.navheader ul li.up, div.navheader ul li.up,
div.navfooter ul li.up { div.navfooter ul li.up {
position: fixed; position: fixed;
text-align: left; text-align: left;
@ -487,7 +487,7 @@ div.navfooter ul li.up {
/*border: 1px solid black;*/ /*border: 1px solid black;*/
} }
div.navheader ul li.up a, div.navheader ul li.up a,
div.navfooter ul li.up a { div.navfooter ul li.up a {
display: block; display: block;
padding: 10px 5px 10px 28px; padding: 10px 5px 10px 28px;
@ -495,7 +495,7 @@ div.navfooter ul li.up a {
background-size: 20px 20px; background-size: 20px 20px;
} }
div.navheader ul li.home a, div.navheader ul li.home a,
div.navfooter ul li.home a { div.navfooter ul li.home a {
display: block; display: block;
padding: 10px 5px 10px 28px; padding: 10px 5px 10px 28px;
@ -503,7 +503,7 @@ div.navfooter ul li.home a {
background-size: 20px 20px; background-size: 20px 20px;
} }
div.navheader ul li.prev a, div.navheader ul li.prev a,
div.navfooter ul li.prev a { div.navfooter ul li.prev a {
display: block; display: block;
padding: 10px 5px 10px 35px; padding: 10px 5px 10px 35px;
@ -522,7 +522,7 @@ div.navheader ul li.prev p {
border: 1px solid blue; border: 1px solid blue;
} }
*/ */
div.navheader ul li.next a, div.navheader ul li.next a,
div.navfooter ul li.next a{ div.navfooter ul li.next a{
display: block; display: block;
padding: 10px 35px 10px 5px; padding: 10px 35px 10px 5px;
@ -531,25 +531,25 @@ div.navfooter ul li.next a{
} }
@media(max-width:1220px) and (min-height:550px){ @media(max-width:1220px) and (min-height:550px){
div.navheader ul li, div.navheader ul li,
div.navfooter ul li{ div.navfooter ul li{
width: 120px; width: 120px;
} }
div.navheader ul li.prev p, div.navheader ul li.prev p,
div.navheader ul li.next p, div.navheader ul li.next p,
div.navfooter ul li.prev p, div.navfooter ul li.prev p,
div.navfooter ul li.next p{ div.navfooter ul li.next p{
text-align: center; text-align: center;
/*border: 1px solid blue; /*border: 1px solid blue;
margin: 2px;*/ margin: 2px;*/
height: 7.5vh; /* 7.5% ov viewport height */ height: 7.5vh; /* 7.5% ov viewport height */
overflow: hidden; overflow: hidden;
} }
/* /*
div.navheader ul li.prev p:after, div.navheader ul li.prev p:after,
div.navheader ul li.next p:after, div.navheader ul li.next p:after,
div.navfooter ul li.prev p:after, div.navfooter ul li.prev p:after,
div.navfooter ul li.next p:after{ div.navfooter ul li.next p:after{
content: ""; content: "";
text-align: right; text-align: right;
@ -558,12 +558,12 @@ div.navfooter ul li.next a{
right: 0px; right: 0px;
width: 100%; width: 100%;
height: 2.8em; height: 2.8em;
background: linear-gradient(to bottom, rgba(0, 0, 0, 1), rgba(255, 255, 255, 1) 100%); background: linear-gradient(to bottom, rgba(0, 0, 0, 1), rgba(255, 255, 255, 1) 100%);
} }
*/ */
div.navheader ul li.prev, div.navheader ul li.prev,
div.navfooter ul li.prev { div.navfooter ul li.prev {
position: fixed; position: fixed;
display: block; display: block;
@ -573,7 +573,7 @@ div.navfooter ul li.next a{
margin: 0px; margin: 0px;
} }
div.navheader ul li.prev a, div.navheader ul li.prev a,
div.navfooter ul li.prev a{ div.navfooter ul li.prev a{
display: block; display: block;
text-align: center; text-align: center;
@ -582,8 +582,8 @@ div.navfooter ul li.next a{
background: url(../images/chevron-left.png) no-repeat center 5vh; background: url(../images/chevron-left.png) no-repeat center 5vh;
background-size: 25px 25px; background-size: 25px 25px;
} }
div.navheader ul li.next, div.navheader ul li.next,
div.navfooter ul li.next { div.navfooter ul li.next {
position: fixed; position: fixed;
display: block; display: block;
@ -592,8 +592,8 @@ div.navfooter ul li.next a{
padding: 0px; padding: 0px;
margin: 0px; margin: 0px;
} }
div.navheader ul li.next a, div.navheader ul li.next a,
div.navfooter ul li.next a { div.navfooter ul li.next a {
display: block; display: block;
text-align: center; text-align: center;
@ -602,10 +602,10 @@ div.navfooter ul li.next a{
background: url(../images/chevron-right.png) no-repeat center 5vh; background: url(../images/chevron-right.png) no-repeat center 5vh;
background-size: 25px 25px; background-size: 25px 25px;
} }
div.navheader ul li.home, div.navheader ul li.home,
div.navheader ul li.up, div.navheader ul li.up,
div.navfooter ul li.home, div.navfooter ul li.home,
div.navfooter ul li.up { div.navfooter ul li.up {
position: fixed; position: fixed;
padding: 0px; padding: 0px;
@ -615,17 +615,17 @@ div.navfooter ul li.next a{
margin: 0px; margin: 0px;
} }
div.navheader ul li.home, div.navheader ul li.home,
div.navfooter ul li.home{ div.navfooter ul li.home{
top:25vh; top:25vh;
} }
div.navheader ul li.up, div.navheader ul li.up,
div.navfooter ul li.up{ div.navfooter ul li.up{
top:10vh; top:10vh;
} }
div.navheader ul li.home a, div.navheader ul li.home a,
div.navfooter ul li.home a{ div.navfooter ul li.home a{
display: block; display: block;
text-align: center; text-align: center;
@ -635,7 +635,7 @@ div.navfooter ul li.next a{
background-size: 25px 25px; background-size: 25px 25px;
} }
div.navheader ul li.up a, div.navheader ul li.up a,
div.navfooter ul li.up a{ div.navfooter ul li.up a{
display: block; display: block;
text-align: center; text-align: center;
@ -647,28 +647,28 @@ div.navfooter ul li.next a{
} }
/* End media */ /* End media */
@media(max-width:1220px) and (max-height:550px) and (min-width:800px), @media(max-width:1220px) and (max-height:550px) and (min-width:800px),
(min-width:1220px) and (max-height:350px){ (min-width:1220px) and (max-height:350px){
div.navheader ul li.prev p, div.navheader ul li.prev p,
div.navfooter ul li.prev p, div.navfooter ul li.prev p,
div.navheader ul li.next p, div.navheader ul li.next p,
div.navfooter ul li.next p div.navfooter ul li.next p
{ {
display: none; display: none;
} }
div.navheader ul li.prev, div.navheader ul li.prev,
div.navfooter ul li.prev { div.navfooter ul li.prev {
max-width: 120px; max-width: 120px;
position: fixed; position: fixed;
display: block; display: block;
top: 45vmin; /* smaller of 60% viewport height, width */ top: 45vmin; /* smaller of 60% viewport height, width */
padding: 0px; padding: 0px;
margin-left: 10px; margin-left: 10px;
font-size: 90%; font-size: 90%;
} }
div.navheader ul li.next, div.navheader ul li.next,
div.navfooter ul li.next { div.navfooter ul li.next {
max-width: 120px; max-width: 120px;
position: fixed; position: fixed;
@ -679,13 +679,13 @@ div.navfooter ul li.next a{
margin-left: 10px; margin-left: 10px;
font-size: 90%; font-size: 90%;
} }
div.navheader ul li.prev a, div.navheader ul li.prev a,
div.navfooter ul li.prev a { div.navfooter ul li.prev a {
background-size: 20px 20px; background-size: 20px 20px;
} }
div.navheader ul li.next a, div.navheader ul li.next a,
div.navfooter ul li.next a{ div.navfooter ul li.next a{
display: block; display: block;
padding: 10px 5px 10px 35px; padding: 10px 5px 10px 35px;
@ -693,10 +693,10 @@ div.navfooter ul li.next a{
background-size: 20px 20px; background-size: 20px 20px;
text-align: left; text-align: left;
} }
div.navheader ul li.home, div.navheader ul li.home,
div.navheader ul li.up, div.navheader ul li.up,
div.navfooter ul li.home, div.navfooter ul li.home,
div.navfooter ul li.up { div.navfooter ul li.up {
max-width: 120px; max-width: 120px;
position: fixed; position: fixed;
@ -706,20 +706,20 @@ div.navfooter ul li.next a{
color: #dbddec; color: #dbddec;
font-size: 90%; font-size: 90%;
} }
div.navheader ul li.home, div.navheader ul li.home,
div.navfooter ul li.home{ div.navfooter ul li.home{
top: 35vmin; top: 35vmin;
} }
div.navheader ul li.up, div.navheader ul li.up,
div.navfooter ul li.up{ div.navfooter ul li.up{
top: 10vmin; top: 10vmin;
} }
div.navheader ul li.home a, div.navheader ul li.home a,
div.navfooter ul li.home a, div.navfooter ul li.home a,
div.navheader ul li.up a, div.navheader ul li.up a,
div.navfooter ul li.up a{ div.navfooter ul li.up a{
padding: 10px 5px 10px 35px; padding: 10px 5px 10px 35px;
} }
@ -728,14 +728,14 @@ div.navfooter ul li.next a{
@media(max-width:550px), @media(max-width:550px),
(max-width:800px) and (max-height:550px){ (max-width:800px) and (max-height:550px){
div.navheader ul li.prev p, div.navheader ul li.prev p,
div.navfooter ul li.prev p, div.navfooter ul li.prev p,
div.navheader ul li.next p, div.navheader ul li.next p,
div.navfooter ul li.next p { div.navfooter ul li.next p {
display: none; display: none;
} }
div.navheader ul li.prev, div.navheader ul li.prev,
div.navfooter ul li.prev { div.navfooter ul li.prev {
position: fixed; position: fixed;
display: block; display: block;
@ -744,8 +744,8 @@ div.navfooter ul li.next a{
padding: 0px; padding: 0px;
margin: 0px; margin: 0px;
} }
div.navheader ul li.prev a, div.navheader ul li.prev a,
div.navfooter ul li.prev a{ div.navfooter ul li.prev a{
display: block; display: block;
width: 0px; width: 0px;
@ -757,8 +757,8 @@ div.navfooter ul li.next a{
background-size: 6vmin 6vmin; background-size: 6vmin 6vmin;
overflow: hidden; overflow: hidden;
} }
div.navheader ul li.next, div.navheader ul li.next,
div.navfooter ul li.next { div.navfooter ul li.next {
position: fixed; position: fixed;
display: block; display: block;
@ -767,8 +767,8 @@ div.navfooter ul li.next a{
padding: 0px; padding: 0px;
margin: 0px; margin: 0px;
} }
div.navheader ul li.next a, div.navheader ul li.next a,
div.navfooter ul li.next a{ div.navfooter ul li.next a{
display: block; display: block;
width: 0px; width: 0px;
@ -780,10 +780,10 @@ div.navfooter ul li.next a{
background-size: 6vmin 6vmin; background-size: 6vmin 6vmin;
overflow: hidden; overflow: hidden;
} }
div.navheader ul li.home, div.navheader ul li.home,
div.navheader ul li.up, div.navheader ul li.up,
div.navfooter ul li.home, div.navfooter ul li.home,
div.navfooter ul li.up { div.navfooter ul li.up {
position: fixed; position: fixed;
padding: 0px; padding: 0px;
@ -792,18 +792,18 @@ div.navfooter ul li.next a{
color: #dbddec; color: #dbddec;
left: 0px; left: 0px;
} }
div.navheader ul li.home, div.navheader ul li.home,
div.navfooter ul li.home{ div.navfooter ul li.home{
top: 40vmin; top: 40vmin;
} }
div.navheader ul li.up, div.navheader ul li.up,
div.navfooter ul li.up{ div.navfooter ul li.up{
top: 20vmin; top: 20vmin;
} }
div.navheader ul li.home a, div.navheader ul li.home a,
div.navfooter ul li.home a{ div.navfooter ul li.home a{
display: block; display: block;
width: 0px; width: 0px;
@ -814,8 +814,8 @@ div.navfooter ul li.next a{
background-size: 6vmin 6vmin; background-size: 6vmin 6vmin;
overflow: hidden; overflow: hidden;
} }
div.navheader ul li.up a, div.navheader ul li.up a,
div.navfooter ul li.up a{ div.navfooter ul li.up a{
display: block; display: block;
width: 0px; width: 0px;
@ -830,14 +830,14 @@ div.navfooter ul li.next a{
/* End media */ /* End media */
/* TOC */ /* TOC */
div.toc ul, div.toc ul,
div.index ul, div.index ul,
div.navheader ul, div.navheader ul,
div.navfooter ul { div.navfooter ul {
list-style: none; list-style: none;
} }
li.preface, li.preface,
.part li.appendix { .part li.appendix {
margin-left: 1em; margin-left: 1em;
} }
@ -846,8 +846,8 @@ div.toc h3 {
margin: 1em 0em 0.3em 0em; margin: 1em 0em 0.3em 0em;
} }
li.appendix h3, li.appendix h3,
li.glossary h3, li.glossary h3,
li.index h3 { li.index h3 {
margin: 0.5em margin: 0.5em
} }
@ -911,13 +911,13 @@ li.chapter h4 a {
width: 100%; width: 100%;
margin-left: 1em; margin-left: 1em;
} }
.item + .indexref { .item + .indexref {
display: inline-block; display: inline-block;
padding-left: 0px; padding-left: 0px;
margin-left: 1em; margin-left: 1em;
} }
.secitem + .indexref { .secitem + .indexref {
display: inline-block; display: inline-block;
padding-left: 0px; padding-left: 0px;
@ -947,7 +947,7 @@ div.admon pre {
margin: 0.5em 3em; margin: 0.5em 3em;
} }
div.note, div.note,
div.tip { div.tip {
margin: 1em; margin: 1em;
padding: 0.2em 0.5em 0.75em 0.75em; padding: 0.2em 0.5em 0.75em 0.75em;
@ -958,8 +958,8 @@ div.tip {
line-height: 1.4em; line-height: 1.4em;
} }
div.important, div.important,
div.warning, div.warning,
div.caution { div.caution {
margin: 1em; margin: 1em;
padding: 0.2em 0.5em 0.75em 0.75em; padding: 0.2em 0.5em 0.75em 0.75em;
@ -970,14 +970,14 @@ div.caution {
line-height: 1.4em; line-height: 1.4em;
} }
div.important h3, div.important h3,
div.warning h3, div.warning h3,
div.caution h3 { div.caution h3 {
color: #900; color: #900;
} }
div.important em, div.important em,
div.warning em, div.warning em,
div.caution em { div.caution em {
color: #000; color: #000;
font-weight: bold; font-weight: bold;
@ -995,7 +995,7 @@ div.caution em {
margin-right: auto; margin-right: auto;
} }
.table table th, .table table th,
.table table td { .table table td {
padding: 0.2em 2em 0.2em 2em; padding: 0.2em 2em 0.2em 2em;
text-align: left; text-align: left;
@ -1038,7 +1038,7 @@ div.caution em {
} }
/* End media */ /* End media */
.variablelist td span, .variablelist td span,
td p { td p {
margin: 0.25em; margin: 0.25em;
padding: 0px; padding: 0px;
@ -1112,7 +1112,7 @@ div.materials dd {
display: block; display: block;
width: 100%; width: 100%;
} }
.package .segbody, .content .segbody { .package .segbody, .content .segbody {
display: inline-block; display: inline-block;
padding-left: 0px; padding-left: 0px;
@ -1194,17 +1194,17 @@ ol.compact li p {
} }
/* Indented blocks */ /* Indented blocks */
p, p,
blockquote { blockquote {
padding-left: 1em; padding-left: 1em;
padding-right: 1em; padding-right: 1em;
} }
/* Monospaced elements */ /* Monospaced elements */
tt, tt,
code, code,
kbd, kbd,
pre, pre,
.command { .command {
font-family: monospace; font-family: monospace;
} }
@ -1229,7 +1229,7 @@ pre.screen {
font-weight: normal; font-weight: normal;
} }
.literal, .literal,
.prompt { .prompt {
font-weight: normal; font-weight: normal;
} }

View File

@ -8,257 +8,257 @@
* Makefile.lfs: Adjust warning flags. Adjust linking rules to * Makefile.lfs: Adjust warning flags. Adjust linking rules to
allow build with util-linux in LFS's /tools directory. allow build with util-linux in LFS's /tools directory.
2010-01-26 Matt Burgess <matthew@linuxfromscratch.org> 2010-01-26 Matt Burgess <matthew@linuxfromscratch.org>
* 55-lfs.rules: Remove lots of rules that have been merged upstream. * 55-lfs.rules: Remove lots of rules that have been merged upstream.
* 61-cdrom.rules: Remove as upstream has a replacement. * 61-cdrom.rules: Remove as upstream has a replacement.
* doc/*: Cleanup and rewrite now that the rules are much simpler. * doc/*: Cleanup and rewrite now that the rules are much simpler.
2009-09-25 Bryan Kadzban <bryan@linuxfromscratch.org> 2009-09-25 Bryan Kadzban <bryan@linuxfromscratch.org>
* 55-lfs.rules: Make the RTC rule (which runs setclock) work for people * 55-lfs.rules: Make the RTC rule (which runs setclock) work for people
that don't use the RTC-class driver -- add another copy of the rule, that don't use the RTC-class driver -- add another copy of the rule,
using KERNEL=="rtc" instead of SUBSYSTEM=="rtc". Also move the ACTION using KERNEL=="rtc" instead of SUBSYSTEM=="rtc". Also move the ACTION
match before the assignment to MODE. match before the assignment to MODE.
2009-05-23 Bruce Dubbs <bdubbs@linuxfromscratch.org> 2009-05-23 Bruce Dubbs <bdubbs@linuxfromscratch.org>
* 55-lfs.rules: Set the rtc by udev upon boot. Removed aio device from * 55-lfs.rules: Set the rtc by udev upon boot. Removed aio device from
udev configuration so defaults are used. udev configuration so defaults are used.
2009-05-16 Bryan Kadzban <bryan@linuxfromscratch.org> 2009-05-16 Bryan Kadzban <bryan@linuxfromscratch.org>
* 55-lfs.rules: Adopt udev permissions for random, urandom, kmsg, and * 55-lfs.rules: Adopt udev permissions for random, urandom, kmsg, and
input devices (including psaux, which probably doesn't exist anymore input devices (including psaux, which probably doesn't exist anymore
anyway). anyway).
2009-05-16 Matt Burgess <matthew@linuxfromscratch.org> 2009-05-16 Matt Burgess <matthew@linuxfromscratch.org>
* 55-lfs.rules: Remove the block rule as it was only setting * 55-lfs.rules: Remove the block rule as it was only setting
permissions that Udev will set by default permissions that Udev will set by default
* 55-lfs.rules: Remove the rfcomm rule as the group it sets is already * 55-lfs.rules: Remove the rfcomm rule as the group it sets is already
included in upstream's rule included in upstream's rule
* 55-lfs-rules: Remove the tape rules as the group they sets is already * 55-lfs-rules: Remove the tape rules as the group they sets is already
included in upstream's rules included in upstream's rules
2009-03-15 Bryan Kadzban <bryan@linuxfromscratch.org> 2009-03-15 Bryan Kadzban <bryan@linuxfromscratch.org>
* 55-lfs.rules: Remove the ISDN-handling rules (replaced with upstream's * 55-lfs.rules: Remove the ISDN-handling rules (replaced with upstream's
version, which has a better match via SUBSYSTEM). version, which has a better match via SUBSYSTEM).
* 55-lfs.rules: Replace "uucp" with "dialout" now that udev has decided * 55-lfs.rules: Replace "uucp" with "dialout" now that udev has decided
to standardize on a Debian-like setup (uucp is for UUCP daemons to use to standardize on a Debian-like setup (uucp is for UUCP daemons to use
for privilege separation; dialout is for users and devices). for privilege separation; dialout is for users and devices).
2008-12-07 Bruce Dubbs <bdubbs@linuxfromscratch.org> 2008-12-07 Bruce Dubbs <bdubbs@linuxfromscratch.org>
* 55-lfs.rules: Change one line to use continuation so it does * 55-lfs.rules: Change one line to use continuation so it does
not overflow the book's width. not overflow the book's width.
2008-12-07 Bryan Kadzban <bryan@linuxfromscratch.org> 2008-12-07 Bryan Kadzban <bryan@linuxfromscratch.org>
* 55-lfs.rules: Remove several rules that are either provided by upstream, * 55-lfs.rules: Remove several rules that are either provided by upstream,
or that don't have any effect (there is no /dev/js or /dev/djs according or that don't have any effect (there is no /dev/js or /dev/djs according
to devices.txt). to devices.txt).
* 55-lfs.rules, 61-cdrom.rules: Replace ACTION=="add" with "add|change" * 55-lfs.rules, 61-cdrom.rules: Replace ACTION=="add" with "add|change"
everywhere, per upstream's general request. everywhere, per upstream's general request.
2008-11-11 Bryan Kadzban <bryan@linuxfromscratch.org> 2008-11-11 Bryan Kadzban <bryan@linuxfromscratch.org>
* 55-lfs.rules, 61-cdrom.rules: Fix comments to use the right rule * 55-lfs.rules, 61-cdrom.rules: Fix comments to use the right rule
numbers. Thanks to Trent Shea for the fix. Closes #2278. numbers. Thanks to Trent Shea for the fix. Closes #2278.
2008-10-15 DJ Lucas <dj@linuxfromscratch.org> 2008-10-15 DJ Lucas <dj@linuxfromscratch.org>
* 55-lfs.rules: Override default perms on floppy disk devices provided * 55-lfs.rules: Override default perms on floppy disk devices provided
by 50-udev-default.rules. Thanks to Bruce Dubbs for the fix. Closes by 50-udev-default.rules. Thanks to Bruce Dubbs for the fix. Closes
LFS ticket #2076. LFS ticket #2076.
2008-05-21 Bryan Kadzban <bryan@linuxfromscratch.org> 2008-05-21 Bryan Kadzban <bryan@linuxfromscratch.org>
* 81-firmware.rules, doc/81-firmware.txt: Remove. This rule is * 81-firmware.rules, doc/81-firmware.txt: Remove. This rule is
already handled by udev's 50-udev-default.rules file. The docs already handled by udev's 50-udev-default.rules file. The docs
can be added back later if needed. can be added back later if needed.
* Makefile: Don't install the above deleted files. * Makefile: Don't install the above deleted files.
* 55-lfs.rules: Remove the device-mapper rule, since the upstream * 55-lfs.rules: Remove the device-mapper rule, since the upstream
50-udev-default.rules file handles it properly. 50-udev-default.rules file handles it properly.
2008-04-02 Bryan Kadzban <bryan@linuxfromscratch.org> 2008-04-02 Bryan Kadzban <bryan@linuxfromscratch.org>
* Makefile: Make the package DESTDIR-friendly by installing the docs * Makefile: Make the package DESTDIR-friendly by installing the docs
into a fixed $(PREFIX)/share/doc/udev-config directory, instead of into a fixed $(PREFIX)/share/doc/udev-config directory, instead of
trying to figure out what version of udev was just installed. trying to figure out what version of udev was just installed.
2007-10-30 Bryan Kadzban <bryan@linuxfromscratch.org> 2007-10-30 Bryan Kadzban <bryan@linuxfromscratch.org>
* 55-lfs.rules: Since the dialout group was renamed to uucp, delete * 55-lfs.rules: Since the dialout group was renamed to uucp, delete
the rules that override upstream's assignment of the dialout group. the rules that override upstream's assignment of the dialout group.
Replace "dialout" with "uucp" on the remaining rules. Replace "dialout" with "uucp" on the remaining rules.
2007-10-29 Bryan Kadzban <bryan@linuxfromscratch.org> 2007-10-29 Bryan Kadzban <bryan@linuxfromscratch.org>
* 51-lfs.rules: Move to 55-lfs.rules. * 51-lfs.rules: Move to 55-lfs.rules.
* doc/51-lfs.rules: Move to doc/55-lfs.rules. * doc/51-lfs.rules: Move to doc/55-lfs.rules.
2007-10-27 Bryan Kadzban <bryan@linuxfromscratch.org> 2007-10-27 Bryan Kadzban <bryan@linuxfromscratch.org>
* 25-lfs.rules: Some rules in here are duplicates of rules from udev's * 25-lfs.rules: Some rules in here are duplicates of rules from udev's
new 50-udev-defaults.rules file; remove them. Override permissions new 50-udev-defaults.rules file; remove them. Override permissions
where needed elsewhere (and document overrides in comments). where needed elsewhere (and document overrides in comments).
* 26-modprobe.rules: Provided by udev's 80-drivers.rules and built-in * 26-modprobe.rules: Provided by udev's 80-drivers.rules and built-in
modaliases for SCSI device-type modules in 2.6.22+ kernels; remove. modaliases for SCSI device-type modules in 2.6.22+ kernels; remove.
* 25-lfs.rules: Move to 51-lfs.rules. * 25-lfs.rules: Move to 51-lfs.rules.
* 27-firmware.rules: Move to 81-firmware.rules. * 27-firmware.rules: Move to 81-firmware.rules.
* 81-cdrom.rules: Move to 61-cdrom.rules. * 81-cdrom.rules: Move to 61-cdrom.rules.
* doc/25-lfs.txt: Rename to 51-lfs.txt. * doc/25-lfs.txt: Rename to 51-lfs.txt.
* doc/26-modprobe.txt: Rename to 80-drivers.txt, and modify to reflect * doc/26-modprobe.txt: Rename to 80-drivers.txt, and modify to reflect
the upstream rules. the upstream rules.
* doc/27-firmware.txt: Rename to 81-firmware.txt. * doc/27-firmware.txt: Rename to 81-firmware.txt.
* doc/81-cdrom.txt: Rename to 61-cdrom.txt. * doc/81-cdrom.txt: Rename to 61-cdrom.txt.
* Makefile: Use new filenames. * Makefile: Use new filenames.
2007-07-31 Dan Nicholson <dnicholson@linuxfromscratch.org> 2007-07-31 Dan Nicholson <dnicholson@linuxfromscratch.org>
* 25-lfs.rules: Changed the usb_device rule tto create /dev/bus/usb * 25-lfs.rules: Changed the usb_device rule tto create /dev/bus/usb
nodes if the usb_device in 2.6.22+ kernels. The rule was also changed nodes if the usb_device in 2.6.22+ kernels. The rule was also changed
to only trigger on "add" events. This change is not backwards to only trigger on "add" events. This change is not backwards
compatible with older kernels. compatible with older kernels.
2007-06-12 Dan Nicholson <dnicholson@linuxfromscratch.org> 2007-06-12 Dan Nicholson <dnicholson@linuxfromscratch.org>
* 25-lfs.rules: Fix the CPUID nodes from cpu/%n/cpu to cpu/%n/cpuid, * 25-lfs.rules: Fix the CPUID nodes from cpu/%n/cpu to cpu/%n/cpuid,
which is what's expected in userspace apps such as x86info. which is what's expected in userspace apps such as x86info.
2007-06-08 Bryan Kadzban <bryan@linuxfromscratch.org> 2007-06-08 Bryan Kadzban <bryan@linuxfromscratch.org>
* 25-lfs.rules: Add rules for DVB devices (create nodes in /dev/dvb/) * 25-lfs.rules: Add rules for DVB devices (create nodes in /dev/dvb/)
and floppies (create extra nodes based on CMOS type), copied from and floppies (create extra nodes based on CMOS type), copied from
the SuSE rules file. Thanks to Alexander Patrakov for the bugreport. the SuSE rules file. Thanks to Alexander Patrakov for the bugreport.
2007-03-04 Matthew Burgess <matthew@linuxfromscratch.org> 2007-03-04 Matthew Burgess <matthew@linuxfromscratch.org>
* Makefile: Use `udevd --version' to work out what version of Udev is * Makefile: Use `udevd --version' to work out what version of Udev is
installed (requires Udev >= 106) installed (requires Udev >= 106)
2007-01-02 Bryan Kadzban <bryan@linuxfromscratch.org> 2007-01-02 Bryan Kadzban <bryan@linuxfromscratch.org>
* 25-lfs.rules: Change CPU devices (cpu, msr, microcode) to be in * 25-lfs.rules: Change CPU devices (cpu, msr, microcode) to be in
/dev/cpu/ and /dev/cpu/N/, to match Documentation/devices.txt. /dev/cpu/ and /dev/cpu/N/, to match Documentation/devices.txt.
2006-10-21 Bryan Kadzban <bryan@linuxfromscratch.org> 2006-10-21 Bryan Kadzban <bryan@linuxfromscratch.org>
* Makefile: Add a missing backslash in install-extra-doc. * Makefile: Add a missing backslash in install-extra-doc.
* 05-udev-early.rules, 60-persistent-input.rules, * 05-udev-early.rules, 60-persistent-input.rules,
60-persistent-storage.rules, 95-udev-late.rules: Remove. The book 60-persistent-storage.rules, 95-udev-late.rules: Remove. The book
will install these files from udev's etc/udev/rules.d directory will install these files from udev's etc/udev/rules.d directory
instead. instead.
* Makefile: Don't install these rules files after all. Also, only * Makefile: Don't install these rules files after all. Also, only
install corresponding docs if requested. install corresponding docs if requested.
2006-10-20 Bryan Kadzban <bryan@linuxfromscratch.org> 2006-10-20 Bryan Kadzban <bryan@linuxfromscratch.org>
* Makefile: Added; contains targets to install rules and doc files. * Makefile: Added; contains targets to install rules and doc files.
From Dan Nicholson. From Dan Nicholson.
2006-10-14 Bryan Kadzban <bryan@linuxfromscratch.org> 2006-10-14 Bryan Kadzban <bryan@linuxfromscratch.org>
* 05-udev-early.rules, 60-persistent-storage.rules: Sync up with * 05-udev-early.rules, 60-persistent-storage.rules: Sync up with
upstream sample rules files (from udev-102), except for one rule upstream sample rules files (from udev-102), except for one rule
which is more specific in our tarball and should probably be changed which is more specific in our tarball and should probably be changed
upstream. upstream.
* doc/60-persistent-storage.txt: Modify to match the changes. Also * doc/60-persistent-storage.txt: Modify to match the changes. Also
fix a couple typos. fix a couple typos.
* 25-lfs.rules: Remove duplicate rules (ttyS[0-9]* is also matched by * 25-lfs.rules: Remove duplicate rules (ttyS[0-9]* is also matched by
tty[BC...S...][0-9]*, and ttyUSB[0-9]* is in there twice). tty[BC...S...][0-9]*, and ttyUSB[0-9]* is in there twice).
* 25-lfs.rules: Fix Alsa device KERNEL rules. Udev uses shell-style * 25-lfs.rules: Fix Alsa device KERNEL rules. Udev uses shell-style
glob matching, not regular expressions, so the old rules would match glob matching, not regular expressions, so the old rules would match
nonsense device names like hw0asdf and pcmDzxcv. As long as the first nonsense device names like hw0asdf and pcmDzxcv. As long as the first
character after the "fixed" portion was in the list, the rule would character after the "fixed" portion was in the list, the rule would
match; it wouldn't apply the same character range to later characters. match; it wouldn't apply the same character range to later characters.
* doc/25-lfs.txt: Add a note on interaction between permissions and * doc/25-lfs.txt: Add a note on interaction between permissions and
symlinks. symlinks.
2006-10-09 Bryan Kadzban <bryan@linuxfromscrtach.org> 2006-10-09 Bryan Kadzban <bryan@linuxfromscrtach.org>
* 25-lfs.rules: Fix fb[0-9]* device permissions (should use the default * 25-lfs.rules: Fix fb[0-9]* device permissions (should use the default
0660). 0660).
* doc/25-lfs.txt: Fix typo: /dev/ptmx is given mode 0666, not 0660. * doc/25-lfs.txt: Fix typo: /dev/ptmx is given mode 0666, not 0660.
Also tweak the comment about other TTY devices. Also tweak the comment about other TTY devices.
2006-10-04 Bryan Kadzban <bryan@linuxfromscratch.org> 2006-10-04 Bryan Kadzban <bryan@linuxfromscratch.org>
* 05-udev-early.rules: Remove WAIT_FOR_SYSFS="bus" rule. With kernel * 05-udev-early.rules: Remove WAIT_FOR_SYSFS="bus" rule. With kernel
2.6.18, this rule is no longer required. 2.6.18, this rule is no longer required.
* doc/05-udev-early.txt: Update to match. * doc/05-udev-early.txt: Update to match.
2006-09-28 Bryan Kadzban <bryan@linuxfromscratch.org> 2006-09-28 Bryan Kadzban <bryan@linuxfromscratch.org>
* doc/60-persistent-storage.txt: Explain persistent storage rules, or * doc/60-persistent-storage.txt: Explain persistent storage rules, or
at least the parts I understand. (I don't use DASD or netblock or at least the parts I understand. (I don't use DASD or netblock or
several other supported configurations.) several other supported configurations.)
* doc/81-cdrom.txt: Explain 81-cdrom.rules. * doc/81-cdrom.txt: Explain 81-cdrom.rules.
* doc/95-udev-late.txt: Explain 95-udev-late.rules. Documentation is * doc/95-udev-late.txt: Explain 95-udev-late.rules. Documentation is
now finished. now finished.
2006-09-26 Bryan Kadzban <bryan@linuxfromscratch.org> 2006-09-26 Bryan Kadzban <bryan@linuxfromscratch.org>
* doc/60-persistent-input.txt: Explain (in probably too much detail) * doc/60-persistent-input.txt: Explain (in probably too much detail)
60-persistent-input.rules. 60-persistent-input.rules.
2006-09-24 Bryan Kadzban <bryan@linuxfromscratch.org> 2006-09-24 Bryan Kadzban <bryan@linuxfromscratch.org>
* doc/05-udev-early.txt: Rewrap to fit 80 columns. * doc/05-udev-early.txt: Rewrap to fit 80 columns.
* doc/26-modprobe.txt: Explain 26-modprobe.rules, and modaliases. * doc/26-modprobe.txt: Explain 26-modprobe.rules, and modaliases.
* doc/27-firmware.txt: Explain 27-firmware.rules. * doc/27-firmware.txt: Explain 27-firmware.rules.
2006-09-24 Bryan Kadzban <bryan@linuxfromscratch.org> 2006-09-24 Bryan Kadzban <bryan@linuxfromscratch.org>
* doc/25-lfs.txt: Explain 25-lfs.rules. * doc/25-lfs.txt: Explain 25-lfs.rules.
* 25-lfs.rules: Use SYMLINK+= for isdn/capi20 also. * 25-lfs.rules: Use SYMLINK+= for isdn/capi20 also.
2006-09-23 Bryan Kadzban <bryan@linuxfromscratch.org> 2006-09-23 Bryan Kadzban <bryan@linuxfromscratch.org>
* doc: New subdirectory to contain documentation of rules * doc: New subdirectory to contain documentation of rules
* doc/README: New file, top-level documentation * doc/README: New file, top-level documentation
* doc/*.txt: New documentation files, one for each rules file. Only * doc/*.txt: New documentation files, one for each rules file. Only
05-udev-early.txt has anything in it. 05-udev-early.txt has anything in it.
2006-09-23 Bryan Kadzban <bryan@linuxfromscratch.org> 2006-09-23 Bryan Kadzban <bryan@linuxfromscratch.org>
* 25-lfs.rules: Add "ignore_device" to OPTIONS for DRI devices, instead * 25-lfs.rules: Add "ignore_device" to OPTIONS for DRI devices, instead
of setting NAME to an empty string. This matches the way we ignore of setting NAME to an empty string. This matches the way we ignore
devmapper / LVM devices. devmapper / LVM devices.
2006-09-22 Bryan Kadzban <bryan@linuxfromscratch.org> 2006-09-22 Bryan Kadzban <bryan@linuxfromscratch.org>
* 60-persistent-input.rules, 95-udev-late.rules: Import from udev-100. * 60-persistent-input.rules, 95-udev-late.rules: Import from udev-100.
60-persistent-input.rules creates persistent symlinks for input 60-persistent-input.rules creates persistent symlinks for input
devices, and 95-udev-late.rules enables udevmonitor. devices, and 95-udev-late.rules enables udevmonitor.
* 60-persistent-storage.rules: Replace ATTRS{../removable} with just * 60-persistent-storage.rules: Replace ATTRS{../removable} with just
ATTRS{removable} on partition devices. Replace ATTRS{removable} ATTRS{removable} on partition devices. Replace ATTRS{removable}
with ATTR{removable} on whole-disk devices. with ATTR{removable} on whole-disk devices.
2006-09-20 Bryan Kadzban <bryan@linuxfromscratch.org> 2006-09-20 Bryan Kadzban <bryan@linuxfromscratch.org>
* 05-early.rules: Missed a rule in the last change. ENV{PHYSDEVBUS} * 05-early.rules: Missed a rule in the last change. ENV{PHYSDEVBUS}
in the rule that waits for the "bus" symlink should be replaced by in the rule that waits for the "bus" symlink should be replaced by
SUBSYSTEMS. SUBSYSTEMS.
2006-09-20 Bryan Kadzban <bryan@linuxfromscratch.org> 2006-09-20 Bryan Kadzban <bryan@linuxfromscratch.org>
* Adapted rules to the new matches used in udev-098 and above (e.g., * Adapted rules to the new matches used in udev-098 and above (e.g.,
SYSFS becomes ATTRS). Prevents warnings, and support for the old SYSFS becomes ATTRS). Prevents warnings, and support for the old
matches will be removed eventually. These rules will not work with matches will be removed eventually. These rules will not work with
udev-097 and before! udev-097 and before!
* Fixed several bugs in the rules left over from previous udev * Fixed several bugs in the rules left over from previous udev
versions (missing commas, overwriting user symlinks using ="..." versions (missing commas, overwriting user symlinks using ="..."
instead of +="...", and matching against "*" instead of "?*"). instead of +="...", and matching against "*" instead of "?*").
* Renamed CHANGELOG to ChangeLog, started using pseudo-GNU-format * Renamed CHANGELOG to ChangeLog, started using pseudo-GNU-format
entries. (See standards.info; search it for "changelog" to get entries. (See standards.info; search it for "changelog" to get
the general gist.) the general gist.)
dnicholson - Jul 14, 2006 dnicholson - Jul 14, 2006
* Fixed usbdev PROGRAM so that it works with the BusyBox sh. Thanks * Fixed usbdev PROGRAM so that it works with the BusyBox sh. Thanks
to Anthony Wright. to Anthony Wright.
n/a - Jul 12, 2006 n/a - Jul 12, 2006
* Added options so temporary nodes are not created with device-mapper * Added options so temporary nodes are not created with device-mapper
* Adapted cdrom rules to identify CD-ROM drives correctly by adding * Adapted cdrom rules to identify CD-ROM drives correctly by adding
SUBSYSTEM=="block" test. SUBSYSTEM=="block" test.
* Added simple 81-cdrom.rules file to set cdrom group ownership * Added simple 81-cdrom.rules file to set cdrom group ownership
n/a - Jun 07, 2006 n/a - Jun 07, 2006
* Removed nvidia rules * Removed nvidia rules
* Removed bug reporting rule * Removed bug reporting rule
* Moved Debian-based persistent CD-ROM rules to contrib * Moved Debian-based persistent CD-ROM rules to contrib
* Adapted firmware rule to udev-093 * Adapted firmware rule to udev-093
n/a - May 15, 2006 n/a - May 15, 2006
* Part one of 25-lfs.rules rewrite * Part one of 25-lfs.rules rewrite
* Some minor tweaking of the layout * Some minor tweaking of the layout
n/a - May 12, 2006 n/a - May 12, 2006
* Initial import of the udev-config directory. * Initial import of the udev-config directory.
* Reorganized and modularized the rules files. * Reorganized and modularized the rules files.
* Added explanatory comments * Added explanatory comments

View File

@ -107,7 +107,7 @@ match="BUS==\"$PHYSDEVBUS\", ID==\"$id\""
comment="$ID_MODEL ($ID_PATH)" comment="$ID_MODEL ($ID_PATH)"
write_rule "$match" "cdrom$link_num" "$comment" write_rule "$match" "cdrom$link_num" "$comment"
[ "$ID_CDROM_CD_RW" ] && write_rule "$match" "cdrw$link_num" [ "$ID_CDROM_CD_RW" ] && write_rule "$match" "cdrw$link_num"
[ "$ID_CDROM_DVD" ] && write_rule "$match" "dvd$link_num" [ "$ID_CDROM_DVD" ] && write_rule "$match" "dvd$link_num"
[ "$ID_CDROM_DVD_RW" ] && write_rule "$match" "dvdrw$link_num" [ "$ID_CDROM_DVD_RW" ] && write_rule "$match" "dvdrw$link_num"