1 GRUB 2ブートローダーの操作およびブート・サービスの構成
警告:
Oracle Linux 7は現在延長サポート中です。詳細は、Oracle Linux拡張サポートおよびOracleオープン・ソース・サポート・ポリシーを参照してください。
できるだけ早くアプリケーションとデータをOracle Linux 8またはOracle Linux 9に移行してください。
この章では、Oracle Linuxブート・プロセス、およびGRUB 2ブートローダーとその他のブート関連のカーネル・パラメータを構成および使用する方法について説明します。
ブート・プロセスについて
Oracle Linuxのブート・プロセスを理解すると、システムのブート時に問題のトラブルシューティングに役立ちます。ブート・プロセスには複数のファイルが含まれ、これらのファイルでのエラーがブートの問題の一般的な原因になります。
Oracle Linuxシステムのブート時には、次の処理が実行されます。
-
コンピュータのBIOSがパワーオン・セルフテスト(POST)を実行し、ハード・ディスクなどの周辺機器を検出して初期化します。
-
BIOSがマスター・ブート・レコード(MBR)をブート・デバイスからメモリーに読み取ります。(GUIDパーティション表(GPT)ディスクの場合、このMBRはディスクの最初のセクターにある保護MBRです。)MBRには、そのデバイス上のパーティションの構成に関する情報が格納されます。x86アーキテクチャを使用するコンピュータでは、MBRはブート・デバイスの最初の512バイトを占有します。最初の446バイトには、ブート・ローダー・プログラム(同じデバイス上でも別のデバイス上でも可)を指し示すブート・コードが含まれます。次の64バイトには、パーティション表が含まれます。最後の2バイトはブート署名で、エラーの検出に使用されます。
Oracle Linuxで使用されるデフォルトのブート・ローダー・プログラムは、GRand Unified Bootloaderバージョン2 (GRUB 2)です。
-
ブート・ローダーは
vmlinuz
カーネル・イメージ・ファイルをメモリーにロードし、initramfs
イメージ・ファイルのコンテンツを一時的なメモリー・ベースのファイル・システム(tmpfs
)に抽出します。 -
カーネルは、ルート・ファイル・システムへのアクセスに必要なドライバ・モジュールを
initramfs
ファイル・システムからロードします。 -
カーネルがプロセスID 1 (PID 1)を使用して
systemd
プロセスを起動します。systemd
はシステム上のすべてのプロセスの上位プロセスです。systemd
はその構成を/etc/systemd
ディレクトリのファイルから読み取ります。/etc/systemd/system.conf
ファイルはsystemd
がシステム初期化をどのように処理するかを制御します。systemd
は、/usr/lib/systemd/system/multi-user.target
などの/etc/systemd/system/default.target
によってリンクされているファイルを読み取り、デフォルトのシステム・ターゲットを判別します。ノート:
カーネル・ブート・パラメータを使用して、デフォルトのシステム・ターゲットをオーバーライドできます。「カーネル・ブート・パラメータ」を参照してください。
システム・ターゲット・ファイルは
systemd
が開始するサービスを定義します。systemd
はシステムをシステム・ターゲットで定義した状態にし、次のようなシステム初期化タスクを実行します。-
ホスト名の設定。
-
ネットワークの初期化
-
構成に基づくSELinuxの初期化。
-
初期バナーの出力。
-
カーネル・ブート引数に基づくシステム・ハードウェアの初期化。
-
/proc
ファイル・システムなど、仮想ファイル・システムを含むファイル・システムをマウント。 -
/var
内のディレクトリのクリーンアップ。 -
スワップの開始。
「システム状態ターゲットについて」を参照してください。
-
-
/etc/rc.local
を実行可能にし、/usr/lib/systemd/system/rc-local.service
を/etc/systemd/system
にコピーしている場合、systemd
は、/etc/rc.local
で定義した任意のアクションを実行します。ただし、このようなローカル・アクションを実行する方法として推奨されるのは、独自のsystemd
単位の定義です。
systemd
、およびsystemd
単位の記述方法は、systemd(1)
、systemd-system.conf(5)
、およびsystemd.unit(5)
の各マニュアル・ページを参照してください。
GRUB 2ブートローダーの操作
GRUB 2を使用すると、Oracle Linuxに加えて複数のオペレーティング・システムをロードでき、固有のオペレーティング・システムをチェーンロードできます。GRUB 2は、ファイル・システムおよびカーネル実行可能ファイルの形式を理解し、任意のオペレーティング・システムをロードする際に、ブート・デバイス上のカーネルの正確な位置を把握する必要はありません。GRUB 2で必要となるのは、ファイル名と、カーネルをロードするドライブ・パーティションのみです。
GRUB 2構成のカスタマイズ
GRUB 2構成は、GRUB 2メニューを使用して、またはコマンドラインを使用して管理できます。
ノート:
GRUB 2構成ファイルは直接編集しないでください。BIOSベース・システムでは、構成ファイルは/boot/grub2/grub.cfg
です。UEFIベース・システムでは、構成ファイルは/boot/efi/EFI/redhat/grub.cfg
です。
grub2-mkconfigコマンドは、/etc/grub.d
ファイルのテンプレート・スクリプトを使用して構成ファイルを生成し、メニュー構成設定は/etc/default/grub
構成ファイルから取得されます。
デフォルトのメニュー・エントリは/etc/default/grub
のGRUB_DEFAULT
パラメータの値によって決まります。値saved
の場合、grub2-set-defaultおよびgrub2-rebootコマンドを使用したデフォルト・エントリの指定が許可されます。grub2-set-defaultは以降すべての再起動のためのデフォルト・エントリを設定し、grub2-rebootは次回の再起動のためのデフォルト・エントリのみを設定します。
GRUB_DEFAULT
の値を数値、あるいはgrub2-rebootまたはgrub2-set-defaultへの引数として指定すると、GRUB 2では構成ファイルのメニュー・エントリを、最初のエントリを0としてカウントします。
GRUB 2ブートローダーを使用したデフォルトのブート・カーネルの設定
UEKをデフォルトのブート・カーネルとして設定するには:
-
たとえば次のように、構成ファイルで定義されているメニュー・エントリを表示します。
grep '^menuentry' /boot/grub2/grub.cfg
menuentry 'Oracle Linux Everything, with Linux 3.10.0-123.el7.x86_64' ... { menuentry 'Oracle Linux Everything, with Linux 3.8.13-35.2.1.el7uek.x86_64' ... { menuentry 'Oracle Linux Everything, with Linux 0-rescue-052e316f566e4a45a3391cff21b4174b' ... {
BIOSベース・システムのこの例では、構成ファイルは
/boot/grub2/grub.cfg
であり、RHCK、UEK、およびレスキュー・カーネルにそれぞれ対応するメニュー・エントリ0、1、2が含まれています。 -
次のコマンドを入力して、UEK (エントリ1)をデフォルトのブート・カーネルにします。
sudo grub2-set-default 1 sudo grub2-mkconfig -o /boot/grub2/grub.cfg
また、エントリのテキストの値を引用符で囲んだ文字列として指定することもできます。
sudo grub2-set-default 'Oracle Linux Everything, with Linux 3.8.13-35.2.1.el7uek.x86_64' sudo grub2-mkconfig -o /boot/grub2/grub.cfg
GRUB 2の使用、構成およびカスタマイズの詳細は、/usr/share/doc/grub2-tools-2.00/grub.html
としてインストールされている『GNU GRUBマニュアル』を参照してください。
カーネル・ブート・パラメータ
設定できるカーネル・ブート・パラメータはいくつかあります。次の表に、よく使用されるパラメータの一部を示します。
オプション | 説明 |
---|---|
|
Oracle Linux 6実行レベルに最も近い、 システム状態ターゲットの説明については、「システム状態ターゲットについて」を参照してください。 |
|
レスキュー・シェルを指定します。システムは単一ユーザー・モードで起動し、 |
|
マルチユーザーの非グラフィック・ログインに |
|
マルチユーザーのグラフィック・ログインに |
|
緊急モードを指定します。システムは単一ユーザー・モードで起動し、 |
|
キーボード・タイプを指定し、これは |
|
キーボード・レイアウトを指定し、これは |
|
システム言語とコード・セットを指定し、これは |
|
ブロック・デバイスとしてファイルにアクセスするために使用できるループ・デバイス( |
|
Ksplice Uptrack更新がカーネルに適用されないようにします。 |
|
デバッグ出力を削減します。 |
|
指定したUUIDと一致する暗号化Linux Unified Key Setup (LUKS)パーティションをアクティブ化します。 |
|
LVMボリューム・グループおよびアクティブ化するボリュームを指定します。 |
|
暗号化LUKSパーティションの検出を無効にします。 |
|
Red Hatのグラフィック・ブート表示を使用して、ブートの進捗状況を示すことを指定します。 |
|
Device-Mapper (DM) RAID検出を無効にします。 |
|
Multiple Device (MD) RAID検出を無効にします。 |
|
rootファイル・システムを読取り専用でマウントすることを指定し、rootファイル・システムを、そのLVMボリュームのデバイス・パスで指定します(vgはボリューム・グループの名前)。 |
|
ルート( |
|
SELinuxを無効にします。 |
|
コンソールのフォントを指定し、これは |
システムを起動するために最後に使用されたカーネル・ブート・パラメータは、次の例に示すように、/proc/cmdline
に記録されます。
cat /proc/cmdline
BOOT_IMAGE=/vmlinuz-3.10.0-123.el7.x86_64 root=UUID=52c1cab6-969f-4872-958d-47f8518267de ro rootflags=subvol=root vconsole.font=latarcyrheb-sun16 crashkernel=auto vconsole.keymap=uk rhgb quiet LANG=en_GB.UTF-8
詳細は、kernel-command-line(7)
マニュアル・ページを参照してください。
起動前のカーネル・ブート・パラメータの変更
カーネルを起動する前にブート・パラメータを変更するには、次のステップに従います。
-
GRUBブート・メニューが表示されたら、矢印キーを使用して必要なカーネルを強調表示してから、[Space]キーを押します。
次の図は、Unbreakable Enterprise Kernel (UEK)ブート・エントリが選択されたGRUBメニューを示しています。
図1-1 UEKブート・エントリが選択されたGRUBメニュー
-
E
を押してカーネルのブート構成を編集します。 -
矢印キーを使用して、カーソルが(
linux16
を起動する)カーネルのブート設定行の先頭にくるまで画面をスクロールします。 -
ブート・パラメータを変更するには、この行を編集します。
たとえば、
[End]
を押して行の最後に移動し、追加のブート・パラメータを入力します。次の図は、レスキュー・シェルを開始するパラメータ
systemd.target=runlevel1.target
が追加されたカーネル・ブート行を示しています。図1-2 レスキュー・シェルを選択するパラメータが追加されたカーネル・ブート行
-
[Ctrl]+[X]
を押して、システムを起動します。
GRUB 2構成でのカーネル・ブート・パラメータの変更
GRUB 2構成のブート・パラメータを変更し、再起動ごとにデフォルトで適用されるようにするには、次のステップを実行します。
-
/etc/default/grub
を編集し、次のようにGRUB_CMDLINE_LINUX
定義のパラメータを変更します。GRUB_CMDLINE_LINUX="vconsole.font=latarcyrheb-sun16 vconsole.keymap=uk crashkernel=auto rd.lvm.lv=ol/swap rd.lvm.lv=ol/root biosdevname=0 rhgb quiet systemd.unit=runlevel3.target"
前述の例では、
systemd.unit=runlevel3.target
パラメータを追加して、システムがデフォルトでマルチユーザーの非グラフィカル・モードで起動するようにします。 -
次のように
/boot/grub2/grub.cfg
ファイルを再ビルドします。sudo grub2-mkconfig -o /boot/grub2/grub.cfg
この変更は、構成したカーネルすべての後続のシステム再起動で反映されます。