linaction theme lpicの問題を解いてみる~システムアーキテクチャ編~
TRANSCRIPT
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プロセス
問題3
システム起動時に、ブートローダからカーネルに渡されるパラメータが記載されている/procファイルシステムのファイルを選びなさい。
A. /proc/interruptsB. /proc/cpuinfoC. /proc/kernelD. /proc/cmdline
問題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
問題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”
解説
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)とい
う仕組みで、複数のユーザプロセスをグループ化し一括制御できる。このグループ化により親が死んでも子を適切に管理できる。