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

This commit is contained in:
Xi Ruoyao 2023-08-08 11:16:54 +08:00
commit 2882861ba6
No known key found for this signature in database
GPG Key ID: ACAAD20E19E710E3
51 changed files with 848 additions and 249 deletions

View File

@ -1,3 +1,6 @@
2023-07-28 Xi Ruoyao <xry111@xry111.site>
* In mountvirtfs, mount /sys/fs/cgroup for udev from systemd-254.
2023-07-22 Xi Ruoyao <xry111@xry111.site>
* In mountvirtfs, create symlinks /dev/{fd,std{in,out,err}} and
/dev/core (optional).

View File

@ -63,6 +63,10 @@ case "${1}" in
log_info_msg2 " ${INFO}/dev/shm"
mount -o nosuid,nodev /dev/shm || failed=1
mkdir -p /sys/fs/cgroup
log_info_msg2 " ${INFO}/sys/fs/cgroup"
mount -o nosuid,noexec,nodev /sys/fs/cgroup || failed=1
(exit ${failed})
evaluate_retval
if [ "${failed}" = 1 ]; then

View File

@ -10,6 +10,28 @@
<title>Help</title>
<note>
<para>
In case you've hit an issue building one package with the LFS
instruction, we strongly discourage posting the issue directly onto
the upstream support channel before discussing via a LFS support
channel listed in <xref linkend="ch-intro-resources"/>.
Doing so is often quite inefficient because the upstream
maintainers are rarely familiar with LFS building procedure. Even if
you've really hit an upstream issue, the LFS community can still help
to isolate the information wanted by the upstream maintainers and make
a proper report.
</para>
<para>
If you must ask a question directly via an upstream support channel,
you shall at least note that many upstream projects have the support
channels separated from the bug tracker. The <quote>bug</quote>
reports for asking questions are considered invalid and may annoy
upstream developers for these projects.
</para>
</note>
<para>If an issue or a question is encountered while working through
this book, please check the FAQ page at <ulink url="&faq-root;#generalfaq"/>.
Questions are often already answered there. If your question is not

View File

@ -39,6 +39,118 @@
<listitem revision="sysv"> or <listitem revision="systemd"> as
appropriate for the entry or if needed the entire day's listitem.
-->
<listitem>
<para>2023-08-07</para>
<itemizedlist>
<listitem>
<para>[bdubbs] - Update to xz-5.4.4. Fixes
<ulink url='&lfs-ticket-root;5307'>#5307</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to wheel-0.41.1 (Python Module). Fixes
<ulink url='&lfs-ticket-root;5311'>#5311</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to man-pages-6.05.01. Fixes
<ulink url='&lfs-ticket-root;5306'>#5306</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to linux-6.4.8. Fixes
<ulink url='&lfs-ticket-root;5309'>#5309</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to iana-etc-20230804. Addresses
<ulink url='&lfs-ticket-root;5006'>#5006</ulink>.</para>
</listitem>
<listitem>
<para>[rahul] - Update to pkgconf-2.0.0. Fixes
<ulink url='&lfs-ticket-root;5310'>#5310</ulink>.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>2023-08-01</para>
<itemizedlist>
<listitem>
<para>[bdubbs] - Update to vim-9.0.1677. Addresses
<ulink url='&lfs-ticket-root;4500'>#4500</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to openssl-3.1.2. Fixes
<ulink url='&lfs-ticket-root;5305'>#5305</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to man-pages-6.05. Fixes
<ulink url='&lfs-ticket-root;5303'>#5303</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to binutils-2.41. Fixes
<ulink url='&lfs-ticket-root;5300'>#5300</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to gmp-6.3.0. Fixes
<ulink url='&lfs-ticket-root;5301'>#5301</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to glibc-2.38. Fixes
<ulink url='&lfs-ticket-root;5302'>#5302</ulink>.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>2023-07-28</para>
<itemizedlist>
<listitem>
<para>[bdubbs] - Update udev-lfs tarball to remove obsolete
cdrom rules and references to ISDN devices. Fixes
<ulink url='&lfs-ticket-root;5291'>#5291</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to wheel-0.41.0 (Python Module). Fixes
<ulink url='&lfs-ticket-root;5290'>#5290</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to tar-1.35. Fixes
<ulink url='&lfs-ticket-root;5287'>#5287</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to<phrase revision='sysv'> udev
from</phrase> systemd-254. Fixes
<ulink url='&lfs-ticket-root;5293'>#5293</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to meson-1.2.0. Fixes
<ulink url='&lfs-ticket-root;5286'>#5286</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to linux-6.4.7. Fixes
<ulink url='&lfs-ticket-root;5288'>#5288</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to gcc-13.2.0. Fixes
<ulink url='&lfs-ticket-root;5292'>#5292</ulink>.</para>
</listitem>
<listitem>
<para>[bdubbs] - Update to file-5.45. Fixes
<ulink url='&lfs-ticket-root;5294'>#5294</ulink>.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem revision='sysv'>
<para>2023-07-28</para>
<itemizedlist>
<listitem revision='sysv'>
<para>[xry111] - Enable cgroup-based memory pressure information
in kernel, and add the cgroup file system into /etc/fstab and the
mountvirtfs bootscript. This is a preparation for udev from
systemd-254. Addresses
<ulink url='&lfs-ticket-root;5293'>#5293</ulink>.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem revision='sysv'>
<para>2023-07-22</para>
@ -159,7 +271,7 @@
<ulink url='&lfs-ticket-root;5273'>#5273</ulink>.</para>
</listitem>
<listitem>
<para>[rahul] - Changed from pkg-config to pkgconf 1.9.5. Fixes
<para>[rahul] - Changed from pkg-config to pkgconf-1.9.5. Fixes
<ulink url='&lfs-ticket-root;5274'>#5274</ulink>.</para>
</listitem>
</itemizedlist>

View File

@ -64,9 +64,9 @@
<listitem>
<para>Bc &bc-version;</para>
</listitem>
<!--<listitem>
<listitem>
<para>Binutils-&binutils-version;</para>
</listitem>-->
</listitem>
<!--<listitem>
<para>Bison-&bison-version;</para>
</listitem>-->
@ -100,9 +100,9 @@
<!--<listitem>
<para>Expect-&expect-version;</para>
</listitem>-->
<!--<listitem>
<listitem>
<para>File-&file-version;</para>
</listitem>-->
</listitem>
<!--<listitem>
<para>Findutils-&findutils-version;</para>
</listitem>-->
@ -124,12 +124,12 @@
<listitem>
<para>Gettext-&gettext-version;</para>
</listitem>
<!--<listitem>
<listitem>
<para>Glibc-&glibc-version;</para>
</listitem>-->
<!--<listitem>
</listitem>
<listitem>
<para>GMP-&gmp-version;</para>
</listitem>-->
</listitem>
<!--<listitem>
<para>Gperf-&gperf-version;</para>
</listitem>-->
@ -226,6 +226,9 @@
<!--<listitem>
<para>Patch-&patch-version;</para>
</listitem>-->
<!--<listitem>
<para>Pkgconf-&pkgconf-version;</para>
</listitem>-->
<listitem>
<para>Perl-&perl-version;</para>
</listitem>
@ -250,15 +253,15 @@
<listitem revision="sysv">
<para>Sysklogd-&sysklogd-version;</para>
</listitem>
<listitem revision="systemd">
<listitem>
<para>Systemd-&systemd-version;</para>
</listitem>
<!--<listitem revision="sysv">
<para>SysVinit-&sysvinit-version;</para>
</listitem>-->
<!--<listitem>
<listitem>
<para>Tar-&tar-version;</para>
</listitem>-->
</listitem>
<!--<listitem>
<para>Tcl-&tcl-version;</para>
</listitem>-->
@ -274,15 +277,15 @@
<listitem>
<para>Vim-&vim-version;</para>
</listitem>
<!--<listitem>
<listitem>
<para>wheel-&wheel-version;</para>
</listitem>-->
</listitem>
<!--<listitem>
<para>XML-Parser-&xml-parser-version;</para>
</listitem>-->
<!--<listitem>
<listitem>
<para>XZ-Utils-&xz-version;</para>
</listitem>-->
</listitem>
<!--<listitem>
<para>Zlib-&zlib-version;</para>
</listitem>-->
@ -321,7 +324,7 @@
</listitem>
<listitem>
<para>Pkgconf-&flit-core-version;</para>
<para>Pkgconf-&pkgconf-version;</para>
</listitem>
<listitem>
@ -349,7 +352,7 @@
<title>Removed:</title>
<listitem><para></para></listitem> <!-- satisfy build -->
<listitem>
<listitem revision='sysv'>
<para>eudev-3.2.12</para>
</listitem>
@ -361,7 +364,7 @@
<para>Pkg-config-0.29.2</para>
</listitem>
<listitem>
<listitem revision='systemd'>
<para>systemd-252-security_fix-1.patch</para>
</listitem>
</itemizedlist>

View File

@ -62,7 +62,6 @@
<para>Home page: <ulink url="&automake-home;"/></para>
<para>Download: <ulink url="&automake-url;"/></para>
<para>MD5 sum: <literal>&automake-md5;</literal></para>
<para>SHA256 sum: <literal>&automake-sha256;</literal></para>
</listitem>
</varlistentry>

View File

@ -104,7 +104,7 @@ EOF</userinput></screen>
</varlistentry>
<varlistentry>
<term><parameter>LFS_TGT=(uname -m)-lfs-linux-gnu</parameter></term>
<term><parameter>LFS_TGT=$(uname -m)-lfs-linux-gnu</parameter></term>
<listitem>
<para>The <envar>LFS_TGT</envar> variable sets a non-default, but compatible machine
description for use when building our cross-compiler and linker and when

View File

@ -84,7 +84,6 @@ cd build</userinput></screen>
--build=$(../scripts/config.guess) \
--enable-kernel=&min-kernel; \
--with-headers=$LFS/usr/include \
--disable-crypt \
libc_cv_slibdir=/usr/lib</userinput></screen>
<variablelist>

View File

@ -101,7 +101,7 @@ cd build</userinput></screen>
<para>Remove the libtool archive files because they are harmful for
cross compilation, and remove unnecessary static libraries:</para>
<screen><userinput remap="install">rm -v $LFS/usr/lib/lib{bfd,ctf,ctf-nobfd,opcodes}.{a,la}</userinput></screen>
<screen><userinput remap="install">rm -v $LFS/usr/lib/lib{bfd,ctf,ctf-nobfd,opcodes,sframe}.{a,la}</userinput></screen>
</sect2>

View File

@ -45,7 +45,9 @@
<para>Prepare Diffutils for compilation:</para>
<screen><userinput remap="configure">./configure --prefix=/usr --host=$LFS_TGT</userinput></screen>
<screen><userinput remap="configure">./configure --prefix=/usr \
--host=$LFS_TGT \
--build=$(./build-aux/config.guess)</userinput></screen>
<para>Compile the package:</para>

View File

@ -45,8 +45,9 @@
<para>Prepare Grep for compilation:</para>
<screen><userinput remap="configure">./configure --prefix=/usr \
--host=$LFS_TGT</userinput></screen>
<screen><userinput remap="configure">./configure --prefix=/usr \
--host=$LFS_TGT \
--build=$(./build-aux/config.guess)</userinput></screen>
<para>Compile the package:</para>

View File

@ -45,8 +45,9 @@
<para>Prepare Sed for compilation:</para>
<screen><userinput remap="configure">./configure --prefix=/usr \
--host=$LFS_TGT</userinput></screen>
<screen><userinput remap="configure">./configure --prefix=/usr \
--host=$LFS_TGT \
--build=$(./build-aux/config.guess)</userinput></screen>
<para>Compile the package:</para>

View File

@ -132,14 +132,15 @@ cd build</userinput></screen>
<screen><userinput remap="test">grep '^FAIL:' $(find -name '*.log')</userinput></screen>
<para>Three tests in the gprofng suite are known to fail.</para>
<para>Install the package:</para>
<screen><userinput remap="install">make tooldir=/usr install</userinput></screen>
<para>Remove useless static libraries and an empty man page:</para>
<para>Remove useless static libraries:</para>
<screen><userinput remap="install">rm -fv /usr/lib/lib{bfd,ctf,ctf-nobfd,sframe,opcodes}.a
rm -fv /usr/share/man/man1/{gprofng,gp-*}.1</userinput></screen>
<screen><userinput remap="install">rm -fv /usr/lib/lib{bfd,ctf,ctf-nobfd,sframe,opcodes}.a</userinput></screen>
</sect2>

View File

@ -52,6 +52,7 @@
--sysconfdir=/etc \
--localstatedir=/var \
--runstatedir=/run \
--enable-user-session \
--disable-static \
--disable-doxygen-docs \
--disable-xml-docs \
@ -73,6 +74,18 @@
</listitem>
</varlistentry>
<varlistentry>
<term>
<parameter>--enable-user-session</parameter>
</term>
<listitem>
<para>This ensures the D-Bus per-user service and socket unit
files are installed for Systemd. They are not useful (but
harmless) in a base LFS installation, however they can be used
once systemd is rebuilt with PAM support in BLFS.</para>
</listitem>
</varlistentry>
</variablelist>
<para>Compile the package:</para>

View File

@ -177,6 +177,16 @@ su tester -c "PATH=$PATH make -k check"</userinput></screen>
<filename>stack-check-cfa-2.c</filename>
are known to fail.</para>
<para>
With Glibc-2.38, the analyzer tests named
<filename>data-model-4.c</filename> and
<filename>conftest-1.c</filename> are known to fail.
In the asan tests, the subtest named
<filename>AddressSanitizer_StrtolOOBTest</filename> in the test
<filename>asan_test.C</filename> and the test named
<filename>interception-malloc-test-1.C</filename> are known to fail.
</para>
<para>A few unexpected failures cannot always be avoided. The GCC developers
are usually aware of these issues, but have not resolved them yet.
Unless the test results are vastly different from those at the above URL,

View File

@ -50,16 +50,6 @@
<screen><userinput remap="pre">patch -Np1 -i ../&glibc-fhs-patch;</userinput></screen>
<!-- https://sourceware.org/bugzilla/show_bug.cgi?id=30068
Upstream fix also added a test case and renamed "prec" to
"prec_inc". We'll test this with MPFR test suite so we don't
need the test here, and the renaming does not affect program
behavior. -->
<para>Fix a security issue identified upstream:</para>
<screen><userinput remap="pre">sed '/width -=/s/workend - string/number_length/' \
-i stdio-common/vfprintf-process-arg.c</userinput></screen>
<para>The Glibc documentation recommends building Glibc
in a dedicated build directory:</para>
@ -79,7 +69,6 @@ cd build</userinput></screen>
--enable-kernel=&min-kernel; \
--enable-stack-protector=strong \
--with-headers=/usr/include \
--disable-crypt \
libc_cv_slibdir=/usr/lib</userinput></screen>
<variablelist>
@ -166,10 +155,12 @@ esac</userinput></screen>
is known to fail in the LFS chroot environment.</para>
</listitem>
<!-- Did not fail with glibc-2.38
<listitem>
<para><emphasis>misc/tst-ttyname</emphasis>
is known to fail in the LFS chroot environment.</para>
</listitem>
-->
<!-- https://sourceware.org/pipermail/libc-alpha/2022-August/141567.html -->
<listitem>

View File

@ -58,10 +58,12 @@
<para>The default settings of GMP produce libraries optimized for
the host processor. If libraries suitable for processors less
capable than the host's CPU are desired, generic libraries can be
created by running the following:
created by appending the <option>--host=none-linux-gnu</option> option
to the <command>configure</command> command.</para>
<screen role="nodump"><userinput>cp -v configfsf.guess config.guess
cp -v configfsf.sub config.sub</userinput></screen></para>
<!-- To editors: the configure script says "the none host is obsolete,
use - -disable-assembly", but don't believe it: with the latter
CFLAGS is still automatically set to -march=something. -->
</note>
<para>Prepare GMP for compilation:</para>
@ -110,9 +112,9 @@ make html</userinput></screen>
the system capabilities and there will be errors in the tests or other
applications using the gmp libraries with the message "Illegal
instruction". In this case, gmp should be reconfigured with the option
--build=x86_64-pc-linux-gnu and rebuilt.</para></caution>
<option>--host=none-linux-gnu</option> and rebuilt.</para></caution>
<para>Ensure that all 197 tests in the test suite passed.
<para>Ensure that all 199 tests in the test suite passed.
Check the results by issuing the following command:</para>
<screen><userinput remap="test">awk '/# PASS:/{total+=$3} ; END{print total}' gmp-check-log</userinput></screen>

View File

@ -41,8 +41,17 @@
</sect2>
<sect2 role="installation">
<title>Installation of Pkgconf</title>
<para>Pkgconf-2.0.0 explicitly errors when attempting to run
<option>--modversion</option> with multiple arguments, even if these
arguments are constraints for the same package. This breaks many
packages in BLFS. Run this sed to reinstate the old
output for pkgconf:</para>
<screen><userinput remap="pre">sed -i '/1330,1336/s|^|//|' cli/main.c</userinput></screen>
<para>Prepare Pkgconf for compilation:</para>
<screen><userinput remap="configure">./configure --prefix=/usr \

View File

@ -83,16 +83,6 @@ make check</userinput></screen>
<screen><userinput remap="test">make check</userinput></screen>
<!-- It's because "free -v" shows "used" greater than "total", and
a negative "free" for "Comm" line. The "total" value is from
"CommitLimit" in /proc/meminfo, which is the limit for one process.
But the "used" value is from "Committed_AS" in the same file,
which is the total commited virtual memory space of all processes.
I'll make a report to upstream anyway. -->
<para>One test named <filename>free with commit</filename>
may fail if some applications with a custom memory allocator (for
example, JVM and Web browsers) are running on the host distro.</para>
<para>Install the package:</para>
<screen><userinput remap="install">make install</userinput></screen>

View File

@ -88,7 +88,7 @@ done
online_usrbin="bash find strip"
online_usrlib="libbfd-&binutils-version;.so
libsframe.so.0.0.0
libsframe.so.&libsframe-version;
libhistory.so.&readline-soversion;
libncursesw.so.&ncurses-version;
libm.so.6

View File

@ -40,19 +40,6 @@
<sect2 role="installation">
<title>Installation of systemd</title>
<para>
Remove several inappropriate uses of the <literal>pure</literal>
attribute that cause runtime issues when the package is built
with gcc-13 or later:
</para>
<screen><userinput remap='pre'>sed '/bus_message_type_from_string/s/_pure_//' \
-i src/libsystemd/sd-bus/bus-internal.h &amp;&amp;
sed '/devt_hash_func/s/_pure_//' \
-i src/basic/hash-funcs.h &amp;&amp;
sed '/job_get_timeout/s/_pure_//' \
-i src/core/job.h</userinput></screen>
<para>Remove two unneeded groups,
<systemitem class="groupname">render</systemitem> and
<systemitem class="groupname">sgx</systemitem>, from the default udev
@ -206,7 +193,9 @@ meson setup \
<!-- Please make sure systemd man pages tarball has a common leading
component in the path. -->
<screen><userinput remap="install">tar -xf ../../systemd-man-pages-&systemd-man-version;.tar.xz --strip-components=1 -C /usr/share/man</userinput></screen>
<screen><userinput remap="install">tar -xf ../../systemd-man-pages-&systemd-version;.tar.xz \
--no-same-owner --strip-components=1 \
-C /usr/share/man</userinput></screen>
<para>Create the <filename>/etc/machine-id</filename> file needed by
<command>systemd-journald</command>:</para>
@ -245,12 +234,14 @@ meson setup \
<seglistitem>
<seg>busctl, coredumpctl, halt (symlink to systemctl),
hostnamectl, init, journalctl, kernel-install, localectl, loginctl,
machinectl, networkctl, oomctl, portablectl, poweroff (symlink to
machinectl, mount.ddi (symlink to systemd-dissect), networkctl,
oomctl, portablectl, poweroff (symlink to
systemctl), reboot (symlink to systemctl), resolvconf (symlink to
resolvectl), resolvectl, runlevel (symlink to systemctl), shutdown
(symlink to systemctl), systemctl, systemd-ac-power, systemd-analyze,
systemd-ask-password, systemd-cat, systemd-cgls, systemd-cgtop,
systemd-creds, systemd-delta, systemd-detect-virt,
systemd-confext (symlink to systemd-sysext), systemd-creds,
systemd-delta, systemd-detect-virt,
systemd-dissect, systemd-escape, systemd-hwdb, systemd-id128,
systemd-inhibit, systemd-machine-id-setup,
systemd-mount, systemd-notify, systemd-nspawn, systemd-path,

View File

@ -128,7 +128,7 @@ meson setup \
install -vm755 -d /usr/{lib,share}/pkgconfig
install -vm755 udevadm /usr/bin/
install -vm755 systemd-hwdb /usr/bin/udev-hwdb
ln -sv ../bin/udevadm /usr/sbin/udevd
ln -svfn ../bin/udevadm /usr/sbin/udevd
cp -av libudev.so{,*[0-9]} /usr/lib/
install -vm644 ../src/libudev/libudev.h /usr/include/
install -vm644 src/libudev/*.pc /usr/lib/pkgconfig/
@ -148,11 +148,12 @@ make -f &udev-lfs-version;/Makefile.lfs install</userinput></screen>
<!-- Please make sure systemd man pages tarball has a common leading
component in the path. -->
<screen><userinput remap="install">tar -xf ../../systemd-man-pages-253.tar.xz --strip-components=1 \
<screen><userinput remap="install">tar -xf ../../systemd-man-pages-&systemd-man-version;.tar.xz \
--no-same-owner --strip-components=1 \
-C /usr/share/man --wildcards '*/udev*' '*/libudev*' \
'*/systemd-'{hwdb,udevd.service}.8
sed 's/systemd\(\\\?-\)/udev-/' /usr/share/man/man8/systemd-hwdb.8 \
> /usr/share/man/man8/udev-hwdb.8
sed 's/systemd\(\\\?-\)/udev\1/' /usr/share/man/man8/systemd-hwdb.8 \
> /usr/share/man/man8/udev-hwdb.8
sed 's|lib.*udevd|sbin/udevd|' \
/usr/share/man/man8/systemd-udevd.service.8 \
> /usr/share/man/man8/udevd.8

View File

@ -22,17 +22,18 @@
<screen revision="sysv"><userinput>cat &gt; /etc/fstab &lt;&lt; "EOF"
<literal># Begin /etc/fstab
# file system mount-point type options dump fsck
# order
# file system mount-point type options dump fsck
# order
/dev/<replaceable>&lt;xxx&gt;</replaceable> / <replaceable>&lt;fff&gt;</replaceable> defaults 1 1
/dev/<replaceable>&lt;yyy&gt;</replaceable> swap swap pri=1 0 0
proc /proc proc nosuid,noexec,nodev 0 0
sysfs /sys sysfs nosuid,noexec,nodev 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
tmpfs /run tmpfs defaults 0 0
devtmpfs /dev devtmpfs mode=0755,nosuid 0 0
tmpfs /dev/shm tmpfs nosuid,nodev 0 0
/dev/<replaceable>&lt;xxx&gt;</replaceable> / <replaceable>&lt;fff&gt;</replaceable> defaults 1 1
/dev/<replaceable>&lt;yyy&gt;</replaceable> swap swap pri=1 0 0
proc /proc proc nosuid,noexec,nodev 0 0
sysfs /sys sysfs nosuid,noexec,nodev 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
tmpfs /run tmpfs defaults 0 0
devtmpfs /dev devtmpfs mode=0755,nosuid 0 0
tmpfs /dev/shm tmpfs nosuid,nodev 0 0
cgroup2 /sys/fs/cgroup cgroup2 nosuid,noexec,nodev 0 0
# End /etc/fstab</literal>
EOF</userinput></screen>

View File

@ -210,6 +210,7 @@ umount /sys/firmware/efi/efivars</userinput></screen>
set default=0
set timeout=5
insmod part_gpt
insmod ext2
set root=(hd0,2)

View File

@ -130,80 +130,23 @@
<para>Be sure to enable/disable/set the following features or the system might
not work correctly or boot at all:</para>
<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]
&lt; &gt; Enable kernel headers through /sys/kernel/kheaders.tar.xz [CONFIG_IKHEADERS]
[ ] Configure standard kernel features (expert users) [CONFIG_EXPERT]
General architecture-dependent options ---&gt;
[*] Stack Protector buffer overflow detection [CONFIG_STACKPROTECTOR]
[*] Strong Stack Protector [CONFIG_STACKPROTECTOR_STRONG]
Device Drivers ---&gt;
Firmware Drivers ---&gt;
EFI (Extensible Firmware Interface) Support ---&gt;
[*] Enable the generic EFI decompressor [CONFIG_EFI_ZBOOT]
Graphics support ---&gt;
Frame buffer Devices ---&gt;
&lt;*&gt; Support for frame buffer devices ---&gt;
Console display driver support ---&gt;
[*] Framebuffer Console support [CONFIG_FRAMEBUFFER_CONSOLE]
Generic Driver Options ---&gt;
[ ] Support for uevent helper [CONFIG_UEVENT_HELPER]
[*] Maintain a devtmpfs filesystem to mount at /dev [CONFIG_DEVTMPFS]
[*] Automount devtmpfs at /dev, after the kernel mounted the rootfs [CONFIG_DEVTMPFS_MOUNT]</screen>
<!-- To editors: for updating kernel configuration, edit
kernel/*.toml and regenerate kernel/*.xml with
"make -C kernel KERNEL_TREE=</usr/src/linux-&linux-version> -->
<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]
[ ] Auditing Support [CONFIG_AUDIT]
CPU/Task time and stats accounting ---&gt;
[*] Pressure stall information tracking [CONFIG_PSI]
[ ] Require boot parameter to enable pressure stall information tracking [CONFIG_PSI_DEFAULT_DISABLED]
&lt; &gt; Enable kernel headers through /sys/kernel/kheaders.tar.xz [CONFIG_IKHEADERS]
[*] Control Group support [CONFIG_CGROUPS] ---&gt;
[*] Memory controller [CONFIG_MEMCG]
[ ] Configure standard kernel features (expert users) [CONFIG_EXPERT]
General architecture-dependent options ---&gt;
[*] 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; [CONFIG_NET]
Networking options ---&gt;
[*] TCP/IP networking [CONFIG_INET]
&lt;*&gt; The IPv6 protocol [CONFIG_IPV6]
Device Drivers ---&gt;
Generic Driver Options ---&gt;
[ ] Support for uevent helper [CONFIG_UEVENT_HELPER]
[*] Maintain a devtmpfs filesystem to mount at /dev [CONFIG_DEVTMPFS]
[*] Automount devtmpfs at /dev, after the kernel mounted the rootfs [CONFIG_DEVTMPFS_MOUNT]
Firmware Loader ---&gt;
[ ] Enable the firmware sysfs fallback mechanism [CONFIG_FW_LOADER_USER_HELPER]
Firmware Drivers ---&gt;
[*] Export DMI identification via sysfs to userspace [CONFIG_DMIID]
EFI (Extensible Firmware Interface) Support ---&gt;
[*] Enable the generic EFI decompressor [CONFIG_EFI_ZBOOT]
Graphics support ---&gt;
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;
[*] Inotify support for userspace [CONFIG_INOTIFY_USER]
Pseudo filesystems ---&gt;
[*] Tmpfs POSIX Access Control Lists [CONFIG_TMPFS_POSIX_ACL]</screen>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="kernel/sysv.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="kernel/systemd.xml"/>
<para>If the partition for the LFS system is in a NVME SSD (i. e. the
device node for the partition is <filename>/dev/nvme*</filename>
instead of <filename>/dev/sd*</filename>), enable NVME support or
the LFS system won't boot:</para>
<screen role="nodump">Device Drivers ---&gt;
NVME Support ---&gt;
&lt;*&gt; NVM Express block device [CONFIG_BLK_DEV_NVME]</screen>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="kernel/nvme.xml"/>
</note>
<note revision="systemd">

2
chapter10/kernel/.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
__pycache__
s-kernel-version

23
chapter10/kernel/Makefile Normal file
View File

@ -0,0 +1,23 @@
INPUT = $(wildcard *.toml)
OUTPUT = $(patsubst %.toml, %.xml, $(INPUT))
ifeq ($(KERNEL_TREE),)
$(error "must set KERNEL_TREE=/path/to/kernel/source")
endif
all: $(OUTPUT)
kernel.version: s-kernel-version; @true
.PHONY: s-kernel-version
s-kernel-version:
./kernel_version.py $(KERNEL_TREE) > tmp-kernel.version
if ! diff tmp-kernel.version kernel.version ; then \
mv tmp-kernel.version kernel.version; \
else \
rm tmp-kernel.version; \
fi
touch s-kernel-version
%.xml: %.toml kernel-config.py kernel_version.py kernel.version
./kernel-config.py $(KERNEL_TREE) $< > $@

View File

@ -0,0 +1 @@
HIGHMEM64G='X'

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE note PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
<!-- Automatically generated by kernel-config.py
DO NOT EDIT! -->
<screen role="nodump"><emphasis role='blue'>P</emphasis>rocessor type and features ---&gt;
H<emphasis role='blue'>i</emphasis>gh Memory Support ---&gt;
(X) <emphasis role='blue'>6</emphasis>4GB [HIGHMEM64G]</screen>

298
chapter10/kernel/kernel-config.py Executable file
View File

@ -0,0 +1,298 @@
#!/usr/bin/env python3
# SPDX-License-Identifier: MIT
# Copyright 2023 The LFS Editors
# Stupid script to render "mconf"-style kernel configuration
# Usage: kernel-config.py [path to kernel tree] [needed config].toml
# The toml file should be like:
# for bool and tristate:
# EXT4="*"
# DRM="*M"
# EXPERT=" "
# DRM_I915="*M"
# for choice:
# HIGHMEM64G="X"
# an entry with comment:
# DRM_I915 = { value = " *M", comment = "for i915, crocus, or iris" }
choice_bit = 1 << 30
ind0 = 0
ind1 = 0
menu_id = 1
stack = []
if_stack = []
expand_var_mp = { 'SRCARCH': 'x86' }
main_dep = {}
def expand_var(s):
for k in expand_var_mp:
s = s.replace('$(' + k + ')', expand_var_mp[k])
return s
def pop_stack(cond):
global ind0, ind1, stack
assert(cond(stack[-1][0]))
s, i0, i1, _ = stack[-1]
stack = stack[:-1]
ind0 -= i0
ind1 -= i1
def pop_stack_while(cond):
while stack and cond(stack[-1][0]):
pop_stack(cond)
def cur_menu():
global stack
return stack[-1][3] if stack else 0
def cur_if():
global if_stack
return if_stack[-1][:] if if_stack else []
def clean_dep(d):
d = d.strip()
if d.endswith('=y') or d.endswith('=M'):
d = d[:-2]
elif d.endswith(' != ""'):
d = d[:-6]
return d
def parse_config(buf):
global ind0, ind1, stack, menu_id
is_choice = buf[0].strip() == 'choice'
is_menu = buf[0].startswith('menu') or is_choice
is_nonconfig_menu = buf[0].startswith('menu ') or is_choice
key = None if is_nonconfig_menu else buf[0].split()[1].strip()
title = buf[0][len('menu '):] if is_nonconfig_menu else None
deps = ['menu'] + cur_if()
klass = None
for line in buf[1:]:
line = line.strip()
if line.startswith('depends on '):
new_deps = line[len('depends on '):].split('&&')
deps += [clean_dep(x) for x in new_deps]
elif line.startswith('prompt'):
title = line[len('prompt '):]
else:
for prefix in ['tristate', 'bool', 'string']:
if line.startswith(prefix + ' '):
title = line[len(prefix) + 1:]
klass = prefix
elif line == prefix:
klass = prefix
elif line.startswith('def_' + prefix + ' '):
klass = prefix
else:
continue
if '"' in line:
tail = line[line.rfind('"') + 1:].strip()
if tail[:3] == 'if ':
deps += [clean_dep(x) for x in tail[3:].split('&&')]
pop_stack_while(lambda x: x not in deps)
menu_id += is_menu
internal_key = key or menu_id
if stack:
fa = stack[-1][0]
if fa == 'menu':
fa = cur_menu() & ~choice_bit
main_dep[internal_key] = fa
val = known_config.get(key)
comment = None
forced = None
if type(val) == dict:
comment = val.get('comment')
forced = val.get('forced')
val = val['value']
klass = klass or 'string'
if title:
title = title.strip().lstrip('"')
title = title[:title.find('"')]
if not val:
pass
elif klass == 'string':
val = '(' + val + ')'
else:
assert((val == 'X') == bool(cur_menu() & choice_bit))
if (val == 'X'):
val = '(X)'
else:
val = list(val)
val.sort()
for c in val:
if c not in 'M* ' or (c == 'M' and klass != 'tristate'):
raise Exception('unknown setting %s for %s' % (c, key))
bracket = None
if klass == 'tristate' and forced != '*' :
bracket = '{}' if forced else '<>'
else:
bracket = '--' if forced else '[]'
val = bracket[0] + '/'.join(val) + bracket[1]
arrow = ' --->' if is_menu else ''
r = [ind0, val, ind1, title, arrow, internal_key, cur_menu(), comment]
# Don't indent for untitled (internal) entries
x = 2 if title else 0
key = key or 'menu'
menu = (menu_id if is_menu else cur_menu())
menu |= choice_bit if is_choice else 0
stack_ent = (key, 2, 0, menu) if is_menu else (key, 0, x, menu)
ind0 += stack_ent[1]
ind1 += stack_ent[2]
stack += [stack_ent]
return r
def load_kconfig(file):
global ind0, ind1, stack, path, menu_id, if_stack
r = []
config_buf = []
with open(path + file) as f:
for line in f:
if config_buf:
if not (line.startswith('\t') or line.startswith(' ')):
r += [parse_config(config_buf)]
config_buf = []
else:
config_buf += [line]
continue
if line.startswith('source') or line.startswith('\tsource'):
sub = expand_var(line.strip().split()[1].strip('"'))
r += load_kconfig(sub)
elif line.startswith('config') or line.startswith('menu'):
config_buf = [line]
elif line.startswith('choice'):
config_buf = [line]
elif line.startswith('endmenu') or line.startswith('endchoice'):
pop_stack_while(lambda x: x != 'menu')
pop_stack(lambda x: x == 'menu')
elif line.startswith('if '):
line = line[3:]
top = cur_if()
top += [x.strip() for x in line.split("&&")]
if_stack += [top]
elif line.startswith('endif'):
if_stack = if_stack[:-1]
return r
known_config = {}
def escape(x):
return x.replace('<', '&lt;').replace('>', '&gt;')
from sys import argv
import tomllib
path = argv[1]
if path[-1] != '/':
path += '/'
with open(argv[2], 'rb') as f:
known_config = tomllib.load(f)
r = load_kconfig('Kconfig')
# Refcount all menus
index_ikey = {}
for i in reversed(range(len(r))):
index_ikey[r[i][5]] = i
for i in reversed(range(len(r))):
if r[i][1] != None:
key = r[i][5]
fa = main_dep.get(key)
if not fa:
continue
j = index_ikey[fa]
if type(fa) == int or not r[j][3]:
# The main dependency is a menu or untitled magic entry,
# just mark it used
r[j][1] = ''
if r[j][1] is None:
raise Exception('[%s] needs unselected [%s]' % (key, fa))
r = [i for i in r if i[1] != None and i[3]]
# Now we are going to pretty-print r
## Calculate the maximum value length for each menu
max_val_len = {}
for _, val, _, _, _, _, menu, _ in r:
x = max_val_len.get(menu) or 0
max_val_len[menu] = max(x, len(val))
## Output
max_line = 80
buf = []
done = [x[5] for x in r] + ['revision']
for i in known_config:
if i not in done:
raise Exception("%s seems not exist" % i)
sep = known_config.get('separate_toplevel_menu')
for i0, val, i1, title, arrow, key, menu, comment in r:
rem = max_line
if val:
val += (max_val_len[menu] - len(val)) * ' '
rem -= i0 + i1 + bool(val) + len(val)
line = i0 * ' ' + escape(val) + (i1 + bool(val)) * ' '
rem -= len(arrow)
if len(title) > rem:
title = title[:rem - 3] + '...'
b = title.lstrip('YyMmNnHh')
a = title[:len(title) - len(b)]
b0 = "<emphasis role='blue'>" + escape(b[0]) + "</emphasis>"
line += escape(a) + b0 + escape(b[1:]) + escape(arrow)
rem -= len(title)
key = ' [' + key + ']' if type(key) == str else ''
if len(key) <= rem:
line += (rem - len(key)) * ' ' + key
else:
key = '... ' + key
line += '\n' + ' ' * (max_line - len(key)) + key
if type(comment) == str:
comment = [comment]
if comment:
comment = '\n'.join([' ' * i0 + '# ' + line for line in comment])
buf += [escape(comment) + ':']
if not menu and buf:
buf += ['']
buf += [line.rstrip()]
from jinja2 import Template
t = Template('''<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE note PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
<!-- Automatically generated by kernel-config.py
DO NOT EDIT! -->
<screen role="nodump"{{ rev }}>{{ '\n'.join(buf) }}</screen>''')
rev = known_config.get('revision')
rev = ' revision="%s"' % rev if rev else ''
print(t.render(rev = rev, buf = buf))

View File

@ -0,0 +1 @@
6.4.8

View File

@ -0,0 +1,27 @@
#!/usr/bin/env python3
def kernel_version(path):
version = None
patchlevel = None
sublevel = None
with open(path + 'Makefile') as f:
for line in f:
if line.startswith('VERSION ='):
version = line[len('VERSION ='):].strip()
elif line.startswith('PATCHLEVEL ='):
patchlevel = line[len('PATCHLEVEL ='):].strip()
elif line.startswith('SUBLEVEL ='):
sublevel = line[len('SUBLEVEL ='):].strip()
assert(version and patchlevel and sublevel)
return '.'.join([version, patchlevel, sublevel])
if __name__ == '__main__':
from sys import argv
path = argv[1]
if path[:-1] != '/':
path += '/'
print(kernel_version(path))

View File

@ -0,0 +1 @@
BLK_DEV_NVME='*'

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE note PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
<!-- Automatically generated by kernel-config.py
DO NOT EDIT! -->
<screen role="nodump"><emphasis role='blue'>D</emphasis>evice Drivers ---&gt;
N<emphasis role='blue'>V</emphasis>ME Support ---&gt;
&lt;*&gt; N<emphasis role='blue'>V</emphasis>M Express block device [BLK_DEV_NVME]</screen>

View File

@ -0,0 +1,30 @@
# This part should be sync with sysv.toml
WERROR=' '
PSI='*'
PSI_DEFAULT_DISABLED=' '
IKHEADERS=' '
CGROUPS='*'
MEMCG='*'
EXPERT=' '
RELOCATABLE='*'
RANDOMIZE_BASE='*'
STACKPROTECTOR='*'
STACKPROTECTOR_STRONG='*'
UEVENT_HELPER=' '
DEVTMPFS='*'
DEVTMPFS_MOUNT='*'
FB='*'
FRAMEBUFFER_CONSOLE='*'
AUDIT=' '
NET='*'
INET='*'
IPV6='*'
FW_LOADER=' *'
FW_LOADER_USER_HELPER=' '
DMIID='*'
INOTIFY_USER='*'
TMPFS='*'
TMPFS_POSIX_ACL='*'
revision='systemd'

View File

@ -0,0 +1,53 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE note PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
<!-- Automatically generated by kernel-config.py
DO NOT EDIT! -->
<screen role="nodump" revision="systemd"><emphasis role='blue'>G</emphasis>eneral setup ---&gt;
[ ] <emphasis role='blue'>C</emphasis>ompile the kernel with warnings as errors [WERROR]
[ ] <emphasis role='blue'>A</emphasis>uditing support [AUDIT]
<emphasis role='blue'>C</emphasis>PU/Task time and stats accounting ---&gt;
[*] <emphasis role='blue'>P</emphasis>ressure stall information tracking [PSI]
[ ] <emphasis role='blue'>R</emphasis>equire boot parameter to enable pressure stall information tracking
... [PSI_DEFAULT_DISABLED]
&lt; &gt; <emphasis role='blue'>E</emphasis>nable kernel headers through /sys/kernel/kheaders.tar.xz [IKHEADERS]
[*] <emphasis role='blue'>C</emphasis>ontrol Group support ---&gt; [CGROUPS]
[*] M<emphasis role='blue'>e</emphasis>mory controller [MEMCG]
[ ] <emphasis role='blue'>C</emphasis>onfigure standard kernel features (expert users) ---&gt; [EXPERT]
<emphasis role='blue'>P</emphasis>rocessor type and features ---&gt;
[*] <emphasis role='blue'>B</emphasis>uild a relocatable kernel [RELOCATABLE]
[*] <emphasis role='blue'>R</emphasis>andomize the address of the kernel image (KASLR) [RANDOMIZE_BASE]
<emphasis role='blue'>G</emphasis>eneral architecture-dependent options ---&gt;
[*] <emphasis role='blue'>S</emphasis>tack Protector buffer overflow detection [STACKPROTECTOR]
[*] <emphasis role='blue'>S</emphasis>trong Stack Protector [STACKPROTECTOR_STRONG]
[*] N<emphasis role='blue'>e</emphasis>tworking support ---&gt; [NET]
N<emphasis role='blue'>e</emphasis>tworking options ---&gt;
[*] <emphasis role='blue'>T</emphasis>CP/IP networking [INET]
&lt;*&gt; <emphasis role='blue'>T</emphasis>he IPv6 protocol ---&gt; [IPV6]
<emphasis role='blue'>D</emphasis>evice Drivers ---&gt;
<emphasis role='blue'>G</emphasis>eneric Driver Options ---&gt;
[ ] <emphasis role='blue'>S</emphasis>upport for uevent helper [UEVENT_HELPER]
[*] M<emphasis role='blue'>a</emphasis>intain a devtmpfs filesystem to mount at /dev [DEVTMPFS]
[*] <emphasis role='blue'>A</emphasis>utomount devtmpfs at /dev, after the kernel mounted the rootfs
... [DEVTMPFS_MOUNT]
<emphasis role='blue'>F</emphasis>irmware loader ---&gt;
&lt; /*&gt; <emphasis role='blue'>F</emphasis>irmware loading facility [FW_LOADER]
[ ] <emphasis role='blue'>E</emphasis>nable the firmware sysfs fallback mechanism
... [FW_LOADER_USER_HELPER]
<emphasis role='blue'>F</emphasis>irmware Drivers ---&gt;
[*] <emphasis role='blue'>E</emphasis>xport DMI identification via sysfs to userspace [DMIID]
<emphasis role='blue'>G</emphasis>raphics support ---&gt;
<emphasis role='blue'>F</emphasis>rame buffer Devices ---&gt;
&lt;*&gt; <emphasis role='blue'>S</emphasis>upport for frame buffer devices ---&gt; [FB]
<emphasis role='blue'>C</emphasis>onsole display driver support ---&gt;
[*] <emphasis role='blue'>F</emphasis>ramebuffer Console support [FRAMEBUFFER_CONSOLE]
<emphasis role='blue'>F</emphasis>ile systems ---&gt;
[*] <emphasis role='blue'>I</emphasis>notify support for userspace [INOTIFY_USER]
<emphasis role='blue'>P</emphasis>seudo filesystems ---&gt;
[*] <emphasis role='blue'>T</emphasis>mpfs virtual memory file system support (former shm fs) [TMPFS]
[*] <emphasis role='blue'>T</emphasis>mpfs POSIX Access Control Lists [TMPFS_POSIX_ACL]</screen>

View File

@ -0,0 +1,18 @@
WERROR=' '
PSI='*'
PSI_DEFAULT_DISABLED=' '
IKHEADERS=' '
CGROUPS='*'
MEMCG='*'
EXPERT=' '
RELOCATABLE='*'
RANDOMIZE_BASE='*'
STACKPROTECTOR='*'
STACKPROTECTOR_STRONG='*'
UEVENT_HELPER=' '
DEVTMPFS='*'
DEVTMPFS_MOUNT='*'
FB='*'
FRAMEBUFFER_CONSOLE='*'
revision='sysv'

35
chapter10/kernel/sysv.xml Normal file
View File

@ -0,0 +1,35 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE note PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
<!-- Automatically generated by kernel-config.py
DO NOT EDIT! -->
<screen role="nodump" revision="sysv"><emphasis role='blue'>G</emphasis>eneral setup ---&gt;
[ ] <emphasis role='blue'>C</emphasis>ompile the kernel with warnings as errors [WERROR]
<emphasis role='blue'>C</emphasis>PU/Task time and stats accounting ---&gt;
[*] <emphasis role='blue'>P</emphasis>ressure stall information tracking [PSI]
[ ] <emphasis role='blue'>R</emphasis>equire boot parameter to enable pressure stall information tracking
... [PSI_DEFAULT_DISABLED]
&lt; &gt; <emphasis role='blue'>E</emphasis>nable kernel headers through /sys/kernel/kheaders.tar.xz [IKHEADERS]
[*] <emphasis role='blue'>C</emphasis>ontrol Group support ---&gt; [CGROUPS]
[*] M<emphasis role='blue'>e</emphasis>mory controller [MEMCG]
[ ] <emphasis role='blue'>C</emphasis>onfigure standard kernel features (expert users) ---&gt; [EXPERT]
<emphasis role='blue'>P</emphasis>rocessor type and features ---&gt;
[*] <emphasis role='blue'>B</emphasis>uild a relocatable kernel [RELOCATABLE]
[*] <emphasis role='blue'>R</emphasis>andomize the address of the kernel image (KASLR) [RANDOMIZE_BASE]
<emphasis role='blue'>G</emphasis>eneral architecture-dependent options ---&gt;
[*] <emphasis role='blue'>S</emphasis>tack Protector buffer overflow detection [STACKPROTECTOR]
[*] <emphasis role='blue'>S</emphasis>trong Stack Protector [STACKPROTECTOR_STRONG]
<emphasis role='blue'>D</emphasis>evice Drivers ---&gt;
<emphasis role='blue'>G</emphasis>eneric Driver Options ---&gt;
[ ] <emphasis role='blue'>S</emphasis>upport for uevent helper [UEVENT_HELPER]
[*] M<emphasis role='blue'>a</emphasis>intain a devtmpfs filesystem to mount at /dev [DEVTMPFS]
[*] <emphasis role='blue'>A</emphasis>utomount devtmpfs at /dev, after the kernel mounted the rootfs
... [DEVTMPFS_MOUNT]
<emphasis role='blue'>G</emphasis>raphics support ---&gt;
<emphasis role='blue'>F</emphasis>rame buffer Devices ---&gt;
&lt;*&gt; <emphasis role='blue'>S</emphasis>upport for frame buffer devices ---&gt; [FB]
<emphasis role='blue'>C</emphasis>onsole display driver support ---&gt;
[*] <emphasis role='blue'>F</emphasis>ramebuffer Console support [FRAMEBUFFER_CONSOLE]</screen>

View File

@ -0,0 +1,5 @@
X86_X2APIC='*'
PCI='*'
PCI_MSI='*'
IOMMU_SUPPORT='*'
IRQ_REMAP='*'

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE note PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
<!-- Automatically generated by kernel-config.py
DO NOT EDIT! -->
<screen role="nodump"><emphasis role='blue'>P</emphasis>rocessor type and features ---&gt;
[*] <emphasis role='blue'>S</emphasis>upport x2apic [X86_X2APIC]
<emphasis role='blue'>D</emphasis>evice Drivers ---&gt;
[*] <emphasis role='blue'>P</emphasis>CI support ---&gt; [PCI]
[*] M<emphasis role='blue'>e</emphasis>ssage Signaled Interrupts (MSI and MSI-X) [PCI_MSI]
[*] <emphasis role='blue'>I</emphasis>OMMU Hardware Support ---&gt; [IOMMU_SUPPORT]
[*] <emphasis role='blue'>S</emphasis>upport for Interrupt Remapping [IRQ_REMAP]</screen>

View File

@ -4,7 +4,7 @@
# obfuscate email addresses in XML/HTML
# Script written (and slight perl modification) by Archaic <archaic AT linuxfromscratch D0T org>
# Modified from "sed -i" to old style "sed -e" by Manuel Canales <manuel AT linuxfromscratch D0T org>
# to prevent hangs on very long files, like nonckunked books.
# to prevent hangs on very long files, like nonchunked books.
# Original Perl expression by Anderson Lizardo <lizardo AT linuxfromscratch D0T org>
# Released under the GNU General Public License
#

View File

@ -43,7 +43,6 @@
<!ENTITY automake-size "1,565 KB">
<!ENTITY automake-url "&gnu;automake/automake-&automake-version;.tar.xz">
<!ENTITY automake-md5 "4017e96f89fca45ca946f1c5db6be714">
<!ENTITY automake-sha256 "80facc09885a57e6d49d06972c0ae1089c5fa8f4d4c7cfe5baea58e5085f136d">
<!ENTITY automake-home "&gnu-software;automake/">
<!ENTITY automake-fin-du "114 MB">
<!ENTITY automake-fin-sbu "less than 0.1 SBU (about 7.3 SBU with tests)">
@ -66,10 +65,10 @@
<!ENTITY bc-fin-du "7.6 MB">
<!ENTITY bc-fin-sbu "less than 0.1 SBU">
<!ENTITY binutils-version "2.40">
<!ENTITY binutils-size "24,650 KB">
<!ENTITY binutils-version "2.41">
<!ENTITY binutils-size "26,139 KB">
<!ENTITY binutils-url "https://sourceware.org/pub/binutils/releases/binutils-&binutils-version;.tar.xz">
<!ENTITY binutils-md5 "007b59bd908a737c06e5a8d3d2c737eb">
<!ENTITY binutils-md5 "256d7e0ad998e423030c84483a7c1e30">
<!ENTITY binutils-home "&gnu-software;binutils/">
<!ENTITY binutils-tmpp1-du "639 MB">
<!ENTITY binutils-tmpp1-sbu "1 SBU">
@ -77,6 +76,7 @@
<!ENTITY binutils-tmpp2-sbu "0.4 SBU">
<!ENTITY binutils-fin-du "2.6 GB">
<!ENTITY binutils-fin-sbu "2.2 SBU">
<!ENTITY libsframe-version "1.0.0">
<!ENTITY bison-version "3.8.2">
<!ENTITY bison-size "2,752 KB">
@ -172,10 +172,10 @@
<!ENTITY expect-tmp-du "3.9 MB">
<!ENTITY expect-tmp-sbu "0.2 SBU">
<!ENTITY file-version "5.44">
<!ENTITY file-size "1,159 KB">
<!ENTITY file-version "5.45">
<!ENTITY file-size "1,218 KB">
<!ENTITY file-url "https://astron.com/pub/file/file-&file-version;.tar.gz">
<!ENTITY file-md5 "a60d586d49d015d842b9294864a89c7a">
<!ENTITY file-md5 "26b2a96d4e3a8938827a1e572afd527a">
<!ENTITY file-home "https://www.darwinsys.com/file/">
<!ENTITY file-tmp-du "36 MB">
<!ENTITY file-tmp-sbu "0.1 SBU">
@ -218,10 +218,10 @@
<!ENTITY gawk-fin-du "43 MB">
<!ENTITY gawk-fin-sbu "0.2 SBU">
<!ENTITY gcc-version "13.1.0">
<!ENTITY gcc-size "85,402 KB">
<!ENTITY gcc-version "13.2.0">
<!ENTITY gcc-size "85,800 KB">
<!ENTITY gcc-url "&gnu;gcc/gcc-&gcc-version;/gcc-&gcc-version;.tar.xz">
<!ENTITY gcc-md5 "43e4de77f2218c83ca675257ea1af9ef">
<!ENTITY gcc-md5 "e0e48554cc6e4f261d55ddee9ab69075">
<!ENTITY gcc-sha256 "">
<!ENTITY gcc-home "https://gcc.gnu.org/">
<!ENTITY gcc-tmpp1-du "3.8 GB">
@ -256,20 +256,20 @@
<!ENTITY gettext-fin-du "241 MB">
<!ENTITY gettext-fin-sbu "1.3 SBU">
<!ENTITY glibc-version "2.37">
<!ENTITY glibc-size "18,244 KB">
<!ENTITY glibc-version "2.38">
<!ENTITY glibc-size "18,471 KB">
<!ENTITY glibc-url "&gnu;glibc/glibc-&glibc-version;.tar.xz">
<!ENTITY glibc-md5 "e89cf3dcb64939d29f04b4ceead5cc4e">
<!ENTITY glibc-md5 "778cce0ea6bf7f84ca8caacf4a01f45b">
<!ENTITY glibc-home "&gnu-software;libc/">
<!ENTITY glibc-tmp-du "822 MB">
<!ENTITY glibc-tmp-sbu "1.5 SBU">
<!ENTITY glibc-fin-du "2.9 GB">
<!ENTITY glibc-fin-sbu "11 SBU">
<!ENTITY gmp-version "6.2.1">
<!ENTITY gmp-size "1,980 KB">
<!ENTITY gmp-version "6.3.0">
<!ENTITY gmp-size "2,046 KB">
<!ENTITY gmp-url "&gnu;gmp/gmp-&gmp-version;.tar.xz">
<!ENTITY gmp-md5 "0b82665c4a92fd2ade7440c13fcaa42b">
<!ENTITY gmp-md5 "956dc04e864001a9c22429f761f2c283">
<!ENTITY gmp-home "&gnu-software;gmp/">
<!ENTITY gmp-fin-du "52 MB">
<!ENTITY gmp-fin-sbu "0.3 SBU">
@ -318,10 +318,10 @@
<!ENTITY gzip-fin-du "21 MB">
<!ENTITY gzip-fin-sbu "0.3 SBU">
<!ENTITY iana-etc-version "20230629">
<!ENTITY iana-etc-version "20230804">
<!ENTITY iana-etc-size "588 KB">
<!ENTITY iana-etc-url "https://github.com/Mic92/iana-etc/releases/download/&iana-etc-version;/iana-etc-&iana-etc-version;.tar.gz">
<!ENTITY iana-etc-md5 "8c2e8385391306edbf4ca26ed4930a71">
<!ENTITY iana-etc-md5 "449bdd47e3e9f0788f0bc6925afb6f22">
<!ENTITY iana-etc-home "https://www.iana.org/protocols">
<!ENTITY iana-etc-fin-du "4.8 MB">
<!ENTITY iana-etc-fin-sbu "less than 0.1 SBU">
@ -383,7 +383,7 @@
<!ENTITY less-fin-du "4.3 MB">
<!ENTITY less-fin-sbu "less than 0.1 SBU">
<!ENTITY lfs-bootscripts-version "20230722"> <!-- Scripts depend on this format -->
<!ENTITY lfs-bootscripts-version "20230728"> <!-- Scripts depend on this format -->
<!ENTITY lfs-bootscripts-size "BOOTSCRIPTS-SIZE KB">
<!ENTITY lfs-bootscripts-url "&downloads-root;lfs-bootscripts-&lfs-bootscripts-version;.tar.xz">
<!ENTITY lfs-bootscripts-md5 "BOOTSCRIPTS-MD5SUM">
@ -433,12 +433,12 @@
<!ENTITY linux-major-version "6">
<!ENTITY linux-minor-version "4">
<!ENTITY linux-patch-version "3">
<!ENTITY linux-patch-version "8">
<!--<!ENTITY linux-version "&linux-major-version;.&linux-minor-version;">-->
<!ENTITY linux-version "&linux-major-version;.&linux-minor-version;.&linux-patch-version;">
<!ENTITY linux-size "134,557 KB">
<!ENTITY linux-size "134,589 KB">
<!ENTITY linux-url "&kernel;linux/kernel/v&linux-major-version;.x/linux-&linux-version;.tar.xz">
<!ENTITY linux-md5 "c83363136e61977c63d655733424d37a">
<!ENTITY linux-md5 "80f135995e79ed48c61064d151155bd7">
<!ENTITY linux-home "https://www.kernel.org/">
<!-- measured for 5.13.4 / gcc-11.1.0 on x86_64 : minimum is
allnoconfig rounded down to allow for ongoing cleanups,
@ -477,10 +477,10 @@
<!ENTITY man-db-fin-du "40 MB">
<!ENTITY man-db-fin-sbu "0.2 SBU">
<!ENTITY man-pages-version "6.04">
<!ENTITY man-pages-size "2,137 KB">
<!ENTITY man-pages-version "6.05.01">
<!ENTITY man-pages-size "2,144 KB">
<!ENTITY man-pages-url "&kernel;linux/docs/man-pages/man-pages-&man-pages-version;.tar.xz">
<!ENTITY man-pages-md5 "bbce1456edfa75a66c189cc594af6c4d">
<!ENTITY man-pages-md5 "de4563b797cf9b1e0b0d73628b35e442">
<!ENTITY man-pages-home "https://www.kernel.org/doc/man-pages/">
<!ENTITY man-pages-fin-du "32 MB">
<!ENTITY man-pages-fin-sbu "less than 0.1 SBU">
@ -493,10 +493,10 @@
<!ENTITY markupsafe-fin-du "544 KB">
<!ENTITY markupsafe-fin-sbu "less than 0.1 SBU">
<!ENTITY meson-version "1.1.1">
<!ENTITY meson-size "2,076 KB">
<!ENTITY meson-version "1.2.0">
<!ENTITY meson-size "2,132 KB">
<!ENTITY meson-url "&github;/mesonbuild/meson/releases/download/&meson-version;/meson-&meson-version;.tar.gz">
<!ENTITY meson-md5 "0f810b31b26156989ac9321fa2063a04">
<!ENTITY meson-md5 "677616183f2c5e03e2139b06280129a0">
<!ENTITY meson-home "https://mesonbuild.com">
<!ENTITY meson-fin-du "41 MB">
<!ENTITY meson-fin-sbu "less than 0.1 SBU">
@ -535,10 +535,10 @@
<!ENTITY ninja-fin-du "77 MB">
<!ENTITY ninja-fin-sbu "0.3 SBU">
<!ENTITY openssl-version "3.1.1">
<!ENTITY openssl-size "15,181 KB">
<!ENTITY openssl-version "3.1.2">
<!ENTITY openssl-size "15,196 KB">
<!ENTITY openssl-url "https://www.openssl.org/source/openssl-&openssl-version;.tar.gz">
<!ENTITY openssl-md5 "1864b75e31fb4a6e0a07fd832529add3">
<!ENTITY openssl-md5 "1d7861f969505e67b8677e205afd9ff4">
<!ENTITY openssl-home "https://www.openssl.org/">
<!ENTITY openssl-fin-du "520 MB">
<!ENTITY openssl-fin-sbu "3.2 SBU">
@ -567,12 +567,12 @@
<!ENTITY perl-fin-du "234 MB">
<!ENTITY perl-fin-sbu "7.9 SBU">
<!ENTITY pkgconf-version "1.9.5">
<!ENTITY pkgconf-size "304 KB">
<!ENTITY pkgconf-version "2.0.0">
<!ENTITY pkgconf-size "303 KB">
<!ENTITY pkgconf-url "https://distfiles.ariadne.space/pkgconf/pkgconf-&pkgconf-version;.tar.xz">
<!ENTITY pkgconf-md5 "0a8b69723bef4ebad83e9c8b43a75cc7">
<!ENTITY pkgconf-md5 "42ac3b1291aba9681136a74996ebffcd">
<!ENTITY pkgconf-home "http://pkgconf.org/">
<!ENTITY pkgconf-fin-du "8.1 MB">
<!ENTITY pkgconf-fin-du "4.6 MB">
<!ENTITY pkgconf-fin-sbu "less than 0.1 SBU">
<!ENTITY procps-ng-version "4.0.3">
@ -643,20 +643,20 @@
<!ENTITY sysklogd-fin-du "0.7 MB">
<!ENTITY sysklogd-fin-sbu "less than 0.1 SBU">
<!ENTITY systemd-version "253">
<!ENTITY systemd-version "254">
<!--<!ENTITY systemd-stable "6b4878d">-->
<!-- The above entity is used whenever we move to a stable backport branch. In the event of a critical problem or kernel
change that is incompatible, we will switch to the backport branch until the next stable release. -->
<!ENTITY systemd-size "11,708 KB">
<!ENTITY systemd-size "13,985 KB">
<!ENTITY systemd-url "&github;/systemd/systemd/archive/v&systemd-version;/systemd-&systemd-version;.tar.gz">
<!--<!ENTITY systemd-url "&anduin-sources;/systemd-&systemd-version;-&systemd-stable;.tar.xz">-->
<!ENTITY systemd-md5 "7cf12ee8a91a04306fc6cf290eed42e8">
<!ENTITY systemd-md5 "0d266e5361dc72097b6c18cfde1c0001">
<!ENTITY systemd-home "https://www.freedesktop.org/wiki/Software/systemd/">
<!ENTITY systemd-man-version "253">
<!ENTITY systemd-man-size "600 KB">
<!ENTITY systemd-man-version "254">
<!ENTITY systemd-man-size "626 KB">
<!--<!ENTITY systemd-man-url "&anduin-sources;/systemd-man-pages-&systemd-version;-&systemd-stable;.tar.xz">-->
<!ENTITY systemd-man-url "&anduin-sources;/systemd-man-pages-&systemd-man-version;.tar.xz">
<!ENTITY systemd-man-md5 "8b54792c9433fc8db8e5d10db326802d">
<!ENTITY systemd-man-md5 "fc32faeac581e1890ca27fcea3858410">
<!ENTITY systemd-fin-du "258 MB">
<!ENTITY systemd-fin-sbu "0.7 SBU">
@ -668,10 +668,10 @@
<!ENTITY sysvinit-fin-du "4.4 MB">
<!ENTITY sysvinit-fin-sbu "less than 0.1 SBU">
<!ENTITY tar-version "1.34">
<!ENTITY tar-size "2,174 KB">
<!ENTITY tar-version "1.35">
<!ENTITY tar-size "2,263 KB">
<!ENTITY tar-url "&gnu;tar/tar-&tar-version;.tar.xz">
<!ENTITY tar-md5 "9a08d29a9ac4727130b5708347c0f5cf">
<!ENTITY tar-md5 "a2d8042658cfd8ea939e6d911eaf4152">
<!ENTITY tar-home "&gnu-software;tar/">
<!ENTITY tar-tmp-du "38 MB">
<!ENTITY tar-tmp-sbu "0.1 SBU">
@ -709,10 +709,10 @@
<!ENTITY udev-fin-du "130 MB">
<!ENTITY udev-fin-sbu "0.2 SBU">
<!ENTITY udev-lfs-version "udev-lfs-20171102">
<!ENTITY udev-lfs-size "11 KB">
<!ENTITY udev-lfs-version "udev-lfs-20230728">
<!ENTITY udev-lfs-size "10 KB">
<!ENTITY udev-lfs-url "&anduin-sources;/&udev-lfs-version;.tar.xz">
<!ENTITY udev-lfs-md5 "27cd82f9a61422e186b9d6759ddf1634">
<!ENTITY udev-lfs-md5 "8a3b921e3a28d36ac46d17137d920268">
<!ENTITY udev-lfs-home " ">
<!ENTITY util-linux-minor "2.39">
@ -726,21 +726,21 @@
<!ENTITY util-linux-fin-du "283 MB">
<!ENTITY util-linux-fin-sbu "0.5 SBU">
<!ENTITY vim-version "9.0.1671">
<!ENTITY vim-version "9.0.1677">
<!-- <!ENTITY vim-majmin "90"> -->
<!ENTITY vim-docdir "vim/vim90">
<!ENTITY vim-size "16,669 KB">
<!ENTITY vim-size "16,670 KB">
<!--<!ENTITY vim-url "https://github.com/vim/vim/archive/v&vim-version;/vim-&vim-version;.tar.gz">-->
<!ENTITY vim-url "&anduin-sources;/vim-&vim-version;.tar.gz">
<!ENTITY vim-md5 "243fce49db0dd93af7c2b12163f47fcf">
<!ENTITY vim-md5 "65e6b09ef0628a2d8eba79f1d1d5a564">
<!ENTITY vim-home "https://www.vim.org">
<!ENTITY vim-fin-du "235 MB">
<!ENTITY vim-fin-sbu "2.4 SBU">
<!ENTITY wheel-version "0.40.0">
<!ENTITY wheel-version "0.41.1">
<!ENTITY wheel-size "96 KB">
<!ENTITY wheel-url "&pypi-src;/w/wheel/wheel-&wheel-version;.tar.gz">
<!ENTITY wheel-md5 "ec5004c46d1905da98bb5bc1a10ddd21">
<!ENTITY wheel-md5 "181cb3f4d8ed340c904a0e1c416d341d">
<!ENTITY wheel-home "&pypi-home;/wheel/">
<!ENTITY wheel-fin-du "1.3 MB">
<!ENTITY wheel-fin-sbu "less than 0.1 SBU">
@ -753,10 +753,10 @@
<!ENTITY xml-parser-fin-du "2.3 MB">
<!ENTITY xml-parser-fin-sbu "less than 0.1 SBU">
<!ENTITY xz-version "5.4.3">
<!ENTITY xz-size "1,628 KB">
<!ENTITY xz-version "5.4.4">
<!ENTITY xz-size "1,623 KB">
<!ENTITY xz-url "https://tukaani.org/xz/xz-&xz-version;.tar.xz">
<!ENTITY xz-md5 "0bc7220eab3cc37018e0f1965b6ce75a">
<!ENTITY xz-md5 "d83d6f64a64f88759e312b8a38c3add6">
<!ENTITY xz-home "https://tukaani.org/xz">
<!ENTITY xz-tmp-du "20 MB">
<!ENTITY xz-tmp-sbu "0.1 SBU">

View File

@ -371,7 +371,7 @@
<systemitem class='library'>libcrypt</systemitem> library
needed by various packages (notably, Shadow) for hashing passwords.
It replaces the obsolete
<systemitem class='library'>libcrypt</systemitem> implmentation in
<systemitem class='library'>libcrypt</systemitem> implementation in
Glibc.</para>
</listitem>

View File

@ -265,6 +265,9 @@ li.chapter h4 a {
margin: .6em 0 .2em 0;
}
span.blue {
color: #2ac;
}
/* Index */
.item {

View File

@ -6,9 +6,3 @@
SUBSYSTEM=="rtc", ACTION=="add", MODE="0644", RUN+="/etc/rc.d/init.d/setclock start"
KERNEL=="rtc", ACTION=="add", MODE="0644", RUN+="/etc/rc.d/init.d/setclock start"
# Comms devices
KERNEL=="ippp[0-9]*", GROUP="dialout"
KERNEL=="isdn[0-9]*", GROUP="dialout"
KERNEL=="isdnctrl[0-9]*", GROUP="dialout"
KERNEL=="dcbri[0-9]*", GROUP="dialout"

View File

@ -7,14 +7,9 @@ Description of rules:
By default, Udev creates device nodes with UID 0, GID 0, and permissions 0660.
ISDN-related devices should be owned by the 'dialout' group, hence the following
rule (and similar):
KERNEL=="ippp[0-9]*", GROUP="dialout"
The RTC-related rules cause the setclock bootscript to be run as soon as the
The RTC-related rule causes the setclock bootscript to be run as soon as the
RTC device has been created by Udev, meaning that times in log files, for
example, are as accurate as possible as quickly as possible.
A final word of caution: Any particular rule must be written on one line, and a
comma must separate each part of the rule.
A word of caution: A comma must separate each part of the rule. A rule can span
multiple lines if the newline is escaped by a backslash.

View File

@ -1,3 +0,0 @@
# /etc/udev/rules.d/81-cdrom.rules: Set CD-ROM permissions and get device capabilities
ACTION=="add", SUBSYSTEM=="block", ENV{ID_TYPE}=="cd", IMPORT{program}="cdrom_id --export $tempnode", GROUP="cdrom"

View File

@ -1,13 +0,0 @@
# /etc/udev/rules.d/83-cdrom-symlinks.rules: Determine CD drive capability.
ACTION!="add", GOTO="cd_aliases_generator_end"
SUBSYSTEM!="block", GOTO="cd_aliases_generator_end"
ENV{GENERATED}=="?*", GOTO="cd_aliases_generator_end"
# Fail the uevent if the autogenerated rules cannot be saved
ENV{ID_CDROM}=="?*", PROGRAM="/bin/grep -c ' / [^[:space:]]* rw' /proc/mounts", \
RESULT!="1", RUN+="/bin/false", GOTO="cd_aliases_generator_end"
ENV{ID_CDROM}=="?*", PROGRAM="write_cd_rules", SYMLINK+="%c"
LABEL="cd_aliases_generator_end"

View File

@ -1,3 +1,7 @@
2023-07-28 <bdubbs@linuxfromscratch.org>
* Remove obsolete 83-cdrom-symlinks.rules and 81-cdrom.rules
* Remove references to obsolete ISDN devices
2017-10-27 <bdubbs@linuxfromscratch.org>
* 83-cdrom-symlinks.rules: Adjust test for writable root directory.

View File

@ -3,7 +3,7 @@
# vim: tabstop=3
VERSION=20171102
VERSION=20230728
SHELL=/bin/bash
ifeq ($(V),)
@ -16,15 +16,14 @@ all:
@echo "Use the install target"
install:
@mkdir -pv $(DESTDIR)/lib/udev/rules.d \
@mkdir -pv $(DESTDIR)/usr/lib/udev/rules.d \
$(DESTDIR)/etc/udev/rules.d \
$(DESTDIR)/usr/share/doc/udev-$(VERSION)/lfs
# Copy rules
@cp -v udev-lfs-$(VERSION)/*.rules $(DESTDIR)/etc/udev/rules.d
@cp -v udev-lfs-$(VERSION)/*_rules \
udev-lfs-$(VERSION)/init-net-rules.sh \
udev-lfs-$(VERSION)/rule_generator.functions $(DESTDIR)/lib/udev
@cp -v udev-lfs-$(VERSION)/init-net-rules.sh \
udev-lfs-$(VERSION)/rule_generator.functions $(DESTDIR)/usr/lib/udev
# Copy documentation
@cp -v udev-lfs-$(VERSION)/README $(DESTDIR)/usr/share/doc/udev-$(VERSION)/lfs

View File

@ -14,9 +14,7 @@ Makefile.lfs - The LFS Makefile. Installs udev rules for LFS.
contrib - Useful rules from debian
contrib/debian
contrib/debian/83-cdrom-symlinks.rules
contrib/debian/write_cd_aliases
contrib/debian/81-cdrom.rules
55-lfs.rules - LFS custom rules
write_net_rules - Scripts for LFS rules