先安装好DKMS,这样你在安装virtualbox之后,如果linux内核升级,那么会自动重新编译vbox的内核。运行下列命令试试。
sudo apt-get update
sudo apt-get install dkms
vBox是源里面的,那么重新安装vbox
sudo apt-get install -reinstall virtualbox virtualbox-dkms
如果是到官方网站下载安装的,那就重新下载安装。
重要,必须阅读:分割线
=====================================================================================
sudo apt-get autoremove 软件包 --purge
就可以删除配置文件了
当然sudo apt-get purge 软件包 是直接删除配置文件的
======================================================================================
最近需要在若干虚拟机进行hadoop的调试,于是就在Ubuntu上安装虚拟机,可是碰到了虚拟机无法启动的问题:
界面上会弹出一个错误对话框,错误信息如下:
- Kernel driver not installed (rc=-1908)
- The VirtualBox Linux kernel driver (vboxdrv) is either not loaded or there is a permission problem with /dev/vboxdrv. Re-setup the kernel module by executing
- '/etc/init.d/vboxdrv setup'
- as root. Users of Ubuntu, Fedora or Mandriva should install the DKMS package first. This package keeps track of Linux kernel changes and recompiles the vboxdrv kernel module if necessary.
首先汇总一下系统环境:ubuntu desktop 13.10, virtualbox-4.3, kernel: 3.11.0-17
1. 按照这个错误指示,我就切换到命令行,
sudo /etc/init.d/vboxdrv setup
得到如下的错误信息:提示依然无法正常加载dkms,而且好像需要当前内核的源代码进行编译,同时,提示查看/var/log/vbox-inuntustall.log日志。
2. 于是,cat /var/log/vbox-install日志
- Uninstalling modules from DKMS
- removing old DKMS module vboxhost version 4.3.8
- ------------------------------
- Deleting module version: 4.3.8
- completely from the DKMS tree.
- ------------------------------
- Done.
- Attempting to install using DKMS
- Creating symlink /var/lib/dkms/vboxhost/4.3.8/source ->
- /usr/src/vboxhost-4.3.8
- DKMS: add completed.
- Failed to install using DKMS, attempting to install without
- Makefile:183: *** Error: unable to find the sources of your current Linux kernel. Specify KERN_DIR=<directory> and run Make again. Stop.
这些有点不知所错了,哪里出问题了呢?
3. 检查dkms,正常安装;反复按照virtualbox,确保不是安装不完整造成的问题。
- sudo apt-get install dkms
4. 查看内核版本 uname -r, 得到当前的kernel版本: 3.11.0-17-generic.
5. 搜索了一下网络,有人提示说,可能需要重新安装一下内核。
- sudo apt-get install linux-headers-$(uname -r)
注意: ${uname -r}用来代表当前内核的版本,不能直接在命令中使用的,这里我的版本是step 4中的输出。
6. 按照之前的问题提示,重新运行 sudo /etc/init.d/vboxdrv setup
- xxxx@xxx-Ubuntu:~$ sudo /etc/init.d/vboxdrv setup
- Stopping VirtualBox kernel modules ...done.
- Uninstalling old VirtualBox DKMS kernel modules ...done.
- Trying to register the VirtualBox kernel modules using DKMS ...done.
- Starting VirtualBox kernel modules ...done.
提示: 已经正常将virtualbox模块注册到kernel中了
7. 接下来就可以点击virtualbox的启动按钮,正常启动virtualbox中的虚拟机了。
8. 原因分析:
最后我尝试分析了一下,产生这个错误的原因:之前的virtualbox是可以正常工作的,后来升级ubuntu和内核版本之后,估计打破了 virtualbox和内核之前的注册系统,就是原有的注册在新的内核中失效了,同时,现在的内核可能在升级过程,有若干的不稳定情况。 所以,需要重新覆盖安装内核,然后,再一次将virtualbox内核注册到当前linux内核之中,以上仅为猜测,欢迎大家提出新的想法和推测。