Man On a Mission

システム運用屋が、日々のあれこれや情報処理技術者試験の攻略を記録していくITブログ…というのも昔の話。今や歴史メインでたまに軍事。別に詳しくないので過大な期待は禁物。

【Ubuntu】Linux備忘録 /bootの容量不足でupgradeに失敗したとき

今日はLinuxというか、Ubuntuについての記事を。
簡単なメモ書きに近いですが。

今日の記事内容

タイトルまんまです。
放置してたシステムを久々に立ち上げ、アップデートかけようとしたところ、/bootの容量不足で、apt-get upgradeに失敗しました。
なので、その対処について覚書。大したことでもないんだけど。

 /bootの容量確保

なにはともあれ、/bootの容量不足を解決します。
よほど例外的な事象でなければ、/bootの圧迫は、古いLinuxカーネルの残存が原因です。
どうでもいいシステム(?)であれば、

$ sudo apt-get autoremove

で、使用していないパッケージを自動で削除してくれます。

ただ、一応、何世代か前までのLinuxカーネルを残したい、という時も多いでしょう。
その場合、

$ dpkg --get-selections | grep linux-image

で、インストールされているカーネル一覧を表示します。
(「install」となっているのが、現在入っているカーネル

linux-image-3.13.0-53-generic                   deinstall
linux-image-3.13.0-54-generic                   install
linux-image-3.13.0-56-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-extra-3.13.0-53-generic             deinstall
linux-image-extra-3.13.0-54-generic             install
linux-image-extra-3.13.0-56-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

適当なカーネルを選んで、削除します。
大抵、直近の数世代分を残して他は削除、となるかと思います。

$ sudo apt-get remove linux-image-3.13.0-54-generic

削除したいカーネルが多い場合は、以下のようなやり方で複数削除できます。

$ sudo apt-get remove linux-image-3.13.0-5{4,6,7}-generic
※シェルのブレース展開です。

以上で容量を確保したら、再度apt-get update → apt-get upgradeを行います。

補足その1

今回のupgrade失敗では、パッケージ展開中にエラーを吐かれて、その際、依存関係が壊れてしまったようです。
そのため、dpkg -r でいくつかのカーネルを削除した後、以下で依存関係を自動修復してます。

$ sudo apt-get -f install linux-headers-3.13.0-117-generic

その後、他世代のカーソルをapt-get removeで削除。
で、最新カーネルをインストールするため、以下を実行。

$ sudo apt-get install linux-server

※デスクトップ版Ubuntuの場合は以下
$ sudo apt-get install linux-generic

補足その2

実のところ、今となっては、/bootを分ける必要性が微妙です。
とはいえ、会社の方針であったり、システム的/運用的事情で分かれてる方が都合がよかったり、VPSでそういうイメージがテンプレートになってたり、ついやっちゃったりと、様々な事情で分かれてることも多いでしょう。

まあ、世の中理屈通りにいかないというかいろいろです、などと、どうでもいい感想を吐きつつ終わります。