CentOS7でKernelのバージョンアップ

事前準備

お勉強がてらに最新版のカーネルを利用しようとしたところ、そもそも最新版のカーネルのOSがなかったのでバージョンアップをすることにしました。折角なので覚書として残しておきます。 OS:CentOS7 7.4.1708

現在のバージョン情報を確認します。

uname -a

Linux study01 3.10.0-693.17.1.el7.x86_64 #1 SMP Thu Jan 25 20:13:58 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

cat /etc/redhat-release

CentOS Linux release 7.4.1708 (Core)

rpm -qa | grep "^kernel" | sort

kernel-3.10.0-693.17.1.el7.x86_64
kernel-3.10.0-693.el7.x86_64
kernel-tools-3.10.0-693.17.1.el7.x86_64
kernel-tools-libs-3.10.0-693.17.1.el7.x86_64

アップデート

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

Retrieving http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
Preparing...                          ################################# [100%]
Updating / installing...
   1:elrepo-release-7.0-3.el7.elrepo  ################################# [100%]

最新のURL

最新版のURLはhttp://www.elrepo.org/から確認できます。

登録したレポジトリからカーネルをインストールします。

yum install --enablerepo=elrepo-kernel kernel-ml

インストールするバージョンは以下のバージョンが表示されます。

Package Arch Version
kernel-ml x86_64 4.15.2-1.el7.elrepo

現時点ではバージョンが変わっていないので、再起動します。

uname -a

Linux study01 3.10.0-693.17.1.el7.x86_64 #1 SMP Thu Jan 25 20:13:58 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

再起動後 Kernel 4.15がインストールされていることを確認します。この画面でカーネルを選択することで最新バージョンで起動することができます。

:::warn 注意点 最新版で起動できても再度再起動を実行すると元のカーネルで起動してしまうので、grubを編集する必要があります。 :::

grubのデフォルト起動カーネルの確認

grub2-editenv list

saved_entry=CentOS Linux (3.10.0-693.17.1.el7.x86_64) 7 (Core)

grubによるデフォルト起動カーネルの変更

現在は1番での起動設定になっています。

awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg

0 : CentOS Linux (4.15.2-1.el7.elrepo.x86_64) 7 (Core)
1 : CentOS Linux (3.10.0-693.17.1.el7.x86_64) 7 (Core)
2 : CentOS Linux (3.10.0-693.el7.x86_64) 7 (Core)
3 : CentOS Linux (0-rescue-c03640e46bfe44989f5aa1a4dcd56b35) 7 (Core)

0番目のカーネルで起動するように変更します。

grub2-set-default 0

rebootすることで自動的にCentOS Linux (4.15.2-1.el7.elrepo.x86_64)で起動することが確認できました。

旧カーネルの削除

不要になった3.10版を削除します。

yum remove kernel

kernel-3.10.0-693.17.1.el7.x86_64 #削除対象
kernel-3.10.0-693.el7.x86_64 #削除対象

kernel-toolsとkernel-tools-libsのバージョンアップをします。

rpm -qa | grep "^kernel" | sort

kernel-ml-4.15.2-1.el7.elrepo.x86_64
kernel-tools-3.10.0-693.17.1.el7.x86_64
kernel-tools-libs-3.10.0-693.17.1.el7.x86_64

yum installでkernel-tools,kernel-tools-libsを導入するとコンフリクトが出るので、swapを使います。 この時点で旧カーネルのバージョンは削除されます。

yum swap --enablerepo=elrepo-kernel kernel-tools-libs kernel-tools -- kernel-ml-tools-libs kernel-ml-tools

最終的に最新版のみなったことを確認します。

rpm -qa kernel\* | sort

kernel-ml-4.15.2-1.el7.elrepo.x86_64
kernel-ml-tools-4.15.2-1.el7.elrepo.x86_64
kernel-ml-tools-libs-4.15.2-1.el7.elrepo.x86_64

TIP

旧カーネルを削除するのであれば、grubの編集をする必要はありませんが、残す場合も考えて覚書として残しておきます