はじめに
Lpic201の試験でシステム起動順序の問題があるので、ここでまとめてみます。
① 抽象的に理解する
BIOS
電源ON直後にBIOSというソフトウェアが起動。ハードウェアの初期化を行い、どのデバイスからブートするのかをチェックする。その後、ハードディスクの先頭セクターのMBRから、ブートローダーと呼ばれるプログラムを呼び出す。
👉 「どこから起動するか」を決めるフェーズ
ブートローダ
GRUBなどのブートローダが起動して、ハードディスクに格納されたシステムの中から起動するシステムを選択する。読み込んだ後は実行権をカーネルに渡す。
👉 「どのOSを、どんな設定で起動するか」を決めるフェーズ
カーネル
/etc/grub.confの設定に従い、Linuxカーネルが読み込まれる。
- カーネルは,実際は圧縮された形で「/boot/vmlinuz-(カーネルのバージョン番号)」というファイル名で記録
- どのカーネル・ファイルが読み出されるかなどは,/etc/grub.confのkernel行で指定
- メモリ管理、プロセス管理、デバイスドライバを初期化し、ルートファイルシステムをマウントする。そして、最初のユーザー空間プロセス(init)を起動する。
👉 「OSの中身を動かし始める」フェーズ
init
PID 1 として起動し、ランレベルによって各種サービスを(サービス・デーモン・ネットワークを順に)動かす。ログイン可能な状態にする。
👉 「人が使える状態にする」フェーズ
② フェーズごとに使う代表的なコマンド
| フェーズ | 主なコマンド | 何を見るためのものか |
|---|---|---|
| BIOS / UEFI | efibootmgr |
UEFI の起動順序確認 |
| ブートローダ |
grub2-mkconfigcat /proc/cmdline
|
GRUB設定生成 起動時パラメータ確認 |
| カーネル |
uname -admesgsysctl
|
カーネル情報 起動ログ カーネルパラメータ |
| init(systemd) |
ps -p 1systemctlsystemctl get-default
|
PID1確認 サービス管理 起動ターゲット |
まとめ
- BIOS:起動デバイス決定
- ブートローダ:カーネル選択&起動
- カーネル:OSコア初期化
-
init(systemd):サービス起動&利用可能状態へ
でイメージを沸かせながら理解ができました。次は実際にコマンドで確認していきます。
参考:
https://xtech.nikkei.com/it/article/COLUMN/20080207/293346/
「LPICレベル2技術解説セミナー」
リナックスアカデミー
WORLD BIZNet 株式会社
2011年11月23日
矢越昭仁

