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.servicezh:SDB:Systemd