runsisi's

technical notes

编译安装virtualbox 3.1.2_OSE

2018-12-18 runsisi#devops

适用于 fedora 12, i386 平台,Virtualbox 3.1.2 OSE 版,其他环境我不保证能正常编译/安装/使用。

由于学校是教育网,上国外网几乎是不可能,但自己经常要去国外网下/看点什么东西,很麻烦,幸亏有搜狗,但问题是搜狗没有 linux 版本,决定装一个虚拟机,VMware 显然不适合我这 1G 内存的机器,况且还是笔记本。
Virtualbox 的官方有很多种格式的 binary 下载,当然也不缺 rpm,问题是官方有点变态,给出的不是直接的下载地址,不能另存为,直接点链接要不是出来迅雷,要不就出来 kmplayer,不知道 kmplayer 怎么跟 rpm 关联到一块了,在 kmplayer 的文件关联里还竟然没找到 rpm,算了,下不了 rpm 还是直接下源代码自己编译吧。

安装要求:
这个自己 configure 就知道了,下边是我 configure 的输出:

Checking for environment: Determined build machine: linux.x86, target machine: linux.x86, OK.
Checking for kBuild: found, OK.
Checking for gcc: found version 4.4.2, OK.
Checking for as86: found version 0.16.17, OK.
Checking for bcc: found version 0.16.17, OK.
Checking for iasl: found version 20090123, OK.
Checking for xslt: found, OK.
Checking for pthread: found, OK.
Checking for libxml2: found version 2.7.6, OK.
Checking for libxslt: found version 1.1.26, OK.
Checking for libIDL: found version 0.8.13, OK.
Checking for ssl: found version OpenSSL 1.0.0-beta4 10 Nov 2009, OK.
Checking for libcurl: found version 7.19.7, OK.
Checking for zlib: found version 1.2.3, OK.
Checking for libpng: found version 1.2.39, OK.
Checking for SDL: found version 1.2.13, OK.
Checking for X libraries: found, OK.
Checking for Xcursor: found, OK.
Checking for Xmu: found, OK.
Checking for Mesa / GLU: found version 1.2, OK.
Checking for Qt4: found version 4.5.3, OK.
Checking for Qt4 devtools: found version 4.5.3, OK.
Checking for python support: found version 2.6.2, OK.
Checking for  static stc++ library: found, OK.
Checking for Linux kernel sources: found version 2.6.31, OK.
Checking for ALSA: found version 1.0.22, OK.
Checking for PulseAudio: found version 0.9.21 API version 12, OK.
Checking for libcap library: found, OK.
Checking for compiler.h: compiler.h not found, OK.

缺少什么包它会提示的,一般都是 devel 包,其中 as86 在 fedora 中是包含在 dev86 下,在 ubuntu 中是包含在 bin86 下。

注意: configure 时添加 --disable-hardening 选项,官方说 hardening 是一个 feature 不是 bug,但如果不 disable,我是死都不能成功运行的,网上随便一搜就能搜到关于这个问题的求助,反正依我使用 google 的能力我是解决不了的。

编译:
configure 之后会有提示你接下来要输入的两条命令,如下所示。

source /home/runsisi/Desktop.home/VirtualBox-3.1.2_OSE/env.sh
kmk

第一条的路径每个人都是不同的,你直接复制它给出来的就好了。

编译内核模块:
进入到源代码的如下目录下,进行常规的编译操作,至于 sudo 之类的命令我就不提了。

cd ./out/linux.ARCH/release/bin/src # ARCH depends on the architecture of your system
make
make install

加载模块:

modprobe vboxdrv

创建 vboxusers 组,并将自己加入到该用户组,将设备文件所属的用户组改为 vboxusers。

groupadd vboxusers # Requires root.
usermod -a -G vboxusers USERNAME # USERNAME is your account username who should have accesses to VirtualBox,for example:usermod -a -G vboxusers runsisi
chown root:vboxusers /dev/vboxdrv

注销并重新登录,查看自己是否在 vboxusers 组下,可以使用 groups 命令或者查看 /etc/group 文件。

创建自动加载脚本:
如下所示,保存为 /etc/init.d/vbox,并确保该文件是可执行的。

#!/bin/bash
### BEGIN INIT INFO
# Provides: vbox
# Required-Start: $syslog $local_fs
# Required-Stop: $syslog $local_fs
# Default-Start: 2  3  4  5
# Default-Stop: 0  1  6
# Short-Description: The Virtual Box kernel module
# Description: The Virtual Box kernel module
### END INIT INFO

start() {
  echo -n $"Starting Virtual Box: "
  modprobe vboxdrv
  sleep 1
  [ -c /dev/vboxdrv ] && chown root.vboxusers /dev/vboxdrv && echo " OK"
  [ ! -c /dev/vboxdrv ] && echo "Failed"
  return  0
}

stop() {
  echo -n $"Stopping Virtual Box: "
  [ -c /dev/vboxdrv ] && rmmod vboxdrv && echo " OK"
  [ !  -c /dev/vboxdrv ] && echoreturn  0
}

restart() {
  stop
  start
}

case $1 in
  start)
    start
    ;;
  stop)
    stop
    ;;
  restart)
    restart
    ;;
  status)
    [ -c /dev/vboxdrv ] && echo "Virtual Box is loaded"
    [ !  -c /dev/vboxdrv ] && echo "Virtual Box is not loaded"
    ;;
  *)
    echo $"Usage: vbox {start|stop|restart|status}"
    exit 3
esac

exit 0

注意:该脚本没有加载另外两个内核模块,请参考下一篇《fedora 12 virtualbox 3.1.2_OSE 驱动模块加载》(2010-01-11)

添加服务:

chkconfig --add vbox

完成安装,创建菜单:
将 VirtualBox-3.1.2_OSE/out/linux.x86/release/ 目录下的 bin 文件夹复制到 /usr/local/ 目录下,这个命名什么的基本上是无所谓的。

cp -prf bin /usr/local/VirtualBox  
ln -s /usr/local/VirtualBox/VirtualBox /usr/local/bin/VirtualBox

创建菜单的方法 kde 和 gnome 是不同的,但都很简单,这里就不提了。

使用:
装好系统后,不管是 VMware 还是 Virtualbox 都是需要装驱动的,也即 GuestAdditions,这个我不知道,也不想知道如何编译了,这个东西是需要 windows 下的编译平台的,因为你是要编译 windows 下使用的驱动,网上直接有现成的编译好了的下载,自己 google 吧。

给个地址: http://code.google.com/p/virtual-box-windows-guest-additions-installer/

下边是该项目的介绍:
This project provides a packaged version of the Windows Guest Addition tools for VirtualBox OSE. This is provided so that users will not have to create a Windows build environment just to build the guest additions.

下面是我装好后的截图: about vm