IT未経験者がLinuxを学びLPIC-1を取得したい!!【第1章システムアーキテクチャ】3/4

目次に戻る

以下参考書になります。必要な方は購入して一緒に勉強していきましょう!

また、ご指摘がある場合はコメントにて報告をお願いいたします。

 

※実際にLinuxを触らないと理解できないと思います。
Windows/Macともにほとんど同じインストール方法ですので以下の記事のWindows10.isoデータの箇所だけ読み替えしてインストールしてみてください。
VirtualBox CentOS インストール
ってGoogle先生で検索しても色々記事が出てきますので確認しましょう!

MacでWindowsを起動させたい!【VirtualBox】

 

第1章システムアーキテクチャ目次(全4記事)

 

SysVinit

システムの電源をいれてからLinuxが起動する手順は、ここ数年で大きく変わった。
今まで:UNIX系OS全般で広く使われてきたSysVinit(System Five Init)が主流で、これまでのLPICでもSysVinitを前提としていました。しかし現在では、「systemd」という新しい仕組みが主流になってきています。
LPICでは、「SysVinit」と「systemd」両方の知識が問われます。
※SysVinit・・・UNIXのSystemV(システム5)で採用されていた起動の仕組みに戻づいているため、そのように呼ばれています。

 

SysVinitによる起動

SysVinitでは、Linuxシステムで最初に実行されるプロセスであるinitが、「/etc/inittab」ファイルノ設定に従い、システムに必要なサービスを順次起動していきます。
一般的な処理の流れは次の通り。

      1. initが「/etc/inittab」ファイルを読み込む
      2. initが「/etc/rc.sysinit」スクリプトを読み込む
      3. initが「/etc/rc」スクリプトを実行する
      4. 「/etc/rc」スクリプトが「/etc/rc<ランレベル>.d」ディレクトリ以下のスクリプトを実行する(次項にて紹介)

【注意】SysVinitを使っていない最近のシステムは「/etc/inittab」ファイルが存在しないか、あるいは中に何も記述されていないことがあります。(私の環境ではファイルは存在しましたが、何も記述されていませんでした。)

また、SysVinitでは、あらかじめ決められた順にサービスが起動していくため、あるサービスの起動に手間取ると、それ以後に起動するサービスが待たされてしまい、最終的な起動完了まで時間がかかってしまいます。
そのため、現在では多くのディストリビューソヨンが「systemd」や「Upstart※1」といった新しい仕組みに切り替えています。

※1「Upstart」とは?SysVinitを改善した新しいinitの仕組み。SysVinitでは、サービスAを起動する場合はその前にサービスBを起動する、といった依存関係を適切にしょるすることができず、管理者が管理する必要があります。また、サービスを並列で起動できない為、コンピュータの性能によっては起動に時間が掛かってしまうという欠点がありました。
「Upstart」ではそれらが改善され、サービスの依存関係を適切に設定したり、サービスを並列で起動することにより短時間でシステムを起動したりすることができるようになった。
「Upstart」の特徴はイベント駆動型である事。
イベントとは、「ランレベル」の変更やファイルシステムのマウントと言ったシステム上の変化を表します。「Upstart」のinitデーモンはイベントの発生を引き金として、指定された処理(ジョブ)を実行します。ジョブにはデーモンやシステムサービスなど常駐型の「サービス」と、何らかの処理を行って終了する「タスク」がある。
一時期は「Red Hat Enterprise Linux」や「Ubuntu」に採用されていましたが、その後systemdへの移行が進められています。

 

ランレベル

SysVinitを採用しているシステムでは、「ランレベル」と呼ばれるいくつかの動作モードがあります。
ランレベルごとに、どのようなサービスが稼働するか(もしくは稼働しないか)を決定できます。
例として、「ランレベル5」ではクライアントPCとして必要な「GUI環境」を利用できる、「ランレベル3」では各種サーバソフトウェアを使ったネットワークサービスを提供する。といったものです。
ランレベルの定義はディストリビューションによって若干異なるので注意が必要です。

表:Red Hat Enterprise Linux、CentOS、Fedoraでのランレベル

ランレベル 説明
0 停止
1 シングルユーザーモード
2 マルチユーザーモード(テキストログイン、NFSサーバは停止)
3 マルチユーザーモード(テキストログイン)
4 未使用
5 マルチユーザーモード(グラフィカルログイン)
6 再起動
Sまたはs シングルユーザーモード

 

表:Ubuntu、Debian GNU/Linuxでのランレベル

ランレベル 説明
0 停止
1 シングルユーザーモード
2 マルチユーザーモード
3 マルチユーザーモード
4 マルチユーザーモード
5 マルチユーザーモード
6 再起動
Sまたはs シングルユーザーモード

 

シングルユーザーモードはrootユーザーだけが利用できる特殊な状態です。
シングルユーザーモードでは、一般ユーザーはログインできないので、システムのメンテナンスなど、一般ユーザーがシステムを利用しては困る場合などに使われます。

 

ランレベルの変更と確認

現在のランレベルを表示するには「runlevel」コマンドを使います。
「runlevel」コマンドは、現在のランレベルと、その前のランレベルを表示します。

ランレベルを変更するには、「スーパーユーザー(root)」で「init」コマンド、もしくは「telinit」コマンドを使います。
次の例では「ランレベル1(シングルユーザーモード)」へ移行しています。

一般ユーザーのログイン中に突然シングルユーザーモードに移行すると、一般ユーザーは一切の操作ができないくなってしまいます。そのため、ログイン中のユーザーにはあらかじめメッセージを送ってログアウトを促しておく事をお勧めします。メッセージを促す場合は「wall」コマンドを使うと指定したメッセージをユーザーの端末に送ることができます。

 

起動スクリプトによるサービスの管理

SysVintitでは、各種サービスの起動には「/etc/init.d」ディレクトリ以下に用意されている「起動スクリプト」が使われています。一般的にランレベルが異なれば起動されるサービスも異なります。「/etc/rc<ランレベル>.d」ディレクトリを見ると、各ランレベルで起動するサービス、終了するサービスのスクリプトファイルが配置されています。
例えば、「/etc/rc3.d」ディレクトリには、「ランレベル3」になったときに利用されるスクリプトファイルが配置されています。

確認をするとファイル名が「K」や「S」で始まるファイルが出てきたと思います。これらはいずれも「/etc/init.d」ディレクトリ以下にある起動スクリプトへのシンボリックリンク(ショートカット)です。
試しに出ているファイルの詳細を確認してみましょう。

起動スクリプトは、システムサービスや各種サーバを起動したり、再起動したり、終了したりする場合にりようします。例えば、「httpdサービス」(Apache HTTP Server/Webサーバ)を起動/終了するには次のようにします。

 

 

デフォルトのランレベルの設定

Linuxが起動すると、最初のプロセスとして「init」が実行され、指定されたランレベルで起動します。
デフォルトのランレベルは「/etc/inittab」に記述されています。

 

今回はここまで!次回は新しいシステム「systemd」について学習していきます!

第1章システムアーキテクチャ目次(全4記事)

 

この記事が気に入ったら
いいね ! しよう

Twitter で

のぼじい

基本的に興味あるものは何でも手をつけます。でも3日坊主で終わることがしばしば笑 現在はPCサポートの仕事をしながら独学で、ブログ作成、LINEスタンプ作成、プログラミング、映像関係の勉強をしています。

あわせて読みたい

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です