最近需要在若干虛擬機器進行Hadoop的調試,於是就在Ubuntu上安裝VirtualBox虛擬機器,可是碰到了虛擬機器無法啟動的問題:
介面上會彈出一個錯誤對話方塊,錯誤資訊如下:
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
提示已經安裝到最新版本,說明應該不是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
www.bkjia.com @bkjia:~$ 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核心之中,以上僅為猜測,歡迎大家提出新的想法和推測。