[Ubuntu 16.04] /boot パーティションが一杯で apt-get upgrade/autoremove/clean ができない時の対処法

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 パーティションに空きができたはず。
最後に念のためシステムを再起動しておこう。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください