Red Hat Enterprise Linux 7(RHEL7)では、「systemd」という新しいLinuxの起動処理とサービス管理の仕組みが導入された。システムの起動処理にかかる時間を短縮するなど、さまざまなメリットを備えている。

 従来のバージョンであるRHEL5では「SysVinit」、RHEL6では「Upstart」という仕組みが採用されていた。systemdは、これらの仕組みとは大きく異なるプロセスで、Lnuxを起動する。systemdは従来の仕組みとどう異なるのか、それによってどんなメリットが得られるのか、詳しく解説していこう。

これまではシェルスクリプトでシステム起動を管理

 SysVinitやUpstartでは、システムを起動してLinuxカーネルが動き始めると、最初にシェルスクリプト「/etc/rc.d/rcsysint」によって、ファイルシステムの整合性チェックとマウント処理、メモリースワップ領域の有効化などを行う。その後、シェルスクリプト「/etc/rc.d/rc」によって、サービス起動用スクリプト「/etc/init.d/<サービス名>」を順番に実行して、chkconfigコマンドで設定されたサービス群を起動する。そしてサービス群の起動後に、コンソールログインを受け付ける「mingetty」を起動する。これらのスクリプト実行の仕組みが、「SysVinit」や「Upstart」である。

 例えばRHEL5の場合、Linuxカーネルの起動直後に、最初のプロセス(プロセスID=1)として、「/sbin/init」が実行される。これが「SysVinit」の本体である。このプロセスは、設定ファイル「/etc/inittab」に従って、前述のスクリプトを実行していく。/etc/inittabの記述内容と、その処理の流れを対応付けると、図1のようになる。

図1●SysVinitによる起動処理の流れ
図1●SysVinitによる起動処理の流れ
[画像のクリックで拡大表示]

 このようなシェルスクリプトを利用したシステム起動処理は、Linuxでは長く利用されてきたものだ。処理のカスタマイズが容易なので、さまざまなLinuxディストリビューションにおいて、独自のスクリプトが使用されている。