/bootの空き容量がなくなった場合
/bootの空き容量がなくなるとlinuxイメージの更新ができなくなります。そのため、ユーザーは古いイメージを削除する必要がありますが今回稀有な例に遭遇したみたいなのでその解決法を書いていきたいと思います。
環境
- Ubuntu 14.04.3 LTS
- Windows Server 2012 R2 Hyper-V上の仮想マシン
一般的な解決方法
一般的には最新の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の警告に耳を傾けることですね…。