1 GRUB 2ブートローダーの操作およびブート・サービスの構成

警告:

Oracle Linux 7は現在延長サポート中です。詳細は、Oracle Linux拡張サポートおよびOracleオープン・ソース・サポート・ポリシーを参照してください。

できるだけ早くアプリケーションとデータをOracle Linux 8またはOracle Linux 9に移行してください。

この章では、Oracle Linuxブート・プロセス、およびGRUB 2ブートローダーとその他のブート関連のカーネル・パラメータを構成および使用する方法について説明します。

ブート・プロセスについて

Oracle Linuxのブート・プロセスを理解すると、システムのブート時に問題のトラブルシューティングに役立ちます。ブート・プロセスには複数のファイルが含まれ、これらのファイルでのエラーがブートの問題の一般的な原因になります。

Oracle Linuxシステムのブート時には、次の処理が実行されます。

  1. コンピュータのBIOSがパワーオン・セルフテスト(POST)を実行し、ハード・ディスクなどの周辺機器を検出して初期化します。

  2. BIOSがマスター・ブート・レコード(MBR)をブート・デバイスからメモリーに読み取ります。(GUIDパーティション表(GPT)ディスクの場合、このMBRはディスクの最初のセクターにある保護MBRです。)MBRには、そのデバイス上のパーティションの構成に関する情報が格納されます。x86アーキテクチャを使用するコンピュータでは、MBRはブート・デバイスの最初の512バイトを占有します。最初の446バイトには、ブート・ローダー・プログラム(同じデバイス上でも別のデバイス上でも可)を指し示すブート・コードが含まれます。次の64バイトには、パーティション表が含まれます。最後の2バイトはブート署名で、エラーの検出に使用されます。

    Oracle Linuxで使用されるデフォルトのブート・ローダー・プログラムは、GRand Unified Bootloaderバージョン2 (GRUB 2)です。

  3. ブート・ローダーはvmlinuzカーネル・イメージ・ファイルをメモリーにロードし、initramfsイメージ・ファイルのコンテンツを一時的なメモリー・ベースのファイル・システム(tmpfs)に抽出します。

  4. カーネルは、ルート・ファイル・システムへのアクセスに必要なドライバ・モジュールをinitramfsファイル・システムからロードします。

  5. カーネルがプロセス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内のディレクトリのクリーンアップ。

    • スワップの開始。

    「システム状態ターゲットについて」を参照してください。

  6. /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/grubGRUB_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をデフォルトのブート・カーネルとして設定するには:

  1. たとえば次のように、構成ファイルで定義されているメニュー・エントリを表示します。

    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が含まれています。

  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マニュアル』を参照してください。

カーネル・ブート・パラメータ

設定できるカーネル・ブート・パラメータはいくつかあります。次の表に、よく使用されるパラメータの一部を示します。

オプション 説明

0123456、またはsystemd.unit=runlevelN.target

Oracle Linux 6実行レベルに最も近い、systemdと一致するシステム状態ターゲットを指定します。Nは0から6の整数値をとります。

システム状態ターゲットの説明については、「システム状態ターゲットについて」を参照してください。

1sSsingle、またはsystemd.unit=rescue.target

レスキュー・シェルを指定します。システムは単一ユーザー・モードで起動し、rootパスワードの入力を求められます。

3またはsystemd.unit=multi-user.target

マルチユーザーの非グラフィック・ログインにsystemdターゲットを指定します。

5またはsystemd.unit=graphical.target

マルチユーザーのグラフィック・ログインにsystemdターゲットを指定します。

-bemergency、またはsystemd.unit=emergency.target

緊急モードを指定します。システムは単一ユーザー・モードで起動し、rootパスワードの入力を求められます。レスキュー・モードよりも少ないサービスが起動します。

KEYBOARDTYPE=kbtype

キーボード・タイプを指定し、これはinitramfs/etc/sysconfig/keyboardに書き込まれます。

KEYTABLE=kbtype

キーボード・レイアウトを指定し、これはinitramfs/etc/sysconfig/keyboardに書き込まれます。

LANG=language_territory.codeset

システム言語とコード・セットを指定し、これはinitramfs/etc/sysconfig/i18nに書き込まれます。

max_loop=N

ブロック・デバイスとしてファイルにアクセスするために使用できるループ・デバイス(/dev/loop*)の数を指定します。Nのデフォルト値および最大値は、8と255です。

nouptrack

Ksplice Uptrack更新がカーネルに適用されないようにします。

quiet

デバッグ出力を削減します。

rd_LUKS_UUID=UUID

指定したUUIDと一致する暗号化Linux Unified Key Setup (LUKS)パーティションをアクティブ化します。

rd_LVM_VG=vg/lv_vol

LVMボリューム・グループおよびアクティブ化するボリュームを指定します。

rd_NO_LUKS

暗号化LUKSパーティションの検出を無効にします。

rhgb

Red Hatのグラフィック・ブート表示を使用して、ブートの進捗状況を示すことを指定します。

rn_NO_DM

Device-Mapper (DM) RAID検出を無効にします。

rn_NO_MD

Multiple Device (MD) RAID検出を無効にします。

ro root=/dev/mapper/vg-lv_root

rootファイル・システムを読取り専用でマウントすることを指定し、rootファイル・システムを、そのLVMボリュームのデバイス・パスで指定します(vgはボリューム・グループの名前)。

rw root=UUID=UUID

ルート(/)ファイル・システムをブート時に読取り/書込み可能でマウントすることを指定し、ルート・パーティションをそのUUIDで指定します。

selinux=0

SELinuxを無効にします。

SYSFONT=font

コンソールのフォントを指定し、これはinitramfs/etc/sysconfig/i18nに書き込まれます。

システムを起動するために最後に使用されたカーネル・ブート・パラメータは、次の例に示すように、/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)マニュアル・ページを参照してください。

起動前のカーネル・ブート・パラメータの変更

カーネルを起動する前にブート・パラメータを変更するには、次のステップに従います。

  1. GRUBブート・メニューが表示されたら、矢印キーを使用して必要なカーネルを強調表示してから、[Space]キーを押します。

    次の図は、Unbreakable Enterprise Kernel (UEK)ブート・エントリが選択されたGRUBメニューを示しています。

    図1-1 UEKブート・エントリが選択されたGRUBメニュー


    この図は、UEKブートオプションを選択したGRUBメニューを示します。
  2. Eを押してカーネルのブート構成を編集します。

  3. 矢印キーを使用して、カーソルが(linux16を起動する)カーネルのブート設定行の先頭にくるまで画面をスクロールします。

  4. ブート・パラメータを変更するには、この行を編集します。

    たとえば、[End]を押して行の最後に移動し、追加のブート・パラメータを入力します。

    次の図は、レスキュー・シェルを開始するパラメータsystemd.target=runlevel1.targetが追加されたカーネル・ブート行を示しています。

    図1-2 レスキュー・シェルを選択するパラメータが追加されたカーネル・ブート行


    この図はレスキュー・シェルを開始するパラメータsystemd.target=runlevel1.targetが追加されたカーネル・ブート行を示しています。
  5. [Ctrl]+[X]を押して、システムを起動します。

GRUB 2構成でのカーネル・ブート・パラメータの変更

GRUB 2構成のブート・パラメータを変更し、再起動ごとにデフォルトで適用されるようにするには、次のステップを実行します。

  1. /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パラメータを追加して、システムがデフォルトでマルチユーザーの非グラフィカル・モードで起動するようにします。

  2. 次のように/boot/grub2/grub.cfgファイルを再ビルドします。

    sudo grub2-mkconfig -o /boot/grub2/grub.cfg

    この変更は、構成したカーネルすべての後続のシステム再起動で反映されます。