Linux
Ubuntu

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

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