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
systemd.unit=rescue.targetCopy to Clipboard Copied! Toggle word wrap Toggle overflow 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
systemd.unit=emergency.targetCopy to Clipboard Copied! Toggle word wrap Toggle overflow Ctrl+a か Ctrl+e を押して行の最初または最後に移動します。システムによっては、Home と End が機能するものもあります。
emergencyおよび-bという同等のパラメーターをカーネルに渡すことも可能であることに注意してください。- Ctrl+x を押して、パラメーターでシステムを起動します。
26.10.3. デバッグシェルのブート リンクのコピーリンクがクリップボードにコピーされました!
systemd デバッグシェルは、起動プロセスの初期段階で systemd 関連のブート問題を診断するために使用できるシェルを提供します。デバッグシェルでは、systemctl list-jobs や systemctl list-units などの systemctl コマンドを使用してブート問題の原因を調べることができます。さらに、デバッグ オプションをカーネルコマンドラインに追加して、ログメッセージの数を増やすこともできます。systemd では、カーネルコマンドラインオプションの debug が、systemd.log_level=debug のショートカットになりました。
デバッグシェルコマンドの追加
このセッションでのみデバッグシェルを有効にするには、以下の手順を実行します。
- GRUB 2 ブート画面で、編集するメニューエントリーにカーソルを移動し、e キーを押して編集できるようにします。
64 ビット IBM Power シリーズの場合は
linux行、x86-64 BIOS ベースシステムの場合はlinux16行、または UEFI システムの場合はlinuxefi行の最後に以下のパラメーターを追加します。systemd.debug-shell
systemd.debug-shellCopy to Clipboard Copied! Toggle word wrap Toggle overflow 必要に応じて、
デバッグオプションを追加します。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 に表示されます。 必要な場合は、以下のようなコマンドを実行して、デバッグシェルにいることを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - デフォルトのシェルに戻るには、ブートが成功した場合に 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
~]$ sudo passwd root
GRUB 2 では、Red Hat Enterprise Linux 6 での GRUB のようなシングルユーザーモードでパスワードの再設定を行いません。single-user モードおよび emergency モードでの操作には、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 (Red Hat Enterprise Linux システムのレスキュー)を選択します。 -
デフォルトオプションである
Continue (選択)を選択します。暗号化されたファイルシステムが見つかった場合は、この時点で、パスフレーズを入力するよう求められます。 - シェルプロンプトが表示されるまで OK を押して、表示された情報を承認します。
以下のようにファイルシステム
rootを変更します。chroot /mnt/sysimage
sh-4.2# chroot /mnt/sysimageCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
passwdコマンドを入力し、コマンドラインに表示される指示にしたがってrootパスワードを変更します。 時間がかかるディスクの SELinux の再ラベルを防ぐために、
autorelableファイルを削除します。rm -f /.autorelabel
sh-4.2# rm -f /.autorelabelCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
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
rd.break enforcing=0Copy to Clipboard Copied! Toggle word wrap Toggle overflow enforcing=0オプションを追加すると、時間がかかる SELinux の再ラベルプロセスを省略できます。initramfsは、Linux kernel に制御が渡される前に停止するため、rootファイルシステムで作業を行えます。initramfsプロンプトは、Linux 行で指定された最後のコンソールに表示されます。Ctrl+x を押して変更したパラメーターでシステムを起動します。
暗号化されたファイルシステムでは、この時点ではパスワードが必要になります。ただし、パスワードプロンプトはロギングメッセージに隠れて表示されないことがあります。Backspace キーを押してプロンプトを表示させることができます。ログメッセージを無視して、キーを放し、暗号化されたファイルシステムのパスワードを入力します。
initramfs の
initramfsswitch_rootプロンプトが表示されます。ファイルシステムが
/sysroot/で読み取り専用でマウントされます。ファイルシステムが書き込み可能になっていないと、パスワードの変更はできません。ファイルシステムを書き込み可能で再マウントします。
switch_root:/# mount -o remount,rw /sysroot
switch_root:/# mount -o remount,rw /sysrootCopy to Clipboard Copied! Toggle word wrap Toggle overflow 書き込みが有効な状態でファイルシステムが再マウントされます。
以下のようにファイルシステムの
rootを変更します。switch_root:/# chroot /sysroot
switch_root:/# chroot /sysrootCopy to Clipboard Copied! Toggle word wrap Toggle overflow プロンプトが
sh-4.2#に変わります。passwdコマンドを入力し、コマンドラインに表示される指示にしたがってrootパスワードを変更します。システムが書き込み可能でないと、passwd ツールは失敗し、以下のエラーメッセージが表示されます。
Authentication token manipulation error
Authentication token manipulation errorCopy to Clipboard Copied! Toggle word wrap Toggle overflow パスワードファイルを更新すると、SELinux セキュリティーコンテキストが正しくないファイルが作成されます。次回のシステムのブート時にすべてのファイルを再ラベルするには、以下のコマンドを入力します。
touch /.autorelabel
sh-4.2# touch /.autorelabelCopy to Clipboard Copied! Toggle word wrap Toggle overflow また、手順 3 で
enforcing=0オプションを指定した場合は、大きいディスクを再ラベルするのにかかる時間を節約するために、この手順を省略できます。ファイルシステムを読み取り専用で再マウントします。
mount -o remount,ro /
sh-4.2# mount -o remount,ro /Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
exitコマンドを入力して、chroot環境を終了します。 exitコマンドを再び実行して初期化を再開し、システム起動を完了します。暗号化されているファイルシステムの場合は、この時点でパスワードまたはパスフレーズが必要です。ただし、パスワードプロンプトはロギングメッセージに隠れて表示されないことがあります。Backspace キーを押して保持すると、プロンプトが表示されます。ログメッセージを無視して、キーを放し、暗号化されたファイルシステムのパスワードを入力します。
注記SELinux の再ラベルプロセスには長時間がかかることがあることに注意してください。このプロセスが完了すると、システムが自動的に再起動されます。
手順 3 で
enforcing=0オプションを追加し、手順 8 でtouch /.autorelabelコマンドを省略した場合は、以下のコマンドを入力して/etc/shadowファイルの SELinux セキュリティーコンテキストを復元します。restorecon /etc/shadow
~]# restorecon /etc/shadowCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して、SELinux ポリシーの強制を再び有効にし、ポリシーの強制が有効になっていることを確認します。
setenforce 1 getenforce
~]# setenforce 1 ~]# getenforce EnforcingCopy to Clipboard Copied! Toggle word wrap Toggle overflow