LinAction Theme LPICの問題を解いてみる~システムアーキテクチャ編~

21
LinAction.Lab Presents LinAction Theme LPICの問題を解いてみる ~システムアーキテクチャ編~ Date : 2014.10.17 2014.10.23 Location : bookshelfcafe

Transcript of LinAction Theme LPICの問題を解いてみる~システムアーキテクチャ編~

LinAction.Lab Presents

LinAction Theme LPICの問題を解いてみる~システムアーキテクチャ編~

Date : 2014.10.172014.10.23

Location : bookshelfcafe

LinAction.Labについて

LinAction = Linux + Action

「Linuxで行動を起こそう!」というスローガンを基に、Linuxに関わるあらゆることを追求するコミュニティです。

難しいことはひとまず置いて、まずは試して、触って、行動優先から深めて行きましょう。

その、「まずは試して、触って」のお役に立てればと思います。

解説

Linuxのブートプロセス

BIOS起動

ブートローダ起動

Linuxカーネルの起動

initプロセス起動

システムの電源を入れるとBIOSが起動。BIOSは起動するためのドライブを決定して、MBR(マスタブートレコード)からブートローダを起動する(第1段階のブートローダ起動)。

ブートローダ(GRUBやLILO)起動後(第2段階のブートローダ起動) 、カーネルをメモリにロードする。

カーネルはメモリの初期化やシステムクロックなどを設定し、initプロセスを起動する。

initプロセスは、Linuxの初期スクリプトを実行し、予め設定されたランレベルに応じてプロセス(デーモン)を起動する。

電源投入

ログインプロンプト

カーネルの起動時に渡されるパラメーターが記載されているファイル /proc/cmdline

解説

ブートローダ

①コンピュータの電源ONROM

② BIOS起動及びブートデバイス決定

③ BIOSがMBRにある第一段階ブートローダを起動

MBR領域

第1段階ブートローダ

第2段階ブートローダカーネル(OS)格納領域

④第1段階ブートローダはOS格納領域にある第2段階ブートローダを起動

⑤第2段階ブートローダはLinuxカーネルを起動

ハードディスク

LILO GRUB

カーネルの位置情報をファイルシステム上のディレクトリパスではなくハードディスクのセクタ位置(ブロックアドレス)で特定しているため、設定ファイル(/etc/lilo.conf)を書き換え

た場合には、コマンドでカーネルの位置情報(マップファイル)を更新する必要がある。

GRUBはファイルシステムを解

釈し、ディレクトリパスでカーネルの位置情報を特定できるため、マップファイルの更新などは不要。

解説

ブート時のイベント確認

■主なログファイル

ログファイル名 内容

/var/log/messages システム全般に関するログが記録され、起動時のメッセージも出力される。

/var/log/boot.log システム起動時のメッセージが出力される。

/var/log/dmesg システム起動時のメッセージが出力される。

■確認コマンド

システム起動時にカーネルが出力したメッセージ内容は、一時的なバッファ領域に格納される。このバッファ領域に格納されているメッセージを表示するのがdmesgコマンドで

ある。ただし、このバッファ領域には限りがあるため、すべてのカーネルメッセージを確認できない場合がある。

問題1

Linuxが起動完了するまでの順序として適切なものを選びなさい。

A. BIOS → カーネル→ ブートローダー→ initプロセスB. initプロセス→ カーネル→ ブートローダー→ BIOSC. BIOS → ブートローダー→ カーネル→ initプロセスD. ブートローダー→ BIOS → カーネル→ initプロセス

問題2

Linuxにおけるブートローダーの種類として、適切なものを2つ選びなさい。

A. GRUBB. LILOC. BOOTD. DMESG

問題3

システム起動時に、ブートローダからカーネルに渡されるパラメータが記載されている/procファイルシステムのファイルを選びなさい。

A. /proc/interruptsB. /proc/cpuinfoC. /proc/kernelD. /proc/cmdline

問題4

システム起動時にカーネルが出力したメッセージを表示するコマンドとして適切なものを選びなさい。

A. lsmodB. pingC. dmesgD. shutdownE. nslookup

問題5

システム起動時にカーネルが出力したメッセージを確認できるファイルをすべて選びなさい。

A. /var/log/messagesB. /etc/inittabC. /var/log/dmesgD. /var/log/boot.logE. /var/log/spooler

解説

ランレベルとは?

ランレベル モード 説明

0 システムの停止 システムをシャットダウン。

1 /s/S/single シングルユーザーモード システムをrootだけがログインした状態で起動。

2 マルチユーザーモード(CUIログイン、ネットワーク無し)

ネットワークサービスを利用不可能なCUI起動。

3 マルチユーザーモード(CUIログイン、ネットワーク有)

ネットワークサービスを利用可能なCUI起動。

4 未使用

5 マルチユーザーモード(GUIログイン)

Xwindowsを利用したGUI起動。

6 システムの再起動 システムをリブート。

UNIX系OSにおける動作モード。

解説

■ランレベルを設定するファイル

ファイル:/etc/inittab

設定: id:3:initdefault

■ランレベル確認コマンド

書式:runlevel

(1)コマンド結果例1: N 3

(2)コマンド結果例2: 5 3

左に表示されているのは変更前のランレベル、右に表示されているのは現在のランレベル。

Nは起動後1度もランレベルが変更されていない意味を持つ。

変更前はランレベル5、変更後はランレベル3。

■ランレベル変更コマンド

書式:init [オプション] [ランレベル]telinit [オプション] [ランレベル]

問題6

ランレベルを設定するファイルとして適切なものを選びなさい。

A. /etc/httpd/conf/httpd.confB. /etc/inittabC. /etc/runlevel.confD. /etc/fstab

問題7

runlevelコマンドの実行結果として適切なものを全て選びなさい。

A. 現在のランレベルはNであるB. 現在のランレベルは3であるC. システムを起動してから、ランレベルは一度も変更されていないD. ひとつ前のランレベルは3である

# runlevelN 3

問題8

ランレベルを変更するコマンドを2つ選びなさい。

A. telinitB. initC. telnetD. inittabE. dmesg

問題9

対応するランレベルを答えなさい。

システムの停止 __マルチユーザーモード(GUIログイン) __シングルユーザーモード __マルチユーザーモード(テキストログインネットワーク有) __システムの再起動 __

解説

shutdownコマンド

書式:shutdown [オプション] <時間>

オプション 説明 コマンド例

-f 次回起動時にfsckを実行しない。 shutdown –fr now

-F 次回起動時にfsckを実行する。 shutdown –Fr now

-h シャットダウン後にシステムを停止。 shutdown –h now

-r シャットダウン後にシステムを再起動。 shutdown –r now

-k シャットダウンは実行せず、ログインしているすべてのユーザーにメッセージのみを通知。

shutdown -k now“message”

-c 実行中のシャットダウンをキャンセル。 shutdown -c

時間 説明 コマンド例

HH:MM HH時MM分に実行。 shutdown -h 23:00

+ MIN MIN分後に実行。 shutdown -h +60

now 今すぐ実行。 shutdown -h now

問題10

シャットダウン前に、ログイン済みのユーザーに対してメッセージを通知するコマンドとオプションについて適切なものを選びなさい。

A. shutdown –k now “This system will shutdown soon”B. shutdown –f now “This system will shutdown soon”C. shutdown –r now “This system will shutdown soon”D. shutdown –h now “This system will shutdown soon”

問題11

RHEL7からinitに代わって新機能として加わった機能として適切なもの選びなさい。

A. SysVinitB. UpstartC. systemdD. firewalld

解説

systemdについて

RHEL5,6 RHEL7

ユーザープロセスを順番に1つずつ起動する。

ユーザープロセスを並列に起動する。

initスクリプトを使用

/etc/rc.d/init.d/httpd start (service httpd start)/etc/rc.d/init.d/httpd stop(service httpd stop)/etc/rc.d/init.d/httpd restart(service httpd restart)

initスクリプトを廃止

systemctl start httpd.servicesystemctl stop httpd.servicesystemctl restart httpd.service

init内の親プロセスが死ぬと親子関係が消滅、消滅後、initは子プロセスを適切に管理できなくなる。

Linuxカーネルのcgroup(Control Group)とい

う仕組みで、複数のユーザプロセスをグループ化し一括制御できる。このグループ化により親が死んでも子を適切に管理できる。

回答

問題1:C問題2:A,B問題3:D問題4:C問題5:A,C,D問題6:B問題7:B,C問題8:A,B問題9:0,5,1,3,6問題10:A問題11:C