Opened 10 years ago

Last modified 8 years ago

#1003 closed task

Systemd 229 Version Upgrade — at Version 38

Reported by: William Harrington Owned by: clfs-commits@…
Priority: critical Milestone: CLFS Standard 3.1.0
Component: BOOK Version: CLFS Standard GIT
Keywords: Cc: berzerkula@…, jonathan@…, chris@…

Description (last modified by William Harrington)

New version

Download and Patch: http://www.linuxfromscratch.org/~krejzi/systemd/systemd-229.tar.xz

http://www.linuxfromscratch.org/~krejzi/systemd/systemd-229-compat-1.patch

I suggest we conform our user ids and group ids to LFS since a lot of people use BLFS rather than our ancient CBLFS.

This is what I have been using for my current builds:

cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/dev/null:/bin/false
daemon:x:6:6:Daemon User:/dev/null:/bin/false
messagebus:x:18:18:D-Bus Message Daemon User:/var/run/dbus:/bin/false
systemd-bus-proxy:x:72:72:systemd Bus Proxy:/:/bin/false
systemd-journal-gateway:x:73:73:systemd Journal Gateway:/:/bin/false
systemd-journal-remote:x:74:74:systemd Journal Remote:/:/bin/false
systemd-journal-upload:x:75:75:systemd Journal Upload:/:/bin/false
systemd-network:x:76:76:systemd Network Management:/:/bin/false
systemd-resolve:x:77:77:systemd Resolver:/:/bin/false
systemd-timesync:x:78:78:systemd Time Synchronization:/:/bin/false
nobody:x:65534:65533:Unprivileged User:/dev/null:/bin/false

cat /etc/group
root:x:0:
bin:x:1:daemon
sys:x:2:
kmem:x:3:
tape:x:4:
tty:x:5:
daemon:x:6:
floppy:x:7:
disk:x:8:
lp:x:9:
dialout:x:10:
audio:x:11:
video:x:12:
utmp:x:13:
usb:x:14:
cdrom:x:15:
adm:x:16:
messagebus:x:18:
systemd-journal:x:23:
input:x:24:
mail:x:34:
wheel:x:39:
systemd-bus-proxy:x:72:
systemd-journal-gateway:x:73:
systemd-journal-remote:x:74:
systemd-journal-upload:x:75:
systemd-network:x:76:
systemd-resolve:x:77:
systemd-timesync:x:78:
nogroup:x:65533:
users:x:1000:

Don't need users. Was just checking out what LFS has been doing.

Change History (32)

comment:1 by William Harrington, 10 years ago

Description: modified (diff)
Summary: Systemd 216 Version UpgradeSystemd 217 Version Upgrade

comment:4 by William Harrington, 10 years ago

Priority: majorcritical

comment:5 by Martin Ward, 10 years ago

these are the ones i have added to users

systemd-timesync:x:41:41:systemd-timesync:/dev/null:/bin/false

systemd-network:x:42:42:systemd-network:/dev/null:/bin/false

systemd-resolve:x:43:43:systemd-resolve:/dev/null:/bin/false

systemd-bus-proxy:x:44:44:systemd-bus-proxy:/dev/null:/bin/false

systemd-journal-gateway:x:45:45:systemd-journal-gateway:/dev/null:/bin/false

systemd-journal-remote:x:46:46:systemd-journal-remote:/:/bin/false

systemd-journal-upload:x:47:47:systemd-journal-upload:/:/bin/false

and groups

input:x:19: needed by eudev and systemd

systemd-journal:x:40:

systemd-timesync:x:41:

systemd-network:x:42:

systemd-resolve:x:43:

systemd-bus-proxy:x:44:

systemd-journal-gateway:x:45:

systemd-journal-remote:x:46:

systemd-journal-upload:x:47:

comment:6 by William Harrington, 10 years ago

So we will need to upgrade the kernel version requirement only for the SYSTEMD book.

We will also need to fix Minimum Supported Kernel Upgrade for Systemd when upgrading and closing this ticket as fixed.

comment:9 by William Harrington, 10 years ago

Description: modified (diff)
Summary: Systemd 217 Version UpgradeSystemd 218 Version Upgrade

comment:10 by William Harrington, 10 years ago

Summary: Systemd 218 Version UpgradeSystemd 219 Version Upgrade

comment:12 by chris@…, 9 years ago

Systemd 219 doesn't need the --with-dbus* switches anymore, since it now sets dbus directories to reasonable default locations rather than trying to use pkg-config to locate them. Also, --enable-split-usr isn't needed since it's assumed by default when prefix != rootprefix.

comment:13 by William Harrington, 9 years ago

Summary: Systemd 219 Version UpgradeSystemd 221 Version Upgrade

comment:16 by William Harrington, 9 years ago

Description: modified (diff)
Summary: Systemd 221 Version UpgradeSystemd 224 Version Upgrade

comment:17 by William Harrington, 9 years ago

Description: modified (diff)

comment:18 by William Harrington, 9 years ago

Along with the switches Chris mentioned:

--with-dbus*
--enable-split-usr

Add:

--disable-firstboot
--disable-ldconfig
--disable-sysusers
--without-python

--without-python

This switch prevents configure from trying to use Python which isn't built in LFS.

--disable-firstboot

This switch prevents installation of systemd services responsible for setting up the system for the first time. They are not useful for LFS because everything is done manually.

--disable-ldconfig (could let the user decide that)

This switch prevents installation of a systemd unit that runs ldconfig at boot, making the boot time longer. Remove it if the described feature is desired, even though it's not useful for source distributions such as LFS.

--disable-sysusers

This switch prevents installation of systemd services responsible for setting up the /etc/group and /etc/passwd files. Both files were created early in this chapter.

comment:19 by William Harrington, 9 years ago

Gudev has been removed from the systemd tree and is now at https://git.gnome.org/browse/libgudev/

No longer need:

--disable-gudev

comment:20 by William Harrington, 9 years ago

So with removing the dbus* options we have the following for pure64:

        prefix:                  /usr
        rootprefix:              
        sysconf dir:             /etc
        datarootdir:             ${prefix}/share
        includedir:              ${prefix}/include
        lib dir:                 ${exec_prefix}/lib
        rootlib dir:             /lib
        SysV init scripts:       /etc/init.d
        SysV rc?.d directories:  /etc/rc.d
        Build Python:            
        sphinx binary:           
        PAM modules dir:         /lib/security
        PAM configuration dir:   /etc/pam.d
        D-Bus policy dir:        /etc/dbus-1/system.d
        D-Bus session dir:       ${datarootdir}/dbus-1/services
        D-Bus system dir:        ${datarootdir}/dbus-1/system-services
        Bash completions dir:    ${datarootdir}/bash-completion/completions
        Zsh completions dir:     ${datarootdir}/zsh/site-functions

comment:21 by William Harrington, 9 years ago

We can remove:

sed -i '/virt-install-hook /d' Makefile.in

sed -i '/timesyncd.conf/d' src/timesync/timesyncd.conf.in (man page exists now)

sed -i '/-l/d' src/fsck/fsck.c  (fixed a long time ago)

cc_cv_CFLAGS__flto=no   (not needed during configure)

Adjust the next command to move more libraries:

mv -v /usr/lib/libnss_myhostname.so.2 /lib

to

mv -v /usr/lib/libnss_{myhostname,mymachines,resolve}.so.2 /lib

comment:22 by William Harrington, 9 years ago

Check logs before install:

Testsuite summary for systemd 224
============================================================================
# TOTAL: 111
# PASS:  84
# SKIP:  19
# XFAIL: 0
# FAIL:  8
# XPASS: 0
# ERROR: 0
============================================================================

Check logs after install:

Testsuite summary for systemd 224
============================================================================
# TOTAL: 111
# PASS:  94
# SKIP:  15
# XFAIL: 0
# FAIL:  2
# XPASS: 0
# ERROR: 0
============================================================================

2 FAILED:

FAIL: test-bus-creds FAIL: test/udev-test.pl

FAIL: test-bus-creds ====================

Assertion 'r >= 0' failed at src/libsystemd/sd-bus/test-bus-creds.c:31, function main(). Aborting. FAIL test-bus-creds (exit status: 134)

test/ude-test.pl fails because /usr/lib/udev/rules.d doesn't exist

comment:23 by chris@…, 9 years ago

With version 224, systemd-python has been split to a separate package, so systemd itself no longer uses python (configure still checks for it, but even if found, it's not used during make or make install). Therefore, --without-python is not needed.

comment:25 by William Harrington, 9 years ago

Systemd 226 is released. Going to test that now.

Used the debian system to run autogen.sh and prepare for build. Didn't find a source tarball already ready generated.

http://clfs.org/~kb0iic/patches/systemd-226-config-1.patch

Last edited 9 years ago by William Harrington (previous) (diff)

by William Harrington, 9 years ago

Attachment: systemd-226-compat-1.patch added

Compat patch for Systemd 226

comment:26 by William Harrington, 9 years ago

Following configure command and results:

./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \
            --with-rootprefix= --with-rootlibdir=/lib --enable-split-usr \
            --disable-firstboot --disable-ldconfig --disable-sysusers \
            --without-python --docdir=/usr/share/doc/systemd-226

Results:

        systemd 226

        libcryptsetup:           no
        PAM:                     no
        AUDIT:                   no
        IMA:                     yes
        AppArmor:                no
        SELinux:                 no
        SECCOMP:                 no
        SMACK:                   yes
        ZLIB:                    yes
        XZ:                      yes
        LZ4:                     no
        BZIP2:                   yes
        ACL:                     yes
        GCRYPT:                  no
        QRENCODE:                no
        MICROHTTPD:              no
        GNUTLS:                  no
        libcurl:                 no
        libidn:                  no
        libiptc:                 no
        ELFUTILS:                no
        binfmt:                  yes
        vconsole:                yes
        bootchart:               yes
        quotacheck:              yes
        tmpfiles:                yes
        sysusers:                no
        firstboot:               no
        randomseed:              yes
        backlight:               yes
        rfkill:                  yes
        logind:                  yes
        machined:                yes
        importd:                 yes
        hostnamed:               yes
        timedated:               yes
        timesyncd:               yes
        default NTP servers:     time1.google.com time2.google.com time3.google.com time4.google.com
        time epoch:              1441713802
        localed:                 yes
        networkd:                yes
        resolved:                yes
        default DNS servers:     8.8.8.8 8.8.4.4 2001:4860:4860::8888 2001:4860:4860::8844
        coredump:                yes
        polkit:                  yes
        efi:                     yes
        gnuefi:                  no
        efi arch:                x86_64
        EFI machine type:        x64
        EFI CC                   gcc
        EFI libdir:              /usr/lib
        EFI ldsdir:              /usr/lib
        EFI includedir:          /usr/include
        kmod:                    yes
        xkbcommon:               no
        blkid:                   yes
        libmount:                yes
        dbus:                    no
        nss-myhostname:          yes
        hwdb:                    yes
        kdbus:                   yes
        Python:                  no
        man pages:               yes
        test coverage:           no
        Split /usr:              yes
        SysV compatibility:      yes
        compatibility libraries: no
        utmp/wtmp support:       yes
        ldconfig support:        no
        hibernate support:       yes
        extra debugging:         none

        prefix:                  /usr
        rootprefix:              
        sysconf dir:             /etc
        datarootdir:             ${prefix}/share
        includedir:              ${prefix}/include
        lib dir:                 ${exec_prefix}/lib
        rootlib dir:             /lib
        SysV init scripts:       /etc/init.d
        SysV rc?.d directories:  /etc/rc.d
        Build Python:            
        PAM modules dir:         /lib/security
        PAM configuration dir:   /etc/pam.d
        D-Bus policy dir:        /etc/dbus-1/system.d
        D-Bus session dir:       ${datarootdir}/dbus-1/services
        D-Bus system dir:        ${datarootdir}/dbus-1/system-services
        Bash completions dir:    ${datarootdir}/bash-completion/completions
        Zsh completions dir:     ${datarootdir}/zsh/site-functions
        Extra start script:      /etc/rc.local
        Extra stop script:       /usr/sbin/halt.local
        Debug shell:             /bin/sh @ /dev/tty9
        TTY GID:                 5
        Maximum System UID:      999
        Maximum System GID:      999
        Certificate root:        /etc/ssl
        Default dkr Index        NULL

        CFLAGS:                   -pipe -Wall -Wextra -Wundef -Wformat=2 -Wformat-security -Wformat-nonliteral -Wlogical-op -Wmissing-include-dirs -Wold-style-definition -Wpointer-arith -Winit-self -Wdeclaration-after-statement -Wfloat-equal -Wsuggest-attribute=noreturn -Werror=missing-prototypes -Werror=implicit-function-declaration -Werror=missing-declarations -Werror=return-type -Werror=shadow -Wstrict-prototypes -Wredundant-decls -Wmissing-noreturn -Wshadow -Wendif-labels -Wstrict-aliasing=2 -Wwrite-strings -Wno-unused-parameter -Wno-missing-field-initializers -Wno-unused-result -Wno-format-signedness -Werror=overflow -Wdate-time -Wnested-externs -ffast-math -fno-common -fdiagnostics-show-option -fno-strict-aliasing -fvisibility=hidden -fstack-protector -fstack-protector-strong -fPIE --param=ssp-buffer-size=4 -flto -ffunction-sections -fdata-sections   -g -O2
        CPPFLAGS:                 -Wp,-D_FORTIFY_SOURCE=2   
        LDFLAGS:                  -Wl,--gc-sections -Wl,--as-needed -Wl,--no-undefined -Wl,-z,relro -Wl,-z,now -pie -Wl,-fuse-ld=gold

Gold exists as my test build has the gold linker available.

comment:27 by William Harrington, 9 years ago

I give up on trying to build a source archive for systemd 226 which can be built with our CLFS build. I wish the devs would release a build ready for build with configure. Apparently they only release via github and need to use autogen.sh. Always a mismiatch of automake versions and Po issues. Anyone have ideas on how to distribute a usable systemd tarball of use with LFS/CLFS?

comment:28 by Martin Ward, 9 years ago

Does not running ./autogen.sh c, then make distcheck work ? (full environment) To get the prebuilt docs/man pages you would have to build them first and then probably do some hacking on the make files to get them installed.

comment:29 by William Harrington, 9 years ago

We have to roll our own tarballs. Armin has a patch to help out for creating a distributable tarball. I haven't tried it, but it is located at http://www.linuxfromscratch.org/~krejzi/systemd-make-dist.patch

comment:30 by William Harrington, 9 years ago

Okay, I have rolled my own tarball and will upload it to the clfs server this evening.

comment:31 by William Harrington, 9 years ago

Summary: Systemd 224 Version UpgradeSystemd 226 Version Upgrade

comment:32 by William Harrington, 9 years ago

I've put the tarball into ftp conglomeration. Please test the tarball and make sure all is fine. I've only tested with x86_64 pure64bit build via the boot method.

http://ftp.clfs.org/pub/clfs/conglomeration/systemd/systemd-226.tar.xz

comment:33 by William Harrington, 9 years ago

Adding the following group to /etc/group file when upgrading Systemd. No longer needed in the systemd-networkd section. Add this when creating /etc/group and /etc/passwd.

12.5.2. Using Timesyncd

groupadd -g 41 systemd-timesync
useradd -g systemd-timesync -u 41 -d /dev/null -s /bin/false systemd-timesync

Systmed-networkd is enabled by default. No longer need the following

systemctl enable systemd-timesyncd

Systemd-resolved deals with network name resolution. The link for resolv.conf needs to be changed:

ln -sfv /run/systemd/resolve/resolv.conf /etc

It is no longer /run/systemd/network/resolv.conf

Last edited 9 years ago by William Harrington (previous) (diff)

comment:34 by William Harrington, 9 years ago

Summary: Systemd 226 Version UpgradeSystemd 227 Version Upgrade

Moving to Systemd 227:

Announcement http://lists.freedesktop.org/archives/systemd-devel/2015-October/034509.html

Our book will be at Util-linux-2.27 once I get past this mulitlib build.

Files we need are at:

https://www.linuxfromscratch.org/~krejzi/systemd/

comment:35 by William Harrington, 9 years ago

Multilib 32bit

CC="gcc ${BUILD32}" PKG_CONFIG_PATH="${PKG_CONFIG_PATH32}" ./configure \
    --prefix=/usr --sysconfdir=/etc --localstatedir=/var --libexecdir=/usr/lib \
    --with-rootprefix= --with-rootlibdir=/lib --enable-split-usr --disable-firstboot \
    --disable-ldconfig --disable-sysusers --without-python \
    --docdir=/usr/share/doc/systemd-227 --with-kbd-loadkeys=/bin/loadkeys \
    --with-kbd-setfont=/bin/setfont cc_cv_CFLAGS__flto=no &&
make &&
make install-libLTLIBRARIES &&
make install-pkgconfiglibDATA &&
mv -v /usr/lib/libnss_{my{hostname,machines},resolve}.so.2 /lib

Multilib 64bit

CC="gcc ${BUILD64}" PKG_CONFIG_PATH="${PKG_CONFIG_PATH64}" ./configure \
    --prefix=/usr --sysconfdir=/etc --localstatedir=/var --libdir=/usr/lib64 \
    --libexecdir=/usr/lib64 --with-rootprefix= --with-rootlibdir=/lib64 \
    --enable-split-usr --disable-firstboot --disable-ldconfig --disable-sysusers \
    --without-python --docdir=/usr/share/doc/systemd-227 \
    --with-kbd-loadkeys=/bin/loadkeys --with-kbd-setfont=/bin/setfont \
    cc_cv_CFLAGS__flto=no &&
make &&
make check &&
make install

Testsuite FAILS:

===================================
   systemd 227: ./test-suite.log
===================================

# TOTAL: 113
# PASS:  86
# SKIP:  19
# XFAIL: 0
# FAIL:  8
# XPASS: 0
# ERROR: 0

FAIL: test-strv
FAIL test-strv (exit status: 134)
FAIL: test-condition
FAIL test-condition (exit status: 134)
FAIL: test-execute
FAIL test-execute (exit status: 134)
FAIL: test-copy
FAIL test-copy (exit status: 134)
FAIL: test-dhcp-client
FAIL test-dhcp-client (exit status: 134)
FAIL: test-dhcp6-client
FAIL test-dhcp6-client (exit status: 134)
FAIL: test-journal-flush
FAIL test-journal-flush (exit status: 134)
FAIL: test/udev-test.pl
FAIL test/udev-test.pl (exit status: 1)

in reply to:  33 comment:36 by chris@…, 9 years ago

Replying to kb0iic:

Systemd-resolved deals with network name resolution. The link for resolv.conf needs to be changed:

ln -sfv /run/systemd/resolve/resolv.conf /etc

It is no longer /run/systemd/network/resolv.conf

That link is automatically created on boot by one of systemd's installed "tmpfiles.d" conf files, so there's no need to create it manually.

comment:37 by chris@…, 9 years ago

Summing up installation commands for systemd 228 (on non-multilib):

patch -Np1 -i ../systemd-228-compat-1.patch
./configure \
    --prefix=/usr \
    --sysconfdir=/etc \
    --localstatedir=/var \
    --docdir=/usr/share/doc/systemd-228 \
    --with-rootprefix="" \
    --with-rootlibdir=/lib \
    --disable-firstboot \
    --disable-ldconfig \
    --disable-sysusers \
    --with-kbd-loadkeys=/bin/loadkeys \
    --with-kbd-setfont=/bin/setfont
make
make check
make install
install -v -m644 man/*.html /usr/share/doc/systemd-228
mv -v /usr/lib/libnss_{myhostname,mymachines,resolve}.so.2 /lib
rm -rfv /usr/lib/rpm
for tool in runlevel reboot shutdown poweroff halt telinit; do
  ln -sfv ../bin/systemctl /sbin/$tool
done
ln -sfv ../lib/systemd/systemd /sbin/init
systemd-machine-id-setup

Use the /etc/passwd and /etc/group mentioned in the first comment.

The only change I made for going from 228 to 229 was the addition of a group and user called "systemd-coredump".

comment:38 by William Harrington, 9 years ago

Description: modified (diff)
Summary: Systemd 227 Version UpgradeSystemd 229 Version Upgrade
Note: See TracTickets for help on using tickets.