apt-get upgrade を実行した時に「/boot パーティションに空き容量が無いのでできません」的なメッセージを吐いて失敗してしまうことがある。え?と思いストレージの使用状況を確認するとこんな感じに・・・
$ df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/ubuntu-root 915G 27G 842G 4% / udev 984M 4.0K 984M 1% /dev tmpfs 397M 1.1M 396M 1% /run none 5.0M 0 5.0M 0% /run/lock none 992M 1.8M 990M 1% /run/shm none 100M 52K 100M 1% /run/user /dev/sda1 228M 222M 0 100% /boot <=== これ!
こうなってしまうと、autoremove も clean もできない状態に!
そんなときの対処法は以下の二通り。
まずは正攻法を試す
まず、使われていないカーネルイメージの一覧を表示してみる。
$ dpkg --list 'linux-image*' | grep -v `uname -r`
これで表示されているカーネルイメージは、現時点で使われていないものなので消してしまって構わない。以下のコマンドですべて削除しよう。
※VERSION
の部分は、”4.4.0-57-generic”のような文字列になる。
$ sudo apt-get remove linux-image-VERSION
このコマンドが失敗してしまう場合は「最後の手段」を実行する。
最後の手段
使われていないカーネルイメージをもう一度表示してみよう。
$ dpkg --list 'linux-image*' | grep -v `uname -r`
今度はrm -rf
で強制的に削除する。コマンドは次のようにする。
$ sudo rm -rf /boot/*-3.2.0-23-* $ sudo rm -rf /boot/*-3.2.0-45-* $ sudo rm -rf /boot/*-3.2.0-49-* $ sudo rm -rf /boot/*-3.2.0-51-*
次のようにしてまとめて削除することもできる。
$ sudo rm -rf /boot/*-3.2.0-[23,45,48,51]-*
次に、下記のコマンドで apt が管理しているパッケージ依存関係データベースを修復する。
$ sudo apt-get -f install
ここまで来たらautoremoveが使えるようになっているはずだ。次のようにして、カーネルイメージ以外の不要なパッケージを削除しょう。
$ sudo apt-get autoremove
これで /boot パーティションに空きができたはず。
最後に念のためシステムを再起動しておこう。