Không thể cài đặt VIrtualbox, `Chỉ định KERN_DIR = <thư mục> '` `- cài đặt Hộp ảo vào Debian?


38

Tôi nhận được lỗi này:

Makefile: 181: *** Lỗi: không thể tìm thấy nguồn của hạt nhân Linux hiện tại của bạn. Chỉ định Kern_DIR = và chạy lại. Dừng lại.

Về cơ bản tôi đang làm:

$ 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)

Và lỗi là:

Makefile: 181: *** Lỗi: không thể tìm thấy nguồn của hạt nhân Linux hiện tại của bạn. Chỉ định Kern_DIR = và chạy lại. Dừng lại

Lỗi này là gì và cách khắc phục?

Câu trả lời:


34

Hãy chắc chắn rằng bạn cài đặt Gói tiêu đề Kernel.

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)

CHỈNH SỬA:

Tôi chỉ cần cài đặt nó trên máy chủ của mình và gặp lỗi tương tự khi cố gắng sử dụng hộp ảo trong repos debian. Tôi đã tiếp tục và thêm repo VirtualBox và cài đặt từ đó. Điều này là tốt hơn bởi vì họ được cập nhật hơn.

Là gốc

$ nano /etc/apt/sources.list 

Thêm dòng dưới đây để ép

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

Sau đó thêm khóa công khai của Oracle để bảo mật apt

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

sau đó chạy cập nhật và cài đặt 4.2 mới nhất

apt-get update
apt-get install virtualbox-4.2

Cài đặt gói dkms để đảm bảo các mô-đun hạt nhân máy chủ VirtualBox được cập nhật

apt-get install dkms

Nên đi là tốt. Có các hướng dẫn này từ trang web của VirtualBox dành cho Linux, hiện tại có vẻ không hoạt động nhưng liên kết là https://www.virtualbox.org/wiki/Linux_Doads


2
Lệnh apt-cache search linux-headers-$(uname -r)trả về không có gì cho tôi mặc dù tôi đã thực hiện các lệnh trên.
hhh

@hhh Tôi nghĩ câu trả lời này là tốt, và nên được chấp nhận. Tôi không biết bạn muốn gì với ** tiêu đề linux này - $ (uname -r) **. Xin vui lòng, giải thích hoặc mở một câu hỏi mới. Tôi nghĩ rằng chủ đề này đã hoàn thành.
Léo Léopold Hertz

@hhh Một số bản phân phối không có kho lưu trữ của tiêu đề linux. bạn có thể kiểm tra điều này một: computingforgeeks.com/2015/08/...
warmblue

Không có câu trả lời nào trong số này trả lời cho tôi vì bản phân phối tôi đã tải xuống có kernel cũ hơn bản có sẵn trong repos. Tôi phải chạy apt-get update && apt-get -y dist-upgrade.
Plato

29

Cách khắc phục điều này cho Fedora / CentOS

Trước tiên hãy đảm bảo rằng các gói đã cài đặt của bạn (đặc biệt là kernel) được cập nhật:

$ sudo yum update     

Nếu nó cập nhật phiên bản kernel, bạn sẽ phải khởi động lại để uname -rkhớp với tên thư mục /usr/src/kernels/. Sau đó

$ 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 

Sau khi biên dịch các mô-đun hạt nhân VirtualBox này sẽ hoạt động mà không gặp vấn đề gì.

Nguồn:


1
Sau khi chạy các bước trên, phải khởi động lại hệ thống khách trước khi cài đặt lại bổ sung khách vbox.
Reddy

Đây là gói phù hợp để cài đặt, tuy nhiên việc biên dịch lại các mô-đun hạt nhân yêu cầu quyền root và chạy một cái gì đó trong root sẽ làm mất các biến môi trường của bạn (bao gồm KERN_DIR). Thay vào đó tôi đã làm sudo -stheo export KERN_DIR=/usr/src/kernels/XXXnhưng tôi chắc chắn có một cách tốt hơn để duy trì các biến vào chế độ sudo
Migwell

Trong trường hợp của tôi (CentOS 6.7) [uname -r] là [2.6.32-573.el6.x86_64], nhưng [ls / usr / src / kernels /] in [2.6.32-573.22.1.el6.x86_64] Vì vậy, hãy cẩn thận và sử dụng tên thư mục hiện có thực tế
jnr

1
source ~/.bashrcđể đặt Kern_DIR trong môi trường hiện tại mà không phải khởi động lại.
Justin

Tôi đã nhận được lỗi rằng nó không phải là một thư mục. Lưu ý rằng nó cần một dấu gạch chéo ở cuối .. echo xuất Kern_DIR = / usr / src / kernels / uname -r/ >> ~ / .bashrc
Artjom Kurapov

2

@hhh Bạn chỉ nên tìm kiếm linux-headersvà tìm cái tốt cho kiến ​​trúc của bạn. Trong trường hợp của tôi:

# 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)

Vì vậy, trong trường hợp của tôi, tôi có kiến ​​trúc 64 bit, tôi phải cài đặt linux-headers-amd64.

Một điều nữa là apt-get addkhông tồn tại. Thay thế apt-getbằng apt-key.


2

Tôi đã gặp lỗi Kern_DIR trong CentOS. Đã xem lại tập lệnh cài đặt shell và thấy rằng nó đặt Kern_DIR thành / usr / src / kernels. Sau đó, "uname -r" cho thấy tôi đang chạy phiên bản kernel thấp hơn ... so với mã nguồn dưới / usr / src / kernels.

Tôi đã xem /boot/grub/menu.lst ... và xác nhận sự không phù hợp của kernel. Kỳ dị.

Vì vậy, sửa chữa là ... "yum -y update kernel", sau đó khởi động lại. Các công cụ VMWare sau đó đã được cài đặt.


1

Thử:

yum install kernel* dkms gcc

Sau đó

yum install kernel-uek-devel

Sau đó khởi động lại máy của bạn


Debian sử dụng apt-get, không phải yum.
RobinJ

0

Lỗi có nghĩa là vboxdrv/ vboxaddkhông thể tìm thấy nguồn kernel của bạn.

Kịch bản lệnh hy vọng rằng /lib/modules/$(uname -r)/buildthư mục sẽ trỏ tới /usr/src/kernels/$(uname -r)Makefile nơi nó có thể thực thi kernelreleasetác vụ, để nó có thể so sánh với phiên bản kernel đã cài đặt hiện tại của bạn ( uname -r).

Vì vậy, nếu lệnh này thất bại:

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

bạn nên cài đặt các tiêu đề Linux bằng cách:

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

Để biết thêm chi tiết, xin vui lòng kiểm tra bài này .


0

Đối với bất kỳ hệ điều hành nào, bạn cần đảm bảo tất cả các gói cần thiết đã được cài đặt. Trong trường hợp của tôi trên Debian, tôi đã thiếu các gói dkms và linux-headers-generic.

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

Để được hướng dẫn đầy đủ xem bài đăng diễn đàn VirtualBox này .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.