定期的なカーネルアップデートの重要性とその手順

目次
こんにちは!
クラウドビルダーズのRyojiです。
Red Hat Enterprise LinuxのEC2を利用する上で、
カーネルの定期的なアップデートは非常に重要です。
そこで今回の記事では、カーネルアップデートの重要性や注意点、
そして手順について書いていきたいと思います。
カーネルとは
まず初めにカーネルとは何なのかというところから説明していきたいと思います。
カーネルは、OSの中核を担うソフトウェアであり、
ハードウェアとアプリケーションの橋渡しをする役割を持っています。
メモリ管理、プロセススケジューリング、デバイス制御など、
システム全体の動作を司る非常に重要なコンポーネントです。
なぜカーネルのアップデートが必要なのか
次に、なぜそのカーネルを定期的にアップデートしたほうがよいのかを説明していきます。
①セキュリティの向上
カーネルには定期的に脆弱性が発見されます。
そのような脆弱性が悪用されてしまうと、
サーバーが乗っ取られたり、攻撃されてシステムがダウンしてしまう等リスクがあります。
そうならない為にも、定期的にアップデートし、最新のセキュリティパッチを適用することが重要となります。
②システムの安定性向上
また、カーネルには脆弱性だけでなく、バグが存在することもあり、
特定の条件下においてシステムクラッシュやメモリリークなどを引き起こすことがあります。
最近ではパッケージのアップデートをした際に、XFSファイルシステムが破損する可能性があるといった非常に危険なバグもあったりしました・・・
そのような問題を避けるために、バグが修正された新しいバージョンのカーネルへ
定期的にアップデートすることが重要となります。
③新機能の追加
新しいカーネルでは、新しいセキュリティ機能やシステム管理機能が追加されることもあります。定期的にアップデートをしないとそうした機能が使えず、環境に対応できなくなったり、システムに悪影響を起こす可能性も出てきてしまいます。
カーネルのバージョンに関しては下記公式のドキュメントを読んでみてください。
アップデート手順
それでは、手順について書いていきたいと思います。
前提条件
今回は下記条件でアップデートを実施しました。
- EC2
- Red Hat Enterprise Linux release 9.5 (Plow)
- t2.micro
アップデート
まず、下記コマンドで現在のカーネルのバージョンを確認します。
uname -r
下記のように現在のバージョンが表示されます。
[root@test-kernel ~]# uname -r
5.14.0-503.15.1.el9_5.x86_64
次にアップデート後のバージョンの確認をします。
ここで表示されたバージョンがドキュメントに記載されているアップデートしたいバージョンであるかを確認することが重要になります。
[root@test-kernel ~]# dnf check-update kernel
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered with an entitlement server. You can use "rhc" or "subscription-manager" to register.
Red Hat Enterprise Linux 9 for x86_64 - AppStream from RHUI (RPMs) 66 MB/s | 51 MB 00:00
Red Hat Enterprise Linux 9 for x86_64 - BaseOS from RHUI (RPMs) 70 MB/s | 47 MB 00:00
Red Hat Enterprise Linux 9 Client Configuration 41 kB/s | 3.3 kB 00:00
Last metadata expiration check: 0:00:01 ago on Sat 08 Mar 2025 05:14:32 AM UTC.
kernel.x86_64 5.14.0-503.29.1.el9_5 rhel-9-baseos-rhui-rpms
最下行の 5.14.0-503.29.1.el9_5 と記載されているものがアップデート後のバージョンになります。
このバージョンで問題がなければ、次のコマンドでアップデートしていきます。
dnf update kernel kernel-*
※kernel-coreやkernel-modulesなどいくつかのパッケージも併せてアップデートする想定なので、*を付けています
コマンドを実行し、Complete!と表示されれば、正常にアップデートが完了できています。
アップデートが完了したら、次のコマンドで新しいカーネルがインストールされたかを確認します。
rpm -q kernel
次のようにいくつかのバージョン(アップデート前のバージョンも)が表示されると思いますが、
アップデート後に不具合が発生した場合、以前のカーネルに戻せるようにしておくことも重要になりますので問題ではないです。
[root@test-kernel ~]# rpm -q kernel
kernel-5.14.0-503.15.1.el9_5.x86_64
kernel-5.14.0-503.29.1.el9_5.x86_64
サーバの再起動
アップデートが完了したら、サーバを再起動して新しいカーネルを適用します。
再起動後、サーバに接続し、下記コマンドでバージョンが変わっていればアップデート完了となります。
uname -r
[root@test-kernel ~]# uname -r
5.14.0-503.29.1.el9_5.x86_64
注意点
- アップデートすることでシステムに影響が出てしまう場合もあるので、念の為アップデート前にAMIを取得しておくなど、切り戻せるようにしておくことをお勧めします。
- 上記でも記載しましたが、カーネルアップデート後に不具合が発生した場合、以前のカーネルに戻せるようにしておくことも重要です。GRUBメニューから以前のバージョンのカーネルを選択できますので、不用意に古いカーネルを消さないようにしておくことも重要になります。
まとめ
カーネルアップデートは、セキュリティ強化、システム安定性向上、パフォーマンス改善、新機能追加など、多くのメリットがあります。
定期的にアップデートすることでリスクを抑え安全なシステムを維持することができるようになると思うので、
今回の記事が少しでも参考になればありがたいです。