diff options
author | Douglas R. Reno <renodr@linuxfromscratch.org> | 2021-05-11 23:24:11 -0500 |
---|---|---|
committer | Douglas R. Reno <renodr@linuxfromscratch.org> | 2021-05-11 23:24:11 -0500 |
commit | d7a942197e713339d4dc1eedab4dafd4179a5cd8 (patch) | |
tree | 48aba90323070adb9a54e83ce1ebed902d0b19c3 | |
parent | 0f7d4cb8a734227ea85f46c5b934ed1b85a51b3c (diff) |
Merge Xi's changes into trunk
Update to meson-0.58.0
Update to systemd-248
Update to gcc-11.1.0
Update to linux-5.12.1
Update to iproute2-5.12.0
Update to Python-3.9.5
Make /bin, /sbin, and /lib symlinks to their counterparts in /usr.
Thanks again for a significant portion of this work goes to Xi, I only
really merged it and made a couple of modifications for my updates. To
LFS 11.x we go!
59 files changed, 250 insertions, 406 deletions
diff --git a/chapter01/changelog.xml b/chapter01/changelog.xml index 413b55d0d..7c2847310 100644 --- a/chapter01/changelog.xml +++ b/chapter01/changelog.xml @@ -42,6 +42,44 @@ <listitem revision="sysv"> or <listitem revision="systemd"> as appropriate for the entry or if needed the entire day's listitem. --> + <listitem> + <para>2021-05-12</para> + <itemizedlist> + <listitem> + <para>[renodr] - Moved LFS to a merged-/usr configuration. Thanks + goes to Xi Ruoyao for doing almost all of the work. Fixes + <ulink url="&lfs-ticket-root;4848">#4848</ulink>.</para> + </listitem> + <listitem> + <para>[renodr] - Update to gcc-11.1.0. Fixes + <ulink url="&lfs-ticket-root;4847">#4847</ulink>.</para> + </listitem> + <listitem> + <para>[renodr] - Fix a FTBFS when building glibc-2.30 with + gcc-11.1.0.</para> + </listitem> + <listitem revision="systemd"> + <para>[renodr] - Update to systemd-248. Fixes + <ulink url="&lfs-ticket-root;4841">#4841</ulink>.</para> + </listitem> + <listitem> + <para>[renodr] - Update to iproute2-5.12.0. Fixes + <ulink url="&lfs-ticket-root;4852">#4852</ulink>.</para> + </listitem> + <listitem> + <para>[renodr] - Update to Python-3.9.5. Fixes + <ulink url="&lfs-ticket-root;4854">#4854</ulink>.</para> + </listitem> + <listitem> + <para>[renodr] - Update to meson-0.58.0. Fixes + <ulink url="&lfs-ticket-root;4853">#4853</ulink>.</para> + </listitem> + <listitem> + <para>[renodr] - Update to linux-5.12.2. Fixes + <ulink url="&lfs-ticket-root;4840">#4840</ulink>.</para> + </listitem> + </itemizedlist> + </listitem> <listitem> <para>2021-04-28</para> diff --git a/chapter01/whatsnew.xml b/chapter01/whatsnew.xml index 0946a7978..2d54dee9e 100644 --- a/chapter01/whatsnew.xml +++ b/chapter01/whatsnew.xml @@ -96,9 +96,9 @@ <!--<listitem> <para>Gawk-&gawk-version;</para> </listitem>--> - <!--<listitem> + <listitem> <para>GCC-&gcc-version;</para> - </listitem>--> + </listitem> <!--<listitem> <para>GDBM-&gdbm-version;</para> </listitem>--> @@ -228,9 +228,9 @@ <listitem revision="sysv"> <para>Sysklogd-&sysklogd-version;</para> </listitem> - <!--<listitem revision="systemd"> + <listitem revision="systemd"> <para>Systemd-&systemd-version;</para> - </listitem>--> + </listitem> <listitem revision="sysv"> <para>SysVinit-&sysvinit-version;</para> </listitem> diff --git a/chapter02/creatingpartition.xml b/chapter02/creatingpartition.xml index 672c2efb5..efca7ea1c 100644 --- a/chapter02/creatingpartition.xml +++ b/chapter02/creatingpartition.xml @@ -141,10 +141,22 @@ builds. The size is generally fairly large and depends on available disk space.</para></listitem> - <listitem><para>/usr – A separate /usr partition is generally used - if providing a server for a thin client or diskless workstation. It is - normally not needed for LFS. A size of ten gigabytes will handle most - installations.</para></listitem> + <listitem><para>/usr – In LFS, + <filename class="directory">/bin</filename>, + <filename class="directory">/lib</filename>, and + <filename class="directory">/sbin</filename> are symlinks to their + counterpart in <filename class="directory">/usr</filename>. + So <filename class="directory">/usr</filename> contains all binaries + needed for the system to run. For LFS a separate partition for + <filename class="directory">/usr</filename> is normally not needed. + If you need it anyway, you should make a partition large enough to + fit all programs and libraries in the system. The root partition can be + very small (maybe just one gigabyte) in this configuration, so it's + suitable for a thin client or diskless workstation (where + <filename class="directory">/usr</filename> is mounted from a remote + server). However you should take care that an initramfs (not covered by + LFS) will be needed to boot a system with separate + <filename class="directory">/usr</filename> partition.</para></listitem> <listitem><para>/opt – This directory is most useful for BLFS where multiple installations of large packages like Gnome or KDE can diff --git a/chapter02/mounting.xml b/chapter02/mounting.xml index 98a99ed38..45f222485 100644 --- a/chapter02/mounting.xml +++ b/chapter02/mounting.xml @@ -27,12 +27,12 @@ mount -v -t ext4 /dev/<replaceable><xxx></replaceable> $LFS</userinput></s <para>If using multiple partitions for LFS (e.g., one for <filename class="directory">/</filename> and another for <filename - class="directory">/usr</filename>), mount them using:</para> + class="directory">/home</filename>), mount them using:</para> <screen role="nodump"><userinput>mkdir -pv $LFS mount -v -t ext4 /dev/<replaceable><xxx></replaceable> $LFS -mkdir -v $LFS/usr -mount -v -t ext4 /dev/<replaceable><yyy></replaceable> $LFS/usr</userinput></screen> +mkdir -v $LFS/home +mount -v -t ext4 /dev/<replaceable><yyy></replaceable> $LFS/home</userinput></screen> <para>Replace <replaceable><xxx></replaceable> and <replaceable><yyy></replaceable> with the appropriate partition diff --git a/chapter04/addinguser.xml b/chapter04/addinguser.xml index 6a163f46b..59fca9468 100644 --- a/chapter04/addinguser.xml +++ b/chapter04/addinguser.xml @@ -80,7 +80,7 @@ useradd -s /bin/bash -g lfs -m -k /dev/null lfs</userinput></screen> all directories under <filename class="directory">$LFS</filename> by making <systemitem class="username">lfs</systemitem> the directory owner:</para> -<screen><userinput>chown -v lfs $LFS/{usr,lib,var,etc,bin,sbin,tools} +<screen><userinput>chown -v lfs $LFS/{usr{,/*},lib,var,etc,bin,sbin,tools} case $(uname -m) in x86_64) chown -v lfs $LFS/lib64 ;; esac</userinput></screen> diff --git a/chapter04/creatingminlayout.xml b/chapter04/creatingminlayout.xml index 749ce84fa..50c431324 100644 --- a/chapter04/creatingminlayout.xml +++ b/chapter04/creatingminlayout.xml @@ -20,11 +20,25 @@ <para>Create the required directory layout by running the following as <systemitem class="username">root</systemitem>:</para> -<screen><userinput>mkdir -pv $LFS/{bin,etc,lib,sbin,usr,var} +<screen><userinput>mkdir -pv $LFS/{etc,var} $LFS/usr/{bin,lib,sbin} + +for i in bin lib sbin; do + ln -sv usr/$i $LFS/$i +done + case $(uname -m) in x86_64) mkdir -pv $LFS/lib64 ;; esac</userinput></screen> + <note> + <para> + The above command is correct. The <command>ln</command> command has + a few syntactic versions, so be sure to check + <command>info coreutils ln</command> and <filename>ln(1)</filename> + before reporting what you may think is an error. + </para> + </note> + <para>Programs in <xref linkend="chapter-temporary-tools"/> will be compiled with a cross-compiler (more details in section <xref linkend="ch-tools-toolchaintechnotes"/>). In order to separate this diff --git a/chapter05/glibc.xml b/chapter05/glibc.xml index 232a6868b..fdd7ef346 100644 --- a/chapter05/glibc.xml +++ b/chapter05/glibc.xml @@ -55,15 +55,6 @@ ;; esac</userinput></screen> - <note> - <para> - The above command is correct. The <command>ln</command> command has - a few syntactic versions, so be sure to check - <command>info coreutils ln</command> and <filename>ln(1)</filename> - before reporting what you may think is an error. - </para> - </note> - <para>Some of the Glibc programs use the non-FHS compliant <filename class="directory">/var/db</filename> directory to store their runtime data. Apply the following patch to make such programs store their @@ -71,6 +62,10 @@ esac</userinput></screen> <screen><userinput remap="pre">patch -Np1 -i ../glibc-&glibc-version;-fhs-1.patch</userinput></screen> + <para>Fix a build issue with gcc-11.1:</para> + +<screen><userinput remap="pre">sed 's/amx_/amx-/' -i sysdeps/x86/tst-cpu-features-supports.c</userinput></screen> + <para>The Glibc documentation recommends building Glibc in a dedicated build directory:</para> @@ -85,10 +80,7 @@ cd build</userinput></screen> --build=$(../scripts/config.guess) \ --enable-kernel=&min-kernel; \ --with-headers=$LFS/usr/include \ - libc_cv_slibdir=/lib</userinput></screen> -<!-- - libc_cv_forced_unwind=yes \ - libc_cv_c_cleanup=yes</userinput></screen> --> + libc_cv_slibdir=/usr/lib</userinput></screen> <variablelist> <title>The meaning of the configure options:</title> @@ -122,9 +114,9 @@ cd build</userinput></screen> </varlistentry> <varlistentry> - <term><parameter>libc_cv_slibdir=/lib</parameter></term> + <term><parameter>libc_cv_slibdir=/usr/lib</parameter></term> <listitem> - <para>This ensures that the library is installed in /lib instead + <para>This ensures that the library is installed in /usr/lib instead of the default /lib64 on 64 bit machines.</para> </listitem> </varlistentry> diff --git a/chapter06/bash.xml b/chapter06/bash.xml index e07ee308a..d462d2631 100644 --- a/chapter06/bash.xml +++ b/chapter06/bash.xml @@ -74,10 +74,6 @@ <screen><userinput remap="install">make DESTDIR=$LFS install</userinput></screen> - <para>Move the executable to where it is expected:</para> - -<screen><userinput remap="install">mv $LFS/usr/bin/bash $LFS/bin/bash</userinput></screen> - <para>Make a link for the programs that use <command>sh</command> for a shell:</para> diff --git a/chapter06/coreutils.xml b/chapter06/coreutils.xml index fe036755e..af75e60cf 100644 --- a/chapter06/coreutils.xml +++ b/chapter06/coreutils.xml @@ -83,11 +83,7 @@ not necessary in this temporary environment, we must do so because some programs harcode executable locations:</para> -<screen><userinput remap="install">mv -v $LFS/usr/bin/{cat,chgrp,chmod,chown,cp,date,dd,df,echo} $LFS/bin -mv -v $LFS/usr/bin/{false,ln,ls,mkdir,mknod,mv,pwd,rm} $LFS/bin -mv -v $LFS/usr/bin/{rmdir,stty,sync,true,uname} $LFS/bin -mv -v $LFS/usr/bin/{head,nice,sleep,touch} $LFS/bin -mv -v $LFS/usr/bin/chroot $LFS/usr/sbin +<screen><userinput remap="install">mv -v $LFS/usr/bin/chroot $LFS/usr/sbin mkdir -pv $LFS/usr/share/man/man8 mv -v $LFS/usr/share/man/man1/chroot.1 $LFS/usr/share/man/man8/chroot.8 sed -i 's/"1"/"8"/' $LFS/usr/share/man/man8/chroot.8</userinput></screen> diff --git a/chapter06/file.xml b/chapter06/file.xml index b44a639be..dc6024177 100644 --- a/chapter06/file.xml +++ b/chapter06/file.xml @@ -90,12 +90,6 @@ popd</userinput></screen> <screen><userinput remap="install">make DESTDIR=$LFS install</userinput></screen> - <para>Move a shared library into its final location in the LFS system, - and recreate the symlink for it:</para> - -<screen><userinput remap="install">mv -v $LFS/usr/lib/libmagic.so.* $LFS/lib -ln -sfv ../../lib/$(readlink /usr/lib/libmagic.so) $LFS/usr/lib/libmagic.so</userinput></screen> - </sect2> <sect2 role="content"> diff --git a/chapter06/findutils.xml b/chapter06/findutils.xml index ce3bbe00f..ff08a51cd 100644 --- a/chapter06/findutils.xml +++ b/chapter06/findutils.xml @@ -57,11 +57,6 @@ <screen><userinput remap="install">make DESTDIR=$LFS install</userinput></screen> - <para>Move the executable to its final expected location:</para> - -<screen><userinput remap="install">mv -v $LFS/usr/bin/find $LFS/bin -sed -i 's|find:=${BINDIR}|find:=/bin|' $LFS/usr/bin/updatedb</userinput></screen> - </sect2> <sect2 role="content"> diff --git a/chapter06/grep.xml b/chapter06/grep.xml index 494b8616d..1bccd7486 100644 --- a/chapter06/grep.xml +++ b/chapter06/grep.xml @@ -46,8 +46,7 @@ <para>Prepare Grep for compilation:</para> <screen><userinput remap="configure">./configure --prefix=/usr \ - --host=$LFS_TGT \ - --bindir=/bin</userinput></screen> + --host=$LFS_TGT</userinput></screen> <para>Compile the package:</para> diff --git a/chapter06/gzip.xml b/chapter06/gzip.xml index 7ce2a6b1c..d75f26928 100644 --- a/chapter06/gzip.xml +++ b/chapter06/gzip.xml @@ -55,10 +55,6 @@ <screen><userinput remap="install">make DESTDIR=$LFS install</userinput></screen> - <para>Move the executable to its final expected location:</para> - -<screen><userinput remap="install">mv -v $LFS/usr/bin/gzip $LFS/bin</userinput></screen> - </sect2> <sect2 role="content"> diff --git a/chapter06/ncurses.xml b/chapter06/ncurses.xml index 36513603c..79b38e2b4 100644 --- a/chapter06/ncurses.xml +++ b/chapter06/ncurses.xml @@ -148,18 +148,6 @@ echo "INPUT(-lncursesw)" > $LFS/usr/lib/libncurses.so</userinput></screen> </variablelist> - <para>Move the shared libraries to the - <filename class="directory">/lib</filename> directory, where they are - expected to reside:</para> - -<screen><userinput remap="install">mv -v $LFS/usr/lib/libncursesw.so.6* $LFS/lib</userinput></screen> - - <para>Because the libraries have been moved, one symlink points to - a non-existent file. Recreate it:</para> - -<screen><userinput remap="install">ln -sfv ../../lib/$(readlink $LFS/usr/lib/libncursesw.so) $LFS/usr/lib/libncursesw.so</userinput></screen> - - </sect2> <sect2 role="content"> diff --git a/chapter06/sed.xml b/chapter06/sed.xml index d079f836d..b3e39c215 100644 --- a/chapter06/sed.xml +++ b/chapter06/sed.xml @@ -46,8 +46,7 @@ <para>Prepare Sed for compilation:</para> <screen><userinput remap="configure">./configure --prefix=/usr \ - --host=$LFS_TGT \ - --bindir=/bin</userinput></screen> + --host=$LFS_TGT</userinput></screen> <para>Compile the package:</para> diff --git a/chapter06/tar.xml b/chapter06/tar.xml index 8a82cff5c..4e0ae5c44 100644 --- a/chapter06/tar.xml +++ b/chapter06/tar.xml @@ -47,8 +47,7 @@ <screen><userinput remap="configure">./configure --prefix=/usr \ --host=$LFS_TGT \ - --build=$(build-aux/config.guess) \ - --bindir=/bin</userinput></screen> + --build=$(build-aux/config.guess)</userinput></screen> <para>Compile the package:</para> diff --git a/chapter06/xz.xml b/chapter06/xz.xml index f8d397d1b..e277f9517 100644 --- a/chapter06/xz.xml +++ b/chapter06/xz.xml @@ -59,12 +59,6 @@ <screen><userinput remap="install">make DESTDIR=$LFS install</userinput></screen> - <para>Make sure that all essential files are in the correct directory:</para> - -<screen><userinput remap="install">mv -v $LFS/usr/bin/{lzma,unlzma,lzcat,xz,unxz,xzcat} $LFS/bin -mv -v $LFS/usr/lib/liblzma.so.* $LFS/lib -ln -svf ../../lib/$(readlink $LFS/usr/lib/liblzma.so) $LFS/usr/lib/liblzma.so</userinput></screen> - </sect2> <sect2 role="content"> diff --git a/chapter07/chroot.xml b/chapter07/chroot.xml index 7f85a73e8..d018cb218 100644 --- a/chapter07/chroot.xml +++ b/chapter07/chroot.xml @@ -22,7 +22,7 @@ HOME=/root \ TERM="$TERM" \ PS1='(lfs chroot) \u:\w\$ ' \ - PATH=/bin:/usr/bin:/sbin:/usr/sbin \ + PATH=/usr/bin:/usr/sbin \ /bin/bash --login +h</userinput></screen> <para>The <parameter>-i</parameter> option given to the <command>env</command> diff --git a/chapter07/createfiles.xml b/chapter07/createfiles.xml index 8aec64958..1e6b2df9f 100644 --- a/chapter07/createfiles.xml +++ b/chapter07/createfiles.xml @@ -83,6 +83,7 @@ systemd-resolve:x:77:77:systemd Resolver:/:/bin/false systemd-timesync:x:78:78:systemd Time Synchronization:/:/bin/false systemd-coredump:x:79:79:systemd Core Dumper:/:/bin/false uuidd:x:80:80:UUID Generation Daemon User:/dev/null:/bin/false +systemd-oomd:x:81:81:systemd Out Of Memory Daemon:/:/bin/false nobody:x:99:99:Unprivileged User:/dev/null:/bin/false</literal> EOF</userinput></screen> @@ -152,6 +153,7 @@ systemd-resolve:x:77: systemd-timesync:x:78: systemd-coredump:x:79: uuidd:x:80: +systemd-oomd:x:81:81: wheel:x:97: nogroup:x:99: users:x:999:</literal> diff --git a/chapter07/creatingdirs.xml b/chapter07/creatingdirs.xml index 28ef34a3f..a1dafc1ee 100644 --- a/chapter07/creatingdirs.xml +++ b/chapter07/creatingdirs.xml @@ -27,7 +27,8 @@ <screen><userinput>mkdir -pv /etc/{opt,sysconfig} mkdir -pv /lib/firmware mkdir -pv /media/{floppy,cdrom} -mkdir -pv /usr/{,local/}{bin,include,lib,sbin,src} +mkdir -pv /usr/{,local/}{include,src} +mkdir -pv /usr/local/{bin,lib,sbin} mkdir -pv /usr/{,local/}share/{color,dict,doc,info,locale,man} mkdir -pv /usr/{,local/}share/{misc,terminfo,zoneinfo} mkdir -pv /usr/{,local/}share/man/man{1..8} diff --git a/chapter07/util-linux.xml b/chapter07/util-linux.xml index 2c81aaece..8295d0d8e 100644 --- a/chapter07/util-linux.xml +++ b/chapter07/util-linux.xml @@ -52,6 +52,7 @@ <para>Prepare Util-linux for compilation:</para> <screen><userinput remap="configure">./configure ADJTIME_PATH=/var/lib/hwclock/adjtime \ + --libdir=/usr/lib \ --docdir=/usr/share/doc/util-linux-&util-linux-version; \ --disable-chfn-chsh \ --disable-login \ @@ -79,6 +80,16 @@ </varlistentry> <varlistentry> + <term><parameter>--libdir=/usr/lib</parameter></term> + <listitem> + <para>This switch ensures the + <filename class="extension">.so</filename> symlinks targeting + the shared library file in the same directory + (<filename class="directory">/usr/lib</filename>) directly.</para> + </listitem> + </varlistentry> + + <varlistentry> <term><parameter>--disable-*</parameter></term> <listitem> <para>These switches prevent warnings about building components diff --git a/chapter08/acl.xml b/chapter08/acl.xml index a71f964cb..48bf73a75 100644 --- a/chapter08/acl.xml +++ b/chapter08/acl.xml @@ -44,15 +44,8 @@ <para>Prepare Acl for compilation:</para> -<screen revision="sysv"><userinput remap="configure">./configure --prefix=/usr \ - --bindir=/bin \ +<screen><userinput remap="configure">./configure --prefix=/usr \ --disable-static \ - --libexecdir=/usr/lib \ - --docdir=/usr/share/doc/acl-&acl-version;</userinput></screen> - -<screen revision="systemd"><userinput remap="configure">./configure --prefix=/usr \ - --disable-static \ - --libexecdir=/usr/lib \ --docdir=/usr/share/doc/acl-&acl-version;</userinput></screen> <para>Compile the package:</para> @@ -69,14 +62,6 @@ <screen><userinput remap="install">make install</userinput></screen> - <para>The shared library needs to be moved to - <filename class="directory">/lib</filename>, and as a result the - <filename class="extension">.so</filename> file in - <filename class="directory">/usr/lib</filename> will need to be recreated:</para> - -<screen><userinput remap="install">mv -v /usr/lib/libacl.so.* /lib -ln -sfv ../../lib/$(readlink /usr/lib/libacl.so) /usr/lib/libacl.so</userinput></screen> - </sect2> <sect2 id="contents-acl" role="content"> diff --git a/chapter08/adjusting.xml b/chapter08/adjusting.xml index 4bd8a85cc..7d01dcfb6 100644 --- a/chapter08/adjusting.xml +++ b/chapter08/adjusting.xml @@ -102,7 +102,7 @@ SEARCH_DIR("/lib")</computeroutput></screen> <para os="n">The output of the last command should be:</para> -<screen os="o"><computeroutput>attempt to open /lib/libc.so.6 succeeded</computeroutput></screen> +<screen os="o"><computeroutput>attempt to open /usr/lib/libc.so.6 succeeded</computeroutput></screen> <para os="p">Make sure GCC is using the correct dynamic linker:</para> @@ -111,7 +111,7 @@ SEARCH_DIR("/lib")</computeroutput></screen> <para os="r">The output of the last command should be (allowing for platform-specific differences in dynamic linker name):</para> -<screen os="s"><computeroutput>found ld-linux-x86-64.so.2 at /lib/ld-linux-x86-64.so.2</computeroutput></screen> +<screen os="s"><computeroutput>found ld-linux-x86-64.so.2 at /usr/lib/ld-linux-x86-64.so.2</computeroutput></screen> <para os="t">If the output does not appear as shown above or is not received at all, then something is seriously wrong. Investigate and retrace the diff --git a/chapter08/attr.xml b/chapter08/attr.xml index 526852b6d..122781f27 100644 --- a/chapter08/attr.xml +++ b/chapter08/attr.xml @@ -43,13 +43,7 @@ <para>Prepare Attr for compilation:</para> -<screen revision="sysv"><userinput remap="configure">./configure --prefix=/usr \ - --bindir=/bin \ - --disable-static \ - --sysconfdir=/etc \ - --docdir=/usr/share/doc/attr-&attr-version;</userinput></screen> - -<screen revision="systemd"><userinput remap="configure">./configure --prefix=/usr \ +<screen><userinput remap="configure">./configure --prefix=/usr \ --disable-static \ --sysconfdir=/etc \ --docdir=/usr/share/doc/attr-&attr-version;</userinput></screen> @@ -68,14 +62,6 @@ <screen><userinput remap="install">make install</userinput></screen> - <para>The shared library needs to be moved to - <filename class="directory">/lib</filename>, and as a result the - <filename class="extension">.so</filename> file in - <filename class="directory">/usr/lib</filename> will need to be recreated:</para> - -<screen><userinput remap="install">mv -v /usr/lib/libattr.so.* /lib -ln -sfv ../../lib/$(readlink /usr/lib/libattr.so) /usr/lib/libattr.so</userinput></screen> - </sect2> <sect2 id="contents-attr" role="content"> diff --git a/chapter08/bash.xml b/chapter08/bash.xml index 4ab6f7d81..e4960efcc 100644 --- a/chapter08/bash.xml +++ b/chapter08/bash.xml @@ -84,11 +84,9 @@ PATH=$PATH make tests < $(tty) EOF</userinput></screen> - <para>Install the package and move the main executable to - <filename class='directory'>/bin</filename>:</para> + <para>Install the package:</para> -<screen><userinput remap="install">make install -mv -vf /usr/bin/bash /bin</userinput></screen> +<screen><userinput remap="install">make install</userinput></screen> <para>Run the newly compiled <command>bash</command> program (replacing the one that is currently being executed):</para> diff --git a/chapter08/bzip2.xml b/chapter08/bzip2.xml index c842e5cd9..d3b7d42c4 100644 --- a/chapter08/bzip2.xml +++ b/chapter08/bzip2.xml @@ -84,16 +84,14 @@ make clean</userinput></screen> <screen><userinput remap="install">make PREFIX=/usr install</userinput></screen> + <para>Install the shared library:</para> +<screen><userinput remap="install">cp -av libbz2.so.* /usr/lib +ln -sv libbz2.so.&bzip2-version; /usr/lib/libbz2.so</userinput></screen> + <para>Install the shared <command>bzip2</command> binary into the - <filename class="directory">/bin</filename> directory, make - some necessary symbolic links, and clean up:</para> - -<screen><userinput remap="install">cp -v bzip2-shared /bin/bzip2 -cp -av libbz2.so* /lib -ln -sv ../../lib/libbz2.so.1.0 /usr/lib/libbz2.so -rm -v /usr/bin/{bunzip2,bzcat,bzip2} -ln -sv bzip2 /bin/bunzip2 -ln -sv bzip2 /bin/bzcat</userinput></screen> + <filename class="directory">/bin</filename> directory:</para> + +<screen><userinput remap="install">cp -v bzip2-shared /bin/bzip2</userinput></screen> <para>Remove an useless static library:</para> diff --git a/chapter08/coreutils.xml b/chapter08/coreutils.xml index 48572eef0..c5d2a5032 100644 --- a/chapter08/coreutils.xml +++ b/chapter08/coreutils.xml @@ -142,22 +142,10 @@ FORCE_UNSAFE_CONFIGURE=1 ./configure \ <para>Move programs to the locations specified by the FHS:</para> -<screen><userinput remap="install">mv -v /usr/bin/{cat,chgrp,chmod,chown,cp,date,dd,df,echo} /bin -mv -v /usr/bin/{false,ln,ls,mkdir,mknod,mv,pwd,rm} /bin -mv -v /usr/bin/{rmdir,stty,sync,true,uname} /bin -mv -v /usr/bin/chroot /usr/sbin +<screen><userinput remap="install">mv -v /usr/bin/chroot /usr/sbin mv -v /usr/share/man/man1/chroot.1 /usr/share/man/man8/chroot.8 sed -i 's/"1"/"8"/' /usr/share/man/man8/chroot.8</userinput></screen> - <para revision="sysv">Some of the scripts in the LFS-Bootscripts package - depend on <command>head</command>, <command>nice</command>, - <command>sleep</command>, and <command>touch</command>. As <filename - class="directory">/usr</filename> may not be available during the early and - late stages of booting, those binaries need to be on the root partition to - maintain FHS compliance:</para> - -<screen><userinput remap="install">mv -v /usr/bin/{head,nice,sleep,touch} /bin</userinput></screen> - </sect2> <sect2 id="contents-coreutils" role="content"> diff --git a/chapter08/dbus.xml b/chapter08/dbus.xml index 5f51900cc..94d348d2d 100644 --- a/chapter08/dbus.xml +++ b/chapter08/dbus.xml @@ -97,14 +97,6 @@ <screen><userinput remap="install">make install</userinput></screen> - <para>The shared library needs to be moved to - <filename class="directory">/lib</filename>, and as a result the - <filename class="extension">.so</filename> file in - <filename class="directory">/usr/lib</filename> will need to be recreated:</para> - -<screen><userinput remap="install">mv -v /usr/lib/libdbus-1.so.* /lib -ln -sfv ../../lib/$(readlink /usr/lib/libdbus-1.so) /usr/lib/libdbus-1.so</userinput></screen> - <para>Create a symlink so that D-Bus and systemd can use the same <filename>machine-id</filename> file:</para> diff --git a/chapter08/e2fsprogs.xml b/chapter08/e2fsprogs.xml index 40544e782..d7ff53a82 100644 --- a/chapter08/e2fsprogs.xml +++ b/chapter08/e2fsprogs.xml @@ -53,8 +53,6 @@ cd build</userinput></screen> <para>Prepare e2fsprogs for compilation:</para> <screen><userinput remap="configure">../configure --prefix=/usr \ - --bindir=/bin \ - --with-root-prefix="" \ --enable-elf-shlibs \ --disable-libblkid \ --disable-libuuid \ @@ -65,21 +63,6 @@ cd build</userinput></screen> <title>The meaning of the configure options:</title> <varlistentry> - <term><parameter>--with-root-prefix=""</parameter> and - <parameter>--bindir=/bin</parameter></term> - <listitem> - <para>Certain programs (such as the <command>e2fsck</command> - program) are considered essential programs. When, for example, - <filename class="directory">/usr</filename> is not mounted, these - programs still need to be available. They belong in directories - like <filename class="directory">/lib</filename> and <filename - class="directory">/sbin</filename>. If this option is not passed - to configure, the programs are installed into the - <filename class="directory">/usr</filename> directory.</para> - </listitem> - </varlistentry> - - <varlistentry> <term><parameter>--enable-elf-shlibs</parameter></term> <listitem> <para>This creates the shared libraries which some programs diff --git a/chapter08/eudev.xml b/chapter08/eudev.xml index 39c86ef1f..0dee78d68 100644 --- a/chapter08/eudev.xml +++ b/chapter08/eudev.xml @@ -53,13 +53,7 @@ <para>Prepare Eudev for compilation:</para> <screen><userinput remap="configure">./configure --prefix=/usr \ - --bindir=/sbin \ - --sbindir=/sbin \ - --libdir=/usr/lib \ --sysconfdir=/etc \ - --libexecdir=/lib \ - --with-rootprefix= \ - --with-rootlibdir=/lib \ --enable-manpages \ --disable-static</userinput></screen> @@ -70,7 +64,7 @@ <para>Create some directories now that are needed for tests, but will also be used as a part of installation:</para> -<screen><userinput remap="test">mkdir -pv /lib/udev/rules.d +<screen><userinput remap="test">mkdir -pv /usr/lib/udev/rules.d mkdir -pv /etc/udev/rules.d</userinput></screen> <para>To test the results, issue:</para> @@ -103,7 +97,7 @@ make -f &udev-lfs-version;/Makefile.lfs install</userinput></screen> <para>Information about hardware devices is maintained in the <filename class="directory">/etc/udev/hwdb.d</filename> and - <filename class="directory">/lib/udev/hwdb.d</filename> directories. + <filename class="directory">/usr/lib/udev/hwdb.d</filename> directories. <application>Eudev</application> needs that information to be compiled into a binary database <filename>/etc/udev/hwdb.bin</filename>. Create the initial database:</para> @@ -124,13 +118,13 @@ make -f &udev-lfs-version;/Makefile.lfs install</userinput></screen> <segtitle>Installed directories</segtitle> <seglistitem> - <seg><!-- These are in /lib/udev and not to be called by the user: + <seg><!-- These are in /usr/lib/udev and not to be called by the user: accelerometer, ata_id, cdrom_id, collect, mtd_probe, scsi_id, v4l_id,--> udevadm and udevd</seg> <seg>libudev.so</seg> - <seg>/etc/udev, /lib/udev, and /usr/share/doc/udev-&udev-lfs-version;</seg> + <seg>/etc/udev, /usr/lib/udev, and /usr/share/doc/udev-&udev-lfs-version;</seg> </seglistitem> </segmentedlist> diff --git a/chapter08/file.xml b/chapter08/file.xml index 326f99eeb..eb9f41a2b 100644 --- a/chapter08/file.xml +++ b/chapter08/file.xml @@ -57,16 +57,6 @@ <screen><userinput remap="install">make install</userinput></screen> - <para><command>/bin/more</command> from util-linux will link to - <filename class="libraryfile">libmagic.so</filename>, so the shared - library should be moved to <filename class="directory">/lib</filename>, - and as a result the - <filename class="extension">.so</filename> file in - <filename class="directory">/usr/lib</filename> will need to be recreated:</para> - -<screen><userinput remap="install">mv -v /usr/lib/libmagic.so.* /lib -ln -sfv ../../lib/$(readlink /usr/lib/libmagic.so) /usr/lib/libmagic.so</userinput></screen> - </sect2> diff --git a/chapter08/findutils.xml b/chapter08/findutils.xml index f55e5cbb1..092be0c96 100644 --- a/chapter08/findutils.xml +++ b/chapter08/findutils.xml @@ -74,20 +74,6 @@ su tester -c "PATH=$PATH make check"</userinput></screen> <screen><userinput remap="install">make install</userinput></screen> - <para revision="sysv">Some of the scripts in the LFS-Bootscripts package - depend on <command>find</command>. As <filename - class="directory">/usr</filename> may not be available during the early - stages of booting, this program needs to be on the root partition. The - <command>updatedb</command> script also needs to be modified to correct an - explicit path:</para> - - <para revision="systemd"> Some packages in BLFS and beyond expect the - <command>find</command> program in <filename - class="directory">/bin</filename>, so make sure it's placed there:</para> - -<screen><userinput remap="install">mv -v /usr/bin/find /bin -sed -i 's|find:=${BINDIR}|find:=/bin|' /usr/bin/updatedb</userinput></screen> - </sect2> <sect2 id="contents-findutils" role="content"> diff --git a/chapter08/gcc.xml b/chapter08/gcc.xml index 5090029a5..6b5163fce 100644 --- a/chapter08/gcc.xml +++ b/chapter08/gcc.xml @@ -124,9 +124,12 @@ su tester -c "PATH=$PATH make -k check"</userinput></screen> <para>Six tests related to get_time are known to fail. These are apparently related to the en_HK locale.</para> - <para>Additionally the following tests related to the following files + <para>Additionally, the test constexpr-52830 is known to fail.</para> + +<!--<para>Additionally the following tests related to the following files are known to fail with glibc-2.33: asan_test.C, co-ret-17-void-ret-coro.C, pr95519-05-gro.C, pr80166.c.</para> +--> <!-- don't fail anymore after the move of iana-etc and /etc/hosts <para>Two tests named lookup.cc and reverse.cc in experimental/net @@ -164,7 +167,7 @@ rm -rf /usr/lib/gcc/$(gcc -dumpmachine)/&gcc-version;/include-fixed/bits/</useri url="https://refspecs.linuxfoundation.org/FHS_3.0/fhs/ch03s09.html">FHS</ulink> for "historical" reasons.</para> -<screen><userinput remap="install">ln -sv ../usr/bin/cpp /lib</userinput></screen> +<screen><userinput remap="install">ln -svr /usr/bin/cpp /lib</userinput></screen> <!-- already done earlier <para>Many packages use the name <command>cc</command> to call the C compiler. To satisfy those packages, create a symlink:</para> diff --git a/chapter08/glibc.xml b/chapter08/glibc.xml index 7fc661dc2..3b51906b5 100644 --- a/chapter08/glibc.xml +++ b/chapter08/glibc.xml @@ -55,6 +55,10 @@ <screen><userinput remap="pre">sed -e '402a\ *result = local->data.services[database_index];' \ -i nss/nss_database.c</userinput></screen> + <para>Fix a build issue with gcc-11.1:</para> + +<screen><userinput remap="pre">sed 's/amx_/amx-/' -i sysdeps/x86/tst-cpu-features-supports.c</userinput></screen> + <para>The Glibc documentation recommends building Glibc in a dedicated build directory:</para> @@ -68,7 +72,7 @@ cd build</userinput></screen> --enable-kernel=&min-kernel; \ --enable-stack-protector=strong \ --with-headers=/usr/include \ - libc_cv_slibdir=/lib</userinput></screen> + libc_cv_slibdir=/usr/lib</userinput></screen> <variablelist> <title>The meaning of the configure options:</title> @@ -109,7 +113,7 @@ cd build</userinput></screen> </varlistentry> <varlistentry> - <term><parameter>libc_cv_slibdir=/lib</parameter></term> + <term><parameter>libc_cv_slibdir=/usr/lib</parameter></term> <listitem> <para>This variable sets the correct library for all systems. We do not want lib64 to be used.</para> @@ -221,7 +225,7 @@ mkdir -pv /var/cache/nscd</userinput></screen> <command>nscd</command>:</para> <screen revision="systemd"><userinput remap="install">install -v -Dm644 ../nscd/nscd.tmpfiles /usr/lib/tmpfiles.d/nscd.conf -install -v -Dm644 ../nscd/nscd.service /lib/systemd/system/nscd.service</userinput></screen> +install -v -Dm644 ../nscd/nscd.service /usr/lib/systemd/system/nscd.service</userinput></screen> <para>Next, install the locales that can make the system respond in a different language. None of the locales are required, but if some of them diff --git a/chapter08/grep.xml b/chapter08/grep.xml index ef6357281..d06a1ba85 100644 --- a/chapter08/grep.xml +++ b/chapter08/grep.xml @@ -42,7 +42,7 @@ <para>Prepare Grep for compilation:</para> -<screen><userinput remap="configure">./configure --prefix=/usr --bindir=/bin</userinput></screen> +<screen><userinput remap="configure">./configure --prefix=/usr</userinput></screen> <para>Compile the package:</para> diff --git a/chapter08/gzip.xml b/chapter08/gzip.xml index 5040f2e0b..afbfa36a0 100644 --- a/chapter08/gzip.xml +++ b/chapter08/gzip.xml @@ -57,10 +57,6 @@ <screen><userinput remap="install">make install</userinput></screen> - <para>Move a program that needs to be on the root filesystem:</para> - -<screen><userinput remap="install">mv -v /usr/bin/gzip /bin</userinput></screen> - </sect2> <sect2 id="contents-gzip" role="content"> diff --git a/chapter08/inetutils.xml b/chapter08/inetutils.xml index bbdc54955..b79a0b782 100644 --- a/chapter08/inetutils.xml +++ b/chapter08/inetutils.xml @@ -114,11 +114,9 @@ <screen><userinput remap="install">make install</userinput></screen> - <para>Move some programs so they are available if <filename - class='directory'>/usr</filename> is not accessible:</para> + <para>Move a program to the proper location:</para> -<screen><userinput remap="install">mv -v /usr/bin/{hostname,ping,ping6,traceroute} /bin -mv -v /usr/bin/ifconfig /sbin</userinput></screen> +<screen><userinput remap="install">mv -v /{,s}bin/ifconfig</userinput></screen> </sect2> diff --git a/chapter08/kmod.xml b/chapter08/kmod.xml index 58c9ba995..4f454ff69 100644 --- a/chapter08/kmod.xml +++ b/chapter08/kmod.xml @@ -44,9 +44,7 @@ <para>Prepare Kmod for compilation:</para> <screen><userinput remap="configure">./configure --prefix=/usr \ - --bindir=/bin \ --sysconfdir=/etc \ - --with-rootlibdir=/lib \ --with-xz \ --with-zstd \ --with-zlib</userinput></screen> @@ -61,14 +59,6 @@ </listitem> </varlistentry> - <varlistentry> - <term><parameter>--with-rootlibdir=/lib</parameter></term> - <listitem> - <para>This option ensures different library related files are placed - in the correct directories.</para> - </listitem> - </varlistentry> - </variablelist> <para>Compile the package:</para> diff --git a/chapter08/libcap.xml b/chapter08/libcap.xml index f3b6c0074..d8fc15175 100644 --- a/chapter08/libcap.xml +++ b/chapter08/libcap.xml @@ -69,15 +69,13 @@ <screen><userinput remap="test">make test</userinput></screen> - <para>Install the package and make sure the essential libraries are in - the correct directory:</para> - -<screen><userinput remap="install">make prefix=/usr lib=lib install -for libname in cap psx; do - mv -v /usr/lib/lib${libname}.so.* /lib - ln -sfv ../../lib/lib${libname}.so.2 /usr/lib/lib${libname}.so - chmod -v 755 /lib/lib${libname}.so.&libcap-version; -done</userinput></screen> + <para>Install the package:</para> + +<screen><userinput remap="install">make prefix=/usr lib=lib install</userinput></screen> + + <para>Adjust the permission of the shared libraries:</para> + +<screen><userinput remap="install">chmod -v 755 /usr/lib/lib{cap,psx}.so.&libcap-version;</userinput></screen> </sect2> diff --git a/chapter08/libelf.xml b/chapter08/libelf.xml index 41e1ae476..3465531a1 100644 --- a/chapter08/libelf.xml +++ b/chapter08/libelf.xml @@ -48,8 +48,7 @@ <screen><userinput remap="configure">./configure --prefix=/usr \ --disable-debuginfod \ - --enable-libdebuginfod=dummy \ - --libdir=/lib</userinput></screen> + --enable-libdebuginfod=dummy</userinput></screen> <para>Compile the package:</para> @@ -65,7 +64,7 @@ <screen><userinput remap="install">make -C libelf install install -vm644 config/libelf.pc /usr/lib/pkgconfig -rm /lib/libelf.a</userinput></screen> +rm /usr/lib/libelf.a</userinput></screen> </sect2> diff --git a/chapter08/man-db.xml b/chapter08/man-db.xml index 45b1f4fa2..8afadffaf 100644 --- a/chapter08/man-db.xml +++ b/chapter08/man-db.xml @@ -43,9 +43,7 @@ <para>Prepare Man-DB for compilation:</para> -<screen revision="systemd"><userinput remap="configure">sed -i '/find/s@/usr@@' init/systemd/man-db.service.in - -./configure --prefix=/usr \ +<screen revision="systemd"><userinput remap="configure">./configure --prefix=/usr \ --docdir=/usr/share/doc/man-db-&man-db-version; \ --sysconfdir=/etc \ --disable-setuid \ @@ -68,15 +66,6 @@ <variablelist> <title>The meaning of the configure options:</title> - <varlistentry revision="systemd"> - <term><command>sed -i '/find/s@/usr@@' init/systemd/man-db.service.in</command></term> - <listitem> - <para>This changes a harcoded path to the <command>find</command> - utility, which we install in - <filename class="directory">/bin</filename>.</para> - </listitem> - </varlistentry> - <varlistentry> <term><parameter>--disable-setuid</parameter></term> <listitem> diff --git a/chapter08/ncurses.xml b/chapter08/ncurses.xml index 53527003d..3fbca0c3c 100644 --- a/chapter08/ncurses.xml +++ b/chapter08/ncurses.xml @@ -100,17 +100,6 @@ <screen><userinput remap="install">make install</userinput></screen> - <para>Move the shared libraries to the - <filename class="directory">/lib</filename> directory, where they are - expected to reside:</para> - -<screen><userinput remap="install">mv -v /usr/lib/libncursesw.so.6* /lib</userinput></screen> - - <para>Because the libraries have been moved, one symlink points to - a non-existent file. Recreate it:</para> - -<screen><userinput remap="install">ln -sfv ../../lib/$(readlink /usr/lib/libncursesw.so) /usr/lib/libncursesw.so</userinput></screen> - <para>Many applications still expect the linker to be able to find non-wide-character Ncurses libraries. Trick such applications into linking with wide-character libraries by means of symlinks and linker scripts:</para> diff --git a/chapter08/procps.xml b/chapter08/procps.xml index b026d0538..8d49b60b4 100644 --- a/chapter08/procps.xml +++ b/chapter08/procps.xml @@ -51,15 +51,11 @@ <para>Prepare procps-ng for compilation:</para> <screen revision="sysv"><userinput remap="configure">./configure --prefix=/usr \ - --exec-prefix= \ - --libdir=/usr/lib \ --docdir=/usr/share/doc/procps-ng-&procps-ng-version; \ --disable-static \ --disable-kill</userinput></screen> <screen revision="systemd"><userinput remap="configure">./configure --prefix=/usr \ - --exec-prefix= \ - --libdir=/usr/lib \ --docdir=/usr/share/doc/procps-ng-&procps-ng-version; \ --disable-static \ --disable-kill \ @@ -102,12 +98,6 @@ make check</userinput></screen> <screen><userinput remap="install">make install</userinput></screen> - <para>Finally, move essential libraries to a location that can be found - if <filename class="directory">/usr</filename> is not mounted.</para> - -<screen><userinput remap="install">mv -v /usr/lib/libprocps.so.* /lib -ln -sfv ../../lib/$(readlink /usr/lib/libprocps.so) /usr/lib/libprocps.so</userinput></screen> - </sect2> <sect2 id="contents-procps" role="content"> diff --git a/chapter08/psmisc.xml b/chapter08/psmisc.xml index febf90748..6a826202d 100644 --- a/chapter08/psmisc.xml +++ b/chapter08/psmisc.xml @@ -55,12 +55,6 @@ <screen><userinput remap="install">make install</userinput></screen> - <para>Finally, move the <command>killall</command> and <command>fuser</command> - programs to the location specified by the FHS:</para> - -<screen><userinput remap="install">mv -v /usr/bin/fuser /bin -mv -v /usr/bin/killall /bin</userinput></screen> - </sect2> <sect2 id="contents-psmisc" role="content"> diff --git a/chapter08/readline.xml b/chapter08/readline.xml index cd105c164..72608ac94 100644 --- a/chapter08/readline.xml +++ b/chapter08/readline.xml @@ -94,13 +94,6 @@ sed -i '/{OLDSUFF}/c:' support/shlib-install</userinput></screen> <screen><userinput remap="install">make SHLIB_LIBS="-lncursesw" install</userinput></screen> - <para>Now move the dynamic libraries to a more appropriate location - and fix up symbolic links:</para> - -<screen><userinput remap="install">mv -v /usr/lib/lib{readline,history}.so.* /lib -ln -sfv ../../lib/$(readlink /usr/lib/libreadline.so) /usr/lib/libreadline.so -ln -sfv ../../lib/$(readlink /usr/lib/libhistory.so ) /usr/lib/libhistory.so</userinput></screen> - <para>If desired, install the documentation:</para> <screen><userinput remap="install">install -v -m644 doc/*.{ps,pdf,html,dvi} /usr/share/doc/readline-&readline-version;</userinput></screen> diff --git a/chapter08/revisedchroot.xml b/chapter08/revisedchroot.xml index 3a2defb07..3627cd603 100644 --- a/chapter08/revisedchroot.xml +++ b/chapter08/revisedchroot.xml @@ -23,7 +23,7 @@ chroot "$LFS" /usr/bin/env -i \ HOME=/root TERM="$TERM" \ PS1='(lfs chroot) \u:\w\$ ' \ - PATH=/bin:/usr/bin:/sbin:/usr/sbin \ + PATH=/usr/bin:/usr/sbin \ /bin/bash --login</userinput></screen> <para>Here the <parameter>+h</parameter> option is not used anymore, since diff --git a/chapter08/sed.xml b/chapter08/sed.xml index 77d30479b..629b83465 100644 --- a/chapter08/sed.xml +++ b/chapter08/sed.xml @@ -42,7 +42,7 @@ <para>Prepare Sed for compilation:</para> -<screen><userinput remap="configure">./configure --prefix=/usr --bindir=/bin</userinput></screen> +<screen><userinput remap="configure">./configure --prefix=/usr</userinput></screen> <para>Compile the package and generate the HTML documentation:</para> diff --git a/chapter08/shadow.xml b/chapter08/shadow.xml index 3ccbfbb58..3471b347b 100644 --- a/chapter08/shadow.xml +++ b/chapter08/shadow.xml @@ -65,10 +65,23 @@ find man -name Makefile.in -exec sed -i 's/passwd\.5 / /' {} \;</userinput></s allows passwords longer than 8 characters. It is also necessary to change the obsolete <filename class="directory">/var/spool/mail</filename> location for user mailboxes that Shadow uses by default to the <filename - class="directory">/var/mail</filename> location used currently:</para> + class="directory">/var/mail</filename> location used currently. And, + get rid of <filename class="directory">/bin</filename> and + <filename class="directory">/sbin</filename> from <envar>PATH</envar>, + since they are simply symlinks to their counterpart in + <filename class="directory">/usr</filename>.</para> + + <note> + <para>If <filename class="directory">/bin</filename> and/or + <filename class="directory">/sbin</filename> are prefereed to be + left over in <envar>PATH</envar> for some reason, modify + <envar>PATH</envar> in <filename>.bashrc</filename> after LFS is + built.</para> + </note> <screen><userinput remap="pre">sed -e 's:#ENCRYPT_METHOD DES:ENCRYPT_METHOD SHA512:' \ -e 's:/var/spool/mail:/var/mail:' \ + -e '/PATH=/{s@/sbin:@@;s@/bin:@@}' \ -i etc/login.defs</userinput></screen> <note> @@ -118,17 +131,6 @@ find man -name Makefile.in -exec sed -i 's/passwd\.5 / /' {} \;</userinput></s <para>Install the package:</para> <screen><userinput remap="install">make install</userinput></screen> - <!-- - <para>Move a misplaced program to its proper location:</para> - -<screen><userinput remap="install">mv -v /usr/bin/passwd /bin</userinput></screen> - --> - - <!-- <para>Move Shadow's libraries to more appropriate locations:</para> - -<screen><userinput remap="install">mv -v /lib/libshadow.*a /usr/lib -rm -v /lib/libshadow.so -ln -sfv ../../lib/libshadow.so.0 /usr/lib/libshadow.so</userinput></screen> --> </sect2> diff --git a/chapter08/strippingagain.xml b/chapter08/strippingagain.xml index 891d2e000..8f5743b51 100644 --- a/chapter08/strippingagain.xml +++ b/chapter08/strippingagain.xml @@ -33,17 +33,8 @@ <!-- also of interest are libgfortan, libgo, libgomp, and libobjc from GCC --> <!--<screen><userinput>save_lib="ld-2.25.so libc-2.25.so libpthread-2.25.so libthread_db-1.0.so"--> -<screen><userinput>save_lib="ld-&glibc-version;.so libc-&glibc-version;.so libpthread-&glibc-version;.so libthread_db-&libthread_db-version;.so" - -cd /lib - -for LIB in $save_lib; do - objcopy --only-keep-debug $LIB $LIB.dbg - strip --strip-unneeded $LIB - objcopy --add-gnu-debuglink=$LIB.dbg $LIB -done - -save_usrlib="libquadmath.so.&libquadmath-version; libstdc++.so.&libstdcpp-version; +<screen><userinput>save_usrlib="ld-&glibc-version;.so libc-&glibc-version;.so libpthread-&glibc-version;.so libthread_db-&libthread_db-version;.so + libquadmath.so.&libquadmath-version; libstdc++.so.&libstdcpp-version; libitm.so.&libitm-version; libatomic.so.&libatomic-version;" <!-- libcilkrts.so.&libcilkrts-version;--> cd /usr/lib @@ -54,7 +45,7 @@ for LIB in $save_usrlib; do objcopy --add-gnu-debuglink=$LIB.dbg $LIB done -unset LIB save_lib save_usrlib</userinput></screen> +unset LIB save_usrlib</userinput></screen> <!-- <para>Before performing the stripping, take special care to ensure that none of the binaries that are about to be stripped are running:</para> @@ -67,10 +58,10 @@ unset LIB save_lib save_usrlib</userinput></screen> <screen><userinput>find /usr/lib -type f -name \*.a \ -exec strip --strip-debug {} ';' -find /lib /usr/lib -type f -name \*.so* ! -name \*dbg \ +find /usr/lib -type f -name \*.so* ! -name \*dbg \ -exec strip --strip-unneeded {} ';' -find /{bin,sbin} /usr/{bin,sbin,libexec} -type f \ +find /usr/{bin,sbin,libexec} -type f \ -exec strip --strip-all {} ';'</userinput></screen> <para>A large number of files will be reported as having their file diff --git a/chapter08/systemd.xml b/chapter08/systemd.xml index d5a9f6bd1..c5df6bf78 100644 --- a/chapter08/systemd.xml +++ b/chapter08/systemd.xml @@ -47,14 +47,13 @@ --> <!-- For linux-5.11's API headers changing the rfkill_event structure --> - <para>First, apply a patch to fix some regressions and fix functionality - with future versions of the kernel:</para> + <para>First, apply a patch to fix some build issues:</para> -<screen><userinput remap="pre">patch -Np1 -i ../systemd-&systemd-version;-upstream_fixes-3.patch</userinput></screen> +<screen><userinput remap="pre">patch -Np1 -i ../systemd-&systemd-version;-upstream_fixes-1.patch</userinput></screen> <para>Remove tests that cannot be built in chroot:</para> -<screen><userinput remap="pre">sed '181,$ d' -i src/resolve/meson.build</userinput></screen> +<screen><userinput remap="pre">sed '177,$ d' -i src/resolve/meson.build</userinput></screen> <para>Remove an unneeded group, <systemitem class="groupname">render</systemitem>, from the default udev @@ -76,15 +75,8 @@ meson --prefix=/usr \ -Ddefault-dnssec=no \ -Dfirstboot=false \ -Dinstall-tests=false \ - -Dkmod-path=/bin/kmod \ -Dldconfig=false \ - -Dmount-path=/bin/mount \ - -Drootprefix= \ - -Drootlibdir=/lib \ - -Dsplit-usr=true \ - -Dsulogin-path=/sbin/sulogin \ -Dsysusers=false \ - -Dumount-path=/bin/umount \ -Db_lto=false \ -Drpmmacrosdir=no \ -Dhomed=false \ @@ -98,14 +90,6 @@ meson --prefix=/usr \ <title>The meaning of the meson options:</title> <varlistentry> - <term><parameter>-D*-path=*</parameter></term> - <listitem> - <para>These switches provide the location of binaries needed by - systemd at runtime that have not yet been installed.</para> - </listitem> - </varlistentry> - - <varlistentry> <term><parameter>-Ddefault-dnssec=no</parameter></term> <listitem> <para>This switch turns off the experimental DNSSEC support.</para> @@ -140,24 +124,6 @@ meson --prefix=/usr \ </varlistentry> <varlistentry> - <term><parameter>-Droot*</parameter></term> - <listitem> - <para>These switches ensure that core programs and - shared libraries are installed in subdirectories - of the root partition.</para> - </listitem> - </varlistentry> - - <varlistentry> - <term><parameter>-Dsplit-usr=true</parameter></term> - <listitem> - <para>This switch ensures that systemd will work on - systems where /bin, /lib and /sbin directories are not - symlinks to their /usr counterparts.</para> - </listitem> - </varlistentry> - - <varlistentry> <term><parameter>-Dsysusers=false</parameter></term> <listitem> <para>This switch prevents installation of systemd @@ -257,26 +223,27 @@ meson --prefix=/usr \ <seglistitem> <seg>bootctl, busctl, coredumpctl, halt (symlink to systemctl), hostnamectl, init, journalctl, kernel-install, localectl, loginctl, - machinectl, networkctl, portablectl, poweroff (symlink to + machinectl, 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-analyze, systemd-ask-password, systemd-cat, systemd-cgls, systemd-cgtop, - systemd-delta, systemd-detect-virt, systemd-dissect, systemd-escape, - systemd-hwdb, systemd-id128, systemd-inhibit, systemd-machine-id-setup, + systemd-cryptenroll, 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, systemd-repart, systemd-resolve (symlink to resolvectl), systemd-run, - systemd-socket-activate, systemd-stdio-bridge, systemd-tmpfiles, - systemd-tty-ask-password-agent, systemd-umount (symlink to - systemd-mount), telinit (symlink to systemctl), timedatectl, and - udevadm</seg> + systemd-socket-activate, systemd-stdio-bridge, systemd-sysext, + systemd-tmpfiles, systemd-tty-ask-password-agent, + systemd-umount (symlink to systemd-mount), + telinit (symlink to systemctl), timedatectl, and udevadm</seg> <seg>libnss_myhostname.so.2, libnss_mymachines.so.2, libnss_resolve.so.2, libnss_systemd.so.2, - libsystemd.so, libsystemd-shared-&systemd-version;.so (in /lib/systemd), + libsystemd.so, libsystemd-shared-&systemd-version;.so (in /usr/lib/systemd), and libudev.so</seg> <seg>/etc/binfmt.d, /etc/init.d, /etc/kernel, /etc/modules-load.d, /etc/sysctl.d, /etc/systemd, /etc/tmpfiles.d, /etc/udev, - /etc/xdg/systemd, /lib/systemd, /lib/udev, /usr/include/systemd, + /etc/xdg/systemd, /usr/lib/systemd, /usr/lib/udev, /usr/include/systemd, /usr/lib/binfmt.d, /usr/lib/environment.d, /usr/lib/kernel, /usr/lib/modules-load.d, /usr/lib/sysctl.d, /usr/lib/systemd, /usr/lib/tmpfiles.d, @@ -423,6 +390,16 @@ meson --prefix=/usr \ </listitem> </varlistentry> + <varlistentry id="oomctl"> + <term><command>oomctl</command></term> + <listitem> + <para>Controls the systemd Out Of Memory daemon</para> + <indexterm zone="ch-system-systemd oomctl"> + <primary sortas="b-oomctl">oomctl</primary> + </indexterm> + </listitem> + </varlistentry> + <varlistentry id="portablectl"> <term><command>portablectl</command></term> <listitem> @@ -568,6 +545,17 @@ meson --prefix=/usr \ </listitem> </varlistentry> + <varlistentry id="systemd-cryptenroll"> + <term><command>systemd-cryptenroll</command></term> + <listitem> + <para>Is used to enroll or remove a system from full disk encryption, + as well as set and query private keys and recovery keys</para> + <indexterm zone="ch-system-systemd systemd-cryptenroll"> + <primary sortas="b-systemd-cryptenroll">systemd-cryptenroll</primary> + </indexterm> + </listitem> + </varlistentry> + <varlistentry id="systemd-delta"> <term><command>systemd-delta</command></term> <listitem> @@ -743,6 +731,17 @@ meson --prefix=/usr \ </listitem> </varlistentry> + <varlistentry id="systemd-sysext"> + <term><command>systemd-sysext</command></term> + <listitem> + <para>Creates, deletes, and manages system extensions through the + systemd-sysextd daemon</para> + <indexterm zone="ch-system-systemd systemd-sysext"> + <primary sortas="b-systemd-sysext">systemd-sysext</primary> + </indexterm> + </listitem> + </varlistentry> + <varlistentry id="systemd-tmpfiles"> <term><command>systemd-tmpfiles</command></term> <listitem> diff --git a/chapter08/tar.xml b/chapter08/tar.xml index 6f37ce888..e638221c6 100644 --- a/chapter08/tar.xml +++ b/chapter08/tar.xml @@ -46,8 +46,7 @@ <para>Prepare Tar for compilation:</para> <screen><userinput remap="configure">FORCE_UNSAFE_CONFIGURE=1 \ -./configure --prefix=/usr \ - --bindir=/bin</userinput></screen> +./configure --prefix=/usr</userinput></screen> <variablelist> <title>The meaning of the configure option:</title> diff --git a/chapter08/util-linux.xml b/chapter08/util-linux.xml index a7d3d61f4..310705c1a 100644 --- a/chapter08/util-linux.xml +++ b/chapter08/util-linux.xml @@ -45,6 +45,7 @@ <para>Prepare Util-linux for compilation:</para> <screen revision="sysv"><userinput remap="configure">./configure ADJTIME_PATH=/var/lib/hwclock/adjtime \ + --libdir=/usr/lib \ --docdir=/usr/share/doc/util-linux-&util-linux-version; \ --disable-chfn-chsh \ --disable-login \ @@ -60,6 +61,7 @@ runstatedir=/run</userinput></screen> <screen revision="systemd"><userinput remap="configure">./configure ADJTIME_PATH=/var/lib/hwclock/adjtime \ + --libdir=/usr/lib \ --docdir=/usr/share/doc/util-linux-&util-linux-version; \ --disable-chfn-chsh \ --disable-login \ diff --git a/chapter08/xz.xml b/chapter08/xz.xml index b8a9f9206..7f723482a 100644 --- a/chapter08/xz.xml +++ b/chapter08/xz.xml @@ -58,13 +58,9 @@ <screen><userinput remap="test">make check</userinput></screen> - <para>Install the package and make sure that all essential files are in the - correct directory:</para> + <para>Install the package:</para> -<screen><userinput remap="install">make install -mv -v /usr/bin/{lzma,unlzma,lzcat,xz,unxz,xzcat} /bin -mv -v /usr/lib/liblzma.so.* /lib -ln -svf ../../lib/$(readlink /usr/lib/liblzma.so) /usr/lib/liblzma.so</userinput></screen> +<screen><userinput remap="install">make install</userinput></screen> </sect2> diff --git a/chapter08/zlib.xml b/chapter08/zlib.xml index f00988468..86b9ad16e 100644 --- a/chapter08/zlib.xml +++ b/chapter08/zlib.xml @@ -57,14 +57,6 @@ <screen><userinput remap="install">make install</userinput></screen> - <para>The shared library needs to be moved to - <filename class="directory">/lib</filename>, and as a result the - <filename class="extension">.so</filename> file in - <filename class="directory">/usr/lib</filename> will need to be recreated:</para> - -<screen><userinput remap="install">mv -v /usr/lib/libz.so.* /lib -ln -sfv ../../lib/$(readlink /usr/lib/libz.so) /usr/lib/libz.so</userinput></screen> - <para>Remove an useless static library:</para> <screen><userinput remap="install">rm -fv /usr/lib/libz.a</userinput></screen> diff --git a/chapter08/zstd.xml b/chapter08/zstd.xml index 0ec1a3c1b..8edf9ebad 100644 --- a/chapter08/zstd.xml +++ b/chapter08/zstd.xml @@ -54,14 +54,8 @@ <screen><userinput remap="install">make prefix=/usr install</userinput></screen> - <para>Remove the static library and move the shared library to - <filename class="directory">/lib</filename>. Also, the - <filename class="extension">.so</filename> file in - <filename class="directory">/usr/lib</filename> will need to be recreated:</para> - -<screen><userinput remap="install">rm -v /usr/lib/libzstd.a -mv -v /usr/lib/libzstd.so.* /lib -ln -sfv ../../lib/$(readlink /usr/lib/libzstd.so) /usr/lib/libzstd.so</userinput></screen> + <para>Remove the static library:</para> +<screen><userinput remap="install">rm -v /usr/lib/libzstd.a</userinput></screen> </sect2> diff --git a/chapter09/symlinks.xml b/chapter09/symlinks.xml index 3b46a67b0..c4ddd4eaf 100644 --- a/chapter09/symlinks.xml +++ b/chapter09/symlinks.xml @@ -48,7 +48,7 @@ rules. A script has been included that generates the initial rules. Generate these rules by running:</para> -<screen role="install"><userinput>bash /lib/udev/init-net-rules.sh</userinput></screen> +<screen role="install"><userinput>bash /usr/lib/udev/init-net-rules.sh</userinput></screen> <para> Now, inspect the <filename>/etc/udev/rules.d/70-persistent-net.rules</filename> file, to diff --git a/chapter09/udev.xml b/chapter09/udev.xml index a3a7c0cf9..20b311284 100644 --- a/chapter09/udev.xml +++ b/chapter09/udev.xml @@ -108,7 +108,7 @@ <para>A short time later, the kernel will send a uevent to <command> udevd</command>. Based on the rules specified in the files within the <filename class="directory">/etc/udev/rules.d</filename>, <filename - class="directory">/lib/udev/rules.d</filename>, and <filename + class="directory">/usr/lib/udev/rules.d</filename>, and <filename class="directory">/run/udev/rules.d</filename> directories, <command> udevd</command> will create additional symlinks to the device node, or change its permissions, owner, or group, or modify the internal @@ -285,7 +285,7 @@ driver does not export its data to <systemitem class="filesystem">sysfs</systemitem>. This is most common with third party drivers from outside the kernel tree. Create a static - device node in <filename>/lib/udev/devices</filename> with the + device node in <filename>/usr/lib/udev/devices</filename> with the appropriate major/minor numbers (see the file <filename>devices.txt</filename> inside the kernel documentation or the documentation provided by the third party driver vendor). The static diff --git a/packages.ent b/packages.ent index 10275e794..82044207b 100644 --- a/packages.ent +++ b/packages.ent @@ -217,10 +217,10 @@ <!ENTITY gawk-fin-du "45 MB"> <!ENTITY gawk-fin-sbu "0.4 SBU"> -<!ENTITY gcc-version "10.2.0"> -<!ENTITY gcc-size "73,247 KB"> +<!ENTITY gcc-version "11.1.0"> +<!ENTITY gcc-size "77,032 KB"> <!ENTITY gcc-url "&gnu;gcc/gcc-&gcc-version;/gcc-&gcc-version;.tar.xz"> -<!ENTITY gcc-md5 "e9fd9b1789155ad09bcf3ae747596b50"> +<!ENTITY gcc-md5 "77f6252be0861ab918042acf42bc10ff"> <!ENTITY gcc-home "https://gcc.gnu.org/"> <!ENTITY gcc-tmpp1-du "3.7 GB"> <!ENTITY gcc-tmpp1-sbu "11 SBU"> @@ -344,10 +344,10 @@ <!ENTITY intltool-fin-du "1.5 MB"> <!ENTITY intltool-fin-sbu "less than 0.1 SBU"> -<!ENTITY iproute2-version "5.11.0"> -<!ENTITY iproute2-size "803 KB"> +<!ENTITY iproute2-version "5.12.0"> +<!ENTITY iproute2-size "820 KB"> <!ENTITY iproute2-url "&kernel;linux/utils/net/iproute2/iproute2-&iproute2-version;.tar.xz"> -<!ENTITY iproute2-md5 "a3c6b09590c0bd120f0ab0b6e36187a8"> +<!ENTITY iproute2-md5 "bbebacdabd4628ff86453ef4771a242a"> <!ENTITY iproute2-home "&kernel;linux/utils/net/iproute2/"> <!ENTITY iproute2-fin-du "15 MB"> <!ENTITY iproute2-fin-sbu "0.2 SBU"> @@ -417,13 +417,13 @@ <!ENTITY libtool-fin-sbu "1.6 SBU"> <!ENTITY linux-major-version "5"> -<!ENTITY linux-minor-version "11"> -<!ENTITY linux-patch-version "16"> +<!ENTITY linux-minor-version "12"> +<!ENTITY linux-patch-version "2"> <!--<!ENTITY linux-version "&linux-major-version;.&linux-minor-version;">--> <!ENTITY linux-version "&linux-major-version;.&linux-minor-version;.&linux-patch-version;"> -<!ENTITY linux-size "114,893 KB"> +<!ENTITY linux-size "115,344 KB"> <!ENTITY linux-url "&kernel;linux/kernel/v&linux-major-version;.x/linux-&linux-version;.tar.xz"> -<!ENTITY linux-md5 "c7536df1e1e3d03621092d732c8a5b6e"> +<!ENTITY linux-md5 "1119082b017840a4d57e1a51c4bfc07b"> <!ENTITY linux-home "https://www.kernel.org/"> <!-- measured for 5.8.3 / gcc-10.2.0 on x86_64 : minimum is allnoconfig extended for a hopefully-bootable build on desktop machine, @@ -473,10 +473,10 @@ <!ENTITY man-pages-fin-du "4.7 MB"> <!ENTITY man-pages-fin-sbu "less than 0.1 SBU"> -<!ENTITY meson-version "0.57.2"> -<!ENTITY meson-size "1,811 KB"> +<!ENTITY meson-version "0.58.0"> +<!ENTITY meson-size "1,844 KB"> <!ENTITY meson-url "&github;/mesonbuild/meson/releases/download/&meson-version;/meson-&meson-version;.tar.gz"> -<!ENTITY meson-md5 "4a07b6d42d7a46a6b6e9604fae7da9aa"> +<!ENTITY meson-md5 "18ac55e3d6a5acb17b5737eb2a15bb5b"> <!ENTITY meson-home "https://mesonbuild.com"> <!ENTITY meson-fin-du "37 MB"> <!ENTITY meson-fin-sbu "less than 0.1 SBU"> @@ -574,19 +574,19 @@ <!-- If python minor version changes, updates in python and meson pages will be needed: python3.6 and python3.6m --> -<!ENTITY python-version "3.9.4"> +<!ENTITY python-version "3.9.5"> <!ENTITY python-minor "3.9"> -<!ENTITY python-size "18,458 KB"> +<!ENTITY python-size "18,612 KB"> <!ENTITY python-url "https://www.python.org/ftp/python/&python-version;/Python-&python-version;.tar.xz"> -<!ENTITY python-md5 "2a3dba5fc75b695c45cf1806156e1a97"> +<!ENTITY python-md5 "71f7ada6bec9cdbf4538adc326120cfd"> <!ENTITY python-home "https://www.python.org/"> <!ENTITY python-tmp-du "374 MB"> <!ENTITY python-tmp-sbu "0.9 SBU"> <!ENTITY python-fin-du "294 MB"> <!ENTITY python-fin-sbu "2.8 SBU"> <!ENTITY python-docs-url "https://www.python.org/ftp/python/doc/&python-version;/python-&python-version;-docs-html.tar.bz2"> -<!ENTITY python-docs-md5 "a225c583da4533c5bf98ba3555f50c7b"> -<!ENTITY python-docs-size "6,672 KB"> +<!ENTITY python-docs-md5 "c594916b00cbb9796fa001dd2764ab0f"> +<!ENTITY python-docs-size "6,680 KB"> <!ENTITY readline-version "8.1"> <!ENTITY readline-size "2,924 KB"> @@ -622,20 +622,20 @@ <!ENTITY sysklogd-fin-du "0.6 MB"> <!ENTITY sysklogd-fin-sbu "less than 0.1 SBU"> -<!ENTITY systemd-version "247"> +<!ENTITY systemd-version "248"> <!--<!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 "9,656 KB"> +<!ENTITY systemd-size "10,068 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 "b0d6e603b814908acc69db29bbfb023c"> +<!ENTITY systemd-md5 "00131adf0e98c1fd8a7fde4eb47f10c8"> <!ENTITY systemd-home "https://www.freedesktop.org/wiki/Software/systemd/"> -<!ENTITY systemd-man-version "247-2"> -<!ENTITY systemd-man-size "612 KB"> +<!ENTITY systemd-man-version "248"> +<!ENTITY systemd-man-size "584 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 "7d8a53105b7a205f2863e360d9a23f95"> +<!ENTITY systemd-man-md5 "82cc641742df67128df8b6a55fbcbabc"> <!ENTITY systemd-fin-du "264 MB"> <!ENTITY systemd-fin-sbu "1.8 SBU"> diff --git a/patches.ent b/patches.ent index 62a45216d..48c6184eb 100644 --- a/patches.ent +++ b/patches.ent @@ -67,6 +67,6 @@ <!ENTITY sysvinit-consolidated-patch-md5 "4900322141d493e74020c9cf437b2cdc"> <!ENTITY sysvinit-consolidated-patch-size "2.4 KB"> -<!ENTITY systemd-upstream-fixes-patch "systemd-&systemd-version;-upstream_fixes-3.patch"> -<!ENTITY systemd-upstream-fixes-patch-md5 "949768da539ddfa2bf6e936b81ed96df"> -<!ENTITY systemd-upstream-fixes-patch-size "16 KB"> +<!ENTITY systemd-upstream-fixes-patch "systemd-&systemd-version;-upstream_fixes-1.patch"> +<!ENTITY systemd-upstream-fixes-patch-md5 "6819d49562ac48b551d15d2dd0123055"> +<!ENTITY systemd-upstream-fixes-patch-size "8 KB"> |