今日は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でそういうイメージがテンプレートになってたり、ついやっちゃったりと、様々な事情で分かれてることも多いでしょう。
まあ、世の中理屈通りにいかないというかいろいろです、などと、どうでもいい感想を吐きつつ終わります。