这个amd64下的内核模块问题以前搞过,忘了。如今升级内核又要重新弄,又被我想起来了,于是决定写下来,以后忘了有地方查,顺便别的朋友也可以参考一下。
Debian amd64的源里提供了virtualbox-ose以及virtualbox-ose-guest-utils二进制包,但并没有提供virtualbox-ose-modules,也就是VirtualBox OSE内核模块。没有内核模块VirtualBox是无法运行起来的。虽然Debian并没有提供amd64版的内核模块,但是我们可以自己编译。
我们可以通过virtualbox-ose-source来编译内核模块。查看/usr/share/doc/virtualbox-ose-source/README.Debian,里面说:
The Debian virtualbox-ose-source package can be used in several ways,
- Using module-assistant(1) commands provided by the module-assistant Debian
package:
# module-assistant prepare virtualbox-ose
# module-assistant auto-install virtualbox-ose
- Using the make-kpkg(1) command provided by the kernel-package Debian
package. See the “modules_image” section of the make-kpkg(1) man page.
- Unpacking /usr/src/virtualbox-*.tar.bz2 and installing the module on your own.
上面那一串E文是在说virtualbox-ose-source有三种使用方法。我们就使用第一种来编译内核模块,因为此种方法最简单。呵呵,方法就是上面那两个命令了,再单独列一下也无妨:
# module-assistant prepare virtualbox-ose
# module-assistant auto-install virtualbox-ose
当然,首先你得先装上virtualbox-ose。这两条命令过后,会在内核源代码目录生成相应版本的内核模块deb包,名字叫virtualbox-ose-modules-内核版本号_amd64.deb。应该是内核源代码目录,因为我用的是自己编译的内核,我生成的deb包在我专门用来存放内核源代码的目录下。如果你用的是源里的内核,到底deb包在什么位置我也不知道。不过没关系的,编译好直接就会安装的,所以无须知道deb包的具体位置。
要使用VirtualBox OSE,首先加载内核模块:# modprobe vboxdrv,然后就能用了。