Muni Bus

パソコンの操作方法や設定方法を忘れないようにメモしています。ブログを一回引っ越ししているので、所々表示がかなり乱れています・・・

【ubuntu】/bootの容量不足でupgradeできないときの対処方法

/bootが独立したパーティーションに割り当てられているコンピューターで、apt-getコマンドでアップグレードしようとして

$ sudo apt-get upgrade

としたときに、/bootの容量がいっぱいでアップグレードできないときの対処方法。これは/boot内の不要なファイルを削除すればよい。特におかしなことをしなければ/bootには基本的にカーネルに関するファイルにしか置かれておらず、2~3種類のカーネルを置いても通常は100MBもならない。

以下は、とあるサーバーでの実際の手順例。まず、/boot内の容量の確認をする。

$ df /boot
Filesystem     1K-blocks   Used Available Use% Mounted on
/dev/sda1         240972 218396     10135  96% /boot

 容量を96%も使っており空き容量(Available)が10MB程度では心許なく、この状態ではapt-getでアップグレードができない可能性が高い。稀に古いカーネルが消されずに残っていることがある。この場合、使用していない古いカーネルを削除する必要がある。

まず、現在使用中のカーネルのバージョンを確認する。

$ uname -a
Linux ○○ 3.13.0-35-generic (以下表示省略)

 現在のカーネルのバージョンは3.13.0-35が使われていることがわかる。では、サーバーにインストールされているカーネルの一覧を表示してみる。

$ dpkg --get-selections | grep linux-image
linux-image-3.13.0-24-generic                   install
linux-image-3.13.0-27-generic                   deinstall
linux-image-3.13.0-29-generic                   install
linux-image-3.13.0-30-generic                   install
linux-image-3.13.0-32-generic                   install
linux-image-3.13.0-33-generic                   install
linux-image-3.13.0-34-generic                   install
linux-image-3.13.0-35-generic                   install
linux-image-extra-3.13.0-24-generic             install
linux-image-extra-3.13.0-27-generic             deinstall
linux-image-extra-3.13.0-29-generic             install
linux-image-extra-3.13.0-30-generic             install
linux-image-extra-3.13.0-32-generic             install
linux-image-extra-3.13.0-33-generic             install
linux-image-extra-3.13.0-34-generic             install
linux-image-extra-3.13.0-35-generic             install
linux-image-generic                             install

過去にカーネルが8つインストールされた履歴を確認でき、そのうちの1つしかアンインストール(deinstall)されておらず、これらのファイルが/bootに残ってしまっていることがわかる。

通常、カーネルは2つ(現在起動をしているものと、念のため1つ前のもの)あれば十分で、古いものを残す理由はない。1つ前のものを念のため残すとして、上の例では、3.13.0-24~33は消しても全く問題無い。そこで消す。以下は3.13.0-24を消す例。

$ sudo apt-get remove linux-image-3.13.0-24-generic
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下のパッケージは「削除」されます:
  linux-image-3.13.0-24-generic linux-image-extra-3.13.0-24-generic
(以下表示省略)

 このように、1つずつ消す。今の例では24~33を削除した。結果がこれ。

$ dpkg --get-selections | grep linux-image
linux-image-3.13.0-24-generic                   deinstall
linux-image-3.13.0-27-generic                   deinstall
linux-image-3.13.0-29-generic                   deinstall
linux-image-3.13.0-30-generic                   deinstall
linux-image-3.13.0-32-generic                   deinstall
linux-image-3.13.0-33-generic                   deinstall
linux-image-3.13.0-34-generic                   install
linux-image-3.13.0-35-generic                   install
linux-image-extra-3.13.0-24-generic             deinstall
linux-image-extra-3.13.0-27-generic             deinstall
linux-image-extra-3.13.0-29-generic             deinstall
linux-image-extra-3.13.0-30-generic             deinstall
linux-image-extra-3.13.0-32-generic             deinstall
linux-image-extra-3.13.0-33-generic             deinstall
linux-image-extra-3.13.0-34-generic             install
linux-image-extra-3.13.0-35-generic             install
linux-image-generic                             install

最後に、念のために不要なファイルを削除しておく。

$ sudo apt-get autoremove

最後に/bootの空き容量を確認する。なお、表示は上の例と違ってMB単位にしている。

$ df -h /boot
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       236M   68M  156M  31% /boot

/bootは通常100MB使えればよい。これでapt-getコマンドで問題なくアップグレードできるようになる。

なお、10年前ならいざ知らず、現在のLinuxで/bootのみ単独のパーティーションに割り振る必要は無いが、Linuxによっては、パーティーションの設定を自動にしてインストールすると、自動的に先頭パーティーションに数百MB程度の/boot用のパーティーションが作成されることがある。このような場合は仕方がないので、このまま運用することになる。

/bootディレクトリは15年ほど前(Debianの2.0、Redhatの7.3頃)は、先頭のパーティーションに数百MB程度確保すると運用が楽と言われていた。現在、その必要性はほとんど無いが、このディレクトリの使用容量はさほど変わっておらず、今回の例のように自動で数百MBのパーティーションに割り当てられてしまったとしても、運用上まったく問題ない。また、向こう10年はこれでも問題ないはず。

初めてでも使える! Linux超入門 Ubuntu 16.10対応版 (日経BPパソコンベストムック) 今すぐ使えるUbuntu入門ガイド Linuxをはじめよう Ubuntuではじめる!Linux入門キット14.04対応 Ubuntu Server実践入門[12.04.5 LTS対応版](Think IT Books) Ubuntu Server 実践バイブル 現場で即運用に役立つサービス設定のノウハウ UbuntuとCentOSでイチから学ぶ Linuxサーバー完全入門(日経BPパソコンベストムック (日経BPパソコンベストムック) Ubuntu活用ガイド Windows PCメンテナンスブック