目標
- GRUB(GRUB Legacy)のインストールと設定方法ついて理解する
- GRUB2 の設定方法ついて理解する
GRUB(GRUB Legacy)とGRUB(GRUB2)
最近のLinuxではほとんど行う事のないブートローダーのインストールですが、ひと昔前はユーザーが手動で行う必要がありました。ここでは、その方法などを簡単に確認します。
昔のLinuxでのGRUB(GRUB Legacy)の手動インストール
以前のLinuxシステムでは、GRUB(GRUB Legacy)をインストールする手順は以下のように進められることが多かったです。
- GRUB(GRUB Legacy)のインストール:
- まず、grub-installコマンドを使用して、GRUB(GRUB Legacy)をディスクのMBR(マスターブートレコード)にインストールします。
- GRUB(GRUB Legacy)設定ファイルの編集:
- GRUB(GRUB Legacy)の設定ファイル(/boot/grub/grub.conf または /boot/grub/menu.lst)を手動で編集して、ブートするカーネルやオプションを指定します。
- GRUB(GRUB Legacy)の更新:
- 設定を変更したり、新しいカーネルをインストールした場合、GRUB(GRUB Legacy)を再設定する必要がありました。多くのディストリビューションでは、grub-mkconfigを使って設定ファイルを更新しました。
①のインストール例
/dev/hdaはGRUB(GRUB Legacy)をインストールする物理ディスクです。システムがBIOS(Legacy BIOSモード)でブートしている場合、GRUB(GRUB Legacy)はMBR(マスターブートレコード)にインストールされます。
sudo grub-install /dev/hda
②のファイル設定例
次のような設定を手動で追加します。
default=0
timeout=5
title Ubuntu
root (hd0,0)
kernel /vmlinuz-4.15.0-96-generic root=/dev/sda1
initrd /initrd.img-4.15.0-96-generic
1. default=0
- 意味: default=0 は、GRUBのメニューで最初に選ばれる(デフォルトの)ブートエントリーを指定します。
- 解説: GRUB(GRUB Legacy)のメニューに複数のブートオプションがある場合、defaultはその中からどれを最初に選択するかを決定します。この場合、0という番号が指定されていますので、リストの最初のエントリー(title Ubuntu)がデフォルトとして選ばれます。もし別のカーネルやオプションをデフォルトにしたい場合は、番号を変更します(例えば、default=1なら2番目のエントリーがデフォルトになります)。
2. timeout=5
- 意味: timeout=5 は、GRUB(GRUB Legacy)のメニューが表示されてから5秒間待機することを指定します。
- 解説: GRUB(GRUB Legacy)メニューが表示された後、timeoutに設定された秒数が経過すると、自動的にデフォルトのエントリー(この場合はtitle Ubuntu)が選ばれてブートが開始されます。この時間内に手動で他のエントリーを選択することもできます。
3. title Ubuntu
- 意味: title Ubuntu は、GRUB(GRUB Legacy)のメニューに表示されるタイトルです。
- 解説: メニューの項目として「Ubuntu」と表示され、このタイトルを選択すると、そのエントリーに対応するブート設定が実行されます。この場合、「Ubuntu」を選ぶと、指定されたカーネルと設定でブートが開始されます。
4. root (hd0,0)
- 意味: root (hd0,0) は、ルートパーティションの場所を指定します。
- 解説: GRUB(GRUB Legacy)では、ディスクとパーティションを (hdX,Y) の形式で指定します。ここで、(hd0,0) は「最初のディスク(通常は /dev/sda)の最初のパーティション(通常は /dev/sda1)」を指します。この設定では、GRUBがUbuntuのシステムファイルを格納しているパーティションをこの場所から探します。
5. kernel /vmlinuz-4.15.0-96-generic root=/dev/sda1
- 意味: kernel は、GRUB(GRUB Legacy)に対して起動するカーネルイメージと、ルートファイルシステムの指定を行います。
- 解説:
- /vmlinuz-4.15.0-96-generic は、ブートするカーネルのパスを示します。この場合、vmlinuz-4.15.0-96-genericというカーネルを使用します。vmlinuzは圧縮されたカーネルイメージファイルで、システム起動時にこのカーネルがロードされます。
- root=/dev/sda1 は、カーネルにどのパーティションをルートファイルシステムとして使用するかを指定します。この例では、/dev/sda1(最初のディスクの最初のパーティション)がルートファイルシステムとして使われます。
6. initrd /initrd.img-4.15.0-96-generic
- 意味: initrd は、初期RAMディスク(initrd)を指定します。これは、カーネルが起動する際に必要な初期化ファイルシステムを含んだ圧縮されたイメージです。
- 解説: /initrd.img-4.15.0-96-generic は、カーネル起動時に必要なドライバやモジュール、ファイルシステムをロードするためのイメージファイルです。このイメージがカーネルによってロードされ、システムが完全に起動する前に必要な初期化処理を行います。
③のGRUB(GRUB Legacy)更新
例えば、Debian系のシステムでは、以下のコマンドを実行していました。
sudo grub-mkconfig -o /boot/grub/grub.cfg
近年のLinuxの変化
時が経つにつれて、GRUBを手動でインストールする必要がなくなり、特にUEFI(Unified Extensible Firmware Interface)を使うシステムでは、GRUBの設定が大きく変わりました。UEFIシステムでは、GRUBは通常、EFIシステムパーティション(ESP)にインストールされます。さらに、最近のディストリビューション(Ubuntu 20.04以降など)では、GRUBはインストール時に自動的にセットアップされ、ユーザーが手動でインストールや設定を行う必要がほとんどなくなっています。
GRUB(GRUB Legacy)とGRUB(GRUB2)の違い
- MBRとUEFI:
- 昔は、GRUB(GRUB Legacy)は主にMBR(マスターブートレコード)にインストールされ、BIOSモードでの起動が標準でした。現在では、UEFIシステムが一般的であり、GRUB(GRUB2)はEFIシステムパーティション(ESP)にインストールされます。
- 手動設定と自動設定:
- 昔は、GRUB(GRUB Legacy)の設定ファイル(grub.confやmenu.lst)を手動で編集し、ブートオプションやカーネルを指定する必要がありました。現在では、ほとんどのディストリビューションが自動的に設定を管理し、update-grubやgrub-mkconfigを使って自動的に設定ファイルを更新します。
- ブートローダーの管理の簡素化:
- 現代のLinuxシステムでは、GRUB(GRUB2)のインストールや設定は非常に自動化されており、ユーザーが手動で行う操作はほとんどなくなっています。インストール時に自動的にGRUB(GRUB2)がセットアップされ、システムの再インストールやアップデート時にも自動的に管理されます。
GRUB2の設定ファイルの構成
GRUB2の設定ファイルは、主に2つのファイルに分かれています。
- /etc/default/grub: GRUBの基本的な設定が記述されているファイルで、ここで設定を変更します。このファイルには、GRUBのデフォルトの挙動やブートオプションなどが指定されています。
- /boot/grub/grub.cfg:実際にブート時に使用される設定ファイルです。grub.cfg は直接編集せず、/etc/default/grub の設定をもとに自動的に生成されます。
/etc/default/grubの設定パラメータ
パラメータ | 説明 |
---|---|
GRUB_DEFAULT | デフォルトで起動するOSの番号。例えば、0は最初のエントリーを意味します。 |
GRUB_TIMEOUT | GRUBメニューの表示時間(秒単位)。例えば、5秒後にデフォルトのOSが起動します。 |
GRUB_CMDLINE_LINUX | カーネルに渡すブートオプション(例えば、quietやnomodesetなど)。 |
GRUB_DISABLE_RECOVERY | リカバリーモードのメニュー項目を非表示にする(trueに設定で無効化)。 |
GRUB_DISABLE_SUBMENU | サブメニューを無効にし、すべてのカーネルをフラットなリストとして表示する。 |
GRUB_TERMINAL_OUTPUT | メニューを表示するデバイス(例えば、consoleやgfxterm)の指定。 |
設定ファイル/etc/default/grubを編集した後、変更を反映させるためにupdate-grubコマンドを実行する必要があります。このコマンドは、/etc/default/grubファイルを読み込み、必要に応じて/boot/grub/grub.cfgを再生成します。
sudo update-grub
/etc/default/grubファイルの編集
GRUB2は非常に強力で柔軟なブートローダーです。ブートオプションやカーネルの設定を変更することで、システムの起動動作を細かく調整することができます。適切な設定を行うことで、システムの起動時間を短縮したり、問題のトラブルシューティングを行うことができます。ただし、GRUB設定を変更する際は注意が必要です。間違った設定をするとシステムが起動しなくなることもあるため、設定を変更する際は慎重に行うことが重要です。次のコマンドで/etc/default/grubファイルの編集が行えます。
sudo vi /etc/default/grub
GRUB_CMDLINE_LINUXに必要なブートオプションを追加した場合
GRUB_CMDLINE_LINUX="root=/dev/sda1 noscsi nousb rd.lvm.lv=myvolume quiet single"
各オプションの意味は以下の通りです:
- root=/dev/sda1: ルートパーティションとして/dev/sda1を指定しています。これは、Linuxが起動する際に使用する最初のパーティションを示します。
- noscsi: SCSIデバイスを無効化します。これにより、SCSIデバイスを使用しないように設定します。
- nousb: USBデバイスを無効化します。これにより、USB関連のデバイスがシステム起動時に認識されなくなります。
- rd.lvm.lv=myvolume: LVM(Logical Volume Management)を使用している場合、myvolumeという論理ボリュームだけを有効にします。これは特定のLVMボリュームを使用したい場合に役立ちます。
- quiet: 起動時の画面出力を抑制します。これにより、起動メッセージが非表示になり、スムーズな起動画面が表示されます。
- single: シングルユーザモードとして起動します。このモードでは、システムは最小限のサービスだけを起動し、通常はメンテナンス作業に使います。
変更を加えた後、GRUBの設定を反映させるために、update-grubコマンドを実行します。
sudo update-grub
設定が反映されるように、システムを再起動します。
sudo reboot
再起動後、GRUBメニューが表示され、指定したブートオプションが有効になった状態でシステムが起動します。
今回は以上になります。
ブックマークのすすめ
「ほわほわぶろぐ」を常に検索するのが面倒だという方はブックマークをお勧めします。ブックマークの設定は別記事にて掲載しています。

