第3章 手動のカーネルアップグレード
Red Hat Enterprise Linux カーネルは、サポートしているハードウェアとの整合性と互換性を保てるように、Red Hat Enterprise Linux カーネルチームがカスタムを構築します。Red Hat は、一連の厳格な品質保証テストに合格してから、カーネルをリリースしています。
Red Hat Enterprise Linux カーネルは、Yum または PackageKit パッケージマネージャーを使用し、簡単にアップグレードして検証できるように、RPM 形式でパッケージされます。PackageKit は自動的に Red Hat コンテンツ配信ネットワークサーバーをクエリーし、カーネルパッケージなど利用可能な更新が含まれれるパッケージを通知します。
本章は、yum ではなく、rpm コマンドを使用して手動でカーネルパッケージを更新する必要のあるユーザーに だけ 有用です。
できる限り Yum または PackageKit パッケージマネージャーを使用して新しいカーネルをインストールしてください。理由は、これらのツールは常に新しいカーネルを インストール するからです。他の方法で現行バージョンを入れ替えると (失敗した場合) システムが起動できなくなる可能性が出てきます。
Red Hat では、カスタムのカーネルは サポートされていません。ただし、ナレッジベースドキュメント https://access.redhat.com/solutions/25039 でガイダンスを確認できます。
yum でカーネルパッケージをインストールする方法は、https://access.redhat.com/documentation/ja-JP/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/ch-yum.html#sec-Updating_Packages を参照してください。
Red Hat コンテンツ配信ネットワークに関する情報は、https://access.redhat.com/documentation/ja-JP/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/chap-Subscription_and_Support-Registering_a_System_and_Managing_Subscriptions.html を参照してください。
3.1. カーネルパッケージの概要
Red Hat Enterprise Linux には以下のカーネルパッケージが含まれています。
- kernel: シングルコア、マルチコア、マルチプロセッサーシステム用のカーネルが含まれます。
- kernel-debug: カーネル診断ができるように複数のデバッグオプションが有効になっているカーネルが含まれます。デバッグオプションが有効になっているとパフォーマンスが低下します。
- kernel-devel: kernel パッケージに対して、モジュールを構築するのに十分なカーネルヘッダーと makefiles を含んでいます。
- kernel-debug-devel: カーネル診断ができるように複数のデバッグオプションが有効になっている開発バージョンのカーネルが含まれます。デバッグオプションが有効になっているとパフォーマンスが低下します。
kernel-doc: カーネルソースからのドキュメントファイルです。これらのファイルには、同梱で配布される Linux カーネルとデバイスドライバーのさまざまな部分が文書化されています。このパッケージをインストールすると、オプションへの参照が提供され、読み込み時に Linux カーネルモジュールに渡すことができます。
デフォルトでは、これらのファイルは
/usr/share/doc/kernel-doc-kernel_version/ディレクトリーに配置されています。- kernel-headers: Linux カーネルと、ユーザー空間ライブラリーおよびプログラムとの間のインターフェースを指定する C ヘッダーファイルが含まれます。このヘッダーファイルはほとんどの標準プログラムを構築するのに必要な構造と定数を定義します。
- linux-firmware: さまざまなデバイス操作に必要なファームウェアすべてを含んでいます。
- perf: Linux カーネルのパフォーマンスモニタリングを有効にする perf ツールを含んでいます。
- kernel-abi-whitelists: Red Hat Enterprise Linux カーネル ABI に関連する情報を含んでいます。これには、外部の Linux カーネルモジュールが必要とするカーネル記号の一覧と実施を支援する yum プラグインが含まれます。
- kernel-tools: Linux カーネル操作のツールとサポートドキュメントが含まれています。
3.2. アップグレードへの準備
カーネルをアップグレードする前に、予防的な前準備手順の実行をお薦めします。
まず、問題が発生した場合に備えて、機能するブートメディアがシステムにあることを確認します。ブートローダーで新しいカーネルをブートするように正しく設定されていない場合には、このメディアを使って Red Hat Enterprise Linux をブートすることができます。
USB メディアは多くの場合、ペンドライブ、サムディスク または キー などと呼ばれるフラッシュデバイスの形式、または、外部接続のハードディスクとして提供されています。このタイプのほとんどすべてが VFAT ファイルシステムとしてフォーマットされています。ただし、ext2、ext3、ext4 または VFAT としてフォーマットされているメディア上でブート可能な USB メディアを作成することができます。
ディストリビューションのイメージファイル、または最低限ブートメディア (minimal boot media) イメージを USB メディアに転送することができます。デバイスには十分な空き領域があることを確認してください。約 4 GB がディストリビューション DVD イメージ用に必要で、約 700 MB がディストリビューション CD イメージ用に、そして約 10 MB が最低限ブートメディアイメージ用に必要です。
Red Hat Enterprise Linux のインストール DVD、またはインストール CD-ROM#1 からの boot.iso ファイルのコピーと、約 16 MB の空き領域を持つ VFAT ファイルシステムでフォーマットした USB ストレージデバイスが必要になります。
USB ストレージデバイスの使用に関する詳しい情報は、https://access.redhat.com/solutions/624423「How to format a USB key」 と https://access.redhat.com/solutions/39373「How to manually mount a USB flash drive in a non-graphical environment 」 を確認してください。
以下の手順では、コピー先のファイルと同じパス名を指定しなければ、USB ストレージデバイス上にある既存のファイルは影響を受けません。USB ブートメディアを作成するには、root ユーザーとして以下のコマンドを実行します。
-
syslinux パッケージがインストールされていない場合は、これをインストールします。root として
yum install syslinuxコマンドを実行します。 USB ストレージデバイス上に SYSLINUX ブートローダーをインストールします。
# syslinux /dev/sdX1
sdX にはデバイス名を指定します。
boot.isoと USB ストレージデバイス用にマウントポイントを作成します。# mkdir /mnt/isoboot /mnt/diskboot
boot.isoをマウントします。# mount -o loop boot.iso /mnt/isoboot
USB ストレージデバイスをマウントします。
# mount /dev/sdX1 /mnt/diskboot
ISOLINUX ファイルを
boot.isoから USB ストレージデバイスにコピーします。# cp /mnt/isoboot/isolinux/* /mnt/diskboot
boot.isoからのisolinux.cfgファイルを USB デバイス用のsyslinux.cfgファイルとして使用します。# grep -v local /mnt/isoboot/isolinux/isolinux.cfg > /mnt/diskboot/syslinux.cfg
boot.isoと USB ストレージデバイスをアンマウントします。# umount /mnt/isoboot /mnt/diskboot
- このブートメディアでマシンを再起動して、ブートできることを確認してから他の操作に移ります。
別の方法として、フロッピードライブがあるシステム上でブートディスクを作成するには、mkbootdisk パッケージをインストールして、root として mkbootdisk コマンドを実行します。このパッケージをインストールした後に使用法について確認するには、man mkbootdisk の man ページを参照してください。
どのカーネルがインストールされているかを判定するには、シェルプロンプトでコマンド yum list installed "kernel-*" を実行します。出力では、システムのアーキテクチャーに応じて、以下のパッケージのすべてか、または一部が示されます。バージョン番号は異なる場合があります。
# yum list installed "kernel-*" kernel.x86_64 3.10.0-54.0.1.el7 @rhel7/7.0 kernel-devel.x86_64 3.10.0-54.0.1.el7 @rhel7 kernel-headers.x86_64 3.10.0-54.0.1.el7 @rhel7/7.0
この出力から、カーネルのアップグレード用にダウンロードすべきパッケージを判断します。シングルプロセッサーのシステムでは、必要なパッケージは kernel パッケージのみです。別のパッケージの説明は、「カーネルパッケージの概要」 を参照してください。
3.3. アップグレードされたカーネルのダウンロード
システム用に更新されたカーネルが利用可能かを判定する手段は数種類あります。
- セキュリティーエラータ: セキュリティー問題を修復するカーネルを含む、セキュリティーエラータについての詳細は、https://access.redhat.com/site/security/updates/active/ を参照してください。
- Red Hat コンテンツ配信ネットワーク: Red Hat コンテンツ配信ネットワークにサブスクライブするシステムについては、yum パッケージマネージャーが最新カーネルをダウンロードし、システム上のカーネルをアップグレードできます。Dracut ユーティリティーは、必要な場合は初期 RAM ディスクイメージを作成し、新規カーネルを起動するためにブートローダーを設定します。Red Hat コンテンツ配信ネットワークからパッケージをインストールする方法についての詳細は、https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/ch-yum.html を参照してください。システムを Red Hat コンテンツ配信ネットワークにサブスクライブする方法についての詳細は、https://access.redhat.com/documentation/ja-JP/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/chap-Subscription_and_Support-Registering_a_System_and_Managing_Subscriptions.html を参照してください。
yum が Red Hat Network からの更新されたカーネルのダウンロードとインストールに使用される場合は、「初期 RAM ディスクイメージの検証」 と 「ブートローダーの検証」 の指示にのみしたがってください。カーネルはデフォルトで起動するように 変更しないでください。Red Hat Network がデフォルトのカーネルを最新バージョンに自動的に変更します。カーネルを手動でインストールするには、「アップグレードの実行」 に進みます。
3.4. アップグレードの実行
必要なパッケージをすべて取り込んだ後は、既存カーネルをアップグレードします。
新しいカーネルに問題がある場合を考え、古いカーネルの維持を強く推奨します。
シェルプロンプトで、カーネル RPM パッケージを格納しているディレクトリーに移動します。rpm コマンドに -i 引数を使用して古いカーネルを残します。-U オプションは現在インストールしてあるカーネルを上書きして、ブートローダーの問題を起こすので、これは 使用しないでください。例を示します。
# rpm -ivh kernel-kernel_version.arch.rpm
次のステップでは、初期 RAM ディスクイメージが作成されているかどうかを検証します。詳細は、「初期 RAM ディスクイメージの検証」 を参照してください。
3.5. 初期 RAM ディスクイメージの検証
初期 RAM ディスクイメージの仕事は、IDE、SCSI、または RAID などのブロックデバイスモジュールをプレロードすることです。そうすることで、それらのモジュールが通常配備されている root ファイルシステムがアクセス可能になりマウントできるようになります。Red Hat Enteprise 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を見つけます。例3.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
例3.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
3.6. ブートローダーの検証
yum コマンドまたは rpm コマンドで、カーネルをインストールしてください。
rpm を使用してカーネルをインストールすると、カーネルパッケージはブートローダー設定ファイル内にその新しいカーネル用のエントリーを作成します。
いずれのコマンドも、/etc/sysconfig/kernel 設定ファイルに以下の設定を含める場合にのみ、新しいカーネルがデフォルトのカーネルとして起動するよう設定することに留意してください。
DEFAULTKERNEL=kernel UPDATEDEFAULT=yes
DEFAULTKERNEL オプションは、デフォルトのカーネルパッケージタイプを指定します。UPDATEDEFAULT オプションは、新規カーネルパッケージがデフォルトで新しいカーネルにするかを指定します。

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.