Meltdownの脆弱性に対するパッチをリリースして以来、Ubuntuサーバーのカーネルをアップグレードしています。ほとんどすべてのサーバーで、再起動後にapt autoremove
を実行する必要があることに気づきました。 システム上に残っているすべての古いカーネルをクリーンアップするために2回。
初めて実行すると、最初に2つの古いバージョンのカーネルが削除されます。
% sudo apt autoremove
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be REMOVED:
linux-headers-4.4.0-103 linux-headers-4.4.0-103-generic linux-headers-4.4.0-104 linux-headers-4.4.0-104-generic linux-image-4.4.0-103-generic linux-image-4.4.0-104-generic
linux-image-extra-4.4.0-103-generic linux-image-extra-4.4.0-104-generic
0 upgraded, 0 newly installed, 8 to remove and 2 not upgraded.
After this operation, 596 MB disk space will be freed.
しかし、それが完了し、apt autoremove
を実行した後 繰り返しになりますが、まだ古いバージョンが削除されます:
% sudo apt autoremove
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be REMOVED:
linux-headers-4.4.0-96 linux-headers-4.4.0-96-generic linux-image-4.4.0-96-generic linux-image-extra-4.4.0-96-generic
0 upgraded, 0 newly installed, 4 to remove and 2 not upgraded.
After this operation, 298 MB disk space will be freed.
疑問に思っていますが、なぜ1回の実行でこれを実行できないのですか?
承認された回答:
カーネルのメンテナスクリプト、具体的には/etc/kernel/postinst.d/apt-auto-removal
、保持するカーネルのリストを作成し、APT構成として/etc/apt/apt.conf.d/01autoremove-kernels
に保存します 。このプロセスにより、現在実行中のカーネル、構成中のカーネル、および最後にインストールされた2つのカーネルが保持されます。
おそらく、最初のクリーンアップの前にスクリプトが最後に実行されたとき、-96
それらのカテゴリの1つに分類されたため、保護されてしまいました。あなたの最初のクリーンアップの後、それはもはや行われず、除去の候補になりました。 理由を理解したい場合 、01autoremove-kernels
ファイルにはデバッグ情報が含まれています。最初のクリーンアップの前と後でそれを見ると、さまざまなカーネルバージョンが保護されている理由が明らかになるはずです。
カーネルの自動削除は意図的に保守的であり、注意が必要です。 unattended-upgrades
を使用して、これを自動的に(最終的に)処理できます;詳細については、Ubuntuwikiを参照してください。