パソコンの電源ボタンを押してから、ログイン画面が表示されるまでの間に、コンピュータの内部では一体何が起きているのでしょうか。
その答えが「ブートシーケンス」です。
エラーでパソコンが起動しなかったり、LinuxやWindowsを複数インストールしたりする場面で必ず登場するこの用語を、基礎からわかりやすく解説します。
ブートシーケンスの意味
ブートシーケンス(英:boot sequence)とは、コンピュータの電源を入れてからOSが起動し、ログイン画面またはログインプロンプトが表示されるまでの、一連の処理の流れのことです。
「起動順序」「起動シーケンス」「ブート順序」とも呼ばれます。
- ブート(boot):コンピュータを起動すること
- シーケンス(sequence):決まった順番で行われる一連の処理
「ブートシーケンス」という言葉は、起動処理の「手順全体の流れ」を指す場合と、BIOSやUEFIの設定画面で指定する「どのデバイスから起動を試みるかの優先順位」を指す場合の2通りの使われ方があります。
「ブート」の語源
「ブート(boot)」という言葉は、英語の「ブートストラップ(bootstrap)」に由来します。
「ブーツのつまみ革(strap)を自分で引っ張って自分を持ち上げようとする」というイメージからきた表現です。
コンピュータはプログラムがなければ動けませんが、「プログラムを読み込むプログラム」はどうやって読み込むのか?というパラドックスを、このたとえで表現しています。
電源を入れると最初から内蔵されている小さなプログラムが動き出し、次々と大きなプログラムを呼び出していく仕組みが、「自力で立ち上がる」姿に重ねられています。
(出典:ブート – Wikipedia)
ブートシーケンスの大まかな流れ
現代のパソコンでは、電源投入からOSが起動するまでに大きく4つのフェーズがあります。
| フェーズ | 名称 | 主な処理内容 |
|---|---|---|
| 1 | BIOS / UEFI | ハードウェアの初期化・POSTの実行・起動デバイスの選択 |
| 2 | ブートローダー | カーネルをメモリに読み込む |
| 3 | カーネル | ハードウェアの認識・ファイルシステムのマウント |
| 4 | init / systemd | サービス・ネットワーク・ログイン画面の起動 |
それぞれのフェーズを順番に見ていきましょう。
フェーズ1:BIOS / UEFI の起動と POST
電源を入れると、マザーボードに内蔵されたファームウェアが最初に起動します。
このファームウェアが BIOS(Basic Input/Output System)または UEFI(Unified Extensible Firmware Interface)です。
ファームウェアが最初に行うのが POST(Power-On Self Test:パワーオンセルフテスト)です。
POSTとはCPU・RAM・ストレージ・キーボードなど主要なハードウェアが正常に動作しているかを自動チェックする処理で、POSTで異常が検出されるとエラーメッセージや警告音(ビープ音)が出て起動が止まります。
POSTが正常に完了すると、BIOS/UEFIは「ブートシーケンス(起動順序)」に従って、どのデバイス(HDD・SSD・USBメモリ・DVDドライブなど)からOSを読み込むかを順番に試します。
BIOS と UEFI の違い
| 比較項目 | BIOS | UEFI |
|---|---|---|
| 歴史 | 1970年代から使われてきた旧来の規格 | BIOSの後継として設計された新しい規格 |
| 起動方式 | HDD/SSDの先頭セクタ(MBR)からブートローダーを読み込む | EFIシステムパーティション(ESP)からブートローダーを読み込む |
| 対応ディスク容量 | 2TB未満(MBR制限) | 2TB超に対応(GPT方式) |
| セキュリティ | セキュアブート非対応 | セキュアブートに対応(署名済みソフトウェアのみ起動を許可) |
| GUI | 基本的にキーボード操作のみ | マウス操作が可能なGUI設定画面を持つ機種も多い |
現在販売されているパソコンのほとんどはUEFIを採用しています。
ただし「BIOS設定画面」「BIOS設定を変更する」といった表現は、UEFI環境でも日常的に使われています。
(出典:Arch Linux Boot Process – ArchWiki)
フェーズ2:ブートローダーの実行
BIOS/UEFIがブートデバイスを見つけると、そのデバイス上にあるブートローダー(boot loader)を読み込んで実行します。
ブートローダーとは「OSを起動するためのプログラム」のことです。
アプリケーションを起動するのはOSの仕事ですが、OS自身を起動することはOSにはできません。そのため、OS本体(カーネル)をメモリに読み込む役割を持つ専用のプログラムが必要になります。これがブートローダーです。
Linuxで広く使われているブートローダーは GRUB(Grand Unified Bootloader)です。
GRUBはBIOS環境とUEFI環境の両方に対応しており、複数のOSを選択して起動する「マルチブート」機能も持っています。
なお、かつてよく使われていた LILO(Linux Loader)は2015年12月に開発が終了しています。
フェーズ3:カーネルの初期化
ブートローダーがカーネル(OSの中核プログラム)をメモリに読み込むと、カーネルが制御を引き継ぎます。
カーネルはここで以下のような処理を行います。
- CPU・メモリ・デバイスドライバの初期化
- initramfs(Initial RAM Filesystem)をメモリ上に展開し、一時的なルートファイルシステムとして利用
- ストレージデバイスを認識し、本来のルートファイルシステムをマウント
- 最初のユーザープロセスを起動
initramfsとは、カーネルが起動直後に使う「仮のファイルシステム」のことです。
実際のストレージをマウントするために必要な最小限のドライバやツールが格納されており、本番環境のファイルシステムが使えるようになったら役目を終えます。
フェーズ4:init / systemd によるサービス起動
カーネルが最初に起動するユーザープロセスが systemd(またはinitとも呼ばれる)です。
このプロセスのプロセスID(PID)は常に 1 です。
systemdは設定ファイルを読み込み、次のような処理を並列して実行します。
- ネットワークの設定
- ファイルシステムのチェック・マウント
- 各種サービス(データベース・Web・SSH など)の起動
- ログイン画面(グラフィカル環境またはコマンドラインプロンプト)の表示
systemdがログイン画面を表示した時点で、ブートシーケンスは完了です。
(出典:Oracle Linux 9 Managing Kernels and System Boot)
コールドブートとウォームブートの違い
| 用語 | 意味 |
|---|---|
| コールドブート(cold boot) | 電源を入れた瞬間から始まるブート。全ての初期化処理が実行される |
| ウォームブート(warm boot) | リセット操作(再起動)によって行われるブート。一部の初期化処理が省略される |
日常的な「再起動」はウォームブートです。
コールドブートは電源オフ後に再び電源を入れる場合や、BIOSリセットが伴う場合に相当します。
ブートシーケンスが関係する場面
ブートシーケンスは、次のような実務的な場面で意識することになります。
OSを新規インストールするとき、インストールメディア(USBや光学ディスク)からパソコンを起動するために、BIOS/UEFIのブートシーケンス(起動順序)を一時的に変更する必要があります。
通常はHDD/SSDが最優先になっているため、USBメモリやDVDを最優先に変更してからインストール作業を行います。
また、WindowsとLinuxを1台のパソコンに共存させる「デュアルブート」環境では、ブートローダー(GRUB)がブートシーケンスの中でOSの選択メニューを表示します。
パソコンが起動しないトラブルが発生した場合も、ブートシーケンスのどのフェーズで止まっているかを確認することがトラブルシューティングの基本です。
まとめ
ブートシーケンスとは、コンピュータの電源を入れてからログイン画面が表示されるまでの一連の処理の流れのことです。
大まかには「BIOS/UEFIの起動とPOST」→「ブートローダーの実行」→「カーネルの初期化」→「systemdによるサービス起動」という4段階で進みます。
OSのインストール・デュアルブート・起動トラブルへの対処など、パソコンを深く活用する場面でたびたび関係する概念です。


コメント