linuxの本質. kernelとほかGNUアプリの集合体で各種ディストリが用意されている.
各ディストリビューターがどのバージョンのkernelを採用したかは https://distrowatch.com/?language=JP を参照かな.
ここではRHEL系のRockyLinux9/8, CentOS7をメインにubutunも扱ってます.
各種LinuxOSに搭載されている kernel を丸ごと切り替えることは可能です. ただコンパイル操作が必要で面倒かな. 参照 linuxカーネル再構築
一応、他のパッケージと同様にdnfでkernelも変更することができるリポジトリがあり、
ここELRepoでRHEL系のOS向けカーネルが提供されている
カーネルを変更することで、恩恵として動作が早くなることが多いです. 計算が早くなるとは断言できませんけど
だが、そのディストリビューターのサポートから外れます.
もともと保証なんてないって思いますが、質問が出来なくなる事にご留意ください.
使うのは ELRepo の kernel-ml(mainline stable)版
ELRepoのリポジトリを組み込めば更新できる
[root@rockylinux9 ~]# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
[root@rockylinux9 ~]# dnf install https://www.elrepo.org/elrepo-release-9.el9.elrepo.noarch.rpm -y
提供されているパッケージkernel/repository
現在導入されているkernelの確認
[root@rockylinux9 ~]# cat /etc/redhat-release
Rocky Linux release 9.2 (Blue Onyx)
[root@rockylinux9 ~]# dnf list installed |grep "^kernel"
kernel.x86_64 5.14.0-284.25.1.el9_2 @baseos
kernel-core.x86_64 5.14.0-284.25.1.el9_2 @baseos
kernel-devel.x86_64 5.14.0-284.25.1.el9_2 @appstream
kernel-devel-matched.x86_64 5.14.0-284.25.1.el9_2 @appstream
kernel-headers.x86_64 5.14.0-284.25.1.el9_2 @appstream
kernel-modules.x86_64 5.14.0-284.25.1.el9_2 @baseos
kernel-modules-core.x86_64 5.14.0-284.25.1.el9_2 @baseos
kernel-srpm-macros.noarch 1.0-12.el9 @AppStream
kernel-tools.x86_64 5.14.0-284.25.1.el9_2 @baseos
kernel-tools-libs.x86_64 5.14.0-284.25.1.el9_2 @baseos
[root@rockylinux9 ~]#
この状態でELRepo のカーネルを入れてみる
elrepo-kernelリポジトリで提供されているカーネルパッケージは「kernel-lt」と「kernel-ml」の2つある.
「kernel-lt」は長期サポート版 長期サポート版って言っても kernel.org では複数の長期サポート版があって、そのなかの1つだけが選ばれている
「kernel-ml」はmain linestable版. main linestable版って実は他にあるstable版よりも最新版で出来立てのカーネル. 「長期サポート」ほどこなれてない枯れてないカーネル. だから不安定って訳ではない. バグもあるだろうが、それは他のカーネルとして同じ.
[root@rockylinux9 ~]# dnf --enablerepo=elrepo-kernel install kernel-ml kernel-ml-core kernel-ml-devel kernel-ml-devel-matched kernel-ml-modules kernel-ml-modules-extra kernel-ml-tools kernel-ml-tools-libs kernel-ml-tools-libs-devel -y
[root@rockylinux9 ~]# reboot
kernel-ml-headersは不要みたい
あとsecure bootは無効にしてください
再起動後,
[root@rockylinux9 ~]# uname -r
6.4.12-1.el9.elrepo.x86_64
[root@rockylinux9 ~]#
(ちなみに)
[root@rockylinux9 ~]# find /lib/modules -name btrfs.ko.xz
/lib/modules/6.4.12-1.el9.elrepo.x86_64/kernel/fs/btrfs/btrfs.ko.xz
[root@rockylinux9 ~]# find /lib/modules -name orangefs.ko.xz
/lib/modules/6.4.12-1.el9.elrepo.x86_64/kernel/fs/orangefs/orangefs.ko.xz
[root@rockylinux9 ~]#
っとカーネルが変わりました. それと btrfs と orangefs カーネルモジュールが存在します
参照 https://www.centlinux.com/2022/10/safely-remove-old-kernels-in-rocky-linux-9.html
dnf -y remove --oldinstallonly --setopt installonly_limit=2 kernel
これは今使っているカーネルとrescure向けの2つのみを残す感じかな
[root@rockylinux ~]# cat /etc/redhat-release
Rocky Linux release 8.8 (Green Obsidian)
[root@rockylinux ~]# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
[root@rockylinux ~]# dnf install https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm
今時点でインストールされているkernel関係は
[root@rockylinux ~]# dnf list installed |grep "^kernel"
kernel.x86_64 4.18.0-477.10.1.el8_8 @anaconda
kernel-core.x86_64 4.18.0-477.10.1.el8_8 @anaconda
kernel-devel.x86_64 4.18.0-477.10.1.el8_8 @anaconda
kernel-headers.x86_64 4.18.0-477.10.1.el8_8 @anaconda
kernel-modules.x86_64 4.18.0-477.10.1.el8_8 @anaconda
kernel-tools.x86_64 4.18.0-477.10.1.el8_8 @anaconda
kernel-tools-libs.x86_64 4.18.0-477.10.1.el8_8 @anaconda
[root@rockylinux ~]#
なので、
[root@rockylinux ~]# dnf install --enablerepo=elrepo-kernel \
kernel-ml \
kernel-ml-core \
kernel-ml-devel \
kernel-ml-modules \
kernel-ml-modules-extra
(dkmsものがあればここで作り直される. nvidia.koとか)
[root@rockylinux ~]#
[root@rockylinux ~]# dnf swap --enablerepo=elrepo-kernel kernel-tools kernel-ml-tools
:
Installing:
kernel-ml-tools x86_64 6.8.2-1.el8.elrepo elrepo-kernel 358 k
Installing dependencies:
kernel-ml-tools-libs x86_64 6.8.2-1.el8.elrepo elrepo-kernel 138 k
Removing:
kernel-tools x86_64 4.18.0-477.10.1.el8_8 @anaconda 703 k
Removing unused dependencies:
kernel-tools-libs x86_64 4.18.0-477.10.1.el8_8 @anaconda 23 k
:
[root@rockylinux ~]#
[root@rockylinux ~]# dnf install --enablerepo=elrepo-kernel kernel-ml-tools-libs-devel
[root@rockylinux ~]# reboot
[root@rockylinux ~]# uname -r
6.8.2-1.el8.elrepo.x86_64
[root@rockylinux ~]#