システムアーキテクチャ
Intel Core アーキテクチャチップセット
- プロセッサ
- マルチプロセッサ
- メモリーコントローラー
- ホストブリッジ
- グラフィックコントローラー
- ディスプレイインタフェース
- PCI Express
- Local APIC
- PCH
- PCI-to-PCI ブリッジ
- USB コントローラー
- SATA コントローラー
- オーディオコントローラー
- イーサネットコントローラー
- PCI Express
- I/O APIC
プロセッサ情報
/proc/cpuinfo に記載。 lscpu コマンド。
- PCI:IBM PC/AT 互換機の拡張カードを増設するための標準バス。Intel Core マイクロアーキテクチャではチップセット内部の接続バス
- PCI Express:AGP に代わりグラフィック用途にも使われる
- USB:周辺機器を接続するためのシリアルバス
- USB 2.0:480 Mbps
- USB 3.0:5 Gbps
- USB 3.1:10 Gbps
- USB 3.2:20 Gbps
lspci コマンド
システムのすべての PCI バスと接続されているデバイスに関する情報を表示する。 表記は [バス番号].[デバイス番号].[ファンクション番号]
となる。
- -s:特定のバス、デバイス、機能を指定
- -v:詳細情報を表示
- -n:ベンダ名ではなく、ベンダ ID を表示
lsusb コマンド
USB 接続されているデバイスに関する表示
- -t:物理的な階層構造を表示
- -v:詳細な情報を表示
lsof コマンド
オープンしているファイルの一覧を表示する。
lsmod コマンド
ローダブルカーネルモジュール (LVM) の一覧を表示する。
lsscsi コマンド
SCSI デバイスの一覧を表示する。
割り込み
IRQ:デバイスがシステムに処理を要求するときの割り込み要求
デバイスごとに IRQ 番号が割り当てられる。割り込み処理は PIC → APIC → xAPIC → x2APIC が行うように発展した。
- /proc/interrupts:IRQ などインタラプト情報を格納したファイル
- /proc/ioports:デバイスの制御とデータの受け渡しを行う I/O ポートのアドレス
- /proc/cpuinfo:CPU の情報を格納
割り込み種類
- デバイス割込:IRQ 0 ~ 95。エッジの場合は 0 と 1 の切り替わりタイミングをトリガーに、レベルの場合は 0 か 1 かの値で判断する
- MSI 割込:IRQ 120 ~ 141。メッセージを PCI バスに送ることで割り込む
- タイマー割込:1 秒あたりの割り込み回数を HZ 環境変数で指定可能
- リアルタイムクロック割込:IRQ 8。CMOS クロックによる割り込む
- NMI:マスク出来ない割り込み
- LOC:ローカルタイマー割り込み
- RES, CAL, TLB:SMP カーネルでのプロセッサ割り込み
modprobe コマンド
カーネルのモジュールの追加や削除を行う。
- -r, –remove:モジュールを削除する
- –show-depends:モジュールの依存関係を列挙する
- -c, –showconfig:瀬邸ファイルの内容を表示する
ACPI (Advanced Configuration and Power Interface)
ハードウェアコンポーネントの電源管理のための規格。
- 電源ボタン
- ノート PC ふたの開閉
- バッテリー充電状態
- プロセッサの速度制御
MBR と GPT
MBR:最大 4 パーティション、2 TiB GPT:最大 128 パーティション、8 ZiB
ブートシーケンス
- 電源投入
- BIOS 起動 (UEFI 起動)
- ブートローダー GRUB (GRUB2)
- カーネル (vmlinuz) と initramfs を読み込む
- カーネルの実行
- initirawfs 実行
- init の起動 (systemd の起動)、ルートファイルシステムをマウント
- init 実行 (systemd 実行)
- 各種サービスの起動
ディスク先頭領域のブートローダーをメモリに書き込み、起動する。 カーネルは自身を解凍して初期化する。
GRUB
ブートローダーであり、起動 OS の選択やエントリの編集を行う。
grub-install コマンド
GRUB インストールを行う。
grub-install デバイス名
GRUB 設定ファイル
/boot/grub/grub.conf で設定する。
- default:デフォルトで起動する
- timeout:OS 起動までの時間
- splashimage:GRUB の背景画像
- hidedenmenu:GRUB メニューの非表示
- title:OS に対する名前
- root:ルートデバイスを定義
- kernel:カーネルイメージファイルとオプションの指定
- initrd:初期 RAM ディスクのイメージファイルを指定
カーネルに渡すオプション
/proc/cmdline で指定可能。
- ro:読み取り専用でルートパーティションをロード
- root=:ルートパーティションを指定
- quiet:カーネルメッセージを抑制し、表示を行わない
- 設定ファイル:/boot/grub. /boot/grub/grub.conf
- モジュールのディレクトリ:/usr/lib/grub/i386-pc
- スクリプト配置ディレクトリ:/etc/grub.d
起動シーケンス
- BIOS:boot.img (512 Bytes) → core.img (/boot ファイルシステム) → /boot/grub2/ 以下のモジュール読み込み
- EFI:EFI パーティション中の EFI/centos ディレクトリは以下のファイル
- shim.efi:EFI がブートエントリを参照して呼び出す第一ステージのブートローダー
- grubx64.efi:第二ステージのブートローダー
GRUB2 コマンド
CentOS | Ubuntu | BIOS | UEFI | |
---|---|---|---|---|
insmod | X | X | X | X |
set | X | X | X | X |
linux16 | X | X | ||
initrd16 | X | X | ||
linuxefi | X | X | ||
initrdefi | X | X | ||
linux | X | X | X | |
initrd | X | X | X |
initrawfs コマンド
ルートファイルシステムへアクセスするためのディスクデバイスドライバやファイルシステムモジュールを含む CPIO アーカイブ。
システムバージョンをアップデートした場合は再作成する必要あり、次の場合は自動で作成される。
- 新しいバージョンのカーネルパッケージをインストールしたとき
- カーネルコンフィグレーションによりカーネルを作成したとき
システム起動時のメッセージ
リングバッファサイズを超えると古いものから削除される。 次の方法で確認可能。
- /var/log/dmseg
- dmseg コマンド
- -c, –clear:メッセージファイルをリセット
自動起動スクリプト
- /etc/inittab:init のランレベルを指定する。
- /etc/rcXX.d/[S|K]YYscriptname :ランレベル XX の時、YY 番目にスクリプトを S=開始、K=停止する
ランレベルの変更
- init [ランレベル]
- tllinit [ランレベル]
- -q::設定ファイルを再読み込みする
ターゲット=systemd におけるランレベル
ターゲット | ランレベル |
---|---|
default.target | – |
sysinit.target | – |
rescure.target | 1 |
multi-user.target | 3 |
graphical.target | 5 |
systemctl コマンド
systemctl [オプション] サブコマンド [unit 名]
- -a, –all:非アクティブなユニットを含めてロードされているユニットをすべて表示する
- -l, –full:unit 名を省略しないで表示する
- -t, –type:表示するユニットライプを特定する
サブコマンド
- start:ユニットを開始する
- restart:ユニットをリスタートする
- stop:ユニットを停止する
- status:ユニットの状態を表示する
- enable:ユニットを enable にし、自動的に起動する
- disable:ユニットを disable にし、自動的に起動しない
- list-units:アクティブなユニットをすべて表示する
- list-units-files:インストールされているすべてのユニットを表示する
uname コマンド
カーネルバージョンやアーキテクチャの情報を表示する。
- -m:マシンタイプを表示
- -n:ネットワークホスト名を表示
- -r:OS リリースを表示
- -s:OS の名称を表示
- -v:OS バージョンを表示
- -a:情報をすべて表示
wall コマンド
全員のターミナルにメッセージを表示する。
wall [メッセージ]
コメント