VIrtualbox,““Specify KERN_DIR = <directory>””를 설치할 수 없습니다 — Debian에 Virtual Box를 설치 하시겠습니까?


38

이 오류가 발생합니다.

Makefile : 181 : *** 오류 : 현재 Linux 커널의 소스를 찾을 수 없습니다. KERN_DIR =을 지정하고 Make를 다시 실행하십시오. 중지.

기본적으로 나는하고있다 :

$ sudo /etc/init.d/vboxdrv setup
Removing existing VirtualBox non-DKMS kernel modules       [  OK  ]
Building the VirtualBox Guest Additions kernel modules
The headers for the current running kernel were not found. If the following
module compilation fails then this could be the reason.
The missing package can be probably installed with
yum install kernel-devel-2.6.32-573.18.1.el6.x86_64

Building the main Guest Additions module                   [FAILED]
(Look at /var/log/vboxadd-install.log to find out what went wrong)

그리고 오류는 다음과 같습니다

Makefile : 181 : *** 오류 : 현재 Linux 커널의 소스를 찾을 수 없습니다. KERN_DIR =을 지정하고 Make를 다시 실행하십시오. 중지

이 오류는 무엇이고 어떻게 해결 하죠?

답변:


34

커널 헤더 패키지를 설치하십시오.

http://www.cyberciti.biz/faq/howto-install-kernel-headers-package

Make sure you have updated version

Type the following command
$ sudo apt-get update

OR as root user enter:
# apt-get update

Search for kernel version (optional)

Type the following command:
$ apt-cache search linux-headers-$(uname -r)

Install linux-header package under Debina or Ubuntu Linux

Type the following command:
$ sudo apt-get install linux-headers-$(uname -r)

OR as root user:
# apt-get install linux-headers-$(uname -r)

편집하다:

내 서버에도 설치해야하며 데비안 저장소에서 virtualbox를 사용하려고 할 때 동일한 오류가 발생했습니다. 계속해서 VirtualBox 저장소를 추가하고 거기에서 설치했습니다. 최신 버전이기 때문에 더 좋습니다.

루트로

$ nano /etc/apt/sources.list 

짜기 위해 아래 줄을 추가하십시오

deb http://download.virtualbox.org/virtualbox/debian squeeze contrib non-free

그런 다음 apt-secure에 대한 Oracle 공개 키를 추가하십시오.

$ wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc -O- | sudo apt-key add -

그런 다음 업데이트를 실행하고 최신 4.2를 설치하십시오.

apt-get update
apt-get install virtualbox-4.2

dkms 패키지를 설치하여 VirtualBox 호스트 커널 모듈이 최신 상태인지 확인하십시오.

apt-get install dkms

잘 가야합니다. VirtualBox의 Linux 웹 사이트에서 현재 지침이 있지만 링크는 https://www.virtualbox.org/wiki/Linux_Downloads입니다.


2
위의 명령을 apt-cache search linux-headers-$(uname -r)수행해도 명령 은 아무것도 반환하지 않습니다.
hhh

@ hhh 나는이 대답이 좋은 것이라고 생각하고 받아 들여야합니다. 이 ** linux-headers-$ (uname -r) **로 원하는 것을 모릅니다. 새 질문을 설명하거나여십시오. 이 스레드는 끝났다고 생각합니다.
Léo Léopold Hertz 준영

@hhh 일부 배포판에는 Linux 헤더의 저장소가 없습니다. 당신은 이것을 확인할 수 있습니다 : computingforgeeks.com/2015/08/…
warmblue

내가 다운로드 한 배포판이 repos에서 사용할 수있는 것보다 오래된 커널을 가지고 있었기 때문에 이러한 답변 중 어느 것도 나에게 도움이되지 못했습니다. 나는 달려야했다 apt-get update && apt-get -y dist-upgrade.
Plato

29

Fedora / CentOS에서이 문제를 해결하는 방법

먼저 설치된 패키지 (특히 커널)가 최신인지 확인하십시오.

$ sudo yum update     

커널 버전이 업데이트되면 uname -r의 디렉토리 이름과 일치 하도록 다시 시작해야 합니다 /usr/src/kernels/. 그때

$ sudo yum install kernel-devel gcc
$ echo export KERN_DIR=/usr/src/kernels/`uname -r` >> ~/.bashrc
$ source ~/.bashrc     # to set the variable in your current shell
$ sudo echo $KERN_DIR  # verify the value is set
$ sudo ls $KERN_DIR    # verify the directory exists 

이 컴파일 후 VirtualBox 커널 모듈은 아무런 문제없이 작동합니다.

출처 :


1
위 단계를 실행 한 후 vbox 게스트 추가를 다시 설치하기 전에 게스트 시스템을 다시 시작해야했습니다.
Reddy

이것은 설치하기에 적합한 패키지 였지만 커널 모듈을 다시 컴파일하려면 루트 권한이 필요했으며 루트에서 무언가를 실행하면 환경 변수 (KERN_DIR 포함)가 손실됩니다. 대신에 그 sudo -s뒤에 export KERN_DIR=/usr/src/kernels/XXX나왔지만 변수를 sudo 모드로 유지하는 더 좋은 방법이 있다고 확신합니다
Migwell

필자의 경우 (CentOS 6.7) [uname -r]은 [2.6.32-573.el6.x86_64]이지만 [ls / usr / src / kernels /]는 [2.6.32-573.22.1.el6.x86_64]를 인쇄합니다. 그래서 조심 실제 기존의 디렉토리 이름을 사용
국철

1
source ~/.bashrc다시 시작할 필요없이 현재 환경에서 KERN_DIR을 설정합니다.
저스틴

디렉토리가 아닌 오류가 발생했습니다. 마지막에 슬래시가 필요합니다. echo export KERN_DIR = / usr / src / kernels / uname -r/ >> ~ / .bashrc
Artjom Kurapov

2

@hhh 아키텍쳐에 적합한 것을 검색 linux-headers하고 찾아야합니다. 나의 경우에는:

# aptitude search linux-headers      
v   linux-headers                                                       -                                                                              
p   linux-headers-2.6-amd64                                             - Header files for Linux amd64 configuration (dummy package)                   
p   linux-headers-3.2.0-4-all                                           - All header files for Linux 3.2 (meta-package)                                
p   linux-headers-3.2.0-4-all-amd64                                     - All header files for Linux 3.2 (meta-package)                                
i A linux-headers-3.2.0-4-amd64                                         - Header files for Linux 3.2.0-4-amd64                                         
i A linux-headers-3.2.0-4-common                                        - Common header files for Linux 3.2.0-4                                        
p   linux-headers-3.2.0-4-common-rt                                     - Common header files for Linux 3.2.0-4-rt                                     
p   linux-headers-3.2.0-4-rt-amd64                                      - Header files for Linux 3.2.0-4-rt-amd64                                      
i   linux-headers-amd64                                                 - Header files for Linux amd64 configuration (meta-package)                    
p   linux-headers-rt-amd64                                              - Header files for Linux rt-amd64 configuration (meta-package)

따라서 제 경우에는 64 비트 아키텍처가 있으므로 설치해야 linux-headers-amd64합니다.

또 다른 것은 apt-get add존재하지 않습니다. 교체 apt-getapt-key.


2

CentOS에서 KERN_DIR 오류가 발생했습니다. 쉘 설치 스크립트를 검토 한 결과 KERN_DIR이 / usr / src / kernels로 설정되어 있음을 발견했습니다. 그런 다음 "uname -r"은 / usr / src / kernels의 소스 코드보다 낮은 버전의 커널을 실행하고 있음을 보여줍니다.

/boot/grub/menu.lst ...를보고 커널 불일치를 확인했습니다. 기묘한.

그래서 수정했습니다 ... "yum -y update kernel", 그리고 재부팅하십시오. 그런 다음 VMWare 도구가 설치되었습니다.


1

시험:

yum install kernel* dkms gcc

그때

yum install kernel-uek-devel

그런 다음 컴퓨터를 재부팅하십시오.


데비안은 사용 apt-get하지 않습니다 yum.
RobinJ

0

하는 오류 수단 vboxdrv/은 vboxadd커널 소스를 찾을 수 없습니다.

스크립트는 /lib/modules/$(uname -r)/build폴더가 가리키는 파일이 작업 /usr/src/kernels/$(uname -r)을 실행할 수있는 Makefile을 가져야 kernelrelease하므로 현재 설치된 커널 버전 ( uname -r) 과 비교할 수 있습니다 .

따라서이 명령이 실패하면

make -C /usr/src/kernels/$(uname -r)/build kernelrelease

다음을 통해 Linux 헤더를 설치해야합니다.

sudo apt-get install linux-headers-$(uname -r)

자세한 내용은이 게시물을 확인하십시오 .


0

모든 OS의 경우 필요한 모든 패키지가 설치되어 있는지 확인해야합니다. 데비안의 경우 dkms 및 linux-headers-generic 패키지가 누락되었습니다.

#apt-get install dkms build-essential linux-headers-generic linux-headers-$(uname -r)

자세한 지침은이 VirtualBox 포럼 게시물을 참조하십시오 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.