Difference between revisions of "VirtualBox (简体中文)"

From ArchWiki
Jump to navigation Jump to search
Line 251: Line 251:
 
1、命令是:chmod 666 /dev/net/tun
 
1、命令是:chmod 666 /dev/net/tun
  
2、::*** Dharivs的补充
+
2、::***的补充
 
可以不使用命令,而是利用/etc/udev/rules.d/60-vboxdrv.rules,使它们在开机时设置好:  
 
可以不使用命令,而是利用/etc/udev/rules.d/60-vboxdrv.rules,使它们在开机时设置好:  
 
<pre>
 
<pre>

Revision as of 11:00, 29 August 2009


Template:I18n links start Template:I18n entry Template:I18n entry Template:I18n entry Template:I18n entry Template:I18n entry Template:I18n links end

什么是VirtualBox

VirtualBox是类似于vmware的虚拟机模拟器。它拥有vmware的许多特性,以及许多它自身独有的。最近这个软件发展很快,比如在2.2版本对Linux和Solaris引入OpenGL 3D加速功能。这个软件有很友好的界面(QT或SDL),同时也可以依靠强大的命令行来进行操作。

版本

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

VirtualBox-ose

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

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作虚拟磁盘。

安装

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

安装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不支持x86_64平台,2.0.4版本不是在x86_64位平台编译的,2.10版或许会对64位平台有更好支持)

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

gpasswd -a USERNAME vboxusers

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

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

modprobe vboxdrv

HowTo:
VirtualBox-HowTo

安装VirtualBox PUEL

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

AUR: virtualbox_bin下载tar压缩包,解压缩后运行makepkg然后作为root:

# pacman -U PACKAGE-NAME.pkg.tar.gz 

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

但是,还有另外一种方法可以更方便安装virtualbox_bin软件包:

首先,按照下面修改/etc/pacman.conf:

[archlinuxfr]
Server = http://repo.archlinux.fr/i686

或者

[archlinuxfr]
Server = http://repo.archlinux.fr/x86_64

之后就能用

# pacman -Sy virtualbox_bin

安装Virtualbox_bin

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

gpasswd -a USERNAME vboxusers

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

vboxdrv加到/etc/rc.conf的MODULES行,如果要手动载入模块,在终端下执行:

# modprobe vboxdrv

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

安装QT库

最新的VirtualBox需要QT4库文件来构建图形界面,如果你需要图形界面,就要保证安装了QT4:

# pacman -S qt

启动VirtualBox

要启动VirtualBox,只需要在终端下执行下面的命令:

$ VirtualBox

安装VirtualBox 2.1 (另外一种方法)

VirtualBox安装也可以直接从VirtualBox网站上下载安装文件来进行安装。Linux section

确保安装了4.3.0或更高版本的 Qt 和 1.2.7 或者更高版本的SDL :

# pacman -Sy qt sdl 

从网站上根据自己电脑下载 i386/AMD64 的安装文件。之后在终端进入下载目录执行下面的命令:

# sh VirtualBox-2.XXXX-Linux_ARCH.run

软件将会被安装在 /opt/VirtualBox-2.XXX 目录。

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

gpasswd -a USERNAME vboxusers

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

vboxdrv加到/etc/rc.conf的MODULES行,如果要手动载入模块,在终端下执行:

# modprobe vboxdrv

配置

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

客户机与主机间的键盘鼠标设置

在虚拟的主机上点击就可以激活客户机对键盘鼠标的捕捉,需要捕捉只需要按下 "Ctrl-Alt Delete"。

如果在客户机中无法使用键盘和鼠标,你就需要禁用Xorg的新的热插拔功能 new hot plugging feature of Xorg 1.5。将下面内容加入到/etc/X11/xorg.conf中:

Section "ServerLayout"
       . . .
       Option "AutoAddDevices" "False"
       . . .
EndSection

一般来说上面这一段只对Linux客户机在Mac OS X 或者Windows主机上才需要设置,但是在Arch64位主机和Arch64位客户机间也需要这样设置。

如果在客户机和主机之间,鼠标不能统一,就把下面内容加入到xorg.conf中:

Section "InputDevice"
   Identifier "Mouse0"
   Driver "vboxmouse"
   Option         "Protocol" "auto"
   Option         "Device" "/dev/input/mice"
   Option         "ZAxisMapping" "4 5 6 7"
EndSection
Section "ServerLayout"
   Identifier     "X.org Configured"
   Screen      0  "Screen0" 0 0
   InputDevice    "Mouse0" "CorePointer"
   InputDevice    "Keyboard0" "CoreKeyboard"
EndSection

如果你是用 "X -configure" 生成的 xorg.conf , 配置文件会在InputDevice 区域使用 "mouse" 驱动. 安装完Guest Additions后,将"mouse" 用 "vboxmouse" 取代,然后重启 X 系统 或者重启虚拟机。

让虚拟系统使用网络

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

使用NAT网络

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

使用host interface网络 (设置虚拟机来实现)

这种方法麻烦一点,但它让你的虚拟机看起来就像是局域网上一台”真正的“电脑。从VirtualBox 2.1.0 开始支持直接从客户机来实现Host interface功能。只需要在rc.conf中的MODULES中加入 vboxnetflt 之后在你虚拟机设置中选择Host Interface Networking

==== 使用host interface网络 (设置Arch实现) ====、

打开终端,输入下面内容:

 # pacman -S bridge-utils uml_utilities

设置下面的几个文件,然后重启就就好:

  • /etc/conf.d/bridges
  • /etc/rc.conf
  • /etc/vbox/interfaces

Ready? Let's go!

/etc/conf.d/bridges:

bridge_br0="eth0 vbox0" # Put any interfaces you need.
BRIDGE_INTERFACES=(br0)

/etc/rc.conf: 在MODULES中加入bridge模块:

MODULES=( <your other modules> bridge)

在网络设置部落设置如下:

br0="dhcp" # 这是DHCP的设置部分,如果你是静态网络,按照你自己网络情况设置。
INTERFACES=(eth0 br0)

之后修改 /etc/udev/rules.d/60-virtualbox.rules ,输入:

KERNEL=="vboxdrv", NAME="vboxdrv", OWNER="root", GROUP="vboxusers", MODE="0660"

保存退出。

通过命令建立网桥。

# brctl addbr br0

/etc/vbox/interfaces


(你可是设置任意多的接口. Sky is the limit!):

vbox0 your_user br0 # 请再次确保你的用户是在vboxuser用户组中.

重启,搞定

注意: 记住在虚拟机中设置好对应的网络.

注意: 如果遇到什么问题,请确定你安装了bridge-utils 并且载入了 vboxnet

使用host interface网络 (通用)

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

# pacman -S bridge-utils uml_utilities
      • Sp1d3rmxn的补充
你还要加载TUN模块...在rc.conf中添加tun到MODULES行。如果你不想重新启动,用命令"modprobe tun"来加载它。
然后必须设置好权限,有两种方法:

1、命令是:chmod 666 /dev/net/tun

2、::***的补充 可以不使用命令,而是利用/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来创建一个桥接的网络连接


让虚拟机使用无线网络来上网

前面的设置方法对无线网络并不适用. 请使用parprouted的方法来实现.

  1. Install parprouted and iproute
  2. # ln -s /usr/sbin/ip /sbin/ip
  3. Make sure IP fowarding is enabled: # sysctl net.ipv4.ip_forward=1, and/or edit /etc/sysctl.conf
  4. # VBoxTunctl -b -u <user>, to create the tap device
  5. # ip link set tap0 up; ip addr add 192.168.0.X/24 dev tap0, needs to be a manually set IP on the same network your wireless device is.
  6. # parprouted wlan0 tap0

让虚拟机使用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 -> 然后选择你打算插到虚拟机上的设备。

安装Guest Additions

对于 VirtualBox (OSE) version 1.6.2 =>, 参见:
VirtualBox-HowTo

Guest Additions提供文件夹共享功能以及更好的显卡驱动(2.1版本以上提供3D加速)和鼠标驱动。你将能无缝运行虚拟机(全屏和窗口运行随窗口自动切换,鼠标自动捕捉到和自动释放掉,还可以打开双向的剪贴板。)

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

然后在虚拟系统中以root身份按照以下步骤(如果虚拟系统是windows的话,会自动弹出窗口提示,按提示运行即可,下面的是针对虚拟机是linux的情况):

# mount /mnt/cdrom

对于i686(32 bit)系统:

# sh /media/cdrom/VBoxLinuxAdditions-x86.run

对于x86-64(64 bit)系统:

# sh /media/cdrom/VBoxLinuxAdditions-amd64.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)

如果不通过这种方式,可以按照下面的方法进行:

# pacman -S virtualbox-additions

或者

# pacman -S virtualbox-ose-additions

之后你会得到一个ISO文件,将这个文件当作loop设备装载。不过首先要保证载入了loop内核模块:

# modprobe loop
# mount /usr/lib/virtualbox/additions/VBoxGuestAdditions.iso /media/cdrom -o loop

之后执行 VBoxLinuxAdditions.run。在将rc.vbox加入到DAEMONS前,检查/etc/rc.local是不是已经有了安装程序添加的用于启动vboxadd的daemons.

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

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

对于 VirtualBox (OSE) version 1.6.2 =>, 请参见:
VirtualBox-HowTo

在虚拟机设置中,找到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)。

在虚拟机中使用音频

在虚拟机设置的audio标签中选择对应驱动(alsa,OSS或者PulseAudio)。如果声音和真机出现冲突,可以使用另外的两种驱动(必须真机中已经安装了它们)

设置虚拟机的内存的显存

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

为虚拟机设转置CDROM

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

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

注意:' 如果检测不到光驱,确保守护程序HAL已经被启动. 可以使用下面的命令来启动:

# /etc/rc.d/hal start

重建vboxdrv模块

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

  /usr/bin/vbox_build_module