Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

2.2.2. 新 Init システム

systemd は、Red Hat Enterprise Linux の以前のリリースで使用されていた SysV init システムに代わるシステムおよびサービスマネジャーです。

systemd は、ブート時に最初に開始し、シャットダウン時に最後に終了するプロセスです。残りのブートプロセスを調整し、そのユーザー向けにシステムを設定します。systemd では、独立したプログラムが並列して読み込めるので、ブートプロセスが格段に速くなります。

systemd は、ユーザーエクスペリエンスおよびスクリプト API の大部分に関して、SysV と互換性があります。しかし、例外もいくつかあります。詳細は、「後方互換性」 を参照してください。

systemd の移行には、Red Hat Enterprise Linux 用の管理ツールの変更も関わってきます。詳細は、systemctl man ページまたは Red Hat Enterprise Linux 7 システム管理者のガイド を参照してください。

ブートプロセスの詳細は『Red Hat Enterprise Linux 7 インストールガイド』を参照してください。systemd の詳細は『Red Hat Enterprise Linux 7 システム管理者のガイド』を参照してください。

2.2.2.1. 後方互換性

systemd は、ユーザーエクスペリエンスおよびスクリプト API においてほぼ SysV と互換性があります。しかし、互換性が限定的なケースもいくつかあります。

  • 標準の /etc/init.d/servicename コマンド (startstopstatus) は依然として機能します。ただし、レガシーの init スクリプトを使用するのではなく systemd に直接転送するため、Red Hat では、/usr/sbin/service servicename コマンドを推奨します。
  • ランレベルサポートは制限されています。すべての SysV ランレベルは systemd ターゲットにマッピングしますが、すべての systemd ターゲットが SysV ランレベルにマッピングするわけではありません。このため、現在のランレベルに対するチェックのうち、N (不明のランレベル) を返すものもあります。Red Hat では、ランレベルチェックを避けて、より有用な systemd ターゲットに移動することを推奨しています。
  • レガシーランレベル 2、3、および 4 はすべてデフォルトで multi-user.target systemd ターゲットにマッピングを行います。この動作は、別の systemd ターゲットを設定すれば修正できます。
  • サービスはクリーンに実行し、呼び出しているユーザーのコンテキストは継承されません。継承されるコンテキストに依存する init スクリプトは機能しません。
  • systemd は、init スクリプト内で他の動詞をサポートしません。startstop、または status 以外の動詞が必要な場合は補助スクリプトに移動してください。
  • Linux Standard Base ヘッダー情報は、ランタイム時に systemd が完全に解釈、利用します。
  • init スクリプト操作はすべて 5 分でタイムアウトするようになっており、init スクリプトのハングでシステムがフリーズすることを防ぎます。
  • systemd は、稼働中のサービスだけを停止します。開始していないサービスがシャットダウン中に停止されることもありません。
  • chkconfig ツールは、SysV サービスおよびランレベル情報のみを表示し、誤解を招く情報を出力する可能性があります。Red Hat では、代わりに systemctl コマンドの使用を推奨しています。
  • CPUAccounting オプションが有効になっていると、root 権限を持つ SysV サービスであってもリアルタイムスケジューリングを取得できません。任意のサービスに CPUAccounting を有効化することで、systemd は CGroup CPU 帯域幅コントローラーをグローバルに利用して、後続の sched_setscheduler() システム呼び出しはリアルタイムスケジューリングの優先度によって予期せずに終了します。このエラーを避けるには、CGroup cpu.rt_runtime_us オプションは、サービスを使用してリアルタイムに設定できます。
  • サービスは、標準入力 (stdin) から読み込むことはありません。インタラクティブなスクリプトが必要な場合は、 systemd がサポートする最小パスワードクエリーフレームワークを検討してください。この機能の詳細は、man ページで入手できます。

    $ man systemd-ask-password
  • 以前のバージョンの Red Hat Enterprise Linux には System z 固有のプレインストールスクリプト (linuxrc.s390) が含まれており、これがシステムの起動時に System z システムを開始していました。新しい init システムではこのプレインストールが廃止され、System z システムは、AMD64、Intel 64、および Power システムと同じ方法でブートします。