CentOS資料一覧

DKMSのビルドで「Your kernel headers for kernel 2.6.32-358.xxx cannot be found at /lib/modules/2.6.32-xxx/build or /lib/modules/2.6.32-358.xxx/source」というエラーが出る

2014/10/04更新

対応バージョン: 6.4

DKMS(Dynamic Kernel Module Support)のビルドで以下のようなエラーが出てビルドが失敗する。

Your kernel headers for kernel 2.6.32-358.el6.x86_64 cannot be found at /lib/modules/2.6.32-358.el6.x86_64/build or /lib/modules/2.6.32-358.el6.x86_64/source.

これは文字通りビルドに必要なヘッダファイルが存在しないというエラーで、インストールしているカーネルのバージョンとヘッダファイルのバージョンが一致していない場合に発生する。

例えば以下のような場合である。

% rpm -qa | grep ^kernel-
kernel-firmware-2.6.32-358.el6.noarch
kernel-devel-2.6.32-431.23.3.el6.x86_64
kernel-headers-2.6.32-431.5.1.el6.x86_64
kernel-2.6.32-358.el6.x86_64

上記の場合、カーネルのバージョンのほうが古くなっているのでカーネルをバージョンアップさせるかヘッダファイルをバージョンダウンさせる必要がある。

ただ、バージョンダウンは今後継続的にアップデートを続けていく場合はやめたほうがよい。

カーネルおよびヘッダファイルを両方ともアップデートする場合は以下のようにする。

まずカーネルをバージョンアップしたらいったんOSを再起動する。

% sudo yum update kernel-`uname -r`

% rpm -qa | grep ^kernel-
kernel-devel-2.6.32-431.23.3.el6.x86_64
kernel-firmware-2.6.32-431.29.2.el6.noarch
kernel-devel-2.6.32-431.29.2.el6.x86_64
kernel-2.6.32-358.el6.x86_64
kernel-2.6.32-431.29.2.el6.x86_64
kernel-headers-2.6.32-431.29.2.el6.x86_64

% sudo reboot

次にヘッダファイルをアップデートする。

% sudo yum update kernel-headers-`uname -r`
% sudo yum update kernel-devel-`uname -r`

% rpm -qa | grep ^kernel-
kernel-devel-2.6.32-431.29.2.el6.x86_64
kernel-devel-2.6.32-431.23.3.el6.x86_64
kernel-2.6.32-431.29.2.el6.x86_64
kernel-headers-2.6.32-431.29.2.el6.x86_64
kernel-2.6.32-358.el6.x86_64
kernel-firmware-2.6.32-431.29.2.el6.noarch

% sudo yum remove kernel-devel-2.6.32-431.23.3.el6.x86_64

% rpm -qa | grep ^kernel-
kernel-devel-2.6.32-431.29.2.el6.x86_64
kernel-2.6.32-431.29.2.el6.x86_64
kernel-headers-2.6.32-431.29.2.el6.x86_64
kernel-2.6.32-358.el6.x86_64
kernel-firmware-2.6.32-431.29.2.el6.noarch

これでDKMSのビルドは成功するはずである。