用語をさっくり緩めに。まとめる。
~ Linux 起動まで ~
■ 起動順
BIOS
↓
ブートローダ
↓
カーネル
↓
init
■ BIOS
- 電源を入れると起動する。
- HDDを最低限認識する。
- 優先順位に従って読み込んでいき、ブートローダが来たら制御を移す。
- 優先順位を変えれる。
MBRとは
└ マスターブートレコードの略。
└ 一番最初に読み込まれるところ。
参照
▼ UEFI
- Unified Extensible Firmware Interfaceの略 (統一・拡張可能・回路情報・接点)
- BIOSより高機能。
■ ブートローダ
起動すると、記憶装置(HDD)内のカーネルをロードし、制御を移す。
▼ ESP
- 物理的なマシンを起動する
-
/boot/efi
にマウントされる
■ カーネル
- ハードウェアを認識・制御
- いろんな初期化
/proc/cmdline
・・・ブートローダから渡されたパラメータが入っている。
▼ カーネルモジュール
/proc/modules
└ ロードされているカーネルモジュールの情報が入っている
ルートファイルシステムをマウント
↓
initを起動 ・・・①
▷ [コマンド] dmesg
リングバッファの内容を出力。
(リングバッファには、カーネルが出すメッセージが入っている。)
リングバッファとは
└ リング状の一時的なデータ記録場所。(最初と最後が繋がっている。)
■ initプログラム
-
/etc/inittab
配下にいる。 - ランレベルのデフォルトを設定できる。
▼ SysVinit
- 設定ファイルの
/etc/inittab
:システム起動時に読み込まれる - initプログラムを採用しているシステム。
- ランレベルに応じてサービスを起動・停止してくれる。
- スクリプトを実行する。
- プロセス管理はPID
-
/sbin/init
①を起動してくれる。
▼ 「Upstart」と「systemd」
- 並列で起動できる。ため、直列で起動する「SysVinit」より速い!
▷ Upstart
- 単位は「ジョブ」。
- ジョブの実行を「イベント」で管理している。
- SysVinitと互換性がある。
- ランレベルのデフォルトを設定できる。
→/etc/event.d/rc-default
(ここで
▷ systemd
- 単位は「Unit」
└ Unitとは設定ファイル
└ Unitの設定に従って処理を実行する。 - シンボリックリンクを作成し、期待するサービス群を起動できる。
- プロセス管理は「cgroups」
- 起動時に最初に実行されるUnitは
/etc/systemd/system/default.target
-
systemctl
コマンドで管理されている。
○ systemctl コマンド
各サービスの稼働状況や起動設定を管理する。
○ systemd-journald デーモン
- プロセスの標準出力やsyslogへのログの一元管理ができる。
- バイナリ形式で出力されるので、
journalctl
コマンドで読めるようにする。
▼ SCSI
-
/proc/scsi/scsi
で確認可能。
▼ DMA
- ダイレクトメモリアクセスの略。
- CPUを介することなくメインメモリと周辺機器の間で直接的に情報転送を行うことができる。
-
/proc/dma
にチャネル情報が入っている。
~ その他 ~
■ 大容量記憶装置
▷ 何ができるか
OSをインストールすることもできる。
たくさんデータを保管できる。
- HDD
└ 容量でっかくてコスパ最強だが、壊れやすい - USBフラッシュドライブ
└ 俗にいうUSBメモリ - SSD(Solid State Drive)
└ フラッシュメモリ/長期保存ができないが、物理耐久あり/めっちゃ速い