ウェブサイト検索

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


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

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

  1. ハードウェアとシステム上で実行されているソフトウェアの間のインターフェイスとして機能します。
  2. システム リソースを可能な限り効率的に管理します。

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

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

推奨読書: Ubuntu でカーネルをアップグレードする方法

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

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

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

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

uname -sr

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

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

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

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

ステップ 2: CentOS 7 でのカーネルのアップグレード

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

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

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

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.関連 パッケージを一覧表示できます。


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=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

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

おめでとう! CentOS 7 でカーネルがアップグレードされました。

まとめ

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

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

学習体験としてカーネルの構築にまだ興味がある場合は、「カーネル初心者」ページでその方法に関する説明が見つかります。

いつものように、この記事に関してご質問やコメントがございましたら、お気軽に以下のフォームをご利用ください。