6.48. Systemd-234

systemd パッケージは、システムの起動、稼動、終了の制御を行うプログラムを提供します。

概算ビルド時間: 7.1 SBU
必要ディスク容量: 442 MB

6.48.1. systemd のインストール

第5章にてビルドした Util-Linux を用いて systemd がビルドできるように、ファイルを一つ生成します。 これはデフォルトで LTO を無効とし、また xlstproc がなくてもビルドができるようにするものです。

cat > config.cache << "EOF"
KILL=/bin/kill
MOUNT_PATH=/bin/mount
UMOUNT_PATH=/bin/umount
HAVE_BLKID=1
BLKID_LIBS="-lblkid"
BLKID_CFLAGS="-I/tools/include/blkid"
HAVE_LIBMOUNT=1
MOUNT_LIBS="-lmount"
MOUNT_CFLAGS="-I/tools/include/libmount"
cc_cv_CFLAGS__flto=no
SULOGIN="/sbin/sulogin"
GPERF_LEN_TYPE=size_t
XSLTPROC="/usr/bin/xsltproc"
EOF

LTO がデフォルトで無効化されているのは、systemd や関連プログラムが libgcc_s.so にリンクしているからであり、ビルドに時間を要し、またビルドされたコードがより大きくなってしまうためです。

systemd をコンパイルするための準備をします。

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

configure オプションの意味:

--config-cache

本スイッチは、先ほど作成した config.cache ファイルを使ってシステムをビルドすることを指示します。

--with-root*

これらのスイッチは主要なプログラムや共有ライブラリを、ルートパーティション配下のサブディレクトリにインストールすることを指示します。

--enable-split-usr

本スイッチは、/bin, /lib, /sbin の各ディレクトリが /usr 配下の同一サブディレクトリ名によるシンボリックリンクでない場合でも systemd が稼動するようにするものです。

--without-python

このスイッチは configure が Python を利用しないようにします。 Python は LFS においてビルドしていないからです。

--disable-firstboot

このスイッチは、システム起動初期にシステム設定を行う systemd サービスをインストールしないようにします。 LFS ではすべてを手作業で設定していくためです。

--disable-ldconfig

このスイッチは、ブート時に ldconfig を実行する systemd ユニットをインストールしないようにします。 これがあるとブート処理に時間もかかります。 LFS のようにソースから作り出すディストリビューションにとっては無用なものですが、もし必要であれば本スイッチを除いてください。

--disable-sysusers

このスイッチは、システム起動初期に /etc/group ファイルと /etc/passwd ファイルを設定する systemd サービスをインストールしないようにします。 この二つのファイルは本章にて生成済です。

--with-default-dnssec=no

このスイッチは DNSSEC に関する実験的なサポートを無効にします。

パッケージをコンパイルします。

make

このパッケージにテストスイートはありますが、BLFS においてパッケージを再インストールした後でなければ実行することはできません。

パッケージをインストールします。

make install

不要なディレクトリを削除します。

rm -rfv /usr/lib/rpm

Sysvinit と互換性のあるシンボリックリンクを生成します。 これにより systemd がデフォルトの init システムとして用いられるようになります。

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-journald に対して必要となる /etc/machine-id ファイルを生成します。

systemd-machine-id-setup

6.48.2. systemd の構成

インストールプログラム: bootctl, busctl, coredumpctl, halt, hostnamectl, init, journalctl, kernel-install, localectl, loginctl, machinectl, networkctl, poweroff, reboot, runlevel, shutdown, systemctl, systemd-analyze, systemd-ask-password, systemd-cat, systemd-cgls, systemd-cgtop, systemd-delta, systemd-detect-virt, systemd-escape, systemd-hwdb, systemd-inhibit, systemd-machine-id-setup, systemd-mount, systemd-notify, systemd-nspawn, systemd-path, systemd-resolve, systemd-run, systemd-socket-activate, systemd-stdio-bridge, systemd-tmpfiles, systemd-tty-ask-password-agent, telinit, timedatectl, udevadm
インストールライブラリ: libnss_myhostname.so.2, libnss_mymachines.so.2, libnss_resolve.so.2, libnss_systemd.so.2, libsystemd.so, libsystemd-shared-231.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-234, /usr/share/factory, /usr/share/systemd, /var/lib/systemd, /var/log/journal

概略説明

bootctl

ファームウェアやブートマネージャーの設定内容を確認します。

busctl

D-Bus のバスを監視するために用います。

coredumpctl

systemd Journal よりコアダンプを抽出します。

halt

普通は shutdown にオプション -h をつけて実行します。 ただし既にランレベルが 0 である場合を除きます。 カーネルに対してシステムの停止を指示します。 システムが停止したことは /var/log/wtmp ファイルに記録されます。

hostnamectl

システムのホスト名および関連設定を確認し変更します。

init

カーネルがハードウェアを初期化する際に起動される最初のプロセスであり、この後の起動処理を担い、指示されたすべてのブートプロセスを起動します。

journalctl

Systemd の Journal の内容を確認します。

kernel-install

カーネルや initramfs イメージを /boot ディレクトリに対して追加、削除します。

localectl

システムロケールやキーボードレイアウト設定を確認し変更します。

loginctl

Systemd のログインマネージャーの状態を確認し制御します。

machinectl

Systemd の仮想マシンとコンテナー登録マネージャー (Container Registration Manager) の状態を確認し制御します。

networkctl

systemd-netword から見えるネットワークリンクの状態を確認 (introspect) します。

poweroff

カーネルに対してシステム停止を指示し、コンピューターの電源を落とします。(halt参照)

reboot

カーネルに対してシステム再起動を指示します。(halt参照)

runlevel

現時点とその直前のランレベルを表示します。 最新のランレベルは /var/run/utmp ファイルに記録されます。

shutdown

すべてのプロセスとすべてのログインユーザーへの通知を行なった上で、システムを安全に停止します。

systemctl

Systemd システムとサービスマネージャーの状態について確認し制御します。

systemd-analyze

現在のシステム起動において、起動処理パフォーマンスを決定します。

systemd-ask-password

コマンドラインから指定された質問文を用いて、システムパスワードやユーザーのパスフレーズを確認します。

systemd-cat

Journal に対してプロセスの STDOUT と STDERR を設定します。

systemd-cgls

指定された Linux コントロールグループ (control group) の階層を再帰的に表示します。

systemd-cgtop

最上位のローカル Linux コントロールグループ (control group) を表示し、CPU、メモリ、ディスクI/Oロードの並びにより示します。

systemd-delta

/etc ディレクトリにある設定ファイルを同定したり比較したりします。 この設定ファイルは /usr ディレクトリにあるデフォルト設定をオーバーライドします。

systemd-detect-virt

仮想化環境での実行を検出します。

systemd-escape

systemd ユニット名での文字エスケープを行います。

systemd-hwdb

ハードウェアデータベース (hwdb) を管理します。

systemd-inhibit

システム停止、休止、アイドル禁止ロックを行うプログラムを実行します。

systemd-machine-id-setup

システムインストールツールがマシンIDを初期化するために利用します。 このマシンIDは /etc/machine-id ファイル内にあるものから、インストール時にランダムに生成されます。

systemd-mount

ドライブの一時的マウント、あるいは一時的な自動マウントを行うツールです。

systemd-notify

init システムに対してステータス変更が発生したことを通知するデーモンスクリプトが利用します。

systemd-nspawn

軽量な名前空間コンテナー (light-weight namepspace container) においてコマンドや OS の実行に用いられます。

systemd-path

システムパスやユーザーパスを検索します。

systemd-resolve

ドメイン名、IPV4 と IPv6 アドレス、DNSリソースレコード、サービスの名前解決を行います。

systemd-run

一時的な .service ユニットや .scope ユニットを生成および起動し、その指定コマンドを実行します。

systemd-socket-activate

ソケットデバイスの情報を読み取ってコネクション上にてプロセスを起動するツールです。

systemd-tmpfiles

tmpfiles.d ディレクトリにて指定された設定ファイルの内容に基づいて、テンポラリファイルなどの生成削除等を行います。

systemd-tty-ask-password-agent

未定となっている Systemd のパスワード変更指示の一覧を表示し処理します。

telinit

init コマンドに対してランレベルを何にするかを指示します。

timedatectl

システムクロックとその設定を確認し変更します。

udevadm

汎用的な Udev 管理ツール。 udevd デーモンの制御、Udev データベースデータの提供、uevent の監視、uevent の完了までの待機、Udev 設定のテスト、指定デバイスに対する uevent の起動、といったことを行います。

libsystemd

Systemd ユーティリティライブラリ。

libudev

Udev デバイス情報にアクセスするためのライブラリ。