Systemd
Introduction to systemd
Even though systemd was built in
LFS, there are some features provided by the package that some BLFS
packages need, but their dependencies didn't fit into LFS.
There are two reasons why systemd
needs to be rebuilt. Some packages require GUdev library to be
present in order to compile while others expect working
systemd-logind
service in order to work properly. To build the GUdev library, make
sure that you have installed first set of required dependencies. In
order to get systemd-logind to work properly,
make sure that you have installed second set of required
dependencies.
Unlike other packages in BLFS, there is no set version of
systemd in this page's title and
no set version specified for download. Version updates to
systemd make it possible that the
user's system may have a systemd
version different from the one in the current LFS book. Therefore,
users should use the version of systemd that is currently installed on their
system.
This package is known to build and work properly using an LFS-7.6
systemd platform using systemd-216 source.
Package Information
Make sure you download the "compat" patch whose version matches the
systemd version you are building.
Note
If you are unsure which version needs to be downloaded, issue
systemctl --version
in order to find out. Some of the commands below might need the
version information. Issue the following command to store the
systemd version number into an
environment variable:
export SYSTEMD_VERSION=$(systemctl --version | head -n1 | awk '{print $2}')
systemd Dependencies
Required (GUdev)
GLib-2.40.0 and gobject-introspection-1.40.0
Required (Logind)
Linux-PAM-1.1.8
Recommended Runtime Dependency
Polkit-0.112
Optional
cURL-7.37.1, elfutils-0.160, GnuTLS-3.3.7,
GTK-Doc-1.20, libgcrypt-1.6.2,
libidn-1.29, Python-3.4.1, Valgrind-3.10.0,
cryptsetup, libmicrohttpd,
libqrencode, libseccomp,
lxml (Python Module),
and lz4
Note
In order to build the systemd
Python module, lxml package
needs to be installed for the corresponding Python version (2 or 3). Note that
configure defaults
to Python 2. In order to build
the module for Python 3, make
sure you pass the PYTHON=python3
environment variable to the configure command below.
Optional (for rebuilding manual pages)
libxslt-1.1.28, docbook-xml-4.5,
and docbook-xsl-1.78.1
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/systemd
Installation of systemd
First, apply the required patch:
patch -Np1 -i ../systemd-${SYSTEMD_VERSION}-compat-1.patch
Rebuild systemd by running the
following commands:
cc_cv_CFLAGS__flto=no \
./configure --prefix=/usr \
--sysconfdir=/etc \
--localstatedir=/var \
--with-rootprefix= \
--with-rootlibdir=/lib \
--enable-split-usr \
--disable-firstboot \
--disable-ldconfig \
--disable-sysusers \
--docdir=/usr/share/doc/systemd-${SYSTEMD_VERSION} &&
make
Note
For the best results, make sure you run the testsuite from a
system that is booted by the same systemd version you are rebuilding.
To test the results, issue: make -k
check.
Warning
Installing the package will override all files installed by
systemd in LFS. It is critical
that nothing uses either systemd
or Udev libraries or programs
during the installation phrase. Best way to achieve that is to do
the installation in the rescue mode. To switch to the rescue
mode, issue the following command as the root
user from a TTY:
systemctl start rescue.target
Now, as the root
user:
make install
Move NSS libraries to /lib
by running
the following command as the root
user:
mv -v /usr/lib/libnss_{myhostname,mymachines,resolve}.so.2 /lib
Remove an unnecessary directory by running the following command as
the root
user:
rm -rfv /usr/lib/rpm
Remove a reference to a non-existent group by running the following
command as the root
user:
sed -i "s:0775 root lock:0755 root root:g" /usr/lib/tmpfiles.d/legacy.conf
Configuring systemd
If the systemd PAM module was
built, the /etc/pam.d/system-sesion
file needs to be modified and a new file needs to be created in
order for systemd-logind to work correctly.
To accomplish that, run the following commands as the root
user:
cat >> /etc/pam.d/system-session << "EOF"
# Begin Systemd addition
session required pam_loginuid.so
-session optional pam_systemd.so
# End Systemd addition
EOF
cat > /etc/pam.d/systemd-user << "EOF"
# Begin /etc/pam.d/systemd-user
account required pam_access.so
account include system-account
session required pam_env.so
session required pam_limits.so
session include system-session
auth required pam_deny.so
password required pam_deny.so
# End /etc/pam.d/systemd-user
EOF
At this point it would be a nice idea to reboot to test if the
reinstallation was successful.
Contents
A list of the installed files, along with their short descriptions
can be found at
../../../../lfs/view/7.6-systemd/chapter06/systemd.html#contents-systemd.
Below are listed newly installed libraries and directories along
with short descriptions.
Installed Programs:
None
Installed Libraries:
libgudev-1.0.so and pam_systemd.so (in
/lib/security
)
Installed Directories:
/usr/include/gudev-1.0 and
/usr/share/gtk-doc/html/gudev
Short Descriptions
libgudev-1.0.so
|
is a GObject-based wrapper library for libudev.
|
pam_systemd.so
|
is a PAM module used to register user sessions with the
systemd login manager,
systemd-logind.
|
Last updated on 2014-08-23 15:42:10 -0700