ubuntu server安装virtualbox

virtualbox 是虚拟化软件,开源,有官方的web管理界面phpvirtualbox。
os:ubuntu 12.04 server 32bit
virtualbox: 4.1.12-dfsg-2ubuntu0.2

1.安装
要先安装好环境,特别是dkms,再安装virtualbox,否则可能会无法自动启动虚拟机。
sudo apt-get install linux-headers-`uname -r` build-essential
sudo apt-get install dkms
sudo apt-get install virtualbox

安装后会根据内核版本自动编译需要的模块

2.配置 
在/etc/default/virtualbox中添加启动virtualbox的用户:
VBOXWEB_USER=comet

3.安装扩展包
安装扩展包,以便在web管理界面中使用终端模式,下载对应版本的扩展包安装
vboxmanage extpack install Oracle_VM_VirtualBox_Extension_Pack-4.1.12-77245.vbox-extpack

4.配置web管理界面
phpirtualbox项目地址:http://code.google.com/p/phpvirtualbox/
php编写的,需要apache的支持,可以在另外的机器上配置来管理virtualbox的服务器。这里有两台服务器,其中192.168.1.1配置phpvirtualbox
配置文件为:config.php

var $username = 'comet';
var $password = '12345678';
var $language = 'zh_cn'; 

var $servers = array(
array(
'name' => 'u-srv-1',
'username' => 'comet',
'password' => '12345678',
'location' => 'http://192.168.1.1:18083/',
'consoleHost' => '192.168.1.1',
'authMaster' => true // Use this server for authentication
),
array(
'name' => 'u-srv-2',
'username' => 'comet',
'password' => '12345678',
'location' => 'http://192.168.1.2:18083/',
'consoleHost' => '192.168.1.1',
),
);

var $browserRestrictFolders = array('/srv','/mnt');

其他的就不列出来了。

5.启动virtualbox web服务的脚本
保存后添加执行权限,并加在/etc/rc.local里面,这里还要新建一个/var/log/vboxweb的文件夹用来保存日志。
#! /bin/sh

WAN_IFACE="eth0"
NET_IP=`ifconfig ${WAN_IFACE} |grep inet|awk '{print $2}'|awk -F: '{print $2}'`
VBOXSRV="/usr/bin/vboxwebsrv"
VBOXWEB_LOG="/var/log/vboxweb/vboxweb.log"

${VBOXSRV} -b -H ${NET_IP} -p 18083 -F ${VBOXWEB_LOG}

 6.启动虚拟镜像的脚本
因为在/etc/init.d/virtualbox的脚本只是启动virtualbox服务,就算虚拟镜像设置了自动启动还是无法自动启动的,需个脚本启动一下才行,以下保存为vboxinit放到/etc/init.d/中:
#! /bin/sh

#
# vboxinit: auto start sessions when booting and save
# sessions when host is stopped
#
# Based on vboxtool. Only tested in Debian.
#
# Debian install:
# copy this script to /etc/init.d
# run:
# chmod u+rx /etc/init.d/vboxinit
# update-rc.d vboxinit defaults
### BEGIN INIT INFO
# Provides: vboxinit
# Required-Start: vboxdrv $local_fs
# Required-Stop: vboxdrv $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Description: Controls VirtualBox sessions
### END INIT INFO

. /etc/default/virtualbox

# Enable/disable service

if [ -z "${VBOXWEB_USER}" ]; then
exit 0
fi

start()
{
# Get all autostart machines
MACHINES=$($su_command "VBoxManage list vms | awk '{ print \$NF }' | sed -e 's/[{}]//g'")
for UUID in $MACHINES; do
STARTUP=$($su_command "VBoxManage getextradata $UUID 'pvbx/startupMode'" | awk '{ print $NF }')
if [ "${STARTUP}" = "auto" ]; then
$su_command "VBoxManage startvm $UUID --type headless" >>/var/log/vb.log
fi
done
}

stop()
{
# vms are saved, instead of stopped.
MACHINES=$($su_command "VBoxManage list runningvms | awk '{ print \$NF }' | sed -e 's/[{}]//g'")
for UUID in $MACHINES; do
echo "$0: saving machine ${UUID} state"
$su_command "VBoxManage controlvm $UUID savestate" >>/var/log/vb.log
done

}

status()
{
$su_command "VBoxManage list runningvms"
}

restart()
{
stop
start
}
# Implementation of user control, execute several commands as another (predefined) user,
su_command="su - ${VBOXWEB_USER} -c"

#
# Check for a command line option
#
case "$1" in

start)
log_daemon_msg "Starting vbox init" "vboxinit"
start
;;
stop)
log_daemon_msg "Stopping vbox init" "vboxinit"
stop
;;
status)
status
;;
restart)
restart
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
exit 1
;;
esac

#exit 0

然后使用下面命令配置好启动等级,由于virtualbox默认是20,这里需要比virtualbox晚一点启动才行。
sudo chmod +x vboxinit
sudo update-rc.d vboxinit defaults  21

查看一下,virtualbox要比vboxinit先启动。

ls -l /etc/rc2.d/
-rw-r--r-- 1 root root 677 Jul 27 2012 README
lrwxrwxrwx 1 root root 15 Jul 3 2012 S20snmpd -> ../init.d/snmpd
lrwxrwxrwx 1 root root 20 Jul 1 2012 S20virtualbox -> ../init.d/virtualbox
lrwxrwxrwx 1 root root  18 Jan 11  2013 S21vboxinit -> ../init.d/vboxinit

7.测试
做完要重启测试一下。

8.安装extpack
安装了extpack后,做phpvirtualbox中才能用rdp来远程访问虚拟机,否则只能用vnc。

VBoxManage extpack install "Oracle_VM_VirtualBox_Extension_Pack-5.0.12-104815.vbox-extpack"
VBoxManage extpack uninstall "Oracle VM VirtualBox Extension Pack"

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据