admin管理员组

文章数量:1532180

2024年2月7日发(作者:)

Oracle VM VirtualBox安装系统

一:ORACLE VM VirtualBox 简介

简介:

VirtualBox 是一款开源 x86 虚拟机软件。Oracle VM VirtualBox 是由Sun

Microsystems公司出品的软件,原由德国innotek公司开发,2008年Sun收购了Innotek,而Sun于2010年被Oracle收购,2010年1月21日改名成 Oracle

VM VirtualBox。2007 年1月InnoTek 以 GNU General Public License (GPL)

释出 VirtualBox,并提供二进位版本及开放源码版本的代码。VirtualBox 可在

Linux 和 Windows 主机中运行,并支持在其中安装 Windows (NT 4.0、2000、XP、Server 2003、Vista)、DOS/Windows 3.x、Linux (2.4 和 2.6)、OpenBSD 等系列的客户操作系统。

2008年2月12日,Sun Microsystems宣布将以购买股票的方式收购德国Innotek软件公司,新版不再叫做Innotek VirtualBox,而改叫Sun xVM

VirtualBox。

2010年1月21日,欧盟终于同意Oracle收购Sun,VirtualBox再次改名变成 Oracle VM VirtualBox。VirtualBox 3.2.0支持的操作系统包括:Windows, Mac OS X(Intel), Solaris 10,Linux(例如:Debian, Fedora,

Mandriva, OpenSolaris, PCLiunxOS, Red Hat, SUSE Linux, Ubuntu,

Xandros, openSUSE)等。Oracle VM VirtualBox 支持的客户端操作系统包括:从 3.1到Vista的所有版本的Windows、Linux 2.2、2.4和 2.6内核、Solaris x86、OS/2、、OpenBSD、 Netware 、FreeBSD 和 DOS 。

VirtualBox官网:/

下载最新版本可以到 /technetwork/server-storage/virtualbox/downloads/

二:安装VirtualBox的条件

VirtualBox需要kernel modules的支持,所以系统中必须要先安装kernel-devel,如果没有安装的,REDHAT系统可以使用yum来安装(其他发行版参考UserManual中的“support for

external kernel modules”相关内容)。另外还需要编译环境与DKMS套件。

2.1.1 三种基础环境的介绍

2.1.1.1:kernel-devel介绍

kernel-devel包只包含用于内核开发环境所需的内核头文件以及Makefile,而kernel-souce包含所有内核源代码。如果仅仅是用于你自己编写的模块开发的话,因为只需引用相应的内核头文件,所以只有devel包即可,如果你要修改现有的内核源代码并重新编译,那必须是kernel-souce。kernel-souce在RH某些版本之后不再附带在发行版中了,必须自己通过做出来。kernel-devel是用做内核一般开发的,比如编写内核模块,原则上,可以不需要内核的原代码。kernel则是专指内核本身的开发,因此需要内核的原代码。关于kernel source的有kernel和kernel-devel两个rpm,其中kernel rpm包含源文件和头文件(就像2.4下的kernel-source rpm),而kernel-devel则主要是头文件

2.1.1.2:编译环境介绍

现在很多程序员都应用GCC,怎样才能更好的应用GCC。目前,GCC可以用来编译C/C++、FORTRAN、JAVA、OBJC、ADA等语言的程序,可根据需要选择安装支持的语言。

概述

GCC(GNU Compiler Collection,GNU编译器套装),是一套由 GNU 开发的编程语言编译器。它是一套以 GPL 及 LGPL 许可证所发行的自由软件,也是

GNU计划的关键部分,亦是自由的类Unix及苹果电脑 Mac OS X 操作系统的标准编译器。

GCC 原名为 GNU C 语言编译器,因为它原本只能处理 C语言。GCC 很快地扩

展,变得可处理 C++。之后也变得可处理 Fortran、Pascal、Objective-C、Java, 以及 Ada与其他语言。

虽然我们称Gcc是C语言的编译器,但使用gcc由C语言源代码文件生成可执行文件的过程不仅仅是编译的过程,而是要经历四个相互关联的步骤∶预处理(也称预编译,Preprocessing)、编译(Compilation)、汇编(Assembly)和链接(Linking)。

命令gcc首先调用cpp进行预处理,在预处理过程中,对源代码文件中的文件包含(include)、预编译语句(如宏定义define等)进行分析。接着调用cc1进行编译,这个阶段根据输入文件生成以.o为后缀的目标文件。汇编过程是针对汇编语言的步骤,调用as进行工作,一般来讲,.S为后缀的汇编语言源代码文件和汇编、.s为后缀的汇编语言文件经过预编译和汇编之后都生成以.o为后缀的目标文件。当所有的目标文件都生成之后,gcc就调用ld来完成最后的关键性工作,这个阶段就是连接。在连接阶段,所有的目标文件被安排在可执行程序中的恰当的位置,同时,该程序所调用到的库函数也从各自所在的档案库中连到合适的地方。

基本用法

在使用Gcc编译器的时候,我们必须给出一系列必要的调用参数和文件名称。GCC编译器的调用参数大约有100多个,其中多数参数我们可能根本就用不到,这里只介绍其中最基本、最常用的参数。

GCC最基本的用法是∶gcc [options] [filenames]

其中options就是编译器所需要的参数,filenames给出相关的文件名称。

-c,只编译,不连接成为可执行文件,编译器只是由输入的.c等源代码文件生成.o为后缀的目标文件,通常用于编译不包含主程序的子程序文件。

-o output_filename,确定输出文件的名称为output_filename,同时这个名称不能和源文件同名。如果不给出这个选项,gcc就给出预设的可执行文件。

-g,产生符号调试工具(GNU的gdb)所必要的符号资讯,要想对源代码进行调试,我们就必须加入这个选项。

-O,对程序进行优化编译、连接,采用这个选项,整个源代码会在编译、连接过程中进行优化处理,这样产生的可执行文件的执行效率可以提高,但是,编译、连接的速度就相应地要慢一些。

-O2,比-O更好的优化编译、连接,当然整个编译、连接过程会更慢。

-Idirname,将dirname所指出的目录加入到程序头文件目录列表中,是在预编译过程中使用的参数。C程序中的头文件包含两种情况∶

A)#include

B)#include “myinc.h”

其中,A类使用尖括号(<>),B类使用双引号(“ ”)。对于A类,预处理程序cpp在系统预设包含文件目录(如/usr/include)中搜寻相应的文件,而B类,预处理程序在目标文件的文件夹内搜索相应文件。

2.1.1.3:DKMS介绍

我们都知道,如果要使用没有集成到内核之中的Linux驱动程序需要手动编译。当然,这并不是一件什么难事,即使是对于没有编程经验的Linux使用者,只要稍微有点hacker的意识,努力看看代码包里的Readme或者INSTALL文件,按部就班的执行几条命令还是很容易办到的。但这里还有一个问题,Linux模块和内核是有依赖关系的,如果遇到因为发行版更新造成的内核版本的变动,之前编译的模块是无法继续使用的,我们只能手动再编译一遍。这样重复的操作有些繁琐且是反生产力的,而对于没有内核编程经验的使用者来说可能会造成一些困扰,使用者搞不清楚为什么更新系统之后,原来用的好好的驱动程序突然就不能用了。这里,就是Dell创建的DKMS项目的意义所在。DKMS全称是Dynamic Kernel

Module Support,它可以帮我们维护内核外的这些驱动程序,在内核版本变动之后可以自动重新生成新的模块。

要运行VirtualBox首先需要建立、并且启动VirtualBox kernel module.所以要安装DKMS。

DKMS下载地址为:/dkms/

安装完成后会生成相应的日志:

cat /var/log/

Uninstalling modules from DKMS

Attempting to install using DKMS

Creating symlink /var/lib/dkms/vboxhost/4.0.8/source ->

/usr/src/vboxhost-4.0.8

DKMS: add Completed.

Kernel preparation unnecessary for this kernel.

Building module:

cleaning

make KERNELRELEASE=6.i686 -C /lib/modules/6.i686/build

M=/var/lib/dkms/vboxhost/4.0..

cleaning

DKMS: build Completed.

:

Running module version sanity check.

- Original module

- No original module exists within this kernel

- Installation

- Installing to /lib/modules/6.i686/extra/

:

Running module version sanity check.

- Original module

- No original module exists within this kernel

- Installation

- Installing to /lib/modules/6.i686/extra/

:

Running module version sanity check.

- Original module

- No original module exists within this kernel

- Installation

- Installing to /lib/modules/6.i686/extra/

Adding any weak-modules

DKMS: install Completed.

三:安装过程截图

3.1.1:kernel-devel安装

3.1.2:GCC环境的安装

3.1.3:DKMS的安装与实施

3.1.4:VM VirtualBox的安装

3.1.4.1:RPM包的安装

运行前配置:

首先需要建立、并且启动VirtualBox kernel module,执行:

CODE:

# /etc/rc.d/init.d/vboxdrv setup

如果kernel升级后,都要执行一次该命令重建;如果需要设置vbox服务为自启动,将vboxdrv和vboxnet设置为自启动即可。

安装virtualbox后,系统将自动生成vboxusers的用户组,将自己的用户名添加到bvoxusers组,否则无法使用vbox。

CODE:

# usermod -G vboxusers your_user_name

运行VMBOX

3.1.4.2:源代码包的安装

四:安装虚拟机

五:安装过程可能遇到的问题

安装过程遇到最多的可能是安装完成启动过程中无法找到相应的驱动问题,如下图:

要想解决这种问题其实也很简单,首先你需要关闭机器。

本文标签: 文件内核编译过程安装