古いカーネルの削除方法メモ

  • 18
    Like
  • 1
    Comment
More than 1 year has passed since last update.

Ubuntuのapt-getでカーネル更新をかけると、通常は「もう使われません」と出てapt-get autoremoveの対象となるのですが、時として対象のはずの古いカーネル(及びカーネルヘッダ)が残ってしまう事があります。いろいろやり方はあると思われ、紹介もたくさんありますが、自分がやった方法をメモがてら書きます。

まず、最新のカーネルがあればそれに更新します。

デスクトップ版

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install linux-generic

サーバー版

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install linux-server

再起動後、稼働中の最新カーネルと、インストール済みカーネルのリストを確認します。

$ uname -r
3.13.0-74-generic

$ dpkg --get-selections | grep linux-
linux-firmware                                  install
linux-generic                                   install
linux-headers-3.13.0-67                         install
linux-headers-3.13.0-67-generic                 install
linux-headers-3.13.0-71                         install
linux-headers-3.13.0-71-generic                 install
linux-headers-3.13.0-74                         install
linux-headers-3.13.0-74-generic                 install
linux-headers-generic                           install
linux-headers-server                            install
linux-image-3.13.0-65-generic                   deinstall
linux-image-3.13.0-67-generic                   install
linux-image-3.13.0-71-generic                   install
linux-image-3.13.0-74-generic                   install
linux-image-extra-3.13.0-65-generic             deinstall
linux-image-extra-3.13.0-67-generic             install
linux-image-extra-3.13.0-71-generic             install
linux-image-extra-3.13.0-74-generic             install
linux-image-generic                             install
linux-image-server                              install
linux-libc-dev:amd64                            install
linux-server                                    install

この例では3.13.0-{65,67,71}が対象となります。
まず、ヘッダを消します。

$ sudo apt-get autoremove --purge linux-headers-3.13.0-{65,67,71}

まとめて消す場合はこのように正規表現シェルのブレース展開を使うとよいでしょう(この場合。もっと多い場合で連番であれば正規表現もあり?)。
ここで依存があればイメージも巻き込んで削除してくれます。この例ではリビジョン67は依存されていてヘッダと一緒に削除されましたが、リビジョン65とリビジョン71は対象となりませんでした。

この消えなかったイメージは次のコマンドで削除します。

$ sudo apt-get autoremove --purge linux-image-3.13.0-{65,71}

二度目の再起動後、dpkg --get-selections | grep linux-で綺麗になっているか確認します。