SDB:Systemd
systemd は openSUSE 12.3 以降のバージョンで既定かつ唯一のものとなった init システムです。
目次
一般的な問題
サービスが期待通りに動作しない
chkconfig cron を実行すると有効化されているように表示されるのに、起動時に cron が動作しないことがあります。 systemctl start cron.service と実行すると、起動することができます。 詳しくは Bug #660493 をお読みください。
systemctl enable cron.service を実行すると、解決することができます。
手作業で "loop" モジュールを読み込まない限り、ループバックマウントが動作しない
Bug #661715 に詳細が書かれています。 SysV init では loop モジュールは /etc/init.d/boot.localfs で無条件に読み込まれていましたが、 systemd への移行に伴って使用されなくなっています。自動的にモジュールを読み込みたい場合は、下記のように実行してください:
echo loop > /etc/modules-load.d/loop.conf
systemd のデバッグ出力
systemd からのデバッグ出力を得るには、下記のいずれかを実行します:
- カーネルのコマンドラインから quiet キーワードを削除する
- カーネルのコマンドラインに対して debug を追加し、 systemd のデバッグレベルを上げる。必要であれば、 systemd.sysv_console=1 (0: 無効, 1: 有効) をも追加して、従来の SysV 型 init スクリプトの出力を表示することもできます。
- /etc/systemd/system.conf (詳しくは man systemd.conf をお読みください) を下記のように修正して、饒舌な出力を設定する:
LogLevel=debug LogTarget=syslog-or-kmsg SysVConsole=yes
シリアルコンソールが動作しない
既定では、 systemd はシステムの反応性が高まるよう、最小限の getty だけを起動します。
カーネルのコマンドラインで使用するシリアルコンソールを指定する場合は、最後に指定したものだけが有効になることに注意してください:
- console=tty0 console=ttyS0 のように指定すると、 tty0 (物理的なコンソール) とシリアルコンソールの両方が有効になります。
- console=ttyS0 console=tty0 のように指定すると、 tty0 のコンソールのみが有効になります。
シリアルポートのコンソールを強制的に設定したい場合は、下記のように実行します:
ln -s /usr/lib/systemd/system/serial-getty@.service /etc/systemd/system/getty.target.wants/serial-getty@ttyS0.service