デバイス名に基づくパーティション識別子を GRUB 設定ファイルで UUID に置き換えることで、イメージのインポートなどのディスク操作後に GRUB が起動に失敗するのを防ぎます。
背景情報
/dev/vda1 などのデバイス名は、イメージのインポートなどの操作後に変更されることがあります。 GRUB 設定ファイル内のデバイス名が正しいパーティションを指し示さなくなった場合、カーネルはファイルシステムのロードに失敗し、インスタンスは起動できなくなります。
操作手順
GRUB が UUID によってルートパーティションを識別するように設定し、確実に起動できるようにします。
GRUB の設定変更は高リスクな操作です。誤った変更を行うと、インスタンスが起動しなくなる可能性があります。操作を進める前に、スナップショットを作成することで、インスタンスのデータセキュリティを確保してください。
GRUB バージョンの確認
GRUB には、GRUB2 と GRUB Legacy の 2 つのメジャーバージョンがあります。 GRUB Legacy ではバグ修正のみが行われます。 次のようにして、お使いの GRUB のバージョンを確認します。
-
お使いの
GRUBのバージョンを特定します:GRUB2
GRUB設定ディレクトリの構造を確認します:sudo ls /etc/grub.d/出力に
00_headerや40_customなどのファイルが含まれている場合、GRUB2を使用しています。 出力例:00_header 05_debian_theme 10_linux 20_linux_xen 30_os-prober 30_uefi-firmware 40_custom 41_customGRUB Legacy
/boot/grub/ディレクトリの内容を確認します:sudo ls /boot/grub//boot/grubディレクトリにmenu.lstファイルが含まれている場合、GRUB Legacyを使用しています。
設定ファイルの特定
GRUB2 と GRUB Legacy では、使用する設定ファイルのパスが異なります。
-
GRUB2:/boot/grub/grub.cfgまたは/boot/grub2/grub.cfg。 -
GRUB Legacy:/boot/grub/menu.lstまたは/boot/grub/grub.conf。
/boot ディレクトリに移動して、GRUB 設定ファイルを見つけます。
ディスクパーティションの UUID の取得
GRUB 設定ファイルで使用するために、各ディスクパーティションの UUID を取得します。
-
ディスクパーティションの UUID を表示します:
sudo blkid出力例:
/dev/vda1: LABEL="/" UUID="e7e8xxxx-xxxx-xxxx-xxxx-xxxxb9263645" TYPE="ext4" PARTUUID="0efbxxxx-01"ここで、
/dev/vda1のUUIDはe7e8xxxx-xxxx-xxxx-xxxx-xxxxb9263645です。
設定ファイルの変更
-
現在の
GRUB設定ファイルをバックアップします:sudo cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak重要GRUB設定ファイルを復元するには、次のコマンドを実行します:sudo cp -f /boot/grub2/grub.cfg.bak /boot/grub2/grub.cfg -
GRUB設定ファイルを開きます:sudo vim /boot/grub2/grub.cfg -
iキーを押して挿入モードに入ります。root=/dev/vda1となっているすべての箇所をroot=UUID=e7e8xxxx-xxxx-xxxx-xxxx-xxxxb9263645に置き換えます。linux /boot/vmlinuz-3.16.0-4-amd64 root=/dev/vda1 ro single debian-installer=en_US net.ifnames=0 vga=792 console=tty0 console=ttyS0,115200n8変更後の行:
linux /boot/vmlinuz-3.16.0-4-amd64 root=UUID=e7e8xxxx-xxxx-xxxx-xxxx-xxxxb9263645 ro single debian-installer=en_US net.ifnames=0 vga=792 console=tty0 console=ttyS0,115200n8 -
Escキーを押して挿入モードを終了し、:wqと入力して保存し、終了します。 -
(任意)
GRUB内のすべてのディスクパーティション識別子がUUIDを使用していることを確認します:sudo cat /boot/grub2/grub.cfg
関連ドキュメント
fstab ファイルを設定してデータディスクを自動マウントする方法については、「UUID を使用したデータディスクの自動マウント」をご参照ください。