本記事ではLPIC1(Ver4.0)101試験に合格するため『主題101:システムアーキテクチャ』について自分が勉強したことをまとめました。
LPIC1(Ver4.0)101試験の出題範囲はLPICのサイト(101試験範囲)に掲示されており、以下の様になっています。
目次
目次
事前準備
1.Linuxの環境を用意する
LPICを勉強する上でLinuxの環境で実際に動かしてみるとよいです。Windows上でも仮想Linux環境を構築すれば簡単にLinuxを動かすことができます。以下に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ディレクトリ配下の設定ファイルが使用されており、設定ファイルを変更することでデバイスファイルの名前などを変えることもできる。
udev自体の設定ファイルは/etc/udev/udev.confにあり、udevのログレベルなど変更できる。
デバイスファイル
Linuxはハードウェアのアクセスを抽象化したデバイスファイルにて行う。
デバイスファイルは/devディレクトリ配下にある。
/procファイル
Linuxカーネルが認識しているデバイス情報が/procディレクトリ配下に格納
・CPU情報
/proc/cpuinfo
・IRQ(割り込み)情報
/proc/interrupts
・I/Oアドレス情報
/proc/ioports
・メモリ情報
/proc/meminfo
・USBデバイス情報
/proc/bus/usb/*
・PCIデバイス情報
/proc/bus/pci/*
カーネルが初期化時に見つけたPCIデバイスのリスト
・カーネルオプション
/proc/cmdline
起動時にカーネルオプションが格納
lspciコマンド(PCIデバイス情報を表示)
PCIデバイス情報を表示させるコマンド
コマンド詳細
http://itpro.nikkeibp.co.jp/article/COLUMN/20140303/540546/
lsusbコマンド(USBデバイス情報を表示)
USBデバイス情報を表示させるコマンド
コマンド詳細
http://itpro.nikkeibp.co.jp/article/COLUMN/20140303/540548/
補足
・「usbmodules」コマンド・・・USBデバイスが利用できるモジュールを表示する
lsmodコマンド(モジュール一覧を表示)
Linuxに読み込まれているモジュールの一覧を表示するコマンド
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配下のスクリプトのシンボリックリンクが格納されている。
カーネルが一番最初に実行するユーザプロセスは「/sbin/init」である。
systemd
カーネルによって最初に実行されるプロセスであるsystemdが各種サービスを管理する。
サービスの起動は並列的に行われるため、システムの起動時間はSysVinitよりも起動時間は短縮される。
systemdはUnitと呼ばれる処理単位に分かれている。
代表的なUnitは以下
service:各種サービスを起動する
device:各種デバイスを表す
mount:ファイスシステムをマウントする
swap:スワップ領域を有効にする
target:複数のUnitをグループにする
起動の流れは以下
1.起動すると/etc/systemd/system配下にあるdefault.targetを実行する
※事前にdefault.targetにランレベルにあったターゲットを設定する必要がある。
2.default.targetに紐づいたサービスが順次実行される
systemdでデフォルトのtargetを決めたい場合、
カーネルオプションで「systemd.unit=xxx.target」と指定する・
Upstart
・SysVinitを改善したinitの仕組み
・イベントドリブンで指定された処理が実行される。
・initctlコマンドでジョブの開始や停止、表示が可能
・SysVinitとは互換性あり
dmesgコマンド(カーネルのメッセージ表示)
コマンド詳細
http://itpro.nikkeibp.co.jp/article/COLUMN/20130909/503271/?rt=nocnt
補足
・システム起動後に長時間立つと、起動時のメッセージが消えてしまう可能性あり
※リングバッファのため
・/var/log/dmesgファイルに内容は保存
(101.3)ランレベル/ブートターゲットの変更とシステムのシャットダウンまたはリブート
ランレベル
SysVinitではランレベルという動作モードがある。
※systemdではdefault.targetにリンクを張る(後述)
動作モードは以下
runlevelコマンド(ランレベルを表示)
ランレベルを表示するコマンド
オプション
※直前のランレベルが存在しない場合は「N」と出力される。
コマンド詳細
http://itpro.nikkeibp.co.jp/article/COLUMN/20131218/525642/
initコマンド(ランレベルを変更)
プロセス制御・ランレベルを変更するコマンド
コマンド詳細
https://webkaru.net/linux/init-command/
補足
・telinitコマンドでも同様のことができる
・telinitコマンドは-qオプションでinitに/etc/inittabを再読み込みさせることができる。
/etc/inittabでデフォルトランレベル設定
SysVinitでは/etc/inittabを変更することで起動したときのランレベルを指定できる。
記述方法は以下
id:<ランレベル>:initdefault:
/etc/inittabでは他にもCtrl+Alt+Delキー入力によるシャットダウン操作も無効化できる。
systemdでデフォルト起動方式の設定(ランレベル相当)
systemdではdefault.targetのシンボリックリンクを作成することで起動方法を指定できる。
※systemdではランレベルという概念がないみたい
デフォルトの起動方式の設定は「systemctl get-default」,「systemctl set-default」コマンドで表示,設定が可能
wallコマンド(ユーザにメッセージを送信)
ログインしているユーザにメッセージを送信するコマンド
コマンド詳細
http://www.itsenka.com/contents/development/unix-linux/wall.html
systemctlコマンド(サービスを管理)
systemdでサービスを管理するコマンド
補足
・デフォルトの起動方式の設定は「systemctl get-default」,「systemctl set-default」コマンドで表示,設定が可能
・ユニットタイプが「.service」だと、「.service」を省略してユニット名のみでOK
shutdownコマンド(シャットダウン・再起動実行)
システムをシャットダウン・再起動するコマンド
補足
・時間は0:0やnowなどが使える
・1時間後を指定する場合は「-r +60」と分単位で指定する
・「shutdown -k “メッセージ”」で再起動はせずにメッセージを送れる。
コマンド詳細
http://itpro.nikkeibp.co.jp/article/COLUMN/20060227/230883/
関連するページ
LPIC-1 試験対策のまとめページ
(次の章) 【LPIC1対策(2)】主題102:Linuxのインストールとパッケージ管理
以上!!!