虚拟机-VirtualBox
2016年05月13日

概述

VirtualBox 是一款开源虚拟机软件。VirtualBox是由德国Innotek公司开发,由Sun Microsystems公司出品的软件,使用Qt编写,在Sun被Oracle收购后正式更名成Oracle VM VirtualBox。Innotek以GNU General Public License (GPL)释出VirtualBox,并提供二进制版本及OSE版本的代码。使用者可以在VirtualBox上安装并且执行Solaris、Windows、DOS、Linux、OS/2 Warp、BSD等系统作为客户端操作系统。现在则由甲骨文公司进行开发,是甲骨文公司xVM虚拟化平台技术的一部份。

VirtualBox号称是最强的免费虚拟机软件,它不仅具有丰富的特色,而且性能也很优异!它简单易用,可虚拟的系统包括Windows(从Windows 3.1到Windows10、Windows Server 2012,所有的Windows系统都支持)、Mac OS X、Linux、OpenBSD、Solaris、IBM OS2甚至Android等操作系统!使用者可以在VirtualBox上安装并且运行上述的这些操作系统! 与同性质的VMware及Virtual PC比较下,VirtualBox独到之处包括远端桌面协定(RDP)、iSCSI及USB的支持,VirtualBox在客户端操作系统上已可以支持USB 2.0的硬件装置,不过要安装 VirtualBox Extension Pack。

安装

emerge -va VirtualBox-bin

虽然VirtualBox是开源项目,但是庞大的代码在gentoo下,编译简直就是废电.选择bin包就可以了.

对于需要使用VirtualBox的用户,需要把他添加到vboxusers组才可以

gpasswd -a USERNAME vboxusers

如果想启动某个虚拟系统需要加载内核模块vboxdrv,每次启动linux都需要执行

sudo modprobe vboxdrv
# 或者
vim /etc/conf.d/modules
modules="vboxdrv vboxnetflt vboxnetadp"

常见问题

共享剪贴板

  • 安装VirtualBox-Guest-addition增强插件
  • 控制-设置-常规-高级-共享剪贴板-双向
  • 安装IE8[xp的共享剪贴板似乎依赖某个vc运行库]

VirtualBox内安装Linux

显卡驱动
gentoo -> xf86-video-virtualbox
arch -> xf86-video-vesa

增大虚拟硬盘空间

VirtualBox 4.0 .8版增加了一个的新功能:您可以在几秒钟内完成对虚拟硬盘容量的修改。
VBoxManage modifyhd /path/of/vdi-file --resize SIZE_IN_MB
参数 SIZE_IN_MB 是指修改后的硬盘容量,单位是兆字节

假设要增大的虚拟硬盘文件为 os.vdi

VBoxManage modifyhd   /mnt/vbox/os.vdi   --resize 30000

调整大小为30G

VBoxManage list hdds
VBoxManage modifyhd 你的uuid --resize SIZE_IN_MB

重新扩大分区

parted resizepart 2 100%

把第二个分区扩大到硬盘结尾,也就是占满硬盘

pvchange /dev/sda2 更新pv
lvextend -L +10G /dev/VG_NAME/LV_NAME

给lv增加10G

resize2fs /dev/VG_NAME/LV_NAME

更新文件系统大小

基本设置

共享粘贴板:双向,
拖放:禁用
光驱状态:保存运行时变动
小工具栏:在全屏或无缝模式显示
内存大小:分配2250MB给虚拟机(我有8GB内存)
启动顺序:光驱、硬盘
芯片组:PIIX3(我的笔记本是NV的芯片组,如果是Intel芯片组的,有人建议选ICH9)
指点设备:USB平板
如果给虚拟机只分配一个CPU核心,或机器里没有ISA卡或更早的扩展卡,请不要选I/O APIC,没有意义
处理器:1个(我的机器是T9550双核的,分配一个给虚拟机仍然吃得消)
运行峰值:100%
安装那个vboxaddition的iso,要在windows安全模式下,并且要选D3D组件

启用硬件加速

不开启启用PAE/NX,因为我的host系统是64位的,而我分配给XP的内存也未超出4GB
硬件虚拟:启用VT-x/AMD-V和启用嵌套分页均打开

启用显卡加速

显存大小设为128MB,启用3D加速,启用2D加速

调整显示器分辨率

让虚拟机使用和host一样的真实分辨率,需要在终端下先执行:
VBoxManage setextradata global GUI/MaxGuestResolution any
然后启动虚拟机,并切换为全屏模式,在windows中将分辨率改为自己屏幕的真实分辨率即可

加速网络

到linux-kvm的官网或fedoraproject下载virtio的windows驱动,加载到虚拟机的虚拟光驱中,然后在Virtualbox的网络->高级中将网卡设置为准虚拟网络,然后启动虚拟机,在windows xp查找驱动的时候,手动指向CD中的xp/x86/netkvm.inf,安装时会问选择哪个驱动(会有两个版本的信息),任选一个均可

启用ahci加速磁盘操作

新建一个ahci控制器,并新建一个磁盘放在该控制器下
进入虚拟机的windows后,下载intel的matrix storage的XP版驱动,我下载的是iata70_cd,执行安装
关闭虚拟机,删除ahci控制器下添加的那个虚拟磁盘
删除windows虚拟机所安装的那个虚拟磁盘到保留该虚拟磁盘文件,然后关闭virtualbox
重新启动virtualbox,然后在ahci控制器下加载windows虚拟机那个虚拟磁盘文件,
勾选ide控制器和ahci控制器的使用主机输入输出(I/O)缓存项即可。
使用主机输入输出(I/O)缓存项勾选与否各有利弊,使用ahci时因并发请求增多影响会更重,如勾选,主机负担重时,虚拟机I/O操作可能没响应,但主机负担不重时,虚拟机文件读写会更快,如不勾,虚拟机内存使用会上升,如内存分配少,会卡机

virtualbox内linux虚拟机挂在宿主系统目录

  1. 安装virtualbox-guest-additions
emerge -av virtualbox-guest-additions
  1. 启动virtualbox-guest-additions服务
/etc/init.d/virtualbox-guest-additions start
  1. 在虚拟机设置里创建共享文件夹
mount -t vboxsf [sharename] [mountpoint]

例如:

mount -t vboxsf dir1 /mnt/share

将共享文件夹"dir1"挂载到系统的/mnt/share目录

需要长期保持共享
1.将virtualbox-guest-additions添加到自启动

rc-update add virtualbox-guest-additions boot

2.并且在虚拟机共享文件夹设置里,将文件夹设置为固定挂载,自动挂载
3.添加到系统配置文件

vim /etc/fstab
dir1 /mnt/share vboxsf 0 0

virtualbox 主机(linux host)共享目录权限

mount -t vboxsf -o uid=1000,gid=1000 host_share_dir target_point

uid 可以用id -u查看

最新安装的virtualbox-guest-additions,只要启动virtualbox-guest-additions,会自动在启动时候挂载共享目录(虚拟机里设置自动挂载)到/media/sf_share_folder_name
访问权限,需要添加vboxsf组

gpasswd -a user_account vboxsf

内部权限是777

其他问题

VirtualBoxGuestAdditions

下载地址
请根据版本不同,下载对应版本

efi引导

最近在virtualbox里,efi引导genoo,总是无法找到引导文件.
后来直接输入\efi\gentoo\grubx64.efi可以顺利启动grub.
解决办法:

  1. 重启进入UEFI Interactive Shell,屏幕会有如下提示:
Press ESC in 5 seconds to skip startup.nsh or any other key to continue.
  1. 编辑startup.nsh文件
fs0:
edit startup.nsh
\efi\gentoo\grubx64.efi
# 保存
c-s
# 退出
c-q
  1. 重新引导
reset

等待5秒或直接按任意键,执行引导

Volume was not properly unmounted. Some data may be corrupt. Please run fsck.

重启后,/dev/sda1错误,重新检测即可

emerge dosfstools
fsck.vfat -v -a -w /dev/sda1