カーネル 3.10.0-229.el7.x86_64 のカーネルヘッダファイルが見つかりません。

カーネル 3.10.0-229.el7.x86_64 のカーネルヘッダファイルが見つかりません。

CentOS 7端末にコマンドを入力すると、service vboxdrv setup次のエラーが発生します。

Your kernel headers for kernel 3.10.0-229.el7.x86_64 cannot be found  

このエラーをどのように解決できますか?

と入力してログファイルを開くと、vi /var/log/vbox-install.log内容は次のようになります。

Uninstalling modules from DKMS
  removing old DKMS module vboxhost version  5.0.4

------------------------------
Deleting module version: 5.0.4
completely from the DKMS tree.
------------------------------
Done.
Attempting to install using DKMS

Creating symlink /var/lib/dkms/vboxhost/5.0.4/source ->
                 /usr/src/vboxhost-5.0.4

DKMS: add completed.
Failed to install using DKMS, attempting to install without
Makefile:185: *** Error: unable to find the sources of your current Linux kernel. Specify KERN_DIR=<directory> and run Make again.  Stop.

このエラーは、次のコマンドを使用して VirtualBox 5.0.4 のインストール中に発生しました。このチュートリアルのガイドライン。全体的に、これまで私は以下を持っています:

vi /etc/yum.repos.d/virtualbox.repo

次のテキストを追加して保存して終了します。

[virtualbox]
name=Oracle Linux / RHEL / CentOS-$releasever / $basearch - VirtualBox
baseurl=http://download.virtualbox.org/virtualbox/rpm/el/$releasever/$basearch
enabled=1
gpgcheck=1
gpgkey=http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc

次に、コマンドプロンプトで次のように入力します。

# rpm -Uvh http://ftp.jaist.ac.jp/pub/Linux/Fedora/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
# yum install gcc make patch  dkms qt libgomp 
# yum install kernel-headers kernel-devel fontforge binutils glibc-headers glibc-devel
...
Complete!  
# cd /usr/src/kernels
# ls -al
total 12
drwxr-xr-x.  3 root root 4096 Sep 25 16:14 .
drwxr-xr-x.  4 root root 4096 Sep 25 14:17 ..
drwxr-xr-x. 22 root root 4096 Sep 25 16:14 3.10.0-229.14.1.el7.x86_64
# export KERN_DIR=/usr/src/kernels/3.10.0-229.14.1.el7.x86_64
# yum install VirtualBox-5.0
...
Complete!  
# service vboxdrv setup
Stopping VirtualBox kernel modules                         [  OK  ]
Uninstalling old VirtualBox DKMS kernel modules            [  OK  ]
Removing old VirtualBox pci kernel module                  [  OK  ]
Removing old VirtualBox netadp kernel module               [  OK  ]
Removing old VirtualBox netflt kernel module               [  OK  ]
Removing old VirtualBox kernel module                      [  OK  ]
Trying to register the VirtualBox kernel modules using DKMSError! echo
Your kernel headers for kernel 3.10.0-229.el7.x86_64 cannot be found at
/lib/modules/3.10.0-229.el7.x86_64/build or /lib/modules/3.10.0-229.el7.x86_64/source.
                                                       [FAILED]
(Failed, trying without DKMS)
Recompiling VirtualBox kernel modules                      [FAILED]
(Look at /var/log/vbox-install.log to find out what went wrong)

内容は上記をご覧くださいvi /var/log/vbox-install.log

気になって探してみると/lib/modules/以下のような内容がありました。

[root@localhost kernels]# cd /lib/modules
[root@localhost modules]# ls -al
total 16
drwxr-xr-x.  4 root root 4096 Sep 25 15:58 .
dr-xr-xr-x. 30 root root 4096 Sep 25 16:23 ..
drwxr-xr-x.  7 root root 4096 Sep 25 15:59 3.10.0-229.14.1.el7.x86_64
drwxr-xr-x.  8 root root 4096 Sep 25 16:24 3.10.0-229.el7.x86_64

@EricRenoufの提案に従って、と入力すると端末がuname -a応答しました。

Linux localhost.localdomain 3.10.0-229.el7.x86_64 #1 SMP Fri Mar 6 11:36:42 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

コンピュータを再起動しませんでしたが、チュートリアルには再起動に関する言及はありません。

答え1

解決策を見つける可能性が高いこの問題では短いバージョンは次のとおりです。

sudo yum install "kernel-devel-uname-r == $(uname -r)"

現在実行中のカーネルバージョンのカーネルヘッダがインストールされます。

ある時点で同様の作業を実行し、yum update実際に新しいカーネルをインストールしましたが、まだ実行を開始していないようです。yum install問題の手順を実行すると、最新のインストール済みバージョンを確認してタイトルを取得することがあります。ただし、起動時にvboxdrv実行中のカーネルを見て、ヘッダーを見つけようとします。

実行中のカーネルとインストールされたカーネルは同期されていませんが(通常は大きな問題ではありません)、非常に重要な状況が見つかりました。

答え2

この問題は Virtualbox 6.1 と Fedora 32 で発生し続けます。現在、カーネルのバージョンがuname -rカーネルヘッダのバージョンと一致しません。

# uname -r 
5.10.17-100.fc32.x86_64+debug

# yum list installed kernel-devel kernel-headers kernel
Installed Packages
kernel.x86_64                                         5.10.17-100.fc32                                  @updates
kernel-devel.x86_64                                   5.10.17-100.fc32                                  
@updates
*kernel-headers.x86_64                                 5.10.13-100.fc32*

Virtual Boxスクリプトを変更すると、この問題を解決できます/usr/lib/virtualbox/check_module_dependencies.sh

私の場合は、私がインストールしたヘッダーの現在のバージョンを反映するようにfedoraセクションを変更しましたが、これは私が実行しているカーネルのバージョンと一致しますがuname -r。 (元の行は消しました)

case "${UNAME}" in *.fc*.i686|*.fc*.x86_64)  # Fedora
        BASE_PACKAGE="kernel-devel"
        ###VERSIONED_PACKAGE="kernel-devel-${UNAME}"
        VERSIONED_PACKAGE="kernel-devel-5.10.13-100"

将来のヘッダーバージョンと一致する新しくリリースされたカーネルバージョンがある場合は、いつでも削除でき、VirtualBoxが再び停止します。

関連情報