ブートシーケンスとは?
システムを立ち上げる処理をブート(boot)と言います。
連続して起こる順序のことをシーケンス(sequence)と言います。
ブートシーケンスとは、電源を入れてからログイン画面もしくはログインプロンプトが表示されるまでのOSが稼働するために必要なすべての設定の一連の流れのことです。
大まかにみると以下の通りです。
- BIOS/UEFI
- ブートローダ
- カーネル
- systemd
BIOS/UEFIとは?
PCの電源を入れると最初にBIOS/UEFIが起動します。BIOS/UEFIはハードウェアのチェックや初期化を行い、ディスクに書き込まれたブートローダを読み出した後、ブートローダに制御を移します。
BIOSの役割
BIOS(Basic Input Output System)はキーボードやハードディスクなどのデバイスを制御する、基本的な制御プログラムです。OSやアプリケーションは、BIOSのインターフェースを地用して簡単にハードウェアにアクセス出来ます。BIOSには以下のような役割もあります。
- OSを起動するためのプログラムをディスクから読み込んで実行
- デバイスの動作設定
- 基本的な入出力の制御
ブートローダ
ブートローダの主な役割は、起動デバイス上からカーネルをメモリ上へ読み込むことです。
カーネル
ブートローダによりメモリ上に読み込まれたカーネルは自己解凍後、カーネル内の初期化処理を行い、メモリにロードされているinitramfsを実行し、systemdの再実行を行います。
カーネル内の初期化処理
カーネルは起動時に以下のような自身の初期化処理を行います。
- ページング機構の初期化
- スケジューラの初期化
- 割り込みベクタテーブルの初期化
- タイマの初期化
initramfsの実行
initramfsは、ディスク内のルートファイルシステムをルートディレクトリにマウントするために、起動時にメモリにロードされる小さなルートファイルシステムです。
- メモリ上に展開されたinitramfsを一時的なルートファイルシステムとしてマウントする。
- initramfs内のsystemdプログラムを起動し、各サービスによりでぃい少ないのルートファイルシステムをマウントする。
- ルートファイルシステムをinitramfsからディスク内のルートファイルシステムに切り替える。
systemdの再実行
カーネルはディスク内のルートファイルシステムの/sbin/initプログラムを再実行します。するとsystemdが再実行され、systemdは設定ファイルを参照して起動シーケンスを開始します。
systemd
systemdはカーネルが生成する最初のユーザプロセスで、プロセス番号は1です。systemdは設定ファイルを参照して起動シーケンスを開始し、グラフィカルターゲットかマルチユーザターゲットまで立ち上げます。
ログイン後に必要なファイルがどこにあるか分からなかったことありませんか?
LinuxのディストリビューションはFHSによってディレクトリの役割やファイルの位置が標準化されています。 各ディレクトリやファイルの存在すべき位置の標準を示すことで利用者はどのような環境でも目的のファイルを容易に検索することができるFHSについて知りたい方は下記リンクから
以上がブートシーケンスについて自分が勉強したことでした。
勉強の為に使った本が2冊ありますので、ご紹介します。
- 本気で学ぶLinux実践入門サーバ運用のための業務レベル管理術
- LPICレベル1
本気で学ぶLinux実践入門サーバ運用のための業務レベル管理術
まだまだ買ったばかりで読んでないところの方が多いのですが、近くの本屋で売っている中で一番良さそうだったので購入しました。これから当分はこの本で勉強してみようと思っています。ブートシーケンスの範囲では詳細な設定についてまで書いてあって非常に勉強になりました。勉強始めたばっかの自分には細かいところはまだいいかなと思っていましたし、おそらく覚えられてはいません(笑)これからしっかりと勉強していきたいと思います。
Linux教科書 LPICレベル1
この本はLPICレベル1を取得した時に大変お世話になりました。資格勉強だけでなくLinuxについて勉強することが出来る本です。また、レベル1ということで初心者向けということもあって分かりやすく様々な説明が書いてあるので自分みたいな勉強始めたての人にはありがたいです。 「本気で学ぶLinux実践入門サーバ運用のための業務レベル管理術 」をこれから勉強していきますが、分からないことがあったらLinux教科書 LPICレベル1に頼る気がします。