Opened 11 years ago
Last modified 9 years ago
#1003 closed task
Systemd 229 Version Upgrade — at Version 38
| Reported by: | William Harrington | Owned by: | |
|---|---|---|---|
| Priority: | critical | Milestone: | CLFS Standard 3.1.0 |
| Component: | BOOK | Version: | CLFS Standard GIT |
| Keywords: | Cc: | berzerkula@…, jonathan@…, chris@… |
Description (last modified by )
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 , 11 years ago
| Description: | modified (diff) |
|---|---|
| Summary: | Systemd 216 Version Upgrade → Systemd 217 Version Upgrade |
comment:4 by , 11 years ago
| Priority: | major → critical |
|---|
comment:5 by , 11 years ago
comment:6 by , 11 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 , 11 years ago
| Description: | modified (diff) |
|---|---|
| Summary: | Systemd 217 Version Upgrade → Systemd 218 Version Upgrade |
comment:10 by , 11 years ago
| Summary: | Systemd 218 Version Upgrade → Systemd 219 Version Upgrade |
|---|
comment:12 by , 10 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 , 10 years ago
| Summary: | Systemd 219 Version Upgrade → Systemd 221 Version Upgrade |
|---|
comment:16 by , 10 years ago
| Description: | modified (diff) |
|---|---|
| Summary: | Systemd 221 Version Upgrade → Systemd 224 Version Upgrade |
comment:17 by , 10 years ago
| Description: | modified (diff) |
|---|
comment:18 by , 10 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 , 10 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 , 10 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 , 10 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 , 10 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 , 10 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:24 by , 10 years ago
http://lists.freedesktop.org/archives/systemd-devel/2015-August/034019.html
Systemd 225 has been released. Bug fixes and resolved reworks.
comment:25 by , 10 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.
comment:26 by , 10 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 , 10 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 , 10 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 , 10 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 , 10 years ago
Okay, I have rolled my own tarball and will upload it to the clfs server this evening.
comment:31 by , 10 years ago
| Summary: | Systemd 224 Version Upgrade → Systemd 226 Version Upgrade |
|---|
comment:32 by , 10 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
follow-up: 36 comment:33 by , 10 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
comment:34 by , 10 years ago
| Summary: | Systemd 226 Version Upgrade → Systemd 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:
comment:35 by , 10 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)
comment:36 by , 10 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 /etcIt 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 , 10 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 , 10 years ago
| Description: | modified (diff) |
|---|---|
| Summary: | Systemd 227 Version Upgrade → Systemd 229 Version Upgrade |

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: