%general-entities; ]> systemd &systemd-version;
&systemd-url;
Systemd-&systemd-version; Systemd <para>The Systemd package contains programs for controlling the startup, running, and shutdown of the system.</para> <segmentedlist> <segtitle>&buildtime;</segtitle> <segtitle>&diskspace;</segtitle> <seglistitem> <seg>&systemd-ch6-sbu;</seg> <seg>&systemd-ch6-du;</seg> </seglistitem> </segmentedlist> </sect2> <sect2 role="installation"> <title>Installation of Systemd If systemd is not desired at all, it can be skipped. However a udev replacement must be installed. See the hint at to find procedures to install eudev. First, create a file to allow Systemd to build when using Util-Linux built in Chapter 5: cat > config.cache << "EOF" KILL=/bin/kill HAVE_BLKID=1 BLKID_LIBS="-lblkid" BLKID_CFLAGS="-I/tools/include/blkid" cc_cv_CFLAGS__flto=no EOF Additionally, fix a build error when using Util-Linux built in Chapter 5: sed -i "s:blkid/::" $(grep -rl "blkid/blkid.h") Apply a patch so that compat pkg-config files get installed without installing compat libs which are useless on LFS: patch -Np1 -i ../&systemd-compat-patch; Prepare Systemd for compilation: ./configure --prefix=/usr \ --sysconfdir=/etc \ --localstatedir=/var \ --config-cache \ --with-rootprefix= \ --with-rootlibdir=/lib \ --enable-split-usr \ --disable-gudev \ --without-python \ --docdir=/usr/share/doc/systemd-&systemd-version; \ --with-dbuspolicydir=/etc/dbus-1/system.d \ --with-dbusinterfacedir=/usr/share/dbus-1/interfaces \ --with-dbussessionservicedir=/usr/share/dbus-1/services \ --with-dbussystemservicedir=/usr/share/dbus-1/system-services The meaning of the configure options: --config-cache This switch tells the build system to use the config.cache file which was created earlier. --with-root* These switches ensure that core programs and shared libraries are installed in the subdirectories of the root partition. --enable-split-usr This switch ensures that Systemd will work on systems where /bin, /lib and /sbin directories are not symlinks to their /usr counterparts. --disable-gudev --without-python These switches disable optional features because LFS does not provide their dependencies. --with-dbus* These switches ensure that D-Bus configuratil files get installed in the correct locations. Compile the package: make LIBRARY_PATH=/tools/lib First prevent few broken test cases from running: sed -e "s:test/udev-test.pl::g" \ -e "s:test-bus-cleanup\$(EXEEXT) ::g" \ -e "s:test-bus-gvariant\$(EXEEXT) ::g" \ -i Makefile To test the results, issue: make -k check Note that some tests might fail because the test are being run in a chroot environment. For full test coverage, the test suite should be run from a system booted using Systemd. Install the package: make LD_LIBRARY_PATH=/tools/lib install Move NSS myhostname library to /lib: mv -v /usr/lib/libnss_myhostname.so.2 /lib Remove an unnecessary directory: rm -rfv /usr/lib/rpm Create the Sysvinit compatibility symlinks, and move some man pages and a library that conflict with so both systems can be installed side-by-side: for tool in runlevel reboot shutdown poweroff halt telinit; do ln -sfv ../bin/systemctl /sbin/${tool}-systemd mv -v /usr/share/man/man8/${tool}.8 /usr/share/man/man8/${tool}-systemd.8 done ln -sfv ../lib/systemd/systemd /sbin/init-systemd mv -v /etc/init.d /etc/init.d-systemd Remove a reference to a non-existent group: sed -i "s:0775 root lock:0755 root root:g" /usr/lib/tmpfiles.d/legacy.conf Create the /etc/machine-id file needed by Journald: systemd-machine-id-setup Finally install some LFS specific udev rules: tar -xf ../&udev-lfs-version;.tar.bz2 make -f &udev-lfs-version;/Makefile.lfs install Contents of Systemd Installed programs Installed libraries Installed directories bootctl, busctl, halt, hostnamectl, init, journalctl, kernel-install, localectl, loginctl, machinectl, poweroff, reboot, runlevel, shutdown, systemctl, systemd-analyze, systemd-ask-password, systemd-cat, systemd-cgls, systemd-cgtop, systemd-coredumpctl, systemd-delta, systemd-detect-virt, systemd-inhibit, systemd-machine-id-setup, systemd-notify, systemd-nspawn, systemd-run, systemd-stdio-bridge, systemd-tmpfiles, systemd-tty-ask-password-agent, telinit, timedatectl, and udevadm libnss_myhostname.so.2, libsystemd.so, libudev.so /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, /usr/lib/binfmt.d, /usr/lib/kernel, /usr/lib/modules-load.d, /usr/lib/sysctl.d, /usr/lib/systemd, /usr/lib/tmpfiles.d, /usr/share/doc/systemd-&systemd-version;, /usr/share/systemd, /var/lib/systemd, /var/log/journal Short Descriptions bootctl used to query the firmware and boot manager settings. bootctl busctl used to introspect and monitor the D-Bus bus. busctl halt Normally invokes shutdown with the -h option, except when already in run-level 0, then it tells the kernel to halt the system; it notes in the file /var/log/wtmp that the system is being brought down. halt hostnamectl used to query and change the system hostname and related settings. hostnamectl init The first process to be started when the kernel has initialized the hardware which takes over the boot process and starts all the proceses it is instructed to. init journalctl used to query the contents of the Systemd Journal. journalctl kernel-install used to add and remove kernel and initramfs images to and from /boot. kernel-install localectl used to query and change the system locale and keyboard layout settings. localectl loginctl used to introspect and control the state of the Systemd Login Manager. loginctl machinectl used to introspect and control the state of the Systemd Virtual Machine and Container Registration Manager machinectl poweroff Tells the kernel to halt the system and switch off the computer (see halt). poweroff reboot Tells the kernel to reboot the system (see halt). reboot runlevel Reports the previous and the current run-level, as noted in the last run-level record in /var/run/utmp. runlevel shutdown Brings the system down in a secure way, signaling all processes and notifying all logged-in users. shutdown systemctl used to introspect and control the state of the Systemd system and service manager. systemctl systemd-analyze used to determine system boot-up performance of the current boot. systemd-analyze systemd-ask-password used to query a system password or passphrase from the user, using a question message specified on the command line. systemd-ask-password systemd-cat used to connect STDOUT and STDERR of a process with the Journal. systemd-cat systemd-cgls recursively shows the contents of the selected Linux control group hierarchy in a tree. systemd-cgls systemd-cgtop shows the top control groups of the local Linux control group hierarchy, ordered by their CPU, memory and disk I/O load. systemd-cgtop systemd-coredumpctl used to retrieve coredumps from the Systemd Journal systemd-coredumpctl systemd-delta used to identify and compare configuration files in /etc that override default counterparts in /usr. systemd-delta systemd-detect-virt detects execution in a virtualized environment. systemd-detect-virt systemd-inhibit used to execute a program with a shutdown, sleep or idle inhibitor lock taken. systemd-inhibit systemd-machine-id-setup used by system installer tools to initialize the machine ID stored in /etc/machine-id at install time with a randomly generated ID. systemd-machine-id-setup systemd-notify used by daemon scripts to notify the init system about status changes. systemd-notify systemd-nspawn used to run a command or OS in a light-weight namespace container. systemd-nspawn systemd-run used to create and start a transient .service or a .scope unit and run the specified command in it. systemd-run systemd-tmpfiles creates, deletes and cleans up volatile and temporary files and directories, based on the configuration file format and location specified in tmpfiles.d directories. systemd-tmpfiles systemd-tty-ask-password-agent used to list or process pending Systemd password requests systemd-tty-ask-password-agent telinit Tells init which run-level to change to. telinit timedatectl used to query and change the system clock and its settings. timedatectl udevadm Generic Udev administration tool: controls the udevd daemon, provides info from the Udev database, monitors uevents, waits for uevents to finish, tests Udev configuration, and triggers uevents for a given device. udevadm libsystemd Systemd utility library. libsystemd libudev A library to access Udev device information. libudev