在Ubuntu服务器中安装和配置VirtualBox

在Ubuntu服务器中安装和配置VirtualBox

实验室购置了两台服务器,原本是将所有的业务都装在了物理机上,也供其他的成员学习使用。时间长了后发现,这样的“一篮子鸡蛋”做法不可取,存在安全问题。
为此学习了服务器安装虚拟机的方法,这之中也走了不少弯路。最终,实现将业务分离在不同的虚拟机上,且当有成员需要服务器进行学习时,也能提供独立的平台和故障恢复功能,管理起来很方便。

配置环境和软件:
Ubuntu 14.04 64位
Oracle VirtualBox 5.x


安装和配置过程

准备环境

安装Ubuntu

安装Ubuntu服务器版,这里不做阐述。实验室服务器安装的时Ubuntu 14.04 LTS 64位版本,且服务器需要支持虚拟化(一般支持)。

安装VirtualBox

安装Linux版的VirtualBox,并做简单的配置
进入Oracle VirtualBox官网,下载与系统对应的Linux版本的VirtualBox。我这里时Ubuntu 14.04,因此下载Ubuntu 14.04 (“Trusty”) / 14.10 (“Utopic”) / 15.04 (“Vivid”)中AMD64版本,下载好deb包即可。
当然也可以使用apt安装方式,官网有详细说明。

安装VirtualBox:
> sudo apt-get update
> sudo dpkg -i virtualbox-5.xxx-Ubuntu-trusty_amd64.deb
如果安装出现错误
> sudo at-get -f install
再执行dpkg即可

另外需要下载好 VirtualBox 5.xxx Oracle VM VirtualBox Extension Pack 包。建议也下载好官网上的帮助手册(下载)。

设置VirtualBox

因为服务器是纯命令行界面,不能像桌面VirtualBox那样方便鼠标点击,所以设置均需要使用命令,好在VBox的命令也很强大。

1、安装一同下载好的VIrtualBox的扩展包。

> vboxmanage extpack install Oracle_VM_VirtualBox_Extension_Pack-5.xxx.vbox-extpack

2、可以修改虚拟机的安装路径。

> vboxmanage setproperty machinefolder “存放虚拟机安装位置的目录”

3、设置VRDE auth library。
虚拟机安装系统时,可以对其进行远程登陆显示,就好像安装了一个远程显示器一样,方便操作。这里建议在局域网中安装虚拟机系统,因为VRDE并不是很安全,且安装好后也需要关闭对应的虚拟机的VRDE的功能。

> vboxmanage setproperty vrdeauthlibrary “VBoxAuthSimple”

4、 设置VBox开启自启动
这样可以使得Ubuntu物理机服务器启动时,虚拟机也能定时启动。

> vboxmanage setproperty autostartdbpath /etc/vbox

使用VirtualBox

在VirtualBox中安装Ubuntu Server

注:安装部分 参考1 参考2 参考3

1、进入到VirtualBox的虚拟机安装目录。
默认是/home/用户名下的VirtualBox VMs 目录,如果更改了VirtualBox的设置,则进入设置中的Default machine folder配置的虚拟机安装目录。

确保安装目录的可读写权限。

2、新建目录,设置为安装系统的存储路径,比如ubuntu-vm-server-01

> mkdir ubuntu-vm-server-01
> cd ubuntu-vm-server-01

3、新建一个大小为100G的vdi磁盘(–size 单位 M)。
默认使用动态增加的方式,简单讲就是虚拟机系统用多少就占多少实际物理硬盘空间(只可增不会减),而虚拟机系统会认为磁盘大小为100G。

> vboxmanage createmedium disk –filename ubuntu-vm-server-01.vdi –size 102400

4、新建vbox虚拟机文件并注册(–ostype 设置系统格式)。
可以使用vboxmanage list ostypes查看vbox支持的系统格式。

> vboxmanage createvm –name ubuntu-vm-server-01.vdi–ostype “Ubuntu_64” –register

5、新建SATA磁盘控制器并将3中新建的vdi磁盘绑定到该虚拟机。

> vboxmanage storagectl ubuntu-vm-server-01–name “SATA Controller” –add sata –controller IntelAHCI
> vboxmanage storageattach ubuntu-vm-server-01 –storagectl “SATA Controller” –port 0 –device 0 –type hdd –medium ubuntu-vm-server-01.vdi

6、新建IDE控制器,设置它为dvd,并绑定系统ios文件到该dvd。
注:–medium为你的iso路径。

> vboxmanage storagectl ubuntu-vm-server-01–name “IDE Controller” –add ide
> vboxmanage storageattach ubuntu-vm-server-01–storagectl “IDE Controller” –port 0 –device 0 –type dvddrive –medium /home/downloads/ubuntu-14.04.4-server-amd64.iso

7、查看自己的网卡信息,并设置虚拟机的网卡为桥接方式(bridged)。

> ifconfig
输出:
eth0 Link encap:Ethernet HWaddr f4:4d:30:1b:34:e1
inet addr:192.168.100.8 Bcast:192.168.100.255 Mask:255.255.255.0

将虚拟机的第一块“网卡”nic1和eth0绑定。

> vboxmanage modifyvm ubuntu-vm-server-01–nic1 bridged –bridgeadapter1 eth0

8、设置虚拟机的IO控制,启动项顺序,内存大小,CPU数量,显存大小等其他设置(可以参考手册)。
注:安装系统时先设置dvd为第一启动项,disk为第二启动项,安装好后再掉过来。

> vboxmanage modifyvm ubuntu-vm-server-01 –ioapic on
> vboxmanage modifyvm ubuntu-vm-server-01 –boot1 dvd –boot2 disk –boot3 none –boot4 none
> vboxmanage modifyvm ubuntu-vm-server-01 –memory 2048 –vram 128

9、设置远程桌面访问。
可以使用Windows自带的远程桌面连接程序连接虚拟机,也可以使用Ubuntu桌面版自带的Remmina remote desktop client。vrde模式的认证库是VBoxAuth,使用系统的用户来认证。官方文档还提供了一个VBoxAuthSimple认证库。
这里设置成VBoxAuthSimple认证库:

# 设定vrdeauthtype为external
> vboxmanage modifyvm ubuntu-vm-server-01 –vrdeauthtype external
# 设定vrdeauthlibrary 为 VBoxAuthSimple
> vboxmanage modifyvm ubuntu-vm-server-01 –vrdeauthlibrary VBoxAuthSimple
# 生成加密的密码字串,比如我要设定一个密码为 1234
> vboxmanage internalcommands passwordhash “1234”
# 输出,复制加密的密码字串
> Password hash: XXXXXXX
# 添加一个VBoxAuthSimple用户,用户名:test 密码:1234
> vboxmanage setextradata ubuntu-vm-server-01 “VBoxAuthSimple/users/test” XXXXXXX
# 开启vrde服务
> vboxmanage controlvm ubuntu-vm-server-01 vrde on vrdeport 3389

vrde服务可以在虚拟机运行时动态开启和关闭。

这样可以设置一些与系统用户无关的用户和密码用于远程桌面登陆。

另外,Windows使用远程登陆时需要注意,如果登陆一直卡在准备阶段,需要在连接设置里勾选上允许我保存凭证

10、启动虚拟机。
万事具备,启动虚拟机开始安装。因为服务器没有桌面程序,所以需要使用headless方式启动。

> vboxmanage startvm ubuntu-vm-server-01 –type=headless

11、现在就可以用rdesktop远程连接虚拟机了
连接的 IP为服务器IP,端口为3389,需要确保服务器的防火墙3389可访问。

> rdesktop localhost:3389

12.安装完成后需要修改启动项顺序,并退出dvd上的iso,可以关闭vrde。

> vboxmanage storageattach ubuntu-vm-server-01 –storagectl “IDE Controller” –port 0 –device 0 –type dvddrive –medium none

在VirtualBox中安装其他操作系统

大致安装过程和安装Ubuntu Server类似,我的建议是可以参照桌面版的VirtualBox安装其他操作系统的方式来反推命令的设置。

常用命令

vboxmanage controlvm <uuid|vmname>
pause | resume | reset | poweroff | savestate
| acpipowerbutton | acpisleepbutton |

其他事项

实现VirtualBox开机自启动

1、 在/etc/default中新建virtualbox文件

> sudo vim /etc/default/vbox

添加如下内容

VBOXAUTOSTART_DB=/etc/vbox
VBOXAUTOSTART_CONFIG=/etc/vbox/autostart.conf

2、 设置vbox目录的权限,添加vbox用户到vboxusers用户组

> sudo chgrp vboxusers /etc/vbox
> sudo chmod 1775 /etc/vbox
> sudo adduser vbox vboxusers

3、 新建虚拟机自动启动配置文件autostart.conf并添加如下内容

> sudo vim /etc/vbox/autostart.conf

# default policy is to deny starting a VM, the other option is “allow”.
default_policy = deny
# user vbox is allowed to start virtual machines but starting them
# will be delayed for 120 seconds
vbox= {
allow = true
startup_delay = 120
}

4、 设置开启自动启动
设置成功后会在/etc/vbox目录下生成vbox.start文件。

> vboxmanage setproperty autostartdbpath /etc/vbox
> vboxmanage modifyvm ubuntu-vm-server-01 –autostart-enabled on

如果最后一步出现以下类似的错误,那么需要用这个命令groups vbox确认vbox用户已经添加到vboxusers组中,而且vbox对/etc/vbox有写权限。

VBoxManage: error: Adding machine ‘ubuntu-vm-server-01’ to the autostart database failed with VERR_ACCESS_DENIED

设置虚拟机的快照

快照是一个很好的功能,可以备份系统的状态,在虚拟机因病毒或者黑客破坏后,也能迅速恢复到备份时的状态。
新建快照

> vboxmanage snapshot ubuntu-vm-server-01 take “snapshot-001”;

删除快照

会将虚拟机的修改写入磁盘
> vboxmanage snapshot ubuntu-vm-server-01 delete “snapshot-001”;

回滚快照

恢复虚拟机到备份时的状态
> vboxmanage snapshot ubuntu-vm-server-01 restore “snapshot-001”;

复制虚拟机

安装好虚拟机系统后,再开一个虚拟机新安装系统很麻烦,可以使用虚拟机复制。

方法一:
使用vboxmanage clonevm 将现有的系统克隆。
> vboxmanage clonevm “”ubuntu-vm-server-02” –name “ubuntu-vm-server-01” –register
使用vboxmanage list vms查看到新的虚拟机已经复制成功。

方法二:
使用vboxmanage clonehd 复制vdi磁盘。
首先:
> vboxmanage clonehd ubuntu-vm-server-01.vdi ubuntu-vm-server-02..vdi
会生成一个新的UUID但内容一样的磁盘,复制到ubuntu-vm-server-02目录下,进入ubuntu-vm-server-02目录,然后就和使用VirtualBox部分差不多,区别是不用再安装系统,使用磁盘即可。