Linuxの起動プロセスで見るBIOS/UEFIって何?
- 2024.12.29
- programming
Linuxの起動プロセスについてよく聞かれるのですが、プロセスの最初に行われるBIOS/UEFIってのがあります。
そもそもBIOSってなに?UEFIってなに?
こんな疑問に答えていきます。
Linuxについて勉強中のエンジニア4年目です。LPIC101・102の資格を目指しています。
わからないことを調べ、まとめたことを記事にして発信しています。
参考になったら嬉しいです。
Linuxの起動プロセス
まずはLinuxの起動プロセスを見てみましょう。
主に次の6ステップで起動されます。
Linux起動の6ステップ
-
BIOS/UEFIの実行
・コンピュータの電源を入れると、まずBIOSまたはUEFIが起動します。
・ハードウェアの初期化(CPU、メモリ、デバイス検出など)を行い、次にブートデバイスを選択します。 -
ブートローダーの起動
・ブートローダー(例:GRUBやsystemd-boot)がロードされます。
・ブートローダーは、カーネルイメージを選択してメモリにロードします。
・必要に応じて、カーネルオプション(例:シングルユーザーモード)を設定できます。 -
Linuxカーネルの起動
・カーネルが起動し、システムのハードウェアやデバイスを認識します。
・カーネルはinitramfs(初期RAMディスク)を展開して基本的なシステムのセットアップを行います。 -
initシステムの起動
・カーネルがinitプロセス(PID 1)を起動します。
・現代のLinuxでは、initの代わりにsystemdやUpstart、SysVinitが使用されることが一般的です。 -
ターゲット/ランレベルの設定
・systemdではターゲット(例:multi-user.targetやgraphical.target)を読み込み、必要なサービスやデーモンを開始します。
・古いSysVinitでは、ランレベル(例:3や5)に応じてスクリプトを実行します。 -
ログインプロンプトの表示
・サービスの起動が完了すると、ログイン画面が表示されます(CLIまたはGUI)。
BIOSとUEFI
Linux起動プロセスの最初に行われるBIOSもしくはUEFI。
これまでBIOSが主に活躍しておりましたが、現代のコンピュータでは、BIOSの代わりにUEFI が使用されることが多いです。
どうやら、BIOSからUEFIの過渡期にあるようです。
そこで、まずはBIOSの働きについて詳しく見ていきましょう。
BIOSとは
BIOSは、コンピュータが起動した直後に最初に実行されるプログラムです。
マザーボード上の不揮発性メモリ(通常はROMやフラッシュメモリ)に格納されています。
主な目的は、ハードウェアの初期化とオペレーティングシステム(OS)のブートプロセスをサポートすることです。
BIOSの主な働き
-
ハードウェアの初期化
コンピュータが起動すると、BIOSはまず各種ハードウェアの動作確認と初期化を行います。
初期化対象には以下が含まれます。
・CPU:プロセッサの動作を開始。
・メモリ(RAM):メモリのテストと認識。
・ストレージデバイス:ハードディスクやSSD、光学ドライブの検出。
・キーボードやマウス:入力デバイスの初期化。
・ディスプレイ:ビデオカードやモニタの初期化。この初期化プロセスは、POST(Power-On Self Test) と呼ばれ、ハードウェアの正常性をチェックします。
-
ブートローダーの起動
ハードウェアの初期化が完了した後、BIOSはストレージデバイス(例:HDD、SSD、USBドライブ)の中からブート可能なデバイスを探します。
ブートデバイスには優先順位が設定されており、BIOSはその順序に従ってブートローダーを探し、OSのカーネルをロードします。このプロセスは「ブートストラップ」とも呼ばれます。 -
設定の管理
BIOSには設定画面(BIOSセットアップユーティリティ)があり、以下のような設定を管理できます。
・ブートデバイスの順序。
・システムクロックの設定。
・ハードウェア(CPU、メモリ)の動作モードやパフォーマンス設定。
・セキュリティ設定(例:パスワードやセキュアブート)。BIOS設定は通常、キーボードの特定のキー(例:F2、F12、Deleteなど)を押すことでアクセスできます。
-
ハードウェアとソフトウェア間の仲介
OSやソフトウェアがハードウェアを利用する際、BIOSは基本的な入出力操作をサポートします。たとえば、ディスクからデータを読み込む際の低レベルな操作を管理します。
BIOSとUEFIの違い
BIOSの働きを見たところで、ここではUEFIとの違いを見ていきましょう。
なぜ、現在のコンピュータにUEFIが使われるのか、その理由に注目してみていきましょう。
歴史的背景
まずは、歴史的背景を見ていきます。
・BIOS (Basic Input/Output System)
開発: 1981年、IBMがPCで初めて導入。
長年にわたって広く使われてきたが、技術的な制限が多く、現代のハードウェア要件に適応しにくい。
・UEFI (Unified Extensible Firmware Interface)
開発: 2000年代初頭にIntelがEFI(Extensible Firmware Interface)として開発し、その後UEFIフォーラムによって標準化。
BIOSの技術的な制約を克服するために設計され、現代のコンピュータの要件に適応可能。
BIOSとUEFIの主な違い
BIOSとUEFIの主な違いとして次の表にまとめました。
特徴 | BIOS | UEFI |
---|---|---|
インターフェース | テキストベース(シンプルな画面) | グラフィカル(マウス操作対応) |
ブートモード | レガシーブート(MBR方式) | UEFIブート(GPT方式、セキュアブート対応 |
パーティション方式 | MBR(最大2TB、4つのプライマリパーティション) | GPT(最大18EB、128以上のパーティション) |
初期化速度 | 比較的遅い | 高速 |
ドライバ管理 | 固定されたハードウェアサポート | モジュール化されたドライバで柔軟に対応 |
セキュリティ | セキュリティ機能が限定的 | セキュアブートなど高度なセキュリティ機能 |
拡張性 | 限定的 | モジュール化され、ネットワーク起動や診断ツールが統合可能 |
互換性 | 古いハードウェアに対応可能 | 最新のハードウェア向けに設計 |
技術的な制限
技術的な制限として、MBR(BIOSで使用)とGPT(UEFIで使用)があります。
それぞれの違いを見てみましょう。
MBR (Master Boot Record)(BIOSで使用)
・パーティションサイズは最大2TB。
・プライマリパーティションは最大4つまで。
・古いデバイスやOSでは依然使用されるが、現代の大容量ストレージには対応困難。
GPT (GUID Partition Table)(UEFIで使用)
・理論上の最大サイズは18EB(エクサバイト)。
・パーティション数は128以上可能。
・パーティション情報のバックアップや自己修復機能を持つ。
UEFIが選ばれる理由
これまでの比較を踏まえ、UEFIが選ばれる理由とては次のことがあげられます。
-
大容量ストレージのサポート
現代のコンピュータでは、2TB以上のストレージが一般的になっています。
BIOSのMBRではこの制限を超えることができないため、GPTをサポートするUEFIが必要です。 -
高速なブートプロセス
UEFIはハードウェアを効率的に初期化するため、BIOSよりも起動が速いです。
さらに、特にSSDと組み合わせた場合、パフォーマンス向上が顕著です。
-
セキュリティ機能の強化
セキュアブート: 信頼された署名付きのOSブートローダーのみを許可することで、マルウェア(例:ルートキット)の侵入を防ぎます。
また、OSやハードウェアの安全性が強化されるため、セキュリティが重要なデバイスで特に重視されます。 -
モジュール化と拡張性
・UEFIはモジュール化された設計により、将来的な拡張が容易です。
・内蔵ネットワークサポートや診断ツール、リモート管理機能などを統合できます。 -
モダンOSとの互換性
最新のOS(例:Windows 11、Linuxの多くのディストリビューション)は、UEFIを前提に設計されています。
そのため、Windows 11では、UEFIとセキュアブートが必須条件になっています。 -
互換性の確保
・レガシーモード:
UEFIは、多くの場合BIOS互換モード(レガシーモード)を提供しており、古いOSやMBRパーティションとの互換性を確保しています。
・ハイブリッドシステム:
いくつかのシステムでは、BIOSとUEFIを切り替えて使用可能です。
まとめ
UEFIは、BIOSの制限を克服するために設計され、現代の大容量ストレージ、高速起動、セキュリティのニーズに応える機能を持っています。
そのため、近年のコンピュータではUEFIが主流となっています。
-
前の記事
Linuxを学ぶメリットを紹介 2024.11.23
-
次の記事
記事がありません