GRUB (Grand Unified Bootloader)とは、高機能なブートローダで、GNUプロジェクトが開発している。
GRUBフォルダを見つけられなかったり、GRUBフォルダ内のコンテンツが見つからないか壊れていた場合、GRUBはレスキューモードとなり、次のようなプロンプトが表示される。
grub rescue>
なお、GRUBがrescue modeになった場合は、キーボードが日本語配列になっていない。記号の入力のしかたを次に示す。
文字 | キー |
---|---|
( | Shift + 9 |
) | Shift + 0 |
= | ^ |
GRUBがrescue modeになった場合、まずどのようなパーティションが存在するのかを確認する。
error: no such devie: xxx
Entering rescue mode...
grub rescue> ls
(hd0) (hd0,msdos5) (hd0,msdos4)
grub rescue>
次に、bootディレクトリがどのパーティションに存在するのかを確認する。
grub rescue> ls (hd0)/
error: unknown filesystem.
grub rescue> ls (hd0,msdos5)/
./ ../ bin/ boot/ etc/ dev/ var/ home/
grub rescue> ls (hd0,msdos4)/
error: unknown filesystem.
grub rescue>
bootディレクトリ下にnormal.modファイルが存在すること確認する。
prefix変数を設定する。
grub rescue> set prefix=(hd0,msdos5)/boot/grub
grub rescue>
モジュールを読み込む。
grub rescue> insmod (hd0,msdos5)/boot/grub/i386-pc/normal.mod
grub rescue>
ノーマルモジュールをアクティブにする。
grub rescue> normal
grub rescue>
以上でGRUBが起動される。GRUBによりOSが起動されたら、GRUBを再インストールする。
$ sudo grub-install /dev/sda
[sudo] password for marina
Installation finished. No error reported.
$
GRUB rescue モードでは、次のコマンドを使用できる。
コマンド | 説明 |
---|---|
boot | ブートを初期化する。 |
cat | テキストファイルの中身を表示する。 |
configfile | grub.cfgのようなGRUB設定ファイルを読み込む。 |
initrd | ブートに必要なinitrd.imgを読み込む。 |
insmod | モジュールを読み込む。 |
linux | カーネルを読み込む。 |
loop | ファイルをループバックデバイスとしてマウントする。 |
ls | パーティション又はディレクトリのコンテンツ一覧を表示する。 |
lsmod | 読み込んだモジュールの一覧を表示する。 |
normal | ノーマルモジュールが読み込まれていれば、アクティブにする。 |
search | デバイスを探す。 |
set | 変数の一覧を表示する。または、変数に値を設定する。 |
vbeinfo | GRUBで使用可能な画面解像度を表示する。 |
動的な GRUB モジュールを挿入する。
insmod module
デバイスまたはファイルを一覧表示する。
ls [arg...]
引数がない場合、GRUB が知っているすべてのデバイスを表示する。
grub rescue> ls
(hd0) (hd0,msdos5) (hd0,msdos4)
引数が括弧で囲まれたデバイス名である場合、そのデバイスのファイルシステムの名前を表示する。
grub rescue> ls (hd0,msdos5)/
./ ../ bin/ boot/ etc/ dev/ var/ home/
引数が絶対ファイル名として与えられたディレクトリの場合、そのディレクトリの内容をリストアップする。
grub rescue の ls コマンドは、ファイル名を引数に指定すると「ディレクトリではない」と表示される。
grub rescue> ls (hd0,msdos5)/boot/grub/i386-pc/normal.mod
error: not a directory
grub rescue>
通常モードに移行して、GRUB メニューを表示する。
normal [file]
ノーマルモードでは、コマンド、ファイルシステムモジュール、暗号化モジュールが自動的にロードされ、完全な GRUB スクリプトパーサが利用可能になる。その他のモジュールは insmod を使って明示的にロードすることができる。
ファイルが指定された場合、コマンドはそのファイルから読み込まれる。それ以外の場合は、$prefix/grub.cfg があれば、そこから読み込まれる。
normal は通常モードの中から呼び出すことができ、ネストした環境を作ることができる。この場合、configfile を使用するのがより一般的である。
環境変数 envar に値を設定する。引数なしで起動された場合、すべての環境変数とその値を表示する。
set [envvar=value]
GNU (2018) GRUB Documentation