【LPIC1対策(1)】主題101:システムアーキテクチャ

スポンサーリンク


本記事ではLPIC1(Ver4.0)101試験に合格するため『主題101:システムアーキテクチャ』について自分が勉強したことをまとめました。

LPIC1(Ver4.0)101試験の出題範囲はLPICのサイト(101試験範囲)に掲示されており、以下の様になっています。



目次



事前準備

1.Linuxの環境を用意する


LPICを勉強する上でLinuxの環境で実際に動かしてみるとよいです。Windows上でも仮想Linux環境を構築すれば簡単にLinuxを動かすことができます。以下にWindows上でubuntuを構築する方法をまとめました。参考にしてください。


Windows上でubuntuを構築する方法


2.テキストを購入する


Linux教科書 LPICレベル1 Version4.0対応』を参考にしながら勉強しました。このテキストにそって重要なところのみピックアップしてまとめているので大元はこちらのテキストを参照してください。



(101.1)ハードウェア設定の決定と構成



BIOSとUEFI

BIOS(Basic Input Output System)はキーボードなどのデバイスを制御するプログラム。
UEFI(Unified Extensible Firmware Interface)はBIOSの容量制限がなくなったり、GUIベースのセットアップ画面を利用できるなど拡張されている。



udev(Userspace DEVice management)

カーネルがパソコンへの接続を検出したデバイスに対して/devディレクトリ配下に動的にデバイス・ファイルを作成して割り当てる。
デバイスファイル作成時には/etc/udev/rules.dディレクトリ配下の設定ファイルが使用されており、設定ファイルを変更することでデバイスファイルの名前などを変えることもできる。



デバイスファイル

Linuxはハードウェアのアクセスを抽象化したデバイスファイルにて行う。
デバイスファイルは/devディレクトリ配下にある。

【デバイスファイルの確認】
> ls /dev



/procファイル

Linuxカーネルが認識しているデバイス情報が/procディレクトリ配下に格納

・CPU情報
/proc/cpuinfo
・IRQ(割り込み)情報
/proc/interrupt
・I/Oアドレス情報
/proc/ioports
・メモリ情報
/proc/meminfo
・USBデバイス情報
proc/bus/usb/*
・PCIデバイス情報
proc/bus/pci/*

【デバイス情報の確認】
> ls /proc



lspciコマンド(PCIデバイス情報を表示)

PCIデバイス情報を表示させるコマンド

【PCIデバイス情報を表示】
> lspci [オプション]

・オプション


・lspciコマンド詳細
http://itpro.nikkeibp.co.jp/article/COLUMN/20140303/540546/



lsusbコマンド(USBデバイス情報を表示)

USBデバイス情報を表示させるコマンド

【USBデバイス情報を表示】
> lsusb [オプション]

・オプション


・lsusbコマンド詳細
http://itpro.nikkeibp.co.jp/article/COLUMN/20140303/540548/



lsmodコマンド(モジュール一覧を表示)

Linuxに読み込まれているモジュールの一覧を表示するコマンド

【モジュール一覧を表示】
> lsmod



modprobeコマンド(カーネルモジュールをロード/アンロード)

カーネルモジュールをロードまたはアンロードするコマンド

【カーネルモジュールをロード/アンロード】
> modprobe [オプション] [カーネルモジュール] [モジュールオプション]

・オプション


・modprobeコマンド詳細
http://itpro.nikkeibp.co.jp/article/COLUMN/20130909/503342/






(101.2)システムのブート



Linuxの起動シーケンス

1.電源ON

2.BIOS/UEFI
・ハードウェアのチェック、初期化
・ディスクの先頭ブロック(MBR)にあるブートローダをメモリにロード

3.ブートローダ
・カーネルをメモリにロード
※Linuxの代表的なブートローダにはLILOとGRUBがある

4.カーネル
・メモリの初期化、システムのクロック設定
仮のルートファイルシステム(initramfs)をマウントする
・最初のプロセスinitもしくはsystemdプロセスを実行

5.initもしくはsystemd
・必要なサービスを順次起動
※ Linuxの代表的な起動方法はSysVinitとsystemdがある




SysVinit(System Five Init)

カーネルによって最初に実行されるプロセスであるinitが順次サービスを起動する仕組み
SysVinitはあるサービスの起動が滞るとそれ以降のサービス起動が待たされてしまい全体として起動が遅くなる。

起動の流れは以下
1.initが/etc/inittabファイルを読み込む
最近のシステムには/etc/inittabファイルがないことが多い
2.initが/etc/rc.sysinitスクリプトを読み込む
3.initが/etc/rcスクリプトを実行する
4./etc/rcスクリプトが「/etc/rc<ランレベル>.d」ディレクトリ以下のスクリプトを実行する
「/etc/rc<ランレベル>.d」ディレクトリ配下には/init.d配下のスクリプトのシンボリックリンクが格納されている。



systemd

カーネルによって最初に実行されるプロセスであるsystemdが各種サービスを管理する。
サービスの起動は並列的に行われるため、システムの起動時間はSysVinitよりも起動時間は短縮される。

systemdはUnitと呼ばれる処理単位に分かれている。
代表的なUnitは以下
service:各種サービスを起動する
device:各種デバイスを表す
mount:ファイスシステムをマウントする
swap:スワップ領域を有効にする
target:複数のUnitをグループにする

起動の流れは以下
1.起動すると/etc/systemd/system配下にあるdefault.targetを実行する
※事前にdefault.targetにランレベルにあったターゲットを設定する必要がある。
2.default.targetに紐づいたサービスが順次実行される



Upstart

SysVinitを改善したinitの仕組み
イベントドリブンで指定された処理が実行される。



dmesgコマンド(カーネルのメッセージ表示)

【カーネルのメッセージ表示】
> dmesg [オプション]

コマンド詳細
http://itpro.nikkeibp.co.jp/article/COLUMN/20130909/503271/?rt=nocnt

補足
・システム起動後に長時間立つと、起動時のメッセージが消えてしまう可能性あり
※リングバッファのため



(101.3)ランレベル/ブートターゲットの変更とシステムのシャットダウンまたはリブート



ランレベル

SysVinitではランレベルという動作モードがある。
※systemdではdefault.targetにリンクを張る(後述)
動作モードは以下



runlevelコマンド(ランレベルを表示)

ランレベルを表示するコマンド

【ランレベルを表示】
> runlevel [オプション]

・オプション


※直前のランレベルが存在しない場合は「N」と出力される。
・runlevel コマンド詳細
http://itpro.nikkeibp.co.jp/article/COLUMN/20131218/525642/



initコマンド(ランレベルを変更)

プロセス制御・ランレベルを変更するコマンド

【ランレベルを変更】
> init [オプション] [ランレベル]

・オプション


・initコマンド詳細
https://webkaru.net/linux/init-command/
・補足
telinitコマンドでも同様のことができる



/etc/inittabでデフォルトランレベル設定

SysVinitでは/etc/inittabを変更することで起動したときのランレベルを指定できる。
記述方法は以下
id:<ランレベル>:initdefault:



systemdでデフォルト起動方式の設定(ランレベル相当)

systemdではdefault.targetのシンボリックリンクを作成することで起動方法を指定できる。
※systemdではランレベルという概念がないみたい

ランレベルとターゲットに比較は以下



wallコマンド(ユーザにメッセージを送信)

ログインしているユーザにメッセージを送信するコマンド

【ユーザにメッセージを送信】
> wall [文字列]

・wall コマンド詳細
http://www.itsenka.com/contents/development/unix-linux/wall.html



systemctlコマンド(サービスを管理)

systemdでサービスを管理するコマンド

【サービスを管理】
> systemctl [サブコマンド] [Unit名]

・サブコマンド



shutdownコマンド(シャットダウン・再起動実行)

システムをシャットダウン・再起動するコマンド

【シャットダウン・再起動実行】
> shutdown [オプション] 時間 [メッセージ]

オプション

補足
・時間は0:0やnowなどが使える
・1時間後を指定する場合は「-r +60」と分単位で指定する

コマンド詳細
http://itpro.nikkeibp.co.jp/article/COLUMN/20060227/230883/







以上!!!

スポンサーリンク

フォローする

スポンサーリンク
Powered by YSKTEC.COM