2017年10月20日金曜日

Ubuntu で docker のアップグレードを行おうとしたら Linux カーネルのインストールでエラーになった話

概要

Ubuntu 16.04 で docker-ce のアップグレードを行ってみました
アップグレード自体は apt upgrade コマンドを叩けば終了なのですが、全然別件で Linux カーネルのインストールエラーに直面したので対応してみました

環境

  • Ubuntu 16.04
  • docker-engine 17.03 -> 17.05
  • linux-image-generic 4.4.0.96 -> 4.4.0.97

遭遇したエラー

アップグレードしようとしたときに遭遇したエラーは以下の通りです

[root@localhost /boot Wed Oct 18 10:40:08]# apt upgrade docker-engine
Reading package lists... Done
Building dependency tree
Reading state information... Done
You might want to run 'apt-get -f install' to correct these.
The following packages have unmet dependencies:
 linux-image-extra-4.4.0-97-generic : Depends: linux-image-4.4.0-97-generic but it is not installed
 linux-image-generic : Depends: linux-image-4.4.0-97-generic but it is not installed
                       Recommends: thermald but it is not installed
E: Unmet dependencies. Try using -f.

こんな感じです
実は /boot の領域が足りなくて上記のエラーが発生しています

対応する

単純に /boot の領域を空ければ OK
古いカーネルのファイルが残っているので削除してあげます

  • cd /boot

例えば config 系のファイルでは過去のバージョンがずらっと保存されているのが確認できると思います

[root@localhost /boot Wed Oct 18 10:45:39]# ls -l config-4.4.0-*
-rw-r--r-- 1 root root 189412 Apr 19  2016 config-4.4.0-21-generic
-rw-r--r-- 1 root root 190236 Mar 25  2017 config-4.4.0-71-generic
-rw-r--r-- 1 root root 190356 Jun 14 21:24 config-4.4.0-81-generic
-rw-r--r-- 1 root root 190356 Jun 27 04:45 config-4.4.0-83-generic
-rw-r--r-- 1 root root 190356 Jul 19 00:00 config-4.4.0-87-generic
-rw-r--r-- 1 root root 190356 Aug  1 07:25 config-4.4.0-89-generic
-rw-r--r-- 1 root root 190356 Aug  8 22:58 config-4.4.0-91-generic
-rw-r--r-- 1 root root 190356 Aug 10 20:02 config-4.4.0-92-generic
-rw-r--r-- 1 root root 190356 Aug 12 08:40 config-4.4.0-93-generic

この中の最新版以外 (今回の場合は 4.4.0-93 以外) の古いファイルをすべて削除してあげます
config の他に abi, initrd System.map, vmlinuz があるのでこれも削除するコマンドを実行します

  • rm *4.4.0-21-*
  • rm *4.4.0-71-*
  • rm *4.4.0-81-*
  • rm *4.4.0-83-*
  • rm *4.4.0-87-*
  • rm *4.4.0-89-*
  • rm *4.4.0-91-*
  • rm *4.4.0-92-*

これでだいぶ /boot が空くと思います
空いたら最新のカーネルをインストールしてあげましょう

  • apt -f install

で該当のエラーが出なくなると思います
無事インストールできたら docker-engine のアップグレードを実施しましょう

  • apt upgrade docker-engine
  • docker -v
Docker version 17.05.0-ce, build 89658be

こんな感じです

最後に

docker-engine を最新版にアップグレードした際に遭遇したカーネルエラーに対応してみました
/boot に空きがあれば遭遇することはないエラーだと思います

もし同じようなエラーに遭遇した場合はやってみてください

参考サイト

0 件のコメント:

コメントを投稿