之前我在机器上安装virtualbox都是直接执行apt-get命令即可:
1 | sudo apt-get install virtualbox-ose |
但是今天执行之后启动virtualbox发现有如下错误:
1 | No suitable module for running kernel found |
搜索了一些文章,比如这里说是dkms的问题,我重新安装后错误依旧。然后我尝试从官方网站添加官方apt source并安装:
1 | deb http://download.virtualbox.org/virtualbox/debian lucid contrib non-free # Add this line to the "/etc/apt/sources.list" file. |
安装最后有以下日志输出:
1 | * Stopping VirtualBox kernel modules [ OK ] |
运行virtualbox有以下错误:
1 | WARNING: The vboxdrv kernel module is not loaded. Either there is no module |
看来遇到了和安装”virtualbox-ose”同样的错误。
针对安装过程中的”Your kernel headers for kernel 2.6.38-13-generic-pae cannot be found”的错误提示,我想到应该是因为我安装目前使用的”2.6.38-13-generic-pae”内核时,只安装了”image” package而没有安装”headers” package所致。于是安装:
1 | sudo apt-get install linux-headers-2.6.38-13-generic-pae |
成功安装之后再次安装”virtualbox-ose”(如果可以选择,我还是更愿意选择完全开源的实现):
1 | sudo apt-get install virtualbox-ose |
再次运行virtualbox,依然遇到同样的错误。卸载它,重新安装官方的最新版本”virtualbox-4.1”:
1 | sudo apt-get install virtualbox-4.1 |
安装中有以下日志输出:
1 | 正在设置 virtualbox-4.1 (4.1.8-75467~Ubuntu~lucid) ... |
再次运行”virtualbox”,这次已经没有错误了,问题解决。
我搜索了一下,kernel headers的作用是”Kernel-headers includes the C header files for the Linux kernel”,而且从搜索结果中我看到很多VMware的错误也和kernel headers相关,看来vm的运行需要依赖于这些headers文件。
至于为什么ubuntu lucid源中的”virtualbox-ose”无法正常运行,可能是因为它和我使用的linux kernel(2.6.38-13-generic-pae)版本有不匹配的地方,而最新的官方virtualbox-4.1就没有问题了。