CentOS 7で古いカーネルバージョンを安全に削除する方法は?

CentOS 7で古いカーネルバージョンを安全に削除する方法は?

CentOS 7では、カーネルの競合により奇妙な症状が現れることがあります。それでは、古いカーネルをどのように安全に削除しますか?どのカーネルが最新であるかをどうやって知ることができますか?

以下は、問題のサーバーでこの問題を調査中に得られた端末出力です。パッケージをクリーンアップしようとしましたが、同じ2つのコアが残りました。

このチュートリアルのガイドライン次の2つのコマンドの出力が一致するはずですが、再起動後も一致しないことがわかるとします。

[root@localhost ~]# rpm -qa kernel |sort -V |tail -n 1
kernel-3.10.0-229.el7.x86_64
[root@localhost ~]# uname -r
3.10.0-229.14.1.el7.x86_64

残りのコマンドは、2つのコアがあることを確認し、古いコアを削除する試みを説明します。

[root@localhost ~]# cd /usr/src/kernels
[root@localhost kernels]# ls -al
total 16
drwxr-xr-x.  4 root root 4096 Oct  2 12:55 .
drwxr-xr-x.  4 root root 4096 Oct  2 13:15 ..
drwxr-xr-x. 22 root root 4096 Oct  2 12:55 3.10.0-229.14.1.el7.x86_64
drwxr-xr-x. 22 root root 4096 Oct  2 12:35 3.10.0-229.el7.x86_64
[root@localhost kernels]# rpm -q kernel
kernel-3.10.0-229.el7.x86_64
kernel-3.10.0-229.14.1.el7.x86_64
[root@localhost kernels]# package-cleanup --oldkernels=1
Loaded plugins: fastestmirror
Usage: 
    package-cleanup: helps find problems in the rpmdb of system and correct them

    usage: package-cleanup --problems or --leaves or --orphans or --oldkernels
Command line error: --oldkernels option does not take a value
[root@localhost kernels]# package-cleanup --oldkernels
Loaded plugins: fastestmirror
No old kernels to remove
[root@localhost kernels]# rpm -q kernel
kernel-3.10.0-229.el7.x86_64
kernel-3.10.0-229.14.1.el7.x86_64
[root@localhost kernels]# 

また、これをオンにして/etc/yum.conf設定しましたが、これにより、後続のコマンドで1が許容値の範囲外になったというinstallonly_limit=1エラーが発生しました。 yum updateinstallonly_limit

これが3.10.0-229.14.1.el7.x86_64最新のようですが、どうすればわかりますか?また、ブートオプションは、選択できる複数のコアを提供するようです。システムがオプションリストの最初のカーネルから自動的に起動すると、混乱が発生する可能性がさらに深刻になります。

誰かがこれがどのように機能するかを説明できますか?具体的には、奇妙な症状を引き起こす可能性があるカーネルバージョンを削除するために古いカーネルを安全に削除するにはどうすればよいですか? システムがどのように再起動されても、最新のカーネルのみを実行したいと思います。

答え1

package-cleanup --oldkernels --count=1最新のカーネルを除くすべてのカーネルを削除します。

答え2

RHELとCentOS> = 8(およびDNFを持つFedora)。

RHEL 8+は新しいパッケージマネージャ(DNF / yum 4、参照)を使用します。ヤム2DNF) そのうち推奨事項は次のとおりです。

dnf remove $(dnf repoquery --installonly --latest-limit=-2)

--latest-limit=-2最後の2つのバージョン(現在のバージョンと以前のバージョン)を維持することを意味します。

--latest-limit=-1現在の項目を除くすべての項目が削除されます。

yum remove --oldinstallonlyカーネル(?)だけでなく、既存のインストール専用パッケージも削除できます。

(このコマンドにはdnfが必要です。>= 4.2.17-4 バグ #1774670)

以前のRHELとCentOS(<= 7)

このコマンドは、package-cleanupyum<4 を使用して古いカーネルを削除するために使用されます。--count=1最新の情報のみを維持するために使用されます。プログラムは現在使用されているカーネルを削除しないため(「実行中のカーネルであるため、カーネル3.10.0-327.el7を削除しないでください」)、再起動して再起動するまで/ bootに2つのカーネルが残ることがあります。コマンドを実行します。

だからコマンドは

package-cleanup --oldkernels --count=1 

マンページには3つのオプションが記載されています。

--oldkernels
          Remove old kernel and kernel-devel packages.
--count <COUNT>
          Number of duplicate/kernel packages to keep on the system (default 2)
--keepdevel
          Do not remove kernel-devel packages when removing kernels

答え3

Centos 8以降(Yumバージョン4)では、次のコマンドを使用できます。

yum remove --oldinstallonly

これにより、以前のバージョンのカーネルがすべて削除されます。最新のリリースバージョンのカーネルが必要な場合に使用します。

答え4

~によるとこれ:

rpm -q kernelインストールされているカーネルを表示するには実行してください。

yum remove kernel <shown kernel from output above>次にカーネルの削除を実行します。

コンピュータを再起動してください

編集:これは実際に@Ronの質問に適用されますが、elrepoカーネルが正しく実行されていることを確認してください。

関連情報