6.53. Systemd-236

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

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

6.53.1. systemd のインストール

xlstproc がなくてもビルドができるように、シンボリックリンクを生成します。

ln -sf /tools/bin/true /usr/bin/xsltproc

man ページの準備をします。

tar -xf ../systemd-man-pages-236.tar.xz

chroot 環境ではビルドできないテストを削除します。

sed '179,223d' -i src/resolve/meson.build

デフォルトの udev ルールから、不要なグループ render を削除します。

sed -i 's/GROUP="render", //' rules/50-udev-default.rules.in

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

mkdir -p build
cd       build

LANG=en_US.UTF-8                   \
meson --prefix=/usr                \
      --sysconfdir=/etc            \
      --localstatedir=/var         \
      -Dblkid=true                 \
      -Dbuildtype=release          \
      -Ddefault-dnssec=no          \
      -Dfirstboot=false            \
      -Dinstall-tests=false        \
      -Dkill-path=/bin/kill        \
      -Dkmod-path=/bin/kmod        \
      -Dldconfig=false             \
      -Dmount-path=/bin/mount      \
      -Drootprefix=                \
      -Drootlibdir=/lib            \
      -Dsplit-usr=true             \
      -Dsulogin-path=/sbin/sulogin \
      -Dsysusers=false             \
      -Dumount-path=/bin/umount    \
      -Db_lto=false                \
      ..

meson オプションの意味:

-D*-path=*

各スイッチは systemd が実行時に必要としているバイナリであって、まだインストールされていないもの、 あるいはその pkcconfig ファイルが現時点にて /tools/lib/pkgconfig にしかないものに関して、 そのパスを指定します。

-Ddefault-dnssec=no

本スイッチは、実験的な DNSSEC サポートを無効にします。

-Dfirstboot=false

本スイッチは、systemd サービスを、システムの初回構築用としてインストールしないようにします。 LFS ではすべて手作業で行うため、この機能が必要ないからです。

-Dinstall-tests=false

本スイッチはコンパイルされたテストをインストールしないようにします。

-Dldconfig=false

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

-Droot*

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

-Dsplit-usr=true

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

-Dsysusers=false

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

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

LANG=en_US.UTF-8 ninja

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

LANG=en_US.UTF-8 ninja 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

上で作り出していた xlstproc に対するシンボリックリンクを削除します。

rm -f /usr/bin/xsltproc

systemd-journald に対して必要となる /etc/machine-id ファイルを生成します。

systemd-machine-id-setup

/lib/systemd/systemd-user-sessions を生成します。 これにより、systemd-logind がなくても、一般ユーザーがログインできるようにします。

cat > /lib/systemd/systemd-user-sessions << "EOF"
#!/bin/bash
rm -f /run/nologin
EOF
chmod 755 /lib/systemd/systemd-user-sessions

6.53.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-236, /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 のジャーナルの内容を確認します。

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 デバイス情報にアクセスするためのライブラリ。