第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
ブロックには、64 ビット IBM POWER シリーズには linux
、x86_64 BIOS ベースのシステムには linux16
、および UEFI ベースのシステムには linuxefi
が含まれます。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
に配置されていることを示しています。
linux16 /vmlinuz-kernel_version
行で指定したカーネルバージョン番号は、各 menuentry
ブロックの initrd /initramfs-kernel_version.img
行で指定される initramfs
イメージのバージョン番号と一致する必要があります。初期 RAM ディスクイメージの検証方法は、『Red Hat Enterprise 7 カーネル管理ガイド』の「初期 RAM ディスクイメージの検証」を参照してください。
menuentry
では、initrd
指示文は同じカーネルバージョンに対応する /boot/
ファイルの位置 (別のパーティションの場合、initramfs
ディレクトリーに対して相対的) を指している必要があります。初期 RAM ディスクイメージを作成した以前のツール、initrd
が mkinitrd
と呼ばれるファイルを作成したために、この指示文は initrd
と呼ばれます。grub.cfg
ディレクティブは、他のツールとの互換性を維持するために initrd
を維持します。初期 RAM ディスクイメージを作成するために dracut
ユーティリティーを使用するシステムのファイル命名の規則は、initramfs-kernel_version.img
です。
Dracut の使用に関する詳細は、『Red Hat Enterprise 7 カーネル管理ガイド』を参照してください。
26.2. GRUB 2 の設定
GRUB 2 メニューへの変更は、起動時に一時的に行ったり、システムの実行中に単一システムに対して永続的に行ったり、新しい GRUB 2 設定ファイルの作成の一部として行ったりできます。
- GRUB 2 メニューに永続的でない変更を加える場合は、「GRUB 2 メニューの一時的な変更」 を参照してください。
- 実行中のシステムに永続的な変更を行うには、「grubby ツールを使用した GRUB 2 メニューの永続的な変更」 を参照してください。
- GRUB 2 設定ファイルの作成およびカスタマイズは 「GRUB 2 設定ファイルのカスタマイズ」 を参照してください。
26.3. GRUB 2 メニューの一時的な変更
カーネルメニューエントリーの一時的な変更
これから実行する起動プロセスでのみカーネルパラメーターを変更するには、以下の手順を実行します。
- システムを起動し、GRUB 2 ブート画面で、編集するメニューエントリーにカーソルを移動し、編集のために e キーを押します。
-
カーソルを下に移動してカーネルコマンドラインを見つけます。カーネルコマンドラインは、64 ビット IBM Power シリーズでは
linux
、x86-64 BIOS ベースのシステムではlinux16
、または UEFI システムではlinuxefi
で始まります。 カーソルを行の最後に移動します。
Ctrl+a か Ctrl+e を押して行の最初または最後に移動します。システムによっては、Home と End が機能するものもあります。
必要に応じてカーネルパラメーターを編集します。たとえば、緊急モードでシステムを実行するには、
linux16
行の最後に emergency パラメーターを追加します。linux16 /vmlinuz-3.10.0-0.rc4.59.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 emergency
システムメッセージを有効化するには、
rhgb
とquiet
のパラメーターを削除する必要があります。この設定は永続的なものではなく、これから実行するブートにのみ適用されます。システムでメニューエントリーの変更を永続的に行うには、
grubby
ツールを使用します。grubby
の使用の詳細は 「GRUB 2 メニューエントリーに対する引数の追加および削除」 を参照してください。
26.4. grubby ツールを使用した GRUB 2 メニューの永続的な変更
grubby
ツールは、grub.cfg
ファイルから情報を読み取ったり、そのファイルに永続的な変更を行ったりするために使用できます。たとえば、GRUB 2 メニューエントリーを変更してシステム起動時にカーネルに渡す引数を指定したり、デフォルトのカーネルを変更したりできます。
Red Hat Enterprise Linux 7 では、GRUB 2 設定ファイルを指定せずに grubby
を手動で呼び出すと、/etc/grub2.cfg
ファイル (場所はアーキテクチャーに依存します) へのシンボリックリンクである grub.cfg
がデフォルトで検索されます。このファイルが見つからない場合は、アーキテクチャー依存のデフォルトのファイルが検索されます。
デフォルトのカーネルの一覧表示
デフォルトのカーネルのファイル名を見つけるには、以下のようにコマンドを入力します。
~]# grubby --default-kernel /boot/vmlinuz-3.10.0-229.4.2.el7.x86_64
デフォルトのカーネルのインデックス番号を見つけるには、以下のようにコマンドを入力します。
~]# grubby --default-index 0
デフォルトのブートエントリーの変更
デフォルトのカーネルとして指定されるカーネルの変更を永続的に行うには、以下のように grubby
コマンドを使用します。
~]# grubby --set-default /boot/vmlinuz-3.10.0-229.4.2.el7.x86_64
カーネルの GRUB 2 メニューエントリーの表示
すべてのカーネルメニューエントリーを一覧表示するには、以下のようにコマンドを入力します。
~]$ grubby --info=ALL
UEFI システムでは、すべての grubby
コマンドは root
として入力する必要があります。
特定のカーネルの GRUB 2 メニューエントリーを表示するには、以下のようにコマンドを入力します。
~]$ grubby --info /boot/vmlinuz-3.10.0-229.4.2.el7.x86_64 index=0 kernel=/boot/vmlinuz-3.10.0-229.4.2.el7.x86_64 args="ro rd.lvm.lv=rhel/root crashkernel=auto rd.lvm.lv=rhel/swap vconsole.font=latarcyrheb-sun16 vconsole.keymap=us rhgb quiet LANG=en_US.UTF-8" root=/dev/mapper/rhel-root initrd=/boot/initramfs-3.10.0-229.4.2.el7.x86_64.img title=Red Hat Enterprise Linux Server (3.10.0-229.4.2.el7.x86_64) 7.0 (Maipo)
タブ補完を試行して /boot/
ディレクトリー内の利用可能なカーネルを確認します。
GRUB 2 メニューエントリーに対する引数の追加および削除
この --update-kernel
オプションは、--args
と併用して新しい引数と --remove-arguments
を追加し、既存の引数を削除する場合にメニューエントリーを更新するのに使用できます。これらのオプションは、引用符で囲まれたスペースを受け入れます。GRUB 2 メニューエントリーから引数を同時に追加および削除するコマンドは、以下の形式になります。
grubby --remove-args="argX argY" --args="argA argB" --update-kernel /boot/kernel
カーネルの GRUB 2 メニューエントリーに対して引数を追加および削除するには、以下のようにコマンドを使用します。
~]# grubby --remove-args="rhgb quiet" --args=console=ttyS0,115200 --update-kernel /boot/vmlinuz-3.10.0-229.4.2.el7.x86_64
このコマンドにより、Red Hat グラフィカルブート引数が削除され、ブートメッセージの表示が可能になり、シリアルコンソールが追加されます。コンソール引数は行の最後に追加されるため、新しいコンソールは設定された他のすべてのコンソールよりも優先されます。
変更を確認するには、次のように --info
コマンドオプションを使用します。
~]# grubby --info /boot/vmlinuz-3.10.0-229.4.2.el7.x86_64
index=0
kernel=/boot/vmlinuz-3.10.0-229.4.2.el7.x86_64
args="ro rd.lvm.lv=rhel/root crashkernel=auto rd.lvm.lv=rhel/swap vconsole.font=latarcyrheb-sun16 vconsole.keymap=us LANG=en_US.UTF-8 ttyS0,115200"
root=/dev/mapper/rhel-root
initrd=/boot/initramfs-3.10.0-229.4.2.el7.x86_64.img
title=Red Hat Enterprise Linux Server (3.10.0-229.4.2.el7.x86_64) 7.0 (Maipo)
同じ引数を使用したすべてのカーネルメニューの更新
すべてのカーネルメニューエントリーに同じカーネルブート引数を追加するには、以下のようにコマンドを入力します。
~]# grubby --update-kernel=ALL --args=console=ttyS0,115200
--update-kernel
パラメーターには、DEFAULT またはカーネルインデックス番号のコンマ区切りリストも指定できます。
カーネル引数の変更
既存のカーネル引数の値を変更するには、引数を、必要に応じて値を変更して再び指定します。たとえば、仮想コンソールのフォントサイズを変更するには、以下のようにコマンドを使用します。
~]# grubby --args=vconsole.font=latarcyrheb-sun32 --update-kernel /boot/vmlinuz-3.10.0-229.4.2.el7.x86_64
index=0
kernel=/boot/vmlinuz-3.10.0-229.4.2.el7.x86_64
args="ro rd.lvm.lv=rhel/root crashkernel=auto rd.lvm.lv=rhel/swap vconsole.font=latarcyrheb-sun32 vconsole.keymap=us LANG=en_US.UTF-8"
root=/dev/mapper/rhel-root
initrd=/boot/initramfs-3.10.0-229.4.2.el7.x86_64.img
title=Red Hat Enterprise Linux Server (3.10.0-229.4.2.el7.x86_64) 7.0 (Maipo)
その他のコマンドオプションは、grubby(8)
man ページを参照してください。
26.5. GRUB 2 設定ファイルのカスタマイズ
GRUB 2 スクリプトはユーザーのコンピューターを検索して、スクリプトが見つけたオペレーティングシステムに基づくブートメニューを構築します。最新のシステムブートオプションを反映させるために、カーネルが更新されるか新規カーネルが追加されると、ブートメニューは自動的に再構築されます。
しかし、特定のエントリーを含むメニューの構築や、エントリーの特定の順番をユーザーが希望する場合もあります。GRUB 2 では基本的なブートメニューのカスタマイズが可能で、画面に表示されるものをユーザーが制御できます。
GRUB 2 は、一連のスクリプトを使用してメニューを構築します。これらは /etc/grub.d/
ディレクトリーにあります。このスクリプトは /etc/grub.d/ ディレクトリーに格納されており、以下のファイルが含まれます。
-
00_header
:/etc/default/grub
ファイルから GRUB 2 設定を読み込みます。 -
01_users
:user.cfg
ファイルからスーパーユーザーのパスワードを読み取ります。Red Hat Enterprise Linux 7.0 および 7.1 では、インストール中にキックスタートファイルでブートパスワードが定義された場合にのみこのファイルが作成され、含まれるパスワードはプレーンテキストになります。 -
10_linux
: Red Hat Enterprise Linux のデフォルトのパーティションでカーネルを見つけます。 -
30_os-prober
。別のパーティションで見つかったオペレーティングシステム用にエントリーを構築します。 -
40_custom
: 追加のメニューエントリー作成に使用可能なテンプレートです。
/etc/grub.d/
ディレクトリーからのスクリプトはアルファベット順に読み取られるので、名前を変更して特定のメニューエントリーの起動順を変更できます。
ブート可能なカーネル一覧を表示しないようにするには、GRUB_TIMEOUT
では、/etc/default/grub
を 0 に設定しないでください。このように設定すると、システムが常にデフォルトのメニューエントリーで直ちに起動し、デフォルトのカーネルが起動に失敗した場合に、古いカーネルを起動することができなくなります。
代わりに、システムの起動時に GRUB 2 が起動可能なカーネルの一覧を表示しないようにするには、以下のように /etc/default/grub
ファイルで GRUB_TIMEOUT_STYLE
オプションを設定します。
GRUB_TIMEOUT_STYLE=hidden
システムの起動時に一覧を表示する場合は、キーボードまたは他のシリアルコンソールを使用して BIOS 情報が表示されている間に英数字キーを押し続けると、GRUB 2 で GRUB 2 メニューが表示されます。
26.5.1. デフォルトのブートエントリーの変更
デフォルトでは、/etc/default/grub
ファイルの GRUB_DEFAULT
ディレクティブのキーは saved
という単語です。これにより、/boot/grub2/grubenv
にある GRUB 2 環境ファイルの saved_entry
ディレクティブで指定されたカーネルを読み込むように GRUB 2 が指示されます。grub2-set-default
コマンドを使用して別の GRUB 2 レコードをデフォルトにすることもできます (この結果、GRUB 2 環境ファイルが更新されます)。
デフォルトでは、saved_entry
値は、パッケージタイプ kernel の最新のインストール済みカーネルの名前に設定されます。これは、UPDATEDEFAULT
および DEFAULTKERNEL
ディレクティブで /etc/sysconfig/kernel
で定義されます。このファイルは以下のように root
ユーザーが表示できます。
~]# cat /etc/sysconfig/kernel # UPDATEDEFAULT specifies if new-kernel-pkg should make # new kernels the default UPDATEDEFAULT=yes # DEFAULTKERNEL specifies the default kernel package type DEFAULTKERNEL=kernel
DEFAULTKERNEL
ディレクティブはデフォルトで使用するパッケージタイプを指定します。DEFAULTKERNEL
がパッケージタイプ kernel に設定されている場合は、kernel-debug タイプのパッケージをインストールしても、デフォルトのカーネルは変更されません。
GRUB 2は、saved_entry
ディレクティブのキーとして数値を使用して、オペレーティングシステムがロードされるデフォルトの順序を変更することをサポートしています。どのオペレーティングシステムを最初に読み込むかを指定するには、その数字を grub2-set-default
コマンドに渡します。以下に例を示します。
~]# grub2-set-default 2
一覧内でのメニューエントリーの場所は、ゼロで始まる数字で示されることに注意してください。したがって、上記の例では、3 番目のエントリーがロードされます。この値は、次回にインストールされるカーネルの名前で上書きされます。
システムが常に特定のメニューエントリーを使用するように強制するには、/etc/default/grub
ファイルの GRUB_DEFAULT
ディレクティブにメニューエントリー名をキーとして使用します。利用可能なメニューエントリーを一覧表示するには、root
で以下のコマンドを実行します。
~]# awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg
ファイル名 /etc/grub2.cfg
は grub.cfg
ファイルへのシンボリックリンクで、場所はアーキテクチャーに依存します。信頼性を確保するために、シンボリックリンクは本章の他の例では使用されません。ファイルに書き込む場合 (特にシステムを修復する場合) は、絶対パスを使用することが推奨されます。
/etc/default/grub
への変更には以下のように grub.cfg
ファイルを再ビルドする必要のある変更点。
BIOS ベースのマシンでは、
root
で以下のコマンド実行します。~]# grub2-mkconfig -o /boot/grub2/grub.cfg
UEFI ベースのマシンでは、
root
で以下のコマンド実行します。~]# grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
26.5.2. メニューエントリーの編集
新しい GRUB 2 ファイルを異なるパラメーターで準備する必要がある場合は、ファイル内の GRUB_CMDLINE_LINUX
キーの値を編集し /etc/default/grub
ます。GRUB 2 ブートメニューに複数のパラメーターを追加する際と同様に、GRUB_CMDLINE_LINUX
キーには複数のパラメーターを指定できることに注意してください。以下に例を示します。
GRUB_CMDLINE_LINUX="console=tty0 console=ttyS0,9600n8"
console=tty0
は最初の仮想ターミナルで、console=ttyS0
は使用するシリアルターミナルです。
/etc/default/grub
への変更には以下のように grub.cfg
ファイルを再ビルドする必要のある変更点。
BIOS ベースのマシンでは、
root
で以下のコマンド実行します。~]# grub2-mkconfig -o /boot/grub2/grub.cfg
UEFI ベースのマシンでは、
root
で以下のコマンド実行します。~]# grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
26.5.3. 新規エントリーの追加
grub2-mkconfig
コマンドを実行すると、GRUB 2 は /etc/grub.d/
ディレクトリーにあるファイルに基づいて Linux カーネルと他のオペレーティングシステムを探します。この /etc/grub.d/10_linux
スクリプトは、同じパーティションでインストールされた Linux カーネルを検索します。この /etc/grub.d/30_os-prober
スクリプトは、他のオペレーティングシステムを検索します。また、カーネル更新時には、メニューエントリーがブートメニューに自動的に追加されます。
/etc/grub.d/
ディレクトリーにある 40_custom
ファイルはカスタムエントリー用のテンプレートで、以下のようになります。
#!/bin/sh exec tail -n +3 $0 # This file provides an easy way to add custom menu entries. Simply type the # menu entries you want to add after this comment. Be careful not to change # the 'exec tail' line above.
このファイルは、編集またはコピーが可能です。有効なメニューエントリーには、少なくとも以下のものを含める必要があることに注意してください。
menuentry "<Title>"{ <Data> }
26.5.4. カスタムメニューの作成
メニューエントリーの自動更新を希望しない場合は、カスタムメニューを作成できます。
次に進む前に、後で変更を戻す必要に迫られた場合に備えて、/etc/grub.d/
ディレクトリーのコンテンツのバックアップを作成してください。
/etc/default/grub
ファイルを修正しても、カスタムメニューの作成には影響がないことに注意してください。
-
BIOS ベースのマシンでは、
/boot/grub2/grub.cfg
の内容をコピーします。あるいは、UEFI マシンでは、/boot/efi/EFI/redhat/grub.cfg
の内容をコピーします。grub.cfg
の内容は、既存のヘッダー行の下にある/etc/grub.d/40_custom
ファイルに配置します。40_custom
スクリプトの実行可能な部分は、維持される必要があります。 /etc/grub.d/40_custom
ファイルに配置したコンテンツから、カスタムメニューの作成に必要となるのはmenuentry
ブロックのみです。/boot/grub2/grub.cfg
および/boot/efi/EFI/redhat/grub.cfg
ファイルには、関数仕様と、menuentry
ブロックの上下にあるその他のコンテンツが含まれる場合があります。ここまでの手順でこれらの不要な行を40_custom
ファイルに置いた場合は、削除します。以下は、カスタムの
40_custom
スクリプトの例です。#!/bin/sh exec tail -n +3 $0 # This file provides an easy way to add custom menu entries. Simply type the # menu entries you want to add after this comment. Be careful not to change # the 'exec tail' line above. menuentry 'First custom entry' --class red --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.10.0-67.el7.x86_64-advanced-32782dd0-4b47-4d56-a740-2076ab5e5976' { 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='hd0,msdos1' 7885bba1-8aa7-4e5d-a7ad-821f4f52170a else search --no-floppy --fs-uuid --set=root 7885bba1-8aa7-4e5d-a7ad-821f4f52170a fi linux16 /vmlinuz-3.10.0-67.el7.x86_64 root=/dev/mapper/rhel-root ro rd.lvm.lv=rhel/root vconsole.font=latarcyrheb-sun16 rd.lvm.lv=rhel/swap vconsole.keymap=us crashkernel=auto rhgb quiet LANG=en_US.UTF-8 initrd16 /initramfs-3.10.0-67.el7.x86_64.img } menuentry 'Second custom entry' --class red --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-0-rescue-07f43f20a54c4ce8ada8b70d33fd001c-advanced-32782dd0-4b47-4d56-a740-2076ab5e5976' { load_video 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='hd0,msdos1' 7885bba1-8aa7-4e5d-a7ad-821f4f52170a else search --no-floppy --fs-uuid --set=root 7885bba1-8aa7-4e5d-a7ad-821f4f52170a fi linux16 /vmlinuz-0-rescue-07f43f20a54c4ce8ada8b70d33fd001c root=/dev/mapper/rhel-root ro rd.lvm.lv=rhel/root vconsole.font=latarcyrheb-sun16 rd.lvm.lv=rhel/swap vconsole.keymap=us crashkernel=auto rhgb quiet initrd16 /initramfs-0-rescue-07f43f20a54c4ce8ada8b70d33fd001c.img }
以下を除いて、すべてのファイルを
/etc/grub.d/
ディレクトリーから削除します。-
00_header
, -
40_custom
, -
01_users
(存在する場合) ならびに
README
別の方法では、
/etc/grub2.d/
ディレクトリーのファイルを維持したい場合は、chmod a-x <file_name>
コマンドを使用して実行不可にします。
-
-
40_custom
ファイル内のメニューエントリーを希望に合わせて編集、追加、削除します。 以下のように
grub2-mkconfig -o
コマンドを実行してgrub.cfg
ファイルを再構築します。BIOS ベースのマシンでは、
root
で以下のコマンド実行します。~]# grub2-mkconfig -o /boot/grub2/grub.cfg
UEFI ベースのマシンでは、
root
で以下のコマンド実行します。~]# grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
26.6. パスワードを使用した GRUB 2 の保護
GRUB 2 では、以下の 2 種類のパスワード保護が選択できます。
- メニューエントリーの修正にはパスワードが必要ですが、既存のメニューエントリーの起動には 必要ありません。
- メニューエントリーの修正にはパスワードが必要で、かつメニューエントリーのいずれかまたは複数、もしくはすべての起動にもパスワードが必要。
エントリー修正のみにパスワードを必要とする GRUB 2 の設定
GRUB 2 エントリーの修正にパスワード認証を必要とするには、以下の手順に従います。
root で、
grub2-setpassword
コマンドを実行します。~]# grub2-setpassword
パスワードを入力し、確認します。
Enter password: Confirm password:
この手順により、パスワードのハッシュを含む /boot/grub2/user.cfg
ファイルが作成されます。このパスワードのユーザー root
は、/boot/grub2/grub.cfg
ファイルで定義されます。この変更により、ブート中にブートエントリーを修正する場合は、root
ユーザー名とパスワードの確認が必要になります。
エントリーの修正と起動にパスワードを必要とする GRUB 2 の設定
grub2-setpassword
を使用してパスワードを設定すると、権限のない修正からメニューエントリーは保護されますが、権限のない起動からは保護されません。エントリーの起動にもパスワードを必要とするには、grub2-setpassword
でパスワードを設定した後に、以下の手順を実行します。
GRUB 2 パスワードを忘れると、以下の手順で再設定したエントリーは起動できなくなります。
-
/boot/grub2/grub.cfg
ファイルを開きます。 -
menuentry
で始まる行を検索し、パスワード保護するブートエントリーを見つけます。 --unrestricted
パラメーターを削除します。以下に例を示します。[file contents truncated] menuentry 'Red Hat Enterprise Linux Server (3.10.0-327.18.2.rt56.223.el7_2.x86_64) 7.2 (Maipo)' --class red --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-327.el7.x86_64-advanced-c109825c-de2f-4340-a0ef-4f47d19fe4bf' { load_video set gfxpayload=keep [file contents truncated]
- ファイルを保存してから閉じます。
これでエントリーの起動にも root
ユーザー名とパスワードの入力が必要になります。
新しいカーネルバージョンがインストールされる際は、/boot/grub2/grub.cfg
への手動の変更が残ります。ただし、grub2-mkconfig
コマンドを使用して grub.cfg
を再生成すると失われます。このため、パスワード保護を維持するには、grub2-mkconfig
を使用した後、毎回上記の手順を実行する必要があります。
/boot/grub2/grub.cfg
ファイル内のすべてのメニューエントリーから --unrestricted
パラメーターを削除すると、新しくインストールされたすべてのカーネルに、--unrestricted
なしでメニューエントリーが作成されます。そのため、パスワードは自動的に継承されます。
Red Hat Enterprise Linux 7.2 への更新前でのパスワード設定
grub2-setpassword
ツールは Red Hat Enterprise Linux 7.2 で追加され、GRUB 2 パスワード設定の標準メソッドになっています。Red Hat Enterprise Linux の以前のバージョンでは、/etc/grub.d/40_custom
ファイルでブートエントリーを手動で指定し、/etc/grub.d/01_users
ファイルでスーパーユーザーを指定する必要がありました。
GRUB 2 へのユーザーの追加
--unrestricted
パラメーターなしでエントリーを起動するには、rootパスワードが必要です。ただし、GRUB 2 では、パスワードを提供せずにこのエントリーを起動できる root 以外のユーザーも作成できるようになります。エントリーの変更にも root パスワードが必要です。このようなユーザーの作成については、 GRUB 2マニュアルを参照してください。
26.7. GRUB 2 の再インストール
GRUB 2 の誤ったインストールやファイルの欠如、システムの破損などで引き起こされる特定の問題を解決するには、GRUB 2 の再インストールが便利な方法となる場合があります。GRUB 2 を再インストールする理由には、これらの他に以下のものがあります。
- GRUB の以前のバージョンからのアップグレード
- インストール済みのオペレーティングシステムを制御するために、ユーザーが GRUB 2 ブートローダーを必要としている。ただし、オペレーティングシステムのなかには独自のブートローダーとインストールされるものもあります。GRUB 2 を再インストールすることで、希望するオペレーティングシステムに制御が戻されます。
- 別のドライブにブート情報を追加する。
26.7.1. BIOS ベースマシンへの GRUB 2 の再インストール
grub2-install
コマンドを使用すると、ブート情報が更新され、不明なファイルが復元されます。ファイルは、破損していない場合のみ復元されます。
システムが正常に稼働している場合は、grub2-install device
コマンドを使用して GRUB 2 を再インストールします。たとえば、sda
が デバイス の場合は、以下のようになります。
~]# grub2-install /dev/sda
26.7.2. UEFI ベースマシンへの GRUB 2 の再インストール
yum reinstall grub2-efi shim
コマンドを使用すると、ブート情報が更新され、不明なファイルが復元されます。ファイルは、破損していない場合のみ復元されます。
システムが正常に稼働している場合は、yum reinstall grub2-efi shim
コマンドを使用して GRUB 2 を再インストールします。以下に例を示します。
~]# yum reinstall grub2-efi shim
26.7.3. GRUB 2 の再設定と再インストール
この方法ではすべての GRUB 2 設定ファイルとシステム設定が完全に削除されます。この方法は全設定をデフォルト値にリセットする場合に使用します。設定ファイルを削除し、GRUB 2 を再インストールすると、破損されたファイルと間違った設定によって引き起こされた障害が修復されます。これを行うには、root
で以下の手順に従います。
-
rm /etc/grub.d/*
コマンドを実行します。 -
rm /etc/sysconfig/grub
コマンドを実行します。 EFI システムのみの場合は、以下のコマンドを実行します。
~]# yum reinstall grub2-efi shim grub2-tools
BIOS および EFI システムについては、以下のコマンドを実行します。
~]# yum reinstall grub2-tools
以下のように
grub2-mkconfig -o
コマンドを実行してgrub.cfg
ファイルを再構築します。BIOS ベースのマシンでは、
root
で以下のコマンド実行します。~]# grub2-mkconfig -o /boot/grub2/grub.cfg
UEFI ベースのマシンでは、
root
で以下のコマンド実行します。~]# grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
-
「GRUB 2 の再インストール」 にある手順に従い、
/boot/
パーティション上の GRUB 2 を復元します。
26.8. GRUB Legacy から GRUB 2 へのアップグレード
Red Hat Enterprise Linux (RHEL) バージョン 6 を 7 へインプレースアップグレードを行う場合は、GRUB Legacy
から GRUB 2
へのアップグレードは自動的に行われませんが、手動で実行できます。以下の理由から GRUB アップグレードを実行します。
-
RHEL 7 以降では、
GRUB Legacy
は維持されず、アップデートを受信しません。 -
GRUB Legacy
は/boot/
ディレクトリーなしでシステムで起動できない。 -
GRUB 2
はより機能が豊富で、信頼性に優れています。 -
GRUB 2
は、より多くのハードウェア設定、ファイルシステム、ドライブレイアウトをサポートしています。
オペレーティングシステムのインプレースアップグレード後に GRUB Legacy から GRUB 2 へアップグレード。
GRUB Legacy から GRUB 2 へのアップグレード
GRUB Legacy パッケージが Red Hat Upgrade Tool によりアンインストールされていることを確認します。
~]# yum remove grub
注記grub2 パッケージをアンインストールしても、インストールされている GRUB Legacy ブートローダーには影響しません。
grub2 パッケージがインストールされていることを確認します。RHEL 7 へのアップグレード後に grub2 がシステムにない場合は、以下を実行して手動でインストールできます。
~]# yum install grub2
EFI を使用してシステムを起動した場合は、以下のパッケージをインストールします。
~]# yum install grub2-efi-x64 shim-x64
GRUB 2 設定ファイルの生成
本セクションでは、GRUB 2
設定を削除せずに GRUB Legacy
設定を追加する方法を説明します。GRUB 2
が正しく機能しない場合には、この手順は GRUB Legacy
設定を維持します。
以下のオプションのいずれかを使用して、
/etc/default/grub
ファイルを手動で作成します。-
/etc/default/grub
ファイルを作成します。詳細は、How to re-create the missing /etc/default/grub file in Red Hat Enterprise Linux 7?の記事を参照してください。 -
同様の Red Hat Enterprise Linux 7 システムから
/etc/default/grub
ファイルをコピーし、そのファイルを調整します。
-
ブートローダーにより異なります。
レガシー BIOS を使用してシステムを起動した場合には、
GRUB 2
ファイルを /dev/device_name ディスクの/boot/grub/
ディレクトリーにインストールします。~]# grub2-install --grub-setup=/bin/true /dev/device_name
/dev/device_name を、起動可能なデバイスファイルに置き換えます。
--grub-setup=/bin/true
オプションを使用すると、古いGRUB Legacy
設定が削除されないようにします。EFI を使用してシステムを起動している場合は、shim ブートローダーのブートエントリーを作成し、
BootOrder
変数を変更して、shim
によってファームウェアブート GRUB 2 を設定します。~]# efibootmgr -c -L 'Red Hat Enterprise Linux 7' -d /dev/device_name -p 1 -l '\EFI\redhat\shimx64.efi'
/dev/device_name を、起動可能なデバイスファイルに置き換えます。
警告設定ファイル拡張子の違いに気を付けてください。
-
.conf
はGRUB
用です。 -
.cfg
はGRUB 2
用です。
次の手順で、誤って古い
GRUB
設定ファイルを上書きしないよう気を付けてください。GRUB 2
設定ファイルを生成します。システムがレガシー BIOS を使用する場合は、以下を行います。
~]# grub2-mkconfig -o /boot/grub2/grub.cfg
システムが EFI を使用する場合は、以下を行います。
~]# grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
注記生成した
GRUB 2
設定ファイルをカスタマイズするには、「GRUB 2 設定ファイルのカスタマイズ」 を参照してください。/boot/grub2/grub.cfg
で直接行うのではなく、/etc/default/grub
で変更を加える必要があります。それ以外の場合は、ファイルが再生成されるたびに/boot/grub2/grub.cfg
の変更が失われます。
GRUB Legacy ブートローダーをインストールしたまま GRUB 2 のテスト
本セクションでは、GRUB Legacy
設定を削除せずに GRUB 2
をテストする方法を説明します。GRUB Legacy
設定は、GRUB 2
設定の検証が終わるまでそのままにします。GRUB 2
設定を安全にテストするためにも、GRUB Legacy
から GRUB 2
を起動します。
このセクションは、レガシー BIOS ブートにのみ適用されます。EFI の場合、古いブートローダーと新しいブートローダーの両方にブートエントリーが存在し、EFI ファームウェア設定で任意のブートエントリーを選択することで、古いレガシーの GRUB を起動できます。
新しいセクションを
/boot/grub/grub.conf
に追加します。システムに別の
/boot
パーティションがある場合は、以下を使用します。title GRUB 2 Test root (hd0,0) kernel /grub2/i386-pc/core.img boot
(hd0,0) を
GRUB Legacy
ブート可能なデバイスの指定に置き換えます。システムに個別の
/boot
パーティションがない場合は、以下を使用します。title GRUB 2 Test root (hd0,0) kernel /boot/grub2/i386-pc/core.img boot
(hd0,0) を
GRUB Legacy
ブート可能なデバイスの指定に置き換えます。- システムを再起動します。
-
GRUB Legacy
メニューが表示されたら、GRUB 2 Test
エントリーを選択します。 -
GRUB 2
メニューが表示されたら、起動するカーネルを選択します。 -
上記がうまく機能しない場合は再起動し、次の起動時に
GRUB 2 Test
エントリーを選択しないでください。
BIOS を使用するシステムで GRUB Legacy ブートローダーの置き換え
GRUB 2 が正常に機能している場合は、以下を行います。
GRUB Legacy ブートローダーを GRUB 2 ブートローダーに置き換えます。
~]# grub2-install /dev/sda
古い GRUB Legacy 設定ファイルを削除します。
~]# rm /boot/grub/grub.conf
システムを再起動します。
~]# reboot
EFI を使用するシステムの GRUB Legacy の削除
GRUB 2 が正常に機能している場合は、以下を行います。
/boot/efi/EFI/redhat/
ディレクトリーの内容を確認し、Legacy GRUB のみに関連する廃止されたファイルを削除します。~]# rm /boot/efi/EFI/redhat/grub.efi ~]# rm /boot/efi/EFI/redhat/grub.conf
Preupgrade Assistant ユーティリティーおよび Red Hat Upgrade Tool ユーティリティーを使用して RHEL 6 から RHEL 7 へのインプレースアップグレードを実行した場合は、
.preupg
接尾辞が付いたファイルのバックアップコピーも削除します。~]# rm /boot/efi/EFI/redhat/*.preupg
efibootmgr
コマンドを使用して、\EFI\redhat\grub.efi
ファイルを参照する古いブートエントリーを見つけます。~]# efibootmgr -v | grep '\\EFI\\redhat\\grub.efi'
出力例:
Boot0001* Linux HD(1,GPT,542e410f-cbf2-4cce-9f5d-61c4764a5d54,0x800,0x64000)/File(\EFI\redhat\grub.efi)
この場合のエントリー番号は
0001
です。指定したブートエントリーを削除します。次のコマンドは、上記の例からブートエントリーを削除します。
~]# efibootmgr -Bb 0001
複数のブートエントリーがある場合は、特定された古いブートエントリーをすべて削除します。
アップグレードしたら、GRUB Legacy
ブートローダーの GRUB 2
への手動アップグレードが正常に完了するまで、オペレーティングシステムはサポートされません。これは、メジャーリリース間でのパッケージのインストールがサポートされていないためです。RHEL 7 の場合は、RHEL 6 の GRUB Legacy
とは異なり、GRUB 2
のみがサポート、開発、およびテストされています。
26.9. シリアルコンソールでの GRUB 2
本セクションでは、ディスプレイやキーボードのないマシンでのシリアル通信に GRUB 2
を設定する方法を説明します。
シリアル接続で GRUB 2
端末にアクセスするには、特定のカーネルがシリアル接続を監視するように、カーネル定義に追加オプションを追加する必要があります。
以下に例を示します。
console=ttyS0,9600n8
console=ttyS0
が使用するシリアルターミナルでは、9600
がボーレートで、n
はパリティーなしで、8
は単語の長さ (ビット単位) です。たとえば、115200
のように非常に高いボーレートは、ログファイルの後のタスクに適しています。
シリアルコンソール設定の詳細は 「インストールできる外部のドキュメント」 を参照してください。
26.9.1. シングルブート用に GRUB 2 の構成
単一ブートプロセス中にのみシステムがシリアルターミナルを使用するよう設定するには、GRUB 2 ブートメニューが表示されたときに、起動したいカーネルにカーソルを移動し、e キーを押してカーネルパラメータを編集します。rhgb
および quiet
パラメーターを削除し、以下のように linux16
行の末尾にコンソールパラメーターを追加します。
linux16 /vmlinuz-3.10.0-0.rc4.59.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 console=ttyS0,9600
この設定は永続的なものではなく、これから実行するブートにのみ適用されます。
26.9.2. 永続的な変更のための GRUB 2 の設定
システムでメニューエントリーの変更を永続的に行うには、grubby
ツールを使用します。たとえば、デフォルトのカーネルのエントリーを更新するには、以下のようにコマンドを入力します。
~]# grubby --remove-args="rhgb quiet" --args=console=ttyS0,9600 --update-kernel=DEFAULT
--update-kernel
パラメーターはキーワード ALL
、またはカーネルインデックス番号のコンマ区切りの一覧も受け入れます。grubby
の使用の詳細は 「GRUB 2 メニューエントリーに対する引数の追加および削除」 を参照してください。
26.9.3. 新しい GRUB 2 ファイルの設定
新しい GRUB 2 設定ファイルを構築する必要がある場合は、/etc/default/grub
ファイルに次の 2 行を追加します。
GRUB_TERMINAL="serial" GRUB_SERIAL_COMMAND="serial --speed=9600 --unit=0 --word=8 --parity=no --stop=1"
最初の行は、グラフィカルターミナルを無効にします。GRUB_TERMINAL
キーを指定すると、GRUB_TERMINAL_INPUT
および GRUB_TERMINAL_OUTPUT
の値が上書きされることに注意してください。2 行目では、ボーレートやパリティーなどの値を使用中の環境とハードウェアに適合するように調整します。たとえば、115200
のように非常に高いボーレートは、ログファイルの後のタスクに適しています。/etc/default/grub
ファイルを変更した場合は、GRUB 2 設定ファイルの更新が必要になります。
以下のように grub2-mkconfig -o
コマンドを実行して grub.cfg
ファイルを再構築します。
BIOS ベースのマシンでは、
root
で以下のコマンド実行します。~]# grub2-mkconfig -o /boot/grub2/grub.cfg
UEFI ベースのマシンでは、
root
で以下のコマンド実行します。~]# grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
26.9.4. screen を使用したシリアルコンソールへの接続
screen ツールは、シリアルターミナルとして機能します。このツールをインストールするには、root
で以下を実行します。
~]# yum install screen
シリアルコンソールを使用してマシンに接続するには、コマンドを以下のように使用します。
screen /dev/console_port baud_rate
デフォルトでは、オプションが指定されない場合、screen は標準の 9600 ボーレートを使用します。大きいボーレートを設定するには、以下のコマンドを入力します。
~]$ screen /dev/console_port
115200
console_port は ttyS0
または ttyUSB0
などの場合。
screen でセッションを終了するには、Ctrl+a を押して、:quit
と入力し、Enter を押します。
追加オプションおよび詳細情報は、screen(1)
man ページを参照してください。
26.10. ブート中のターミナルメニューの編集
ブート時にメニューエントリーを修正し、カーネルに引数を渡すことができます。これは、メニューエントリーエディターインターフェースを使用して行い、このインターフェースはブートローダーメニュー内で選択したメニューエントリーで e キーを押すと開始します。Esc キーはすべての変更を破棄し、標準メニューインターフェースを再度読み込みます。c キーは、コマンドラインインターフェースを読み込みます。
コマンドラインインターフェースは最も基本的な GRUB 2 インターフェースですが、制御が最も課せられます。コマンドラインでは、関連する GRUB 2 コマンドの入力が可能で、それに続けて Enter キーを押すとそのコマンドが実行します。このインターフェースには、コンテキストをベースにした Tab キー自動入力や行頭に移動する Ctrl+a、行末に移動する Ctrl+e など、shell と同様の高度な機能が搭載されています。さらに、矢印、Home、End、Delete のキー動作は、bash シェルでの機能と同じになります。
26.10.1. レスキューモードでの起動
レスキューモードは、便利なシングルユーザー環境を提供し、通常の起動プロセスを完了できない状況においてシステムの修復を可能にします。レスキューモードでは、システムはすべてのローカルファイルシステムのマウントと、いくつかの重要なシステムサービスの開始を試みますが、ネットワークインターフェースをアクティブにしたり、他のユーザーによるシステムへの同時ログインを許可したりすることはしません。Red Hat Enterprise Linux 7 では、レスキューモードはシングルユーザーモードと同等であり、root
パスワードを必要とします。
- システムの起動時にレスキューモードに入るには、GRUB 2 ブート画面で e キーを押して編集します。
64 ビット IBM Power シリーズの場合は
linux
行、x86-64 BIOS ベースシステムの場合はlinux16
行、または UEFI システムの場合はlinuxefi
行の最後に以下のパラメーターを追加します。systemd.unit=rescue.target
Ctrl+a か Ctrl+e を押して行の最初または最後に移動します。システムによっては、Home と End が機能するものもあります。
1
、s
、およびsingle
という同等のパラメーターをカーネルに渡すことも可能であることに注意してください。- Ctrl+x を押して、パラメーターでシステムを起動します。
26.10.2. 緊急モードでのブート
緊急モードは、可能な限り最小限の環境を提供し、システムがレスキューモードに入れない状態でもシステムの修復を可能にします。緊急モードでは、システムは root
ファイルシステムを読み込み専用でマウントし、他のローカルファイルシステムのマウントは試みません。また、ネットワークインターフェースのアクティブ化も行わず、限定的な必須サービスのみを起動します。Red Hat Enterprise Linux 7 では、緊急モードでは root
パスワードが必要です。
- 緊急モードに入るには、GRUB 2 ブート画面で e キーを押して編集を行います。
64 ビット IBM Power シリーズの場合は
linux
行、x86-64 BIOS ベースシステムの場合はlinux16
行、または UEFI システムの場合はlinuxefi
行の最後に以下のパラメーターを追加します。systemd.unit=emergency.target
Ctrl+a か Ctrl+e を押して行の最初または最後に移動します。システムによっては、Home と End が機能するものもあります。
emergency
と-b
という同等のパラメーターをカーネルに渡すことも可能であることに注意してください。- Ctrl+x を押して、パラメーターでシステムを起動します。
26.10.3. デバッグシェルのブート
systemd
デバッグシェルは、起動プロセスの初期段階で systemd
関連のブート問題を診断するために使用できるシェルを提供します。デバッグシェルでは、systemctl list-jobs
などの systemctl
コマンドや systemctl list-units
を使用することで、ブートの問題の原因を調べることができます。さらに、debug
オプションをカーネルコマンドラインに追加して、ログメッセージの数を増やすこともできます。systemd
では、カーネルコマンドラインオプション debug
が systemd.log_level=debug
のショートカットになりました。
デバッグシェルコマンドの追加
このセッションでのみデバッグシェルを有効にするには、以下の手順を実行します。
- GRUB 2 ブート画面で、編集するメニューエントリーにカーソルを移動し、e キーを押して編集できるようにします。
64 ビット IBM Power シリーズの場合は
linux
行、x86-64 BIOS ベースシステムの場合はlinux16
行、または UEFI システムの場合はlinuxefi
行の最後に以下のパラメーターを追加します。systemd.debug-shell
オプションで
debug
オプションを追加します。Ctrl+a か Ctrl+e を押して行の最初または最後に移動します。システムによっては、Home と End が機能するものもあります。
- Ctrl+x を押して、パラメーターでシステムを起動します。
必要な場合は、systemctl enable debug-shell
コマンドを使用して有効にすることで、ブート時にデバッグシェルを起動して開始できます。また、grubby
ツールを使用して GRUB 2 メニューのカーネルコマンドラインへの変更を永続的に行うこともできます。grubby
の使用の詳細は、「grubby ツールを使用した GRUB 2 メニューの永続的な変更」 を参照してください。
デバッグシェルを使用するには認証が必要ないため、デバッグシェルを永続的に有効にすることにはセキュリティー上のリスクがあります。デバッグシェルは、デバッグセッションが終了したときに無効にしてください。
デバッグシェルへの接続
起動プロセス中に、systemd-debug-generator
は TTY9 でデバッグシェルを設定します。
- Ctrl+Alt+F9 を押してデバッグシェルに接続します。仮想マシンを使用している場合は、このキーの組み合わせを送信するには、仮想化アプリケーションからのサポートが必要です。たとえば、Virtual Machine Manager を使用している場合は、メニューから → を選択します。
-
デバッグシェルには認証が必要ないため、
[root@localhost /]#
のようなプロンプトが TTY9 に表示されます。 必要な場合は、以下のようなコマンドを実行して、デバッグシェルにいることを確認します。
/]# systemctl status $$ ● debug-shell.service - Early root shell on /dev/tty9 FOR DEBUGGING ONLY Loaded: loaded (/usr/lib/systemd/system/debug-shell.service; disabled; vendor preset: disabled) Active: active (running) since Wed 2015-08-05 11:01:48 EDT; 2min ago Docs: man:sushell(8) Main PID: 450 (bash) CGroup: /system.slice/debug-shell.service ├─ 450 /bin/bash └─1791 systemctl status 450
- デフォルトのシェルに戻るには、ブートが成功した場合に Ctrl+Alt+F1 を押します。
起動時の問題を診断するために、特定の systemd
ユニットは、カーネルコマンドラインで systemd.mask=unit_name
を 1 回以上追加してマスクできます。ブートプロセス中に追加のプロセスを開始するには、カーネルコマンドラインに systemd.wants=unit_name
を追加します。systemd-debug-generator(8)
の man ページでは、これらのオプションについて説明します。
26.10.4. root パスワードの変更およびリセット
Red Hat Enterprise Linux 7 インストールでは、root
パスワードを設定する必要があります。root
パスワードが分からなくなった場合は、パスワードをリセットできます。ユーザーが wheel グループのメンバーである場合は、以下のように root
パスワードを変更できます。
~]$ sudo passwd root
GRUB 2 では、Red Hat Enterprise Linux 6 での GRUB のようなシングルユーザモードでパスワードの再設定を行いません。emergency
モードおよび single-user
モードで操作するには、root
パスワードが必要になりました。
root
パスワードをリセットする 2 つの手順を以下に示します。
- インストールディスクを使用した root パスワードのリセット では、GRUB 2 メニューを編集せずにシェルプロンプトにアクセスする方法について説明しています。この方法は 2 番目の手順よりも短く、推奨される方法でもあります。ブートディスクまたは通常の Red Hat Enterprise Linux 7 インストールディスクを使用できます。
-
rd.break を使用した root パスワードのリセット では、制御が
initramfs
からsystemd
に渡される前に、rd.break
を使用して起動プロセスを中断します。この方法の欠点は、手順が多いことです。たとえば、GRUB 2 メニューを編集し、SELinux ファイルの再ラベル行いますが、時間がかかる可能性があります。または、SELinux 強制モードを変更し、ブート完了時に/etc/shadow/
の SELinux セキュリティーコンテキストを復元する必要があります。
インストールディスクを使用した root パスワードのリセット
- システムを起動し、BIOS 情報が表示されたときに、ブートメニューのオプションを選択して、インストールディスクからのブートを選択します。
-
Troubleshooting
を選択します。 -
Rescue a Red Hat Enterprise Linux System
を選択します。 -
デフォルトオプションの
Continue
を選択します。暗号化されたファイルシステムが見つかった場合は、この時点で、パスフレーズを入力するよう求められます。 - シェルプロンプトが表示されるまで OK を押して、表示された情報を承認します。
以下のようにファイルシステム
root
を変更します。sh-4.2# chroot /mnt/sysimage
-
passwd
コマンドを入力し、コマンドラインに表示される指示にしたがってroot
パスワードを変更します。 時間がかかるディスクの SELinux の再ラベルを防ぐために、
autorelable
ファイルを削除します。sh-4.2# rm -f /.autorelabel
-
exit
コマンドを入力してchroot
環境を終了します。 -
exit
コマンドを再び実行して初期化を再開し、システム起動を完了します。
rd.break を使用した root パスワードのリセット
- システムを起動し、GRUB 2 ブート画面で e キーを押して編集を行います。
rhgb
およびquiet
パラメーターを、最後または末前、linux16
行、または UEFI システム のlinuxefi
から削除します。Ctrl+a か Ctrl+e を押して行の最初または最後に移動します。システムによっては、Home と End が機能するものもあります。
重要システムメッセージを有効化するためには、
rhgb
とquiet
のパラメーターを削除する必要があります。64 ビット IBM Power シリーズの場合は
linux
行、x86-64 BIOS ベースシステムの場合はlinux16
行、または UEFI システムの場合はlinuxefi
行の最後に以下のパラメーターを追加します。rd.break enforcing=0
enforcing=0
オプションを追加すると、時間がかかる SELinux の再ラベルプロセスを省略できます。initramfs
は、Linux kernel に制御が渡される前に停止するため、root
ファイルシステムで作業を行えます。initramfs
プロンプトは、Linux 行で指定された最後のコンソールに表示されます。Ctrl+x を押して変更したパラメーターでシステムを起動します。
暗号化されたファイルシステムでは、この時点ではパスワードが必要になります。ただし、パスワードプロンプトはロギングメッセージに隠れて表示されないことがあります。Backspace キーを押してプロンプトを表示させることができます。ログメッセージを無視して、キーを放し、暗号化されたファイルシステムのパスワードを入力します。
initramfs
switch_root
プロンプトが表示されます。ファイルシステムが
/sysroot/
で読み取り専用でマウントされます。ファイルシステムが書き込み可能になっていないと、パスワードの変更はできません。ファイルシステムを書き込み可能で再マウントします。
switch_root:/# mount -o remount,rw /sysroot
書き込みが有効な状態でファイルシステムが再マウントされます。
以下のようにファイルシステムの
root
を変更します。switch_root:/# chroot /sysroot
プロンプトが
sh-4.2#
に変わります。passwd
コマンドを入力し、コマンドラインに表示される指示にしたがってroot
パスワードを変更します。システムが書き込み可能でないと、passwd ツールは失敗し、以下のエラーメッセージが表示されます。
Authentication token manipulation error
パスワードファイルを更新すると、SELinux セキュリティーコンテキストが正しくないファイルが作成されます。次回のシステムのブート時にすべてのファイルを再ラベルするには、以下のコマンドを入力します。
sh-4.2# touch /.autorelabel
また、手順 3 で
enforcing=0
オプションを指定した場合は、大きいディスクを再ラベルするのにかかる時間を節約するために、この手順を省略できます。ファイルシステムを読み取り専用で再マウントします。
sh-4.2# mount -o remount,ro /
-
exit
コマンドを入力してchroot
環境を終了します。 exit
コマンドを再び実行して初期化を再開し、システム起動を完了します。暗号化されているファイルシステムの場合は、この時点でパスワードまたはパスフレーズが必要です。ただし、パスワードプロンプトはロギングメッセージに隠れて表示されないことがあります。Backspace キーを押して保持すると、プロンプトが表示されます。ログメッセージを無視して、キーを放し、暗号化されたファイルシステムのパスワードを入力します。
注記SELinux の再ラベルプロセスには長時間がかかることがあることに注意してください。このプロセスが完了すると、システムが自動的に再起動されます。
手順 3 で
/etc/shadow
オプションを追加し、手順 8 でtouch /.autorelabel
コマンドを省略した場合は、以下のコマンドを入力してenforcing=0
ファイルの SELinux セキュリティーコンテキストを復元します。~]# restorecon /etc/shadow
以下のコマンドを実行して、SELinux ポリシーの強制を再び有効にし、ポリシーの強制が有効になっていることを確認します。
~]# setenforce 1 ~]# getenforce Enforcing
26.11. Unified Extensible Firmware Interface (UEFI) セキュアブート
Unified Extensible Firmware Interface (UEFI) セキュアブートテクノロジーにより、ファームウェアに含まれる公開鍵のデータベースで承認された暗号化キーでシステムブートローダーが署名されているかどうかをシステムファームウェアがチェックするようになります。また、次の段階のブートローダーおよびカーネルでの署名確認により、信頼できるキーで署名されていないカーネルスペースコードの実行を阻止できます。
信頼チェーンは、次のようにファームウェアから署名済みドライバーおよびカーネルモジュールの方向で確立されます。第一段階のブートローダー shim.efi
は UEFI 秘密鍵により署名されてから、認証局 (CA) により署名され、ファームウェアデータベースに保存された公開鍵により認証されます。shim.efi
には、GRUB 2 ブートローダー grubx64.efi
と Red Hat カーネルの両方を認証するのに使用する Red Hat 公開鍵 Red Hat Secure Boot (CA key 1) が含まれます。カーネルには、ドライバーおよびモジュールを認証する公開鍵が含まれます。
セキュアブートは、Unified Extensible Firmware Interface (UEFI) 仕様のブートパス検証コンポーネントです。この仕様は、以下を定義します。
- 揮発性ではないストレージでの暗号で保護された UEFI 変数用のプログラミングインターフェース
- 信頼できる X.509 root 証明書の UEFI 変数での保存方法
- ブートローダーやドライバーなどの UEFI アプリケーションの検証
- 既知の問題のある証明書およびアプリケーションハッシュを無効にする手順
UEFI Secure Boot は、第 2 ステージのブートローダーのインストールや削除を妨げたりせず、このような変更についてユーザーによる明示的な確認を必要としません。また、このような変更の明示的なユーザー確認を必要としません。したがって、UEFI セキュアブートはブートパスの操作を停止せず、承認されていない変更を検出するのに役立ちます。。新しいブートローダーまたはカーネルは、システムで信頼されている鍵で署名されている限り動作します。
26.11.1. Red Hat Enterprise Linux 7 での UEFI セキュアブートサポート
Red Hat Enterprise Linux 7 には UEFI セキュアブート機能が含まれているので、Red Hat Enterprise Linux 7 は UEFI セキュアブートが有効になっているシステム上でインストールし、実行できます。セキュアブートテクノロジーが有効になっている UEFI ベースのシステムでは、ロードされたすべてのドライバーが信頼できる鍵で署名されている必要があります。Red Hat が提供するすべてのドライバーは、Red Hat の秘密鍵のいずれかで署名され、カーネル内の対応する Red Hat 公開鍵によって認証されます。
Red Hat Enterprise Linux DVD では提供されていない外部構築のドライバーを読み込みたい場合は、これらのドライバーも署名されていることを確認してください。
カスタムドライバーの署名に関する情報は、『Red Hat Enterprise Linux 7 カーネル管理ガイド』の「Signing Kernel Modules for Secure Boot」を参照してください。
UEFI セキュアブートによる制限
Red Hat Enterprise Linux 7 の UEFI セキュアブートサポートは、カーネルモードコードをその署名が適切に認証された後にのみ実行するよう設計されています (制限が存在します)。
GRUB 2 モジュールの署名および検証を行うインフラストラクチャーがないため、GRUB 2 モジュールのロードは無効になります。これは、これらのロードを許可することで、セキュアブートが定義するセキュリティー境界内で信頼できないコードが実行されることがあることを意味します。代わりに、Red Hat は、すでに含まれている Red Hat Enterprise Linux 7 でサポートされるすべてのモジュールを含む署名済み GRUB 2 バイナリーを提供します。
詳細は、Red Hat ナレッジベースの記事 UEFI セキュアブートによる制約 を参照してください。
26.12. 関連資料
GRUB 2 ブートローダーに関する詳細情報は、以下のリソースを参照してください。
インストールされているドキュメント
-
/usr/share/doc/grub2-tools-version-number/
: このディレクトリーには、GRUB 2 の使用および設定に関する情報が記載されています。version-number は、インストールされている GRUB 2 パッケージのバージョンに対応します。 -
info grub2
: GRUB 2 情報ページにはチュートリアル、ユーザーリファレンスガイド、プログラマーリファレンスガイド、GRUB 2 とその使用方法に関する FAQ などが含まれています。 -
grubby(8)
: GRUB および GRUB 2 を設定するコマンドラインツールの man ページです。 -
new-kernel-pkg(8)
: カーネルインストールのスクリプトを記述するツールの man ページです。
インストールできる外部のドキュメント
/usr/share/doc/kernel-doc-kernel_version/Documentation/serial-console.txt
: kernel-doc パッケージが提供するこのファイルには、シリアルコンソールに関する情報が含まれます。カーネルのドキュメントにアクセスする前に、root
で以下のコマンドを実行する必要があります。~]# yum install kernel-doc
- Red Hat インストールガイド: このインストールガイドでは、インストール、用語、インターフェース、コマンドなど、GRUB 2 に関する基本的な情報を紹介しています。
このページには機械翻訳が使用されている場合があります (詳細はこちら)。