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)

編集:

私はたまたま自分のサーバーにもインストールする必要があり、debianリポジトリで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

行ってもいいはずです。Linux用のVirtualBoxのウェブサイトからこれらの手順を入手しました。現時点ではダウンしているようですが、リンクはhttps://www.virtualbox.org/wiki/Linux_Downloadsです


2
apt-cache search linux-headers-$(uname -r)上記のコマンドを実行しても、コマンドは何も返しません。
hhh

@hhhこの答えは良いもので、受け入れられるべきだと思います。この** linux-headers-$(uname -r)**で何が欲しいのかわかりません。新しい質問を説明するか、開いてください。このスレッドは終了したと思います。
レオレオポルドヘルツ

@hhh一部のディストリビューションには、linux-headerのリポジトリがありません。これを確認できます:computingforgeeks.com/2015/08/…–
warmblue

私がダウンロードしたディストリビューションには、リポジトリで入手可能なものよりも古いカーネルが含まれていたため、これらの答えはどれも役に立ちませんでした。私は走らなければならなかったapt-get update && apt-get -y dist-upgrade
プラトン

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]を出力しますしたがって、注意して、実際の既存のディレクトリ名を使用して
ください-jnr

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-getによってapt-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

その後、マシンを再起動します


Debianはapt-getではなくを使用しyumます。
ロビンJ 14年

0

エラーは、vboxdrv/ vboxaddがカーネルソースを見つけられないことを意味します。

スクリプトは、タスクを実行できるMakefileが存在する/lib/modules/$(uname -r)/buildフォルダーを指すフォルダーを想定しているため、現在インストールされているカーネルバージョン()と比較できます。/usr/src/kernels/$(uname -r)kernelreleaseuname -r

したがって、このコマンドが失敗した場合:

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

次の方法でLinuxヘッダーをインストールする必要があります。

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

詳細については、この投稿をご覧ください。


0

どのOSでも、必要なすべてのパッケージがインストールされていることを確認する必要があります。私のDebianの場合、パッケージ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.