커널 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가 다시 중지됩니다.

관련 정보