VirtualBox (简体中文)
From ArchWiki
| 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
Categories: 模拟器 | HOWTOs (简体中文) | 简体中文