linuxの本質. kernelとほかGNUアプリの集合体で各種ディストリが用意されている.
各ディストリビューターがどのバージョンのkernelを採用したかは https://distrowatch.com/?language=JP
を参照かな.
RockyLinux8は RHEL8系を踏襲するので kernel は kernel-4.18 です。
ですが、 RockyLinux 8.5は「4.18.0-348」、8.6は「4.18.0-372.9.1」と同じ「4.18.0」でもversionが上がれば、リビジョンもどんどんアップします.
加えて同じ Rockylinux 8.5 の「4.18.0-348」であっても 8.6 に上がるまでの間に途中途中でkernelのupdateがあります。
RockyLinux8.5 --> RockyLinux8.6 --> RockyLinux8.7 --> RockyLinux8.8 --> RockyLinux8.9 --> RockyLinux8.10
初回 4.18.0-384 初回 4.18.0-372.9.1 初回 4.18.0-425.3.1 初回 4.18.0-477.10.1 初回 4.18.0-513.5.1 初回 4.18.0-553
4.18.0-384.2.1 4.18.0-372.13.1 4.18.0-425.10.1 4.18.0-477.13.1 4.18.0-513.9.1 4.18.0-553.5.1
4.18.0-384.7.1 4.18.0-372.16.1 4.18.0-425.13.1 4.18.0-477.15.1 4.18.0-513.11.1 4.18.0-553.8.1
4.18.0-384.12.2 4.18.0-372.19.1 4.18.0-425.19.1 4.18.0-477.21.1 4.18.0-513.18.1 4.18.0-553.16.1
4.18.0-384.20.1 4.18.0-372.26.1 4.18.0-477.27.1 4.18.0-513.24.1 4.18.0-553.22.1
4.18.0-384.23.1 4.18.0-372.32.1 4.18.0-553.27.1
4.18.0-553.30.1
:
最新 4.18.0-553.66.1ここで注意なのがRAIDカードさんやnicカードの提供ドライバーは各バージョンの初回kernelのみ対応とかが多いです
updateしてしまったkernelにそのドライバーをインストールしても使えない、反映されないことが多々あります.
dkms対応をとったdriverならupdateされたkernelに順応してdriverをソースからその場で作ってくれます. 便利ですが、driverをコンパイルできる環境が必須となります.
このupdateですが、securityのためだったり機能的問題の解消だったり様々ですが、上げるかそのままにするかはポリシー次第.
「学内ネットにつなぐものは常に最新状態を保つこと」という箇所だったら適時のupdateは必要なのかなと思います。
そうしてupdateしてrebootを繰り返すと/boot に使わないkernelとか残ります。/bootが512MBとかなら圧迫する可能性もあります。
今現在、どのようなkernelを持っているかは下記コマンドで把握できます
[root@c2 ~]# grubby --info=ALL | grep -e index -e ^kernel -e title
index=0
kernel="/boot/vmlinuz-6.15.9-1.el9.elrepo.x86_64"
title="Rocky Linux (6.15.9-1.el9.elrepo.x86_64) 9.6 (Blue Onyx)"
index=1
kernel="/boot/vmlinuz-5.14.0-570.28.1.el9_6.x86_64"
title="Rocky Linux (5.14.0-570.28.1.el9_6.x86_64) 9.5 (Blue Onyx)"
index=2
kernel="/boot/vmlinuz-5.14.0-503.14.1.el9_5.x86_64"
title="Rocky Linux (5.14.0-503.14.1.el9_5.x86_64) 9.5 (Blue Onyx)"
index=3
kernel="/boot/vmlinuz-0-rescue-82374bb455b44a92bdf399123a19d652"
title="Rocky Linux (0-rescue-82374bb455b44a92bdf399123a19d652) 9.5 (Blue Onyx)"
[root@c2 ~]#この場合は合計4つのカーネルをもってます. いま使っているkernelは「uname -r」で判明します
[root@c2 ~]# uname -r
5.14.0-503.14.1.el9_5.x86_64
[root@c2 ~]#reboot後に適用したいkernelは「index」もしくは「kernel-path」で指定します
[root@c2 ~]# grubby --set-default=/boot/vmlinuz-5.14.0-570.28.1.el9_6.x86_64
or
[root@c2 ~]# grubby --set-default-index=1削除。リストからエントリーを削除します. その後にdnfからも削除します
[root@c2 ~]# grubby --remove-kernel=/boot/vmlinuz-6.15.9-1.el9.elrepo.x86_64 <-- kernel-mlのパッケージ
[root@c2 ~]# dnf remove kernel-ml*各種LinuxOSに搭載されている kernel を丸ごと切り替えることは可能です. ただコンパイル操作が必要で面倒かな. 参照 linuxカーネル再構築
一応、他のパッケージと同様にdnfでkernelも変更することができるリポジトリがあり、
ここhttps://elrepo.org/wiki/doku.php?id=start
で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.5 (Blue Onyx)
[root@rockylinux9 ~]# dnf list installed |grep "^kernel"
kernel.x86_64 5.14.0-503.14.1.el9_5 @anaconda
kernel-core.x86_64 5.14.0-503.14.1.el9_5 @anaconda
kernel-devel.x86_64 5.14.0-503.14.1.el9_5 @AppStream
kernel-headers.x86_64 5.14.0-503.14.1.el9_5 @AppStream
kernel-modules.x86_64 5.14.0-503.14.1.el9_5 @anaconda
kernel-modules-core.x86_64 5.14.0-503.14.1.el9_5 @anaconda
kernel-srpm-macros.noarch 1.0-13.el9 @AppStream
kernel-tools.x86_64 5.14.0-503.14.1.el9_5 @anaconda
kernel-tools-libs.x86_64 5.14.0-503.14.1.el9_5 @anaconda
[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
:
Installing:
kernel-ml x86_64 6.14.6-1.el9.elrepo elrepo-kernel 32 k
kernel-ml-core x86_64 6.14.6-1.el9.elrepo elrepo-kernel 56 M
kernel-ml-devel x86_64 6.14.6-1.el9.elrepo elrepo-kernel 18 M
kernel-ml-devel-matched x86_64 6.14.6-1.el9.elrepo elrepo-kernel 32 k
kernel-ml-modules x86_64 6.14.6-1.el9.elrepo elrepo-kernel 50 M
kernel-ml-modules-extra x86_64 6.14.6-1.el9.elrepo elrepo-kernel 1.2 M
kernel-ml-tools x86_64 6.14.6-1.el9.elrepo elrepo-kernel 289 k
replacing kernel-tools.x86_64 5.14.0-503.14.1.el9_5
kernel-ml-tools-libs x86_64 6.14.6-1.el9.elrepo elrepo-kernel 44 k
replacing kernel-tools-libs.x86_64 5.14.0-503.14.1.el9_5
kernel-ml-tools-libs-devel x86_64 6.14.6-1.el9.elrepo elrepo-kernel 33 k
:
[root@rockylinux9 ~]# grubby --info=ALL
index=0
kernel="/boot/vmlinuz-6.14.6-1.el9.elrepo.x86_64"
:
index=1
kernel="/boot/vmlinuz-5.14.0-503.14.1.el9_5.x86_64"
:
index=2
kernel="/boot/vmlinuz-0-rescue-ae44d20cabbc434083b536e0b83f239d"
:
[root@rockylinux9 ~]# grubby --default-kernel
/boot/vmlinuz-6.14.6-1.el9.elrepo.x86_64 <-- reboot後に適用されるカーネルです
[root@rockylinux9 ~]# grubby --default-index
0 <-- reboot後に適用されるカーネルのindex番号
[root@rockylinux9 ~]#「grubby --set-default-index=1」なら「5.14.0-503.14」が適用されます
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 ~]#