読者です 読者をやめる 読者になる 読者になる

VMware Toolsのインストール時にkernel headerが見つからない場合の対処法

ここ一週間程悩んでいた問題が解決したので、その対処法をまとめておく。

環境

ちなみに、Ubuntu 12.04 LTS、Ubuntu 13.04でも同様の問題が発生しました。

症状

UbuntuVMware Toolsをインストールしようとすると、以下のような文言が表示されてインストール出来ない。

Searching for a valid kernel header path...
The path "" is not a valid path to the 3.11.0-12-generic kernel headers.
Would you like to change it? [yes] 

Enter the path to the kernel header files for the 3.11.0-12-generic kernel?

原因の調査

カーネルヘッダーなるものが入ってないからだろうと思い、インストールを試みる。

$ sudo apt-get update
$ sudo apt-get install linux-headers-$(uname -r)
Reading package lists... Done
Building dependency tree
Reading state information... Done
linux-headers-3.11.0-12-generic is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 16 not upgraded.

どうやら既にインストールされている模様。

それなら話は早い。インストールされているディレクトリを探してみる。
どうやら以下のディレクトリにあるらしい。

/usr/src/linux-headers-3.11.0-12-generic

このパスをVMware Toolsのインストーラに食わせてみる。

The path "/usr/src/linux-headers-3.11.0-12-generic" is not a valid path to the 3.11.0-12-generic kernel headers.

やっぱりダメかー。
上記のディレクトリ配下のそれらしきディレクトリを指定してみるも、あえなく撃沈。

ここで自力での解決を諦め、Google先生に頼る。

割りとメジャーなエラーらしく対処方法がたくさん出てくる。

エラーの原因は、VMware Toolsがカーネルモジュールをコンパイルする際に使用するヘッダファイルが指定のディレクトリにないという感じらしい。

そして、その原因のファイルはこれ。

/usr/src/linux-headers-3.11.0-12-generic/include/generated/uapi/linux/version.h

このファイルが以下のディレクトリにないといけないらしい。

/usr/src/linux-headers-3.11.0-12-generic/include/linux

解決方法

version.hへのシンボリックリンクを置いておく。

sudo ln -s /usr/src/linux-headers-$(uname -r)/include/generated/uapi/linux/version.h /usr/src/linux-headers-$(uname -r)/include/linux/version.h