Debianで古いkernelが溜まってしまった場合の対処

Debianでサーバーを運用していて生真面目にアップデートを当てていると、だいたいいつの間にか古いkernelが溜まってしまうことになる。Debian的お作法でいくとだいたい/bootパーティションは別に分けるので、あまりにもたくさんのkernelが溜まるにまかせるといつの間にか/bootパーティションが古いkernelでパンクして新しい更新されたkernelのインストールに失敗するなんてことになる。とはいえ、新しいkernelに問題があった場合に備えて古いkernelを少しは残しておきたいし、いちいち新しいkernelが降ってくるたびにインストールされたlinux-imageパッケージの一覧を取得してどのkernelを残すか考え、手動でpurgeする作業をしていたが、さすがに面倒になってきた今日この頃。そこで、とうとうbyobuスクリプトをインストールすることにした。byobuは本来はターミナルマルチプレクサをtmux上に実現するスクリプトだが、同梱されているスクリプトの中になぜかkernelを整理するスクリプトが存在する。tmuxを普段使わない身としてはそのスクリプトだけ別にパッケージ化してもらいたいものだが、そうもいかないのであきらめてbyobuと依存するtmux等も一緒にインストールする。インストールはDebianでも一発だ。

sudo apt install byobu

これで依存するtmuxやらなんやらと一緒にインストールされる。

さて、実際に古いカーネルをpurgeする場合は新しい順にいくつのkernelを残した状態にするかを指定してpurge-old-kernelsを実行する。例えば、今bootしている最新のkernelに加えて、一個前の古いkernelを安全のために残したい場合は、2個のkernelを残すということで以下のように実行する。

sudo purge-old-kernels –keep 2

あとはpurgeすべきkernelがあった場合は削除処理をしてくれるので、対話的に実行すればよい。このスクリプトは–keepオプション以外のオプションを単純にaptに渡すだけのwrapperなので、対話的にしたくなければaptですべての質問にyesと答える-qyオプションをつければいいだろう。

あとは、/bootが足りなくなってるなと思ったときにこれを実行するだけだが、毎日のサーバーのリポートメールでついついパーティションごとの空き容量をチェックするのを忘れちゃうんだよね。

「Debianで古いkernelが溜まってしまった場合の対処」への1件のフィードバック

  1. ずっと昔からそういう仕様だったのに、最近まで全く気が付いていなかったのだが、どうやら新しいkernelがapt upgradeでインストールされた場合、apt autoremoveを実行するとpurge-old-kernels –keep 2と同様にインストールされたkernelとそれまで使っていたkernelの二つを残してそれ以外の古いカーネルのパッケージを全部自動で削除してくれるようだ。

    細かい管理はできないが、/bootが溢れないためのルーチンなメンテナンスと万が一起動できない時のためのセーフティとしてはこちらで十分なようだ。しかし、パッケージのインストール方法によってはこのautoremoveの対象としての自動マークがされないこともあるみたいなので、念のためbyobuは残しておこう。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください