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-
で綺麗になっているか確認します。