Opensourcetechブログ

OpensourcetechによるNGINX/Kubernetes/Zabbix/Neo4j/Linuxなどオープンソース技術に関するブログです。

CentOS6(CentOS5)と7の差分対応 (SystemVinit/Upstart/systemd)

こんにちは、鯨井貴博@opensourcetechです。

 

 今回は、CentOSのInitプロセスに関する変更を確認します。

 

 

まずは、その流れを知る意味でCentOS5で使用されていた

SystemVinitからいきましょう。

以下が、CentOS5の/etc/inittabです。

f:id:opensourcetech:20140721072414p:plain

 SystemVinitでは/sbin/initが

si::sysinit://etc/rc.d/rc.sysinit行にあるrc.sysinitスクリプトが実行されます。

その後、/etc/rc.d/rcスクリプトにより各ランレベル毎(デフォルトランレベルは、id:3:initdefault:で確認される)のサービスが起動され、

/sbin/mingettyによる仮想コンソールが起動されます。

※ランレベル5の場合は、Xが起動されます。

f:id:opensourcetech:20140723005209p:plain

なお、各ランレベル毎のサービスは,

Kの若い順番から大きい番号へ、Sの若い番号から大きな番号へ、

同じ番号の場合はアルファベット順で実施されます。

 

 

そして、以下がUpstartが採用されたCentOS6の/etc/inittabです。

f:id:opensourcetech:20140721072420p:plain

基本的な動作はSystemVinitとあまり変わりがありませんが、

sysinitとあった部分が/etc/init/rcS.confで、

rcスクリプトに関する部分が/etc/init/rc.confで、

/sbin/mingettyに関する部分が/etc/init/tty.confと/etc/init/serial.confおよび/etc/sysconfig/initに分かれています。

 

なお、/etc/rc.d/rc3.dなどの配下にK00~99、S00~99で始まるサービスへのリンクファイルがあり、Kの若いものから大きい番号、Sの若いものから大きな番号で実施されますが、非同期に実施出来高速化がされている点がSystemVinitとは異なります。

 

 

さらに、systemdへと変更が行われたCentOS7の/etc/inittabです。

f:id:opensourcetech:20140721072425p:plain

 systemdでは、

rc.sysinitスクリプトやrcスクリプト、/etc/init.d/サービス名のスクリプト、/sbin/mingettyなどが、

/etc/systemd/systemディレクトリ配下と/usr/lib/systemd/systemディレクトリ配下のUnitと呼ばれる単位に細分化されており、

それぞれで依存関係や起動順序などを細かく制御出来るようになっております。

f:id:opensourcetech:20140723012013p:plain

f:id:opensourcetech:20140723012021p:plain

 

 

サービスの起動等の方法

-------

CentOS5及びCentOS6では、

/etc/init.d/サービス名 start(stop)、service サービス名 start(stop)などでした。

CentOS7では、

systemctl start(stop) サービス名(nginx.service)となります。

 

 

Opensourcetech by Takahiro Kujirai