第26章 GRUB 2 での作業
Red Hat Enterprise Linux 7 は、GNU GRand Unified Bootloader (GRUB 2) のバージョン 2 とともに配布され、ユーザーはシステム起動時にオペレーティングシステムまたはカーネルを選択できます。また GRUB 2 により、ユーザーはカーネルに引数を渡すことができます。
26.1. GRUB 2 について
GRUB 2 は、従来の BIOS ベースのマシンの場合は /boot/grub2/grub.cfg
ファイルから、UEFI マシンの場合は /boot/efi/EFI/redhat/grub.cfg
ファイルから設定を読み取ります。このファイルにはメニュー情報が含まれています。
GRUB 2 の設定ファイルである grub.cfg
はインストール中に生成されるか、/usr/sbin/grub2-mkconfig ユーティリティーを呼び出すことによって生成され、新しいカーネルがインストールされるたびに grubby
によって自動的に更新されます。grub2-mkconfig を使用して手動で再生成さすると、ファイルは /etc/grub.d/
にあるテンプレートファイルと /etc/default/grub
ファイル内のカスタム設定に従って生成されます。grub.cfg
の編集内容は、grub2-mkconfig を使用してファイルを再生成するときに失われるため、手動による変更は /etc/default/grub
にも反映するようにする必要があります。
grub.cfg
での通常の操作 (カーネルの削除や追加など)、grubby
ツールと new-kernel-pkg
ツール (スクリプト用) を使用して行う必要があります。grubby
を使用してデフォルトのカーネルを変更する場合、変更内容は新しいカーネルがインストールされたときに継承されます。grubby
の詳細は、「grubby ツールを使用した GRUB 2 メニューの永続的な変更」 を参照してください。
/etc/default/grub
ファイルは、インストールプロセスで grub.cfg
を作成するときに anaconda
によって使用される grub2-mkconfig
ツールにより使用され、システム障害の発生時に使用できます (たとえば、ブートローダーの設定を再作成する必要がある場合)。一般的に、他の手段がない場合を除き、grub2-mkconfig
を手動で実行して grub.cfg
ファイルを置き換えることは推奨されません。/etc/default/grub
への手動による変更を反映するには、grub.cfg
ファイルを再構築する必要があります。
grub.cfg のメニューエントリー
grub.cfg
設定ファイルには、多くのコードスニペットやディレクティブに加えて、1 つまたは複数の menuentry
ブロックが含まれています。それぞれは、単一の GRUB 2 ブートメニューエントリーを示しています。これらのブロックは、常に menuentry
キーワードで始まり、タイトル、オプションのリスト、および開きの波括弧で始まり、最後は閉じの波括弧で終わります。これらのブロックは、常に menuentry キーワードで始まり、それにタイトル、オプションリスト、および中括弧が続きます。以下は、Linux カーネル 3.8.0-0.40.el7.x86_64 を使用する Red Hat Enterprise Linux 7 のサンプル menuentry
ブロックの例です。
menuentry 'Red Hat Enterprise Linux Server' --class red --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-c60731dc-9046-4000-9182-64bdcce08616' { load_video set gfxpayload=keep insmod gzio insmod part_msdos insmod xfs set root='hd0,msdos1' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1' 19d9e294-65f8-4e37-8e73-d41d6daa6e58 else search --no-floppy --fs-uuid --set=root 19d9e294-65f8-4e37-8e73-d41d6daa6e58 fi echo 'Loading Linux 3.8.0-0.40.el7.x86_64 ...' linux16 /vmlinuz-3.8.0-0.40.el7.x86_64 root=/dev/mapper/rhel-root ro rd.md=0 rd.dm=0 rd.lvm.lv=rhel/swap crashkernel=auto rd.luks=0 vconsole.keymap=us rd.lvm.lv=rhel/root rhgb quiet echo 'Loading initial ramdisk ...' initrd /initramfs-3.8.0-0.40.el7.x86_64.img }
インストール済み Linux カーネルを表す各 menuentry
ブロックには、linux
(64 ビット IBM POWER シリーズ用)、 linux16
(x86_64 BIOS ベースのシステム用)、および linuxefi
(UEFI ベースのシステム用) が含まれます。initrd
ディレクティブの後には、それぞれカーネルへのパスと initramfs
イメージへのパスが指定されます。個別の /boot
パーティションを作成している場合は、カーネルと initramfs
イメージへのパスは、/boot
に対して相対的なものになります。上記の例では、initrd /initramfs-3.8.0-0.40.el7.x86_64.img
の行は、root
ファイルシステムのマウント時に initramfs
イメージが実際には /boot/initramfs-3.8.0-0.40.el7.x86_64.img
にあり、カーネルパスも同様であることを意味します。
各 menuentry
ブロックの linux16 /vmlinuz-kernel_version
行にあるカーネルのバージョン番号は、initrd /initramfs-kernel_version.img
行の initramfs
イメージのバージョン番号に適合する必要があります。初期 RAM ディスクイメージの検証方法は、Red Hat Enterprise 7 カーネル管理ガイド の初期 RAM ディスクイメージの検証を参照してください。
menuentry
では、initrd
指示文は同じカーネルバージョンに対応する initramfs
ファイルの位置 (別のパーティションの場合、/boot/
ディレクトリーに対して相対的) を指している必要があります。初期 RAM ディスクイメージを作成した以前のツール、mkinitrd
が initrd
と呼ばれるファイルを作成したために、この指示文は initrd
と呼ばれます。grub.conf
指示文は、他のツールとの互換性を維持するために initrd
のまま残されています。初期 RAM ディスクイメージを作成するための dracut
ユーティリティーを使用したシステムのファイル命名の規則名は、initramfs-kernel_version.img
となります。
Dracut の使用に関する詳細は、Red Hat Enterprise 7 カーネル管理ガイド を参照してください。