読者です 読者をやめる 読者になる 読者になる

獺のIT備忘録

サーバー・プログラミング・自作PCなど自分のやったことを忘れないように書いていきます。お役に立てたら幸いです。

/bootの空き容量がなくなった場合

サーバー管理 ubuntu

/bootの空き容量がなくなるとlinuxイメージの更新ができなくなります。そのため、ユーザーは古いイメージを削除する必要がありますが今回稀有な例に遭遇したみたいなのでその解決法を書いていきたいと思います。

環境

一般的な解決方法

一般的には最新のlinuxイメージと念のため一つ前のイメージさえ用意しておけばよいそうです。以下のコマンドで削除します。

$ uname -a
Linux TEST 3.13.0-62-generic #102-Ubuntu SMP Tue Aug 11 14:29:36 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
$ dpkg --get-selections | grep linux-image
linux-image-3.13.0-32-generic                   install
linux-image-3.13.0-57-generic                   install
linux-image-3.13.0-58-generic                   install
linux-image-3.13.0-59-generic                   install
linux-image-3.13.0-61-generic                   install
linux-image-3.13.0-62-generic                   install
linux-image-3.13.0-63-generic                   install
linux-image-extra-3.13.0-32-generic             install
linux-image-extra-3.13.0-57-generic             install
linux-image-extra-3.13.0-58-generic             install
linux-image-extra-3.13.0-59-generic             install
linux-image-extra-3.13.0-61-generic             install
linux-image-extra-3.13.0-62-generic             install
linux-image-extra-3.13.0-63-generic             install
linux-image-extra-3.13.0-65-generic             install
$ sudo apt-get --purge autoremove linux-image-{linuxのバージョン}-generic

unameで今動いているイメージを確認し、dpkgで削除するイメージを決めます。あとはapt-getで削除するだけです。

今回の場合

今回何が起きたのか以下のようになりました。(仮想化ゲストすべて…)

$ sudo apt-get autoremove
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
これらを直すためには 'apt-get -f install' を実行する必要があるかもしれません。
以下のパッケージには満たせない依存関係があります:
 linux-image-extra-3.13.0-65-generic : 依存: linux-image-3.13.0-65-generic しかし、インストールされていません
 linux-signed-image-3.13.0-65-generic : 依存: linux-image-3.13.0-65-generic (= 3.13.0-65.105) しかし、インストールされていません
E: 未解決の依存関係があります。-f オプションを試してください

apt-getすべてにロックがかかっており、依存関係を解決しようにも/bootがいっぱいなので不可能でした。解決方法は案外簡単で、aptitudeを使ってイメージを削除しました。

$ sudo aptitude remove linux-image-{linuxのバージョン}-generic
$ sudo apt-get update
$ sudo apt-get autoremove
$ sudo apt-get upgrade

aptitudeをつかうと依存関係に障害をきたしているパッケージを削除してくれるので、古いイメージを削除できたようですね。あとは通常通り不必要なイメージを削除していけば大丈夫です。

今回得た教訓はこまめにapt-get autoremoveすることとzabbixの警告に耳を傾けることですね…。