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 update
installonly_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-cleanup
yum<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カーネルが正しく実行されていることを確認してください。