Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

5.5. 初期 RAM ファイルシステムイメージの確認

初期 RAM ファイルシステムイメージの仕事は、IDE、SCSI、RAID などのブロックデバイスモジュールをプレロードすることです。そうすることで、それらのモジュールが通常配備されている root ファイルシステムがアクセス可能になりマウントできるようになります。 Red Hat Enterprise Linux 7 システムでは、パッケージマネージャーの YumPackageKit、または RPM のいずれかを使用して新しいカーネルをインストールする場合は、常に Dracut ユーティリティーがインストールスクリプトにより呼び出され、initramfs (初期 RAM ファイルシステムイメージ) を作成します。

/etc/sysctl.conf ファイルまたは別の sysctl 設定ファイルを変更してカーネル属性を変更し、変更した設定がブートプロセスの初期段階で使用される場合には、dracut -f コマンドを使用して、初期 RAM ファイルシステムイメージの再構築が必要な場合があります。たとえば、ネットワーク関連の変更を受けて、ネットワークにアタッチされたストレージから起動する場合などです。

IBM eServer System i (「IBM eServer System i 上の初期 RAM ファイルシステムイメージとカーネルの検証」 を参照) 以外のすべてのアーキテクチャー上では、dracut コマンドを実行すると initramfs を作成できます。ただし、initramfs は手動で作成する必要はありません。このステップは、カーネルとその関連パッケージが Red Hat 配布の RPM パッケージからインストールされているか、またはアップグレードされている場合には自動的に実行されます。

現在のカーネルバージョンに該当する initramfs が存在していること、それが grub.cfg 設定ファイル内で正しく指定されているかを検証するには、以下の手順にしたがいます。

初期 RAM ファイルシステムイメージの確認

  1. root として、/boot ディレクトリーのコンテンツを一覧表示して、カーネル (vmlinuz-kernel_version) と最新のバージョン番号を持つ initramfs-kernel_version を見つけます。

    例5.1 カーネルと initramfs バージョンの一致を確認

    # ls /boot
    config-3.10.0-67.el7.x86_64
    config-3.10.0-78.el7.x86_64
    efi
    grub
    grub2
    initramfs-0-rescue-07f43f20a54c4ce8ada8b70d33fd001c.img
    initramfs-3.10.0-67.el7.x86_64.img
    initramfs-3.10.0-67.el7.x86_64kdump.img
    initramfs-3.10.0-78.el7.x86_64.img
    initramfs-3.10.0-78.el7.x86_64kdump.img
    initrd-plymouth.img
    symvers-3.10.0-67.el7.x86_64.gz
    symvers-3.10.0-78.el7.x86_64.gz
    System.map-3.10.0-67.el7.x86_64
    System.map-3.10.0-78.el7.x86_64
    vmlinuz-0-rescue-07f43f20a54c4ce8ada8b70d33fd001c
    vmlinuz-3.10.0-67.el7.x86_64
    vmlinuz-3.10.0-78.el7.x86_64

    例5.1「カーネルと initramfs バージョンの一致を確認」 は以下の点を示しています。

    • 3 つのカーネルがインストールされています (より正確には、3 つのカーネルファイルが /boot ディレクトリーにあります)。
    • 最新のカーネルは vmlinuz-3.10.0-78.el7.x86_64 です。
    • そのカーネルバージョンに一致する initramfs ファイルである initramfs-3.10.0-78.el7.x86_64kdump.img も存在します。

      重要

      /boot ディレクトリーで、複数の initramfs-kernel_versionkdump.img ファイルが見つかる場合があります。それらは、カーネルのデバッグ目的で Kdump メカニズムで作成される特殊ファイルであり、システムの起動には使用されず、無視しても問題ありません。kdump の詳細は、Red Hat Enterprise Linux 7 カーネルクラッシュダンプガイド を参照してください。

  2. 使用している initramfs-kernel_version ファイルが、/boot ディレクトリーにある最新カーネルのバージョンと一致しない場合、または他の特定の状況では、Dracut ユーティリティーを使用して initramfs ファイルを生成する必要がある場合があります。root としてオプションなしで dracut を呼び出すと、それが /boot 内にある最新のカーネル用に initramfs ファイルを生成するようになります。

    # dracut

    dracut が既存の initramfs を上書きするには (たとえば、initramfs が破損している場合など)、-f--force オプションを使用する必要があります。これを使用しないと、dracut は既存の initramfs ファイルの上書きを拒否します。

    # dracut
              Does not override existing initramfs (/boot/initramfs-3.10.0-78.el7.x86_64.img) without --force

    現在のディレクトリーに initramfs を作成するには、dracut initramfs_name kernel_version を呼び出します。

    # dracut "initramfs-$(uname -r).img" $(uname -r)

    プレロードするカーネルモジュールを指定する必要がある場合には、/etc/dracut.conf 設定ファイルの add_dracutmodules+="module more_modules " ディレクティブの括弧の中に (.ko などの任意のファイル名の接尾辞を取り除いて) 対象のモジュール名を追加します。dracut で作成した initramfs イメージファイルのファイルコンテンツを一覧表示するには、lsinitrd initramfs_file コマンドを使用します。

    # lsinitrd /boot/initramfs-3.10.0-78.el7.x86_64.img
    Image: /boot/initramfs-3.10.0-78.el7.x86_64.img: 11M
    ========================================================================
    dracut-033-68.el7
    ========================================================================
    
    drwxr-xr-x  12 root     root            0 Feb  5 06:35 .
    drwxr-xr-x   2 root     root            0 Feb  5 06:35 proc
    lrwxrwxrwx   1 root     root           24 Feb  5 06:35 init -> /usr/lib/systemd/systemd
    drwxr-xr-x  10 root     root            0 Feb  5 06:35 etc
    drwxr-xr-x   2 root     root            0 Feb  5 06:35 usr/lib/modprobe.d
    [output truncated]

    オプションと用途に関する詳しい情報は man dracutman dracut.conf を参照してください。

  3. /boot/grub2/grub.cfg 設定ファイルを検査して、起動中のカーネルバージョンについて initramfs-kernel_version.img ファイルが存在することを確認します。以下に例を示します。

    # grep initramfs /boot/grub2/grub.cfg
    initrd16 /initramfs-3.10.0-123.el7.x86_64.img
    initrd16 /initramfs-0-rescue-6d547dbfd01c46f6a4c1baa8c4743f57.img

    詳細は、「ブートローダーの確認」 を参照してください。

IBM eServer System i 上の初期 RAM ファイルシステムイメージとカーネルの検証

IBM eServer System i のマシンでは、初期 RAM ファイルシステムとカーネルファイルは 1 つのファイルに統合してあり、これは addRamDisk コマンドで作成されます。カーネルとその関連パッケージがインストールされているか、または Red Hat 配布の RPM パッケージでアップグレードされている場合は、このステップは自動的に実行されるので、手動で実行する必要はありません。このファイルが作成されていることを確認するには、root で以下のコマンドを実行して /boot/vmlinitrd-kernel_version ファイルがすでに存在することを確認します。

# ls -l /boot/

kernel_version は、先程インストールしたカーネルバージョンと一致する必要があります。

初期 RAM ファイルシステムイメージへの変更を戻す方法

たとえば、システムの設定を間違えたことで起動しなくなったような場合は、以下の手順に従って初期 RAM ファイルシステムイメージに加えた変更を戻す必要があります。

初期 RAM ファイルシステムイメージへの変更を戻す方法

  1. GRUB メニューでレスキューカーネルを選択してシステムを再起動します。
  2. initramfs の誤動作を引き起こしている間違った設定を変更します。
  3. root で以下のコマンドを実行して、正しい設定で initramfs を作成し直します。

    # dracut --kver kernel_version --force

上記の手順は、sysctl.conf ファイルで vm.nr_hugepages を間違って設定してしまった場合などに便利です。sysctl.conf ファイルは initramfs に含まれているため、新たな vm.nr_hugepages 設定は initramfs で適用されてしまい、initramfs が再構築されてしまいます。ただし、設定が間違っているので、新規の initramfs は破損しており、新規に構築されるカーネルは起動しないため、上記の手順を使用した設定の修正が必要になります。

初期 RAM ファイルシステムイメージのコンテンツの一覧表示

initramfs に含まれるファイルを一覧表示するには、root で以下のコマンドを実行します。

# lsinitrd

/etc ディレクトリーにあるファイルだけを表示するには、以下のコマンドを使用します。

# lsinitrd | grep etc/

現行カーネルの initramfs に保存されている特定ファイルのコンテンツを出力するには、-f オプションを使用します。

# lsinitrd -f filename

たとえば、sysctl.conf のコンテンツを出力するには、以下のコマンドを実行します。

# lsinitrd -f /etc/sysctl.conf

カーネルのバージョンを指定するには、--kver オプションを使用します。

# lsinitrd --kver kernel_version -f /etc/sysctl.conf

たとえば、カーネルバージョン 3.10.0-327.10.1.el7.x86_64 に関する情報を一覧表示するには、以下のコマンドを使用します。

# lsinitrd --kver 3.10.0-327.10.1.el7.x86_64 -f /etc/sysctl.conf