「設定 - ブートローダ」の版間の差分
124行目: | 124行目: | ||
# ライブUSBからLinuxを起動する。<br> | # ライブUSBからLinuxを起動する。<br> | ||
# ターミナルを開いて、既存のLinuxのインストール先パーティションをマウントする。 | # ターミナルを開いて、既存のLinuxのインストール先パーティションをマウントする。 | ||
#: <pre>sudo mount /dev/ | #: ※Xは、既存のLinuxがインストールされているストレージ番号を指定する。 | ||
#: ※Yは、既存のLinuxがインストールされているGRUB2ブートローダのパーティション番号を指定する。 | |||
#: <pre>sudo mount /dev/sdXY /mnt</pre> | |||
# 必要なディレクトリをバインドマウントする。 | # 必要なディレクトリをバインドマウントする。 | ||
#: <code>for i in /sys /proc /run /dev; do sudo mount --bind "$i" "/mnt$i"; done</code> | #: <code>for i in /sys /proc /run /dev; do sudo mount --bind "$i" "/mnt$i"; done</code> | ||
133行目: | 132行目: | ||
#: <pre>sudo chroot /mnt</pre> | #: <pre>sudo chroot /mnt</pre> | ||
# GRUB2を再インストールする。 | # GRUB2を再インストールする。 | ||
#: <pre>grub-install /dev/ | #: ※Xは、既存のLinuxがインストールされているストレージ番号を指定する。 | ||
#: <pre>grub-install /dev/sdX</pre> | |||
# GRUB2の設定ファイルを更新する。 | # GRUB2の設定ファイルを更新する。 | ||
#: <pre>update-grub</pre> | #: <pre>update-grub</pre> |
2024年10月6日 (日) 18:00時点における版
概要
ブートローダとは、コンピュータの起動時にオペレーティングシステム(OS)を読み込み、実行するためのプログラムである。
Linuxには、いくつかのブートローダが存在しており、それぞれ固有の機能と利点を持っている。
Linuxにおいて、一般的に使用されるブートローダを以下に示す。
これらのブートローダは、それぞれの長所と短所を持っており、システムの要件、ファイルシステム、ファームウェアのタイプ(BIOS/UEFI)等、ユーザの好みに応じて選択される。
現在、最も広く使用されているLinuxブートローダはGRUB2であるが、他のブートローダも特定の用途に適している。
- GRUB (GRand Unified Bootloader)
- GRUB2の前身であり、レガシーバージョンと呼ばれることもある。
- 設定ファイルは、/boot/grub/grub.cfgまたは/boot/grub/menu.lstに存在する。
- GRUB2ほど高機能ではないが、より単純な設定で動作する。
- Tow-Boot
- Chromebookや他のARMベースのデバイス用のオープンソースブートローダである。
- U-Bootをベースとしており、ChromeOSデバイス上でLinuxや他のオペレーティングシステムを起動するために使用される。
- ファームウェアの更新や検証、ブートモードの選択等、幅広い機能を提供する。
- Chromebookユーザの間で人気が高まっており、ChromeOSの代替OSを試す際に重要な役割を果たしている。
- U-Boot
- 組み込みシステムやシングルボードコンピュータ用の強力なブートローダである。
- ARMベースのデバイスで広く使用されており、ブートプロセスの制御と設定に使用される。
- ネットワークブート、RAMディスクのロード、ファームウェアの更新等、多様な機能を提供する。
- 高度にカスタマイズ可能で、組み込み環境での柔軟性を提供する。
- RedBoot
- 主にARMベースの組み込みシステム用のブートローダである。
- eCosオペレーティングシステムと緊密に統合されており、eCosの開発とデバッグに使用される。
- フラッシュメモリの管理、ネットワークブート、デバッグ機能等、幅広い機能を提供する。
- 組み込みシステムの開発者にとって重要なツールの1つである。
- Barebox
- U-Bootから派生した組み込みシステム用のブートローダである。
- ARMやPowerPC、MIPSなど、さまざまなアーキテクチャをサポートしている。
- デバイスツリーのサポート、ネットワークブート、ファームウェアの更新など、多くの機能を提供する。
- 設定や拡張が容易で、組み込みLinuxの開発に適している。
- AT91Bootstrap (※)
- Microchip (旧Atmel) のAT91シリーズARM SoCを対象とした小型のブートローダである。
- メモリの初期化、クロックの設定、U-Boot等の他のブートローダの起動を行う。
- シンプルで軽量であり、AT91シリーズのSoCを使用する組み込みシステムに適している。
- Coreboot (※)
- オープンソースのファームウェアプロジェクトであり、主にx86ベースのシステムをサポートしている。
- BIOS/UEFIの代替として使用され、高速起動とセキュリティ機能を提供する。
- ペイロードと呼ばれるブートローダ (U-Boot等) を起動することができる。
- Chromebook等の一部の組み込みデバイスでも使用されている。
- Kexecboot
- Linuxカーネルのkexec機能を利用したブートローダである。
- 稼働中のカーネルから直接新しいカーネルを起動することができ、高速な再起動が可能である。
- 設定が簡単であり、組み込みシステムでの迅速なカーネル切り替えに適している。
- LILO (LInux LOader)
- Linuxの初期のブートローダの1つで、古いシステムではまだ使用されている。
- 設定ファイルは、/etc/liloに存在する。
- カーネルイメージやinitrdを直接読み込むことができる。
- ブートセクタに直接書き込むため、設定変更後は常にブートセクタを更新する必要がある。
- Syslinux
- FAT、ext2、ext3、ext4等のファイルシステムをサポートしている。
- ISOLINUXを使用して、ブート可能なCDやDVDを作成するために広く使用されている。
- PXELINUXを使用して、ネットワーク経由でブートすることもできる。
- systemd-boot (旧名: gummiboot)
- UEFIシステム用の単純なブートマネージャーである。
- 設定ファイルは、/boot/loader/entries/ディレクトリ内の.confファイルである。
- シンプルでミニマルな設計が特徴で、高速な起動が可能である。
- rEFInd
- UEFIシステム用のブートマネージャーであり、グラフィカルなユーザーインターフェースを提供する。
- Linux、MacOS、Windows等の複数のOSを検出して、ブートメニューに自動的に追加する。
- テーマやアイコンのカスタマイズが可能であり、視覚的に魅力的なブート環境を提供する。
※注意
AT91BootstrapやCorebootは、ブートプロセスの初期段階を担当するブートローダ (ファームウェア) である。
これらは、ハードウェアの初期化、メモリの設定、クロックの設定等の低レベルのタスクを処理する。
一方、U-Boot等のブートローダは、より高レベルの機能を提供する。
これには、カーネルのロード、ブートパラメータの渡し、ファイルシステムの読み込み等が含まれている。
したがって、AT91BootstrapやCorebootを使用する場合、一般的には以下に示すようなブートプロセスを行う。
- まず、AT91Bootstrap / Corebootが、ハードウェアの初期化と低レベルの設定を行う。
- 次に、AT91Bootstrap / Corebootが、U-Boot等の高レベルのブートローダをロードして実行する。
- AT91Bootstrap / Corebootにより実行されたU-Bootが、カーネルのロード、ブートパラメータの渡し、ルートファイルシステムのマウント等を行う。
- U-Bootがカーネルを起動して、システムが立ち上がる。
このように、AT91BootstrapやCorebootは、U-Boot等のブートローダと組み合わせて使用されることが一般的である。
これにより、ブートプロセスを段階的に行うことができ、それぞれのブートローダがその得意とする部分を担当することができる。
GRUB2
GRUB2とは
GRUB2 (GRand Unified Bootloader version 2) は、Linuxシステムで広く使用されているブートローダである。
GRUB2は、Linuxシステムにおいて重要な役割を果たしており、ブートプロセスをカスタマイズや複数のOSを管理するための強力で柔軟なツールである。
GRUB2の主な役割と概念は以下の通りである。
- ブートプロセスの制御
- GRUB2は、BIOS/UEFIにより最初に読み込まれて、OSを起動するためのブートプロセスを制御する。
- ブートメニューの提供
- GRUB2は、インストールされている複数のOSをリストアップしたブートメニューを表示する。
- ユーザは、このメニューからブートするOSを選択できる。
- 設定ファイル
- GRUB2の設定は、主に/etc/default/grubファイルと/etc/grub.d/ディレクトリ内のファイルで定義される。
- これらのファイルは、ブートメニューのエントリ、デフォルトのOS、タイムアウト等を制御する。
- モジュラー設計
- GRUB2は、モジュール式の設計を採用している。
- これにより、必要な機能を動的に読み込むことができ、柔軟性と拡張性が向上する。
- 複数のファイルシステムとOSのサポート
- GRUB2は、ext4、btrfs、NTFS、FAT等、様々なファイルシステムをサポートしている。
- また、Linux、Windows、MacOS等、複数のOSをブートすることができる。
- コマンドラインインターフェース
- GRUB2は、ブートメニューで[C]キーを押下することにより、アクセスできるコマンドラインインターフェースを提供する。
- このインターフェースを使用して、ブートパラメータの編集やカスタムブートエントリの追加等を行うことができる。
- 復旧機能
- GRUB2は、システムが起動しない場合に備えて、復旧モードを提供する。
- これにより、ユーザはシステムを修復するためのオプションにアクセスできる。
GRUB2の復旧
例えば、WindowsのアップデートによりLinuxのGRUB2ブートローダが表示されない場合がある。
この時、以下に示す手順を行うことにより、GRUB2を復旧することができる。
- 各LinuxディストリビューションのライブUSBを準備する。
- ライブUSBからLinuxを起動する。
- ターミナルを開いて、既存のLinuxのインストール先パーティションをマウントする。
- ※Xは、既存のLinuxがインストールされているストレージ番号を指定する。
- ※Yは、既存のLinuxがインストールされているGRUB2ブートローダのパーティション番号を指定する。
sudo mount /dev/sdXY /mnt
- 必要なディレクトリをバインドマウントする。
for i in /sys /proc /run /dev; do sudo mount --bind "$i" "/mnt$i"; done
- chroot環境に入る。
sudo chroot /mnt
- GRUB2を再インストールする。
- ※Xは、既存のLinuxがインストールされているストレージ番号を指定する。
grub-install /dev/sdX
- GRUB2の設定ファイルを更新する。
update-grub
- chroot環境を終了する。
exit
- マウントを解除する。
sudo umount /mnt/sys /mnt/proc /mnt/run /mnt/dev /mnt
- PCを再起動して、GRUB2のブートメニューが表示されるかどうかを確認する。
エラー関連
Fix Minimal BASH like line editing is supported GRUB Error
LinuxとWindowsとデュアルブートでインストールする場合、再起動時に以下に示すようなGRUBエラーが出力される場合がある。
Minimal BASH like line editing is supported. For the first word, TAB lists possible command completions. anywhere else TAB lists possible device or file completions.
これは、RHEL、SUSE、Debian GNU/Linux等の全てのLinuxディストリビューションで発生する可能性のある一般的なGRUBエラーである。
また、頻繁に発生する同様の問題である"error: no such partition grub rescue"エラーを修正する場合も、以下に示す手順で解決することができる。
この問題を解決するには、以下に示すものが必要である。
- 同じLinuxディストリビューションのライブUSB
- ライブセッションでのインターネット接続
まず、ライブLinux USBを起動する。
次に、LinuxがUEFIあるいはBIOSを使用しているかどうかを確認する。
[Type:]に[EFI System]との記述がある場合は、LinuxがUEFIを使用していることを意味する。
sudo fdisk -l
GRUBを再インストールする。
- UEFIを使用している場合
- まず、ルートパーティション (/) をマウントする。
sudo mount /dev/sdXY /mnt
- 次に、ブートパーティション (UEFI) をマウントする。
sudo mount /dev/sdXZ /mnt/boot/efi
- 最後に、GRUB (UEFI) をインストールする。
bootloader-id
オプションにおいて、/boot/efi/EFIディレクトリにあるディレクトリ名を確認することにより、現在使用しているbootloader-idを知ることができる。--bootloader-id
オプションは任意の値を設定できるため、システム管理者が別の値を選択している可能性もある。- --bootloader-idオプションのデフォルト値
- RHELの場合: redhat
- SLEの場合: sles / sled
- Ubuntuの場合: ubuntu
sudo grub-install --boot-directory=/mnt/boot --bootloader-id=<ID名> --target=x86_64-efi --efi-directory=/mnt/boot/efi
- PCを再起動する。
- まず、ルートパーティション (/) をマウントする。
- BIOSを使用している場合
- まず、ルートパーティション (/) をマウントする。
BIOSでは、ブートパーティション (BIOS) も同時にマウントされる。sudo mount /dev/sdXY /mnt
- 最後に、GRUB (BIOS) をインストールする。
sudo grub-install /dev/sdX
- PCを再起動する。
- まず、ルートパーティション (/) をマウントする。