在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
--> Running transaction check
---> 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
--> Running transaction check
---> 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
--> Running transaction check
---> 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
Stopping VirtualBox kernel module                          [確定]
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即可。
arrow
arrow
    文章標籤
    Linux 運維 虛擬化
    全站熱搜

    愛在屋簷下 發表在 痞客邦 留言(0) 人氣()