CentOS7でカーネル5.0をインストールまたはアップグレードする方法


Linuxという言葉をオペレーティングシステム全体を表すために使用する人もいますが、厳密に言えば、Linuxはカーネルにすぎないことに注意することが重要です。一方、ディストリビューションは、さまざまなアプリケーションツールとライブラリを備えたカーネル上に構築された完全に機能するシステムです。

通常の操作中、カーネルは2つの重要なタスクを実行する責任があります。

  1. Acting as an interface between the hardware and the software running on the system.
  2. Managing system resources as efficiently as possible.

これを行うために、カーネルは、カーネルに組み込まれているドライバー、または後でモジュールとしてインストールできるドライバーを介してハードウェアと通信します。

たとえば、マシンで実行されているアプリケーションがワイヤレスネットワークに接続する場合、カーネルはその要求をカーネルに送信し、カーネルは適切なドライバーを使用してネットワークに接続します。

新しいデバイスやテクノロジーが定期的に登場しているため、それらを最大限に活用したい場合は、カーネルを最新の状態に保つことが重要です。さらに、カーネルを更新すると、新しいカーネル機能を活用し、以前のバージョンで発見された脆弱性から身を守ることができます。

CentOS 7またはRHEL7やFedoraなどの派生物の1つでカーネルを更新する準備はできましたか?もしそうなら、読み続けてください!

ステップ1:インストールされているカーネルバージョンを確認する

ディストリビューションをインストールすると、特定のバージョンのLinuxカーネルが含まれます。システムにインストールされている現在のバージョンを表示するには、次の操作を実行できます。

# uname -sr

次の画像は、CentOS7サーバーでの上記のコマンドの出力を示しています。

https://www.kernel.org/にアクセスすると、この記事の執筆時点で最新のカーネルバージョンが5.0であることがわかります(他のバージョンは同じサイトから入手できます)。

この新しいカーネル5.0バージョンは長期リリースであり、6年間サポートされます。以前は、すべてのLinuxカーネルバージョンは2年間のみサポートされていました。

考慮すべき重要なことの1つは、カーネルバージョンのライフサイクルです。現在使用しているバージョンが寿命に近づいている場合、その日以降、バグ修正は提供されません。詳細については、カーネルリリースページを参照してください。

ステップ2:CentOS7でカーネルをアップグレードする

最新のディストリビューションのほとんどは、yumなどのパッケージ管理システムと公式にサポートされているリポジトリを使用してカーネルをアップグレードする方法を提供します。

重要:カスタムコンパイルされたカーネルの実行を検討している場合は、CentOS7でLinuxカーネルをソースからコンパイルする方法を説明している記事を読む必要があります。

ただし、これはディストリビューションのリポジトリから入手できる最新バージョンへのアップグレードのみを実行し、https://www.kernel.org/で入手可能な最新バージョンにはアップグレードしません。残念ながら、RedHatでは前者のオプションを使用したカーネルのアップグレードしか許可されていません。

Red Hatとは対照的に、CentOSでは、最新バージョンへのアップグレードをカーネルにするサードパーティのリポジトリであるELRepoを使用できます。

CentOS 7でELRepoリポジトリを有効にするには、次の手順を実行します。

# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm 

リポジトリを有効にしたら、次のコマンドを使用して、使用可能なkernel.relatedパッケージを一覧表示できます。

# yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * elrepo-kernel: mirror-hk.koddos.net
Available Packages
kernel-lt.x86_64                        4.4.176-1.el7.elrepo        elrepo-kernel
kernel-lt-devel.x86_64                  4.4.176-1.el7.elrepo        elrepo-kernel
kernel-lt-doc.noarch                    4.4.176-1.el7.elrepo        elrepo-kernel
kernel-lt-headers.x86_64                4.4.176-1.el7.elrepo        elrepo-kernel
kernel-lt-tools.x86_64                  4.4.176-1.el7.elrepo        elrepo-kernel
kernel-lt-tools-libs.x86_64             4.4.176-1.el7.elrepo        elrepo-kernel
kernel-lt-tools-libs-devel.x86_64       4.4.176-1.el7.elrepo        elrepo-kernel
kernel-ml.x86_64                        5.0.0-1.el7.elrepo          elrepo-kernel
kernel-ml-devel.x86_64                  5.0.0-1.el7.elrepo          elrepo-kernel
kernel-ml-doc.noarch                    5.0.0-1.el7.elrepo          elrepo-kernel
kernel-ml-headers.x86_64                5.0.0-1.el7.elrepo          elrepo-kernel
kernel-ml-tools.x86_64                  5.0.0-1.el7.elrepo          elrepo-kernel
kernel-ml-tools-libs.x86_64             5.0.0-1.el7.elrepo          elrepo-kernel
kernel-ml-tools-libs-devel.x86_64       5.0.0-1.el7.elrepo          elrepo-kernel
perf.x86_64                             5.0.0-1.el7.elrepo          elrepo-kernel
python-perf.x86_64                      5.0.0-1.el7.elrepo          elrepo-kernel

次に、最新のメインラインの安定したカーネルをインストールします。

# yum --enablerepo=elrepo-kernel install kernel-ml
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: centos.mirror.net.in
 * elrepo: mirror-hk.koddos.net
 * elrepo-kernel: mirror-hk.koddos.net
 * epel: repos.del.extreme-ix.org
 * extras: centos.mirror.net.in
 * updates: centos.mirror.net.in
Resolving Dependencies
--> Running transaction check
---> Package kernel-ml.x86_64 0:5.0.0-1.el7.elrepo will be installed
--> Finished Dependency Resolution

Dependencies Resolved

====================================================================================
 Package                Arch        Version                 Repository        Size
====================================================================================
Installing:
 kernel-ml              x86_64      5.0.0-1.el7.elrepo      elrepo-kernel     47 M

Transaction Summary
====================================================================================
Install  1 Package

Total download size: 47 M
Installed size: 215 M
Is this ok [y/d/N]: y
Downloading packages:
kernel-ml-5.0.0-1.el7.elrepo.x86_64.rpm                           |  47 MB  00:01:21     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : kernel-ml-5.0.0-1.el7.elrepo.x86_64                1/1 
  Verifying  : kernel-ml-5.0.0-1.el7.elrepo.x86_64                1/1 

Installed:
  kernel-ml.x86_64 0:5.0.0-1.el7.elrepo                                                                                                                                                                            

Complete!

最後に、マシンを再起動して最新のカーネルを適用し、次に示すようにメニューから最新のカーネルを選択します。

rootとしてログインし、次のコマンドを実行してカーネルのバージョンを確認します。

# uname -sr

ステップ3:GRUBでデフォルトのカーネルバージョンを設定する

新しくインストールしたバージョンをデフォルトのブートオプションにするには、GRUB構成を次のように変更する必要があります。

ファイル/ etc/default/grubを開いて編集し、 GRUB_DEFAULT u003d 0 を設定します。これは、GRUB初期画面の最初のカーネルがデフォルトとして使用されることを意味します。

GRUB_TIMEOUT=5
GRUB_DEFAULT=0
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="rd.lvm.lv=centos/root rd.lvm.lv=centos/swap crashkernel=auto rhgb quiet"
GRUB_DISABLE_RECOVERY="true"

次に、次のコマンドを実行して、カーネル構成を再作成します。

# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-5.0.0-1.el7.elrepo.x86_64
Found initrd image: /boot/initramfs-5.0.0-1.el7.elrepo.x86_64.img
Found linux image: /boot/vmlinuz-4.20.0-1.el7.elrepo.x86_64
Found initrd image: /boot/initramfs-4.20.0-1.el7.elrepo.x86_64.img
Found linux image: /boot/vmlinuz-4.19.11-1.el7.elrepo.x86_64
Found initrd image: /boot/initramfs-4.19.11-1.el7.elrepo.x86_64.img
Found linux image: /boot/vmlinuz-4.19.0-1.el7.elrepo.x86_64
Found initrd image: /boot/initramfs-4.19.0-1.el7.elrepo.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-957.1.3.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-957.1.3.el7.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-693.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-693.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-1e2b46dbc0c04b05b592c837c366bb76
Found initrd image: /boot/initramfs-0-rescue-1e2b46dbc0c04b05b592c837c366bb76.img
done

再起動して、最新のカーネルがデフォルトで使用されていることを確認します。

おめでとう! CentOS7でカーネルをアップグレードしました。

この記事では、システム上のLinuxカーネルを簡単にアップグレードする方法について説明しました。ソースからカーネルをコンパイルする必要があるため、まだ取り上げていない別の方法があります。これは、本全体に値するものであり、本番システムでは推奨されません。

これは最高の学習体験の1つであり、カーネルのきめ細かい構成が可能ですが、システムが使用できなくなり、最初から再インストールしなければならない場合があります。

学習体験としてカーネルを構築することにまだ興味がある場合は、カーネル初心者ページでそれを行う方法の説明を見つけることができます。

いつものように、この記事について質問やコメントがある場合は、以下のフォームを使用してください。