VirtualBox (简体中文)

From ArchWiki

Jump to: navigation, search


i18n
English
Italiano
简体中文
Русский
Español

Contents

[edit] 什么是VirtualBox

VirtualBox是类似于vmware的虚拟机模拟器。它拥有vmware的许多特性,以及许多它自身独有的。

[edit] 版本

VirtualBox有两种版本:VirtualBox-ose和VirtualBox(PUEL)(Personal Use and Evaluation License 个人使用和评估许可协议)

[edit] VirtualBox-ose

这是VirtualBox的开源版本,可以在community软件仓库找到。它缺少一些功能,比如USB支持和RCP服务器。

[edit] VirtualBox (PUEL)

这是免费供个人使用的版本,可以在 AUR找到,或者到 VirtualBox官方网站下载

附加特性包括:

  • 远程显示协议(Remote Display Protocol RDP)服务器

这一要素在虚拟硬件上提供了一个完整的RDP服务器,用户可以通过任何RDP兼容的客户端来远程连接虚拟机。

  • USB支持

VirtualBox提供了一个虚拟的USB控制器,支持从USB 1.1、USB 2.0设备到虚拟机的传输。

  • 在RDP上使用USB

这是USB支持和RDP服务器的结合,让用户可以在远程运行的虚拟机上使用USB设备。

  • iSCSI initiator

VirtualBox包含一个内建的iSCSI initiator,不需要虚拟系统对iSCSI的支持就可以用iSCSI targets作虚拟磁盘。

[edit] 安装

现在让我们来安装VirtualBox。我们有两种选择:OSE版本或者PUEL版本。

[edit] 安装VirtualBox OSE

安装VirtualBox OSE,你需要在/etc/pacman.conf中打开community软件仓库

#[community]
# Add your preferred servers here, they will be used first
#Include = /etc/pacman.d/community

改成:

[community]
# Add your preferred servers here, they will be used first
Include = /etc/pacman.d/community

用pacman安装VirtualBox OSE:

pacman -Sy virtualbox-ose

(注意:安装程序会生成一个桌面项,位于applications -> system tools -> VirtualBox OSE)

这样做会默认安装virtualbox-ose和virtualbox-modules两个包。然后你要加自己到vboxusers组:

gpasswd -a USERNAME vboxusers

(注意:为使这一变更生效,你需要注销并重新登陆)

然后把vboxdrv添加到/etc/rc.conf的modules行,它就会在每次开机时自动加载。如果你想手动加载,用root身份输入:

modprobe vboxdrv

[edit] 安装VirtualBox PUEL

这很容易,因为piie已经写出了一份很好的pkgbuild,就在AUR里。

下载PKGBUILD,运行makepkg然后作为root:

pacman -U NAME OF THE PACKAGE.pkg.tar.gz

(注意: 安装程序会生成一个桌面项,位于applications -> system tools -> Innotek VirtualBox)

装完以后把你自己加入到vboxusers用户组:

gpasswd -a USERNAME vboxusers

(注意:为使这一变更生效,你需要注销并重新登陆)

vboxdrv加到/etc/rc.conf的MODULES行

重要:
由于升级、重编译等原因,每次内核版本发生变化时,你都要用"vbox_build_module"来重新制作virtualbox的内核模块。这一程序可能位于以下任何一个位置:/sbin, /bin, 或/usr/bin,必须用超级用户(superuser)权限来执行它。重新制作以后,别忘了加载它:modprobe vboxdrv.

[edit] 配置

装好VirtualBox并把自己添加到vboxusers组以后,我们就可以开始配置系统,让VirtualBox的所有功能都可以使用。利用GUI提供的向导创建一个新的虚拟机,点击settings来修改虚拟机的设置。

[edit] 让虚拟系统使用网络

首先让虚拟系统能使用网络。点击network标签。”not attached“选项意味着“虚拟机的网络适配器被拨掉了“或其它类似的错误。

[edit] 使用NAT网络

这是使用网络的最简单方法。选择NAT network应该就能用了。第一块网卡的NAT IP地址是10.0.2.0,第二块是10.0.3.0,依此类推。

[edit] 使用host interface网络

这种方法麻烦一点,但它让你的虚拟机看起来就像是局域网上一台”真正的“电脑。你需要安装bridge-utils

pacman -Sy bridge-utils
      • Sp1d3rmxn的补充
你还要加载TUN模块...在rc.conf中添加tun到MODULES行。如果你不想重新启动,用命令"modprobe tun"来加载它。
然后你必须设置好权限,命令是:chmod 666 /dev/net/tun
现在请按照以下所写的进行
      • Dharivs的补充
如Sp1d3rmxn所说,我们必须设置权限,但我们可以不使用命令,而是利用/etc/udev/rules.d/60-vboxdrv.rules,使它们在开机时设置好:
KERNEL=="vboxdrv", NAME="vboxdrv", OWNER="root", GROUP="vboxusers", MODE="0660"
KERNEL=="tun", OWNER="root", GROUP="vboxusers", MODE="0660"


1. 用如下命令创建一个新的网桥:

brctl addbr br0

2.如果你不是使用DHCP, 运行ifconfig,记下你正在使用的网络设置(比如eth0),一会儿我们需要把它们复制到网桥。

(注意: 你将会用到这些设置,所以请不要弄丢了!!!!)

3.把你的网卡转换到"promiscuous"模式,这样它将会接收来自它自己以外MAC地址的以太网数据帧(把下面的eth0换成你自己的网络接口):

ifconfig eth0 0.0.0.0 promisc 

(注意:此时你会失去eth0的网络连接)

4.把你的网卡添加到网桥上:

brctl addif br0 eth0

5. 把你方才所用的物理网卡的设置添加到网桥。如果你使用DHCP,那么:

dhcpcd -t 30 -h yourhostname br0 &

或者,运行ifconfig br0 x.x.x.x netmask x.x.x.x,使用你刚才记下的设置。

6.创建一个名为vbox0的固定宿主接口(所有用这种方式创建的宿主接口都必须命名为vbox加数字的形式)并把它添加到以上创建的网桥中,命令:

VBoxAddIF vbox0 vboxuser br0

把vboxuser替换成将要使用这个接口的用户的名字。

(注意:VboxAddIF位于/opt/VirtualBox-VIRTUALBOX的版本号/VBoxAddIF)

另外,你还可以通过/etc/rc.conf来创建一个桥接的网络连接

[edit] 让虚拟机使用USB

(需要PUEL版本)

首先,要在虚拟机上使用USB,你必须在/etc/fstab里添加一行:

none			/proc/bus/usb	usbfs	devgid=85,devmode=664 	0	0

其中85是被允许访问USB设备的用户组的id。把它换成你的vboxusers组的id。你可以这样来获取该id:

grep vboxusers /etc/group

如果你不介意可能的安全漏洞,就把devmode由664改成666。

重新挂载/proc/bus/usb:

mount -o remount /proc/bus/usb/

重启动Virtualbox,点击虚拟机设置的USB标签,选择你的电脑开机时可用的设备。如果你打算使用刚插上的设备(假设虚拟机是开机状态),在虚拟机的窗口找到devices -> USB Devices -> 然后选择你打算插到虚拟机上的设备。

[edit] 安装Guest Additions

Guest Additions提供共享文件夹功能以及更好的显卡驱动(不是3D的)和鼠标驱动。你将拥有鼠标集成,也就是说在虚拟机中使用鼠标以后不再需要释放它。你也可以打开双向的剪贴板。

启动虚拟机之后,到菜单里选择Devices->Install Guest Additions...点击之后VirtualBox会往当前的CD-ROM中加载一个ISO镜像, 看起来就像什么都没有发生一样;)

然后在虚拟系统中以root身份按照以下步骤:

# mount /mnt/cdrom
# sh /mnt/cdrom/VBoxLinuxAdditions.run

系统将创建和安装内核模块,安装Xorg驱动并创建初始脚本。很可能会有关于初始脚本、run levels的错误信息,忽略它们即可。你将会在/etc/rc.d中找到rc.vboxadd和 rc.vboxvfs(还有/etc/rc.d/rc.local,这个可以删掉)。若要在启动时加载Guest Additions,只需把它们加入/etc/rc.conf的DAEMONS列,比如:

DAEMONS=(syslog-ng network netfs crond alsa rc.vboxadd rc.vboxvfs)

注意:如果"Installing the Virtualbox Guest Additions..."之后跟着数行"Unable to determine your Linux distribution"错误,rc.vboxadd和rc.vboxvfs 文件将不会被创建。暂时的解决办法是建立/etc/rc.d/rc.local文件, 然后重复VBoxLinuxAdditions命令:

# touch /etc/rc.d/rc.local
# sh /mnt/cdrom/VBoxLinuxAdditions.run
# rm /etc/rc.d/rc.local

注意:这一问题在1.5.4版本之后已被修复

注意:如果你安装了Xorg,请检查/etc/X11/xorg.conf,看显卡驱动是否为vboxvideo。如果出现找不到鼠标的现象,把鼠标驱动由“mouse”改成“vboxmouse“。

[edit] 宿主机与虚拟机间的共享文件夹

在虚拟机设置中,找到shared folders标签,添加你想共享的文件夹。

  • 注意:要使用这一功能,你需要安装Guest Additions。

在Windows虚拟系统中,自VirtualBox 1.5.0起,共享文件夹在Windows Explorer中是可见的。打开Windows Explorer到以下位置寻找:

My Networking Places --> Entire Network --> VirtualBox Shared Folders

另外,用Windows的命令行,你也可以这样:

net use x: \\vboxsvr\sharename

其中vboxsvr是固定的名称,把"x:"换成你想用来共享的盘符,sharename换成在VBoxManage中指定的文件夹名称

在Linux虚拟系统中,使用如下命令:

mount -t vboxsf [-o OPTIONS] sharename mountpoint

把sharename换成在VBoxManage中指定的文件夹名称,mountpoint换成你想挂载到的路径(例如/mnt/share)。如果这个目录不存在,挂载前先创建它。

除了mount命令提供的标准选项之外,还有如下选项可用: iocharset CHARSET 设定I/O操作中所用的字符集(默认是utf8),以及 convertcp CHARSET 指定共享文件夹名所用的字符集(默认是utf8)。

[edit] 在虚拟机中使用音频

在虚拟机设置的audio标签中选择alsa驱动。

[edit] 设置虚拟机的内存的显存

你可以在settings -> general中修改默认值。

[edit] 为虚拟机设转置CDROM

你可以在settings -> CD/DVD-ROM中修改默认值。

勾选“mount cd/dvd drive”并在其后的选项中选择一个。

[edit] 重建vboxdrv模块

更新kernel之后,为使VirtualBox继续工作可能需要这样做。以root身份运行如下命令:

  /usr/bin/vbox_build_module
Personal tools