【初心者向け】GRUBとは何か?その特徴と仕組みを分かりやすく解説

grubとは何か?のアイキャッチ画像 仕事とスキル

最近grub周りで少しハマってしまい、一から勉強し直したのでまとめます。

時間のない人はまとめだけ見てみてください。

GRUBとは?

GRUB(GRand Unified Bootloader)は、Linuxを含む多くのオペレーティングシステム(以下、OS)に組み込まれているブートローダーです。

ぼく
ぼく

ブートローダーは、コンピュータの電源が入った後に、OSを起動させるプログラムのことだよ。

GRUBの特徴

設定の読み込み

GRUBは設定ファイル(grub.cfg)を読み込んで、どのOSをデフォルトで起動するか、タイムアウト時間、その他の設定を管理します。

OSの選択

コンピュータを起動すると、最初にGRUBが実行され、どのオペレーティングシステムを起動するか選択する画面(メニュー)が表示されます。例えば、LinuxとWindowsの両方がインストールされている場合、どちらを起動するか選べます。

カーネルの読み込み

OSを選択すると、GRUBはそのOSのカーネル(中心部分)をメモリに読み込みます。カーネルが読み込まれると、OSが起動します。

なぜGRUBが必要なのか?

ぼく
ぼく

GRUBがないと一体どうなってしまうの?

コンピュータのハードウェアは直接OSを起動できないため、ブートローダーが必要です。GRUBは、その役割を果たすために開発されたプログラムです。特にLinuxでよく使われるブートローダーであり、柔軟で多機能です。

GRUBの実体は?

ぼく
ぼく

そのGRUBのプログラムは一体どこにあるの?

OSがインストールされているディスク内の特定のパーティションおよび領域に構成されています。

BIOSの場合:ディスクの最初のセクター(512バイト)

UEFIの場合:UEFIシステムパーティション(ESP: EFI System Partition)内

上記に構成されているコードが実行され、/boot/grubディレクトリ内にある実行ファイルや設定ファイルが読み込まれ、OSをロードします。

GRUBの流れ

GRUBによって、OSが起動するまでの流れは以下の通りです。

GRUBの動作の流れ
  • STEP1
    コンピュータの起動

    コンピュータの電源が入ると、最初にBIOSまたはUEFIが起動し、ハードウェアの初期化とブートデバイスの検出を行います。

  • STEP2
    GRUBの起動

    BIOSまたはUEFIがブートデバイスからGRUBを起動します。

  • STEP3
    設定ファイル(grub.cfg)の読み込み

    設定ファイル/boot/grub/grub.cfgを探し、読み込みます。このファイルにはブートメニューのエントリ、デフォルトのブートオプション、タイムアウト設定などが含まれています。

  • STEP4
    ブートメニューの表示

    grub.cfgの内容に基づいて、GRUBはユーザーにブートメニューを表示します。ユーザーはここで、どのOSを起動するかを選択できます。

  • STEP5
    カーネルの読み込み

    ユーザーがOSを選択すると、GRUBは対応するカーネルイメージと初期RAMディスク(initrd/initramfs)をメモリに読み込みます。これらのファイルもgrub.cfgで指定されています。

  • STEP6
    OSの起動

    カーネルがメモリに読み込まれた後、GRUBは制御をカーネルに渡します。カーネルは自身の初期化プロセスを開始し、最終的にOSが起動します。

なぜOS起動前にgrub.cfgを読み込めるのか

ぼく
ぼく

え、待って。OSが起動する前に、なんでファイルシステムにあるgrub.cfgを探せるの?

GRUBは自分自身に組み込まれたファイルシステムドライバを持っているため、OSのカーネルが起動する前でもファイルシステムにアクセスできます。これにより、GRUBは必要なブート設定を読み込み、カーネルイメージや初期RAMディスクをメモリにロードすることが可能です。

GRUBプロンプト

grub>というプロンプトが表示される場合、GRUBが通常のメニューを表示できなかったり、設定ファイルの読み込みに失敗したりしたことを示しています。この場合、手動でコマンドを入力してトラブルシューティングを行う必要があります。

ぼく
ぼく

たまにOSの起動に失敗したらでるやつね。

まとめ

  • GRUBは、多くのオペレーティングシステムを起動するためのブートローダー。
  • コンピュータの電源を入れると最初に実行され、OSを選択して起動する役割を持つ。
  • 設定ファイルから情報を読み込み、柔軟な起動オプションを提供する。
  • grub>プロンプトは、問題発生時の手動操作を可能にするインターフェース。

この記事を書いた人
いわた

某大手外資系IT企業にて約10年ほどITエンジニアとして働いております。30代男性、都内在住。
いつレイオフされてもいいように、2024年5月よりブログを開始。
いつかは副業がサラリーマンですと言いたい。

スキル:インフラ周り/クラウド/Linux/YESマン
趣味:健康/プロ野球/ゲーム(パワプロ)

パワプロのオタクもしてます。

いわたをフォローする
仕事とスキル

コメント

タイトルとURLをコピーしました