5.5. 初期 RAM ファイルシステムイメージの確認
初期 RAM ファイルシステムイメージの仕事は、IDE、SCSI、RAID などのブロックデバイスモジュールをプレロードすることです。そうすることで、それらのモジュールが通常配備されている root ファイルシステムがアクセス可能になりマウントできるようになります。 Red Hat Enterprise Linux 7 システムでは、パッケージマネージャーの Yum、PackageKit、または 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 ファイルシステムイメージの確認
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 カーネルクラッシュダンプガイド を参照してください。
-
3 つのカーネルがインストールされています (より正確には、3 つのカーネルファイルが
使用している
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 dracut
とman dracut.conf
を参照してください。/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 ファイルシステムイメージへの変更を戻す方法
- GRUB メニューでレスキューカーネルを選択してシステムを再起動します。
-
initramfs
の誤動作を引き起こしている間違った設定を変更します。 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