在CentOS5下,首先下載下傳virtualBox3.0.6,這是穩定版:
http://www.virtualbox.org/wiki/Downloads下,選擇For Linux Host,
下載下傳的檔案名為:VirtualBox-3.0.6_52128_rhel5-1.i386.rpm
然後安裝->無論如何都安裝。就可以了。
當然,你也可以選擇yum install virtualbox來安裝,更省事。
但是,安裝後在應用程式->系統工具->Sun 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.
執行/etc/init.d/vboxdrv setup後,出現了以下的錯誤:
Stopping VirtualBox kernel module [确定]
Recompiling VirtualBox kernel module [失敗]
(Look at /var/log/vbox-install.log to find out what went wrong)
然後,那咱就檢視vox-install.log這個檔案呗:
cat /var/log/vbox-install.log
Makefile:147: *** Error: unable to find the sources of your current Linux kernel. Specify KERN_DIR= and run Make again。 停止。
執行yum install kernel,更新核心。
開始,我還以為是沒有找到系統核心,但加入核心代碼後還是一樣的錯誤。後來發現,原因在于我沒有安裝GCC,進而導緻virtualbox不能用本地gcc編譯适合它使用的核心子產品,于是趕緊yum install gcc。。。。。這是一個漫長的過程:
[root@liukai mldonkey-distrib-3.0.0]# yum install gcc
Setting up Install Process
Parsing package install arguments
Resolving Dependencies
--> Running transaction check
---> Package gcc.i386 0:4.1.2-44.el5 set to be updated
--> Processing Dependency: libgomp >= 4.1.2-44.el5 for package: gcc
--> Processing Dependency: libgcc >= 4.1.2-44.el5 for package: gcc
--> Processing Dependency: cpp = 4.1.2-44.el5 for package: gcc
--> Processing Dependency: glibc-devel >= 2.2.90-12 for package: gcc
---> Package libgomp.i386 0:4.3.2-7.el5 set to be updated
---> Package cpp.i386 0:4.1.2-44.el5 set to be updated
---> Package glibc-devel.i386 0:2.5-34.el5_3.1 set to be updated
--> Processing Dependency: glibc-headers = 2.5-34.el5_3.1 for package: glibc-devel
--> Processing Dependency: glibc-headers for package: glibc-devel
--> Processing Dependency: glibc = 2.5-34.el5_3.1 for package: glibc-devel
---> Package libgcc.i386 0:4.1.2-44.el5 set to be updated
---> Package glibc.i686 0:2.5-34.el5_3.1 set to be updated
--> Processing Dependency: glibc-common = 2.5-34.el5_3.1 for package: glibc
---> Package glibc-headers.i386 0:2.5-34.el5_3.1 set to be updated
--> Processing Dependency: kernel-headers for package: glibc-headers
--> Processing Dependency: kernel-headers >= 2.2.1 for package: glibc-headers
---> Package kernel-headers.i386 0:2.6.18-164.el5 set to be updated
---> Package glibc-common.i386 0:2.5-34.el5_3.1 set to be updated
--> Finished Dependency Resolution
Dependencies Resolved
=============================================================================
Package Arch Version Repository Size
Installing:
gcc i386 4.1.2-44.el5 base 5.2 M
Updating:
cpp i386 4.1.2-44.el5 base 2.7 M
glibc i686 2.5-34.el5_3.1 updates 5.2 M
glibc-common i386 2.5-34.el5_3.1 updates 16 M
libgcc i386 4.1.2-44.el5 base 94 k
Installing for dependencies:
glibc-devel i386 2.5-34.el5_3.1 updates 2.0 M
glibc-headers i386 2.5-34.el5_3.1 updates 598 k
kernel-headers i386 2.6.18-164.el5 updates 993 k
libgomp i386 4.3.2-7.el5 base 67 k
Transaction Summary
Install 5 Package(s)
Update 4 Package(s)
Remove 0 Package(s)
Total download size: 33 M
Is this ok [y/N]: y
Downloading Packages:
(1/9): libgcc-4.1.2-44.el 100% |=========================| 94 kB 00:06
(2/9): glibc-devel-2.5-34 100% |=========================| 2.0 MB 09:04
(3/9): glibc-headers-2.5- 100% |=========================| 598 kB 02:33
(4/9): gcc-4.1.2-44.el5.i 100% |=========================| 5.2 MB 03:37
(5/9): cpp-4.1.2-44.el5.i 100% |=========================| 2.7 MB 02:33
(6/9): libgomp-4.3.2-7.el 100% |=========================| 67 kB 00:04
(7/9): glibc-common-2.5-3 100% |=========================| 2.7 MB 19:56
ftp://ftp.chu.edu.tw/Linux/CentOS/5.3/updates/i386/RPMS/glibc-common-2.5-34.el5_3.1.i386.rpm: [Errno 4] Socket Error: timed out
Trying other mirror.
(7/9): glibc-common-2.5-3 100% |=========================| 16 MB 27:40
(8/9): kernel-headers-2.6 100% |=========================| 993 kB 00:52
(9/9): glibc-2.5-34.el5_3 100% |=========================| 5.2 MB 04:42
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Updating : libgcc ####################### [ 1/13]
Updating : glibc-common ####################### [ 2/13]
Updating : glibc ####################### [ 3/13]
Installing: libgomp ####################### [ 4/13]
Updating : cpp ####################### [ 5/13]
Installing: kernel-headers ####################### [ 6/13]
Installing: glibc-headers ####################### [ 7/13]
Installing: glibc-devel ####################### [ 8/13]
Installing: gcc ####################### [ 9/13]
Cleanup : glibc ####################### [10/13]
Cleanup : glibc-common ####################### [11/13]
Cleanup : cpp ####################### [12/13]
Cleanup : libgcc ####################### [13/13]
Installed: gcc.i386 0:4.1.2-44.el5
Dependency Installed: glibc-devel.i386 0:2.5-34.el5_3.1 glibc-headers.i386 0:2.5-34.el5_3.1 kernel-headers.i386 0:2.6.18-164.el5 libgomp.i386 0:4.3.2-7.el5
Updated: cpp.i386 0:4.1.2-44.el5 glibc.i686 0:2.5-34.el5_3.1 glibc-common.i386 0:2.5-34.el5_3.1 libgcc.i386 0:4.1.2-44.el5
Complete!
You have new mail in /var/spool/mail/root
然後再次重新開機虛拟機就可以了。如果還是不行,那就先用rpm -e解除安裝了剛裝的virtualbox,然後再安裝下,就可以了。
此外,如果你的系統是ubuntu的可以這樣解決:
sudo aptitude update
sudo aptitude install dkms
sudo /etc/init.d/vboxdrv setup
現在總結下:
出現Kernel driver not installed (rc=-1908)錯誤的原因是,沒有編譯成功供virtualbox使用的核心子產品,要編譯出這個子產品,需要核心源代碼,檢視/usr/src可以知道;其次是需要編譯器,linux下就是gcc,這兩個都滿足了,再執行
[root@liukai ~]# /etc/init.d/vboxdrv setup
Recompiling VirtualBox kernel module [确定]
Starting VirtualBox kernel module [确定]
就可以了。
而這個過程,希望大家都用yum來完成,以減少因依賴産成的錯誤。
注意,需要看清楚你的核心和更新的是不是同一個,如不是還需要把old解除安裝,然後reboot,用新核心再vboxdrv setup。
此外,如果碰到新版本的VirtualBox,比如3.1.8,或者使用了CentOS5.5系統。安原來的安裝過程會出現下述錯誤:
“Trying to register the VirtualBox kernel modules using DKMS”
或者
“unable to find the sources of your current Linux kernel”
解決方法是:
yum install kernel-devel-i686(i686使用uname -a得知)
随後,export KERN_DIR=/usr/src/kernels/2.6.18-164.15.1.el5-i686/(2.6.18-164.15.1.el5-i686可檢視自己機器就具體位置而知)
最後,/etc/init.d/vboxdrv setup即可。
本文原創,請轉載的同志注明出處為五嶽之巅部落格,謝謝。